From 75c679ced8fd3e8fa30ea5bf7befec3474dbd40d Mon Sep 17 00:00:00 2001 From: Mayuran Visakan Date: Sat, 5 Aug 2023 16:01:57 +0100 Subject: [PATCH] Multiline fix --- main.js | 6277 +++++++++++++++++++++++++++++++++++++++++++- package-lock.json | 754 +++++- package.json | 5 +- src/ReadingView.ts | 27 +- styles.css | 1 + 5 files changed, 6998 insertions(+), 66 deletions(-) diff --git a/main.js b/main.js index da2b218..f533d63 100644 --- a/main.js +++ b/main.js @@ -12,9 +12,9 @@ var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); +var __export = (target, all2) => { + for (var name in all2) + __defProp(target, name, { get: all2[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { @@ -557,6 +557,106 @@ var require_pickr_min = __commonJS({ } }); +// node_modules/is-buffer/index.js +var require_is_buffer = __commonJS({ + "node_modules/is-buffer/index.js"(exports, module2) { + module2.exports = function isBuffer2(obj) { + return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj); + }; + } +}); + +// node_modules/extend/index.js +var require_extend = __commonJS({ + "node_modules/extend/index.js"(exports, module2) { + "use strict"; + var hasOwn = Object.prototype.hasOwnProperty; + var toStr = Object.prototype.toString; + var defineProperty = Object.defineProperty; + var gOPD = Object.getOwnPropertyDescriptor; + var isArray = function isArray2(arr) { + if (typeof Array.isArray === "function") { + return Array.isArray(arr); + } + return toStr.call(arr) === "[object Array]"; + }; + var isPlainObject2 = function isPlainObject3(obj) { + if (!obj || toStr.call(obj) !== "[object Object]") { + return false; + } + var hasOwnConstructor = hasOwn.call(obj, "constructor"); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf"); + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + var key; + for (key in obj) { + } + return typeof key === "undefined" || hasOwn.call(obj, key); + }; + var setProperty = function setProperty2(target, options) { + if (defineProperty && options.name === "__proto__") { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } + }; + var getProperty = function getProperty2(obj, name) { + if (name === "__proto__") { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + return gOPD(obj, name).value; + } + } + return obj[name]; + }; + module2.exports = function extend2() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i2 = 1; + var length = arguments.length; + var deep = false; + if (typeof target === "boolean") { + deep = target; + target = arguments[1] || {}; + i2 = 2; + } + if (target == null || typeof target !== "object" && typeof target !== "function") { + target = {}; + } + for (; i2 < length; ++i2) { + options = arguments[i2]; + if (options != null) { + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + if (target !== copy) { + if (deep && copy && (isPlainObject2(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject2(src) ? src : {}; + } + setProperty(target, { name, newValue: extend2(deep, clone, copy) }); + } else if (typeof copy !== "undefined") { + setProperty(target, { name, newValue: copy }); + } + } + } + } + } + return target; + }; + } +}); + // src/main.ts var main_exports = {}; __export(main_exports, { @@ -2387,13 +2487,13 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { "gradientHighlighting": [], "languageBorderColour": [] }; - new import_obsidian.Setting(containerEl).setName("Ignore Codeblocks").setDesc("Define languages in a comma separated list which the plugin should completely ignore. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.").addText((text) => text.setPlaceholder("e.g. dataview, dataviewjs etc.").setValue(this.plugin.settings.excludedCodeblocks).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Ignore Codeblocks").setDesc("Define languages in a comma separated list which the plugin should completely ignore. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.").addText((text3) => text3.setPlaceholder("e.g. dataview, dataviewjs etc.").setValue(this.plugin.settings.excludedCodeblocks).onChange((value) => { this.plugin.settings.excludedCodeblocks = value; (async () => { await this.plugin.saveSettings(); })(); })); - new import_obsidian.Setting(containerEl).setName("Exclude Languages").setDesc("Define languages in a comma separated list which the plugin should not decorate. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.").addText((text) => text.setPlaceholder("e.g. ad-*, python etc.").setValue(this.plugin.settings.excludedLanguages).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Exclude Languages").setDesc("Define languages in a comma separated list which the plugin should not decorate. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.").addText((text3) => text3.setPlaceholder("e.g. ad-*, python etc.").setValue(this.plugin.settings.excludedLanguages).onChange((value) => { this.plugin.settings.excludedLanguages = value; (async () => { await this.plugin.saveSettings(); @@ -2457,8 +2557,8 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { let newThemeName; let newThemeDefault; this.plugin.settings.newTheme = ""; - new import_obsidian.Setting(containerEl).setName("Add New Theme").setDesc("Create a new theme from the current settings.").addText((text) => { - newThemeName = text.setPlaceholder("New theme name").setValue(this.plugin.settings.newTheme).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Add New Theme").setDesc("Create a new theme from the current settings.").addText((text3) => { + newThemeName = text3.setPlaceholder("New theme name").setValue(this.plugin.settings.newTheme).onChange((value) => { this.plugin.settings.newTheme = value; }); }).addExtraButton((button) => { @@ -2658,8 +2758,8 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { await this.plugin.saveSettings(); })(); }); - }).addText((text) => { - text.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.title.textFont).onChange((value) => { + }).addText((text3) => { + text3.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.title.textFont).onChange((value) => { this.plugin.settings.currentTheme.settings.header.title.textFont = value; (async () => { await this.plugin.saveSettings(); @@ -2677,7 +2777,7 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { } ); }); - new import_obsidian.Setting(containerEl).setName("Collapse Placeholder Text").setDesc("Title placeholder text for collapsed code when no title parameter is set.").addText((text) => text.setPlaceholder("Collapsed Code").setValue(this.plugin.settings.currentTheme.settings.header.collapsePlaceholder).onChange((value) => { + new import_obsidian.Setting(containerEl).setName("Collapse Placeholder Text").setDesc("Title placeholder text for collapsed code when no title parameter is set.").addText((text3) => text3.setPlaceholder("Collapsed Code").setValue(this.plugin.settings.currentTheme.settings.header.collapsePlaceholder).onChange((value) => { this.plugin.settings.currentTheme.settings.header.collapsePlaceholder = value; (async () => { await this.plugin.saveSettings(); @@ -2738,8 +2838,8 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab { })(); }); this.disableableComponents["headerLanguageTags"].push(languageTagsItalicToggle); - }).addText((text) => { - languageIconsFontText = text.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textFont).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => { + }).addText((text3) => { + languageIconsFontText = text3.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textFont).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => { this.plugin.settings.currentTheme.settings.header.languageTag.textFont = value; (async () => { await this.plugin.saveSettings(); @@ -3590,8 +3690,8 @@ async function parseCodeblockSource(codeSection, sourcePath, plugin) { } return { codeblocksParameters, nested: codeblocks[0] ? !arraysEqual(codeSection, codeblocks[0]) : true }; } -function parseInlineCode(codeText) { - let match = /^({} ?)?{([^}]*)} ?(.*)$/.exec(codeText); +function parseInlineCode(codeText2) { + let match = /^({} ?)?{([^}]*)} ?(.*)$/.exec(codeText2); if (!(match == null ? void 0 : match[1]) && !((match == null ? void 0 : match[2]) && (match == null ? void 0 : match[3]))) return { parameters: null, text: "" }; else if (match == null ? void 0 : match[1]) @@ -3884,10 +3984,10 @@ function getLanguageTag(language) { } function getLineClass(codeblockParameters, lineNumber, line) { let classList = []; - if (codeblockParameters.highlights.default.lineNumbers.includes(lineNumber + codeblockParameters.lineNumbers.offset) || codeblockParameters.highlights.default.plainText.some((text) => line.indexOf(text) > -1) || codeblockParameters.highlights.default.regularExpressions.some((regExp) => regExp.test(line))) + if (codeblockParameters.highlights.default.lineNumbers.includes(lineNumber + codeblockParameters.lineNumbers.offset) || codeblockParameters.highlights.default.plainText.some((text3) => line.indexOf(text3) > -1) || codeblockParameters.highlights.default.regularExpressions.some((regExp) => regExp.test(line))) classList.push("code-styler-line-highlighted"); Object.entries(codeblockParameters.highlights.alternative).forEach(([alternativeHighlight, highlightedLines]) => { - if (highlightedLines.lineNumbers.includes(lineNumber + codeblockParameters.lineNumbers.offset) || highlightedLines.plainText.some((text) => line.indexOf(text) > -1) || highlightedLines.regularExpressions.some((regExp) => regExp.test(line))) + if (highlightedLines.lineNumbers.includes(lineNumber + codeblockParameters.lineNumbers.offset) || highlightedLines.plainText.some((text3) => line.indexOf(text3) > -1) || highlightedLines.regularExpressions.some((regExp) => regExp.test(line))) classList.push(`code-styler-line-highlighted-${alternativeHighlight.replace(/\s+/g, "-").toLowerCase()}`); }); if (classList.length === 0) @@ -4147,10 +4247,10 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) { return; let delimiterSize = previousSibling.to - previousSibling.from; let inlineCodeText = view.state.doc.sliceString(syntaxNode.from, syntaxNode.to); - let { parameters, text } = parseInlineCode(inlineCodeText); - let endOfParameters = inlineCodeText.lastIndexOf(text); + let { parameters, text: text3 } = parseInlineCode(inlineCodeText); + let endOfParameters = inlineCodeText.lastIndexOf(text3); if (!parameters) { - if (text) { + if (text3) { if (view.state.selection.ranges.some((range) => range.to >= syntaxNode.from - delimiterSize && range.from <= syntaxNode.to + delimiterSize)) this.decorations = this.decorations.update({ filterFrom: syntaxNode.from, filterTo: syntaxNode.from, filter: (from2, to2, value) => false }); else @@ -4178,7 +4278,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) { if (!settings.currentTheme.settings.inline.syntaxHighlight) return; this.decorations = this.decorations.update({ filterFrom: syntaxNode.from + endOfParameters + 1, filterTo: syntaxNode.to, filter: (from2, to2, decorationValue) => false }); - this.decorations = this.decorations.update({ add: modeHighlight({ start: syntaxNode.from + endOfParameters, text, language: parameters.language }) }); + this.decorations = this.decorations.update({ add: modeHighlight({ start: syntaxNode.from + endOfParameters, text: text3, language: parameters.language }) }); } } }); @@ -4212,12 +4312,12 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) { }); } class LineNumberWidget extends import_view.WidgetType { - constructor(lineNumber, codeblockParameters, maxLineNum, empty) { + constructor(lineNumber, codeblockParameters, maxLineNum, empty2) { super(); this.lineNumber = lineNumber; this.codeblockParameters = codeblockParameters; this.maxLineNum = maxLineNum; - this.empty = empty; + this.empty = empty2; } eq(other) { return this.lineNumber === other.lineNumber && this.codeblockParameters.lineNumbers.alwaysEnabled === other.codeblockParameters.lineNumbers.alwaysEnabled && this.codeblockParameters.lineNumbers.alwaysDisabled === other.codeblockParameters.lineNumbers.alwaysDisabled && this.codeblockParameters.lineNumbers.offset === other.codeblockParameters.lineNumbers.offset && this.maxLineNum === other.maxLineNum && this.empty === other.empty; @@ -4282,9 +4382,9 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) { } function collapseOnClick(view, target) { var _a; - const position = view.posAtDOM(target); + const position2 = view.posAtDOM(target); let folded = false; - (_a = view.state.field(codeblockCollapse, false)) == null ? void 0 : _a.between(position, position, () => { + (_a = view.state.field(codeblockCollapse, false)) == null ? void 0 : _a.between(position2, position2, () => { folded = true; }); let collapseStart = null; @@ -4299,7 +4399,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) { if (startLine) { startDelimiter = currentDelimiter; startLine = false; - if (position === line.from) + if (position2 === line.from) collapseStart = line; } else { if (currentDelimiter === startDelimiter) { @@ -4367,13 +4467,13 @@ function findCodeblocks(view) { }); return codeblocks; } -function modeHighlight({ start, text, language }) { +function modeHighlight({ start, text: text3, language }) { var _a; let markDecorations = []; const mode = window.CodeMirror.getMode(window.CodeMirror.defaults, (_a = window.CodeMirror.findModeByName(language)) == null ? void 0 : _a.mime); let state = window.CodeMirror.startState(mode); if (mode == null ? void 0 : mode.token) { - let stream = new window.CodeMirror.StringStream(text); + let stream = new window.CodeMirror.StringStream(text3); while (!stream.eol()) { let style = mode.token(stream, state); if (style) @@ -4395,30 +4495,6072 @@ function editingViewIgnore(state) { // src/ReadingView.ts var import_obsidian3 = require("obsidian"); -async function readingViewCodeblockDecoratingPostProcessor(element, { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds = false) { + +// node_modules/bail/index.js +function bail(error) { + if (error) { + throw error; + } +} + +// node_modules/unified/lib/index.js +var import_is_buffer2 = __toESM(require_is_buffer(), 1); +var import_extend = __toESM(require_extend(), 1); + +// node_modules/is-plain-obj/index.js +function isPlainObject(value) { + if (typeof value !== "object" || value === null) { + return false; + } + const prototype = Object.getPrototypeOf(value); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); +} + +// node_modules/trough/index.js +function trough() { + const fns = []; + const pipeline = { run, use }; + return pipeline; + function run(...values) { + let middlewareIndex = -1; + const callback = values.pop(); + if (typeof callback !== "function") { + throw new TypeError("Expected function as last argument, not " + callback); + } + next(null, ...values); + function next(error, ...output) { + const fn = fns[++middlewareIndex]; + let index2 = -1; + if (error) { + callback(error); + return; + } + while (++index2 < values.length) { + if (output[index2] === null || output[index2] === void 0) { + output[index2] = values[index2]; + } + } + values = output; + if (fn) { + wrap(fn, next)(...output); + } else { + callback(null, ...output); + } + } + } + function use(middelware) { + if (typeof middelware !== "function") { + throw new TypeError( + "Expected `middelware` to be a function, not " + middelware + ); + } + fns.push(middelware); + return pipeline; + } +} +function wrap(middleware, callback) { + let called; + return wrapped; + function wrapped(...parameters) { + const fnExpectsCallback = middleware.length > parameters.length; + let result; + if (fnExpectsCallback) { + parameters.push(done); + } + try { + result = middleware.apply(this, parameters); + } catch (error) { + const exception = ( + /** @type {Error} */ + error + ); + if (fnExpectsCallback && called) { + throw exception; + } + return done(exception); + } + if (!fnExpectsCallback) { + if (result instanceof Promise) { + result.then(then, done); + } else if (result instanceof Error) { + done(result); + } else { + then(result); + } + } + } + function done(error, ...output) { + if (!called) { + called = true; + callback(error, ...output); + } + } + function then(value) { + done(null, value); + } +} + +// node_modules/vfile/lib/index.js +var import_is_buffer = __toESM(require_is_buffer(), 1); + +// node_modules/unist-util-stringify-position/lib/index.js +function stringifyPosition(value) { + if (!value || typeof value !== "object") { + return ""; + } + if ("position" in value || "type" in value) { + return position(value.position); + } + if ("start" in value || "end" in value) { + return position(value); + } + if ("line" in value || "column" in value) { + return point(value); + } + return ""; +} +function point(point3) { + return index(point3 && point3.line) + ":" + index(point3 && point3.column); +} +function position(pos) { + return point(pos && pos.start) + "-" + point(pos && pos.end); +} +function index(value) { + return value && typeof value === "number" ? value : 1; +} + +// node_modules/vfile-message/lib/index.js +var VFileMessage = class extends Error { + /** + * Create a message for `reason` at `place` from `origin`. + * + * When an error is passed in as `reason`, the `stack` is copied. + * + * @param {string | Error | VFileMessage} reason + * Reason for message, uses the stack and message of the error if given. + * + * > 👉 **Note**: you should use markdown. + * @param {Node | NodeLike | Position | Point | null | undefined} [place] + * Place in file where the message occurred. + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns + * Instance of `VFileMessage`. + */ + // To do: next major: expose `undefined` everywhere instead of `null`. + constructor(reason, place, origin) { + const parts = [null, null]; + let position2 = { + // @ts-expect-error: we always follows the structure of `position`. + start: { line: null, column: null }, + // @ts-expect-error: " + end: { line: null, column: null } + }; + super(); + if (typeof place === "string") { + origin = place; + place = void 0; + } + if (typeof origin === "string") { + const index2 = origin.indexOf(":"); + if (index2 === -1) { + parts[1] = origin; + } else { + parts[0] = origin.slice(0, index2); + parts[1] = origin.slice(index2 + 1); + } + } + if (place) { + if ("type" in place || "position" in place) { + if (place.position) { + position2 = place.position; + } + } else if ("start" in place || "end" in place) { + position2 = place; + } else if ("line" in place || "column" in place) { + position2.start = place; + } + } + this.name = stringifyPosition(place) || "1:1"; + this.message = typeof reason === "object" ? reason.message : reason; + this.stack = ""; + if (typeof reason === "object" && reason.stack) { + this.stack = reason.stack; + } + this.reason = this.message; + this.fatal; + this.line = position2.start.line; + this.column = position2.start.column; + this.position = position2; + this.source = parts[0]; + this.ruleId = parts[1]; + this.file; + this.actual; + this.expected; + this.url; + this.note; + } +}; +VFileMessage.prototype.file = ""; +VFileMessage.prototype.name = ""; +VFileMessage.prototype.reason = ""; +VFileMessage.prototype.message = ""; +VFileMessage.prototype.stack = ""; +VFileMessage.prototype.fatal = null; +VFileMessage.prototype.column = null; +VFileMessage.prototype.line = null; +VFileMessage.prototype.source = null; +VFileMessage.prototype.ruleId = null; +VFileMessage.prototype.position = null; + +// node_modules/vfile/lib/minpath.browser.js +var path = { basename, dirname, extname, join, sep: "/" }; +function basename(path2, ext) { + if (ext !== void 0 && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path2); + let start = 0; + let end = -1; + let index2 = path2.length; + let seenNonSlash; + if (ext === void 0 || ext.length === 0 || ext.length > path2.length) { + while (index2--) { + if (path2.charCodeAt(index2) === 47) { + if (seenNonSlash) { + start = index2 + 1; + break; + } + } else if (end < 0) { + seenNonSlash = true; + end = index2 + 1; + } + } + return end < 0 ? "" : path2.slice(start, end); + } + if (ext === path2) { + return ""; + } + let firstNonSlashEnd = -1; + let extIndex = ext.length - 1; + while (index2--) { + if (path2.charCodeAt(index2) === 47) { + if (seenNonSlash) { + start = index2 + 1; + break; + } + } else { + if (firstNonSlashEnd < 0) { + seenNonSlash = true; + firstNonSlashEnd = index2 + 1; + } + if (extIndex > -1) { + if (path2.charCodeAt(index2) === ext.charCodeAt(extIndex--)) { + if (extIndex < 0) { + end = index2; + } + } else { + extIndex = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } else if (end < 0) { + end = path2.length; + } + return path2.slice(start, end); +} +function dirname(path2) { + assertPath(path2); + if (path2.length === 0) { + return "."; + } + let end = -1; + let index2 = path2.length; + let unmatchedSlash; + while (--index2) { + if (path2.charCodeAt(index2) === 47) { + if (unmatchedSlash) { + end = index2; + break; + } + } else if (!unmatchedSlash) { + unmatchedSlash = true; + } + } + return end < 0 ? path2.charCodeAt(0) === 47 ? "/" : "." : end === 1 && path2.charCodeAt(0) === 47 ? "//" : path2.slice(0, end); +} +function extname(path2) { + assertPath(path2); + let index2 = path2.length; + let end = -1; + let startPart = 0; + let startDot = -1; + let preDotState = 0; + let unmatchedSlash; + while (index2--) { + const code = path2.charCodeAt(index2); + if (code === 47) { + if (unmatchedSlash) { + startPart = index2 + 1; + break; + } + continue; + } + if (end < 0) { + unmatchedSlash = true; + end = index2 + 1; + } + if (code === 46) { + if (startDot < 0) { + startDot = index2; + } else if (preDotState !== 1) { + preDotState = 1; + } + } else if (startDot > -1) { + preDotState = -1; + } + } + if (startDot < 0 || end < 0 || // We saw a non-dot character immediately before the dot. + preDotState === 0 || // The (right-most) trimmed path component is exactly `..`. + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path2.slice(startDot, end); +} +function join(...segments) { + let index2 = -1; + let joined; + while (++index2 < segments.length) { + assertPath(segments[index2]); + if (segments[index2]) { + joined = joined === void 0 ? segments[index2] : joined + "/" + segments[index2]; + } + } + return joined === void 0 ? "." : normalize(joined); +} +function normalize(path2) { + assertPath(path2); + const absolute = path2.charCodeAt(0) === 47; + let value = normalizeString(path2, !absolute); + if (value.length === 0 && !absolute) { + value = "."; + } + if (value.length > 0 && path2.charCodeAt(path2.length - 1) === 47) { + value += "/"; + } + return absolute ? "/" + value : value; +} +function normalizeString(path2, allowAboveRoot) { + let result = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let index2 = -1; + let code; + let lastSlashIndex; + while (++index2 <= path2.length) { + if (index2 < path2.length) { + code = path2.charCodeAt(index2); + } else if (code === 47) { + break; + } else { + code = 47; + } + if (code === 47) { + if (lastSlash === index2 - 1 || dots === 1) { + } else if (lastSlash !== index2 - 1 && dots === 2) { + if (result.length < 2 || lastSegmentLength !== 2 || result.charCodeAt(result.length - 1) !== 46 || result.charCodeAt(result.length - 2) !== 46) { + if (result.length > 2) { + lastSlashIndex = result.lastIndexOf("/"); + if (lastSlashIndex !== result.length - 1) { + if (lastSlashIndex < 0) { + result = ""; + lastSegmentLength = 0; + } else { + result = result.slice(0, lastSlashIndex); + lastSegmentLength = result.length - 1 - result.lastIndexOf("/"); + } + lastSlash = index2; + dots = 0; + continue; + } + } else if (result.length > 0) { + result = ""; + lastSegmentLength = 0; + lastSlash = index2; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + result = result.length > 0 ? result + "/.." : ".."; + lastSegmentLength = 2; + } + } else { + if (result.length > 0) { + result += "/" + path2.slice(lastSlash + 1, index2); + } else { + result = path2.slice(lastSlash + 1, index2); + } + lastSegmentLength = index2 - lastSlash - 1; + } + lastSlash = index2; + dots = 0; + } else if (code === 46 && dots > -1) { + dots++; + } else { + dots = -1; + } + } + return result; +} +function assertPath(path2) { + if (typeof path2 !== "string") { + throw new TypeError( + "Path must be a string. Received " + JSON.stringify(path2) + ); + } +} + +// node_modules/vfile/lib/minproc.browser.js +var proc = { cwd }; +function cwd() { + return "/"; +} + +// node_modules/vfile/lib/minurl.shared.js +function isUrl(fileUrlOrPath) { + return fileUrlOrPath !== null && typeof fileUrlOrPath === "object" && // @ts-expect-error: indexable. + fileUrlOrPath.href && // @ts-expect-error: indexable. + fileUrlOrPath.origin; +} + +// node_modules/vfile/lib/minurl.browser.js +function urlToPath(path2) { + if (typeof path2 === "string") { + path2 = new URL(path2); + } else if (!isUrl(path2)) { + const error = new TypeError( + 'The "path" argument must be of type string or an instance of URL. Received `' + path2 + "`" + ); + error.code = "ERR_INVALID_ARG_TYPE"; + throw error; + } + if (path2.protocol !== "file:") { + const error = new TypeError("The URL must be of scheme file"); + error.code = "ERR_INVALID_URL_SCHEME"; + throw error; + } + return getPathFromURLPosix(path2); +} +function getPathFromURLPosix(url) { + if (url.hostname !== "") { + const error = new TypeError( + 'File URL host must be "localhost" or empty on darwin' + ); + error.code = "ERR_INVALID_FILE_URL_HOST"; + throw error; + } + const pathname = url.pathname; + let index2 = -1; + while (++index2 < pathname.length) { + if (pathname.charCodeAt(index2) === 37 && pathname.charCodeAt(index2 + 1) === 50) { + const third = pathname.charCodeAt(index2 + 2); + if (third === 70 || third === 102) { + const error = new TypeError( + "File URL path must not include encoded / characters" + ); + error.code = "ERR_INVALID_FILE_URL_PATH"; + throw error; + } + } + } + return decodeURIComponent(pathname); +} + +// node_modules/vfile/lib/index.js +var order = ["history", "path", "basename", "stem", "extname", "dirname"]; +var VFile = class { + /** + * Create a new virtual file. + * + * `options` is treated as: + * + * * `string` or `Buffer` — `{value: options}` + * * `URL` — `{path: options}` + * * `VFile` — shallow copies its data over to the new file + * * `object` — all fields are shallow copied over to the new file + * + * Path related fields are set in the following order (least specific to + * most specific): `history`, `path`, `basename`, `stem`, `extname`, + * `dirname`. + * + * You cannot set `dirname` or `extname` without setting either `history`, + * `path`, `basename`, or `stem` too. + * + * @param {Compatible | null | undefined} [value] + * File value. + * @returns + * New instance. + */ + constructor(value) { + let options; + if (!value) { + options = {}; + } else if (typeof value === "string" || buffer(value)) { + options = { value }; + } else if (isUrl(value)) { + options = { path: value }; + } else { + options = value; + } + this.data = {}; + this.messages = []; + this.history = []; + this.cwd = proc.cwd(); + this.value; + this.stored; + this.result; + this.map; + let index2 = -1; + while (++index2 < order.length) { + const prop2 = order[index2]; + if (prop2 in options && options[prop2] !== void 0 && options[prop2] !== null) { + this[prop2] = prop2 === "history" ? [...options[prop2]] : options[prop2]; + } + } + let prop; + for (prop in options) { + if (!order.includes(prop)) { + this[prop] = options[prop]; + } + } + } + /** + * Get the full path (example: `'~/index.min.js'`). + * + * @returns {string} + */ + get path() { + return this.history[this.history.length - 1]; + } + /** + * Set the full path (example: `'~/index.min.js'`). + * + * Cannot be nullified. + * You can set a file URL (a `URL` object with a `file:` protocol) which will + * be turned into a path with `url.fileURLToPath`. + * + * @param {string | URL} path + */ + set path(path2) { + if (isUrl(path2)) { + path2 = urlToPath(path2); + } + assertNonEmpty(path2, "path"); + if (this.path !== path2) { + this.history.push(path2); + } + } + /** + * Get the parent path (example: `'~'`). + */ + get dirname() { + return typeof this.path === "string" ? path.dirname(this.path) : void 0; + } + /** + * Set the parent path (example: `'~'`). + * + * Cannot be set if there’s no `path` yet. + */ + set dirname(dirname2) { + assertPath2(this.basename, "dirname"); + this.path = path.join(dirname2 || "", this.basename); + } + /** + * Get the basename (including extname) (example: `'index.min.js'`). + */ + get basename() { + return typeof this.path === "string" ? path.basename(this.path) : void 0; + } + /** + * Set basename (including extname) (`'index.min.js'`). + * + * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` + * on windows). + * Cannot be nullified (use `file.path = file.dirname` instead). + */ + set basename(basename2) { + assertNonEmpty(basename2, "basename"); + assertPart(basename2, "basename"); + this.path = path.join(this.dirname || "", basename2); + } + /** + * Get the extname (including dot) (example: `'.js'`). + */ + get extname() { + return typeof this.path === "string" ? path.extname(this.path) : void 0; + } + /** + * Set the extname (including dot) (example: `'.js'`). + * + * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` + * on windows). + * Cannot be set if there’s no `path` yet. + */ + set extname(extname2) { + assertPart(extname2, "extname"); + assertPath2(this.dirname, "extname"); + if (extname2) { + if (extname2.charCodeAt(0) !== 46) { + throw new Error("`extname` must start with `.`"); + } + if (extname2.includes(".", 1)) { + throw new Error("`extname` cannot contain multiple dots"); + } + } + this.path = path.join(this.dirname, this.stem + (extname2 || "")); + } + /** + * Get the stem (basename w/o extname) (example: `'index.min'`). + */ + get stem() { + return typeof this.path === "string" ? path.basename(this.path, this.extname) : void 0; + } + /** + * Set the stem (basename w/o extname) (example: `'index.min'`). + * + * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` + * on windows). + * Cannot be nullified (use `file.path = file.dirname` instead). + */ + set stem(stem) { + assertNonEmpty(stem, "stem"); + assertPart(stem, "stem"); + this.path = path.join(this.dirname || "", stem + (this.extname || "")); + } + /** + * Serialize the file. + * + * @param {BufferEncoding | null | undefined} [encoding='utf8'] + * Character encoding to understand `value` as when it’s a `Buffer` + * (default: `'utf8'`). + * @returns {string} + * Serialized file. + */ + toString(encoding) { + return (this.value || "").toString(encoding || void 0); + } + /** + * Create a warning message associated with the file. + * + * Its `fatal` is set to `false` and `file` is set to the current file path. + * Its added to `file.messages`. + * + * @param {string | Error | VFileMessage} reason + * Reason for message, uses the stack and message of the error if given. + * @param {Node | NodeLike | Position | Point | null | undefined} [place] + * Place in file where the message occurred. + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns {VFileMessage} + * Message. + */ + message(reason, place, origin) { + const message = new VFileMessage(reason, place, origin); + if (this.path) { + message.name = this.path + ":" + message.name; + message.file = this.path; + } + message.fatal = false; + this.messages.push(message); + return message; + } + /** + * Create an info message associated with the file. + * + * Its `fatal` is set to `null` and `file` is set to the current file path. + * Its added to `file.messages`. + * + * @param {string | Error | VFileMessage} reason + * Reason for message, uses the stack and message of the error if given. + * @param {Node | NodeLike | Position | Point | null | undefined} [place] + * Place in file where the message occurred. + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns {VFileMessage} + * Message. + */ + info(reason, place, origin) { + const message = this.message(reason, place, origin); + message.fatal = null; + return message; + } + /** + * Create a fatal error associated with the file. + * + * Its `fatal` is set to `true` and `file` is set to the current file path. + * Its added to `file.messages`. + * + * > 👉 **Note**: a fatal error means that a file is no longer processable. + * + * @param {string | Error | VFileMessage} reason + * Reason for message, uses the stack and message of the error if given. + * @param {Node | NodeLike | Position | Point | null | undefined} [place] + * Place in file where the message occurred. + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns {never} + * Message. + * @throws {VFileMessage} + * Message. + */ + fail(reason, place, origin) { + const message = this.message(reason, place, origin); + message.fatal = true; + throw message; + } +}; +function assertPart(part, name) { + if (part && part.includes(path.sep)) { + throw new Error( + "`" + name + "` cannot be a path: did not expect `" + path.sep + "`" + ); + } +} +function assertNonEmpty(part, name) { + if (!part) { + throw new Error("`" + name + "` cannot be empty"); + } +} +function assertPath2(path2, name) { + if (!path2) { + throw new Error("Setting `" + name + "` requires `path` to be set too"); + } +} +function buffer(value) { + return (0, import_is_buffer.default)(value); +} + +// node_modules/unified/lib/index.js +var unified = base().freeze(); +var own = {}.hasOwnProperty; +function base() { + const transformers = trough(); + const attachers = []; + let namespace = {}; + let frozen; + let freezeIndex = -1; + processor.data = data; + processor.Parser = void 0; + processor.Compiler = void 0; + processor.freeze = freeze; + processor.attachers = attachers; + processor.use = use; + processor.parse = parse2; + processor.stringify = stringify; + processor.run = run; + processor.runSync = runSync; + processor.process = process; + processor.processSync = processSync; + return processor; + function processor() { + const destination = base(); + let index2 = -1; + while (++index2 < attachers.length) { + destination.use(...attachers[index2]); + } + destination.data((0, import_extend.default)(true, {}, namespace)); + return destination; + } + function data(key, value) { + if (typeof key === "string") { + if (arguments.length === 2) { + assertUnfrozen("data", frozen); + namespace[key] = value; + return processor; + } + return own.call(namespace, key) && namespace[key] || null; + } + if (key) { + assertUnfrozen("data", frozen); + namespace = key; + return processor; + } + return namespace; + } + function freeze() { + if (frozen) { + return processor; + } + while (++freezeIndex < attachers.length) { + const [attacher, ...options] = attachers[freezeIndex]; + if (options[0] === false) { + continue; + } + if (options[0] === true) { + options[0] = void 0; + } + const transformer = attacher.call(processor, ...options); + if (typeof transformer === "function") { + transformers.use(transformer); + } + } + frozen = true; + freezeIndex = Number.POSITIVE_INFINITY; + return processor; + } + function use(value, ...options) { + let settings; + assertUnfrozen("use", frozen); + if (value === null || value === void 0) { + } else if (typeof value === "function") { + addPlugin(value, ...options); + } else if (typeof value === "object") { + if (Array.isArray(value)) { + addList(value); + } else { + addPreset(value); + } + } else { + throw new TypeError("Expected usable value, not `" + value + "`"); + } + if (settings) { + namespace.settings = Object.assign(namespace.settings || {}, settings); + } + return processor; + function add(value2) { + if (typeof value2 === "function") { + addPlugin(value2); + } else if (typeof value2 === "object") { + if (Array.isArray(value2)) { + const [plugin, ...options2] = value2; + addPlugin(plugin, ...options2); + } else { + addPreset(value2); + } + } else { + throw new TypeError("Expected usable value, not `" + value2 + "`"); + } + } + function addPreset(result) { + addList(result.plugins); + if (result.settings) { + settings = Object.assign(settings || {}, result.settings); + } + } + function addList(plugins) { + let index2 = -1; + if (plugins === null || plugins === void 0) { + } else if (Array.isArray(plugins)) { + while (++index2 < plugins.length) { + const thing = plugins[index2]; + add(thing); + } + } else { + throw new TypeError("Expected a list of plugins, not `" + plugins + "`"); + } + } + function addPlugin(plugin, value2) { + let index2 = -1; + let entry; + while (++index2 < attachers.length) { + if (attachers[index2][0] === plugin) { + entry = attachers[index2]; + break; + } + } + if (entry) { + if (isPlainObject(entry[1]) && isPlainObject(value2)) { + value2 = (0, import_extend.default)(true, entry[1], value2); + } + entry[1] = value2; + } else { + attachers.push([...arguments]); + } + } + } + function parse2(doc) { + processor.freeze(); + const file = vfile(doc); + const Parser = processor.Parser; + assertParser("parse", Parser); + if (newable(Parser, "parse")) { + return new Parser(String(file), file).parse(); + } + return Parser(String(file), file); + } + function stringify(node2, doc) { + processor.freeze(); + const file = vfile(doc); + const Compiler = processor.Compiler; + assertCompiler("stringify", Compiler); + assertNode(node2); + if (newable(Compiler, "compile")) { + return new Compiler(node2, file).compile(); + } + return Compiler(node2, file); + } + function run(node2, doc, callback) { + assertNode(node2); + processor.freeze(); + if (!callback && typeof doc === "function") { + callback = doc; + doc = void 0; + } + if (!callback) { + return new Promise(executor); + } + executor(null, callback); + function executor(resolve, reject) { + transformers.run(node2, vfile(doc), done); + function done(error, tree, file) { + tree = tree || node2; + if (error) { + reject(error); + } else if (resolve) { + resolve(tree); + } else { + callback(null, tree, file); + } + } + } + } + function runSync(node2, file) { + let result; + let complete; + processor.run(node2, file, done); + assertDone("runSync", "run", complete); + return result; + function done(error, tree) { + bail(error); + result = tree; + complete = true; + } + } + function process(doc, callback) { + processor.freeze(); + assertParser("process", processor.Parser); + assertCompiler("process", processor.Compiler); + if (!callback) { + return new Promise(executor); + } + executor(null, callback); + function executor(resolve, reject) { + const file = vfile(doc); + processor.run(processor.parse(file), file, (error, tree, file2) => { + if (error || !tree || !file2) { + done(error); + } else { + const result = processor.stringify(tree, file2); + if (result === void 0 || result === null) { + } else if (looksLikeAVFileValue(result)) { + file2.value = result; + } else { + file2.result = result; + } + done(error, file2); + } + }); + function done(error, file2) { + if (error || !file2) { + reject(error); + } else if (resolve) { + resolve(file2); + } else { + callback(null, file2); + } + } + } + } + function processSync(doc) { + let complete; + processor.freeze(); + assertParser("processSync", processor.Parser); + assertCompiler("processSync", processor.Compiler); + const file = vfile(doc); + processor.process(file, done); + assertDone("processSync", "process", complete); + return file; + function done(error) { + complete = true; + bail(error); + } + } +} +function newable(value, name) { + return typeof value === "function" && // Prototypes do exist. + // type-coverage:ignore-next-line + value.prototype && // A function with keys in its prototype is probably a constructor. + // Classes’ prototype methods are not enumerable, so we check if some value + // exists in the prototype. + // type-coverage:ignore-next-line + (keys(value.prototype) || name in value.prototype); +} +function keys(value) { + let key; + for (key in value) { + if (own.call(value, key)) { + return true; + } + } + return false; +} +function assertParser(name, value) { + if (typeof value !== "function") { + throw new TypeError("Cannot `" + name + "` without `Parser`"); + } +} +function assertCompiler(name, value) { + if (typeof value !== "function") { + throw new TypeError("Cannot `" + name + "` without `Compiler`"); + } +} +function assertUnfrozen(name, frozen) { + if (frozen) { + throw new Error( + "Cannot call `" + name + "` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`." + ); + } +} +function assertNode(node2) { + if (!isPlainObject(node2) || typeof node2.type !== "string") { + throw new TypeError("Expected node, got `" + node2 + "`"); + } +} +function assertDone(name, asyncName, complete) { + if (!complete) { + throw new Error( + "`" + name + "` finished async. Use `" + asyncName + "` instead" + ); + } +} +function vfile(value) { + return looksLikeAVFile(value) ? value : new VFile(value); +} +function looksLikeAVFile(value) { + return Boolean( + value && typeof value === "object" && "message" in value && "messages" in value + ); +} +function looksLikeAVFileValue(value) { + return typeof value === "string" || (0, import_is_buffer2.default)(value); +} + +// node_modules/mdast-util-to-string/lib/index.js +var emptyOptions = {}; +function toString(value, options) { + const settings = options || emptyOptions; + const includeImageAlt = typeof settings.includeImageAlt === "boolean" ? settings.includeImageAlt : true; + const includeHtml = typeof settings.includeHtml === "boolean" ? settings.includeHtml : true; + return one(value, includeImageAlt, includeHtml); +} +function one(value, includeImageAlt, includeHtml) { + if (node(value)) { + if ("value" in value) { + return value.type === "html" && !includeHtml ? "" : value.value; + } + if (includeImageAlt && "alt" in value && value.alt) { + return value.alt; + } + if ("children" in value) { + return all(value.children, includeImageAlt, includeHtml); + } + } + if (Array.isArray(value)) { + return all(value, includeImageAlt, includeHtml); + } + return ""; +} +function all(values, includeImageAlt, includeHtml) { + const result = []; + let index2 = -1; + while (++index2 < values.length) { + result[index2] = one(values[index2], includeImageAlt, includeHtml); + } + return result.join(""); +} +function node(value) { + return Boolean(value && typeof value === "object"); +} + +// node_modules/micromark-util-chunked/index.js +function splice(list2, start, remove, items) { + const end = list2.length; + let chunkStart = 0; + let parameters; + if (start < 0) { + start = -start > end ? 0 : end + start; + } else { + start = start > end ? end : start; + } + remove = remove > 0 ? remove : 0; + if (items.length < 1e4) { + parameters = Array.from(items); + parameters.unshift(start, remove); + list2.splice(...parameters); + } else { + if (remove) + list2.splice(start, remove); + while (chunkStart < items.length) { + parameters = items.slice(chunkStart, chunkStart + 1e4); + parameters.unshift(start, 0); + list2.splice(...parameters); + chunkStart += 1e4; + start += 1e4; + } + } +} +function push(list2, items) { + if (list2.length > 0) { + splice(list2, list2.length, 0, items); + return list2; + } + return items; +} + +// node_modules/micromark-util-combine-extensions/index.js +var hasOwnProperty = {}.hasOwnProperty; +function combineExtensions(extensions) { + const all2 = {}; + let index2 = -1; + while (++index2 < extensions.length) { + syntaxExtension(all2, extensions[index2]); + } + return all2; +} +function syntaxExtension(all2, extension2) { + let hook; + for (hook in extension2) { + const maybe = hasOwnProperty.call(all2, hook) ? all2[hook] : void 0; + const left = maybe || (all2[hook] = {}); + const right = extension2[hook]; + let code; + if (right) { + for (code in right) { + if (!hasOwnProperty.call(left, code)) + left[code] = []; + const value = right[code]; + constructs( + // @ts-expect-error Looks like a list. + left[code], + Array.isArray(value) ? value : value ? [value] : [] + ); + } + } + } +} +function constructs(existing, list2) { + let index2 = -1; + const before = []; + while (++index2 < list2.length) { + ; + (list2[index2].add === "after" ? existing : before).push(list2[index2]); + } + splice(existing, 0, 0, before); +} + +// node_modules/micromark-util-character/lib/unicode-punctuation-regex.js +var unicodePunctuationRegex = /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/; + +// node_modules/micromark-util-character/index.js +var asciiAlpha = regexCheck(/[A-Za-z]/); +var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/); +var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/); +function asciiControl(code) { + return ( + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code !== null && (code < 32 || code === 127) + ); +} +var asciiDigit = regexCheck(/\d/); +var asciiHexDigit = regexCheck(/[\dA-Fa-f]/); +var asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/); +function markdownLineEnding(code) { + return code !== null && code < -2; +} +function markdownLineEndingOrSpace(code) { + return code !== null && (code < 0 || code === 32); +} +function markdownSpace(code) { + return code === -2 || code === -1 || code === 32; +} +var unicodePunctuation = regexCheck(unicodePunctuationRegex); +var unicodeWhitespace = regexCheck(/\s/); +function regexCheck(regex) { + return check; + function check(code) { + return code !== null && regex.test(String.fromCharCode(code)); + } +} + +// node_modules/micromark-factory-space/index.js +function factorySpace(effects, ok2, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY; + let size = 0; + return start; + function start(code) { + if (markdownSpace(code)) { + effects.enter(type); + return prefix(code); + } + return ok2(code); + } + function prefix(code) { + if (markdownSpace(code) && size++ < limit) { + effects.consume(code); + return prefix; + } + effects.exit(type); + return ok2(code); + } +} + +// node_modules/micromark/lib/initialize/content.js +var content = { + tokenize: initializeContent +}; +function initializeContent(effects) { + const contentStart = effects.attempt( + this.parser.constructs.contentInitial, + afterContentStartConstruct, + paragraphInitial + ); + let previous2; + return contentStart; + function afterContentStartConstruct(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, contentStart, "linePrefix"); + } + function paragraphInitial(code) { + effects.enter("paragraph"); + return lineStart(code); + } + function lineStart(code) { + const token = effects.enter("chunkText", { + contentType: "text", + previous: previous2 + }); + if (previous2) { + previous2.next = token; + } + previous2 = token; + return data(code); + } + function data(code) { + if (code === null) { + effects.exit("chunkText"); + effects.exit("paragraph"); + effects.consume(code); + return; + } + if (markdownLineEnding(code)) { + effects.consume(code); + effects.exit("chunkText"); + return lineStart; + } + effects.consume(code); + return data; + } +} + +// node_modules/micromark/lib/initialize/document.js +var document2 = { + tokenize: initializeDocument +}; +var containerConstruct = { + tokenize: tokenizeContainer +}; +function initializeDocument(effects) { + const self2 = this; + const stack = []; + let continued = 0; + let childFlow; + let childToken; + let lineStartOffset; + return start; + function start(code) { + if (continued < stack.length) { + const item = stack[continued]; + self2.containerState = item[1]; + return effects.attempt( + item[0].continuation, + documentContinue, + checkNewContainers + )(code); + } + return checkNewContainers(code); + } + function documentContinue(code) { + continued++; + if (self2.containerState._closeFlow) { + self2.containerState._closeFlow = void 0; + if (childFlow) { + closeFlow(); + } + const indexBeforeExits = self2.events.length; + let indexBeforeFlow = indexBeforeExits; + let point3; + while (indexBeforeFlow--) { + if (self2.events[indexBeforeFlow][0] === "exit" && self2.events[indexBeforeFlow][1].type === "chunkFlow") { + point3 = self2.events[indexBeforeFlow][1].end; + break; + } + } + exitContainers(continued); + let index2 = indexBeforeExits; + while (index2 < self2.events.length) { + self2.events[index2][1].end = Object.assign({}, point3); + index2++; + } + splice( + self2.events, + indexBeforeFlow + 1, + 0, + self2.events.slice(indexBeforeExits) + ); + self2.events.length = index2; + return checkNewContainers(code); + } + return start(code); + } + function checkNewContainers(code) { + if (continued === stack.length) { + if (!childFlow) { + return documentContinued(code); + } + if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { + return flowStart(code); + } + self2.interrupt = Boolean( + childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack + ); + } + self2.containerState = {}; + return effects.check( + containerConstruct, + thereIsANewContainer, + thereIsNoNewContainer + )(code); + } + function thereIsANewContainer(code) { + if (childFlow) + closeFlow(); + exitContainers(continued); + return documentContinued(code); + } + function thereIsNoNewContainer(code) { + self2.parser.lazy[self2.now().line] = continued !== stack.length; + lineStartOffset = self2.now().offset; + return flowStart(code); + } + function documentContinued(code) { + self2.containerState = {}; + return effects.attempt( + containerConstruct, + containerContinue, + flowStart + )(code); + } + function containerContinue(code) { + continued++; + stack.push([self2.currentConstruct, self2.containerState]); + return documentContinued(code); + } + function flowStart(code) { + if (code === null) { + if (childFlow) + closeFlow(); + exitContainers(0); + effects.consume(code); + return; + } + childFlow = childFlow || self2.parser.flow(self2.now()); + effects.enter("chunkFlow", { + contentType: "flow", + previous: childToken, + _tokenizer: childFlow + }); + return flowContinue(code); + } + function flowContinue(code) { + if (code === null) { + writeToChild(effects.exit("chunkFlow"), true); + exitContainers(0); + effects.consume(code); + return; + } + if (markdownLineEnding(code)) { + effects.consume(code); + writeToChild(effects.exit("chunkFlow")); + continued = 0; + self2.interrupt = void 0; + return start; + } + effects.consume(code); + return flowContinue; + } + function writeToChild(token, eof) { + const stream = self2.sliceStream(token); + if (eof) + stream.push(null); + token.previous = childToken; + if (childToken) + childToken.next = token; + childToken = token; + childFlow.defineSkip(token.start); + childFlow.write(stream); + if (self2.parser.lazy[token.start.line]) { + let index2 = childFlow.events.length; + while (index2--) { + if ( + // The token starts before the line ending… + childFlow.events[index2][1].start.offset < lineStartOffset && // …and either is not ended yet… + (!childFlow.events[index2][1].end || // …or ends after it. + childFlow.events[index2][1].end.offset > lineStartOffset) + ) { + return; + } + } + const indexBeforeExits = self2.events.length; + let indexBeforeFlow = indexBeforeExits; + let seen; + let point3; + while (indexBeforeFlow--) { + if (self2.events[indexBeforeFlow][0] === "exit" && self2.events[indexBeforeFlow][1].type === "chunkFlow") { + if (seen) { + point3 = self2.events[indexBeforeFlow][1].end; + break; + } + seen = true; + } + } + exitContainers(continued); + index2 = indexBeforeExits; + while (index2 < self2.events.length) { + self2.events[index2][1].end = Object.assign({}, point3); + index2++; + } + splice( + self2.events, + indexBeforeFlow + 1, + 0, + self2.events.slice(indexBeforeExits) + ); + self2.events.length = index2; + } + } + function exitContainers(size) { + let index2 = stack.length; + while (index2-- > size) { + const entry = stack[index2]; + self2.containerState = entry[1]; + entry[0].exit.call(self2, effects); + } + stack.length = size; + } + function closeFlow() { + childFlow.write([null]); + childToken = void 0; + childFlow = void 0; + self2.containerState._closeFlow = void 0; + } +} +function tokenizeContainer(effects, ok2, nok) { + return factorySpace( + effects, + effects.attempt(this.parser.constructs.document, ok2, nok), + "linePrefix", + this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + ); +} + +// node_modules/micromark-util-classify-character/index.js +function classifyCharacter(code) { + if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + return 1; + } + if (unicodePunctuation(code)) { + return 2; + } +} + +// node_modules/micromark-util-resolve-all/index.js +function resolveAll(constructs2, events, context) { + const called = []; + let index2 = -1; + while (++index2 < constructs2.length) { + const resolve = constructs2[index2].resolveAll; + if (resolve && !called.includes(resolve)) { + events = resolve(events, context); + called.push(resolve); + } + } + return events; +} + +// node_modules/micromark-core-commonmark/lib/attention.js +var attention = { + name: "attention", + tokenize: tokenizeAttention, + resolveAll: resolveAllAttention +}; +function resolveAllAttention(events, context) { + let index2 = -1; + let open; + let group; + let text3; + let openingSequence; + let closingSequence; + let use; + let nextEvents; + let offset; + while (++index2 < events.length) { + if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) { + open = index2; + while (open--) { + if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && // If the markers are the same: + context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) { + if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3)) { + continue; + } + use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1; + const start = Object.assign({}, events[open][1].end); + const end = Object.assign({}, events[index2][1].start); + movePoint(start, -use); + movePoint(end, use); + openingSequence = { + type: use > 1 ? "strongSequence" : "emphasisSequence", + start, + end: Object.assign({}, events[open][1].end) + }; + closingSequence = { + type: use > 1 ? "strongSequence" : "emphasisSequence", + start: Object.assign({}, events[index2][1].start), + end + }; + text3 = { + type: use > 1 ? "strongText" : "emphasisText", + start: Object.assign({}, events[open][1].end), + end: Object.assign({}, events[index2][1].start) + }; + group = { + type: use > 1 ? "strong" : "emphasis", + start: Object.assign({}, openingSequence.start), + end: Object.assign({}, closingSequence.end) + }; + events[open][1].end = Object.assign({}, openingSequence.start); + events[index2][1].start = Object.assign({}, closingSequence.end); + nextEvents = []; + if (events[open][1].end.offset - events[open][1].start.offset) { + nextEvents = push(nextEvents, [ + ["enter", events[open][1], context], + ["exit", events[open][1], context] + ]); + } + nextEvents = push(nextEvents, [ + ["enter", group, context], + ["enter", openingSequence, context], + ["exit", openingSequence, context], + ["enter", text3, context] + ]); + nextEvents = push( + nextEvents, + resolveAll( + context.parser.constructs.insideSpan.null, + events.slice(open + 1, index2), + context + ) + ); + nextEvents = push(nextEvents, [ + ["exit", text3, context], + ["enter", closingSequence, context], + ["exit", closingSequence, context], + ["exit", group, context] + ]); + if (events[index2][1].end.offset - events[index2][1].start.offset) { + offset = 2; + nextEvents = push(nextEvents, [ + ["enter", events[index2][1], context], + ["exit", events[index2][1], context] + ]); + } else { + offset = 0; + } + splice(events, open - 1, index2 - open + 3, nextEvents); + index2 = open + nextEvents.length - offset - 2; + break; + } + } + } + } + index2 = -1; + while (++index2 < events.length) { + if (events[index2][1].type === "attentionSequence") { + events[index2][1].type = "data"; + } + } + return events; +} +function tokenizeAttention(effects, ok2) { + const attentionMarkers2 = this.parser.constructs.attentionMarkers.null; + const previous2 = this.previous; + const before = classifyCharacter(previous2); + let marker; + return start; + function start(code) { + marker = code; + effects.enter("attentionSequence"); + return inside(code); + } + function inside(code) { + if (code === marker) { + effects.consume(code); + return inside; + } + const token = effects.exit("attentionSequence"); + const after = classifyCharacter(code); + const open = !after || after === 2 && before || attentionMarkers2.includes(code); + const close = !before || before === 2 && after || attentionMarkers2.includes(previous2); + token._open = Boolean(marker === 42 ? open : open && (before || !close)); + token._close = Boolean(marker === 42 ? close : close && (after || !open)); + return ok2(code); + } +} +function movePoint(point3, offset) { + point3.column += offset; + point3.offset += offset; + point3._bufferIndex += offset; +} + +// node_modules/micromark-core-commonmark/lib/autolink.js +var autolink = { + name: "autolink", + tokenize: tokenizeAutolink +}; +function tokenizeAutolink(effects, ok2, nok) { + let size = 0; + return start; + function start(code) { + effects.enter("autolink"); + effects.enter("autolinkMarker"); + effects.consume(code); + effects.exit("autolinkMarker"); + effects.enter("autolinkProtocol"); + return open; + } + function open(code) { + if (asciiAlpha(code)) { + effects.consume(code); + return schemeOrEmailAtext; + } + return emailAtext(code); + } + function schemeOrEmailAtext(code) { + if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) { + size = 1; + return schemeInsideOrEmailAtext(code); + } + return emailAtext(code); + } + function schemeInsideOrEmailAtext(code) { + if (code === 58) { + effects.consume(code); + size = 0; + return urlInside; + } + if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) { + effects.consume(code); + return schemeInsideOrEmailAtext; + } + size = 0; + return emailAtext(code); + } + function urlInside(code) { + if (code === 62) { + effects.exit("autolinkProtocol"); + effects.enter("autolinkMarker"); + effects.consume(code); + effects.exit("autolinkMarker"); + effects.exit("autolink"); + return ok2; + } + if (code === null || code === 32 || code === 60 || asciiControl(code)) { + return nok(code); + } + effects.consume(code); + return urlInside; + } + function emailAtext(code) { + if (code === 64) { + effects.consume(code); + return emailAtSignOrDot; + } + if (asciiAtext(code)) { + effects.consume(code); + return emailAtext; + } + return nok(code); + } + function emailAtSignOrDot(code) { + return asciiAlphanumeric(code) ? emailLabel(code) : nok(code); + } + function emailLabel(code) { + if (code === 46) { + effects.consume(code); + size = 0; + return emailAtSignOrDot; + } + if (code === 62) { + effects.exit("autolinkProtocol").type = "autolinkEmail"; + effects.enter("autolinkMarker"); + effects.consume(code); + effects.exit("autolinkMarker"); + effects.exit("autolink"); + return ok2; + } + return emailValue(code); + } + function emailValue(code) { + if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) { + const next = code === 45 ? emailValue : emailLabel; + effects.consume(code); + return next; + } + return nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/blank-line.js +var blankLine = { + tokenize: tokenizeBlankLine, + partial: true +}; +function tokenizeBlankLine(effects, ok2, nok) { + return start; + function start(code) { + return markdownSpace(code) ? factorySpace(effects, after, "linePrefix")(code) : after(code); + } + function after(code) { + return code === null || markdownLineEnding(code) ? ok2(code) : nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/block-quote.js +var blockQuote = { + name: "blockQuote", + tokenize: tokenizeBlockQuoteStart, + continuation: { + tokenize: tokenizeBlockQuoteContinuation + }, + exit +}; +function tokenizeBlockQuoteStart(effects, ok2, nok) { + const self2 = this; + return start; + function start(code) { + if (code === 62) { + const state = self2.containerState; + if (!state.open) { + effects.enter("blockQuote", { + _container: true + }); + state.open = true; + } + effects.enter("blockQuotePrefix"); + effects.enter("blockQuoteMarker"); + effects.consume(code); + effects.exit("blockQuoteMarker"); + return after; + } + return nok(code); + } + function after(code) { + if (markdownSpace(code)) { + effects.enter("blockQuotePrefixWhitespace"); + effects.consume(code); + effects.exit("blockQuotePrefixWhitespace"); + effects.exit("blockQuotePrefix"); + return ok2; + } + effects.exit("blockQuotePrefix"); + return ok2(code); + } +} +function tokenizeBlockQuoteContinuation(effects, ok2, nok) { + const self2 = this; + return contStart; + function contStart(code) { + if (markdownSpace(code)) { + return factorySpace( + effects, + contBefore, + "linePrefix", + self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + )(code); + } + return contBefore(code); + } + function contBefore(code) { + return effects.attempt(blockQuote, ok2, nok)(code); + } +} +function exit(effects) { + effects.exit("blockQuote"); +} + +// node_modules/micromark-core-commonmark/lib/character-escape.js +var characterEscape = { + name: "characterEscape", + tokenize: tokenizeCharacterEscape +}; +function tokenizeCharacterEscape(effects, ok2, nok) { + return start; + function start(code) { + effects.enter("characterEscape"); + effects.enter("escapeMarker"); + effects.consume(code); + effects.exit("escapeMarker"); + return inside; + } + function inside(code) { + if (asciiPunctuation(code)) { + effects.enter("characterEscapeValue"); + effects.consume(code); + effects.exit("characterEscapeValue"); + effects.exit("characterEscape"); + return ok2; + } + return nok(code); + } +} + +// node_modules/decode-named-character-reference/index.dom.js +var element = document.createElement("i"); +function decodeNamedCharacterReference(value) { + const characterReference2 = "&" + value + ";"; + element.innerHTML = characterReference2; + const char = element.textContent; + if (char.charCodeAt(char.length - 1) === 59 && value !== "semi") { + return false; + } + return char === characterReference2 ? false : char; +} + +// node_modules/micromark-core-commonmark/lib/character-reference.js +var characterReference = { + name: "characterReference", + tokenize: tokenizeCharacterReference +}; +function tokenizeCharacterReference(effects, ok2, nok) { + const self2 = this; + let size = 0; + let max; + let test; + return start; + function start(code) { + effects.enter("characterReference"); + effects.enter("characterReferenceMarker"); + effects.consume(code); + effects.exit("characterReferenceMarker"); + return open; + } + function open(code) { + if (code === 35) { + effects.enter("characterReferenceMarkerNumeric"); + effects.consume(code); + effects.exit("characterReferenceMarkerNumeric"); + return numeric; + } + effects.enter("characterReferenceValue"); + max = 31; + test = asciiAlphanumeric; + return value(code); + } + function numeric(code) { + if (code === 88 || code === 120) { + effects.enter("characterReferenceMarkerHexadecimal"); + effects.consume(code); + effects.exit("characterReferenceMarkerHexadecimal"); + effects.enter("characterReferenceValue"); + max = 6; + test = asciiHexDigit; + return value; + } + effects.enter("characterReferenceValue"); + max = 7; + test = asciiDigit; + return value(code); + } + function value(code) { + if (code === 59 && size) { + const token = effects.exit("characterReferenceValue"); + if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self2.sliceSerialize(token))) { + return nok(code); + } + effects.enter("characterReferenceMarker"); + effects.consume(code); + effects.exit("characterReferenceMarker"); + effects.exit("characterReference"); + return ok2; + } + if (test(code) && size++ < max) { + effects.consume(code); + return value; + } + return nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/code-fenced.js +var nonLazyContinuation = { + tokenize: tokenizeNonLazyContinuation, + partial: true +}; +var codeFenced = { + name: "codeFenced", + tokenize: tokenizeCodeFenced, + concrete: true +}; +function tokenizeCodeFenced(effects, ok2, nok) { + const self2 = this; + const closeStart = { + tokenize: tokenizeCloseStart, + partial: true + }; + let initialPrefix = 0; + let sizeOpen = 0; + let marker; + return start; + function start(code) { + return beforeSequenceOpen(code); + } + function beforeSequenceOpen(code) { + const tail = self2.events[self2.events.length - 1]; + initialPrefix = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; + marker = code; + effects.enter("codeFenced"); + effects.enter("codeFencedFence"); + effects.enter("codeFencedFenceSequence"); + return sequenceOpen(code); + } + function sequenceOpen(code) { + if (code === marker) { + sizeOpen++; + effects.consume(code); + return sequenceOpen; + } + if (sizeOpen < 3) { + return nok(code); + } + effects.exit("codeFencedFenceSequence"); + return markdownSpace(code) ? factorySpace(effects, infoBefore, "whitespace")(code) : infoBefore(code); + } + function infoBefore(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFencedFence"); + return self2.interrupt ? ok2(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); + } + effects.enter("codeFencedFenceInfo"); + effects.enter("chunkString", { + contentType: "string" + }); + return info(code); + } + function info(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceInfo"); + return infoBefore(code); + } + if (markdownSpace(code)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceInfo"); + return factorySpace(effects, metaBefore, "whitespace")(code); + } + if (code === 96 && code === marker) { + return nok(code); + } + effects.consume(code); + return info; + } + function metaBefore(code) { + if (code === null || markdownLineEnding(code)) { + return infoBefore(code); + } + effects.enter("codeFencedFenceMeta"); + effects.enter("chunkString", { + contentType: "string" + }); + return meta(code); + } + function meta(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceMeta"); + return infoBefore(code); + } + if (code === 96 && code === marker) { + return nok(code); + } + effects.consume(code); + return meta; + } + function atNonLazyBreak(code) { + return effects.attempt(closeStart, after, contentBefore)(code); + } + function contentBefore(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return contentStart; + } + function contentStart(code) { + return initialPrefix > 0 && markdownSpace(code) ? factorySpace( + effects, + beforeContentChunk, + "linePrefix", + initialPrefix + 1 + )(code) : beforeContentChunk(code); + } + function beforeContentChunk(code) { + if (code === null || markdownLineEnding(code)) { + return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); + } + effects.enter("codeFlowValue"); + return contentChunk(code); + } + function contentChunk(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFlowValue"); + return beforeContentChunk(code); + } + effects.consume(code); + return contentChunk; + } + function after(code) { + effects.exit("codeFenced"); + return ok2(code); + } + function tokenizeCloseStart(effects2, ok3, nok2) { + let size = 0; + return startBefore; + function startBefore(code) { + effects2.enter("lineEnding"); + effects2.consume(code); + effects2.exit("lineEnding"); + return start2; + } + function start2(code) { + effects2.enter("codeFencedFence"); + return markdownSpace(code) ? factorySpace( + effects2, + beforeSequenceClose, + "linePrefix", + self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + )(code) : beforeSequenceClose(code); + } + function beforeSequenceClose(code) { + if (code === marker) { + effects2.enter("codeFencedFenceSequence"); + return sequenceClose(code); + } + return nok2(code); + } + function sequenceClose(code) { + if (code === marker) { + size++; + effects2.consume(code); + return sequenceClose; + } + if (size >= sizeOpen) { + effects2.exit("codeFencedFenceSequence"); + return markdownSpace(code) ? factorySpace(effects2, sequenceCloseAfter, "whitespace")(code) : sequenceCloseAfter(code); + } + return nok2(code); + } + function sequenceCloseAfter(code) { + if (code === null || markdownLineEnding(code)) { + effects2.exit("codeFencedFence"); + return ok3(code); + } + return nok2(code); + } + } +} +function tokenizeNonLazyContinuation(effects, ok2, nok) { + const self2 = this; + return start; + function start(code) { + if (code === null) { + return nok(code); + } + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return lineStart; + } + function lineStart(code) { + return self2.parser.lazy[self2.now().line] ? nok(code) : ok2(code); + } +} + +// node_modules/micromark-core-commonmark/lib/code-indented.js +var codeIndented = { + name: "codeIndented", + tokenize: tokenizeCodeIndented +}; +var furtherStart = { + tokenize: tokenizeFurtherStart, + partial: true +}; +function tokenizeCodeIndented(effects, ok2, nok) { + const self2 = this; + return start; + function start(code) { + effects.enter("codeIndented"); + return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code); + } + function afterPrefix(code) { + const tail = self2.events[self2.events.length - 1]; + return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code); + } + function atBreak(code) { + if (code === null) { + return after(code); + } + if (markdownLineEnding(code)) { + return effects.attempt(furtherStart, atBreak, after)(code); + } + effects.enter("codeFlowValue"); + return inside(code); + } + function inside(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFlowValue"); + return atBreak(code); + } + effects.consume(code); + return inside; + } + function after(code) { + effects.exit("codeIndented"); + return ok2(code); + } +} +function tokenizeFurtherStart(effects, ok2, nok) { + const self2 = this; + return furtherStart2; + function furtherStart2(code) { + if (self2.parser.lazy[self2.now().line]) { + return nok(code); + } + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return furtherStart2; + } + return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code); + } + function afterPrefix(code) { + const tail = self2.events[self2.events.length - 1]; + return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok2(code) : markdownLineEnding(code) ? furtherStart2(code) : nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/code-text.js +var codeText = { + name: "codeText", + tokenize: tokenizeCodeText, + resolve: resolveCodeText, + previous +}; +function resolveCodeText(events) { + let tailExitIndex = events.length - 4; + let headEnterIndex = 3; + let index2; + let enter; + if ((events[headEnterIndex][1].type === "lineEnding" || events[headEnterIndex][1].type === "space") && (events[tailExitIndex][1].type === "lineEnding" || events[tailExitIndex][1].type === "space")) { + index2 = headEnterIndex; + while (++index2 < tailExitIndex) { + if (events[index2][1].type === "codeTextData") { + events[headEnterIndex][1].type = "codeTextPadding"; + events[tailExitIndex][1].type = "codeTextPadding"; + headEnterIndex += 2; + tailExitIndex -= 2; + break; + } + } + } + index2 = headEnterIndex - 1; + tailExitIndex++; + while (++index2 <= tailExitIndex) { + if (enter === void 0) { + if (index2 !== tailExitIndex && events[index2][1].type !== "lineEnding") { + enter = index2; + } + } else if (index2 === tailExitIndex || events[index2][1].type === "lineEnding") { + events[enter][1].type = "codeTextData"; + if (index2 !== enter + 2) { + events[enter][1].end = events[index2 - 1][1].end; + events.splice(enter + 2, index2 - enter - 2); + tailExitIndex -= index2 - enter - 2; + index2 = enter + 2; + } + enter = void 0; + } + } + return events; +} +function previous(code) { + return code !== 96 || this.events[this.events.length - 1][1].type === "characterEscape"; +} +function tokenizeCodeText(effects, ok2, nok) { + const self2 = this; + let sizeOpen = 0; + let size; + let token; + return start; + function start(code) { + effects.enter("codeText"); + effects.enter("codeTextSequence"); + return sequenceOpen(code); + } + function sequenceOpen(code) { + if (code === 96) { + effects.consume(code); + sizeOpen++; + return sequenceOpen; + } + effects.exit("codeTextSequence"); + return between(code); + } + function between(code) { + if (code === null) { + return nok(code); + } + if (code === 32) { + effects.enter("space"); + effects.consume(code); + effects.exit("space"); + return between; + } + if (code === 96) { + token = effects.enter("codeTextSequence"); + size = 0; + return sequenceClose(code); + } + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return between; + } + effects.enter("codeTextData"); + return data(code); + } + function data(code) { + if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) { + effects.exit("codeTextData"); + return between(code); + } + effects.consume(code); + return data; + } + function sequenceClose(code) { + if (code === 96) { + effects.consume(code); + size++; + return sequenceClose; + } + if (size === sizeOpen) { + effects.exit("codeTextSequence"); + effects.exit("codeText"); + return ok2(code); + } + token.type = "codeTextData"; + return data(code); + } +} + +// node_modules/micromark-util-subtokenize/index.js +function subtokenize(events) { + const jumps = {}; + let index2 = -1; + let event; + let lineIndex; + let otherIndex; + let otherEvent; + let parameters; + let subevents; + let more; + while (++index2 < events.length) { + while (index2 in jumps) { + index2 = jumps[index2]; + } + event = events[index2]; + if (index2 && event[1].type === "chunkFlow" && events[index2 - 1][1].type === "listItemPrefix") { + subevents = event[1]._tokenizer.events; + otherIndex = 0; + if (otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank") { + otherIndex += 2; + } + if (otherIndex < subevents.length && subevents[otherIndex][1].type === "content") { + while (++otherIndex < subevents.length) { + if (subevents[otherIndex][1].type === "content") { + break; + } + if (subevents[otherIndex][1].type === "chunkText") { + subevents[otherIndex][1]._isInFirstContentOfListItem = true; + otherIndex++; + } + } + } + } + if (event[0] === "enter") { + if (event[1].contentType) { + Object.assign(jumps, subcontent(events, index2)); + index2 = jumps[index2]; + more = true; + } + } else if (event[1]._container) { + otherIndex = index2; + lineIndex = void 0; + while (otherIndex--) { + otherEvent = events[otherIndex]; + if (otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank") { + if (otherEvent[0] === "enter") { + if (lineIndex) { + events[lineIndex][1].type = "lineEndingBlank"; + } + otherEvent[1].type = "lineEnding"; + lineIndex = otherIndex; + } + } else { + break; + } + } + if (lineIndex) { + event[1].end = Object.assign({}, events[lineIndex][1].start); + parameters = events.slice(lineIndex, index2); + parameters.unshift(event); + splice(events, lineIndex, index2 - lineIndex + 1, parameters); + } + } + } + return !more; +} +function subcontent(events, eventIndex) { + const token = events[eventIndex][1]; + const context = events[eventIndex][2]; + let startPosition = eventIndex - 1; + const startPositions = []; + const tokenizer = token._tokenizer || context.parser[token.contentType](token.start); + const childEvents = tokenizer.events; + const jumps = []; + const gaps = {}; + let stream; + let previous2; + let index2 = -1; + let current = token; + let adjust = 0; + let start = 0; + const breaks = [start]; + while (current) { + while (events[++startPosition][1] !== current) { + } + startPositions.push(startPosition); + if (!current._tokenizer) { + stream = context.sliceStream(current); + if (!current.next) { + stream.push(null); + } + if (previous2) { + tokenizer.defineSkip(current.start); + } + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = true; + } + tokenizer.write(stream); + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = void 0; + } + } + previous2 = current; + current = current.next; + } + current = token; + while (++index2 < childEvents.length) { + if ( + // Find a void token that includes a break. + childEvents[index2][0] === "exit" && childEvents[index2 - 1][0] === "enter" && childEvents[index2][1].type === childEvents[index2 - 1][1].type && childEvents[index2][1].start.line !== childEvents[index2][1].end.line + ) { + start = index2 + 1; + breaks.push(start); + current._tokenizer = void 0; + current.previous = void 0; + current = current.next; + } + } + tokenizer.events = []; + if (current) { + current._tokenizer = void 0; + current.previous = void 0; + } else { + breaks.pop(); + } + index2 = breaks.length; + while (index2--) { + const slice = childEvents.slice(breaks[index2], breaks[index2 + 1]); + const start2 = startPositions.pop(); + jumps.unshift([start2, start2 + slice.length - 1]); + splice(events, start2, 2, slice); + } + index2 = -1; + while (++index2 < jumps.length) { + gaps[adjust + jumps[index2][0]] = adjust + jumps[index2][1]; + adjust += jumps[index2][1] - jumps[index2][0] - 1; + } + return gaps; +} + +// node_modules/micromark-core-commonmark/lib/content.js +var content2 = { + tokenize: tokenizeContent, + resolve: resolveContent +}; +var continuationConstruct = { + tokenize: tokenizeContinuation, + partial: true +}; +function resolveContent(events) { + subtokenize(events); + return events; +} +function tokenizeContent(effects, ok2) { + let previous2; + return chunkStart; + function chunkStart(code) { + effects.enter("content"); + previous2 = effects.enter("chunkContent", { + contentType: "content" + }); + return chunkInside(code); + } + function chunkInside(code) { + if (code === null) { + return contentEnd(code); + } + if (markdownLineEnding(code)) { + return effects.check( + continuationConstruct, + contentContinue, + contentEnd + )(code); + } + effects.consume(code); + return chunkInside; + } + function contentEnd(code) { + effects.exit("chunkContent"); + effects.exit("content"); + return ok2(code); + } + function contentContinue(code) { + effects.consume(code); + effects.exit("chunkContent"); + previous2.next = effects.enter("chunkContent", { + contentType: "content", + previous: previous2 + }); + previous2 = previous2.next; + return chunkInside; + } +} +function tokenizeContinuation(effects, ok2, nok) { + const self2 = this; + return startLookahead; + function startLookahead(code) { + effects.exit("chunkContent"); + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, prefixed, "linePrefix"); + } + function prefixed(code) { + if (code === null || markdownLineEnding(code)) { + return nok(code); + } + const tail = self2.events[self2.events.length - 1]; + if (!self2.parser.constructs.disable.null.includes("codeIndented") && tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4) { + return ok2(code); + } + return effects.interrupt(self2.parser.constructs.flow, nok, ok2)(code); + } +} + +// node_modules/micromark-factory-destination/index.js +function factoryDestination(effects, ok2, nok, type, literalType, literalMarkerType, rawType, stringType, max) { + const limit = max || Number.POSITIVE_INFINITY; + let balance = 0; + return start; + function start(code) { + if (code === 60) { + effects.enter(type); + effects.enter(literalType); + effects.enter(literalMarkerType); + effects.consume(code); + effects.exit(literalMarkerType); + return enclosedBefore; + } + if (code === null || code === 32 || code === 41 || asciiControl(code)) { + return nok(code); + } + effects.enter(type); + effects.enter(rawType); + effects.enter(stringType); + effects.enter("chunkString", { + contentType: "string" + }); + return raw(code); + } + function enclosedBefore(code) { + if (code === 62) { + effects.enter(literalMarkerType); + effects.consume(code); + effects.exit(literalMarkerType); + effects.exit(literalType); + effects.exit(type); + return ok2; + } + effects.enter(stringType); + effects.enter("chunkString", { + contentType: "string" + }); + return enclosed(code); + } + function enclosed(code) { + if (code === 62) { + effects.exit("chunkString"); + effects.exit(stringType); + return enclosedBefore(code); + } + if (code === null || code === 60 || markdownLineEnding(code)) { + return nok(code); + } + effects.consume(code); + return code === 92 ? enclosedEscape : enclosed; + } + function enclosedEscape(code) { + if (code === 60 || code === 62 || code === 92) { + effects.consume(code); + return enclosed; + } + return enclosed(code); + } + function raw(code) { + if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) { + effects.exit("chunkString"); + effects.exit(stringType); + effects.exit(rawType); + effects.exit(type); + return ok2(code); + } + if (balance < limit && code === 40) { + effects.consume(code); + balance++; + return raw; + } + if (code === 41) { + effects.consume(code); + balance--; + return raw; + } + if (code === null || code === 32 || code === 40 || asciiControl(code)) { + return nok(code); + } + effects.consume(code); + return code === 92 ? rawEscape : raw; + } + function rawEscape(code) { + if (code === 40 || code === 41 || code === 92) { + effects.consume(code); + return raw; + } + return raw(code); + } +} + +// node_modules/micromark-factory-label/index.js +function factoryLabel(effects, ok2, nok, type, markerType, stringType) { + const self2 = this; + let size = 0; + let seen; + return start; + function start(code) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + effects.enter(stringType); + return atBreak; + } + function atBreak(code) { + if (size > 999 || code === null || code === 91 || code === 93 && !seen || // To do: remove in the future once we’ve switched from + // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`, + // which doesn’t need this. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + code === 94 && !size && "_hiddenFootnoteSupport" in self2.parser.constructs) { + return nok(code); + } + if (code === 93) { + effects.exit(stringType); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + effects.exit(type); + return ok2; + } + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return atBreak; + } + effects.enter("chunkString", { + contentType: "string" + }); + return labelInside(code); + } + function labelInside(code) { + if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) { + effects.exit("chunkString"); + return atBreak(code); + } + effects.consume(code); + if (!seen) + seen = !markdownSpace(code); + return code === 92 ? labelEscape : labelInside; + } + function labelEscape(code) { + if (code === 91 || code === 92 || code === 93) { + effects.consume(code); + size++; + return labelInside; + } + return labelInside(code); + } +} + +// node_modules/micromark-factory-title/index.js +function factoryTitle(effects, ok2, nok, type, markerType, stringType) { + let marker; + return start; + function start(code) { + if (code === 34 || code === 39 || code === 40) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + marker = code === 40 ? 41 : code; + return begin; + } + return nok(code); + } + function begin(code) { + if (code === marker) { + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + effects.exit(type); + return ok2; + } + effects.enter(stringType); + return atBreak(code); + } + function atBreak(code) { + if (code === marker) { + effects.exit(stringType); + return begin(marker); + } + if (code === null) { + return nok(code); + } + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, atBreak, "linePrefix"); + } + effects.enter("chunkString", { + contentType: "string" + }); + return inside(code); + } + function inside(code) { + if (code === marker || code === null || markdownLineEnding(code)) { + effects.exit("chunkString"); + return atBreak(code); + } + effects.consume(code); + return code === 92 ? escape : inside; + } + function escape(code) { + if (code === marker || code === 92) { + effects.consume(code); + return inside; + } + return inside(code); + } +} + +// node_modules/micromark-factory-whitespace/index.js +function factoryWhitespace(effects, ok2) { + let seen; + return start; + function start(code) { + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + seen = true; + return start; + } + if (markdownSpace(code)) { + return factorySpace( + effects, + start, + seen ? "linePrefix" : "lineSuffix" + )(code); + } + return ok2(code); + } +} + +// node_modules/micromark-util-normalize-identifier/index.js +function normalizeIdentifier(value) { + return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase(); +} + +// node_modules/micromark-core-commonmark/lib/definition.js +var definition = { + name: "definition", + tokenize: tokenizeDefinition +}; +var titleBefore = { + tokenize: tokenizeTitleBefore, + partial: true +}; +function tokenizeDefinition(effects, ok2, nok) { + const self2 = this; + let identifier; + return start; + function start(code) { + effects.enter("definition"); + return before(code); + } + function before(code) { + return factoryLabel.call( + self2, + effects, + labelAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, + "definitionLabel", + "definitionLabelMarker", + "definitionLabelString" + )(code); + } + function labelAfter(code) { + identifier = normalizeIdentifier( + self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1) + ); + if (code === 58) { + effects.enter("definitionMarker"); + effects.consume(code); + effects.exit("definitionMarker"); + return markerAfter; + } + return nok(code); + } + function markerAfter(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code); + } + function destinationBefore(code) { + return factoryDestination( + effects, + destinationAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, + "definitionDestination", + "definitionDestinationLiteral", + "definitionDestinationLiteralMarker", + "definitionDestinationRaw", + "definitionDestinationString" + )(code); + } + function destinationAfter(code) { + return effects.attempt(titleBefore, after, after)(code); + } + function after(code) { + return markdownSpace(code) ? factorySpace(effects, afterWhitespace, "whitespace")(code) : afterWhitespace(code); + } + function afterWhitespace(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("definition"); + self2.parser.defined.push(identifier); + return ok2(code); + } + return nok(code); + } +} +function tokenizeTitleBefore(effects, ok2, nok) { + return titleBefore2; + function titleBefore2(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code); + } + function beforeMarker(code) { + return factoryTitle( + effects, + titleAfter, + nok, + "definitionTitle", + "definitionTitleMarker", + "definitionTitleString" + )(code); + } + function titleAfter(code) { + return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, "whitespace")(code) : titleAfterOptionalWhitespace(code); + } + function titleAfterOptionalWhitespace(code) { + return code === null || markdownLineEnding(code) ? ok2(code) : nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/hard-break-escape.js +var hardBreakEscape = { + name: "hardBreakEscape", + tokenize: tokenizeHardBreakEscape +}; +function tokenizeHardBreakEscape(effects, ok2, nok) { + return start; + function start(code) { + effects.enter("hardBreakEscape"); + effects.consume(code); + return after; + } + function after(code) { + if (markdownLineEnding(code)) { + effects.exit("hardBreakEscape"); + return ok2(code); + } + return nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/heading-atx.js +var headingAtx = { + name: "headingAtx", + tokenize: tokenizeHeadingAtx, + resolve: resolveHeadingAtx +}; +function resolveHeadingAtx(events, context) { + let contentEnd = events.length - 2; + let contentStart = 3; + let content3; + let text3; + if (events[contentStart][1].type === "whitespace") { + contentStart += 2; + } + if (contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace") { + contentEnd -= 2; + } + if (events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace")) { + contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; + } + if (contentEnd > contentStart) { + content3 = { + type: "atxHeadingText", + start: events[contentStart][1].start, + end: events[contentEnd][1].end + }; + text3 = { + type: "chunkText", + start: events[contentStart][1].start, + end: events[contentEnd][1].end, + contentType: "text" + }; + splice(events, contentStart, contentEnd - contentStart + 1, [ + ["enter", content3, context], + ["enter", text3, context], + ["exit", text3, context], + ["exit", content3, context] + ]); + } + return events; +} +function tokenizeHeadingAtx(effects, ok2, nok) { + let size = 0; + return start; + function start(code) { + effects.enter("atxHeading"); + return before(code); + } + function before(code) { + effects.enter("atxHeadingSequence"); + return sequenceOpen(code); + } + function sequenceOpen(code) { + if (code === 35 && size++ < 6) { + effects.consume(code); + return sequenceOpen; + } + if (code === null || markdownLineEndingOrSpace(code)) { + effects.exit("atxHeadingSequence"); + return atBreak(code); + } + return nok(code); + } + function atBreak(code) { + if (code === 35) { + effects.enter("atxHeadingSequence"); + return sequenceFurther(code); + } + if (code === null || markdownLineEnding(code)) { + effects.exit("atxHeading"); + return ok2(code); + } + if (markdownSpace(code)) { + return factorySpace(effects, atBreak, "whitespace")(code); + } + effects.enter("atxHeadingText"); + return data(code); + } + function sequenceFurther(code) { + if (code === 35) { + effects.consume(code); + return sequenceFurther; + } + effects.exit("atxHeadingSequence"); + return atBreak(code); + } + function data(code) { + if (code === null || code === 35 || markdownLineEndingOrSpace(code)) { + effects.exit("atxHeadingText"); + return atBreak(code); + } + effects.consume(code); + return data; + } +} + +// node_modules/micromark-util-html-tag-name/index.js +var htmlBlockNames = [ + "address", + "article", + "aside", + "base", + "basefont", + "blockquote", + "body", + "caption", + "center", + "col", + "colgroup", + "dd", + "details", + "dialog", + "dir", + "div", + "dl", + "dt", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "frame", + "frameset", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hr", + "html", + "iframe", + "legend", + "li", + "link", + "main", + "menu", + "menuitem", + "nav", + "noframes", + "ol", + "optgroup", + "option", + "p", + "param", + "search", + "section", + "summary", + "table", + "tbody", + "td", + "tfoot", + "th", + "thead", + "title", + "tr", + "track", + "ul" +]; +var htmlRawNames = ["pre", "script", "style", "textarea"]; + +// node_modules/micromark-core-commonmark/lib/html-flow.js +var htmlFlow = { + name: "htmlFlow", + tokenize: tokenizeHtmlFlow, + resolveTo: resolveToHtmlFlow, + concrete: true +}; +var blankLineBefore = { + tokenize: tokenizeBlankLineBefore, + partial: true +}; +var nonLazyContinuationStart = { + tokenize: tokenizeNonLazyContinuationStart, + partial: true +}; +function resolveToHtmlFlow(events) { + let index2 = events.length; + while (index2--) { + if (events[index2][0] === "enter" && events[index2][1].type === "htmlFlow") { + break; + } + } + if (index2 > 1 && events[index2 - 2][1].type === "linePrefix") { + events[index2][1].start = events[index2 - 2][1].start; + events[index2 + 1][1].start = events[index2 - 2][1].start; + events.splice(index2 - 2, 2); + } + return events; +} +function tokenizeHtmlFlow(effects, ok2, nok) { + const self2 = this; + let marker; + let closingTag; + let buffer2; + let index2; + let markerB; + return start; + function start(code) { + return before(code); + } + function before(code) { + effects.enter("htmlFlow"); + effects.enter("htmlFlowData"); + effects.consume(code); + return open; + } + function open(code) { + if (code === 33) { + effects.consume(code); + return declarationOpen; + } + if (code === 47) { + effects.consume(code); + closingTag = true; + return tagCloseStart; + } + if (code === 63) { + effects.consume(code); + marker = 3; + return self2.interrupt ? ok2 : continuationDeclarationInside; + } + if (asciiAlpha(code)) { + effects.consume(code); + buffer2 = String.fromCharCode(code); + return tagName; + } + return nok(code); + } + function declarationOpen(code) { + if (code === 45) { + effects.consume(code); + marker = 2; + return commentOpenInside; + } + if (code === 91) { + effects.consume(code); + marker = 5; + index2 = 0; + return cdataOpenInside; + } + if (asciiAlpha(code)) { + effects.consume(code); + marker = 4; + return self2.interrupt ? ok2 : continuationDeclarationInside; + } + return nok(code); + } + function commentOpenInside(code) { + if (code === 45) { + effects.consume(code); + return self2.interrupt ? ok2 : continuationDeclarationInside; + } + return nok(code); + } + function cdataOpenInside(code) { + const value = "CDATA["; + if (code === value.charCodeAt(index2++)) { + effects.consume(code); + if (index2 === value.length) { + return self2.interrupt ? ok2 : continuation; + } + return cdataOpenInside; + } + return nok(code); + } + function tagCloseStart(code) { + if (asciiAlpha(code)) { + effects.consume(code); + buffer2 = String.fromCharCode(code); + return tagName; + } + return nok(code); + } + function tagName(code) { + if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + const slash = code === 47; + const name = buffer2.toLowerCase(); + if (!slash && !closingTag && htmlRawNames.includes(name)) { + marker = 1; + return self2.interrupt ? ok2(code) : continuation(code); + } + if (htmlBlockNames.includes(buffer2.toLowerCase())) { + marker = 6; + if (slash) { + effects.consume(code); + return basicSelfClosing; + } + return self2.interrupt ? ok2(code) : continuation(code); + } + marker = 7; + return self2.interrupt && !self2.parser.lazy[self2.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code); + } + if (code === 45 || asciiAlphanumeric(code)) { + effects.consume(code); + buffer2 += String.fromCharCode(code); + return tagName; + } + return nok(code); + } + function basicSelfClosing(code) { + if (code === 62) { + effects.consume(code); + return self2.interrupt ? ok2 : continuation; + } + return nok(code); + } + function completeClosingTagAfter(code) { + if (markdownSpace(code)) { + effects.consume(code); + return completeClosingTagAfter; + } + return completeEnd(code); + } + function completeAttributeNameBefore(code) { + if (code === 47) { + effects.consume(code); + return completeEnd; + } + if (code === 58 || code === 95 || asciiAlpha(code)) { + effects.consume(code); + return completeAttributeName; + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAttributeNameBefore; + } + return completeEnd(code); + } + function completeAttributeName(code) { + if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) { + effects.consume(code); + return completeAttributeName; + } + return completeAttributeNameAfter(code); + } + function completeAttributeNameAfter(code) { + if (code === 61) { + effects.consume(code); + return completeAttributeValueBefore; + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAttributeNameAfter; + } + return completeAttributeNameBefore(code); + } + function completeAttributeValueBefore(code) { + if (code === null || code === 60 || code === 61 || code === 62 || code === 96) { + return nok(code); + } + if (code === 34 || code === 39) { + effects.consume(code); + markerB = code; + return completeAttributeValueQuoted; + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAttributeValueBefore; + } + return completeAttributeValueUnquoted(code); + } + function completeAttributeValueQuoted(code) { + if (code === markerB) { + effects.consume(code); + markerB = null; + return completeAttributeValueQuotedAfter; + } + if (code === null || markdownLineEnding(code)) { + return nok(code); + } + effects.consume(code); + return completeAttributeValueQuoted; + } + function completeAttributeValueUnquoted(code) { + if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) { + return completeAttributeNameAfter(code); + } + effects.consume(code); + return completeAttributeValueUnquoted; + } + function completeAttributeValueQuotedAfter(code) { + if (code === 47 || code === 62 || markdownSpace(code)) { + return completeAttributeNameBefore(code); + } + return nok(code); + } + function completeEnd(code) { + if (code === 62) { + effects.consume(code); + return completeAfter; + } + return nok(code); + } + function completeAfter(code) { + if (code === null || markdownLineEnding(code)) { + return continuation(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAfter; + } + return nok(code); + } + function continuation(code) { + if (code === 45 && marker === 2) { + effects.consume(code); + return continuationCommentInside; + } + if (code === 60 && marker === 1) { + effects.consume(code); + return continuationRawTagOpen; + } + if (code === 62 && marker === 4) { + effects.consume(code); + return continuationClose; + } + if (code === 63 && marker === 3) { + effects.consume(code); + return continuationDeclarationInside; + } + if (code === 93 && marker === 5) { + effects.consume(code); + return continuationCdataInside; + } + if (markdownLineEnding(code) && (marker === 6 || marker === 7)) { + effects.exit("htmlFlowData"); + return effects.check( + blankLineBefore, + continuationAfter, + continuationStart + )(code); + } + if (code === null || markdownLineEnding(code)) { + effects.exit("htmlFlowData"); + return continuationStart(code); + } + effects.consume(code); + return continuation; + } + function continuationStart(code) { + return effects.check( + nonLazyContinuationStart, + continuationStartNonLazy, + continuationAfter + )(code); + } + function continuationStartNonLazy(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return continuationBefore; + } + function continuationBefore(code) { + if (code === null || markdownLineEnding(code)) { + return continuationStart(code); + } + effects.enter("htmlFlowData"); + return continuation(code); + } + function continuationCommentInside(code) { + if (code === 45) { + effects.consume(code); + return continuationDeclarationInside; + } + return continuation(code); + } + function continuationRawTagOpen(code) { + if (code === 47) { + effects.consume(code); + buffer2 = ""; + return continuationRawEndTag; + } + return continuation(code); + } + function continuationRawEndTag(code) { + if (code === 62) { + const name = buffer2.toLowerCase(); + if (htmlRawNames.includes(name)) { + effects.consume(code); + return continuationClose; + } + return continuation(code); + } + if (asciiAlpha(code) && buffer2.length < 8) { + effects.consume(code); + buffer2 += String.fromCharCode(code); + return continuationRawEndTag; + } + return continuation(code); + } + function continuationCdataInside(code) { + if (code === 93) { + effects.consume(code); + return continuationDeclarationInside; + } + return continuation(code); + } + function continuationDeclarationInside(code) { + if (code === 62) { + effects.consume(code); + return continuationClose; + } + if (code === 45 && marker === 2) { + effects.consume(code); + return continuationDeclarationInside; + } + return continuation(code); + } + function continuationClose(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("htmlFlowData"); + return continuationAfter(code); + } + effects.consume(code); + return continuationClose; + } + function continuationAfter(code) { + effects.exit("htmlFlow"); + return ok2(code); + } +} +function tokenizeNonLazyContinuationStart(effects, ok2, nok) { + const self2 = this; + return start; + function start(code) { + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return after; + } + return nok(code); + } + function after(code) { + return self2.parser.lazy[self2.now().line] ? nok(code) : ok2(code); + } +} +function tokenizeBlankLineBefore(effects, ok2, nok) { + return start; + function start(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return effects.attempt(blankLine, ok2, nok); + } +} + +// node_modules/micromark-core-commonmark/lib/html-text.js +var htmlText = { + name: "htmlText", + tokenize: tokenizeHtmlText +}; +function tokenizeHtmlText(effects, ok2, nok) { + const self2 = this; + let marker; + let index2; + let returnState; + return start; + function start(code) { + effects.enter("htmlText"); + effects.enter("htmlTextData"); + effects.consume(code); + return open; + } + function open(code) { + if (code === 33) { + effects.consume(code); + return declarationOpen; + } + if (code === 47) { + effects.consume(code); + return tagCloseStart; + } + if (code === 63) { + effects.consume(code); + return instruction; + } + if (asciiAlpha(code)) { + effects.consume(code); + return tagOpen; + } + return nok(code); + } + function declarationOpen(code) { + if (code === 45) { + effects.consume(code); + return commentOpenInside; + } + if (code === 91) { + effects.consume(code); + index2 = 0; + return cdataOpenInside; + } + if (asciiAlpha(code)) { + effects.consume(code); + return declaration; + } + return nok(code); + } + function commentOpenInside(code) { + if (code === 45) { + effects.consume(code); + return commentEnd; + } + return nok(code); + } + function comment(code) { + if (code === null) { + return nok(code); + } + if (code === 45) { + effects.consume(code); + return commentClose; + } + if (markdownLineEnding(code)) { + returnState = comment; + return lineEndingBefore(code); + } + effects.consume(code); + return comment; + } + function commentClose(code) { + if (code === 45) { + effects.consume(code); + return commentEnd; + } + return comment(code); + } + function commentEnd(code) { + return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code); + } + function cdataOpenInside(code) { + const value = "CDATA["; + if (code === value.charCodeAt(index2++)) { + effects.consume(code); + return index2 === value.length ? cdata : cdataOpenInside; + } + return nok(code); + } + function cdata(code) { + if (code === null) { + return nok(code); + } + if (code === 93) { + effects.consume(code); + return cdataClose; + } + if (markdownLineEnding(code)) { + returnState = cdata; + return lineEndingBefore(code); + } + effects.consume(code); + return cdata; + } + function cdataClose(code) { + if (code === 93) { + effects.consume(code); + return cdataEnd; + } + return cdata(code); + } + function cdataEnd(code) { + if (code === 62) { + return end(code); + } + if (code === 93) { + effects.consume(code); + return cdataEnd; + } + return cdata(code); + } + function declaration(code) { + if (code === null || code === 62) { + return end(code); + } + if (markdownLineEnding(code)) { + returnState = declaration; + return lineEndingBefore(code); + } + effects.consume(code); + return declaration; + } + function instruction(code) { + if (code === null) { + return nok(code); + } + if (code === 63) { + effects.consume(code); + return instructionClose; + } + if (markdownLineEnding(code)) { + returnState = instruction; + return lineEndingBefore(code); + } + effects.consume(code); + return instruction; + } + function instructionClose(code) { + return code === 62 ? end(code) : instruction(code); + } + function tagCloseStart(code) { + if (asciiAlpha(code)) { + effects.consume(code); + return tagClose; + } + return nok(code); + } + function tagClose(code) { + if (code === 45 || asciiAlphanumeric(code)) { + effects.consume(code); + return tagClose; + } + return tagCloseBetween(code); + } + function tagCloseBetween(code) { + if (markdownLineEnding(code)) { + returnState = tagCloseBetween; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagCloseBetween; + } + return end(code); + } + function tagOpen(code) { + if (code === 45 || asciiAlphanumeric(code)) { + effects.consume(code); + return tagOpen; + } + if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + return tagOpenBetween(code); + } + return nok(code); + } + function tagOpenBetween(code) { + if (code === 47) { + effects.consume(code); + return end; + } + if (code === 58 || code === 95 || asciiAlpha(code)) { + effects.consume(code); + return tagOpenAttributeName; + } + if (markdownLineEnding(code)) { + returnState = tagOpenBetween; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagOpenBetween; + } + return end(code); + } + function tagOpenAttributeName(code) { + if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) { + effects.consume(code); + return tagOpenAttributeName; + } + return tagOpenAttributeNameAfter(code); + } + function tagOpenAttributeNameAfter(code) { + if (code === 61) { + effects.consume(code); + return tagOpenAttributeValueBefore; + } + if (markdownLineEnding(code)) { + returnState = tagOpenAttributeNameAfter; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagOpenAttributeNameAfter; + } + return tagOpenBetween(code); + } + function tagOpenAttributeValueBefore(code) { + if (code === null || code === 60 || code === 61 || code === 62 || code === 96) { + return nok(code); + } + if (code === 34 || code === 39) { + effects.consume(code); + marker = code; + return tagOpenAttributeValueQuoted; + } + if (markdownLineEnding(code)) { + returnState = tagOpenAttributeValueBefore; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagOpenAttributeValueBefore; + } + effects.consume(code); + return tagOpenAttributeValueUnquoted; + } + function tagOpenAttributeValueQuoted(code) { + if (code === marker) { + effects.consume(code); + marker = void 0; + return tagOpenAttributeValueQuotedAfter; + } + if (code === null) { + return nok(code); + } + if (markdownLineEnding(code)) { + returnState = tagOpenAttributeValueQuoted; + return lineEndingBefore(code); + } + effects.consume(code); + return tagOpenAttributeValueQuoted; + } + function tagOpenAttributeValueUnquoted(code) { + if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) { + return nok(code); + } + if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + return tagOpenBetween(code); + } + effects.consume(code); + return tagOpenAttributeValueUnquoted; + } + function tagOpenAttributeValueQuotedAfter(code) { + if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + return tagOpenBetween(code); + } + return nok(code); + } + function end(code) { + if (code === 62) { + effects.consume(code); + effects.exit("htmlTextData"); + effects.exit("htmlText"); + return ok2; + } + return nok(code); + } + function lineEndingBefore(code) { + effects.exit("htmlTextData"); + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return lineEndingAfter; + } + function lineEndingAfter(code) { + return markdownSpace(code) ? factorySpace( + effects, + lineEndingAfterPrefix, + "linePrefix", + self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + )(code) : lineEndingAfterPrefix(code); + } + function lineEndingAfterPrefix(code) { + effects.enter("htmlTextData"); + return returnState(code); + } +} + +// node_modules/micromark-core-commonmark/lib/label-end.js +var labelEnd = { + name: "labelEnd", + tokenize: tokenizeLabelEnd, + resolveTo: resolveToLabelEnd, + resolveAll: resolveAllLabelEnd +}; +var resourceConstruct = { + tokenize: tokenizeResource +}; +var referenceFullConstruct = { + tokenize: tokenizeReferenceFull +}; +var referenceCollapsedConstruct = { + tokenize: tokenizeReferenceCollapsed +}; +function resolveAllLabelEnd(events) { + let index2 = -1; + while (++index2 < events.length) { + const token = events[index2][1]; + if (token.type === "labelImage" || token.type === "labelLink" || token.type === "labelEnd") { + events.splice(index2 + 1, token.type === "labelImage" ? 4 : 2); + token.type = "data"; + index2++; + } + } + return events; +} +function resolveToLabelEnd(events, context) { + let index2 = events.length; + let offset = 0; + let token; + let open; + let close; + let media; + while (index2--) { + token = events[index2][1]; + if (open) { + if (token.type === "link" || token.type === "labelLink" && token._inactive) { + break; + } + if (events[index2][0] === "enter" && token.type === "labelLink") { + token._inactive = true; + } + } else if (close) { + if (events[index2][0] === "enter" && (token.type === "labelImage" || token.type === "labelLink") && !token._balanced) { + open = index2; + if (token.type !== "labelLink") { + offset = 2; + break; + } + } + } else if (token.type === "labelEnd") { + close = index2; + } + } + const group = { + type: events[open][1].type === "labelLink" ? "link" : "image", + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + }; + const label = { + type: "label", + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[close][1].end) + }; + const text3 = { + type: "labelText", + start: Object.assign({}, events[open + offset + 2][1].end), + end: Object.assign({}, events[close - 2][1].start) + }; + media = [ + ["enter", group, context], + ["enter", label, context] + ]; + media = push(media, events.slice(open + 1, open + offset + 3)); + media = push(media, [["enter", text3, context]]); + media = push( + media, + resolveAll( + context.parser.constructs.insideSpan.null, + events.slice(open + offset + 4, close - 3), + context + ) + ); + media = push(media, [ + ["exit", text3, context], + events[close - 2], + events[close - 1], + ["exit", label, context] + ]); + media = push(media, events.slice(close + 1)); + media = push(media, [["exit", group, context]]); + splice(events, open, events.length, media); + return events; +} +function tokenizeLabelEnd(effects, ok2, nok) { + const self2 = this; + let index2 = self2.events.length; + let labelStart; + let defined; + while (index2--) { + if ((self2.events[index2][1].type === "labelImage" || self2.events[index2][1].type === "labelLink") && !self2.events[index2][1]._balanced) { + labelStart = self2.events[index2][1]; + break; + } + } + return start; + function start(code) { + if (!labelStart) { + return nok(code); + } + if (labelStart._inactive) { + return labelEndNok(code); + } + defined = self2.parser.defined.includes( + normalizeIdentifier( + self2.sliceSerialize({ + start: labelStart.end, + end: self2.now() + }) + ) + ); + effects.enter("labelEnd"); + effects.enter("labelMarker"); + effects.consume(code); + effects.exit("labelMarker"); + effects.exit("labelEnd"); + return after; + } + function after(code) { + if (code === 40) { + return effects.attempt( + resourceConstruct, + labelEndOk, + defined ? labelEndOk : labelEndNok + )(code); + } + if (code === 91) { + return effects.attempt( + referenceFullConstruct, + labelEndOk, + defined ? referenceNotFull : labelEndNok + )(code); + } + return defined ? labelEndOk(code) : labelEndNok(code); + } + function referenceNotFull(code) { + return effects.attempt( + referenceCollapsedConstruct, + labelEndOk, + labelEndNok + )(code); + } + function labelEndOk(code) { + return ok2(code); + } + function labelEndNok(code) { + labelStart._balanced = true; + return nok(code); + } +} +function tokenizeResource(effects, ok2, nok) { + return resourceStart; + function resourceStart(code) { + effects.enter("resource"); + effects.enter("resourceMarker"); + effects.consume(code); + effects.exit("resourceMarker"); + return resourceBefore; + } + function resourceBefore(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code); + } + function resourceOpen(code) { + if (code === 41) { + return resourceEnd(code); + } + return factoryDestination( + effects, + resourceDestinationAfter, + resourceDestinationMissing, + "resourceDestination", + "resourceDestinationLiteral", + "resourceDestinationLiteralMarker", + "resourceDestinationRaw", + "resourceDestinationString", + 32 + )(code); + } + function resourceDestinationAfter(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code); + } + function resourceDestinationMissing(code) { + return nok(code); + } + function resourceBetween(code) { + if (code === 34 || code === 39 || code === 40) { + return factoryTitle( + effects, + resourceTitleAfter, + nok, + "resourceTitle", + "resourceTitleMarker", + "resourceTitleString" + )(code); + } + return resourceEnd(code); + } + function resourceTitleAfter(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code); + } + function resourceEnd(code) { + if (code === 41) { + effects.enter("resourceMarker"); + effects.consume(code); + effects.exit("resourceMarker"); + effects.exit("resource"); + return ok2; + } + return nok(code); + } +} +function tokenizeReferenceFull(effects, ok2, nok) { + const self2 = this; + return referenceFull; + function referenceFull(code) { + return factoryLabel.call( + self2, + effects, + referenceFullAfter, + referenceFullMissing, + "reference", + "referenceMarker", + "referenceString" + )(code); + } + function referenceFullAfter(code) { + return self2.parser.defined.includes( + normalizeIdentifier( + self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1) + ) + ) ? ok2(code) : nok(code); + } + function referenceFullMissing(code) { + return nok(code); + } +} +function tokenizeReferenceCollapsed(effects, ok2, nok) { + return referenceCollapsedStart; + function referenceCollapsedStart(code) { + effects.enter("reference"); + effects.enter("referenceMarker"); + effects.consume(code); + effects.exit("referenceMarker"); + return referenceCollapsedOpen; + } + function referenceCollapsedOpen(code) { + if (code === 93) { + effects.enter("referenceMarker"); + effects.consume(code); + effects.exit("referenceMarker"); + effects.exit("reference"); + return ok2; + } + return nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/label-start-image.js +var labelStartImage = { + name: "labelStartImage", + tokenize: tokenizeLabelStartImage, + resolveAll: labelEnd.resolveAll +}; +function tokenizeLabelStartImage(effects, ok2, nok) { + const self2 = this; + return start; + function start(code) { + effects.enter("labelImage"); + effects.enter("labelImageMarker"); + effects.consume(code); + effects.exit("labelImageMarker"); + return open; + } + function open(code) { + if (code === 91) { + effects.enter("labelMarker"); + effects.consume(code); + effects.exit("labelMarker"); + effects.exit("labelImage"); + return after; + } + return nok(code); + } + function after(code) { + return code === 94 && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code) : ok2(code); + } +} + +// node_modules/micromark-core-commonmark/lib/label-start-link.js +var labelStartLink = { + name: "labelStartLink", + tokenize: tokenizeLabelStartLink, + resolveAll: labelEnd.resolveAll +}; +function tokenizeLabelStartLink(effects, ok2, nok) { + const self2 = this; + return start; + function start(code) { + effects.enter("labelLink"); + effects.enter("labelMarker"); + effects.consume(code); + effects.exit("labelMarker"); + effects.exit("labelLink"); + return after; + } + function after(code) { + return code === 94 && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code) : ok2(code); + } +} + +// node_modules/micromark-core-commonmark/lib/line-ending.js +var lineEnding = { + name: "lineEnding", + tokenize: tokenizeLineEnding +}; +function tokenizeLineEnding(effects, ok2) { + return start; + function start(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, ok2, "linePrefix"); + } +} + +// node_modules/micromark-core-commonmark/lib/thematic-break.js +var thematicBreak = { + name: "thematicBreak", + tokenize: tokenizeThematicBreak +}; +function tokenizeThematicBreak(effects, ok2, nok) { + let size = 0; + let marker; + return start; + function start(code) { + effects.enter("thematicBreak"); + return before(code); + } + function before(code) { + marker = code; + return atBreak(code); + } + function atBreak(code) { + if (code === marker) { + effects.enter("thematicBreakSequence"); + return sequence(code); + } + if (size >= 3 && (code === null || markdownLineEnding(code))) { + effects.exit("thematicBreak"); + return ok2(code); + } + return nok(code); + } + function sequence(code) { + if (code === marker) { + effects.consume(code); + size++; + return sequence; + } + effects.exit("thematicBreakSequence"); + return markdownSpace(code) ? factorySpace(effects, atBreak, "whitespace")(code) : atBreak(code); + } +} + +// node_modules/micromark-core-commonmark/lib/list.js +var list = { + name: "list", + tokenize: tokenizeListStart, + continuation: { + tokenize: tokenizeListContinuation + }, + exit: tokenizeListEnd +}; +var listItemPrefixWhitespaceConstruct = { + tokenize: tokenizeListItemPrefixWhitespace, + partial: true +}; +var indentConstruct = { + tokenize: tokenizeIndent, + partial: true +}; +function tokenizeListStart(effects, ok2, nok) { + const self2 = this; + const tail = self2.events[self2.events.length - 1]; + let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; + let size = 0; + return start; + function start(code) { + const kind = self2.containerState.type || (code === 42 || code === 43 || code === 45 ? "listUnordered" : "listOrdered"); + if (kind === "listUnordered" ? !self2.containerState.marker || code === self2.containerState.marker : asciiDigit(code)) { + if (!self2.containerState.type) { + self2.containerState.type = kind; + effects.enter(kind, { + _container: true + }); + } + if (kind === "listUnordered") { + effects.enter("listItemPrefix"); + return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code); + } + if (!self2.interrupt || code === 49) { + effects.enter("listItemPrefix"); + effects.enter("listItemValue"); + return inside(code); + } + } + return nok(code); + } + function inside(code) { + if (asciiDigit(code) && ++size < 10) { + effects.consume(code); + return inside; + } + if ((!self2.interrupt || size < 2) && (self2.containerState.marker ? code === self2.containerState.marker : code === 41 || code === 46)) { + effects.exit("listItemValue"); + return atMarker(code); + } + return nok(code); + } + function atMarker(code) { + effects.enter("listItemMarker"); + effects.consume(code); + effects.exit("listItemMarker"); + self2.containerState.marker = self2.containerState.marker || code; + return effects.check( + blankLine, + // Can’t be empty when interrupting. + self2.interrupt ? nok : onBlank, + effects.attempt( + listItemPrefixWhitespaceConstruct, + endOfPrefix, + otherPrefix + ) + ); + } + function onBlank(code) { + self2.containerState.initialBlankLine = true; + initialSize++; + return endOfPrefix(code); + } + function otherPrefix(code) { + if (markdownSpace(code)) { + effects.enter("listItemPrefixWhitespace"); + effects.consume(code); + effects.exit("listItemPrefixWhitespace"); + return endOfPrefix; + } + return nok(code); + } + function endOfPrefix(code) { + self2.containerState.size = initialSize + self2.sliceSerialize(effects.exit("listItemPrefix"), true).length; + return ok2(code); + } +} +function tokenizeListContinuation(effects, ok2, nok) { + const self2 = this; + self2.containerState._closeFlow = void 0; + return effects.check(blankLine, onBlank, notBlank); + function onBlank(code) { + self2.containerState.furtherBlankLines = self2.containerState.furtherBlankLines || self2.containerState.initialBlankLine; + return factorySpace( + effects, + ok2, + "listItemIndent", + self2.containerState.size + 1 + )(code); + } + function notBlank(code) { + if (self2.containerState.furtherBlankLines || !markdownSpace(code)) { + self2.containerState.furtherBlankLines = void 0; + self2.containerState.initialBlankLine = void 0; + return notInCurrentItem(code); + } + self2.containerState.furtherBlankLines = void 0; + self2.containerState.initialBlankLine = void 0; + return effects.attempt(indentConstruct, ok2, notInCurrentItem)(code); + } + function notInCurrentItem(code) { + self2.containerState._closeFlow = true; + self2.interrupt = void 0; + return factorySpace( + effects, + effects.attempt(list, ok2, nok), + "linePrefix", + self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + )(code); + } +} +function tokenizeIndent(effects, ok2, nok) { + const self2 = this; + return factorySpace( + effects, + afterPrefix, + "listItemIndent", + self2.containerState.size + 1 + ); + function afterPrefix(code) { + const tail = self2.events[self2.events.length - 1]; + return tail && tail[1].type === "listItemIndent" && tail[2].sliceSerialize(tail[1], true).length === self2.containerState.size ? ok2(code) : nok(code); + } +} +function tokenizeListEnd(effects) { + effects.exit(this.containerState.type); +} +function tokenizeListItemPrefixWhitespace(effects, ok2, nok) { + const self2 = this; + return factorySpace( + effects, + afterPrefix, + "listItemPrefixWhitespace", + self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + 1 + ); + function afterPrefix(code) { + const tail = self2.events[self2.events.length - 1]; + return !markdownSpace(code) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok2(code) : nok(code); + } +} + +// node_modules/micromark-core-commonmark/lib/setext-underline.js +var setextUnderline = { + name: "setextUnderline", + tokenize: tokenizeSetextUnderline, + resolveTo: resolveToSetextUnderline +}; +function resolveToSetextUnderline(events, context) { + let index2 = events.length; + let content3; + let text3; + let definition2; + while (index2--) { + if (events[index2][0] === "enter") { + if (events[index2][1].type === "content") { + content3 = index2; + break; + } + if (events[index2][1].type === "paragraph") { + text3 = index2; + } + } else { + if (events[index2][1].type === "content") { + events.splice(index2, 1); + } + if (!definition2 && events[index2][1].type === "definition") { + definition2 = index2; + } + } + } + const heading = { + type: "setextHeading", + start: Object.assign({}, events[text3][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + }; + events[text3][1].type = "setextHeadingText"; + if (definition2) { + events.splice(text3, 0, ["enter", heading, context]); + events.splice(definition2 + 1, 0, ["exit", events[content3][1], context]); + events[content3][1].end = Object.assign({}, events[definition2][1].end); + } else { + events[content3][1] = heading; + } + events.push(["exit", heading, context]); + return events; +} +function tokenizeSetextUnderline(effects, ok2, nok) { + const self2 = this; + let marker; + return start; + function start(code) { + let index2 = self2.events.length; + let paragraph; + while (index2--) { + if (self2.events[index2][1].type !== "lineEnding" && self2.events[index2][1].type !== "linePrefix" && self2.events[index2][1].type !== "content") { + paragraph = self2.events[index2][1].type === "paragraph"; + break; + } + } + if (!self2.parser.lazy[self2.now().line] && (self2.interrupt || paragraph)) { + effects.enter("setextHeadingLine"); + marker = code; + return before(code); + } + return nok(code); + } + function before(code) { + effects.enter("setextHeadingLineSequence"); + return inside(code); + } + function inside(code) { + if (code === marker) { + effects.consume(code); + return inside; + } + effects.exit("setextHeadingLineSequence"); + return markdownSpace(code) ? factorySpace(effects, after, "lineSuffix")(code) : after(code); + } + function after(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("setextHeadingLine"); + return ok2(code); + } + return nok(code); + } +} + +// node_modules/micromark/lib/initialize/flow.js +var flow = { + tokenize: initializeFlow +}; +function initializeFlow(effects) { + const self2 = this; + const initial = effects.attempt( + // Try to parse a blank line. + blankLine, + atBlankEnding, + // Try to parse initial flow (essentially, only code). + effects.attempt( + this.parser.constructs.flowInitial, + afterConstruct, + factorySpace( + effects, + effects.attempt( + this.parser.constructs.flow, + afterConstruct, + effects.attempt(content2, afterConstruct) + ), + "linePrefix" + ) + ) + ); + return initial; + function atBlankEnding(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("lineEndingBlank"); + effects.consume(code); + effects.exit("lineEndingBlank"); + self2.currentConstruct = void 0; + return initial; + } + function afterConstruct(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + self2.currentConstruct = void 0; + return initial; + } +} + +// node_modules/micromark/lib/initialize/text.js +var resolver = { + resolveAll: createResolver() +}; +var string = initializeFactory("string"); +var text = initializeFactory("text"); +function initializeFactory(field) { + return { + tokenize: initializeText, + resolveAll: createResolver( + field === "text" ? resolveAllLineSuffixes : void 0 + ) + }; + function initializeText(effects) { + const self2 = this; + const constructs2 = this.parser.constructs[field]; + const text3 = effects.attempt(constructs2, start, notText); + return start; + function start(code) { + return atBreak(code) ? text3(code) : notText(code); + } + function notText(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("data"); + effects.consume(code); + return data; + } + function data(code) { + if (atBreak(code)) { + effects.exit("data"); + return text3(code); + } + effects.consume(code); + return data; + } + function atBreak(code) { + if (code === null) { + return true; + } + const list2 = constructs2[code]; + let index2 = -1; + if (list2) { + while (++index2 < list2.length) { + const item = list2[index2]; + if (!item.previous || item.previous.call(self2, self2.previous)) { + return true; + } + } + } + return false; + } + } +} +function createResolver(extraResolver) { + return resolveAllText; + function resolveAllText(events, context) { + let index2 = -1; + let enter; + while (++index2 <= events.length) { + if (enter === void 0) { + if (events[index2] && events[index2][1].type === "data") { + enter = index2; + index2++; + } + } else if (!events[index2] || events[index2][1].type !== "data") { + if (index2 !== enter + 2) { + events[enter][1].end = events[index2 - 1][1].end; + events.splice(enter + 2, index2 - enter - 2); + index2 = enter + 2; + } + enter = void 0; + } + } + return extraResolver ? extraResolver(events, context) : events; + } +} +function resolveAllLineSuffixes(events, context) { + let eventIndex = 0; + while (++eventIndex <= events.length) { + if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") { + const data = events[eventIndex - 1][1]; + const chunks = context.sliceStream(data); + let index2 = chunks.length; + let bufferIndex = -1; + let size = 0; + let tabs; + while (index2--) { + const chunk = chunks[index2]; + if (typeof chunk === "string") { + bufferIndex = chunk.length; + while (chunk.charCodeAt(bufferIndex - 1) === 32) { + size++; + bufferIndex--; + } + if (bufferIndex) + break; + bufferIndex = -1; + } else if (chunk === -2) { + tabs = true; + size++; + } else if (chunk === -1) { + } else { + index2++; + break; + } + } + if (size) { + const token = { + type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing", + start: { + line: data.end.line, + column: data.end.column - size, + offset: data.end.offset - size, + _index: data.start._index + index2, + _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex + }, + end: Object.assign({}, data.end) + }; + data.end = Object.assign({}, token.start); + if (data.start.offset === data.end.offset) { + Object.assign(data, token); + } else { + events.splice( + eventIndex, + 0, + ["enter", token, context], + ["exit", token, context] + ); + eventIndex += 2; + } + } + eventIndex++; + } + } + return events; +} + +// node_modules/micromark/lib/create-tokenizer.js +function createTokenizer(parser, initialize, from) { + let point3 = Object.assign( + from ? Object.assign({}, from) : { + line: 1, + column: 1, + offset: 0 + }, + { + _index: 0, + _bufferIndex: -1 + } + ); + const columnStart = {}; + const resolveAllConstructs = []; + let chunks = []; + let stack = []; + let consumed = true; + const effects = { + consume, + enter, + exit: exit2, + attempt: constructFactory(onsuccessfulconstruct), + check: constructFactory(onsuccessfulcheck), + interrupt: constructFactory(onsuccessfulcheck, { + interrupt: true + }) + }; + const context = { + previous: null, + code: null, + containerState: {}, + events: [], + parser, + sliceStream, + sliceSerialize, + now, + defineSkip, + write + }; + let state = initialize.tokenize.call(context, effects); + let expectedCode; + if (initialize.resolveAll) { + resolveAllConstructs.push(initialize); + } + return context; + function write(slice) { + chunks = push(chunks, slice); + main(); + if (chunks[chunks.length - 1] !== null) { + return []; + } + addResult(initialize, 0); + context.events = resolveAll(resolveAllConstructs, context.events, context); + return context.events; + } + function sliceSerialize(token, expandTabs) { + return serializeChunks(sliceStream(token), expandTabs); + } + function sliceStream(token) { + return sliceChunks(chunks, token); + } + function now() { + const { line, column, offset, _index, _bufferIndex } = point3; + return { + line, + column, + offset, + _index, + _bufferIndex + }; + } + function defineSkip(value) { + columnStart[value.line] = value.column; + accountForPotentialSkip(); + } + function main() { + let chunkIndex; + while (point3._index < chunks.length) { + const chunk = chunks[point3._index]; + if (typeof chunk === "string") { + chunkIndex = point3._index; + if (point3._bufferIndex < 0) { + point3._bufferIndex = 0; + } + while (point3._index === chunkIndex && point3._bufferIndex < chunk.length) { + go(chunk.charCodeAt(point3._bufferIndex)); + } + } else { + go(chunk); + } + } + } + function go(code) { + consumed = void 0; + expectedCode = code; + state = state(code); + } + function consume(code) { + if (markdownLineEnding(code)) { + point3.line++; + point3.column = 1; + point3.offset += code === -3 ? 2 : 1; + accountForPotentialSkip(); + } else if (code !== -1) { + point3.column++; + point3.offset++; + } + if (point3._bufferIndex < 0) { + point3._index++; + } else { + point3._bufferIndex++; + if (point3._bufferIndex === chunks[point3._index].length) { + point3._bufferIndex = -1; + point3._index++; + } + } + context.previous = code; + consumed = true; + } + function enter(type, fields) { + const token = fields || {}; + token.type = type; + token.start = now(); + context.events.push(["enter", token, context]); + stack.push(token); + return token; + } + function exit2(type) { + const token = stack.pop(); + token.end = now(); + context.events.push(["exit", token, context]); + return token; + } + function onsuccessfulconstruct(construct, info) { + addResult(construct, info.from); + } + function onsuccessfulcheck(_2, info) { + info.restore(); + } + function constructFactory(onreturn, fields) { + return hook; + function hook(constructs2, returnState, bogusState) { + let listOfConstructs; + let constructIndex; + let currentConstruct; + let info; + return Array.isArray(constructs2) ? handleListOfConstructs(constructs2) : "tokenize" in constructs2 ? ( + // @ts-expect-error Looks like a construct. + handleListOfConstructs([constructs2]) + ) : handleMapOfConstructs(constructs2); + function handleMapOfConstructs(map) { + return start; + function start(code) { + const def = code !== null && map[code]; + const all2 = code !== null && map.null; + const list2 = [ + // To do: add more extension tests. + /* c8 ignore next 2 */ + ...Array.isArray(def) ? def : def ? [def] : [], + ...Array.isArray(all2) ? all2 : all2 ? [all2] : [] + ]; + return handleListOfConstructs(list2)(code); + } + } + function handleListOfConstructs(list2) { + listOfConstructs = list2; + constructIndex = 0; + if (list2.length === 0) { + return bogusState; + } + return handleConstruct(list2[constructIndex]); + } + function handleConstruct(construct) { + return start; + function start(code) { + info = store(); + currentConstruct = construct; + if (!construct.partial) { + context.currentConstruct = construct; + } + if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) { + return nok(code); + } + return construct.tokenize.call( + // If we do have fields, create an object w/ `context` as its + // prototype. + // This allows a “live binding”, which is needed for `interrupt`. + fields ? Object.assign(Object.create(context), fields) : context, + effects, + ok2, + nok + )(code); + } + } + function ok2(code) { + consumed = true; + onreturn(currentConstruct, info); + return returnState; + } + function nok(code) { + consumed = true; + info.restore(); + if (++constructIndex < listOfConstructs.length) { + return handleConstruct(listOfConstructs[constructIndex]); + } + return bogusState; + } + } + } + function addResult(construct, from2) { + if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { + resolveAllConstructs.push(construct); + } + if (construct.resolve) { + splice( + context.events, + from2, + context.events.length - from2, + construct.resolve(context.events.slice(from2), context) + ); + } + if (construct.resolveTo) { + context.events = construct.resolveTo(context.events, context); + } + } + function store() { + const startPoint = now(); + const startPrevious = context.previous; + const startCurrentConstruct = context.currentConstruct; + const startEventsIndex = context.events.length; + const startStack = Array.from(stack); + return { + restore, + from: startEventsIndex + }; + function restore() { + point3 = startPoint; + context.previous = startPrevious; + context.currentConstruct = startCurrentConstruct; + context.events.length = startEventsIndex; + stack = startStack; + accountForPotentialSkip(); + } + } + function accountForPotentialSkip() { + if (point3.line in columnStart && point3.column < 2) { + point3.column = columnStart[point3.line]; + point3.offset += columnStart[point3.line] - 1; + } + } +} +function sliceChunks(chunks, token) { + const startIndex = token.start._index; + const startBufferIndex = token.start._bufferIndex; + const endIndex = token.end._index; + const endBufferIndex = token.end._bufferIndex; + let view; + if (startIndex === endIndex) { + view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; + } else { + view = chunks.slice(startIndex, endIndex); + if (startBufferIndex > -1) { + const head = view[0]; + if (typeof head === "string") { + view[0] = head.slice(startBufferIndex); + } else { + view.shift(); + } + } + if (endBufferIndex > 0) { + view.push(chunks[endIndex].slice(0, endBufferIndex)); + } + } + return view; +} +function serializeChunks(chunks, expandTabs) { + let index2 = -1; + const result = []; + let atTab; + while (++index2 < chunks.length) { + const chunk = chunks[index2]; + let value; + if (typeof chunk === "string") { + value = chunk; + } else + switch (chunk) { + case -5: { + value = "\r"; + break; + } + case -4: { + value = "\n"; + break; + } + case -3: { + value = "\r\n"; + break; + } + case -2: { + value = expandTabs ? " " : " "; + break; + } + case -1: { + if (!expandTabs && atTab) + continue; + value = " "; + break; + } + default: { + value = String.fromCharCode(chunk); + } + } + atTab = chunk === -2; + result.push(value); + } + return result.join(""); +} + +// node_modules/micromark/lib/constructs.js +var constructs_exports = {}; +__export(constructs_exports, { + attentionMarkers: () => attentionMarkers, + contentInitial: () => contentInitial, + disable: () => disable, + document: () => document3, + flow: () => flow2, + flowInitial: () => flowInitial, + insideSpan: () => insideSpan, + string: () => string2, + text: () => text2 +}); +var document3 = { + [42]: list, + [43]: list, + [45]: list, + [48]: list, + [49]: list, + [50]: list, + [51]: list, + [52]: list, + [53]: list, + [54]: list, + [55]: list, + [56]: list, + [57]: list, + [62]: blockQuote +}; +var contentInitial = { + [91]: definition +}; +var flowInitial = { + [-2]: codeIndented, + [-1]: codeIndented, + [32]: codeIndented +}; +var flow2 = { + [35]: headingAtx, + [42]: thematicBreak, + [45]: [setextUnderline, thematicBreak], + [60]: htmlFlow, + [61]: setextUnderline, + [95]: thematicBreak, + [96]: codeFenced, + [126]: codeFenced +}; +var string2 = { + [38]: characterReference, + [92]: characterEscape +}; +var text2 = { + [-5]: lineEnding, + [-4]: lineEnding, + [-3]: lineEnding, + [33]: labelStartImage, + [38]: characterReference, + [42]: attention, + [60]: [autolink, htmlText], + [91]: labelStartLink, + [92]: [hardBreakEscape, characterEscape], + [93]: labelEnd, + [95]: attention, + [96]: codeText +}; +var insideSpan = { + null: [attention, resolver] +}; +var attentionMarkers = { + null: [42, 95] +}; +var disable = { + null: [] +}; + +// node_modules/micromark/lib/parse.js +function parse(options) { + const settings = options || {}; + const constructs2 = ( + /** @type {FullNormalizedExtension} */ + combineExtensions([constructs_exports, ...settings.extensions || []]) + ); + const parser = { + defined: [], + lazy: {}, + constructs: constructs2, + content: create(content), + document: create(document2), + flow: create(flow), + string: create(string), + text: create(text) + }; + return parser; + function create(initial) { + return creator; + function creator(from) { + return createTokenizer(parser, initial, from); + } + } +} + +// node_modules/micromark/lib/preprocess.js +var search = /[\0\t\n\r]/g; +function preprocess() { + let column = 1; + let buffer2 = ""; + let start = true; + let atCarriageReturn; + return preprocessor; + function preprocessor(value, encoding, end) { + const chunks = []; + let match; + let next; + let startPosition; + let endPosition; + let code; + value = buffer2 + value.toString(encoding); + startPosition = 0; + buffer2 = ""; + if (start) { + if (value.charCodeAt(0) === 65279) { + startPosition++; + } + start = void 0; + } + while (startPosition < value.length) { + search.lastIndex = startPosition; + match = search.exec(value); + endPosition = match && match.index !== void 0 ? match.index : value.length; + code = value.charCodeAt(endPosition); + if (!match) { + buffer2 = value.slice(startPosition); + break; + } + if (code === 10 && startPosition === endPosition && atCarriageReturn) { + chunks.push(-3); + atCarriageReturn = void 0; + } else { + if (atCarriageReturn) { + chunks.push(-5); + atCarriageReturn = void 0; + } + if (startPosition < endPosition) { + chunks.push(value.slice(startPosition, endPosition)); + column += endPosition - startPosition; + } + switch (code) { + case 0: { + chunks.push(65533); + column++; + break; + } + case 9: { + next = Math.ceil(column / 4) * 4; + chunks.push(-2); + while (column++ < next) + chunks.push(-1); + break; + } + case 10: { + chunks.push(-4); + column = 1; + break; + } + default: { + atCarriageReturn = true; + column = 1; + } + } + } + startPosition = endPosition + 1; + } + if (end) { + if (atCarriageReturn) + chunks.push(-5); + if (buffer2) + chunks.push(buffer2); + chunks.push(null); + } + return chunks; + } +} + +// node_modules/micromark/lib/postprocess.js +function postprocess(events) { + while (!subtokenize(events)) { + } + return events; +} + +// node_modules/micromark-util-decode-numeric-character-reference/index.js +function decodeNumericCharacterReference(value, base2) { + const code = Number.parseInt(value, base2); + if ( + // C0 except for HT, LF, FF, CR, space. + code < 9 || code === 11 || code > 13 && code < 32 || // Control character (DEL) of C0, and C1 controls. + code > 126 && code < 160 || // Lone high surrogates and low surrogates. + code > 55295 && code < 57344 || // Noncharacters. + code > 64975 && code < 65008 || (code & 65535) === 65535 || (code & 65535) === 65534 || // Out of range + code > 1114111 + ) { + return "\uFFFD"; + } + return String.fromCharCode(code); +} + +// node_modules/micromark-util-decode-string/index.js +var characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi; +function decodeString(value) { + return value.replace(characterEscapeOrReference, decode); +} +function decode($0, $1, $2) { + if ($1) { + return $1; + } + const head = $2.charCodeAt(0); + if (head === 35) { + const head2 = $2.charCodeAt(1); + const hex = head2 === 120 || head2 === 88; + return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10); + } + return decodeNamedCharacterReference($2) || $0; +} + +// node_modules/mdast-util-from-markdown/lib/index.js +var own2 = {}.hasOwnProperty; +var fromMarkdown = ( + /** + * @type {( + * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) & + * ((value: Value, options?: Options | null | undefined) => Root) + * )} + */ + /** + * @param {Value} value + * @param {Encoding | Options | null | undefined} [encoding] + * @param {Options | null | undefined} [options] + * @returns {Root} + */ + function(value, encoding, options) { + if (typeof encoding !== "string") { + options = encoding; + encoding = void 0; + } + return compiler(options)( + postprocess( + parse(options).document().write(preprocess()(value, encoding, true)) + ) + ); + } +); +function compiler(options) { + const config = { + transforms: [], + canContainEols: ["emphasis", "fragment", "heading", "paragraph", "strong"], + enter: { + autolink: opener(link), + autolinkProtocol: onenterdata, + autolinkEmail: onenterdata, + atxHeading: opener(heading), + blockQuote: opener(blockQuote2), + characterEscape: onenterdata, + characterReference: onenterdata, + codeFenced: opener(codeFlow), + codeFencedFenceInfo: buffer2, + codeFencedFenceMeta: buffer2, + codeIndented: opener(codeFlow, buffer2), + codeText: opener(codeText2, buffer2), + codeTextData: onenterdata, + data: onenterdata, + codeFlowValue: onenterdata, + definition: opener(definition2), + definitionDestinationString: buffer2, + definitionLabelString: buffer2, + definitionTitleString: buffer2, + emphasis: opener(emphasis), + hardBreakEscape: opener(hardBreak), + hardBreakTrailing: opener(hardBreak), + htmlFlow: opener(html, buffer2), + htmlFlowData: onenterdata, + htmlText: opener(html, buffer2), + htmlTextData: onenterdata, + image: opener(image), + label: buffer2, + link: opener(link), + listItem: opener(listItem), + listItemValue: onenterlistitemvalue, + listOrdered: opener(list2, onenterlistordered), + listUnordered: opener(list2), + paragraph: opener(paragraph), + reference: onenterreference, + referenceString: buffer2, + resourceDestinationString: buffer2, + resourceTitleString: buffer2, + setextHeading: opener(heading), + strong: opener(strong), + thematicBreak: opener(thematicBreak2) + }, + exit: { + atxHeading: closer(), + atxHeadingSequence: onexitatxheadingsequence, + autolink: closer(), + autolinkEmail: onexitautolinkemail, + autolinkProtocol: onexitautolinkprotocol, + blockQuote: closer(), + characterEscapeValue: onexitdata, + characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, + characterReferenceMarkerNumeric: onexitcharacterreferencemarker, + characterReferenceValue: onexitcharacterreferencevalue, + codeFenced: closer(onexitcodefenced), + codeFencedFence: onexitcodefencedfence, + codeFencedFenceInfo: onexitcodefencedfenceinfo, + codeFencedFenceMeta: onexitcodefencedfencemeta, + codeFlowValue: onexitdata, + codeIndented: closer(onexitcodeindented), + codeText: closer(onexitcodetext), + codeTextData: onexitdata, + data: onexitdata, + definition: closer(), + definitionDestinationString: onexitdefinitiondestinationstring, + definitionLabelString: onexitdefinitionlabelstring, + definitionTitleString: onexitdefinitiontitlestring, + emphasis: closer(), + hardBreakEscape: closer(onexithardbreak), + hardBreakTrailing: closer(onexithardbreak), + htmlFlow: closer(onexithtmlflow), + htmlFlowData: onexitdata, + htmlText: closer(onexithtmltext), + htmlTextData: onexitdata, + image: closer(onexitimage), + label: onexitlabel, + labelText: onexitlabeltext, + lineEnding: onexitlineending, + link: closer(onexitlink), + listItem: closer(), + listOrdered: closer(), + listUnordered: closer(), + paragraph: closer(), + referenceString: onexitreferencestring, + resourceDestinationString: onexitresourcedestinationstring, + resourceTitleString: onexitresourcetitlestring, + resource: onexitresource, + setextHeading: closer(onexitsetextheading), + setextHeadingLineSequence: onexitsetextheadinglinesequence, + setextHeadingText: onexitsetextheadingtext, + strong: closer(), + thematicBreak: closer() + } + }; + configure(config, (options || {}).mdastExtensions || []); + const data = {}; + return compile; + function compile(events) { + let tree = { + type: "root", + children: [] + }; + const context = { + stack: [tree], + tokenStack: [], + config, + enter, + exit: exit2, + buffer: buffer2, + resume, + setData, + getData + }; + const listStack = []; + let index2 = -1; + while (++index2 < events.length) { + if (events[index2][1].type === "listOrdered" || events[index2][1].type === "listUnordered") { + if (events[index2][0] === "enter") { + listStack.push(index2); + } else { + const tail = listStack.pop(); + index2 = prepareList(events, tail, index2); + } + } + } + index2 = -1; + while (++index2 < events.length) { + const handler = config[events[index2][0]]; + if (own2.call(handler, events[index2][1].type)) { + handler[events[index2][1].type].call( + Object.assign( + { + sliceSerialize: events[index2][2].sliceSerialize + }, + context + ), + events[index2][1] + ); + } + } + if (context.tokenStack.length > 0) { + const tail = context.tokenStack[context.tokenStack.length - 1]; + const handler = tail[1] || defaultOnError; + handler.call(context, void 0, tail[0]); + } + tree.position = { + start: point2( + events.length > 0 ? events[0][1].start : { + line: 1, + column: 1, + offset: 0 + } + ), + end: point2( + events.length > 0 ? events[events.length - 2][1].end : { + line: 1, + column: 1, + offset: 0 + } + ) + }; + index2 = -1; + while (++index2 < config.transforms.length) { + tree = config.transforms[index2](tree) || tree; + } + return tree; + } + function prepareList(events, start, length) { + let index2 = start - 1; + let containerBalance = -1; + let listSpread = false; + let listItem2; + let lineIndex; + let firstBlankLineIndex; + let atMarker; + while (++index2 <= length) { + const event = events[index2]; + if (event[1].type === "listUnordered" || event[1].type === "listOrdered" || event[1].type === "blockQuote") { + if (event[0] === "enter") { + containerBalance++; + } else { + containerBalance--; + } + atMarker = void 0; + } else if (event[1].type === "lineEndingBlank") { + if (event[0] === "enter") { + if (listItem2 && !atMarker && !containerBalance && !firstBlankLineIndex) { + firstBlankLineIndex = index2; + } + atMarker = void 0; + } + } else if (event[1].type === "linePrefix" || event[1].type === "listItemValue" || event[1].type === "listItemMarker" || event[1].type === "listItemPrefix" || event[1].type === "listItemPrefixWhitespace") { + } else { + atMarker = void 0; + } + if (!containerBalance && event[0] === "enter" && event[1].type === "listItemPrefix" || containerBalance === -1 && event[0] === "exit" && (event[1].type === "listUnordered" || event[1].type === "listOrdered")) { + if (listItem2) { + let tailIndex = index2; + lineIndex = void 0; + while (tailIndex--) { + const tailEvent = events[tailIndex]; + if (tailEvent[1].type === "lineEnding" || tailEvent[1].type === "lineEndingBlank") { + if (tailEvent[0] === "exit") + continue; + if (lineIndex) { + events[lineIndex][1].type = "lineEndingBlank"; + listSpread = true; + } + tailEvent[1].type = "lineEnding"; + lineIndex = tailIndex; + } else if (tailEvent[1].type === "linePrefix" || tailEvent[1].type === "blockQuotePrefix" || tailEvent[1].type === "blockQuotePrefixWhitespace" || tailEvent[1].type === "blockQuoteMarker" || tailEvent[1].type === "listItemIndent") { + } else { + break; + } + } + if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) { + listItem2._spread = true; + } + listItem2.end = Object.assign( + {}, + lineIndex ? events[lineIndex][1].start : event[1].end + ); + events.splice(lineIndex || index2, 0, ["exit", listItem2, event[2]]); + index2++; + length++; + } + if (event[1].type === "listItemPrefix") { + listItem2 = { + type: "listItem", + _spread: false, + start: Object.assign({}, event[1].start), + // @ts-expect-error: we’ll add `end` in a second. + end: void 0 + }; + events.splice(index2, 0, ["enter", listItem2, event[2]]); + index2++; + length++; + firstBlankLineIndex = void 0; + atMarker = true; + } + } + } + events[start][1]._spread = listSpread; + return length; + } + function setData(key, value) { + data[key] = value; + } + function getData(key) { + return data[key]; + } + function opener(create, and) { + return open; + function open(token) { + enter.call(this, create(token), token); + if (and) + and.call(this, token); + } + } + function buffer2() { + this.stack.push({ + type: "fragment", + children: [] + }); + } + function enter(node2, token, errorHandler) { + const parent = this.stack[this.stack.length - 1]; + parent.children.push(node2); + this.stack.push(node2); + this.tokenStack.push([token, errorHandler]); + node2.position = { + start: point2(token.start) + }; + return node2; + } + function closer(and) { + return close; + function close(token) { + if (and) + and.call(this, token); + exit2.call(this, token); + } + } + function exit2(token, onExitError) { + const node2 = this.stack.pop(); + const open = this.tokenStack.pop(); + if (!open) { + throw new Error( + "Cannot close `" + token.type + "` (" + stringifyPosition({ + start: token.start, + end: token.end + }) + "): it\u2019s not open" + ); + } else if (open[0].type !== token.type) { + if (onExitError) { + onExitError.call(this, token, open[0]); + } else { + const handler = open[1] || defaultOnError; + handler.call(this, token, open[0]); + } + } + node2.position.end = point2(token.end); + return node2; + } + function resume() { + return toString(this.stack.pop()); + } + function onenterlistordered() { + setData("expectingFirstListItemValue", true); + } + function onenterlistitemvalue(token) { + if (getData("expectingFirstListItemValue")) { + const ancestor = this.stack[this.stack.length - 2]; + ancestor.start = Number.parseInt(this.sliceSerialize(token), 10); + setData("expectingFirstListItemValue"); + } + } + function onexitcodefencedfenceinfo() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.lang = data2; + } + function onexitcodefencedfencemeta() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.meta = data2; + } + function onexitcodefencedfence() { + if (getData("flowCodeInside")) + return; + this.buffer(); + setData("flowCodeInside", true); + } + function onexitcodefenced() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.value = data2.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""); + setData("flowCodeInside"); + } + function onexitcodeindented() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.value = data2.replace(/(\r?\n|\r)$/g, ""); + } + function onexitdefinitionlabelstring(token) { + const label = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.label = label; + node2.identifier = normalizeIdentifier( + this.sliceSerialize(token) + ).toLowerCase(); + } + function onexitdefinitiontitlestring() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.title = data2; + } + function onexitdefinitiondestinationstring() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.url = data2; + } + function onexitatxheadingsequence(token) { + const node2 = this.stack[this.stack.length - 1]; + if (!node2.depth) { + const depth = this.sliceSerialize(token).length; + node2.depth = depth; + } + } + function onexitsetextheadingtext() { + setData("setextHeadingSlurpLineEnding", true); + } + function onexitsetextheadinglinesequence(token) { + const node2 = this.stack[this.stack.length - 1]; + node2.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2; + } + function onexitsetextheading() { + setData("setextHeadingSlurpLineEnding"); + } + function onenterdata(token) { + const node2 = this.stack[this.stack.length - 1]; + let tail = node2.children[node2.children.length - 1]; + if (!tail || tail.type !== "text") { + tail = text3(); + tail.position = { + start: point2(token.start) + }; + node2.children.push(tail); + } + this.stack.push(tail); + } + function onexitdata(token) { + const tail = this.stack.pop(); + tail.value += this.sliceSerialize(token); + tail.position.end = point2(token.end); + } + function onexitlineending(token) { + const context = this.stack[this.stack.length - 1]; + if (getData("atHardBreak")) { + const tail = context.children[context.children.length - 1]; + tail.position.end = point2(token.end); + setData("atHardBreak"); + return; + } + if (!getData("setextHeadingSlurpLineEnding") && config.canContainEols.includes(context.type)) { + onenterdata.call(this, token); + onexitdata.call(this, token); + } + } + function onexithardbreak() { + setData("atHardBreak", true); + } + function onexithtmlflow() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.value = data2; + } + function onexithtmltext() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.value = data2; + } + function onexitcodetext() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.value = data2; + } + function onexitlink() { + const node2 = this.stack[this.stack.length - 1]; + if (getData("inReference")) { + const referenceType = getData("referenceType") || "shortcut"; + node2.type += "Reference"; + node2.referenceType = referenceType; + delete node2.url; + delete node2.title; + } else { + delete node2.identifier; + delete node2.label; + } + setData("referenceType"); + } + function onexitimage() { + const node2 = this.stack[this.stack.length - 1]; + if (getData("inReference")) { + const referenceType = getData("referenceType") || "shortcut"; + node2.type += "Reference"; + node2.referenceType = referenceType; + delete node2.url; + delete node2.title; + } else { + delete node2.identifier; + delete node2.label; + } + setData("referenceType"); + } + function onexitlabeltext(token) { + const string3 = this.sliceSerialize(token); + const ancestor = this.stack[this.stack.length - 2]; + ancestor.label = decodeString(string3); + ancestor.identifier = normalizeIdentifier(string3).toLowerCase(); + } + function onexitlabel() { + const fragment = this.stack[this.stack.length - 1]; + const value = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + setData("inReference", true); + if (node2.type === "link") { + const children = fragment.children; + node2.children = children; + } else { + node2.alt = value; + } + } + function onexitresourcedestinationstring() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.url = data2; + } + function onexitresourcetitlestring() { + const data2 = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.title = data2; + } + function onexitresource() { + setData("inReference"); + } + function onenterreference() { + setData("referenceType", "collapsed"); + } + function onexitreferencestring(token) { + const label = this.resume(); + const node2 = this.stack[this.stack.length - 1]; + node2.label = label; + node2.identifier = normalizeIdentifier( + this.sliceSerialize(token) + ).toLowerCase(); + setData("referenceType", "full"); + } + function onexitcharacterreferencemarker(token) { + setData("characterReferenceType", token.type); + } + function onexitcharacterreferencevalue(token) { + const data2 = this.sliceSerialize(token); + const type = getData("characterReferenceType"); + let value; + if (type) { + value = decodeNumericCharacterReference( + data2, + type === "characterReferenceMarkerNumeric" ? 10 : 16 + ); + setData("characterReferenceType"); + } else { + const result = decodeNamedCharacterReference(data2); + value = result; + } + const tail = this.stack.pop(); + tail.value += value; + tail.position.end = point2(token.end); + } + function onexitautolinkprotocol(token) { + onexitdata.call(this, token); + const node2 = this.stack[this.stack.length - 1]; + node2.url = this.sliceSerialize(token); + } + function onexitautolinkemail(token) { + onexitdata.call(this, token); + const node2 = this.stack[this.stack.length - 1]; + node2.url = "mailto:" + this.sliceSerialize(token); + } + function blockQuote2() { + return { + type: "blockquote", + children: [] + }; + } + function codeFlow() { + return { + type: "code", + lang: null, + meta: null, + value: "" + }; + } + function codeText2() { + return { + type: "inlineCode", + value: "" + }; + } + function definition2() { + return { + type: "definition", + identifier: "", + label: null, + title: null, + url: "" + }; + } + function emphasis() { + return { + type: "emphasis", + children: [] + }; + } + function heading() { + return { + type: "heading", + depth: void 0, + children: [] + }; + } + function hardBreak() { + return { + type: "break" + }; + } + function html() { + return { + type: "html", + value: "" + }; + } + function image() { + return { + type: "image", + title: null, + url: "", + alt: null + }; + } + function link() { + return { + type: "link", + title: null, + url: "", + children: [] + }; + } + function list2(token) { + return { + type: "list", + ordered: token.type === "listOrdered", + start: null, + spread: token._spread, + children: [] + }; + } + function listItem(token) { + return { + type: "listItem", + spread: token._spread, + checked: null, + children: [] + }; + } + function paragraph() { + return { + type: "paragraph", + children: [] + }; + } + function strong() { + return { + type: "strong", + children: [] + }; + } + function text3() { + return { + type: "text", + value: "" + }; + } + function thematicBreak2() { + return { + type: "thematicBreak" + }; + } +} +function point2(d2) { + return { + line: d2.line, + column: d2.column, + offset: d2.offset + }; +} +function configure(combined, extensions) { + let index2 = -1; + while (++index2 < extensions.length) { + const value = extensions[index2]; + if (Array.isArray(value)) { + configure(combined, value); + } else { + extension(combined, value); + } + } +} +function extension(combined, extension2) { + let key; + for (key in extension2) { + if (own2.call(extension2, key)) { + if (key === "canContainEols") { + const right = extension2[key]; + if (right) { + combined[key].push(...right); + } + } else if (key === "transforms") { + const right = extension2[key]; + if (right) { + combined[key].push(...right); + } + } else if (key === "enter" || key === "exit") { + const right = extension2[key]; + if (right) { + Object.assign(combined[key], right); + } + } + } + } +} +function defaultOnError(left, right) { + if (left) { + throw new Error( + "Cannot close `" + left.type + "` (" + stringifyPosition({ + start: left.start, + end: left.end + }) + "): a different token (`" + right.type + "`, " + stringifyPosition({ + start: right.start, + end: right.end + }) + ") is open" + ); + } else { + throw new Error( + "Cannot close document, a token (`" + right.type + "`, " + stringifyPosition({ + start: right.start, + end: right.end + }) + ") is still open" + ); + } +} + +// node_modules/remark-parse/lib/index.js +function remarkParse(options) { + const parser = (doc) => { + const settings = ( + /** @type {Options} */ + this.data("settings") + ); + return fromMarkdown( + doc, + Object.assign({}, settings, options, { + // Note: these options are not in the readme. + // The goal is for them to be set by plugins on `data` instead of being + // passed by users. + extensions: this.data("micromarkExtensions") || [], + mdastExtensions: this.data("fromMarkdownExtensions") || [] + }) + ); + }; + Object.assign(this, { Parser: parser }); +} + +// node_modules/unist-util-is/lib/index.js +var convert = ( + // Note: overloads in JSDoc can’t yet use different `@template`s. + /** + * @type {( + * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & + * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & + * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) & + * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & + * ((test?: Test) => Check) + * )} + */ + /** + * @param {Test} [test] + * @returns {Check} + */ + function(test) { + if (test === null || test === void 0) { + return ok; + } + if (typeof test === "function") { + return castFactory(test); + } + if (typeof test === "object") { + return Array.isArray(test) ? anyFactory(test) : propsFactory(test); + } + if (typeof test === "string") { + return typeFactory(test); + } + throw new Error("Expected function, string, or object as test"); + } +); +function anyFactory(tests) { + const checks = []; + let index2 = -1; + while (++index2 < tests.length) { + checks[index2] = convert(tests[index2]); + } + return castFactory(any); + function any(...parameters) { + let index3 = -1; + while (++index3 < checks.length) { + if (checks[index3].apply(this, parameters)) + return true; + } + return false; + } +} +function propsFactory(check) { + const checkAsRecord = ( + /** @type {Record} */ + check + ); + return castFactory(all2); + function all2(node2) { + const nodeAsRecord = ( + /** @type {Record} */ + /** @type {unknown} */ + node2 + ); + let key; + for (key in check) { + if (nodeAsRecord[key] !== checkAsRecord[key]) + return false; + } + return true; + } +} +function typeFactory(check) { + return castFactory(type); + function type(node2) { + return node2 && node2.type === check; + } +} +function castFactory(testFunction) { + return check; + function check(value, index2, parent) { + return Boolean( + looksLikeANode(value) && testFunction.call( + this, + value, + typeof index2 === "number" ? index2 : void 0, + parent || void 0 + ) + ); + } +} +function ok() { + return true; +} +function looksLikeANode(value) { + return value !== null && typeof value === "object" && "type" in value; +} + +// node_modules/unist-util-visit-parents/lib/color.js +function color(d2) { + return d2; +} + +// node_modules/unist-util-visit-parents/lib/index.js +var empty = []; +var CONTINUE = true; +var EXIT = false; +var SKIP = "skip"; +function visitParents(tree, test, visitor, reverse) { + let check; + if (typeof test === "function" && typeof visitor !== "function") { + reverse = visitor; + visitor = test; + } else { + check = test; + } + const is2 = convert(check); + const step = reverse ? -1 : 1; + factory(tree, void 0, [])(); + function factory(node2, index2, parents) { + const value = ( + /** @type {Record} */ + node2 && typeof node2 === "object" ? node2 : {} + ); + if (typeof value.type === "string") { + const name = ( + // `hast` + typeof value.tagName === "string" ? value.tagName : ( + // `xast` + typeof value.name === "string" ? value.name : void 0 + ) + ); + Object.defineProperty(visit2, "name", { + value: "node (" + color(node2.type + (name ? "<" + name + ">" : "")) + ")" + }); + } + return visit2; + function visit2() { + let result = empty; + let subresult; + let offset; + let grandparents; + if (!test || is2(node2, index2, parents[parents.length - 1] || void 0)) { + result = toResult(visitor(node2, parents)); + if (result[0] === EXIT) { + return result; + } + } + if ("children" in node2 && node2.children) { + const nodeAsParent = ( + /** @type {UnistParent} */ + node2 + ); + if (nodeAsParent.children && result[0] !== SKIP) { + offset = (reverse ? nodeAsParent.children.length : -1) + step; + grandparents = parents.concat(nodeAsParent); + while (offset > -1 && offset < nodeAsParent.children.length) { + const child = nodeAsParent.children[offset]; + subresult = factory(child, offset, grandparents)(); + if (subresult[0] === EXIT) { + return subresult; + } + offset = typeof subresult[1] === "number" ? subresult[1] : offset + step; + } + } + } + return result; + } + } +} +function toResult(value) { + if (Array.isArray(value)) { + return value; + } + if (typeof value === "number") { + return [CONTINUE, value]; + } + return value === null || value === void 0 ? empty : [value]; +} + +// node_modules/unist-util-visit/lib/index.js +function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) { + let reverse; + let test; + let visitor; + if (typeof testOrVisitor === "function" && typeof visitorOrReverse !== "function") { + test = void 0; + visitor = testOrVisitor; + reverse = visitorOrReverse; + } else { + test = testOrVisitor; + visitor = visitorOrReverse; + reverse = maybeReverse; + } + visitParents(tree, test, overload, reverse); + function overload(node2, parents) { + const parent = parents[parents.length - 1]; + const index2 = parent ? parent.children.indexOf(node2) : void 0; + return visitor(node2, index2, parent); + } +} + +// src/ReadingView.ts +async function readingViewCodeblockDecoratingPostProcessor(element2, { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds = false) { var _a; const cache = plugin.app.metadataCache.getCache(sourcePath); - if (!sourcePath || !element || ((_a = frontmatter != null ? frontmatter : cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _a["code-styler-ignore"]) === true) + if (!sourcePath || !element2 || ((_a = frontmatter != null ? frontmatter : cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _a["code-styler-ignore"]) === true) return; await sleep(50); let codeblockPreElements; - editingEmbeds = editingEmbeds || Boolean(element.matchParent(".cm-embed-block")); - const specific = !element.querySelector(".view-content > *"); - const printing = Boolean(element.querySelector("div.print > *")); + editingEmbeds = editingEmbeds || Boolean(element2.matchParent(".cm-embed-block")); + const specific = !element2.querySelector(".view-content > *"); + const printing = Boolean(element2.querySelector("div.print > *")); if (printing && !plugin.settings.decoratePrint) return; if (!editingEmbeds && !specific) - codeblockPreElements = Array.from(element.querySelectorAll(".markdown-reading-view pre:not(.frontmatter)")); + codeblockPreElements = Array.from(element2.querySelectorAll(".markdown-reading-view pre:not(.frontmatter)")); else if (!editingEmbeds && specific) - codeblockPreElements = Array.from(element.querySelectorAll("pre:not(.frontmatter)")); + codeblockPreElements = Array.from(element2.querySelectorAll("pre:not(.frontmatter)")); else if (editingEmbeds && !specific) - codeblockPreElements = Array.from(element.querySelectorAll(".markdown-source-view .cm-embed-block pre:not(.frontmatter)")); + codeblockPreElements = Array.from(element2.querySelectorAll(".markdown-source-view .cm-embed-block pre:not(.frontmatter)")); else codeblockPreElements = []; if (codeblockPreElements.length === 0 && !(editingEmbeds && specific)) return; if (!editingEmbeds && !printing) { - const readingViewParent = element.matchParent(".view-content > .markdown-reading-view > .markdown-preview-view > .markdown-preview-section"); + const readingViewParent = element2.matchParent(".view-content > .markdown-reading-view > .markdown-preview-view > .markdown-preview-section"); if (readingViewParent) plugin.readingStylingMutationObserver.observe(readingViewParent, { childList: true, @@ -4431,9 +10573,9 @@ async function readingViewCodeblockDecoratingPostProcessor(element, { sourcePath if (codeblockSectionInfo && specific && !editingEmbeds) renderSpecificReadingSection(codeblockPreElements, sourcePath, codeblockSectionInfo, plugin); else if (specific && !printing) { - if (!(!editingEmbeds && element.classList.contains("admonition-content"))) { - let contentEl = element.matchParent(".view-content"); - await readingViewCodeblockDecoratingPostProcessor(contentEl ? contentEl : element.matchParent("div.print"), { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds); + if (!(!editingEmbeds && element2.classList.contains("admonition-content"))) { + let contentEl = element2.matchParent(".view-content"); + await readingViewCodeblockDecoratingPostProcessor(contentEl ? contentEl : element2.matchParent("div.print"), { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds); } } else renderDocument(codeblockPreElements, sourcePath, cache, editingEmbeds, printing, plugin); @@ -4494,27 +10636,27 @@ async function renderDocument(codeblockPreElements, sourcePath, cache, editingEm return; } } -async function readingViewInlineDecoratingPostProcessor(element, { sourcePath, getSectionInfo, frontmatter }, plugin) { - if (!sourcePath || !element || !plugin.settings.currentTheme.settings.inline.syntaxHighlight) +async function readingViewInlineDecoratingPostProcessor(element2, { sourcePath, getSectionInfo, frontmatter }, plugin) { + if (!sourcePath || !element2 || !plugin.settings.currentTheme.settings.inline.syntaxHighlight) return; - for (let inlineCodeElement of Array.from(element.querySelectorAll(":not(pre) > code"))) { + for (let inlineCodeElement of Array.from(element2.querySelectorAll(":not(pre) > code"))) { if (inlineCodeElement.classList.contains("code-styler-highlighted") || inlineCodeElement.classList.contains("code-styler-highlight-ignore")) return; let tempRenderContainer = createDiv(); let renderedCodeElement; let inlineCodeText = inlineCodeElement.innerText; - let { parameters, text } = parseInlineCode(inlineCodeText); + let { parameters, text: text3 } = parseInlineCode(inlineCodeText); if (!parameters) { - if (!text) + if (!text3) return; - import_obsidian3.MarkdownRenderer.renderMarkdown("`".repeat(20) + text + "`".repeat(20), tempRenderContainer, "", new import_obsidian3.Component()); + import_obsidian3.MarkdownRenderer.renderMarkdown("`".repeat(20) + text3 + "`".repeat(20), tempRenderContainer, "", new import_obsidian3.Component()); renderedCodeElement = tempRenderContainer.querySelector("code"); if (!renderedCodeElement) return; inlineCodeElement.innerHTML = renderedCodeElement.innerHTML; inlineCodeElement.classList.add("code-styler-highlight-ignore"); } else { - import_obsidian3.MarkdownRenderer.renderMarkdown(["```", parameters.language, "\n", text, "\n", "```"].join(""), tempRenderContainer, "", new import_obsidian3.Component()); + import_obsidian3.MarkdownRenderer.renderMarkdown(["```", parameters.language, "\n", text3, "\n", "```"].join(""), tempRenderContainer, "", new import_obsidian3.Component()); renderedCodeElement = tempRenderContainer.querySelector("pre > code"); if (!renderedCodeElement) return; @@ -4522,7 +10664,7 @@ async function readingViewInlineDecoratingPostProcessor(element, { sourcePath, g await sleep(2); inlineCodeElement.innerHTML = renderedCodeElement.innerHTML; inlineCodeElement.classList.add("code-styler-highlighted"); - inlineCodeElement.setAttribute("parameters", inlineCodeText.substring(0, inlineCodeText.lastIndexOf(text))); + inlineCodeElement.setAttribute("parameters", inlineCodeText.substring(0, inlineCodeText.lastIndexOf(text3))); if (parameters.icon || parameters.title) inlineCodeElement.insertBefore(createInlineOpener(parameters, plugin.languageIcons), inlineCodeElement.childNodes[0]); } @@ -4574,14 +10716,27 @@ async function remakeCodeblock(codeblockCodeElement, codeblockPreElement, codebl codeblockPreElement.classList.add("code-styler-collapsed"); if (codeblockCodeElement.querySelector("code [class*='code-styler-line']")) return; - let codeblockLines = codeblockCodeElement.innerHTML.split("\n"); - if (codeblockLines.length == 1) - codeblockLines = ["", ""]; + let tree = unified().use(remarkParse).parse(codeblockCodeElement.innerHTML.replace(/\n/g, "
")); + let stack = []; + let codeblockHTML = ""; codeblockCodeElement.innerHTML = ""; - codeblockLines.forEach((line, index) => { - if (index === codeblockLines.length - 1) + visit(tree, (node2) => { + if (node2.type === "html" || node2.type === "text") { + if (node2.type === "html" && node2.value !== "
") { + if (node2.value.startsWith("") + node2.value = "".repeat(stack.length) + "
" + stack.join(""); + codeblockHTML += node2.value; + } + }); + let codeblockLines = codeblockHTML.split("
"); + codeblockLines.forEach((line, index2) => { + if (index2 === codeblockLines.length - 1) return; - const lineNumber = index + 1; + const lineNumber = index2 + 1; const lineWrapper = document.createElement("div"); getLineClass(codeblockParameters, lineNumber, line).forEach((lineClass) => { lineWrapper.classList.add(lineClass); @@ -4595,9 +10750,10 @@ async function remakeCodeblock(codeblockCodeElement, codeblockPreElement, codebl lineWrapper.appendChild(createDiv({ cls: `code-styler-line-number${lineNumberDisplay}`, text: (lineNumber + codeblockParameters.lineNumbers.offset).toString() })); lineWrapper.appendChild(createDiv({ cls: `code-styler-line-text`, text: (0, import_obsidian3.sanitizeHTMLToDom)(line !== "" ? line : "
") })); }); + console.log(codeblockCodeElement.innerHTML); } -function remeasureReadingView(element, primary_delay = PRIMARY_DELAY) { - const codeblockPreElements = element.querySelectorAll("pre:not(.frontmatter)"); +function remeasureReadingView(element2, primary_delay = PRIMARY_DELAY) { + const codeblockPreElements = element2.querySelectorAll("pre:not(.frontmatter)"); codeblockPreElements.forEach((codeblockPreElement) => { let codeblockCodeElement = codeblockPreElement.querySelector("pre > code"); if (!codeblockCodeElement) @@ -4624,7 +10780,7 @@ function destroyReadingModeElements() { ...Array.from(document.querySelectorAll("pre.code-styler-pre div[class^='code-styler-header-container']")), ...Array.from(document.querySelectorAll("pre.code-styler-pre div[class^='code-styler-line-number']")), ...Array.from(document.querySelectorAll(":not(pre) > code span.code-styler-inline-opener")) - ].forEach((element) => element.remove()); + ].forEach((element2) => element2.remove()); document.querySelectorAll("pre.code-styler-pre").forEach((codeblockPreElement) => { codeblockPreElement.classList.remove("code-styler-pre"); codeblockPreElement.classList.remove("code-styler-collapsed"); @@ -4750,4 +10906,13 @@ var CodeStylerPlugin = class extends import_obsidian4.Plugin { @simonwep/pickr/dist/pickr.min.js: (*! Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr *) + +is-buffer/index.js: + (*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + *) */ +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovc3JjL2pzL3V0aWxzL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdXRpbHMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy91dGlscy9oc3ZhY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy9saWJzL21vdmVhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvbGlicy9zZWxlY3RhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdGVtcGxhdGUuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3NyYy9OYW5vUG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvcGlja3IuanMiLCAibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwgInNyYy9tYWluLnRzIiwgInNyYy9TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiLCAibm9kZV9tb2R1bGVzL2NvbG9ydHJhbnNsYXRvci9lc20vaW5kZXguanMiLCAic3JjL0FwcGx5U3R5bGluZy50cyIsICJzcmMvRWRpdGluZ1ZpZXcudHMiLCAic3JjL0NvZGVibG9ja1BhcnNpbmcudHMiLCAic3JjL0NvZGVibG9ja0RlY29yYXRpbmcudHMiLCAic3JjL1JlYWRpbmdWaWV3LnRzIiwgIm5vZGVfbW9kdWxlcy9iYWlsL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy91bmlmaWVkL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy92ZmlsZS1tZXNzYWdlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnBhdGguYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnByb2MuYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnVybC5zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9taW51cmwuYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1zdHJpbmcvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jaHVua2VkL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jb21iaW5lLWV4dGVuc2lvbnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9saWIvdW5pY29kZS1wdW5jdHVhdGlvbi1yZWdleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1zcGFjZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9pbml0aWFsaXplL2NvbnRlbnQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvaW5pdGlhbGl6ZS9kb2N1bWVudC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2xhc3NpZnktY2hhcmFjdGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1yZXNvbHZlLWFsbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYXR0ZW50aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9hdXRvbGluay5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYmxhbmstbGluZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYmxvY2stcXVvdGUuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NoYXJhY3Rlci1lc2NhcGUuanMiLCAibm9kZV9tb2R1bGVzL2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlL2luZGV4LmRvbS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvY2hhcmFjdGVyLXJlZmVyZW5jZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvY29kZS1mZW5jZWQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvZGUtaW5kZW50ZWQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvZGUtdGV4dC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtc3VidG9rZW5pemUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvbnRlbnQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1sYWJlbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktdGl0bGUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9kZWZpbml0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9oYXJkLWJyZWFrLWVzY2FwZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvaGVhZGluZy1hdHguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2h0bWwtZmxvdy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvaHRtbC10ZXh0LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9sYWJlbC1lbmQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2xhYmVsLXN0YXJ0LWltYWdlLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9sYWJlbC1zdGFydC1saW5rLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9saW5lLWVuZGluZy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvdGhlbWF0aWMtYnJlYWsuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2xpc3QuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL3NldGV4dC11bmRlcmxpbmUuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvaW5pdGlhbGl6ZS9mbG93LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmsvbGliL2luaXRpYWxpemUvdGV4dC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9jcmVhdGUtdG9rZW5pemVyLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmsvbGliL2NvbnN0cnVjdHMuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvcGFyc2UuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvcHJlcHJvY2Vzcy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9wb3N0cHJvY2Vzcy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9saWIvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQvbGliL2luZGV4LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJQaWNrclwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJQaWNrclwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsICIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwgIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsICJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwgIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsICIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItcmVzdC1wYXJhbXMgKi9cclxuZnVuY3Rpb24gZXZlbnRMaXN0ZW5lcihtZXRob2QsIGVsZW1lbnRzLCBldmVudHMsIGZuLCBvcHRpb25zID0ge30pIHtcclxuXHJcbiAgICAvLyBOb3JtYWxpemUgYXJyYXlcclxuICAgIGlmIChlbGVtZW50cyBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uIHx8IGVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHtcclxuICAgICAgICBlbGVtZW50cyA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xyXG4gICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShlbGVtZW50cykpIHtcclxuICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50c107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV2ZW50cykpIHtcclxuICAgICAgICBldmVudHMgPSBbZXZlbnRzXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGVsIG9mIGVsZW1lbnRzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBldiBvZiBldmVudHMpIHtcclxuICAgICAgICAgICAgZWxbbWV0aG9kXShldiwgZm4sIHtjYXB0dXJlOiBmYWxzZSwgLi4ub3B0aW9uc30pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCBldmVudChzKSB0byBlbGVtZW50KHMpLlxyXG4gKiBAcGFyYW0gZWxlbWVudHMgRE9NLUVsZW1lbnRzXHJcbiAqIEBwYXJhbSBldmVudHMgRXZlbnQgbmFtZXNcclxuICogQHBhcmFtIGZuIENhbGxiYWNrXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcclxuICogQHJldHVybiBBcnJheSBwYXNzZWQgYXJndW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb24gPSBldmVudExpc3RlbmVyLmJpbmQobnVsbCwgJ2FkZEV2ZW50TGlzdGVuZXInKTtcclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgZXZlbnQocykgZnJvbSBlbGVtZW50KHMpLlxyXG4gKiBAcGFyYW0gZWxlbWVudHMgRE9NLUVsZW1lbnRzXHJcbiAqIEBwYXJhbSBldmVudHMgRXZlbnQgbmFtZXNcclxuICogQHBhcmFtIGZuIENhbGxiYWNrXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcclxuICogQHJldHVybiBBcnJheSBwYXNzZWQgYXJndW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb2ZmID0gZXZlbnRMaXN0ZW5lci5iaW5kKG51bGwsICdyZW1vdmVFdmVudExpc3RlbmVyJyk7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBET00tRWxlbWVudCBvdXQgb2YgYSBzdHJpbmcgKFNpbmdsZSBlbGVtZW50KS5cclxuICogQHBhcmFtIGh0bWwgSFRNTCByZXByZXNlbnRpbmcgYSBzaW5nbGUgZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7RWxlbWVudCB8IG51bGx9IFRoZSBlbGVtZW50LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGcm9tU3RyaW5nKGh0bWwpIHtcclxuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgZGl2LmlubmVySFRNTCA9IGh0bWwudHJpbSgpO1xyXG4gICAgcmV0dXJuIGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcgaHRtbCBlbGVtZW50LCBldmVyeSBlbGVtZW50IHdoaWNoIGhhc1xyXG4gKiBhICc6cmVmJyBhdHRyaWJ1dGUgd2lsbCBiZSBzYXZlZCBpbiBhIG9iamVjdCAod2hpY2ggd2lsbCBiZSByZXR1cm5lZClcclxuICogd2hlcmUgdGhlIHZhbHVlIG9mICc6cmVmJyBpcyB0aGUgb2JqZWN0LWtleSBhbmQgdGhlIHZhbHVlIHRoZSBIVE1MRWxlbWVudC5cclxuICpcclxuICogSXQncyBwb3NzaWJsZSB0byBjcmVhdGUgYSBoaWVyYXJjaHkgaWYgeW91IGFkZCBhICc6b2JqJyBhdHRyaWJ1dGUuIEV2ZXJ5XHJcbiAqIHNpYmxpbmcgd2lsbCBiZSBhZGRlZCB0byB0aGUgb2JqZWN0IHdoaWNoIHdpbGwgZ2V0IHRoZSBuYW1lIGZyb20gdGhlICdkYXRhLWNvbicgYXR0cmlidXRlLlxyXG4gKlxyXG4gKiBJZiB5b3Ugd2FudCB0byBjcmVhdGUgYW4gQXJyYXkgb3V0IG9mIG11bHRpcGxlIGVsZW1lbnRzLCB5b3UgY2FuIHVzZSB0aGUgJzphcnInIGF0dHJpYnV0ZSxcclxuICogdGhlIHZhbHVlIGRlZmluZXMgdGhlIGtleSBhbmQgYWxsIGVsZW1lbnRzLCB3aGljaCBoYXMgdGhlIHNhbWUgcGFyZW50IGFuZCB0aGUgc2FtZSAnZGF0YS1hcnInIGF0dHJpYnV0ZSxcclxuICogd291bGQgYmUgYWRkZWQgdG8gaXQuXHJcbiAqXHJcbiAqIEBwYXJhbSBzdHIgLSBUaGUgSFRNTCBTdHJpbmcuXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyb21UZW1wbGF0ZShzdHIpIHtcclxuXHJcbiAgICAvLyBSZW1vdmVzIGFuIGF0dHJpYnV0ZSBmcm9tIGEgSFRNTEVsZW1lbnQgYW5kIHJldHVybnMgdGhlIHZhbHVlLlxyXG4gICAgY29uc3QgcmVtb3ZlQXR0cmlidXRlID0gKGVsLCBuYW1lKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbC5nZXRBdHRyaWJ1dGUobmFtZSk7XHJcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVjdXJzaXZlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGVtcGxhdGVcclxuICAgIGNvbnN0IHJlc29sdmUgPSAoZWxlbWVudCwgYmFzZSA9IHt9KSA9PiB7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGtleSBhbmQgY29udGFpbmVyIGF0dHJpYnV0ZVxyXG4gICAgICAgIGNvbnN0IGNvbiA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCAnOm9iaicpO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCAnOnJlZicpO1xyXG4gICAgICAgIGNvbnN0IHN1YnRyZWUgPSBjb24gPyAoYmFzZVtjb25dID0ge30pIDogYmFzZTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgYW5kIHNhdmUgZWxlbWVudFxyXG4gICAgICAgIGtleSAmJiAoYmFzZVtrZXldID0gZWxlbWVudCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHJlbW92ZUF0dHJpYnV0ZShjaGlsZCwgJzphcnInKTtcclxuICAgICAgICAgICAgY29uc3Qgc3ViID0gcmVzb2x2ZShjaGlsZCwgYXJyID8ge30gOiBzdWJ0cmVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFycmF5IGFuZCBhZGQgZWxlbWVudFxyXG4gICAgICAgICAgICAgICAgKHN1YnRyZWVbYXJyXSB8fCAoc3VidHJlZVthcnJdID0gW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5wdXNoKE9iamVjdC5rZXlzKHN1YikubGVuZ3RoID8gc3ViIDogY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYmFzZTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHJlc29sdmUoY3JlYXRlRWxlbWVudEZyb21TdHJpbmcoc3RyKSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQb2x5ZmlsbCBmb3Igc2FmYXJpICYgZmlyZWZveCBmb3IgdGhlIGV2ZW50UGF0aCBldmVudCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGV2dCBUaGUgZXZlbnQgb2JqZWN0LlxyXG4gKiBAcmV0dXJuIFtTdHJpbmddIGV2ZW50IHBhdGguXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRQYXRoKGV2dCkge1xyXG4gICAgbGV0IHBhdGggPSBldnQucGF0aCB8fCAoZXZ0LmNvbXBvc2VkUGF0aCAmJiBldnQuY29tcG9zZWRQYXRoKCkpO1xyXG4gICAgaWYgKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZWwgPSBldnQudGFyZ2V0LnBhcmVudEVsZW1lbnQ7XHJcbiAgICBwYXRoID0gW2V2dC50YXJnZXQsIGVsXTtcclxuICAgIHdoaWxlIChlbCA9IGVsLnBhcmVudEVsZW1lbnQpIHtcclxuICAgICAgICBwYXRoLnB1c2goZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGgucHVzaChkb2N1bWVudCwgd2luZG93KTtcclxuICAgIHJldHVybiBwYXRoO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgYSBIVE1MRWxlbWVudCBieSBxdWVyeS5cclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcmV0dXJucyB7bnVsbHxEb2N1bWVudHxFbGVtZW50fVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFbGVtZW50KHZhbCkge1xyXG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiB2YWwuc3BsaXQoLz4+L2cpLnJlZHVjZSgocHYsIGN2LCBjaSwgYSkgPT4ge1xyXG4gICAgICAgICAgICBwdiA9IHB2LnF1ZXJ5U2VsZWN0b3IoY3YpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2kgPCBhLmxlbmd0aCAtIDEgPyBwdi5zaGFkb3dSb290IDogcHY7XHJcbiAgICAgICAgfSwgZG9jdW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgbnVtYmVycyBpbiBhbiBpbnB1dCBmaWVsZCB3aXRoIHRoZSBzY3JvbGwtd2hlZWwuXHJcbiAqIEBwYXJhbSBlbFxyXG4gKiBAcGFyYW0gbWFwcGVyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0YWJsZUlucHV0TnVtYmVycyhlbCwgbWFwcGVyID0gdiA9PiB2KSB7XHJcblxyXG4gICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpIHtcclxuICAgICAgICBjb25zdCBpbmMgPSAoWzAuMDAxLCAwLjAxLCAwLjFdKVtOdW1iZXIoZS5zaGlmdEtleSB8fCBlLmN0cmxLZXkgKiAyKV0gKiAoZS5kZWx0YVkgPCAwID8gMSA6IC0xKTtcclxuXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBsZXQgb2ZmID0gZWwuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgZWwudmFsdWUgPSBlbC52YWx1ZS5yZXBsYWNlKC9bXFxkLl0rL2csICh2LCBpKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBudW1iZXIgaXMgaW4gY3Vyc29yIHJhbmdlIGFuZCBpbmNyZWFzZSBpdFxyXG4gICAgICAgICAgICBpZiAoaSA8PSBvZmYgJiYgaSArIHYubGVuZ3RoID49IG9mZikge1xyXG4gICAgICAgICAgICAgICAgb2ZmID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtYXBwZXIoTnVtYmVyKHYpLCBpbmMsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVsLmZvY3VzKCk7XHJcbiAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2Uob2ZmLCBvZmYpO1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYW5kIHRyaWdnZXIgaW5wdXQgZXZlbnRcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJpbmQgZXZlbnRzXHJcbiAgICBvbihlbCwgJ2ZvY3VzJywgKCkgPT4gb24od2luZG93LCAnd2hlZWwnLCBoYW5kbGVTY3JvbGwsIHtwYXNzaXZlOiBmYWxzZX0pKTtcclxuICAgIG9uKGVsLCAnYmx1cicsICgpID0+IG9mZih3aW5kb3csICd3aGVlbCcsIGhhbmRsZVNjcm9sbCkpO1xyXG59XHJcbiIsICIvLyBTaG9ydGhhbmRzXHJcbmNvbnN0IHttaW4sIG1heCwgZmxvb3IsIHJvdW5kfSA9IE1hdGg7XHJcblxyXG4vKipcclxuICogVHJpZXMgdG8gY29udmVydCBhIGNvbG9yIG5hbWUgdG8gcmdiL2EgaGV4IHJlcHJlc2VudGF0aW9uXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBDYW52YXNHcmFkaWVudCB8IENhbnZhc1BhdHRlcm59XHJcbiAqL1xyXG5mdW5jdGlvbiBzdGFuZGFyZGl6ZUNvbG9yKG5hbWUpIHtcclxuXHJcbiAgICAvLyBTaW5jZSBpbnZhbGlkIGNvbG9yJ3Mgd2lsbCBiZSBwYXJzZWQgYXMgYmxhY2ssIGZpbHRlciB0aGVtIG91dFxyXG4gICAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2JsYWNrJykge1xyXG4gICAgICAgIHJldHVybiAnIzAwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGN0eC5maWxsU3R5bGUgPSBuYW1lO1xyXG4gICAgcmV0dXJuIGN0eC5maWxsU3R5bGUgPT09ICcjMDAwJyA/IG51bGwgOiBjdHguZmlsbFN0eWxlO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gUkdCLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IEFycmF5IHdpdGggcmdiIHZhbHVlcy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoc3ZUb1JnYihoLCBzLCB2KSB7XHJcbiAgICBoID0gKGggLyAzNjApICogNjtcclxuICAgIHMgLz0gMTAwO1xyXG4gICAgdiAvPSAxMDA7XHJcblxyXG4gICAgY29uc3QgaSA9IGZsb29yKGgpO1xyXG5cclxuICAgIGNvbnN0IGYgPSBoIC0gaTtcclxuICAgIGNvbnN0IHAgPSB2ICogKDEgLSBzKTtcclxuICAgIGNvbnN0IHEgPSB2ICogKDEgLSBmICogcyk7XHJcbiAgICBjb25zdCB0ID0gdiAqICgxIC0gKDEgLSBmKSAqIHMpO1xyXG5cclxuICAgIGNvbnN0IG1vZCA9IGkgJSA2O1xyXG4gICAgY29uc3QgciA9IFt2LCBxLCBwLCBwLCB0LCB2XVttb2RdO1xyXG4gICAgY29uc3QgZyA9IFt0LCB2LCB2LCBxLCBwLCBwXVttb2RdO1xyXG4gICAgY29uc3QgYiA9IFtwLCBwLCB0LCB2LCB2LCBxXVttb2RdO1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgciAqIDI1NSxcclxuICAgICAgICBnICogMjU1LFxyXG4gICAgICAgIGIgKiAyNTVcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBIZXguXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSB2IFZhbHVlXHJcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gSGV4IHZhbHVlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvSGV4KGgsIHMsIHYpIHtcclxuICAgIHJldHVybiBoc3ZUb1JnYihoLCBzLCB2KS5tYXAodiA9PlxyXG4gICAgICAgIHJvdW5kKHYpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gQ01ZSy5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge251bWJlcltdfSBDTVlLIHZhbHVlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvQ215ayhoLCBzLCB2KSB7XHJcbiAgICBjb25zdCByZ2IgPSBoc3ZUb1JnYihoLCBzLCB2KTtcclxuICAgIGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XHJcbiAgICBjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xyXG4gICAgY29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcclxuXHJcbiAgICBjb25zdCBrID0gbWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xyXG4gICAgY29uc3QgYyA9IGsgPT09IDEgPyAwIDogKDEgLSByIC0gaykgLyAoMSAtIGspO1xyXG4gICAgY29uc3QgbSA9IGsgPT09IDEgPyAwIDogKDEgLSBnIC0gaykgLyAoMSAtIGspO1xyXG4gICAgY29uc3QgeSA9IGsgPT09IDEgPyAwIDogKDEgLSBiIC0gaykgLyAoMSAtIGspO1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgYyAqIDEwMCxcclxuICAgICAgICBtICogMTAwLFxyXG4gICAgICAgIHkgKiAxMDAsXHJcbiAgICAgICAgayAqIDEwMFxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNWIHNwZWN0cnVtIHRvIEhTTC5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge251bWJlcltdfSBIU0wgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9Ic2woaCwgcywgdikge1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICB2IC89IDEwMDtcclxuXHJcbiAgICBjb25zdCBsID0gKDIgLSBzKSAqIHYgLyAyO1xyXG5cclxuICAgIGlmIChsICE9PSAwKSB7XHJcbiAgICAgICAgaWYgKGwgPT09IDEpIHtcclxuICAgICAgICAgICAgcyA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsIDwgMC41KSB7XHJcbiAgICAgICAgICAgIHMgPSBzICogdiAvIChsICogMik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcyA9IHMgKiB2IC8gKDIgLSBsICogMik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgaCxcclxuICAgICAgICBzICogMTAwLFxyXG4gICAgICAgIGwgKiAxMDBcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IFJHQiB0byBIU1YuXHJcbiAqIEBwYXJhbSByIFJlZFxyXG4gKiBAcGFyYW0gZyBHcmVlblxyXG4gKiBAcGFyYW0gYiBCbHVlXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xyXG4gICAgciAvPSAyNTU7XHJcbiAgICBnIC89IDI1NTtcclxuICAgIGIgLz0gMjU1O1xyXG5cclxuICAgIGNvbnN0IG1pblZhbCA9IG1pbihyLCBnLCBiKTtcclxuICAgIGNvbnN0IG1heFZhbCA9IG1heChyLCBnLCBiKTtcclxuICAgIGNvbnN0IGRlbHRhID0gbWF4VmFsIC0gbWluVmFsO1xyXG5cclxuICAgIGxldCBoLCBzO1xyXG4gICAgY29uc3QgdiA9IG1heFZhbDtcclxuICAgIGlmIChkZWx0YSA9PT0gMCkge1xyXG4gICAgICAgIGggPSBzID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcyA9IGRlbHRhIC8gbWF4VmFsO1xyXG4gICAgICAgIGNvbnN0IGRyID0gKCgobWF4VmFsIC0gcikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IGRnID0gKCgobWF4VmFsIC0gZykgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IGRiID0gKCgobWF4VmFsIC0gYikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG5cclxuICAgICAgICBpZiAociA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSBkYiAtIGRnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZyA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSAoMSAvIDMpICsgZHIgLSBkYjtcclxuICAgICAgICB9IGVsc2UgaWYgKGIgPT09IG1heFZhbCkge1xyXG4gICAgICAgICAgICBoID0gKDIgLyAzKSArIGRnIC0gZHI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaCA8IDApIHtcclxuICAgICAgICAgICAgaCArPSAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaCA+IDEpIHtcclxuICAgICAgICAgICAgaCAtPSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIGggKiAzNjAsXHJcbiAgICAgICAgcyAqIDEwMCxcclxuICAgICAgICB2ICogMTAwXHJcbiAgICBdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBDTVlLIHRvIEhTVi5cclxuICogQHBhcmFtIGMgQ3lhblxyXG4gKiBAcGFyYW0gbSBNYWdlbnRhXHJcbiAqIEBwYXJhbSB5IFllbGxvd1xyXG4gKiBAcGFyYW0gayBLZXkgKEJsYWNrKVxyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGNteWtUb0hzdihjLCBtLCB5LCBrKSB7XHJcbiAgICBjIC89IDEwMDtcclxuICAgIG0gLz0gMTAwO1xyXG4gICAgeSAvPSAxMDA7XHJcbiAgICBrIC89IDEwMDtcclxuXHJcbiAgICBjb25zdCByID0gKDEgLSBtaW4oMSwgYyAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcbiAgICBjb25zdCBnID0gKDEgLSBtaW4oMSwgbSAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcbiAgICBjb25zdCBiID0gKDEgLSBtaW4oMSwgeSAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcblxyXG4gICAgcmV0dXJuIFsuLi5yZ2JUb0hzdihyLCBnLCBiKV07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTTCB0byBIU1YuXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSBsIExpZ2h0bmVzc1xyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGhzbFRvSHN2KGgsIHMsIGwpIHtcclxuICAgIHMgLz0gMTAwO1xyXG4gICAgbCAvPSAxMDA7XHJcbiAgICBzICo9IGwgPCAwLjUgPyBsIDogMSAtIGw7XHJcblxyXG4gICAgY29uc3QgbnMgPSAoMiAqIHMgLyAobCArIHMpKSAqIDEwMDtcclxuICAgIGNvbnN0IHYgPSAobCArIHMpICogMTAwO1xyXG4gICAgcmV0dXJuIFtoLCBpc05hTihucykgPyAwIDogbnMsIHZdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIRVggdG8gSFNWLlxyXG4gKiBAcGFyYW0gaGV4IEhleGFkZWNpbWFsIHN0cmluZyBvZiByZ2IgY29sb3JzLCBjYW4gaGF2ZSBsZW5ndGggMyBvciA2LlxyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGhleFRvSHN2KGhleCkge1xyXG4gICAgcmV0dXJuIHJnYlRvSHN2KC4uLmhleC5tYXRjaCgvLnsyfS9nKS5tYXAodiA9PiBwYXJzZUludCh2LCAxNikpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyeSdzIHRvIHBhcnNlIGEgc3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBjb2xvciB0byBhIEhTViBhcnJheS5cclxuICogQ3VycmVudCBzdXBwb3J0ZWQgdHlwZXMgYXJlIGNteWssIHJnYmEsIGhzbGEgYW5kIGhleGFkZWNpbWFsLlxyXG4gKiBAcGFyYW0gc3RyXHJcbiAqIEByZXR1cm4geyp9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb0hTVkEoc3RyKSB7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgc3RyaW5nIGlzIGEgY29sb3ItbmFtZVxyXG4gICAgc3RyID0gc3RyLm1hdGNoKC9eW2EtekEtWl0rJC8pID8gc3RhbmRhcmRpemVDb2xvcihzdHIpIDogc3RyO1xyXG5cclxuICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggZGlmZmVyZW50IHR5cGVzIG9mIGNvbG9yIHJlcHJlc2VudGlvblxyXG4gICAgY29uc3QgcmVnZXggPSB7XHJcbiAgICAgICAgY215azogL15jbXlrW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspL2ksXHJcbiAgICAgICAgcmdiYTogL14oKHJnYmEpfHJnYilbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSo/KFtcXGQuXSt8JCkvaSxcclxuICAgICAgICBoc2xhOiAvXigoaHNsYSl8aHNsKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKj8oW1xcZC5dK3wkKS9pLFxyXG4gICAgICAgIGhzdmE6IC9eKChoc3ZhKXxoc3YpW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0qPyhbXFxkLl0rfCQpL2ksXHJcbiAgICAgICAgaGV4YTogL14jPygoW1xcZEEtRmEtZl17Myw0fSl8KFtcXGRBLUZhLWZdezZ9KXwoW1xcZEEtRmEtZl17OH0pKSQvaVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRha2VzIGFuIEFycmF5IG9mIGFueSB0eXBlLCBjb252ZXJ0IHN0cmluZ3Mgd2hpY2ggcmVwcmVzZW50c1xyXG4gICAgICogYSBudW1iZXIgdG8gYSBudW1iZXIgYW4gYW55dGhpbmcgZWxzZSB0byB1bmRlZmluZWQuXHJcbiAgICAgKiBAcGFyYW0gYXJyYXlcclxuICAgICAqIEByZXR1cm4geyp9XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IG51bWFyaXplID0gYXJyYXkgPT4gYXJyYXkubWFwKHYgPT4gL14ofFxcZCspXFwuXFxkK3xcXGQrJC8udGVzdCh2KSA/IE51bWJlcih2KSA6IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgbGV0IG1hdGNoO1xyXG4gICAgaW52YWxpZDogZm9yIChjb25zdCB0eXBlIGluIHJlZ2V4KSB7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgc2NoZW1lIHBhc3NlZFxyXG4gICAgICAgIGlmICghKG1hdGNoID0gcmVnZXhbdHlwZV0uZXhlYyhzdHIpKSkge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE1hdGNoWzJdIGRvZXMgb25seSBjb250YWluIGEgdHJ1bHkgdmFsdWUgaWYgcmdiYSwgaHNsYSwgb3IgaHNsYSBnb3QgbWF0Y2hlZFxyXG4gICAgICAgIGNvbnN0IGFscGhhVmFsaWQgPSBhID0+ICghIW1hdGNoWzJdID09PSAodHlwZW9mIGEgPT09ICdudW1iZXInKSk7XHJcblxyXG4gICAgICAgIC8vIFRyeSB0byBjb252ZXJ0XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NteWsnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBjLCBtLCB5LCBrXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYyA+IDEwMCB8fCBtID4gMTAwIHx8IHkgPiAxMDAgfHwgayA+IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IGNteWtUb0hzdihjLCBtLCB5LCBrKSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAncmdiYSc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssICwgLCByLCBnLCBiLCBhXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAociA+IDI1NSB8fCBnID4gMjU1IHx8IGIgPiAyNTUgfHwgYSA8IDAgfHwgYSA+IDEgfHwgIWFscGhhVmFsaWQoYSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhayBpbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWVzOiBbLi4ucmdiVG9Ic3YociwgZywgYiksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoZXhhJzoge1xyXG4gICAgICAgICAgICAgICAgbGV0IFssIGhleF0gPSBtYXRjaDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gNCB8fCBoZXgubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGV4ID0gaGV4LnNwbGl0KCcnKS5tYXAodiA9PiB2ICsgdikuam9pbignJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gaGV4LnN1YnN0cmluZygwLCA2KTtcclxuICAgICAgICAgICAgICAgIGxldCBhID0gaGV4LnN1YnN0cmluZyg2KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IDAgLSAyNTUgdG8gMCAtIDEgZm9yIG9wYWNpdHlcclxuICAgICAgICAgICAgICAgIGEgPSBhID8gKHBhcnNlSW50KGEsIDE2KSAvIDI1NSkgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5oZXhUb0hzdihyYXcpLCBhXSwgYSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnaHNsYSc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssICwgLCBoLCBzLCBsLCBhXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaCA+IDM2MCB8fCBzID4gMTAwIHx8IGwgPiAxMDAgfHwgYSA8IDAgfHwgYSA+IDEgfHwgIWFscGhhVmFsaWQoYSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhayBpbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWVzOiBbLi4uaHNsVG9Ic3YoaCwgcywgbCksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoc3ZhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIGgsIHMsIHYsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoID4gMzYwIHx8IHMgPiAxMDAgfHwgdiA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFtoLCBzLCB2LCBhXSwgYSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt2YWx1ZXM6IG51bGwsIHR5cGU6IG51bGx9O1xyXG59XHJcbiIsICJpbXBvcnQge2hzdlRvQ215aywgaHN2VG9IZXgsIGhzdlRvSHNsLCBoc3ZUb1JnYn0gZnJvbSAnLi9jb2xvcic7XHJcblxyXG4vKipcclxuICogU2ltcGxlIGNsYXNzIHdoaWNoIGhvbGRzIHRoZSBwcm9wZXJ0aWVzXHJcbiAqIG9mIHRoZSBjb2xvciByZXByZXNlbnRpb24gbW9kZWwgaHNsYSAoaHVlIHNhdHVyYXRpb24gbGlnaHRuZXNzIGFscGhhKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEhTVmFDb2xvcihoID0gMCwgcyA9IDAsIHYgPSAwLCBhID0gMSkge1xyXG4gICAgY29uc3QgbWFwcGVyID0gKG9yaWdpbmFsLCBuZXh0KSA9PiAocHJlY2lzaW9uID0gLTEpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV4dCh+cHJlY2lzaW9uID8gb3JpZ2luYWwubWFwKHYgPT4gTnVtYmVyKHYudG9GaXhlZChwcmVjaXNpb24pKSkgOiBvcmlnaW5hbCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRoYXQgPSB7XHJcbiAgICAgICAgaCwgcywgdiwgYSxcclxuXHJcbiAgICAgICAgdG9IU1ZBKCkge1xyXG4gICAgICAgICAgICBjb25zdCBoc3ZhID0gW3RoYXQuaCwgdGhhdC5zLCB0aGF0LnYsIHRoYXQuYV07XHJcbiAgICAgICAgICAgIGhzdmEudG9TdHJpbmcgPSBtYXBwZXIoaHN2YSwgYXJyID0+IGBoc3ZhKCR7YXJyWzBdfSwgJHthcnJbMV19JSwgJHthcnJbMl19JSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gaHN2YTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0hTTEEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhzbGEgPSBbLi4uaHN2VG9Ic2wodGhhdC5oLCB0aGF0LnMsIHRoYXQudiksIHRoYXQuYV07XHJcbiAgICAgICAgICAgIGhzbGEudG9TdHJpbmcgPSBtYXBwZXIoaHNsYSwgYXJyID0+IGBoc2xhKCR7YXJyWzBdfSwgJHthcnJbMV19JSwgJHthcnJbMl19JSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gaHNsYTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b1JHQkEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJnYmEgPSBbLi4uaHN2VG9SZ2IodGhhdC5oLCB0aGF0LnMsIHRoYXQudiksIHRoYXQuYV07XHJcbiAgICAgICAgICAgIHJnYmEudG9TdHJpbmcgPSBtYXBwZXIocmdiYSwgYXJyID0+IGByZ2JhKCR7YXJyWzBdfSwgJHthcnJbMV19LCAke2FyclsyXX0sICR7dGhhdC5hfSlgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJnYmE7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdG9DTVlLKCkge1xyXG4gICAgICAgICAgICBjb25zdCBjbXlrID0gaHN2VG9DbXlrKHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYpO1xyXG4gICAgICAgICAgICBjbXlrLnRvU3RyaW5nID0gbWFwcGVyKGNteWssIGFyciA9PiBgY215aygke2FyclswXX0lLCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke2FyclszXX0lKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gY215aztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0hFWEEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhleCA9IGhzdlRvSGV4KHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYWxwaGEgY2hhbm5lbCBtYWtlIHNlbnNlLCBjb252ZXJ0IGl0IHRvIDI1NSBudW1iZXIgc3BhY2UsIGNvbnZlcnRcclxuICAgICAgICAgICAgLy8gVG8gaGV4IGFuZCBwYWQgaXQgd2l0aCB6ZXJvcyBpZiBuZWVkZXQuXHJcbiAgICAgICAgICAgIGNvbnN0IGFscGhhID0gdGhhdC5hID49IDEgPyAnJyA6IE51bWJlcigodGhhdC5hICogMjU1KS50b0ZpeGVkKDApKVxyXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKDE2KVxyXG4gICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGFscGhhICYmIGhleC5wdXNoKGFscGhhKTtcclxuICAgICAgICAgICAgaGV4LnRvU3RyaW5nID0gKCkgPT4gYCMke2hleC5qb2luKCcnKS50b1VwcGVyQ2FzZSgpfWA7XHJcbiAgICAgICAgICAgIHJldHVybiBoZXg7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY2xvbmU6ICgpID0+IEhTVmFDb2xvcih0aGF0LmgsIHRoYXQucywgdGhhdC52LCB0aGF0LmEpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmNvbnN0IGNsYW1wID0gdiA9PiBNYXRoLm1heChNYXRoLm1pbih2LCAxKSwgMCk7XHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vdmVhYmxlKG9wdCkge1xyXG5cclxuICAgIGNvbnN0IHRoYXQgPSB7XHJcblxyXG4gICAgICAgIC8vIEFzc2lnbiBkZWZhdWx0IHZhbHVlc1xyXG4gICAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBsb2NrOiBudWxsLFxyXG4gICAgICAgICAgICBvbmNoYW5nZTogKCkgPT4gMCxcclxuICAgICAgICAgICAgb25zdG9wOiAoKSA9PiAwXHJcbiAgICAgICAgfSwgb3B0KSxcclxuXHJcbiAgICAgICAgX2tleWJvYXJkKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qge29wdGlvbnN9ID0gdGhhdDtcclxuICAgICAgICAgICAgY29uc3Qge3R5cGUsIGtleX0gPSBlO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNb3ZhYmxlIGlzIGZvY3VzZWQgYW5kIHRoZW4gbW92ZSBpdCBiYXNlZCBvbiBhcnJvdyBrZXkgaW5wdXRzXHJcbiAgICAgICAgICAgIC8vIEZvciBpbXByb3ZlZCBhY2Nlc3NpYmlsaXR5XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBvcHRpb25zLndyYXBwZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHtsb2NrfSA9IHRoYXQub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwID0ga2V5ID09PSAnQXJyb3dVcCc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGtleSA9PT0gJ0Fycm93UmlnaHQnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZG93biA9IGtleSA9PT0gJ0Fycm93RG93bic7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0ga2V5ID09PSAnQXJyb3dMZWZ0JztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2tleWRvd24nICYmICh1cCB8fCByaWdodCB8fCBkb3duIHx8IGxlZnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHhtID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeW0gPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobG9jayA9PT0gJ3YnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gKHVwIHx8IHJpZ2h0KSA/IDEgOiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2sgPT09ICdoJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4bSA9ICh1cCB8fCByaWdodCkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeW0gPSB1cCA/IC0xIDogKGRvd24gPyAxIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gbGVmdCA/IC0xIDogKHJpZ2h0ID8gMSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC51cGRhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wKHRoYXQuY2FjaGUueCArICgwLjAxICogeG0pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAodGhhdC5jYWNoZS55ICsgKDAuMDEgKiB5bSkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS5zdGFydHNXaXRoKCdBcnJvdycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLm9uc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBzdGFydChldnQpIHtcclxuICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgWydtb3VzZXVwJywgJ3RvdWNoZW5kJywgJ3RvdWNoY2FuY2VsJ10sIHRoYXQuX3RhcHN0b3ApO1xyXG4gICAgICAgICAgICBfLm9uKGRvY3VtZW50LCBbJ21vdXNlbW92ZScsICd0b3VjaG1vdmUnXSwgdGhhdC5fdGFwbW92ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXZ0LmNhbmNlbGFibGUpIHtcclxuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBUcmlnZ2VyXHJcbiAgICAgICAgICAgIHRoYXQuX3RhcG1vdmUoZXZ0KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBfdGFwbW92ZShldnQpIHtcclxuICAgICAgICAgICAgY29uc3Qge29wdGlvbnMsIGNhY2hlfSA9IHRoYXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHtsb2NrLCBlbGVtZW50LCB3cmFwcGVyfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgICAgIGNvbnN0IGIgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHggPSAwLCB5ID0gMDtcclxuICAgICAgICAgICAgaWYgKGV2dCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2ggPSBldnQgJiYgZXZ0LnRvdWNoZXMgJiYgZXZ0LnRvdWNoZXNbMF07XHJcbiAgICAgICAgICAgICAgICB4ID0gZXZ0ID8gKHRvdWNoIHx8IGV2dCkuY2xpZW50WCA6IDA7XHJcbiAgICAgICAgICAgICAgICB5ID0gZXZ0ID8gKHRvdWNoIHx8IGV2dCkuY2xpZW50WSA6IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdG8gYm91bmRzXHJcbiAgICAgICAgICAgICAgICBpZiAoeCA8IGIubGVmdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBiLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHggPiBiLmxlZnQgKyBiLndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGIubGVmdCArIGIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoeSA8IGIudG9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9IGIudG9wO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ID4gYi50b3AgKyBiLmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPSBiLnRvcCArIGIuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZVxyXG4gICAgICAgICAgICAgICAgeCAtPSBiLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB5IC09IGIudG9wO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gY2FjaGUueCAqIGIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB5ID0gY2FjaGUueSAqIGIuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAobG9jayAhPT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3ggLyBiLndpZHRoICogMTAwfSUgLSAke2VsZW1lbnQub2Zmc2V0V2lkdGggLyAyfXB4KWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NrICE9PSAndicpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYGNhbGMoJHt5IC8gYi5oZWlnaHQgKiAxMDB9JSAtICR7ZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyfXB4KWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoYXQuY2FjaGUgPSB7eDogeCAvIGIud2lkdGgsIHk6IHkgLyBiLmhlaWdodH07XHJcbiAgICAgICAgICAgIGNvbnN0IGN4ID0gY2xhbXAoeCAvIGIud2lkdGgpO1xyXG4gICAgICAgICAgICBjb25zdCBjeSA9IGNsYW1wKHkgLyBiLmhlaWdodCk7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGxvY2spIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9uY2hhbmdlKGN4KTtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9uY2hhbmdlKGN5KTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3gsIGN5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBzdG9wKCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMub25zdG9wKCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKGRvY3VtZW50LCBbJ21vdXNldXAnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnXSwgdGhhdC5fdGFwc3RvcCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKGRvY3VtZW50LCBbJ21vdXNlbW92ZScsICd0b3VjaG1vdmUnXSwgdGhhdC5fdGFwbW92ZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJpZ2dlcigpIHtcclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZSh4ID0gMCwgeSA9IDApIHtcclxuICAgICAgICAgICAgY29uc3Qge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH0gPSB0aGF0Lm9wdGlvbnMud3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMubG9jayA9PT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0geDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZSh7XHJcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBsZWZ0ICsgd2lkdGggKiB4LFxyXG4gICAgICAgICAgICAgICAgY2xpZW50WTogdG9wICsgaGVpZ2h0ICogeVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkZXN0cm95KCkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9ucywgX3RhcHN0YXJ0LCBfa2V5Ym9hcmR9ID0gdGhhdDtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsna2V5ZG93bicsICdrZXl1cCddLCBfa2V5Ym9hcmQpO1xyXG4gICAgICAgICAgICBfLm9mZihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAnbW91c2Vkb3duJywgX3RhcHN0YXJ0KTtcclxuICAgICAgICAgICAgXy5vZmYoW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ3RvdWNoc3RhcnQnLCBfdGFwc3RhcnQsIHtcclxuICAgICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlsaXplXHJcbiAgICBjb25zdCB7b3B0aW9ucywgX3RhcHN0YXJ0LCBfa2V5Ym9hcmR9ID0gdGhhdDtcclxuICAgIF8ub24oW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ21vdXNlZG93bicsIF90YXBzdGFydCk7XHJcbiAgICBfLm9uKFtvcHRpb25zLndyYXBwZXIsIG9wdGlvbnMuZWxlbWVudF0sICd0b3VjaHN0YXJ0JywgX3RhcHN0YXJ0LCB7XHJcbiAgICAgICAgcGFzc2l2ZTogZmFsc2VcclxuICAgIH0pO1xyXG5cclxuICAgIF8ub24oZG9jdW1lbnQsIFsna2V5ZG93bicsICdrZXl1cCddLCBfa2V5Ym9hcmQpO1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4uL3V0aWxzL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2VsZWN0YWJsZShvcHQgPSB7fSkge1xuICAgIG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvbmNoYW5nZTogKCkgPT4gMCxcbiAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgZWxlbWVudHM6IFtdXG4gICAgfSwgb3B0KTtcblxuICAgIGNvbnN0IG9uVGFwID0gXy5vbihvcHQuZWxlbWVudHMsICdjbGljaycsIGV2dCA9PiB7XG4gICAgICAgIG9wdC5lbGVtZW50cy5mb3JFYWNoKGUgPT5cbiAgICAgICAgICAgIGUuY2xhc3NMaXN0W2V2dC50YXJnZXQgPT09IGUgPyAnYWRkJyA6ICdyZW1vdmUnXShvcHQuY2xhc3NOYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIG9wdC5vbmNoYW5nZShldnQpO1xuXG4gICAgICAgIC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL3BpY2tyL2lzc3Vlcy8yNDNcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVzdHJveTogKCkgPT4gXy5vZmYoLi4ub25UYXApXG4gICAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4vdXRpbHMvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgaW5zdGFuY2UgPT4ge1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgICBjb21wb25lbnRzLFxyXG4gICAgICAgIHVzZUFzQnV0dG9uLFxyXG4gICAgICAgIGlubGluZSxcclxuICAgICAgICBhcHBDbGFzcyxcclxuICAgICAgICB0aGVtZSxcclxuICAgICAgICBsb2NrT3BhY2l0eVxyXG4gICAgfSA9IGluc3RhbmNlLm9wdGlvbnM7XHJcblxyXG4gICAgLy8gVXRpbHNcclxuICAgIGNvbnN0IGhpZGRlbiA9IGNvbiA9PiBjb24gPyAnJyA6ICdzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGhpZGRlbic7XHJcbiAgICBjb25zdCB0ID0gc3RyID0+IGluc3RhbmNlLl90KHN0cik7XHJcblxyXG4gICAgY29uc3Qgcm9vdCA9IF8uY3JlYXRlRnJvbVRlbXBsYXRlKGBcclxuICAgICAgPGRpdiA6cmVmPVwicm9vdFwiIGNsYXNzPVwicGlja3JcIj5cclxuXHJcbiAgICAgICAgJHt1c2VBc0J1dHRvbiA/ICcnIDogJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIDpyZWY9XCJidXR0b25cIiBjbGFzcz1cInBjci1idXR0b25cIj48L2J1dHRvbj4nfVxyXG5cclxuICAgICAgICA8ZGl2IDpyZWY9XCJhcHBcIiBjbGFzcz1cInBjci1hcHAgJHthcHBDbGFzcyB8fCAnJ31cIiBkYXRhLXRoZW1lPVwiJHt0aGVtZX1cIiAke2lubGluZSA/ICdzdHlsZT1cInBvc2l0aW9uOiB1bnNldFwiJyA6ICcnfSBhcmlhLWxhYmVsPVwiJHt0KCd1aTpkaWFsb2cnLCAnY29sb3IgcGlja2VyIGRpYWxvZycpfVwiIHJvbGU9XCJ3aW5kb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwY3Itc2VsZWN0aW9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5wYWxldHRlKX0+XHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cInByZXZpZXdcIiBjbGFzcz1cInBjci1jb2xvci1wcmV2aWV3XCIgJHtoaWRkZW4oY29tcG9uZW50cy5wcmV2aWV3KX0+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgOnJlZj1cImxhc3RDb2xvclwiIGNsYXNzPVwicGNyLWxhc3QtY29sb3JcIiBhcmlhLWxhYmVsPVwiJHt0KCdidG46bGFzdC1jb2xvcicpfVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwicGNyLWN1cnJlbnQtY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IDpvYmo9XCJwYWxldHRlXCIgY2xhc3M9XCJwY3ItY29sb3ItcGFsZXR0ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBpY2tlclwiIGNsYXNzPVwicGNyLXBpY2tlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBhbGV0dGVcIiBjbGFzcz1cInBjci1wYWxldHRlXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpwYWxldHRlJyl9XCIgcm9sZT1cImxpc3Rib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IDpvYmo9XCJodWVcIiBjbGFzcz1cInBjci1jb2xvci1jaG9vc2VyXCIgJHtoaWRkZW4oY29tcG9uZW50cy5odWUpfT5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJwaWNrZXJcIiBjbGFzcz1cInBjci1waWNrZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJzbGlkZXJcIiBjbGFzcz1cInBjci1odWUgcGNyLXNsaWRlclwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6aHVlJyl9XCIgcm9sZT1cInNsaWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cIm9wYWNpdHlcIiBjbGFzcz1cInBjci1jb2xvci1vcGFjaXR5XCIgJHtoaWRkZW4oY29tcG9uZW50cy5vcGFjaXR5KX0+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGlja2VyXCIgY2xhc3M9XCJwY3ItcGlja2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwic2xpZGVyXCIgY2xhc3M9XCJwY3Itb3BhY2l0eSBwY3Itc2xpZGVyXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpvcGFjaXR5JywgJ29wYWNpdHkgc2VsZWN0aW9uIHNsaWRlcicpfVwiIHJvbGU9XCJzbGlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGNyLXN3YXRjaGVzICR7Y29tcG9uZW50cy5wYWxldHRlID8gJycgOiAncGNyLWxhc3QnfVwiIDpyZWY9XCJzd2F0Y2hlc1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgOm9iaj1cImludGVyYWN0aW9uXCIgY2xhc3M9XCJwY3ItaW50ZXJhY3Rpb25cIiAke2hpZGRlbihPYmplY3Qua2V5cyhjb21wb25lbnRzLmludGVyYWN0aW9uKS5sZW5ndGgpfT5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJyZXN1bHRcIiBjbGFzcz1cInBjci1yZXN1bHRcIiB0eXBlPVwidGV4dFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaW5wdXQpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmlucHV0JywgJ2NvbG9yIGlucHV0IGZpZWxkJyl9XCI+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiSEVYQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdIRVgnIDogJ0hFWEEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmhleCl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiUkdCQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdSR0InIDogJ1JHQkEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLnJnYmEpfT5cclxuICAgICAgICAgICAgPGlucHV0IDphcnI9XCJvcHRpb25zXCIgY2xhc3M9XCJwY3ItdHlwZVwiIGRhdGEtdHlwZT1cIkhTTEFcIiB2YWx1ZT1cIiR7bG9ja09wYWNpdHkgPyAnSFNMJyA6ICdIU0xBJ31cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5oc2xhKX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJIU1ZBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ0hTVicgOiAnSFNWQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaHN2YSl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiQ01ZS1wiIHZhbHVlPVwiQ01ZS1wiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmNteWspfT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwic2F2ZVwiIGNsYXNzPVwicGNyLXNhdmVcIiB2YWx1ZT1cIiR7dCgnYnRuOnNhdmUnKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5zYXZlKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46c2F2ZScpfVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgOnJlZj1cImNhbmNlbFwiIGNsYXNzPVwicGNyLWNhbmNlbFwiIHZhbHVlPVwiJHt0KCdidG46Y2FuY2VsJyl9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uY2FuY2VsKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46Y2FuY2VsJyl9XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwiY2xlYXJcIiBjbGFzcz1cInBjci1jbGVhclwiIHZhbHVlPVwiJHt0KCdidG46Y2xlYXInKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5jbGVhcil9IGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6YnRuOmNsZWFyJyl9XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgKTtcclxuXHJcbiAgICBjb25zdCBpbnQgPSByb290LmludGVyYWN0aW9uO1xyXG5cclxuICAgIC8vIFNlbGVjdCBvcHRpb24gd2hpY2ggaXMgbm90IGhpZGRlblxyXG4gICAgaW50Lm9wdGlvbnMuZmluZChvID0+ICFvLmhpZGRlbiAmJiAhby5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKSk7XHJcblxyXG4gICAgLy8gQXBwZW5kIG1ldGhvZCB0byBmaW5kIGN1cnJlbnRseSBhY3RpdmUgb3B0aW9uXHJcbiAgICBpbnQudHlwZSA9ICgpID0+IGludC5vcHRpb25zLmZpbmQoZSA9PiBlLmNsYXNzTGlzdC5jb250YWlucygnYWN0aXZlJykpO1xyXG4gICAgcmV0dXJuIHJvb3Q7XHJcbn07XHJcbiIsICJ0eXBlIERpcmVjdGlvbiA9ICd0b3AnIHwgJ2xlZnQnIHwgJ2JvdHRvbScgfCAncmlnaHQnO1xuXG5leHBvcnQgdHlwZSBWYXJpYW50RmxpcE9yZGVyID0ge1xuICAgIHN0YXJ0OiBzdHJpbmc7XG4gICAgbWlkZGxlOiBzdHJpbmc7XG4gICAgZW5kOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbkZsaXBPcmRlciA9IHtcbiAgICB0b3A6IHN0cmluZztcbiAgICByaWdodDogc3RyaW5nO1xuICAgIGJvdHRvbTogc3RyaW5nO1xuICAgIGxlZnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5hbm9Qb3BQb3NpdGlvbiA9XG4gICAgJ3RvcC1zdGFydCcgfCAndG9wLW1pZGRsZScgfCAndG9wLWVuZCcgfFxuICAgICdsZWZ0LXN0YXJ0JyB8ICdsZWZ0LW1pZGRsZScgfCAnbGVmdC1lbmQnIHxcbiAgICAncmlnaHQtc3RhcnQnIHwgJ3JpZ2h0LW1pZGRsZScgfCAncmlnaHQtZW5kJyB8XG4gICAgJ2JvdHRvbS1zdGFydCcgfCAnYm90dG9tLW1pZGRsZScgfCAnYm90dG9tLWVuZCcgfCBEaXJlY3Rpb247XG5cbmV4cG9ydCB0eXBlIE5hbm9Qb3BPcHRpb25zID0ge1xuICAgIGNvbnRhaW5lcjogRE9NUmVjdDtcbiAgICBwb3NpdGlvbjogTmFub1BvcFBvc2l0aW9uO1xuICAgIHZhcmlhbnRGbGlwT3JkZXI6IFZhcmlhbnRGbGlwT3JkZXI7XG4gICAgcG9zaXRpb25GbGlwT3JkZXI6IFBvc2l0aW9uRmxpcE9yZGVyO1xuICAgIG1hcmdpbjogbnVtYmVyO1xuICAgIHJlZmVyZW5jZT86IEhUTUxFbGVtZW50O1xuICAgIHBvcHBlcj86IEhUTUxFbGVtZW50O1xufTtcblxudHlwZSBBdmFpbGFibGVQb3NpdGlvbnMgPSB7XG4gICAgdDogbnVtYmVyO1xuICAgIGI6IG51bWJlcjtcbiAgICBsOiBudW1iZXI7XG4gICAgcjogbnVtYmVyO1xufTtcblxudHlwZSBBdmFpbGFibGVWYXJpYW50cyA9IHtcbiAgICB2czogbnVtYmVyO1xuICAgIHZtOiBudW1iZXI7XG4gICAgdmU6IG51bWJlcjtcbiAgICBoczogbnVtYmVyO1xuICAgIGhtOiBudW1iZXI7XG4gICAgaGU6IG51bWJlcjtcbn07XG5cbnR5cGUgUG9zaXRpb25QYWlycyA9IFtEaXJlY3Rpb24sIERpcmVjdGlvbl07XG5leHBvcnQgdHlwZSBQb3NpdGlvbk1hdGNoID0gJ3RzJyB8ICd0bScgfCAndGUnIHwgJ2JzJyB8ICdibScgfCAnYmUnIHwgJ2xzJyB8ICdsbScgfCAnbGUnIHwgJ3JzJyB8ICdybScgfCAncmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hbm9Qb3Age1xuICAgIHVwZGF0ZSh1cGRhdGVkT3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogUG9zaXRpb25NYXRjaCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFub1BvcENvbnN0cnVjdG9yIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2UgUmVmZXJlbmNlIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gcG9wcGVyIEFjdHVhbCBwb3BwZXIgZWxlbWVudFxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcbiAgICAgKi9cbiAgICAocmVmZXJlbmNlOiBIVE1MRWxlbWVudCwgcG9wcGVyOiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogTmFub1BvcDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFBhcnRpYWwgb3B0aW9ucyB3aGljaCBnZXQgbWVyZ2VkIHdpdGggdGhlIGN1cnJlbnQgb25lXG4gICAgICovXG4gICAgKG9wdGlvbnM/OiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPik6IE5hbm9Qb3A7XG59XG5cbi8vIEV4cG9ydCBjdXJyZW50IHZlcnNpb25cbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gVkVSU0lPTjtcblxuLy8gRXhwb3J0IGRlZmF1bHRcbmV4cG9ydCBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICB2YXJpYW50RmxpcE9yZGVyOiB7c3RhcnQ6ICdzbWUnLCBtaWRkbGU6ICdtc2UnLCBlbmQ6ICdlbXMnfSxcbiAgICBwb3NpdGlvbkZsaXBPcmRlcjoge3RvcDogJ3RicmwnLCByaWdodDogJ3JsdGInLCBib3R0b206ICdidHJsJywgbGVmdDogJ2xyYnQnfSxcbiAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgbWFyZ2luOiA4XG59O1xuXG4vKipcbiAqIFJlcG9zaXRpb25zIGFuIGVsZW1lbnQgb25jZSB1c2luZyB0aGUgcHJvdmlkZWQgb3B0aW9ucyBhbmQgZWxlbWVudHMuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFJlZmVyZW5jZSBlbGVtZW50XG4gKiBAcGFyYW0gcG9wcGVyIFBvcHBlciBlbGVtZW50XG4gKiBAcGFyYW0gb3B0IE9wdGlvbmFsLCBhZGRpdGlvbmFsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcG9zaXRpb24gPSAoXG4gICAgcmVmZXJlbmNlOiBIVE1MRWxlbWVudCxcbiAgICBwb3BwZXI6IEhUTUxFbGVtZW50LFxuICAgIG9wdD86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+XG4pOiBQb3NpdGlvbk1hdGNoIHwgbnVsbCA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIG1hcmdpbixcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIHZhcmlhbnRGbGlwT3JkZXIsXG4gICAgICAgIHBvc2l0aW9uRmxpcE9yZGVyXG4gICAgfSA9IHtcbiAgICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgICAuLi5vcHRcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVzZXQgcG9zaXRpb24gdG8gcmVzb2x2ZSB2aWV3cG9ydFxuICAgICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvcG9zaXRpb24jZml4ZWRcbiAgICAgKi9cbiAgICBjb25zdCB7bGVmdDogb3JpZ2luYWxMZWZ0LCB0b3A6IG9yaWdpbmFsVG9wfSA9IHBvcHBlci5zdHlsZTtcbiAgICBwb3BwZXIuc3R5bGUubGVmdCA9ICcwJztcbiAgICBwb3BwZXIuc3R5bGUudG9wID0gJzAnO1xuXG4gICAgY29uc3QgcmVmQm94ID0gcmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvcEJveCA9IHBvcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIGNvb3JkaW5hdGVzIG9mIHRvcCwgbGVmdCwgYm90dG9tIGFuZCByaWdodCBhbGlnbm1lbnRcbiAgICAgKi9cbiAgICBjb25zdCBwb3NpdGlvblN0b3JlOiBBdmFpbGFibGVQb3NpdGlvbnMgPSB7XG4gICAgICAgIHQ6IHJlZkJveC50b3AgLSBwb3BCb3guaGVpZ2h0IC0gbWFyZ2luLFxuICAgICAgICBiOiByZWZCb3guYm90dG9tICsgbWFyZ2luLFxuICAgICAgICByOiByZWZCb3gucmlnaHQgKyBtYXJnaW4sXG4gICAgICAgIGw6IHJlZkJveC5sZWZ0IC0gcG9wQm94LndpZHRoIC0gbWFyZ2luXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIGNvcnJlc3BvbmRpbmcgdmFyaWFudHMgKHN0YXJ0LCBtaWRkbGUsIGVuZCkuXG4gICAgICogVGhlIHZhbHVlcyBkZXBlbmQgb24gaG9yaXpvbnRhbCAvIHZlcnRpY2FsIG9yaWVudGF0aW9uXG4gICAgICovXG4gICAgY29uc3QgdmFyaWFudFN0b3JlOiBBdmFpbGFibGVWYXJpYW50cyA9IHtcbiAgICAgICAgdnM6IHJlZkJveC5sZWZ0LFxuICAgICAgICB2bTogcmVmQm94LmxlZnQgKyByZWZCb3gud2lkdGggLyAyICsgLXBvcEJveC53aWR0aCAvIDIsXG4gICAgICAgIHZlOiByZWZCb3gubGVmdCArIHJlZkJveC53aWR0aCAtIHBvcEJveC53aWR0aCxcbiAgICAgICAgaHM6IHJlZkJveC50b3AsXG4gICAgICAgIGhtOiByZWZCb3guYm90dG9tIC0gcmVmQm94LmhlaWdodCAvIDIgLSBwb3BCb3guaGVpZ2h0IC8gMixcbiAgICAgICAgaGU6IHJlZkJveC5ib3R0b20gLSBwb3BCb3guaGVpZ2h0XG4gICAgfTtcblxuICAgIC8vIEV4dHJhY3QgcG9zaXRpb24gYW5kIHZhcmlhbnRcbiAgICAvLyBUb3Atc3RhcnQgLT4gdG9wIGlzIFwicG9zaXRpb25cIiBhbmQgXCJzdGFydFwiIGlzIHRoZSB2YXJpYW50XG4gICAgY29uc3QgW3Bvc0tleSwgdmFyS2V5ID0gJ21pZGRsZSddID0gcG9zaXRpb24uc3BsaXQoJy0nKTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvbkZsaXBPcmRlcltwb3NLZXkgYXMga2V5b2YgUG9zaXRpb25GbGlwT3JkZXJdO1xuICAgIGNvbnN0IHZhcmlhbnRzID0gdmFyaWFudEZsaXBPcmRlclt2YXJLZXkgYXMga2V5b2YgVmFyaWFudEZsaXBPcmRlcl07XG5cbiAgICAvLyBUcnkgb3V0IGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMsIHN0YXJ0aW5nIHdpdGggdGhlIHByZWZlcnJlZCBvbmUuXG4gICAgY29uc3Qge3RvcCwgbGVmdCwgYm90dG9tLCByaWdodH0gPSBjb250YWluZXI7XG5cbiAgICBmb3IgKGNvbnN0IHAgb2YgcG9zaXRpb25zKSB7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsID0gKHAgPT09ICd0JyB8fCBwID09PSAnYicpO1xuXG4gICAgICAgIC8vIFRoZSBwb3NpdGlvbi12YWx1ZVxuICAgICAgICBjb25zdCBwb3NpdGlvblZhbCA9IHBvc2l0aW9uU3RvcmVbcCBhcyBrZXlvZiBBdmFpbGFibGVQb3NpdGlvbnNdO1xuXG4gICAgICAgIC8vIFdoaWNoIHByb3BlcnR5IGhhcyB0byBiZSBjaGFuZ2VzLlxuICAgICAgICBjb25zdCBbcG9zaXRpb25LZXksIHZhcmlhbnRLZXldID0gKHZlcnRpY2FsID8gWyd0b3AnLCAnbGVmdCddIDogWydsZWZ0JywgJ3RvcCddKSBhcyBQb3NpdGlvblBhaXJzO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBib3ggcmVmZXJzIHRvIHRoZSBzaXplIG9mIHRoZSBwb3BwZXIgZWxlbWVudC4gRGVwZW5kaW5nIG9uIHRoZSBvcmllbnRhdGlvbiB0aGlzIGlzIHdpZHRoIG9yIGhlaWdodC5cbiAgICAgICAgICogVGhlIGxpbWl0IGlzIHRoZSBjb3JyZXNwb25kaW5nLCBtYXhpbXVtIHZhbHVlIGZvciB0aGlzIHBvc2l0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgW3Bvc2l0aW9uU2l6ZSwgdmFyaWFudFNpemVdID0gdmVydGljYWwgPyBbcG9wQm94LmhlaWdodCwgcG9wQm94LndpZHRoXSA6IFtwb3BCb3gud2lkdGgsIHBvcEJveC5oZWlnaHRdO1xuICAgICAgICBjb25zdCBbcG9zaXRpb25NYXhpbXVtLCB2YXJpYW50TWF4aW11bV0gPSB2ZXJ0aWNhbCA/IFtib3R0b20sIHJpZ2h0XSA6IFtyaWdodCwgYm90dG9tXTtcbiAgICAgICAgY29uc3QgW3Bvc2l0aW9uTWluaW11bSwgdmFyaWFudE1pbmltdW1dID0gdmVydGljYWwgPyBbdG9wLCBsZWZ0XSA6IFtsZWZ0LCB0b3BdO1xuXG4gICAgICAgIC8vIFNraXAgcHJlLWNsaXBwZWQgdmFsdWVzXG4gICAgICAgIGlmIChwb3NpdGlvblZhbCA8IHBvc2l0aW9uTWluaW11bSB8fCAocG9zaXRpb25WYWwgKyBwb3NpdGlvblNpemUpID4gcG9zaXRpb25NYXhpbXVtKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdiBvZiB2YXJpYW50cykge1xuXG4gICAgICAgICAgICAvLyBUaGUgcG9zaXRpb24tdmFsdWUsIHRoZSByZWxhdGVkIHNpemUgdmFsdWUgb2YgdGhlIHBvcHBlciBhbmQgdGhlIGxpbWl0XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50VmFsID0gdmFyaWFudFN0b3JlWygodmVydGljYWwgPyAndicgOiAnaCcpICsgdikgYXMga2V5b2YgQXZhaWxhYmxlVmFyaWFudHNdO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFudFZhbCA8IHZhcmlhbnRNaW5pbXVtIHx8ICh2YXJpYW50VmFsICsgdmFyaWFudFNpemUpID4gdmFyaWFudE1heGltdW0pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBwbHkgc3R5bGVzIGFuZCBub3JtYWxpemUgdmlld3BvcnRcbiAgICAgICAgICAgIHBvcHBlci5zdHlsZVt2YXJpYW50S2V5XSA9IGAke3ZhcmlhbnRWYWwgLSBwb3BCb3hbdmFyaWFudEtleV19cHhgO1xuICAgICAgICAgICAgcG9wcGVyLnN0eWxlW3Bvc2l0aW9uS2V5XSA9IGAke3Bvc2l0aW9uVmFsIC0gcG9wQm94W3Bvc2l0aW9uS2V5XX1weGA7XG4gICAgICAgICAgICByZXR1cm4gKHAgKyB2KSBhcyBQb3NpdGlvbk1hdGNoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV2ZXJ0IHN0eWxlIHZhbHVlcyAod29uJ3Qgd29yayB3aXRoIHN0eWxlZC1lbGVtZW50cyBvciBzaW1pbGFyIHN5c3RlbXMpXG4gICAgLy8gXCJGaXhcIiBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL25hbm9wb3AvaXNzdWVzLzdcbiAgICBwb3BwZXIuc3R5bGUubGVmdCA9IG9yaWdpbmFsTGVmdDtcbiAgICBwb3BwZXIuc3R5bGUudG9wID0gb3JpZ2luYWxUb3A7XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YXRlZnVsIHBvcHBlci5cbiAqIFlvdSBjYW4gZWl0aGVyLi4uXG4gKiAuLi4gcGFzcyBhbiBvcHRpb25zIG9iamVjdDogY3JlYXRlUG9wcGVyKDxvcHRpb25zPilcbiAqIC4uLiBwYXNzIGJvdGggdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyOiBjcmVhdGUoPHJlZj4sIDxlbD4sIDw/b3B0aW9ucz4pXG4gKiAuLi4gcGFzcyBub3RoaW5nLCBpbiB0aGlzIGNhc2UgeW91J2xsIGhhdmUgdG8gc2V0IGF0IGxlYXN0IGJvdGggYSByZWZlcmVuY2UgYW5kIGEgcG9wcGVyIGluIHVwZGF0ZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIHwgb3B0aW9ucyBSZWZlcmVuY2UgZWxlbWVudCBvciBvcHRpb25zXG4gKiBAcGFyYW0gcG9wcGVyIFBvcHBlciBlbGVtZW50XG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBhZGRpdGlvbmFsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvcHBlcjogTmFub1BvcENvbnN0cnVjdG9yID0gKFxuICAgIHJlZmVyZW5jZT86IEhUTUxFbGVtZW50IHwgUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4sXG4gICAgcG9wcGVyPzogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+XG4pOiBOYW5vUG9wID0+IHtcblxuICAgIC8vIFJlc29sdmUgb3B0aW9uc1xuICAgIGNvbnN0IGJhc2VPcHRpb25zOiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPiA9IHR5cGVvZiByZWZlcmVuY2UgPT09ICdvYmplY3QnICYmICEocmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpID9cbiAgICAgICAgcmVmZXJlbmNlIDoge3JlZmVyZW5jZSwgcG9wcGVyLCAuLi5vcHRpb25zfTtcblxuICAgIHJldHVybiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlcG9zaXRpb25zIHRoZSBjdXJyZW50IHBvcHBlci5cbiAgICAgICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyB3aGljaCBnZXQgbWVyZ2VkIHdpdGggdGhlIGN1cnJlbnQgb25lcy5cbiAgICAgICAgICovXG4gICAgICAgIHVwZGF0ZShvcHRpb25zOiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPiA9IGJhc2VPcHRpb25zKTogUG9zaXRpb25NYXRjaCB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qge3JlZmVyZW5jZSwgcG9wcGVyfSA9IE9iamVjdC5hc3NpZ24oYmFzZU9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAoIXBvcHBlciB8fCAhcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3BwZXItIG9yIHJlZmVyZW5jZS1lbGVtZW50IG1pc3NpbmcuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXBvc2l0aW9uKHJlZmVyZW5jZSwgcG9wcGVyLCBiYXNlT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtwYXJzZVRvSFNWQX0gZnJvbSAnLi91dGlscy9jb2xvcic7XG5pbXBvcnQge0hTVmFDb2xvcn0gZnJvbSAnLi91dGlscy9oc3ZhY29sb3InO1xuaW1wb3J0IE1vdmVhYmxlIGZyb20gJy4vbGlicy9tb3ZlYWJsZSc7XG5pbXBvcnQgU2VsZWN0YWJsZSBmcm9tICcuL2xpYnMvc2VsZWN0YWJsZSc7XG5pbXBvcnQgYnVpbGRQaWNrciBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7Y3JlYXRlUG9wcGVyfSBmcm9tICduYW5vcG9wJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGlja3Ige1xuXG4gICAgLy8gRXhwb3NlIHBpY2tyIHV0aWxzXG4gICAgc3RhdGljIHV0aWxzID0gXztcblxuICAgIC8vIEFzc2lnbiB2ZXJzaW9uIGFuZCBleHBvcnRcbiAgICBzdGF0aWMgdmVyc2lvbiA9IFZFUlNJT047XG5cbiAgICAvLyBEZWZhdWx0IHN0cmluZ3NcbiAgICBzdGF0aWMgSTE4Tl9ERUZBVUxUUyA9IHtcblxuICAgICAgICAvLyBTdHJpbmdzIHZpc2libGUgaW4gdGhlIFVJXG4gICAgICAgICd1aTpkaWFsb2cnOiAnY29sb3IgcGlja2VyIGRpYWxvZycsXG4gICAgICAgICdidG46dG9nZ2xlJzogJ3RvZ2dsZSBjb2xvciBwaWNrZXIgZGlhbG9nJyxcbiAgICAgICAgJ2J0bjpzd2F0Y2gnOiAnY29sb3Igc3dhdGNoJyxcbiAgICAgICAgJ2J0bjpsYXN0LWNvbG9yJzogJ3VzZSBwcmV2aW91cyBjb2xvcicsXG4gICAgICAgICdidG46c2F2ZSc6ICdTYXZlJyxcbiAgICAgICAgJ2J0bjpjYW5jZWwnOiAnQ2FuY2VsJyxcbiAgICAgICAgJ2J0bjpjbGVhcic6ICdDbGVhcicsXG5cbiAgICAgICAgLy8gU3RyaW5ncyB1c2VkIGZvciBhcmlhLWxhYmVsc1xuICAgICAgICAnYXJpYTpidG46c2F2ZSc6ICdzYXZlIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmJ0bjpjYW5jZWwnOiAnY2FuY2VsIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmJ0bjpjbGVhcic6ICdjbGVhciBhbmQgY2xvc2UnLFxuICAgICAgICAnYXJpYTppbnB1dCc6ICdjb2xvciBpbnB1dCBmaWVsZCcsXG4gICAgICAgICdhcmlhOnBhbGV0dGUnOiAnY29sb3Igc2VsZWN0aW9uIGFyZWEnLFxuICAgICAgICAnYXJpYTpodWUnOiAnaHVlIHNlbGVjdGlvbiBzbGlkZXInLFxuICAgICAgICAnYXJpYTpvcGFjaXR5JzogJ3NlbGVjdGlvbiBzbGlkZXInXG4gICAgfTtcblxuICAgIC8vIERlZmF1bHQgb3B0aW9uc1xuICAgIHN0YXRpYyBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgICAgIGFwcENsYXNzOiBudWxsLFxuICAgICAgICB0aGVtZTogJ2NsYXNzaWMnLFxuICAgICAgICB1c2VBc0J1dHRvbjogZmFsc2UsXG4gICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY29tcGFyaXNvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPblNjcm9sbDogZmFsc2UsXG4gICAgICAgIG91dHB1dFByZWNpc2lvbjogMCxcbiAgICAgICAgbG9ja09wYWNpdHk6IGZhbHNlLFxuICAgICAgICBhdXRvUmVwb3NpdGlvbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG5cbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgaW50ZXJhY3Rpb246IHt9XG4gICAgICAgIH0sXG5cbiAgICAgICAgaTE4bjoge30sXG4gICAgICAgIHN3YXRjaGVzOiBudWxsLFxuICAgICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgICBzbGlkZXJzOiBudWxsLFxuXG4gICAgICAgIGRlZmF1bHQ6ICcjNDI0NDVhJyxcbiAgICAgICAgZGVmYXVsdFJlcHJlc2VudGF0aW9uOiBudWxsLFxuICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbS1taWRkbGUnLFxuICAgICAgICBhZGp1c3RhYmxlTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgc2hvd0Fsd2F5czogZmFsc2UsXG5cbiAgICAgICAgY2xvc2VXaXRoS2V5OiAnRXNjYXBlJ1xuICAgIH07XG5cbiAgICAvLyBXaWxsIGJlIHVzZWQgdG8gcHJldmVudCBzcGVjaWZpYyBhY3Rpb25zIGR1cmluZyBpbml0aWxpemF0aW9uXG4gICAgX2luaXRpYWxpemluZ0FjdGl2ZSA9IHRydWU7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudCBjb2xvciB2YWx1ZSBzaG91bGQgYmUgcmVjYWxjdWxhdGVkXG4gICAgX3JlY2FsYyA9IHRydWU7XG5cbiAgICAvLyBQb3NpdGlvbmluZyBlbmdpbmUgYW5kIERPTS1UcmVlXG4gICAgX25hbm9wb3AgPSBudWxsO1xuICAgIF9yb290ID0gbnVsbDtcblxuICAgIC8vIEN1cnJlbnQgYW5kIGxhc3QgY29sb3IgZm9yIGNvbXBhcmlzb25cbiAgICBfY29sb3IgPSBIU1ZhQ29sb3IoKTtcbiAgICBfbGFzdENvbG9yID0gSFNWYUNvbG9yKCk7XG4gICAgX3N3YXRjaENvbG9ycyA9IFtdO1xuXG4gICAgLy8gQW5pbWF0aW9uIGZyYW1lIHVzZWQgZm9yIHNldHVwLlxuICAgIC8vIFdpbGwgYmUgY2FuY2VsbGVkIGluIGNhc2Ugb2YgZGVzdHJ1Y3Rpb24uXG4gICAgX3NldHVwQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xuXG4gICAgLy8gRXZlbmxpc3RlbmVyIG5hbWU6IFtjYWxsYmFja3NdXG4gICAgX2V2ZW50TGlzdGVuZXIgPSB7XG4gICAgICAgIGluaXQ6IFtdLFxuICAgICAgICBzYXZlOiBbXSxcbiAgICAgICAgaGlkZTogW10sXG4gICAgICAgIHNob3c6IFtdLFxuICAgICAgICBjbGVhcjogW10sXG4gICAgICAgIGNoYW5nZTogW10sXG4gICAgICAgIGNoYW5nZXN0b3A6IFtdLFxuICAgICAgICBjYW5jZWw6IFtdLFxuICAgICAgICBzd2F0Y2hzZWxlY3Q6IFtdXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuXG4gICAgICAgIC8vIEFzc2lnbiBkZWZhdWx0IHZhbHVlc1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHQgPSBPYmplY3QuYXNzaWduKHsuLi5QaWNrci5ERUZBVUxUX09QVElPTlN9LCBvcHQpO1xuXG4gICAgICAgIGNvbnN0IHtzd2F0Y2hlcywgY29tcG9uZW50cywgdGhlbWUsIHNsaWRlcnMsIGxvY2tPcGFjaXR5LCBwYWRkaW5nfSA9IG9wdDtcblxuICAgICAgICBpZiAoWyduYW5vJywgJ21vbm9saXRoJ10uaW5jbHVkZXModGhlbWUpICYmICFzbGlkZXJzKSB7XG4gICAgICAgICAgICBvcHQuc2xpZGVycyA9ICdoJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGludGVyYWN0aW9uIHNlY3Rpb25cbiAgICAgICAgaWYgKCFjb21wb25lbnRzLmludGVyYWN0aW9uKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmludGVyYWN0aW9uID0ge307XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVyd3JpdGUgcGFsZXR0ZSBpZiBwcmV2aWV3LCBvcGFjaXR5IG9yIGh1ZSBhcmUgdHJ1ZVxuICAgICAgICBjb25zdCB7cHJldmlldywgb3BhY2l0eSwgaHVlLCBwYWxldHRlfSA9IGNvbXBvbmVudHM7XG4gICAgICAgIGNvbXBvbmVudHMub3BhY2l0eSA9ICghbG9ja09wYWNpdHkgJiYgb3BhY2l0eSk7XG4gICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZSA9IHBhbGV0dGUgfHwgcHJldmlldyB8fCBvcGFjaXR5IHx8IGh1ZTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHBpY2tlclxuICAgICAgICB0aGlzLl9wcmVCdWlsZCgpO1xuICAgICAgICB0aGlzLl9idWlsZENvbXBvbmVudHMoKTtcbiAgICAgICAgdGhpcy5fYmluZEV2ZW50cygpO1xuICAgICAgICB0aGlzLl9maW5hbEJ1aWxkKCk7XG5cbiAgICAgICAgLy8gQXBwZW5kIHByZS1kZWZpbmVkIHN3YXRjaCBjb2xvcnNcbiAgICAgICAgaWYgKHN3YXRjaGVzICYmIHN3YXRjaGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3dhdGNoZXMuZm9yRWFjaChjb2xvciA9PiB0aGlzLmFkZFN3YXRjaChjb2xvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwb3NpdGlvbmluZyBlbmdpbmVcbiAgICAgICAgY29uc3Qge2J1dHRvbiwgYXBwfSA9IHRoaXMuX3Jvb3Q7XG4gICAgICAgIHRoaXMuX25hbm9wb3AgPSBjcmVhdGVQb3BwZXIoYnV0dG9uLCBhcHAsIHtcbiAgICAgICAgICAgIG1hcmdpbjogcGFkZGluZ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIGFjY2Vzc2liaWxpdHlcbiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgncm9sZScsICdidXR0b24nKTtcbiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuX3QoJ2J0bjp0b2dnbGUnKSk7XG5cbiAgICAgICAgLy8gSW5pdGlsaXphdGlvbiBpcyBmaW5pc2gsIHBpY2tyIGlzIHZpc2libGUgYW5kIHJlYWR5IGZvciB1c2FnZVxuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgdGhpcy5fc2V0dXBBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24gY2IoKSB7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFBlcmZvcm1hbmNlIGlzc3VlIGR1ZSB0byBoaWdoIGNhbGwtcmF0ZT9cbiAgICAgICAgICAgIGlmICghYXBwLm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGRlZmF1bHQgY29sb3JcbiAgICAgICAgICAgIHRoYXQuc2V0Q29sb3Iob3B0LmRlZmF1bHQpO1xuICAgICAgICAgICAgdGhhdC5fcmVQb3NpdGlvbmluZ1BpY2tlcigpO1xuXG4gICAgICAgICAgICAvLyBJbml0aWFsaXplIGNvbG9yIHJlcHJlc2VudGF0aW9uXG4gICAgICAgICAgICBpZiAob3B0LmRlZmF1bHRSZXByZXNlbnRhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoYXQuX3JlcHJlc2VudGF0aW9uID0gb3B0LmRlZmF1bHRSZXByZXNlbnRhdGlvbjtcbiAgICAgICAgICAgICAgICB0aGF0LnNldENvbG9yUmVwcmVzZW50YXRpb24odGhhdC5fcmVwcmVzZW50YXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaG93IHBpY2tyIGlmIGxvY2tlZFxuICAgICAgICAgICAgaWYgKG9wdC5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICAgICAgdGhhdC5zaG93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIGRvbmUgLSBwaWNrciBpcyB1c2FibGUsIGZpcmUgaW5pdCBldmVudFxuICAgICAgICAgICAgdGhhdC5faW5pdGlhbGl6aW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGF0Ll9lbWl0KCdpbml0Jyk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW5zdGFuY2UgdmlhIG1ldGhvZFxuICAgIHN0YXRpYyBjcmVhdGUgPSBvcHRpb25zID0+IG5ldyBQaWNrcihvcHRpb25zKTtcblxuICAgIC8vIERvZXMgb25seSB0aGUgYWJzb2x1dGx5IGJhc2ljIHRoaW5nIHRvIGluaXRpYWxpemUgdGhlIGNvbXBvbmVudHNcbiAgICBfcHJlQnVpbGQoKSB7XG4gICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXM7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBlbGVtZW50c1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgWydlbCcsICdjb250YWluZXInXSkge1xuICAgICAgICAgICAgb3B0aW9uc1t0eXBlXSA9IF8ucmVzb2x2ZUVsZW1lbnQob3B0aW9uc1t0eXBlXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgZWxlbWVudCBhbmQgYXBwZW5kIGl0IHRvIGJvZHkgdG9cbiAgICAgICAgLy8gUHJldmVudCBpbml0aWFsaXphdGlvbiBlcnJvcnNcbiAgICAgICAgdGhpcy5fcm9vdCA9IGJ1aWxkUGlja3IodGhpcyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYSBjdXN0b20gYnV0dG9uIGlzIHVzZWRcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uID0gb3B0aW9ucy5lbDsgLy8gUmVwbGFjZSBidXR0b24gd2l0aCBjdXN0b21pemVkIGJ1dHRvblxuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm9vdC5yb290KTtcbiAgICB9XG5cbiAgICBfZmluYWxCdWlsZCgpIHtcbiAgICAgICAgY29uc3Qgb3B0ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fcm9vdDtcblxuICAgICAgICAvLyBSZW1vdmUgZnJvbSBib2R5XG4gICAgICAgIG9wdC5jb250YWluZXIucmVtb3ZlQ2hpbGQocm9vdC5yb290KTtcblxuICAgICAgICBpZiAob3B0LmlubGluZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gb3B0LmVsLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChvcHQuZWwubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHJvb3QuYXBwLCBvcHQuZWwubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocm9vdC5hcHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChyb290LmFwcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCByZXBsYWNlIHRoZSB0aGUgZWxlbWVudCBpZiBhIGN1c3RvbSBidXR0b24gaXMgdXNlZFxuICAgICAgICBpZiAoIW9wdC51c2VBc0J1dHRvbikge1xuXG4gICAgICAgICAgICAvLyBSZXBsYWNlIGVsZW1lbnQgd2l0aCBhY3R1YWwgY29sb3ItcGlja2VyXG4gICAgICAgICAgICBvcHQuZWwucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocm9vdC5yb290LCBvcHQuZWwpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdC5pbmxpbmUpIHtcbiAgICAgICAgICAgIG9wdC5lbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGl0IHNob3VsZCBiZSBpbW1lZGlhdGx5IGRpc2FibGVkXG4gICAgICAgIGlmIChvcHQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgY29tcGFyaXNvbiBpcyBkaXNhYmxlZCwgaWYgeWVzIC0gcmVtb3ZlIHRyYW5zaXRpb25zIHNvIGV2ZXJ5dGhpbmcga2VlcHMgc21vb3RobHlcbiAgICAgICAgaWYgKCFvcHQuY29tcGFyaXNvbikge1xuICAgICAgICAgICAgcm9vdC5idXR0b24uc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcblxuICAgICAgICAgICAgaWYgKCFvcHQudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgICAgICByb290LnByZXZpZXcubGFzdENvbG9yLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBfYnVpbGRDb21wb25lbnRzKCkge1xuXG4gICAgICAgIC8vIEluc3RhbmNlIHJlZmVyZW5jZVxuICAgICAgICBjb25zdCBpbnN0ID0gdGhpcztcbiAgICAgICAgY29uc3QgY3MgPSB0aGlzLm9wdGlvbnMuY29tcG9uZW50cztcbiAgICAgICAgY29uc3Qgc2xpZGVycyA9IChpbnN0Lm9wdGlvbnMuc2xpZGVycyB8fCAndicpLnJlcGVhdCgyKTtcbiAgICAgICAgY29uc3QgW3NvLCBzaF0gPSBzbGlkZXJzLm1hdGNoKC9eW3ZoXSskL2cpID8gc2xpZGVycyA6IFtdO1xuXG4gICAgICAgIC8vIFJlLWFzc2lnbiBpZiBudWxsXG4gICAgICAgIGNvbnN0IGdldENvbG9yID0gKCkgPT5cbiAgICAgICAgICAgIHRoaXMuX2NvbG9yIHx8ICh0aGlzLl9jb2xvciA9IHRoaXMuX2xhc3RDb2xvci5jbG9uZSgpKTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRzID0ge1xuXG4gICAgICAgICAgICBwYWxldHRlOiBNb3ZlYWJsZSh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5wYWxldHRlLnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290LnBhbGV0dGUucGFsZXR0ZSxcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh4LCB5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gaW5zdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge2xhc3RDb2xvciwgY3VycmVudENvbG9yfSA9IF9yb290LnByZXZpZXc7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBpbnB1dCBmaWVsZCBvbmx5IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBub3QgdHlwaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Ll9yZWNhbGMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHNhdHVyYXRpb24gYmFzZWQgb24gdGhlIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5zID0geCAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IudiA9IDEwMCAtIHkgKiAxMDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgZmFsbGluZyB1bmRlciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci52IDwgMCA/IGNvbG9yLnYgPSAwIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX3VwZGF0ZU91dHB1dCgnc2xpZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcGlja2VyIGFuZCBncmFkaWVudCBjb2xvclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NSR0JhU3RyaW5nID0gY29sb3IudG9SR0JBKCkudG9TdHJpbmcoMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gY3NzUkdCYVN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsICR7Y29sb3IuYX0pLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgaHNsYSgke2NvbG9yLmh9LCAxMDAlLCA1MCUsICR7Y29sb3IuYX0pLCByZ2JhKDI1NSwgMjU1LCAyNTUsICR7Y29sb3IuYX0pKVxuICAgICAgICAgICAgICAgICAgICBgO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGNvbG9yIGlzIGxvY2tlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuY29tcGFyaXNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3Jvb3QuYnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KCctLXBjci1jb2xvcicsIGNzc1JHQmFTdHJpbmcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBjb2xvciwgcmVtb3ZlIHRoZSBjbGVhcmVkIGljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF9yb290LmJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdjbGVhcicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnVzZUFzQnV0dG9uICYmICFpbnN0Ll9sYXN0Q29sb3IpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgY29sb3IgdG8gYm90aCB0aGUgbGFzdCBhbmQgY3VycmVudCBjb2xvciBzaW5jZSB0aGUgY3VycmVudCBzdGF0ZSBpcyBjbGVhcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgc3dhdGNoIHdoaWNoIGNvbG9yIG1hdGNoZXMgdGhlIGN1cnJlbnQgb25lXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhleGEgPSBjb2xvci50b0hFWEEoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHtlbCwgY29sb3J9IG9mIGluc3QuX3N3YXRjaENvbG9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0W2hleGEgPT09IGNvbG9yLnRvSEVYQSgpLnRvU3RyaW5nKCkgPyAnYWRkJyA6ICdyZW1vdmUnXSgncGNyLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIGN1cnJlbnQgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbG9yLnN0eWxlLnNldFByb3BlcnR5KCctLXBjci1jb2xvcicsIGNzc1JHQmFTdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBodWU6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBsb2NrOiBzaCA9PT0gJ3YnID8gJ2gnIDogJ3YnLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGluc3QuX3Jvb3QuaHVlLnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290Lmh1ZS5zbGlkZXIsXG5cbiAgICAgICAgICAgICAgICBvbnN0b3A6ICgpID0+IGluc3QuX2VtaXQoJ2NoYW5nZXN0b3AnLCAnc2xpZGVyJywgaW5zdCksXG4gICAgICAgICAgICAgICAgb25jaGFuZ2Uodikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNzLmh1ZSB8fCAhY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBodWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuaCA9IHYgKiAzNjA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtjb2xvci5ofSwgMTAwJSwgNTAlKWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZS50cmlnZ2VyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIG9wYWNpdHk6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBsb2NrOiBzbyA9PT0gJ3YnID8gJ2gnIDogJ3YnLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGluc3QuX3Jvb3Qub3BhY2l0eS5waWNrZXIsXG4gICAgICAgICAgICAgICAgd3JhcHBlcjogaW5zdC5fcm9vdC5vcGFjaXR5LnNsaWRlcixcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3Mub3BhY2l0eSB8fCAhY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBvcGFjaXR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Ll9yZWNhbGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmEgPSBNYXRoLnJvdW5kKHYgKiAxZTIpIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gYHJnYmEoMCwgMCwgMCwgJHtjb2xvci5hfSlgO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBhbGV0dGUudHJpZ2dlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBTZWxlY3RhYmxlKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50czogaW5zdC5fcm9vdC5pbnRlcmFjdGlvbi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2FjdGl2ZScsXG5cbiAgICAgICAgICAgICAgICBvbmNoYW5nZShlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3QuX3JlcHJlc2VudGF0aW9uID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0Ll9yZWNhbGMgJiYgaW5zdC5fdXBkYXRlT3V0cHV0KCdzd2F0Y2gnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgIH1cblxuICAgIF9iaW5kRXZlbnRzKCkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICBjb25zdCBldmVudEJpbmRpbmdzID0gW1xuXG4gICAgICAgICAgICAvLyBDbGVhciBjb2xvclxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5jbGVhciwgJ2NsaWNrJywgKCkgPT4gdGhpcy5fY2xlYXJDb2xvcigpKSxcblxuICAgICAgICAgICAgLy8gU2VsZWN0IGxhc3QgY29sb3Igb24gY2xpY2tcbiAgICAgICAgICAgIF8ub24oW1xuICAgICAgICAgICAgICAgIF9yb290LmludGVyYWN0aW9uLmNhbmNlbCxcbiAgICAgICAgICAgICAgICBfcm9vdC5wcmV2aWV3Lmxhc3RDb2xvclxuICAgICAgICAgICAgXSwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SFNWQSguLi4odGhpcy5fbGFzdENvbG9yIHx8IHRoaXMuX2NvbG9yKS50b0hTVkEoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2FuY2VsJyk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gU2F2ZSBjb2xvclxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5zYXZlLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgIXRoaXMuYXBwbHlDb2xvcigpICYmICFvcHRpb25zLnNob3dBbHdheXMgJiYgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gVXNlciBpbnB1dFxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIFsna2V5dXAnLCAnaW5wdXQnXSwgZSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBGaXJlIGxpc3RlbmVyIGlmIGluaXRpYWxpemF0aW9uIGlzIGZpbmlzaCBhbmQgY2hhbmdlZCBjb2xvciB3YXMgdmFsaWRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXRDb2xvcihlLnRhcmdldC52YWx1ZSwgdHJ1ZSkgJiYgIXRoaXMuX2luaXRpYWxpemluZ0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdjaGFuZ2UnLCB0aGlzLl9jb2xvciwgJ2lucHV0JywgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZXN0b3AnLCAnaW5wdXQnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIC8vIERldGVjdCB1c2VyIGlucHV0IGFuZCBkaXNhYmxlIGF1dG8tcmVjYWxjdWxhdGlvblxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIFsnZm9jdXMnLCAnYmx1ciddLCBlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGMgPSBlLnR5cGUgPT09ICdibHVyJztcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGMgJiYgdGhpcy5fdXBkYXRlT3V0cHV0KG51bGwpO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIC8vIENhbmNlbCBpbnB1dCBkZXRlY3Rpb24gb24gY29sb3IgY2hhbmdlXG4gICAgICAgICAgICBfLm9uKFtcbiAgICAgICAgICAgICAgICBfcm9vdC5wYWxldHRlLnBhbGV0dGUsXG4gICAgICAgICAgICAgICAgX3Jvb3QucGFsZXR0ZS5waWNrZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3QuaHVlLnNsaWRlcixcbiAgICAgICAgICAgICAgICBfcm9vdC5odWUucGlja2VyLFxuICAgICAgICAgICAgICAgIF9yb290Lm9wYWNpdHkuc2xpZGVyLFxuICAgICAgICAgICAgICAgIF9yb290Lm9wYWNpdHkucGlja2VyXG4gICAgICAgICAgICBdLCBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0J10sICgpID0+IHRoaXMuX3JlY2FsYyA9IHRydWUsIHtwYXNzaXZlOiB0cnVlfSlcbiAgICAgICAgXTtcblxuICAgICAgICAvLyBQcm92aWRlIGhpZGluZyAvIHNob3dpbmcgYWJpbGl0aWVzIG9ubHkgaWYgc2hvd0Fsd2F5cyBpcyBmYWxzZVxuICAgICAgICBpZiAoIW9wdGlvbnMuc2hvd0Fsd2F5cykge1xuICAgICAgICAgICAgY29uc3QgY2sgPSBvcHRpb25zLmNsb3NlV2l0aEtleTtcblxuICAgICAgICAgICAgZXZlbnRCaW5kaW5ncy5wdXNoKFxuXG4gICAgICAgICAgICAgICAgLy8gU2F2ZSBhbmQgaGlkZSAvIHNob3cgcGlja2VyXG4gICAgICAgICAgICAgICAgXy5vbihfcm9vdC5idXR0b24sICdjbGljaycsICgpID0+IHRoaXMuaXNPcGVuKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpKSxcblxuICAgICAgICAgICAgICAgIC8vIENsb3NlIHdpdGggZXNjYXBlIGtleVxuICAgICAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsICdrZXl1cCcsIGUgPT4gdGhpcy5pc09wZW4oKSAmJiAoZS5rZXkgPT09IGNrIHx8IGUuY29kZSA9PT0gY2spICYmIHRoaXMuaGlkZSgpKSxcblxuICAgICAgICAgICAgICAgIC8vIENhbmNlbCBzZWxlY3RpbmcgaWYgdGhlIHVzZXIgdGFwcyBiZWhpbmQgdGhlIGNvbG9yIHBpY2tlclxuICAgICAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsIFsndG91Y2hzdGFydCcsICdtb3VzZWRvd24nXSwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbigpICYmICFfLmV2ZW50UGF0aChlKS5zb21lKGVsID0+IGVsID09PSBfcm9vdC5hcHAgfHwgZWwgPT09IF9yb290LmJ1dHRvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWV9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1ha2UgaW5wdXQgYWRqdXN0YWJsZSBpZiBlbmFibGVkXG4gICAgICAgIGlmIChvcHRpb25zLmFkanVzdGFibGVOdW1iZXJzKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZXMgPSB7XG4gICAgICAgICAgICAgICAgcmdiYTogWzI1NSwgMjU1LCAyNTUsIDFdLFxuICAgICAgICAgICAgICAgIGhzdmE6IFszNjAsIDEwMCwgMTAwLCAxXSxcbiAgICAgICAgICAgICAgICBoc2xhOiBbMzYwLCAxMDAsIDEwMCwgMV0sXG4gICAgICAgICAgICAgICAgY215azogWzEwMCwgMTAwLCAxMDAsIDEwMF1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF8uYWRqdXN0YWJsZUlucHV0TnVtYmVycyhfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIChvLCBzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gcmFuZ2VzW3RoaXMuZ2V0Q29sb3JSZXByZXNlbnRhdGlvbigpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IHJhbmdlW2luZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbmV4dCByZWFzb25hYmxlIG51bWJlclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudiA9IG8gKyAobWF4ID49IDEwMCA/IHN0ZXAgKiAxMDAwIDogc3RlcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgcmFuZ2Ugb2YgemVybyB1cCB0byBtYXgsIGZpeCBmbG9hdGluZy1wb2ludCBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG52IDw9IDAgPyAwIDogTnVtYmVyKChudiA8IG1heCA/IG52IDogbWF4KS50b1ByZWNpc2lvbigzKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmF1dG9SZXBvc2l0aW9uICYmICFvcHRpb25zLmlubGluZSkge1xuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIFJlLWNhbGMgcG9zaXRpb24gb24gd2luZG93IHJlc2l6ZSwgc2Nyb2xsIGFuZCB3aGVlbFxuICAgICAgICAgICAgZXZlbnRCaW5kaW5ncy5wdXNoKFxuICAgICAgICAgICAgICAgIF8ub24od2luZG93LCBbJ3Njcm9sbCcsICdyZXNpemUnXSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5pc09wZW4oKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGltZW91dCA9IG51bGwsIDEwMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgcG9zaXRpb24gb24gZXZlcnkgZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gcnMoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlUG9zaXRpb25pbmdQaWNrZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVvdXQgIT09IG51bGwpICYmIHJlcXVlc3RBbmltYXRpb25GcmFtZShycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aW1lb3V0ID0gbnVsbCwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYXZlIGJpbmRpbmdzXG4gICAgICAgIHRoaXMuX2V2ZW50QmluZGluZ3MgPSBldmVudEJpbmRpbmdzO1xuICAgIH1cblxuICAgIF9yZVBvc2l0aW9uaW5nUGlja2VyKCkge1xuICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIE5vIHJlcG9zaXRpb25pbmcgbmVlZGVkIGlmIGlubGluZVxuICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5fbmFub3BvcC51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogb3B0aW9ucy5wb3NpdGlvblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5fcm9vdC5hcHA7XG4gICAgICAgICAgICAgICAgY29uc3QgZWIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS50b3AgPSBgJHsod2luZG93LmlubmVySGVpZ2h0IC0gZWIuaGVpZ2h0KSAvIDJ9cHhgO1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLmxlZnQgPSBgJHsod2luZG93LmlubmVyV2lkdGggLSBlYi53aWR0aCkgLyAyfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF91cGRhdGVPdXRwdXQoZXZlbnRTb3VyY2UpIHtcbiAgICAgICAgY29uc3Qge19yb290LCBfY29sb3IsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBDaGVjayBpZiBjb21wb25lbnQgaXMgcHJlc2VudFxuICAgICAgICBpZiAoX3Jvb3QuaW50ZXJhY3Rpb24udHlwZSgpKSB7XG5cbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCBmdW5jdGlvbiBuYW1lIGFuZCBjYWxsIGlmIHByZXNlbnRcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IGB0byR7X3Jvb3QuaW50ZXJhY3Rpb24udHlwZSgpLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJyl9YDtcbiAgICAgICAgICAgIF9yb290LmludGVyYWN0aW9uLnJlc3VsdC52YWx1ZSA9IHR5cGVvZiBfY29sb3JbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAgICAgICAgICAgX2NvbG9yW21ldGhvZF0oKS50b1N0cmluZyhvcHRpb25zLm91dHB1dFByZWNpc2lvbikgOiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcmUgbGlzdGVuZXIgaWYgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmIHRoaXMuX3JlY2FsYykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlJywgX2NvbG9yLCBldmVudFNvdXJjZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfY2xlYXJDb2xvcihzaWxlbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBDaGFuZ2Ugb25seSB0aGUgYnV0dG9uIGNvbG9yIGlmIGl0IGlzbid0IGN1c3RvbWl6ZWRcbiAgICAgICAgaWYgKCFvcHRpb25zLnVzZUFzQnV0dG9uKSB7XG4gICAgICAgICAgICBfcm9vdC5idXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgJ3JnYmEoMCwgMCwgMCwgMC4xNSknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9yb290LmJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdjbGVhcicpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RDb2xvciA9IG51bGw7XG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmICFzaWxlbnQpIHtcblxuICAgICAgICAgICAgLy8gRmlyZSBsaXN0ZW5lclxuICAgICAgICAgICAgdGhpcy5fZW1pdCgnc2F2ZScsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2xlYXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9wYXJzZUxvY2FsQ29sb3Ioc3RyKSB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZXMsIHR5cGUsIGF9ID0gcGFyc2VUb0hTVkEoc3RyKTtcbiAgICAgICAgY29uc3Qge2xvY2tPcGFjaXR5fSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc3QgYWxwaGFNYWtlc0FDaGFuZ2UgPSBhICE9PSB1bmRlZmluZWQgJiYgYSAhPT0gMTtcblxuICAgICAgICAvLyBJZiBubyBvcGFjaXR5IGlzIGFwcGxpZWQsIGFkZCB1bmRlZmluZWQgYXQgdGhlIHZlcnkgZW5kIHdoaWNoIGdldHNcbiAgICAgICAgLy8gU2V0IHRvIDEgaW4gc2V0SFNWQVxuICAgICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHZhbHVlc1szXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZXM6ICghdmFsdWVzIHx8IChsb2NrT3BhY2l0eSAmJiBhbHBoYU1ha2VzQUNoYW5nZSkpID8gbnVsbCA6IHZhbHVlcyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfdChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pMThuW2tleV0gfHwgUGlja3IuSTE4Tl9ERUZBVUxUU1trZXldO1xuICAgIH1cblxuICAgIF9lbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJbZXZlbnRdLmZvckVhY2goY2IgPT4gY2IoLi4uYXJncywgdGhpcykpO1xuICAgIH1cblxuICAgIG9uKGV2ZW50LCBjYikge1xuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyW2V2ZW50XS5wdXNoKGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb2ZmKGV2ZW50LCBjYikge1xuICAgICAgICBjb25zdCBjYWxsQmFja3MgPSAodGhpcy5fZXZlbnRMaXN0ZW5lcltldmVudF0gfHwgW10pO1xuICAgICAgICBjb25zdCBpbmRleCA9IGNhbGxCYWNrcy5pbmRleE9mKGNiKTtcblxuICAgICAgICBpZiAofmluZGV4KSB7XG4gICAgICAgICAgICBjYWxsQmFja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGVuZHMgYSBjb2xvciB0byB0aGUgc3dhdGNoIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0gY29sb3JcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBhZGRTd2F0Y2goY29sb3IpIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlc30gPSB0aGlzLl9wYXJzZUxvY2FsQ29sb3IoY29sb3IpO1xuXG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHtfc3dhdGNoQ29sb3JzLCBfcm9vdH0gPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBIU1ZhQ29sb3IoLi4udmFsdWVzKTtcblxuICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBzd2F0Y2ggSFRNTEVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGVsID0gXy5jcmVhdGVFbGVtZW50RnJvbVN0cmluZyhcbiAgICAgICAgICAgICAgICBgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCItLXBjci1jb2xvcjogJHtjb2xvci50b1JHQkEoKS50b1N0cmluZygwKX1cIiBhcmlhLWxhYmVsPVwiJHt0aGlzLl90KCdidG46c3dhdGNoJyl9XCIvPmBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFwcGVuZCBlbGVtZW50IGFuZCBzYXZlIHN3YXRjaCBkYXRhXG4gICAgICAgICAgICBfcm9vdC5zd2F0Y2hlcy5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgICAgICBfc3dhdGNoQ29sb3JzLnB1c2goe2VsLCBjb2xvcn0pO1xuXG4gICAgICAgICAgICAvLyBCaW5kIGV2ZW50XG4gICAgICAgICAgICB0aGlzLl9ldmVudEJpbmRpbmdzLnB1c2goXG4gICAgICAgICAgICAgICAgXy5vbihlbCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhTVkEoLi4uY29sb3IudG9IU1ZBKCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdzd2F0Y2hzZWxlY3QnLCBjb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZScsIGNvbG9yLCAnc3dhdGNoJywgdGhpcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBzd2F0Y2ggY29sb3IgYnkgaXQncyBpbmRleFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHJlbW92ZVN3YXRjaChpbmRleCkge1xuICAgICAgICBjb25zdCBzd2F0Y2hDb2xvciA9IHRoaXMuX3N3YXRjaENvbG9yc1tpbmRleF07XG5cbiAgICAgICAgLy8gQ2hlY2sgc3dhdGNoIGRhdGFcbiAgICAgICAgaWYgKHN3YXRjaENvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCB7ZWx9ID0gc3dhdGNoQ29sb3I7XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBIVE1MIGNoaWxkIGFuZCBzd2F0Y2ggZGF0YVxuICAgICAgICAgICAgdGhpcy5fcm9vdC5zd2F0Y2hlcy5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB0aGlzLl9zd2F0Y2hDb2xvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGFwcGx5Q29sb3Ioc2lsZW50ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qge3ByZXZpZXcsIGJ1dHRvbn0gPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIENoYW5nZSBwcmV2aWV3IGFuZCBjdXJyZW50IGNvbG9yXG4gICAgICAgIGNvbnN0IGNzc1JHQmFTdHJpbmcgPSB0aGlzLl9jb2xvci50b1JHQkEoKS50b1N0cmluZygwKTtcbiAgICAgICAgcHJldmlldy5sYXN0Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG5cbiAgICAgICAgLy8gQ2hhbmdlIG9ubHkgdGhlIGJ1dHRvbiBjb2xvciBpZiBpdCBpc24ndCBjdXN0b21pemVkXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnVzZUFzQnV0dG9uKSB7XG4gICAgICAgICAgICBidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGNoYW5nZWQgdGhlIGNvbG9yIHNvIHJlbW92ZSB0aGUgY2xlYXIgY2xhc1xuICAgICAgICBidXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnY2xlYXInKTtcblxuICAgICAgICAvLyBTYXZlIGxhc3QgY29sb3JcbiAgICAgICAgdGhpcy5fbGFzdENvbG9yID0gdGhpcy5fY29sb3IuY2xvbmUoKTtcblxuICAgICAgICAvLyBGaXJlIGxpc3RlbmVyXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmICFzaWxlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3NhdmUnLCB0aGlzLl9jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95J3MgYWxsIGZ1bmN0aW9uYWxpdHlzXG4gICAgICovXG4gICAgZGVzdHJveSgpIHtcblxuICAgICAgICAvLyBDYW5jZWwgc2V0dXAtZnJhbWUgaWYgc2V0XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NldHVwQW5pbWF0aW9uRnJhbWUpO1xuXG4gICAgICAgIC8vIFVuYmluZCBldmVudHNcbiAgICAgICAgdGhpcy5fZXZlbnRCaW5kaW5ncy5mb3JFYWNoKGFyZ3MgPT4gXy5vZmYoLi4uYXJncykpO1xuXG4gICAgICAgIC8vIERlc3Ryb3kgc3ViLWNvbXBvbmVudHNcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fY29tcG9uZW50cylcbiAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB0aGlzLl9jb21wb25lbnRzW2tleV0uZGVzdHJveSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95J3MgYWxsIGZ1bmN0aW9uYWxpdHlzIGFuZCByZW1vdmVzXG4gICAgICogdGhlIHBpY2tyIGVsZW1lbnQuXG4gICAgICovXG4gICAgZGVzdHJveUFuZFJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIGNvbnN0IHtyb290LCBhcHB9ID0gdGhpcy5fcm9vdDtcblxuICAgICAgICAvLyBSZW1vdmUgZWxlbWVudFxuICAgICAgICBpZiAocm9vdC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByb290LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocm9vdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgLnBjci1hcHBcbiAgICAgICAgYXBwLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYXBwKTtcblxuICAgICAgICAvLyBUaGVyZSBhcmUgcmVmZXJlbmNlcyB0byB2YXJpb3VzIERPTSBlbGVtZW50cyBzdG9yZWQgaW4gdGhlIHBpY2tyIGluc3RhbmNlXG4gICAgICAgIC8vIFRoaXMgY2xlYW5zIGFsbCBvZiB0aGVtIHRvIGF2b2lkIGRldGFjaGVkIERPTXNcbiAgICAgICAgT2JqZWN0LmtleXModGhpcylcbiAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB0aGlzW2tleV0gPSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgY29sb3ItcGlja2VyIHVpLlxuICAgICAqL1xuICAgIGhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb290LmFwcC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdoaWRlJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgY29sb3ItcGlja2VyIHVpLlxuICAgICAqL1xuICAgIHNob3coKSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVkICYmICF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb290LmFwcC5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLl9yZVBvc2l0aW9uaW5nUGlja2VyKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdzaG93JywgdGhpcy5fY29sb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gSWYgdGhlIGNvbG9yIHBpY2tlciBpcyBjdXJyZW50bHkgb3BlblxuICAgICAqL1xuICAgIGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5jb250YWlucygndmlzaWJsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhIHNwZWNpZmljIGNvbG9yLlxuICAgICAqIEBwYXJhbSBoIEh1ZVxuICAgICAqIEBwYXJhbSBzIFNhdHVyYXRpb25cbiAgICAgKiBAcGFyYW0gdiBWYWx1ZVxuICAgICAqIEBwYXJhbSBhIEFscGhhIGNoYW5uZWwgKDAgLSAxKVxuICAgICAqIEBwYXJhbSBzaWxlbnQgSWYgdGhlIGJ1dHRvbiBzaG91bGQgbm90IGNoYW5nZSB0aGUgY29sb3JcbiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gaWYgdGhlIGNvbG9yIGhhcyBiZWVuIGFjY2VwdGVkXG4gICAgICovXG4gICAgc2V0SFNWQShoID0gMzYwLCBzID0gMCwgdiA9IDAsIGEgPSAxLCBzaWxlbnQgPSBmYWxzZSkge1xuXG4gICAgICAgIC8vIERlYWN0aXZhdGUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgICAgY29uc3QgcmVjYWxjID0gdGhpcy5fcmVjYWxjOyAvLyBTYXZlIHN0YXRlXG4gICAgICAgIHRoaXMuX3JlY2FsYyA9IGZhbHNlO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIGlucHV0XG4gICAgICAgIGlmIChoIDwgMCB8fCBoID4gMzYwIHx8IHMgPCAwIHx8IHMgPiAxMDAgfHwgdiA8IDAgfHwgdiA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgY3VycmVudCBjb2xvciBhbmQgcmUtYWN0aXZlIGNvbG9yIGNhbGN1bGF0aW9uXG4gICAgICAgIHRoaXMuX2NvbG9yID0gSFNWYUNvbG9yKGgsIHMsIHYsIGEpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzbGlkZXIgYW5kIHBhbGV0dGVcbiAgICAgICAgY29uc3Qge2h1ZSwgb3BhY2l0eSwgcGFsZXR0ZX0gPSB0aGlzLl9jb21wb25lbnRzO1xuICAgICAgICBodWUudXBkYXRlKChoIC8gMzYwKSk7XG4gICAgICAgIG9wYWNpdHkudXBkYXRlKGEpO1xuICAgICAgICBwYWxldHRlLnVwZGF0ZShzIC8gMTAwLCAxIC0gKHYgLyAxMDApKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBjYWxsIGlzIHNpbGVudFxuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgb3V0cHV0IGlmIHJlY2FsY3VsYXRpb24gaXMgZW5hYmxlZFxuICAgICAgICBpZiAocmVjYWxjKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVPdXRwdXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc3RvcmUgb2xkIHN0YXRlXG4gICAgICAgIHRoaXMuX3JlY2FsYyA9IHJlY2FsYztcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gcGFyc2UgYSBzdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGNvbG9yLlxuICAgICAqIEV4YW1wbGVzOiAjZmZmXG4gICAgICogICAgICAgICAgIHJnYiAxMCAxMCAyMDBcbiAgICAgKiAgICAgICAgICAgaHN2YSAxMCAyMCA1IDAuNVxuICAgICAqIEBwYXJhbSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gc2lsZW50XG4gICAgICovXG4gICAgc2V0Q29sb3Ioc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSkge1xuXG4gICAgICAgIC8vIENoZWNrIGlmIG51bGxcbiAgICAgICAgaWYgKHN0cmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJDb2xvcihzaWxlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7dmFsdWVzLCB0eXBlfSA9IHRoaXMuX3BhcnNlTG9jYWxDb2xvcihzdHJpbmcpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNvbG9yIGlzIG9rXG4gICAgICAgIGlmICh2YWx1ZXMpIHtcblxuICAgICAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkIGNvbG9yIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgdXR5cGUgPSB0eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzLl9yb290LmludGVyYWN0aW9uO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy5maW5kKGVsID0+IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT09IHV0eXBlKTtcblxuICAgICAgICAgICAgLy8gQXV0byBzZWxlY3Qgb25seSBpZiBub3QgaGlkZGVuXG4gICAgICAgICAgICBpZiAodGFyZ2V0ICYmICF0YXJnZXQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdFtlbCA9PT0gdGFyZ2V0ID8gJ2FkZCcgOiAncmVtb3ZlJ10oJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIGNvbG9yIChmaXJlcyAnc2F2ZScgZXZlbnQgaWYgc2lsZW50IGlzICdmYWxzZScpXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0SFNWQSguLi52YWx1ZXMsIHNpbGVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSByZXByZXNlbnRhdGlvbiAoZmlyZXMgJ2NoYW5nZScgZXZlbnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDb2xvclJlcHJlc2VudGF0aW9uKHV0eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBjb2xvciBfcmVwcmVzZW50YXRpb24uXG4gICAgICogQWxsb3dlZCB2YWx1ZXMgYXJlIEhFWCwgUkdCLCBIU1YsIEhTTCBhbmQgQ01ZS1xuICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IGlmIHRoZSBzZWxlY3RlZCB0eXBlIHdhcyB2YWxpZC5cbiAgICAgKi9cbiAgICBzZXRDb2xvclJlcHJlc2VudGF0aW9uKHR5cGUpIHtcblxuICAgICAgICAvLyBGb3JjZSB1cHBlcmNhc2UgdG8gYWxsb3cgYSBjYXNlLXNlbnNpdGl2IGNvbXBhcmlzb25cbiAgICAgICAgdHlwZSA9IHR5cGUudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAvLyBGaW5kIGJ1dHRvbiB3aXRoIGdpdmVuIHR5cGUgYW5kIHRyaWdnZXIgY2xpY2sgZXZlbnRcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcm9vdC5pbnRlcmFjdGlvbi5vcHRpb25zXG4gICAgICAgICAgICAuZmluZCh2ID0+IHYuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKS5zdGFydHNXaXRoKHR5cGUpICYmICF2LmNsaWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgY29sb3IgcmVwcmVzZW50YWlvbi4gU2VlIHNldENvbG9yUmVwcmVzZW50YXRpb25cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBnZXRDb2xvclJlcHJlc2VudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50YXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgSFNWYUNvbG9yIEN1cnJlbnQgSFNWYUNvbG9yIG9iamVjdC5cbiAgICAgKi9cbiAgICBnZXRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjb2xvci5cbiAgICAgKiBAcmV0dXJucyB7e2EsIHRvSFNWQSwgdG9IRVhBLCBzLCB2LCBoLCBjbG9uZSwgdG9DTVlLLCB0b0hTTEEsIHRvUkdCQX19XG4gICAgICovXG4gICAgZ2V0U2VsZWN0ZWRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RDb2xvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgcm9vdCBIVE1MRWxlbWVudCB3aXRoIGFsbCBoaXMgY29tcG9uZW50cy5cbiAgICAgKi9cbiAgICBnZXRSb290KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHBpY2tyXG4gICAgICovXG4gICAgZGlzYWJsZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBwaWNrclxuICAgICAqL1xuICAgIGVuYWJsZSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc2FibGVkJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiIsICIvKiFcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBCdWZmZXJcbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNCdWZmZXIgKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yICE9IG51bGwgJiZcbiAgICB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnIpIHtcblx0aWYgKHR5cGVvZiBBcnJheS5pc0FycmF5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKTtcblx0fVxuXG5cdHJldHVybiB0b1N0ci5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG5cdGlmICghb2JqIHx8IHRvU3RyLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHR2YXIgaGFzT3duQ29uc3RydWN0b3IgPSBoYXNPd24uY2FsbChvYmosICdjb25zdHJ1Y3RvcicpO1xuXHR2YXIgaGFzSXNQcm90b3R5cGVPZiA9IG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlICYmIGhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdpc1Byb3RvdHlwZU9mJyk7XG5cdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3Rcblx0aWYgKG9iai5jb25zdHJ1Y3RvciAmJiAhaGFzT3duQ29uc3RydWN0b3IgJiYgIWhhc0lzUHJvdG90eXBlT2YpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0Ly8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uXG5cdHZhciBrZXk7XG5cdGZvciAoa2V5IGluIG9iaikgeyAvKiovIH1cblxuXHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufTtcblxuLy8gSWYgbmFtZSBpcyAnX19wcm90b19fJywgYW5kIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBhdmFpbGFibGUsIGRlZmluZSBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5IG9uIHRhcmdldFxudmFyIHNldFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJvcGVydHkodGFyZ2V0LCBvcHRpb25zKSB7XG5cdGlmIChkZWZpbmVQcm9wZXJ0eSAmJiBvcHRpb25zLm5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBvcHRpb25zLm5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogb3B0aW9ucy5uZXdWYWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0W29wdGlvbnMubmFtZV0gPSBvcHRpb25zLm5ld1ZhbHVlO1xuXHR9XG59O1xuXG4vLyBSZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgX19wcm90b19fIGlmICdfX3Byb3RvX18nIGlzIG5vdCBhbiBvd24gcHJvcGVydHlcbnZhciBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFByb3BlcnR5KG9iaiwgbmFtZSkge1xuXHRpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRpZiAoIWhhc093bi5jYWxsKG9iaiwgbmFtZSkpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fSBlbHNlIGlmIChnT1BEKSB7XG5cdFx0XHQvLyBJbiBlYXJseSB2ZXJzaW9ucyBvZiBub2RlLCBvYmpbJ19fcHJvdG9fXyddIGlzIGJ1Z2d5IHdoZW4gb2JqIGhhc1xuXHRcdFx0Ly8gX19wcm90b19fIGFzIGFuIG93biBwcm9wZXJ0eS4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHdvcmtzLlxuXHRcdFx0cmV0dXJuIGdPUEQob2JqLCBuYW1lKS52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb2JqW25hbWVdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZTtcblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblx0dmFyIGkgPSAxO1xuXHR2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcblx0dmFyIGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnYm9vbGVhbicpIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcblx0XHQvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0aSA9IDI7XG5cdH1cblx0aWYgKHRhcmdldCA9PSBudWxsIHx8ICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdG9wdGlvbnMgPSBhcmd1bWVudHNbaV07XG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmIChvcHRpb25zICE9IG51bGwpIHtcblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAobmFtZSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHNyYyA9IGdldFByb3BlcnR5KHRhcmdldCwgbmFtZSk7XG5cdFx0XHRcdGNvcHkgPSBnZXRQcm9wZXJ0eShvcHRpb25zLCBuYW1lKTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0c2V0UHJvcGVydHkodGFyZ2V0LCB7IG5hbWU6IG5hbWUsIG5ld1ZhbHVlOiBleHRlbmQoZGVlcCwgY2xvbmUsIGNvcHkpIH0pO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNvcHkgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGNvcHkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCAiaW1wb3J0IHsgUGx1Z2luLCBNYXJrZG93blZpZXcsIFdvcmtzcGFjZUxlYWYgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgREVGQVVMVF9TRVRUSU5HUywgTEFOR1VBR0VfSUNPTlNfREFUQSwgQ29kZVN0eWxlclNldHRpbmdzIH0gZnJvbSAnLi9TZXR0aW5ncyc7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyByZW1vdmVTdHlsZXNBbmRDbGFzc2VzLCB1cGRhdGVTdHlsaW5nIH0gZnJvbSBcIi4vQXBwbHlTdHlsaW5nXCI7XG5pbXBvcnQgeyBjcmVhdGVDb2RlYmxvY2tDb2RlTWlycm9yRXh0ZW5zaW9ucyB9IGZyb20gXCIuL0VkaXRpbmdWaWV3XCI7XG5pbXBvcnQgeyBkZXN0cm95UmVhZGluZ01vZGVFbGVtZW50cywgZXhlY3V0ZUNvZGVNdXRhdGlvbk9ic2VydmVyLCByZWFkaW5nU3R5bGluZ011dGF0aW9uT2JzZXJ2ZXIsIHJlYWRpbmdWaWV3Q29kZWJsb2NrRGVjb3JhdGluZ1Bvc3RQcm9jZXNzb3IsIHJlYWRpbmdWaWV3SW5saW5lRGVjb3JhdGluZ1Bvc3RQcm9jZXNzb3IgfSBmcm9tIFwiLi9SZWFkaW5nVmlld1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlU3R5bGVyUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblx0c2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncztcblx0cmVhZGluZ1N0eWxpbmdNdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXHRleGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cdGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPjtcblx0XG5cdGFzeW5jIG9ubG9hZCgpIHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpOyAvLyBMb2FkIFNldHRpbmdzXG5cdFx0Y29uc3Qgc2V0dGluZ3NUYWIgPSBuZXcgU2V0dGluZ3NUYWIodGhpcy5hcHAsdGhpcyk7XG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKHNldHRpbmdzVGFiKTtcblxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY29kZS1zdHlsZXInKTsgLy8gTG9hZCBTdHlsZXNcblx0XHR1cGRhdGVTdHlsaW5nKHRoaXMuc2V0dGluZ3MsdGhpcy5hcHApO1xuXG5cdFx0dGhpcy5sYW5ndWFnZUljb25zID0gT2JqZWN0LmtleXMoTEFOR1VBR0VfSUNPTlNfREFUQSkucmVkdWNlKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LCBrZXk6IHN0cmluZykgPT4geyAvLyBMb2FkIEljb25zXG5cdFx0XHRyZXN1bHRba2V5XSA9IFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2A8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCI+JHtMQU5HVUFHRV9JQ09OU19EQVRBW2tleV19PC9zdmc+YF0sIHsgdHlwZTogXCJpbWFnZS9zdmcreG1sXCIgfSkpO1xuXHRcdFx0cmV0dXJuIHJlc3VsdFxuXHRcdH0se30pO1xuXG5cdFx0dGhpcy5yZWFkaW5nU3R5bGluZ011dGF0aW9uT2JzZXJ2ZXIgPSByZWFkaW5nU3R5bGluZ011dGF0aW9uT2JzZXJ2ZXI7IC8vIEluaXRpYWxpc2UgcmVhZGluZyB2aWV3IHN0eWxpbmcgbXV0YXRpb24gb2JzZXJ2ZXJcblx0XHR0aGlzLmV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlciA9IGV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlcjsgLy8gQWRkIGV4ZWN1dGUgY29kZSBtdXRhdGlvbiBvYnNlcnZlclxuXHRcdFxuXHRcdHRoaXMucmVnaXN0ZXJNYXJrZG93blBvc3RQcm9jZXNzb3IoYXN5bmMgKGVsLGN0eCkgPT4ge2F3YWl0IHJlYWRpbmdWaWV3Q29kZWJsb2NrRGVjb3JhdGluZ1Bvc3RQcm9jZXNzb3IoZWwsY3R4LHRoaXMpfSk7IC8vIEFkZCBjb2RlYmxvY2sgZGVjb3JhdGluZyBtYXJrZG93blBvc3RQcm9jZXNzb3Jcblx0XHR0aGlzLnJlZ2lzdGVyTWFya2Rvd25Qb3N0UHJvY2Vzc29yKGFzeW5jIChlbCxjdHgpID0+IHthd2FpdCByZWFkaW5nVmlld0lubGluZURlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsLGN0eCx0aGlzKX0pOyAvLyBBZGQgaW5saW5lIGNvZGUgZGVjb3JhdGluZyBtYXJrZG93blBvc3RQcm9jZXNzb3JcblxuXHRcdHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24oY3JlYXRlQ29kZWJsb2NrQ29kZU1pcnJvckV4dGVuc2lvbnModGhpcy5zZXR0aW5ncyx0aGlzLmxhbmd1YWdlSWNvbnMpKTsgLy8gQWRkIGNvZGVtaXJyb3IgZXh0ZW5zaW9uc1xuXG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignY3NzLWNoYW5nZScsKCk9PnVwZGF0ZVN0eWxpbmcodGhpcy5zZXR0aW5ncyx0aGlzLmFwcCksdGhpcykpOyAvLyBVcGRhdGUgc3R5bGluZyBvbiBjc3MgY2hhbmdlc1xuXG5cdFx0dGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoKCk9Pntcblx0XHRcdHRoaXMuYXBwLndvcmtzcGFjZS5pdGVyYXRlUm9vdExlYXZlcygobGVhZjogV29ya3NwYWNlTGVhZikgPT4geyAvLyBBZGQgZGVjb3JhdGlvbiBvbiBlbmFibGluZyBvZiBwbHVnaW5cblx0XHRcdFx0aWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldyAmJiBsZWFmLnZpZXcuZ2V0TW9kZSgpID09PSAncHJldmlldycpXG5cdFx0XHRcdFx0bGVhZi52aWV3LnByZXZpZXdNb2RlLnJlcmVuZGVyKHRydWUpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRjb25zb2xlLmxvZyhcIkxvYWRlZCBwbHVnaW46IENvZGUgU3R5bGVyXCIpO1xuXHR9XG5cdFxuXHRvbnVubG9hZCgpIHtcblx0XHR0aGlzLnJlYWRpbmdTdHlsaW5nTXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cdFx0dGhpcy5leGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdHJlbW92ZVN0eWxlc0FuZENsYXNzZXMoKTtcblx0XHRkZXN0cm95UmVhZGluZ01vZGVFbGVtZW50cygpO1xuXHRcdGZvciAoY29uc3QgdXJsIG9mIE9iamVjdC52YWx1ZXModGhpcy5sYW5ndWFnZUljb25zKSkgLy8gVW5sb2FkIGljb25zXG5cdFx0XHRVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG5cdFx0Y29uc29sZS5sb2coXCJVbmxvYWRlZCBwbHVnaW46IENvZGUgU3R5bGVyXCIpO1xuXHR9XG5cblx0YXN5bmMgbG9hZFNldHRpbmdzKCkge1xuXHRcdHRoaXMuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdHJ1Y3R1cmVkQ2xvbmUoREVGQVVMVF9TRVRUSU5HUyksIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG5cdH1cblxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcblx0XHR0aGlzLmFwcC53b3Jrc3BhY2UudXBkYXRlT3B0aW9ucygpO1xuXHRcdHVwZGF0ZVN0eWxpbmcodGhpcy5zZXR0aW5ncyx0aGlzLmFwcCk7XG5cdH1cbn1cbiIsICIvLyBUeXBpbmdcbmV4cG9ydCB0eXBlIEhFWCA9IGAjJHtzdHJpbmd9YDtcbmV4cG9ydCB0eXBlIENTUyA9IGAtLSR7c3RyaW5nfWA7XG5leHBvcnQgdHlwZSBDb2xvdXIgPSBIRVggfCBDU1M7XG5leHBvcnQgdHlwZSBQZXJjZW50YWdlID0gYCR7bnVtYmVyfSVgO1xuZXhwb3J0IHR5cGUgRGlzcGxheSA9IFwibm9uZVwiIHwgXCJpZl9oZWFkZXJfc2hvd25cIiB8IFwiYWx3YXlzXCI7XG5cbi8vIEludGVyZmFjZSBDcmVhdGlvblxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyVGhlbWVNb2RlQ29sb3VycyB7XG5cdGNvZGVibG9jazoge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6IENvbG91cjtcblx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdH0sXG5cdGd1dHRlcjoge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6IENvbG91cjtcblx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0YWN0aXZlVGV4dENvbG91cjogQ29sb3VyO1xuXHR9LFxuXHRoZWFkZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiBDb2xvdXI7XG5cdFx0dGl0bGU6IHtcblx0XHRcdHRleHRDb2xvdXI6IENvbG91cjtcblx0XHR9LFxuXHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiBDb2xvdXI7XG5cdFx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0fSxcblx0XHRsaW5lQ29sb3VyOiBDb2xvdXI7XG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyOiBDb2xvdXI7XG5cdFx0YWN0aXZlRWRpdG9yTGluZUNvbG91cjogQ29sb3VyO1xuXHRcdGRlZmF1bHRDb2xvdXI6IENvbG91cjtcblx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IFJlY29yZDxzdHJpbmcsQ29sb3VyPjtcblx0fSxcblx0aW5saW5lOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogQ29sb3VyO1xuXHRcdHRleHRDb2xvdXI6IENvbG91cjtcblx0XHRhY3RpdmVUZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0dGl0bGVUZXh0Q29sb3VyOiBDb2xvdXJcblx0fVxuXHRhZHZhbmNlZDoge1xuXHRcdGJ1dHRvbkNvbG91cjogQ29sb3VyO1xuXHRcdGJ1dHRvbkFjdGl2ZUNvbG91cjogQ29sb3VyO1xuXHR9XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVTdHlsZXJUaGVtZVNldHRpbmdzIHtcblx0Y29kZWJsb2NrOiB7XG5cdFx0bGluZU51bWJlcnM6IGJvb2xlYW47XG5cdFx0dW53cmFwTGluZXM6IGJvb2xlYW47XG5cdFx0d3JhcExpbmVzQWN0aXZlOiBib29sZWFuO1xuXHRcdGN1cnZhdHVyZTogbnVtYmVyO1xuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRoaWdobGlnaHQ6IGJvb2xlYW47XG5cdFx0YWN0aXZlTGluZTogYm9vbGVhbjtcblx0fSxcblx0aGVhZGVyOiB7XG5cdFx0dGl0bGU6IHtcblx0XHRcdHRleHRGb250OiBzdHJpbmc7XG5cdFx0XHR0ZXh0Qm9sZDogYm9vbGVhbjtcblx0XHRcdHRleHRJdGFsaWM6IGJvb2xlYW47XG5cdFx0fSxcblx0XHRsYW5ndWFnZVRhZzoge1xuXHRcdFx0ZGlzcGxheTogRGlzcGxheTtcblx0XHRcdHRleHRGb250OiBzdHJpbmc7XG5cdFx0XHR0ZXh0Qm9sZDogYm9vbGVhbjtcblx0XHRcdHRleHRJdGFsaWM6IGJvb2xlYW47XG5cdFx0fSxcblx0XHRsYW5ndWFnZUljb246IHtcblx0XHRcdGRpc3BsYXk6IERpc3BsYXk7XG5cdFx0XHRkaXNwbGF5Q29sb3VyOiBib29sZWFuO1xuXHRcdH0sXG5cdFx0Zm9udFNpemU6IG51bWJlcjtcblx0XHRjb2xsYXBzZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lOiBib29sZWFuO1xuXHRcdGFjdGl2ZUVkaXRvckxpbmU6IGJvb2xlYW47XG5cdH0sXG5cdGlubGluZToge1xuXHRcdHN5bnRheEhpZ2hsaWdodDogYm9vbGVhbjtcblx0XHRmb250V2VpZ2h0OiBudW1iZXI7XG5cdFx0Y3VydmF0dXJlOiBudW1iZXI7XG5cdFx0cGFkZGluZ1ZlcnRpY2FsOiBudW1iZXI7XG5cdFx0cGFkZGluZ0hvcml6b250YWw6IG51bWJlcjtcblx0XHRtYXJnaW5Ib3Jpem9udGFsOiBudW1iZXI7XG5cdFx0dGl0bGVGb250V2VpZ2h0OiBudW1iZXI7XG5cdH0sXG5cdGFkdmFuY2VkOiB7XG5cdFx0Z3JhZGllbnRIaWdobGlnaHRzOiBib29sZWFuO1xuXHRcdGdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3A6IFBlcmNlbnRhZ2U7XG5cdFx0bGFuZ3VhZ2VCb3JkZXJDb2xvdXI6IGJvb2xlYW47XG5cdFx0bGFuZ3VhZ2VCb3JkZXJXaWR0aDogbnVtYmVyO1xuXHRcdGljb25TaXplOiBudW1iZXI7XG5cdH07XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVTdHlsZXJUaGVtZUNvbG91cnMge1xuXHRsaWdodDogQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnM7XG5cdGRhcms6IENvZGVTdHlsZXJUaGVtZU1vZGVDb2xvdXJzO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyVGhlbWUge1xuXHRzZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3M7XG5cdGNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVTdHlsZXJTZXR0aW5ncyB7XG5cdHRoZW1lczogUmVjb3JkPHN0cmluZyxDb2RlU3R5bGVyVGhlbWU+O1xuXHRzZWxlY3RlZFRoZW1lOiBzdHJpbmc7XG5cdGN1cnJlbnRUaGVtZTogQ29kZVN0eWxlclRoZW1lO1xuXHRuZXdUaGVtZTogc3RyaW5nO1xuXHRuZXdIaWdobGlnaHQ6IHN0cmluZztcblx0ZGVjb3JhdGVQcmludDogYm9vbGVhbjtcblx0ZXhjbHVkZWRMYW5ndWFnZXM6IHN0cmluZztcblx0ZXhjbHVkZWRDb2RlYmxvY2tzOiBzdHJpbmc7XG5cdHNwZWNpYWxMYW5ndWFnZXM6IEFycmF5PHN0cmluZz47XG5cdHJlZGlyZWN0TGFuZ3VhZ2VzOiBSZWNvcmQ8c3RyaW5nLHtjb2xvdXI/OiBDb2xvdXIsIGljb24/OiBzdHJpbmd9PlxufVxuXG4vLyBUaGVtZSBEZWZhdWx0c1xuY29uc3QgVEhFTUVfREVGQVVMVF9TRVRUSU5HUzogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MgPSB7XG5cdGNvZGVibG9jazoge1xuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxuXHRcdHVud3JhcExpbmVzOiB0cnVlLFxuXHRcdHdyYXBMaW5lc0FjdGl2ZTogZmFsc2UsXG5cdFx0Y3VydmF0dXJlOiA0LFxuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRoaWdobGlnaHQ6IHRydWUsXG5cdFx0YWN0aXZlTGluZTogZmFsc2UsXG5cdH0sXG5cdGhlYWRlcjoge1xuXHRcdHRpdGxlOiB7XG5cdFx0XHR0ZXh0Rm9udDogJycsXG5cdFx0XHR0ZXh0Qm9sZDogZmFsc2UsXG5cdFx0XHR0ZXh0SXRhbGljOiB0cnVlLFxuXHRcdH0sXG5cdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdGRpc3BsYXk6IFwibm9uZVwiLFxuXHRcdFx0dGV4dEZvbnQ6ICcnLFxuXHRcdFx0dGV4dEJvbGQ6IHRydWUsXG5cdFx0XHR0ZXh0SXRhbGljOiBmYWxzZSxcblx0XHR9LFxuXHRcdGxhbmd1YWdlSWNvbjoge1xuXHRcdFx0ZGlzcGxheTogXCJub25lXCIsXG5cdFx0XHRkaXNwbGF5Q29sb3VyOiB0cnVlLFxuXHRcdH0sXG5cdFx0Zm9udFNpemU6IDE0LFxuXHRcdGNvbGxhcHNlUGxhY2Vob2xkZXI6ICcnLFxuXHR9LFxuXHRoaWdobGlnaHRzOiB7XG5cdFx0YWN0aXZlQ29kZWJsb2NrTGluZTogZmFsc2UsXG5cdFx0YWN0aXZlRWRpdG9yTGluZTogZmFsc2UsXG5cdH0sXG5cdGlubGluZToge1xuXHRcdHN5bnRheEhpZ2hsaWdodDogdHJ1ZSxcblx0XHRmb250V2VpZ2h0OiA0LFxuXHRcdGN1cnZhdHVyZTogNixcblx0XHRwYWRkaW5nVmVydGljYWw6IDUsXG5cdFx0cGFkZGluZ0hvcml6b250YWw6IDUsXG5cdFx0bWFyZ2luSG9yaXpvbnRhbDogMCxcblx0XHR0aXRsZUZvbnRXZWlnaHQ6IDgsXG5cdH0sXG5cdGFkdmFuY2VkOiB7XG5cdFx0Z3JhZGllbnRIaWdobGlnaHRzOiBmYWxzZSxcblx0XHRncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wOiAnNzAlJyxcblx0XHRsYW5ndWFnZUJvcmRlckNvbG91cjogZmFsc2UsXG5cdFx0bGFuZ3VhZ2VCb3JkZXJXaWR0aDogNSxcblx0XHRpY29uU2l6ZTogMjgsXG5cdH0sXG59XG5leHBvcnQgY29uc3QgVEhFTUVfRkFMTEJBQ0tfQ09MT1VSUzogQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnMgPSB7XG5cdGNvZGVibG9jazoge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6ICctLWNvZGUtYmFja2dyb3VuZCcsXG5cdFx0dGV4dENvbG91cjogJy0tY29kZS1ub3JtYWwnLFxuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuXHRcdHRleHRDb2xvdXI6ICctLXRleHQtZmFpbnQnLFxuXHRcdGFjdGl2ZVRleHRDb2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHR9LFxuXHRoZWFkZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuXHRcdHRpdGxlOiB7XG5cdFx0XHR0ZXh0Q29sb3VyOiAnLS1jb2RlLWNvbW1lbnQnLFxuXHRcdH0sXG5cdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICctLWNvZGUtYmFja2dyb3VuZCcsXG5cdFx0XHR0ZXh0Q29sb3VyOiAnLS1jb2RlLWNvbW1lbnQnLFxuXHRcdH0sXG5cdFx0bGluZUNvbG91cjogJy0tY29sb3ItYmFzZS0zMCcsXG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyOiAnLS1jb2xvci1iYXNlLTMwJyxcblx0XHRhY3RpdmVFZGl0b3JMaW5lQ29sb3VyOiAnLS1jb2xvci1iYXNlLTIwJyxcblx0XHRkZWZhdWx0Q29sb3VyOiAnLS10ZXh0LWhpZ2hsaWdodC1iZycsXG5cdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiB7fSxcblx0fSxcblx0aW5saW5lOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcblx0XHR0ZXh0Q29sb3VyOiAnLS1jb2RlLW5vcm1hbCcsXG5cdFx0YWN0aXZlVGV4dENvbG91cjogJy0tY29kZS1ub3JtYWwnLFxuXHRcdHRpdGxlVGV4dENvbG91cjogJy0tY29kZS1jb21tZW50Jyxcblx0fSxcblx0YWR2YW5jZWQ6IHtcblx0XHRidXR0b25Db2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHRcdGJ1dHRvbkFjdGl2ZUNvbG91cjogJy0tdGV4dC1ub3JtYWwnLFxuXHR9XG59XG5cbi8vIFRoZW1lIENyZWF0aW9uXG5jb25zdCBERUZBVUxUX1RIRU1FOiBDb2RlU3R5bGVyVGhlbWUgPSB7XG5cdHNldHRpbmdzOiBUSEVNRV9ERUZBVUxUX1NFVFRJTkdTLFxuXHRjb2xvdXJzOiB7XG5cdFx0bGlnaHQ6IFRIRU1FX0ZBTExCQUNLX0NPTE9VUlMsXG5cdFx0ZGFyazogVEhFTUVfRkFMTEJBQ0tfQ09MT1VSUyxcblx0fSxcbn1cbmNvbnN0IFNPTEFSSVpFRF9USEVNRTogQ29kZVN0eWxlclRoZW1lID0ge1xuXHRzZXR0aW5nczogVEhFTUVfREVGQVVMVF9TRVRUSU5HUyxcblx0Y29sb3Vyczoge1xuXHRcdGxpZ2h0OiB7XG5cdFx0XHRjb2RlYmxvY2s6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyNGQ0Y2RTQnLFxuXHRcdFx0XHR0ZXh0Q29sb3VyOiAnI2JhYmFiYScsXG5cdFx0XHR9LFxuXHRcdFx0Z3V0dGVyOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjRURFOEQ2Jyxcblx0XHRcdFx0dGV4dENvbG91cjogJyM2YzZjNmMnLFxuXHRcdFx0XHRhY3RpdmVUZXh0Q29sb3VyOiAnIzhjOGM4YycsXG5cdFx0XHR9LFxuXHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjRDVDQ0I0Jyxcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR0ZXh0Q29sb3VyOiAnIzg2NjcwNCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyNCOEI1QUEnLFxuXHRcdFx0XHRcdHRleHRDb2xvdXI6ICcjQzI1RjMwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bGluZUNvbG91cjogJyNFREQ0ODknLFxuXHRcdFx0fSxcblx0XHRcdGhpZ2hsaWdodHM6IHtcblx0XHRcdFx0YWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cjogJyNFREU4RDYnLFxuXHRcdFx0XHRhY3RpdmVFZGl0b3JMaW5lQ29sb3VyOiAnIzYwNDYwNjMzJyxcblx0XHRcdFx0ZGVmYXVsdENvbG91cjogJyNFOURGQkEnLFxuXHRcdFx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IHt9LFxuXHRcdFx0fSxcblx0XHRcdGlubGluZToge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnI0ZDRjZFNCcsXG5cdFx0XHRcdHRleHRDb2xvdXI6ICcjYmFiYWJhJyxcblx0XHRcdFx0YWN0aXZlVGV4dENvbG91cjogJyNiYWJhYmEnLFxuXHRcdFx0XHR0aXRsZVRleHRDb2xvdXI6ICcjQzI1RjMwJyxcblx0XHRcdH0sXG5cdFx0XHRhZHZhbmNlZDoge1xuXHRcdFx0XHRidXR0b25Db2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHRcdFx0XHRidXR0b25BY3RpdmVDb2xvdXI6ICctLXRleHQtbm9ybWFsJyxcblx0XHRcdH1cblx0XHR9LFxuXHRcdGRhcms6IHtcblx0XHRcdGNvZGVibG9jazoge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnIzAwMmIzNicsXG5cdFx0XHRcdHRleHRDb2xvdXI6ICcjYmFiYWJhJyxcblx0XHRcdH0sXG5cdFx0XHRndXR0ZXI6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyMwNzM2NDInLFxuXHRcdFx0XHR0ZXh0Q29sb3VyOiAnIzZjNmM2YycsXG5cdFx0XHRcdGFjdGl2ZVRleHRDb2xvdXI6ICcjNGM0YzRjJyxcblx0XHRcdH0sXG5cdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyMwYTQ1NTQnLFxuXHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdHRleHRDb2xvdXI6ICcjZGFkYWRhJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnIzAwODA4MCcsXG5cdFx0XHRcdFx0dGV4dENvbG91cjogJyMwMDAwMDAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsaW5lQ29sb3VyOiAnIzQ2Y2NlZCcsXG5cdFx0XHR9LFxuXHRcdFx0aGlnaGxpZ2h0czoge1xuXHRcdFx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyOiAnIzA3MzY0MicsXG5cdFx0XHRcdGFjdGl2ZUVkaXRvckxpbmVDb2xvdXI6ICcjNDY4ZWViMzMnLFxuXHRcdFx0XHRkZWZhdWx0Q29sb3VyOiAnIzA1NGI1YycsXG5cdFx0XHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0czoge30sXG5cdFx0XHR9LFxuXHRcdFx0aW5saW5lOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjMDAyYjM2Jyxcblx0XHRcdFx0dGV4dENvbG91cjogJyNiYWJhYmEnLFxuXHRcdFx0XHRhY3RpdmVUZXh0Q29sb3VyOiAnI2JhYmFiYScsXG5cdFx0XHRcdHRpdGxlVGV4dENvbG91cjogJyMwMDAwMDAnLFxuXHRcdFx0fSxcblx0XHRcdGFkdmFuY2VkOiB7XG5cdFx0XHRcdGJ1dHRvbkNvbG91cjogJy0tdGV4dC1tdXRlZCcsXG5cdFx0XHRcdGJ1dHRvbkFjdGl2ZUNvbG91cjogJy0tdGV4dC1ub3JtYWwnLFxuXHRcdFx0fVxuXHRcdH0sXG5cdH0sXG59XG5cbi8vIFBsdWdpbiBkZWZhdWx0IHNldHRpbmdzXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogQ29kZVN0eWxlclNldHRpbmdzID0ge1xuXHR0aGVtZXM6IHtcblx0XHQnRGVmYXVsdCc6IERFRkFVTFRfVEhFTUUsXG5cdFx0J1NvbGFyaXplZCc6IFNPTEFSSVpFRF9USEVNRSxcblx0fSxcblx0c2VsZWN0ZWRUaGVtZTogJ0RlZmF1bHQnLFxuXHRjdXJyZW50VGhlbWU6IHN0cnVjdHVyZWRDbG9uZShERUZBVUxUX1RIRU1FKSxcblx0bmV3VGhlbWU6ICcnLFxuXHRuZXdIaWdobGlnaHQ6ICcnLFxuXHRkZWNvcmF0ZVByaW50OiB0cnVlLFxuXHRleGNsdWRlZExhbmd1YWdlczogXCJhZC0qXCIsXG5cdGV4Y2x1ZGVkQ29kZWJsb2NrczogXCJkYXRhdmlldywgZGF0YXZpZXdqcywgbWF0aFwiLFxuXHRzcGVjaWFsTGFuZ3VhZ2VzOiBbXCJecHJldmlldyRcIixcIl5pbmNsdWRlJFwiLFwiXm91dHB1dCRcIixcIl5ydW4tLiskXCJdLFxuXHRyZWRpcmVjdExhbmd1YWdlczoge30sXG59XG5cbi8vIENvbnN0YW50c1xuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUlMgPSBbJ3RpdGxlJywnZm9sZCcsJ2xuJywndW53cmFwJywnaWdub3JlJ107XG5leHBvcnQgY29uc3QgUFJJTUFSWV9ERUxBWSA9IDEwO1xuZXhwb3J0IGNvbnN0IFNFQ09OREFSWV9ERUxBWSA9IDIwMDtcblxuY29uc3QgUFJJU01fTEFOR1VBR0VTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHsgLy8gUHJpc20gTGFuZ3VhZ2VzOiBodHRwczovL3ByaXNtanMuY29tL3BsdWdpbnMvc2hvdy1sYW5ndWFnZS9cblx0Ly8gXCJub25lXCI6IFwiUGxhaW4gdGV4dFwiLCAvLyBOT1RFOiBPYnNpZGlhbiB1c2VzIHRoaXMgZm9yIGNvZGVibG9ja3Mgd2l0aG91dCBsYW5ndWFnZSBuYW1lc1xuXHRcInBsYWluXCI6IFwiUGxhaW4gdGV4dFwiLFxuXHRcInBsYWludGV4dFwiOiBcIlBsYWluIHRleHRcIixcblx0XCJ0ZXh0XCI6IFwiUGxhaW4gdGV4dFwiLFxuXHRcInR4dFwiOiBcIlBsYWluIHRleHRcIixcblx0XCJodG1sXCI6IFwiSFRNTFwiLFxuXHRcInhtbFwiOiBcIlhNTFwiLFxuXHRcInN2Z1wiOiBcIlNWR1wiLFxuXHRcIm1hdGhtbFwiOiBcIk1hdGhNTFwiLFxuXHRcInNzbWxcIjogXCJTU01MXCIsXG5cdFwicnNzXCI6IFwiUlNTXCIsXG5cdFwiY3NzXCI6IFwiQ1NTXCIsXG5cdFwiY2xpa2VcIjogXCJDLWxpa2VcIixcblx0XCJqc1wiOiBcIkphdmFTY3JpcHRcIixcblx0XCJhYmFwXCI6IFwiQUJBUFwiLFxuXHRcImFibmZcIjogXCJBQk5GXCIsXG5cdFwiYWxcIjogXCJBTFwiLFxuXHRcImFudGxyNFwiOiBcIkFOVExSNFwiLFxuXHRcImc0XCI6IFwiQU5UTFI0XCIsXG5cdFwiYXBhY2hlY29uZlwiOiBcIkFwYWNoZSBDb25maWd1cmF0aW9uXCIsXG5cdFwiYXBsXCI6IFwiQVBMXCIsXG5cdFwiYXFsXCI6IFwiQVFMXCIsXG5cdFwiaW5vXCI6IFwiQXJkdWlub1wiLFxuXHRcImFyZmZcIjogXCJBUkZGXCIsXG5cdFwiYXJtYXNtXCI6IFwiQVJNIEFzc2VtYmx5XCIsXG5cdFwiYXJtLWFzbVwiOiBcIkFSTSBBc3NlbWJseVwiLFxuXHRcImFydFwiOiBcIkFydHVyb1wiLFxuXHRcImFzY2lpZG9jXCI6IFwiQXNjaWlEb2NcIixcblx0XCJhZG9jXCI6IFwiQXNjaWlEb2NcIixcblx0XCJhc3BuZXRcIjogXCJBU1AuTkVUIChDIylcIixcblx0XCJhc202NTAyXCI6IFwiNjUwMiBBc3NlbWJseVwiLFxuXHRcImFzbWF0bWVsXCI6IFwiQXRtZWwgQVZSIEFzc2VtYmx5XCIsXG5cdFwiYXV0b2hvdGtleVwiOiBcIkF1dG9Ib3RrZXlcIixcblx0XCJhdXRvaXRcIjogXCJBdXRvSXRcIixcblx0XCJhdmlzeW50aFwiOiBcIkF2aVN5bnRoXCIsXG5cdFwiYXZzXCI6IFwiQXZpU3ludGhcIixcblx0XCJhdnJvLWlkbFwiOiBcIkF2cm8gSURMXCIsXG5cdFwiYXZkbFwiOiBcIkF2cm8gSURMXCIsXG5cdFwiYXdrXCI6IFwiQVdLXCIsXG5cdFwiZ2F3a1wiOiBcIkdBV0tcIixcblx0XCJzaFwiOiBcIlNoZWxsXCIsXG5cdFwiYmFzaWNcIjogXCJCQVNJQ1wiLFxuXHRcImJiY29kZVwiOiBcIkJCY29kZVwiLFxuXHRcImJialwiOiBcIkJCalwiLFxuXHRcImJuZlwiOiBcIkJORlwiLFxuXHRcInJibmZcIjogXCJSQk5GXCIsXG5cdFwiYnFuXCI6IFwiQlFOXCIsXG5cdFwiYnNsXCI6IFwiQlNMICgxQzpFbnRlcnByaXNlKVwiLFxuXHRcIm9zY3JpcHRcIjogXCJPbmVTY3JpcHRcIixcblx0XCJjc2hhcnBcIjogXCJDI1wiLFxuXHRcImNzXCI6IFwiQyNcIixcblx0XCJkb3RuZXRcIjogXCJDI1wiLFxuXHRcImNwcFwiOiBcIkMrK1wiLFxuXHRcImNmc2NyaXB0XCI6IFwiQ0ZTY3JpcHRcIixcblx0XCJjZmNcIjogXCJDRlNjcmlwdFwiLFxuXHRcImNpbFwiOiBcIkNJTFwiLFxuXHRcImNpbGtjXCI6IFwiQ2lsay9DXCIsXG5cdFwiY2lsay1jXCI6IFwiQ2lsay9DXCIsXG5cdFwiY2lsa2NwcFwiOiBcIkNpbGsvQysrXCIsXG5cdFwiY2lsay1jcHBcIjogXCJDaWxrL0MrK1wiLFxuXHRcImNpbGtcIjogXCJDaWxrL0MrK1wiLFxuXHRcImNtYWtlXCI6IFwiQ01ha2VcIixcblx0XCJjb2JvbFwiOiBcIkNPQk9MXCIsXG5cdFwiY29mZmVlXCI6IFwiQ29mZmVlU2NyaXB0XCIsXG5cdFwiY29uY1wiOiBcIkNvbmN1cm5hc1wiLFxuXHRcImNzcFwiOiBcIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIsXG5cdFwiY3NzLWV4dHJhc1wiOiBcIkNTUyBFeHRyYXNcIixcblx0XCJjc3ZcIjogXCJDU1ZcIixcblx0XCJjdWVcIjogXCJDVUVcIixcblx0XCJkYXRhd2VhdmVcIjogXCJEYXRhV2VhdmVcIixcblx0XCJkYXhcIjogXCJEQVhcIixcblx0XCJkamFuZ29cIjogXCJEamFuZ28vSmluamEyXCIsXG5cdFwiamluamEyXCI6IFwiRGphbmdvL0ppbmphMlwiLFxuXHRcImRucy16b25lLWZpbGVcIjogXCJETlMgem9uZSBmaWxlXCIsXG5cdFwiZG5zLXpvbmVcIjogXCJETlMgem9uZSBmaWxlXCIsXG5cdFwiZG9ja2VyZmlsZVwiOiBcIkRvY2tlclwiLFxuXHRcImRvdFwiOiBcIkRPVCAoR3JhcGh2aXopXCIsXG5cdFwiZ3ZcIjogXCJET1QgKEdyYXBodml6KVwiLFxuXHRcImVibmZcIjogXCJFQk5GXCIsXG5cdFwiZWRpdG9yY29uZmlnXCI6IFwiRWRpdG9yQ29uZmlnXCIsXG5cdFwiZWpzXCI6IFwiRUpTXCIsXG5cdFwiZXRsdWFcIjogXCJFbWJlZGRlZCBMdWEgdGVtcGxhdGluZ1wiLFxuXHRcImVyYlwiOiBcIkVSQlwiLFxuXHRcImV4Y2VsLWZvcm11bGFcIjogXCJFeGNlbCBGb3JtdWxhXCIsXG5cdFwieGxzeFwiOiBcIkV4Y2VsIEZvcm11bGFcIixcblx0XCJ4bHNcIjogXCJFeGNlbCBGb3JtdWxhXCIsXG5cdFwiZnNoYXJwXCI6IFwiRiNcIixcblx0XCJmaXJlc3RvcmUtc2VjdXJpdHktcnVsZXNcIjogXCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIixcblx0XCJmdGxcIjogXCJGcmVlTWFya2VyIFRlbXBsYXRlIExhbmd1YWdlXCIsXG5cdFwiZ21sXCI6IFwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG5cdFwiZ2FtZW1ha2VybGFuZ3VhZ2VcIjogXCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIixcblx0XCJnYXBcIjogXCJHQVAgKENBUylcIixcblx0XCJnY29kZVwiOiBcIkctY29kZVwiLFxuXHRcImdkc2NyaXB0XCI6IFwiR0RTY3JpcHRcIixcblx0XCJnZWRjb21cIjogXCJHRURDT01cIixcblx0XCJnZXR0ZXh0XCI6IFwiZ2V0dGV4dFwiLFxuXHRcInBvXCI6IFwiZ2V0dGV4dFwiLFxuXHRcImdsc2xcIjogXCJHTFNMXCIsXG5cdFwiZ25cIjogXCJHTlwiLFxuXHRcImduaVwiOiBcIkdOXCIsXG5cdFwibGlua2VyLXNjcmlwdFwiOiBcIkdOVSBMaW5rZXIgU2NyaXB0XCIsXG5cdFwibGRcIjogXCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuXHRcImdvLW1vZHVsZVwiOiBcIkdvIG1vZHVsZVwiLFxuXHRcImdvLW1vZFwiOiBcIkdvIG1vZHVsZVwiLFxuXHRcImdyYXBocWxcIjogXCJHcmFwaFFMXCIsXG5cdFwiaGJzXCI6IFwiSGFuZGxlYmFyc1wiLFxuXHRcImhzXCI6IFwiSGFza2VsbFwiLFxuXHRcImhjbFwiOiBcIkhDTFwiLFxuXHRcImhsc2xcIjogXCJITFNMXCIsXG5cdFwiaHR0cFwiOiBcIkhUVFBcIixcblx0XCJocGtwXCI6IFwiSFRUUCBQdWJsaWMtS2V5LVBpbnNcIixcblx0XCJoc3RzXCI6IFwiSFRUUCBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5XCIsXG5cdFwiaWNoaWdvamFtXCI6IFwiSWNoaWdvSmFtXCIsXG5cdFwiaWN1LW1lc3NhZ2UtZm9ybWF0XCI6IFwiSUNVIE1lc3NhZ2UgRm9ybWF0XCIsXG5cdFwiaWRyXCI6IFwiSWRyaXNcIixcblx0XCJpZ25vcmVcIjogXCIuaWdub3JlXCIsXG5cdFwiZ2l0aWdub3JlXCI6IFwiLmdpdGlnbm9yZVwiLFxuXHRcImhnaWdub3JlXCI6IFwiLmhnaWdub3JlXCIsXG5cdFwibnBtaWdub3JlXCI6IFwiLm5wbWlnbm9yZVwiLFxuXHRcImluZm9ybTdcIjogXCJJbmZvcm0gN1wiLFxuXHRcImphdmFkb2NcIjogXCJKYXZhRG9jXCIsXG5cdFwiamF2YWRvY2xpa2VcIjogXCJKYXZhRG9jLWxpa2VcIixcblx0XCJqYXZhc3RhY2t0cmFjZVwiOiBcIkphdmEgc3RhY2sgdHJhY2VcIixcblx0XCJqcVwiOiBcIkpRXCIsXG5cdFwianNkb2NcIjogXCJKU0RvY1wiLFxuXHRcImpzLWV4dHJhc1wiOiBcIkpTIEV4dHJhc1wiLFxuXHRcImpzb25cIjogXCJKU09OXCIsXG5cdFwid2VibWFuaWZlc3RcIjogXCJXZWIgQXBwIE1hbmlmZXN0XCIsXG5cdFwianNvbjVcIjogXCJKU09ONVwiLFxuXHRcImpzb25wXCI6IFwiSlNPTlBcIixcblx0XCJqc3N0YWNrdHJhY2VcIjogXCJKUyBzdGFjayB0cmFjZVwiLFxuXHRcImpzLXRlbXBsYXRlc1wiOiBcIkpTIFRlbXBsYXRlc1wiLFxuXHRcImtlZXBhbGl2ZWRcIjogXCJLZWVwYWxpdmVkIENvbmZpZ3VyZVwiLFxuXHRcImt0c1wiOiBcIktvdGxpbiBTY3JpcHRcIixcblx0XCJrdFwiOiBcIktvdGxpblwiLFxuXHRcImt1bWlyXCI6IFwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcblx0XCJrdW1cIjogXCJLdU1pciAoXHUwNDFBXHUwNDQzXHUwNDFDXHUwNDM4XHUwNDQwKVwiLFxuXHRcImxhdGV4XCI6IFwiTGFUZVhcIixcblx0XCJ0ZXhcIjogXCJUZVhcIixcblx0XCJjb250ZXh0XCI6IFwiQ29uVGVYdFwiLFxuXHRcImxpbHlwb25kXCI6IFwiTGlseVBvbmRcIixcblx0XCJseVwiOiBcIkxpbHlQb25kXCIsXG5cdFwiZW1hY3NcIjogXCJMaXNwXCIsXG5cdFwiZWxpc3BcIjogXCJMaXNwXCIsXG5cdFwiZW1hY3MtbGlzcFwiOiBcIkxpc3BcIixcblx0XCJsbHZtXCI6IFwiTExWTSBJUlwiLFxuXHRcImxvZ1wiOiBcIkxvZyBmaWxlXCIsXG5cdFwibG9sY29kZVwiOiBcIkxPTENPREVcIixcblx0XCJtYWdtYVwiOiBcIk1hZ21hIChDQVMpXCIsXG5cdFwibWRcIjogXCJNYXJrZG93blwiLFxuXHRcIm1hcmt1cC10ZW1wbGF0aW5nXCI6IFwiTWFya3VwIHRlbXBsYXRpbmdcIixcblx0XCJtYXRsYWJcIjogXCJNQVRMQUJcIixcblx0XCJtYXhzY3JpcHRcIjogXCJNQVhTY3JpcHRcIixcblx0XCJtZWxcIjogXCJNRUxcIixcblx0XCJtZXRhZm9udFwiOiBcIk1FVEFGT05UXCIsXG5cdFwibW9uZ29kYlwiOiBcIk1vbmdvREJcIixcblx0XCJtb29uXCI6IFwiTW9vblNjcmlwdFwiLFxuXHRcIm4xcWxcIjogXCJOMVFMXCIsXG5cdFwibjRqc1wiOiBcIk40SlNcIixcblx0XCJuNGpzZFwiOiBcIk40SlNcIixcblx0XCJuYW5kMnRldHJpcy1oZGxcIjogXCJOYW5kIFRvIFRldHJpcyBIRExcIixcblx0XCJuYW5pc2NyaXB0XCI6IFwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuXHRcIm5hbmlcIjogXCJOYW5pbm92ZWwgU2NyaXB0XCIsXG5cdFwibmFzbVwiOiBcIk5BU01cIixcblx0XCJuZW9uXCI6IFwiTkVPTlwiLFxuXHRcIm5naW54XCI6IFwibmdpbnhcIixcblx0XCJuc2lzXCI6IFwiTlNJU1wiLFxuXHRcIm9iamVjdGl2ZWNcIjogXCJPYmplY3RpdmUtQ1wiLFxuXHRcIm9iamNcIjogXCJPYmplY3RpdmUtQ1wiLFxuXHRcIm9jYW1sXCI6IFwiT0NhbWxcIixcblx0XCJvcGVuY2xcIjogXCJPcGVuQ0xcIixcblx0XCJvcGVucWFzbVwiOiBcIk9wZW5RYXNtXCIsXG5cdFwicWFzbVwiOiBcIk9wZW5RYXNtXCIsXG5cdFwicGFyaWdwXCI6IFwiUEFSSS9HUFwiLFxuXHRcIm9iamVjdHBhc2NhbFwiOiBcIk9iamVjdCBQYXNjYWxcIixcblx0XCJwc2xcIjogXCJQQVRST0wgU2NyaXB0aW5nIExhbmd1YWdlXCIsXG5cdFwicGNheGlzXCI6IFwiUEMtQXhpc1wiLFxuXHRcInB4XCI6IFwiUEMtQXhpc1wiLFxuXHRcInBlb3BsZWNvZGVcIjogXCJQZW9wbGVDb2RlXCIsXG5cdFwicGNvZGVcIjogXCJQZW9wbGVDb2RlXCIsXG5cdFwicGhwXCI6IFwiUEhQXCIsXG5cdFwicGhwZG9jXCI6IFwiUEhQRG9jXCIsXG5cdFwicGhwLWV4dHJhc1wiOiBcIlBIUCBFeHRyYXNcIixcblx0XCJwbGFudC11bWxcIjogXCJQbGFudFVNTFwiLFxuXHRcInBsYW50dW1sXCI6IFwiUGxhbnRVTUxcIixcblx0XCJwbHNxbFwiOiBcIlBML1NRTFwiLFxuXHRcInBvd2VycXVlcnlcIjogXCJQb3dlclF1ZXJ5XCIsXG5cdFwicHFcIjogXCJQb3dlclF1ZXJ5XCIsXG5cdFwibXNjcmlwdFwiOiBcIlBvd2VyUXVlcnlcIixcblx0XCJwb3dlcnNoZWxsXCI6IFwiUG93ZXJTaGVsbFwiLFxuXHRcInByb21xbFwiOiBcIlByb21RTFwiLFxuXHRcInByb3BlcnRpZXNcIjogXCIucHJvcGVydGllc1wiLFxuXHRcInByb3RvYnVmXCI6IFwiUHJvdG9jb2wgQnVmZmVyc1wiLFxuXHRcInB1cmViYXNpY1wiOiBcIlB1cmVCYXNpY1wiLFxuXHRcInBiZmFzbVwiOiBcIlB1cmVCYXNpY1wiLFxuXHRcInB1cnNcIjogXCJQdXJlU2NyaXB0XCIsXG5cdFwicHlcIjogXCJQeXRob25cIixcblx0XCJxc2hhcnBcIjogXCJRI1wiLFxuXHRcInFzXCI6IFwiUSNcIixcblx0XCJxXCI6IFwiUSAoa2RiKyBkYXRhYmFzZSlcIixcblx0XCJxbWxcIjogXCJRTUxcIixcblx0XCJya3RcIjogXCJSYWNrZXRcIixcblx0XCJjc2h0bWxcIjogXCJSYXpvciBDI1wiLFxuXHRcInJhem9yXCI6IFwiUmF6b3IgQyNcIixcblx0XCJqc3hcIjogXCJSZWFjdCBKU1hcIixcblx0XCJ0c3hcIjogXCJSZWFjdCBUU1hcIixcblx0XCJyZW5weVwiOiBcIlJlbidweVwiLFxuXHRcInJweVwiOiBcIlJlbidweVwiLFxuXHRcInJlc1wiOiBcIlJlU2NyaXB0XCIsXG5cdFwicmVzdFwiOiBcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCIsXG5cdFwicm9ib3RmcmFtZXdvcmtcIjogXCJSb2JvdCBGcmFtZXdvcmtcIixcblx0XCJyb2JvdFwiOiBcIlJvYm90IEZyYW1ld29ya1wiLFxuXHRcInJiXCI6IFwiUnVieVwiLFxuXHRcInNhc1wiOiBcIlNBU1wiLFxuXHRcInNhc3NcIjogXCJTYXNzIChTYXNzKVwiLFxuXHRcInNjc3NcIjogXCJTYXNzIChTQ1NTKVwiLFxuXHRcInNoZWxsLXNlc3Npb25cIjogXCJTaGVsbCBzZXNzaW9uXCIsXG5cdFwic2gtc2Vzc2lvblwiOiBcIlNoZWxsIHNlc3Npb25cIixcblx0XCJzaGVsbHNlc3Npb25cIjogXCJTaGVsbCBzZXNzaW9uXCIsXG5cdFwic21sXCI6IFwiU01MXCIsXG5cdFwic21sbmpcIjogXCJTTUwvTkpcIixcblx0XCJzb2xpZGl0eVwiOiBcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcblx0XCJzb2xcIjogXCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG5cdFwic29sdXRpb24tZmlsZVwiOiBcIlNvbHV0aW9uIGZpbGVcIixcblx0XCJzbG5cIjogXCJTb2x1dGlvbiBmaWxlXCIsXG5cdFwic295XCI6IFwiU295IChDbG9zdXJlIFRlbXBsYXRlKVwiLFxuXHRcInNwYXJxbFwiOiBcIlNQQVJRTFwiLFxuXHRcInJxXCI6IFwiU1BBUlFMXCIsXG5cdFwic3BsdW5rLXNwbFwiOiBcIlNwbHVuayBTUExcIixcblx0XCJzcWZcIjogXCJTUUY6IFN0YXR1cyBRdW8gRnVuY3Rpb24gKEFybWEgMylcIixcblx0XCJzcWxcIjogXCJTUUxcIixcblx0XCJzdGF0YVwiOiBcIlN0YXRhIEFkb1wiLFxuXHRcImllY3N0XCI6IFwiU3RydWN0dXJlZCBUZXh0IChJRUMgNjExMzEtMylcIixcblx0XCJzdXBlcmNvbGxpZGVyXCI6IFwiU3VwZXJDb2xsaWRlclwiLFxuXHRcInNjbGFuZ1wiOiBcIlN1cGVyQ29sbGlkZXJcIixcblx0XCJzeXN0ZW1kXCI6IFwiU3lzdGVtZCBjb25maWd1cmF0aW9uIGZpbGVcIixcblx0XCJ0NC10ZW1wbGF0aW5nXCI6IFwiVDQgdGVtcGxhdGluZ1wiLFxuXHRcInQ0LWNzXCI6IFwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuXHRcInQ0XCI6IFwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuXHRcInQ0LXZiXCI6IFwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiLFxuXHRcInRhcFwiOiBcIlRBUFwiLFxuXHRcInR0MlwiOiBcIlRlbXBsYXRlIFRvb2xraXQgMlwiLFxuXHRcInRvbWxcIjogXCJUT01MXCIsXG5cdFwidHJpY2tsZVwiOiBcInRyaWNrbGVcIixcblx0XCJ0cm95XCI6IFwidHJveVwiLFxuXHRcInRyaWdcIjogXCJUcmlHXCIsXG5cdFwidHNcIjogXCJUeXBlU2NyaXB0XCIsXG5cdFwidHNjb25maWdcIjogXCJUU0NvbmZpZ1wiLFxuXHRcInVzY3JpcHRcIjogXCJVbnJlYWxTY3JpcHRcIixcblx0XCJ1Y1wiOiBcIlVucmVhbFNjcmlwdFwiLFxuXHRcInVvcmF6b3JcIjogXCJVTyBSYXpvciBTY3JpcHRcIixcblx0XCJ1cmlcIjogXCJVUklcIixcblx0XCJ1cmxcIjogXCJVUkxcIixcblx0XCJ2Ym5ldFwiOiBcIlZCLk5ldFwiLFxuXHRcInZoZGxcIjogXCJWSERMXCIsXG5cdFwidmltXCI6IFwidmltXCIsXG5cdFwidmlzdWFsLWJhc2ljXCI6IFwiVmlzdWFsIEJhc2ljXCIsXG5cdFwidmJhXCI6IFwiVkJBXCIsXG5cdFwidmJcIjogXCJWaXN1YWwgQmFzaWNcIixcblx0XCJ3YXNtXCI6IFwiV2ViQXNzZW1ibHlcIixcblx0XCJ3ZWItaWRsXCI6IFwiV2ViIElETFwiLFxuXHRcIndlYmlkbFwiOiBcIldlYiBJRExcIixcblx0XCJ3Z3NsXCI6IFwiV0dTTFwiLFxuXHRcIndpa2lcIjogXCJXaWtpIG1hcmt1cFwiLFxuXHRcIndvbGZyYW1cIjogXCJXb2xmcmFtIGxhbmd1YWdlXCIsXG5cdFwibmJcIjogXCJNYXRoZW1hdGljYSBOb3RlYm9va1wiLFxuXHRcIndsXCI6IFwiV29sZnJhbSBsYW5ndWFnZVwiLFxuXHRcInhlb3JhY3ViZVwiOiBcIlhlb3JhQ3ViZVwiLFxuXHRcInhtbC1kb2NcIjogXCJYTUwgZG9jICgubmV0KVwiLFxuXHRcInhvam9cIjogXCJYb2pvIChSRUFMYmFzaWMpXCIsXG5cdFwieHF1ZXJ5XCI6IFwiWFF1ZXJ5XCIsXG5cdFwieWFtbFwiOiBcIllBTUxcIixcblx0XCJ5bWxcIjogXCJZQU1MXCIsXG5cdFwieWFuZ1wiOiBcIllBTkdcIixcbn07IFxuY29uc3QgTUFOVUFMX1BSSVNNX0xBTkdVQUdFUzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7IC8vIE1hbnVhbGx5IGdlbmVyYXRlZCBsaXN0IGZyb20gaHR0cHM6Ly9wcmlzbWpzLmNvbS8gIC0gIDI5NyBsYW5ndWFnZXNcblx0XCJjc3NcIjpcIkNTU1wiLFxuXHRcImNsaWtlXCI6XCJDLWxpa2VcIixcblx0XCJqYXZhc2NyaXB0XCI6XCJKYXZhU2NyaXB0XCIsXG5cdFwianNcIjpcIkphdmFTY3JpcHRcIixcblx0XCJhYmFwXCI6XCJBQkFQXCIsXG5cdFwiYWJuZlwiOlwiQUJORlwiLFxuXHRcImFjdGlvbnNjcmlwdFwiOlwiQWN0aW9uU2NyaXB0XCIsXG5cdFwiYWRhXCI6XCJBZGFcIixcblx0XCJhZ2RhXCI6XCJBZ2RhXCIsXG5cdFwiYWxcIjpcIkFMXCIsXG5cdFwiYW50bHI0XCI6XCJBTlRMUjRcIixcblx0XCJnNFwiOlwiQU5UTFI0XCIsXG5cdFwiYXBhY2hlY29uZlwiOlwiQXBhY2hlIENvbmZpZ3VyYXRpb25cIixcblx0XCJhcGV4XCI6XCJBcGV4XCIsXG5cdFwiYXBsXCI6XCJBUExcIixcblx0XCJhcHBsZXNjcmlwdFwiOlwiQXBwbGVTY3JpcHRcIixcblx0XCJhcWxcIjpcIkFRTFwiLFxuXHRcImFyZHVpbm9cIjpcIkFyZHVpbm9cIixcblx0XCJpbm9cIjpcIkFyZHVpbm9cIixcblx0XCJhcmZmXCI6XCJBUkZGXCIsXG5cdFwiYXJtYXNtXCI6XCJBUk0gQXNzZW1ibHlcIixcblx0XCJhcm0tYXNtXCI6XCJBUk0gQXNzZW1ibHlcIixcblx0XCJhcnR1cm9cIjpcIkFydHVyb1wiLFxuXHRcImFydFwiOlwiQXJ0dXJvXCIsXG5cdFwiYXNjaWlkb2NcIjpcIkFzY2lpRG9jXCIsXG5cdFwiYWRvY1wiOlwiQXNjaWlEb2NcIixcblx0XCJhc3BuZXRcIjpcIkFTUC5ORVQgKEMjKVwiLFxuXHRcImFzbTY1MDJcIjpcIjY1MDIgQXNzZW1ibHlcIixcblx0XCJhc21hdG1lbFwiOlwiQXRtZWwgQVZSIEFzc2VtYmx5XCIsXG5cdFwiYXV0b2hvdGtleVwiOlwiQXV0b0hvdGtleVwiLFxuXHRcImF1dG9pdFwiOlwiQXV0b0l0XCIsXG5cdFwiYXZpc3ludGhcIjpcIkF2aVN5bnRoXCIsXG5cdFwiYXZzXCI6XCJBdmlTeW50aFwiLFxuXHRcImF2cm8taWRsXCI6XCJBdnJvIElETFwiLFxuXHRcImF2ZGxcIjpcIkF2cm8gSURMXCIsXG5cdFwiYXdrXCI6XCJBV0tcIixcblx0XCJnYXdrXCI6XCJHQVdLXCIsXG5cdFwiYmFzaFwiOlwiQmFzaFwiLFxuXHRcInNoXCI6XCJTaGVsbFwiLFxuXHRcInNoZWxsXCI6XCJTaGVsbFwiLFxuXHRcImJhc2ljXCI6XCJCQVNJQ1wiLFxuXHRcImJhdGNoXCI6XCJCYXRjaFwiLFxuXHRcImJiY29kZVwiOlwiQkJjb2RlXCIsXG5cdFwic2hvcnRjb2RlXCI6XCJCQmNvZGVcIixcblx0XCJiYmpcIjpcIkJCalwiLFxuXHRcImJpcmJcIjpcIkJpcmJcIixcblx0XCJiaXNvblwiOlwiQmlzb25cIixcblx0XCJibmZcIjpcIkJORlwiLFxuXHRcInJibmZcIjpcIkJORlwiLFxuXHRcImJxblwiOlwiQlFOXCIsXG5cdFwiYnJhaW5mdWNrXCI6XCJCcmFpbmZ1Y2tcIixcblx0XCJicmlnaHRzY3JpcHRcIjpcIkJyaWdodFNjcmlwdFwiLFxuXHRcImJyb1wiOlwiQnJvXCIsXG5cdFwiYnNsXCI6XCJCU0wgKDFDKVwiLFxuXHRcIm9zY3JpcHRcIjpcIkJTTCAoMUMpXCIsXG5cdFwiY1wiOlwiQ1wiLFxuXHRcImNzaGFycFwiOlwiQyNcIixcblx0XCJjc1wiOlwiQyNcIixcblx0XCJkb3RuZXRcIjpcIkMjXCIsXG5cdFwiY3BwXCI6XCJDKytcIixcblx0XCJjZnNjcmlwdFwiOlwiQ0ZTY3JpcHRcIixcblx0XCJjZmNcIjpcIkNGU2NyaXB0XCIsXG5cdFwiY2hhaXNjcmlwdFwiOlwiQ2hhaVNjcmlwdFwiLFxuXHRcImNpbFwiOlwiQ0lMXCIsXG5cdFwiY2lsa2NcIjpcIkNpbGsvQ1wiLFxuXHRcImNpbGstY1wiOlwiQ2lsay9DXCIsXG5cdFwiY2lsa2NwcFwiOlwiQ2lsay9DKytcIixcblx0XCJjaWxrLWNwcFwiOlwiQ2lsay9DKytcIixcblx0XCJjaWxrXCI6XCJDaWxrL0MrK1wiLFxuXHRcImNsb2p1cmVcIjpcIkNsb2p1cmVcIixcblx0XCJjbWFrZVwiOlwiQ01ha2VcIixcblx0XCJjb2JvbFwiOlwiQ09CT0xcIixcblx0XCJjb2ZmZWVzY3JpcHRcIjpcIkNvZmZlZVNjcmlwdFwiLFxuXHRcImNvZmZlZVwiOlwiQ29mZmVlU2NyaXB0XCIsXG5cdFwiY29uY3VybmFzXCI6XCJDb25jdXJuYXNcIixcblx0XCJjb25jXCI6XCJDb25jdXJuYXNcIixcblx0XCJjc3BcIjpcIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIsXG5cdFwiY29va2xhbmdcIjpcIkNvb2tsYW5nXCIsXG5cdFwiY29xXCI6XCJDb3FcIixcblx0XCJjcnlzdGFsXCI6XCJDcnlzdGFsXCIsXG5cdFwiY3NzLWV4dHJhc1wiOlwiQ1NTIEV4dHJhc1wiLFxuXHRcImNzdlwiOlwiQ1NWXCIsXG5cdFwiY3VlXCI6XCJDVUVcIixcblx0XCJjeXBoZXJcIjpcIkN5cGhlclwiLFxuXHRcImRcIjpcIkRcIixcblx0XCJkYXJ0XCI6XCJEYXJ0XCIsXG5cdFwiZGF0YXdlYXZlXCI6XCJEYXRhV2VhdmVcIixcblx0XCJkYXhcIjpcIkRBWFwiLFxuXHRcImRoYWxsXCI6XCJEaGFsbFwiLFxuXHRcImRpZmZcIjpcIkRpZmZcIixcblx0XCJkamFuZ29cIjpcIkRqYW5nby9KaW5qYTJcIixcblx0XCJqaW5qYTJcIjpcIkRqYW5nby9KaW5qYTJcIixcblx0XCJkbnMtem9uZS1maWxlXCI6XCJETlMgem9uZSBmaWxlXCIsXG5cdFwiZG5zLXpvbmVcIjpcIkROUyB6b25lIGZpbGVcIixcblx0XCJkb2NrZXJcIjpcIkRvY2tlclwiLFxuXHRcImRvY2tlcmZpbGVcIjpcIkRvY2tlclwiLFxuXHRcImRvdFwiOlwiRE9UIChHcmFwaHZpeilcIixcblx0XCJndlwiOlwiRE9UIChHcmFwaHZpeilcIixcblx0XCJlYm5mXCI6XCJFQk5GXCIsXG5cdFwiZWRpdG9yY29uZmlnXCI6XCJFZGl0b3JDb25maWdcIixcblx0XCJlaWZmZWxcIjpcIkVpZmZlbFwiLFxuXHRcImVqc1wiOlwiRUpTXCIsXG5cdFwiZXRhXCI6XCJFSlNcIixcblx0XCJlbGl4aXJcIjpcIkVsaXhpclwiLFxuXHRcImVsbVwiOlwiRWxtXCIsXG5cdFwiZXRsdWFcIjpcIkVtYmVkZGVkIEx1YSB0ZW1wbGF0aW5nXCIsXG5cdFwiZXJiXCI6XCJFUkJcIixcblx0XCJlcmxhbmdcIjpcIkVybGFuZ1wiLFxuXHRcImV4Y2VsLWZvcm11bGFcIjpcIkV4Y2VsIEZvcm11bGFcIixcblx0XCJ4bHN4XCI6XCJFeGNlbCBGb3JtdWxhXCIsXG5cdFwieGxzXCI6XCJFeGNlbCBGb3JtdWxhXCIsXG5cdFwiZnNoYXJwXCI6XCJGI1wiLFxuXHRcImZhY3RvclwiOlwiRmFjdG9yXCIsXG5cdFwiZmFsc2VcIjpcIkZhbHNlXCIsXG5cdFwiZmlyZXN0b3JlLXNlY3VyaXR5LXJ1bGVzXCI6XCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIixcblx0XCJmbG93XCI6XCJGbG93XCIsXG5cdFwiZm9ydHJhblwiOlwiRm9ydHJhblwiLFxuXHRcImZ0bFwiOlwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiLFxuXHRcImdtbFwiOlwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG5cdFwiZ2FtZW1ha2VybGFuZ3VhZ2VcIjpcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuXHRcImdhcFwiOlwiR0FQIChDQVMpXCIsXG5cdFwiZ2NvZGVcIjpcIkctY29kZVwiLFxuXHRcImdkc2NyaXB0XCI6XCJHRFNjcmlwdFwiLFxuXHRcImdlZGNvbVwiOlwiR0VEQ09NXCIsXG5cdFwiZ2V0dGV4dFwiOlwiZ2V0dGV4dFwiLFxuXHRcInBvXCI6XCJnZXR0ZXh0XCIsXG5cdFwiZ2hlcmtpblwiOlwiR2hlcmtpblwiLFxuXHRcImdpdFwiOlwiR2l0XCIsXG5cdFwiZ2xzbFwiOlwiR0xTTFwiLFxuXHRcImduXCI6XCJHTlwiLFxuXHRcImduaVwiOlwiR05cIixcblx0XCJsaW5rZXItc2NyaXB0XCI6XCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuXHRcImxkXCI6XCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuXHRcImdvXCI6XCJHb1wiLFxuXHRcImdvLW1vZHVsZVwiOlwiR28gbW9kdWxlXCIsXG5cdFwiZ28tbW9kXCI6XCJHbyBtb2R1bGVcIixcblx0XCJncmFkbGVcIjpcIkdyYWRsZVwiLFxuXHRcImdyYXBocWxcIjpcIkdyYXBoUUxcIixcblx0XCJncm9vdnlcIjpcIkdyb292eVwiLFxuXHRcImhhbWxcIjpcIkhhbWxcIixcblx0XCJoYW5kbGViYXJzXCI6XCJIYW5kbGViYXJzXCIsXG5cdFwiaGJzXCI6XCJIYW5kbGViYXJzXCIsXG5cdFwibXVzdGFjaGVcIjpcIkhhbmRsZWJhcnNcIixcblx0XCJoYXNrZWxsXCI6XCJIYXNrZWxsXCIsXG5cdFwiaHNcIjpcIkhhc2tlbGxcIixcblx0XCJoYXhlXCI6XCJIYXhlXCIsXG5cdFwiaGNsXCI6XCJIQ0xcIixcblx0XCJobHNsXCI6XCJITFNMXCIsXG5cdFwiaG9vblwiOlwiSG9vblwiLFxuXHRcImh0dHBcIjpcIkhUVFBcIixcblx0XCJocGtwXCI6XCJIVFRQIFB1YmxpYy1LZXktUGluc1wiLFxuXHRcImhzdHNcIjpcIkhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVwiLFxuXHRcImljaGlnb2phbVwiOlwiSWNoaWdvSmFtXCIsXG5cdFwiaWNvblwiOlwiSWNvblwiLFxuXHRcImljdS1tZXNzYWdlLWZvcm1hdFwiOlwiSUNVIE1lc3NhZ2UgRm9ybWF0XCIsXG5cdFwiaWRyaXNcIjpcIklkcmlzXCIsXG5cdFwiaWRyXCI6XCJJZHJpc1wiLFxuXHRcImluZm9ybTdcIjpcIkluZm9ybSA3XCIsXG5cdFwiaW5pXCI6XCJJbmlcIixcblx0XCJpb1wiOlwiSW9cIixcblx0XCJqXCI6XCJKXCIsXG5cdFwiamF2YVwiOlwiSmF2YVwiLFxuXHRcImphdmFkb2NcIjpcIkphdmFEb2NcIixcblx0XCJqYXZhZG9jbGlrZVwiOlwiSmF2YURvYy1saWtlXCIsXG5cdFwiamF2YXN0YWNrdHJhY2VcIjpcIkphdmEgc3RhY2sgdHJhY2VcIixcblx0XCJqZXhsXCI6XCJKZXhsXCIsXG5cdFwiam9saWVcIjpcIkpvbGllXCIsXG5cdFwianFcIjpcIkpRXCIsXG5cdFwianNkb2NcIjpcIkpTRG9jXCIsXG5cdFwianMtZXh0cmFzXCI6XCJKUyBFeHRyYXNcIixcblx0XCJqc29uXCI6XCJKU09OXCIsXG5cdFwid2VibWFuaWZlc3RcIjpcIkpTT05cIixcblx0XCJqc29uNVwiOlwiSlNPTjVcIixcblx0XCJqc29ucFwiOlwiSlNPTlBcIixcblx0XCJqc3N0YWNrdHJhY2VcIjpcIkpTIHN0YWNrIHRyYWNlXCIsXG5cdFwianMtdGVtcGxhdGVzXCI6XCJKUyBUZW1wbGF0ZXNcIixcblx0XCJqdWxpYVwiOlwiSnVsaWFcIixcblx0XCJrZWVwYWxpdmVkXCI6XCJLZWVwYWxpdmVkIENvbmZpZ3VyZVwiLFxuXHRcImtleW1hblwiOlwiS2V5bWFuXCIsXG5cdFwia290bGluXCI6XCJLb3RsaW5cIixcblx0XCJrdFwiOlwiS290bGluXCIsXG5cdFwia3RzXCI6XCJLb3RsaW5cIixcblx0XCJrdW1pclwiOlwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcblx0XCJrdW1cIjpcIkt1TWlyIChcdTA0MUFcdTA0NDNcdTA0MUNcdTA0MzhcdTA0NDApXCIsXG5cdFwia3VzdG9cIjpcIkt1c3RvXCIsXG5cdFwibGF0ZXhcIjpcIkxhVGVYXCIsXG5cdFwidGV4XCI6XCJMYVRlWFwiLFxuXHRcImNvbnRleHRcIjpcIkxhVGVYXCIsXG5cdFwibGF0dGVcIjpcIkxhdHRlXCIsXG5cdFwibGVzc1wiOlwiTGVzc1wiLFxuXHRcImxpbHlwb25kXCI6XCJMaWx5UG9uZFwiLFxuXHRcImx5XCI6XCJMaWx5UG9uZFwiLFxuXHRcImxpcXVpZFwiOlwiTGlxdWlkXCIsXG5cdFwibGlzcFwiOlwiTGlzcFwiLFxuXHRcImVtYWNzXCI6XCJMaXNwXCIsXG5cdFwiZWxpc3BcIjpcIkxpc3BcIixcblx0XCJlbWFjcy1saXNwXCI6XCJMaXNwXCIsXG5cdFwibGl2ZXNjcmlwdFwiOlwiTGl2ZVNjcmlwdFwiLFxuXHRcImxsdm1cIjpcIkxMVk0gSVJcIixcblx0XCJsb2dcIjpcIkxvZyBmaWxlXCIsXG5cdFwibG9sY29kZVwiOlwiTE9MQ09ERVwiLFxuXHRcImx1YVwiOlwiTHVhXCIsXG5cdFwibWFnbWFcIjpcIk1hZ21hIChDQVMpXCIsXG5cdFwibWFrZWZpbGVcIjpcIk1ha2VmaWxlXCIsXG5cdFwibWFya2Rvd25cIjpcIk1hcmtkb3duXCIsXG5cdFwibWRcIjpcIk1hcmtkb3duXCIsXG5cdFwibWFya3VwLXRlbXBsYXRpbmdcIjpcIk1hcmt1cCB0ZW1wbGF0aW5nXCIsXG5cdFwibWF0YVwiOlwiTWF0YVwiLFxuXHRcIm1hdGxhYlwiOlwiTUFUTEFCXCIsXG5cdFwibWF4c2NyaXB0XCI6XCJNQVhTY3JpcHRcIixcblx0XCJtZWxcIjpcIk1FTFwiLFxuXHRcIm1lcm1haWRcIjpcIk1lcm1haWRcIixcblx0XCJtZXRhZm9udFwiOlwiTUVUQUZPTlRcIixcblx0XCJtaXphclwiOlwiTWl6YXJcIixcblx0XCJtb25nb2RiXCI6XCJNb25nb0RCXCIsXG5cdFwibW9ua2V5XCI6XCJNb25rZXlcIixcblx0XCJtb29uc2NyaXB0XCI6XCJNb29uU2NyaXB0XCIsXG5cdFwibW9vblwiOlwiTW9vblNjcmlwdFwiLFxuXHRcIm4xcWxcIjpcIk4xUUxcIixcblx0XCJuNGpzXCI6XCJONEpTXCIsXG5cdFwibjRqc2RcIjpcIk40SlNcIixcblx0XCJuYW5kMnRldHJpcy1oZGxcIjpcIk5hbmQgVG8gVGV0cmlzIEhETFwiLFxuXHRcIm5hbmlzY3JpcHRcIjpcIk5hbmlub3ZlbCBTY3JpcHRcIixcblx0XCJuYW5pXCI6XCJOYW5pbm92ZWwgU2NyaXB0XCIsXG5cdFwibmFzbVwiOlwiTkFTTVwiLFxuXHRcIm5lb25cIjpcIk5FT05cIixcblx0XCJuZXZvZFwiOlwiTmV2b2RcIixcblx0XCJuZ2lueFwiOlwibmdpbnhcIixcblx0XCJuaW1cIjpcIk5pbVwiLFxuXHRcIm5peFwiOlwiTml4XCIsXG5cdFwibnNpc1wiOlwiTlNJU1wiLFxuXHRcIm9iamVjdGl2ZWNcIjpcIk9iamVjdGl2ZS1DXCIsXG5cdFwib2JqY1wiOlwiT2JqZWN0aXZlLUNcIixcblx0XCJvY2FtbFwiOlwiT0NhbWxcIixcblx0XCJvZGluXCI6XCJPZGluXCIsXG5cdFwib3BlbmNsXCI6XCJPcGVuQ0xcIixcblx0XCJvcGVucWFzbVwiOlwiT3BlblFhc21cIixcblx0XCJxYXNtXCI6XCJPcGVuUWFzbVwiLFxuXHRcIm96XCI6XCJPelwiLFxuXHRcInBhcmlncFwiOlwiUEFSSS9HUFwiLFxuXHRcInBhcnNlclwiOlwiUGFyc2VyXCIsXG5cdFwicGFzY2FsXCI6XCJQYXNjYWxcIixcblx0XCJwYXNjYWxpZ29cIjpcIlBhc2NhbGlnb1wiLFxuXHRcInBzbFwiOlwiUEFUUk9MIFNjcmlwdGluZyBMYW5ndWFnZVwiLFxuXHRcInBjYXhpc1wiOlwiUEMtQXhpc1wiLFxuXHRcInB4XCI6XCJQQy1BeGlzXCIsXG5cdFwicGVvcGxlY29kZVwiOlwiUGVvcGxlQ29kZVwiLFxuXHRcInBjb2RlXCI6XCJQZW9wbGVDb2RlXCIsXG5cdFwicGVybFwiOlwiUGVybFwiLFxuXHRcInBocFwiOlwiUEhQXCIsXG5cdFwicGhwZG9jXCI6XCJQSFBEb2NcIixcblx0XCJwaHAtZXh0cmFzXCI6XCJQSFAgRXh0cmFzXCIsXG5cdFwicGxhbnQtdW1sXCI6XCJQbGFudFVNTFwiLFxuXHRcInBsYW50dW1sXCI6XCJQbGFudFVNTFwiLFxuXHRcInBsc3FsXCI6XCJQTC9TUUxcIixcblx0XCJwb3dlcnF1ZXJ5XCI6XCJQb3dlclF1ZXJ5XCIsXG5cdFwicHFcIjpcIlBvd2VyUXVlcnlcIixcblx0XCJtc2NyaXB0XCI6XCJQb3dlclF1ZXJ5XCIsXG5cdFwicG93ZXJzaGVsbFwiOlwiUG93ZXJTaGVsbFwiLFxuXHRcInByb2Nlc3NpbmdcIjpcIlByb2Nlc3NpbmdcIixcblx0XCJwcm9sb2dcIjpcIlByb2xvZ1wiLFxuXHRcInByb21xbFwiOlwiUHJvbVFMXCIsXG5cdFwicHJvcGVydGllc1wiOlwiLnByb3BlcnRpZXNcIixcblx0XCJwcm90b2J1ZlwiOlwiUHJvdG9jb2wgQnVmZmVyc1wiLFxuXHRcInB1Z1wiOlwiUHVnXCIsXG5cdFwicHVwcGV0XCI6XCJQdXBwZXRcIixcblx0XCJwdXJlXCI6XCJQdXJlXCIsXG5cdFwicHVyZWJhc2ljXCI6XCJQdXJlQmFzaWNcIixcblx0XCJwYmZhc21cIjpcIlB1cmVCYXNpY1wiLFxuXHRcInB1cmVzY3JpcHRcIjpcIlB1cmVTY3JpcHRcIixcblx0XCJwdXJzXCI6XCJQdXJlU2NyaXB0XCIsXG5cdFwicHl0aG9uXCI6XCJQeXRob25cIixcblx0XCJweVwiOlwiUHl0aG9uXCIsXG5cdFwicXNoYXJwXCI6XCJRI1wiLFxuXHRcInFzXCI6XCJRI1wiLFxuXHRcInFcIjpcIlEgKGtkYisgZGF0YWJhc2UpXCIsXG5cdFwicW1sXCI6XCJRTUxcIixcblx0XCJxb3JlXCI6XCJRb3JlXCIsXG5cdFwiclwiOlwiUlwiLFxuXHRcInJhY2tldFwiOlwiUmFja2V0XCIsXG5cdFwicmt0XCI6XCJSYWNrZXRcIixcblx0XCJjc2h0bWxcIjpcIlJhem9yIEMjXCIsXG5cdFwianN4XCI6XCJSZWFjdCBKU1hcIixcblx0XCJ0c3hcIjpcIlJlYWN0IFRTWFwiLFxuXHRcInJlYXNvblwiOlwiUmVhc29uXCIsXG5cdFwicmVnZXhcIjpcIlJlZ2V4XCIsXG5cdFwicmVnb1wiOlwiUmVnb1wiLFxuXHRcInJlbnB5XCI6XCJSZW4ncHlcIixcblx0XCJycHlcIjpcIlJlbidweVwiLFxuXHRcInJlc2NyaXB0XCI6XCJSZVNjcmlwdFwiLFxuXHRcInJlc1wiOlwiUmVTY3JpcHRcIixcblx0XCJyZXN0XCI6XCJyZVNUIChyZVN0cnVjdHVyZWRUZXh0KVwiLFxuXHRcInJpcFwiOlwiUmlwXCIsXG5cdFwicm9ib2NvbmZcIjpcIlJvYm9jb25mXCIsXG5cdFwicm9ib3RmcmFtZXdvcmtcIjpcIlJvYm90IEZyYW1ld29ya1wiLFxuXHRcInJvYm90XCI6XCJSb2JvdCBGcmFtZXdvcmtcIixcblx0XCJydWJ5XCI6XCJSdWJ5XCIsXG5cdFwicmJcIjpcIlJ1YnlcIixcblx0XCJydXN0XCI6XCJSdXN0XCIsXG5cdFwic2FzXCI6XCJTQVNcIixcblx0XCJzYXNzXCI6XCJTYXNzIChTYXNzKVwiLFxuXHRcInNjc3NcIjpcIlNhc3MgKFNDU1MpXCIsXG5cdFwic2NhbGFcIjpcIlNjYWxhXCIsXG5cdFwic2NoZW1lXCI6XCJTY2hlbWVcIixcblx0XCJzaGVsbC1zZXNzaW9uXCI6XCJTaGVsbCBzZXNzaW9uXCIsXG5cdFwic2gtc2Vzc2lvblwiOlwiU2hlbGwgc2Vzc2lvblwiLFxuXHRcInNoZWxsc2Vzc2lvblwiOlwiU2hlbGwgc2Vzc2lvblwiLFxuXHRcInNtYWxpXCI6XCJTbWFsaVwiLFxuXHRcInNtYWxsdGFsa1wiOlwiU21hbGx0YWxrXCIsXG5cdFwic21hcnR5XCI6XCJTbWFydHlcIixcblx0XCJzbWxcIjpcIlNNTFwiLFxuXHRcInNtbG5qXCI6XCJTTUxcIixcblx0XCJzb2xpZGl0eVwiOlwiU29saWRpdHkgKEV0aGVyZXVtKVwiLFxuXHRcInNvbFwiOlwiU29saWRpdHkgKEV0aGVyZXVtKVwiLFxuXHRcInNvbHV0aW9uLWZpbGVcIjpcIlNvbHV0aW9uIGZpbGVcIixcblx0XCJzbG5cIjpcIlNvbHV0aW9uIGZpbGVcIixcblx0XCJzb3lcIjpcIlNveSAoQ2xvc3VyZSBUZW1wbGF0ZSlcIixcblx0XCJzcGFycWxcIjpcIlNQQVJRTFwiLFxuXHRcInJxXCI6XCJTUEFSUUxcIixcblx0XCJzcGx1bmstc3BsXCI6XCJTcGx1bmsgU1BMXCIsXG5cdFwic3FmXCI6XCJTUUZcIixcblx0XCJzcWxcIjpcIlNRTFwiLFxuXHRcInNxdWlycmVsXCI6XCJTcXVpcnJlbFwiLFxuXHRcInN0YW5cIjpcIlN0YW5cIixcblx0XCJzdGF0YVwiOlwiU3RhdGEgQWRvXCIsXG5cdFwiaWVjc3RcIjpcIlN0cnVjdHVyZWQgVGV4dCAoSUVDIDYxMTMxLTMpXCIsXG5cdFwic3R5bHVzXCI6XCJTdHlsdXNcIixcblx0XCJzdXBlcmNvbGxpZGVyXCI6XCJTdXBlckNvbGxpZGVyXCIsXG5cdFwic2NsYW5nXCI6XCJTdXBlckNvbGxpZGVyXCIsXG5cdFwic3dpZnRcIjpcIlN3aWZ0XCIsXG5cdFwic3lzdGVtZFwiOlwiU3lzdGVtZCBjb25maWd1cmF0aW9uIGZpbGVcIixcblx0XCJ0NC10ZW1wbGF0aW5nXCI6XCJUNCB0ZW1wbGF0aW5nXCIsXG5cdFwidDQtY3NcIjpcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcblx0XCJ0NFwiOlwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuXHRcInQ0LXZiXCI6XCJUNCBUZXh0IFRlbXBsYXRlcyAoVkIpXCIsXG5cdFwidGFwXCI6XCJUQVBcIixcblx0XCJ0Y2xcIjpcIlRjbFwiLFxuXHRcInR0MlwiOlwiVGVtcGxhdGUgVG9vbGtpdCAyXCIsXG5cdFwidGV4dGlsZVwiOlwiVGV4dGlsZVwiLFxuXHRcInRvbWxcIjpcIlRPTUxcIixcblx0XCJ0cmVtb3JcIjpcIlRyZW1vclwiLFxuXHRcInRyaWNrbGVcIjpcIlRyZW1vclwiLFxuXHRcInRyb3lcIjpcIlRyZW1vclwiLFxuXHRcInR1cnRsZVwiOlwiVHVydGxlXCIsXG5cdFwidHJpZ1wiOlwiVHVydGxlXCIsXG5cdFwidHdpZ1wiOlwiVHdpZ1wiLFxuXHRcInR5cGVzY3JpcHRcIjpcIlR5cGVTY3JpcHRcIixcblx0XCJ0c1wiOlwiVHlwZVNjcmlwdFwiLFxuXHRcInR5cG9zY3JpcHRcIjpcIlR5cG9TY3JpcHRcIixcblx0XCJ0c2NvbmZpZ1wiOlwiVFNDb25maWdcIixcblx0XCJ1bnJlYWxzY3JpcHRcIjpcIlVucmVhbFNjcmlwdFwiLFxuXHRcInVzY3JpcHRcIjpcIlVucmVhbFNjcmlwdFwiLFxuXHRcInVjXCI6XCJVbnJlYWxTY3JpcHRcIixcblx0XCJ1b3Jhem9yXCI6XCJVTyBSYXpvciBTY3JpcHRcIixcblx0XCJ1cmlcIjpcIlVSSVwiLFxuXHRcInVybFwiOlwiVVJJXCIsXG5cdFwidlwiOlwiVlwiLFxuXHRcInZhbGFcIjpcIlZhbGFcIixcblx0XCJ2Ym5ldFwiOlwiVkIuTmV0XCIsXG5cdFwidmVsb2NpdHlcIjpcIlZlbG9jaXR5XCIsXG5cdFwidmVyaWxvZ1wiOlwiVmVyaWxvZ1wiLFxuXHRcInZoZGxcIjpcIlZIRExcIixcblx0XCJ2aW1cIjpcInZpbVwiLFxuXHRcInZpc3VhbC1iYXNpY1wiOlwiVmlzdWFsIEJhc2ljXCIsXG5cdFwidmJcIjpcIlZpc3VhbCBCYXNpY1wiLFxuXHRcIndhcnBzY3JpcHRcIjpcIldhcnBTY3JpcHRcIixcblx0XCJ3YXNtXCI6XCJXZWJBc3NlbWJseVwiLFxuXHRcIndlYi1pZGxcIjpcIldlYiBJRExcIixcblx0XCJ3ZWJpZGxcIjpcIldlYiBJRExcIixcblx0XCJ3Z3NsXCI6XCJXR1NMXCIsXG5cdFwid2lraVwiOlwiV2lraSBtYXJrdXBcIixcblx0XCJ3b2xmcmFtXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG5cdFwibWF0aGVtYXRpY2FcIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcblx0XCJuYlwiOlwiV29sZnJhbSBsYW5ndWFnZVwiLFxuXHRcIndsXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG5cdFwid3JlblwiOlwiV3JlblwiLFxuXHRcInhlb3JhXCI6XCJYZW9yYVwiLFxuXHRcInhlb3JhY3ViZVwiOlwiWGVvcmFcIixcblx0XCJ4bWwtZG9jXCI6XCJYTUwgZG9jICgubmV0KVwiLFxuXHRcInhvam9cIjpcIlhvam8gKFJFQUxiYXNpYylcIixcblx0XCJ4cXVlcnlcIjpcIlhRdWVyeVwiLFxuXHRcInlhbWxcIjpcIllBTUxcIixcblx0XCJ5bWxcIjpcIllBTUxcIixcblx0XCJ5YW5nXCI6XCJZQU5HXCIsXG5cdFwiemlnXCI6XCJaaWdcIlxufVxuY29uc3QgTUFOVUFMX0xBTkdVQUdFUzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7IC8vIE1hbnVhbGx5IGNyZWF0ZWQgbGlzdFxuXHRcImZpc2hcIjpcIkZpc2hcIixcblx0XCJvY3RhdmVcIjpcIk9jdGF2ZVwiLFxuXHRcIm1heGltYVwiOlwiTWF4aW1hXCIsXG5cdFwibXlzcWxcIjpcIlNRTFwiLFxuXHRcInBvc3RncmVzcWxcIjpcIlNRTFwiLFxuXHRcInJzY3JpcHRcIjpcIlJcIixcblx0XCJzaGVsbHNjcmlwdFwiOlwiU2hlbGxcIixcblx0XCJzcWxpdGVcIjpcIlNRTFwiLFxuXHRcInpzaFwiOlwiWnNoXCIsXG59XG5leHBvcnQgY29uc3QgTEFOR1VBR0VfTkFNRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0gey4uLlBSSVNNX0xBTkdVQUdFUywuLi5NQU5VQUxfUFJJU01fTEFOR1VBR0VTLC4uLk1BTlVBTF9MQU5HVUFHRVN9O1xuZXhwb3J0IGNvbnN0IExBTkdVQUdFX0lDT05TX0RBVEE6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0geyAvLyBJY29ucyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92c2NvZGUtaWNvbnMvdnNjb2RlLWljb25zL3dpa2kvTGlzdE9mRmlsZXMgYW5kIGh0dHBzOi8vZGV2aWNvbi5kZXYvXG5cdFwiLmdpdGlnbm9yZVwiOiBgPHBhdGggZD1cIk0yOS40NzIsMTQuNzUzLDE3LjI0NywyLjUyOGExLjgsMS44LDAsMCwwLTIuNTUsMEwxMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0LDIuNTI4LDE0LjdhMS44LDEuOCwwLDAsMCwwLDIuNTUxTDE0Ljc1MywyOS40NzJhMS44LDEuOCwwLDAsMCwyLjU1LDBMMjkuNDcyLDE3LjNhMS44LDEuOCwwLDAsMCwwLTIuNTUxXCIgc3R5bGU9XCJmaWxsOiNkZDRjMzVcIi8+PHBhdGggZD1cIk0xMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCIuaGdpZ25vcmVcIjogYDxwYXRoIGQ9XCJNMjguMDQyLDIzLjE3MmM0Ljk4OS04LjMtMS4wNTQtMjEuNzUxLTEyLjEtMjAuMzg0QzUuOTU1LDQuMDIyLDUuNzk0LDE0LjUzLDE0LjU5MywxNy4wMjZjNy42MTQsMi4xNjIsMS41NzMsNi45OTIsMS43NDksMTAuMjA4czYuNjIsNC4zODIsMTEuNy00LjA2M1wiIHN0eWxlPVwiZmlsbDojMWIxYjFiXCIvPjxjaXJjbGUgY3g9XCI5Ljc4NFwiIGN5PVwiMjQuMjU3XCIgcj1cIjQuMzMyXCIgc3R5bGU9XCJmaWxsOiMxYjFiMWJcIi8+PGNpcmNsZSBjeD1cIjQuODM1XCIgY3k9XCIxNS4wOTlcIiByPVwiMi44MzVcIiBzdHlsZT1cImZpbGw6IzFiMWIxYlwiLz48cGF0aCBkPVwiTTI4LjIzMSwyMi44MzVjNC45ODktOC4zLTEuMDU0LTIxLjc1MS0xMi4xLTIwLjM4NEM2LjE0NCwzLjY4Niw1Ljk4MywxNC4xOTQsMTQuNzgxLDE2LjY5YzcuNjE0LDIuMTYyLDEuNTczLDYuOTkyLDEuNzQ5LDEwLjIwOHM2LjYyLDQuMzgyLDExLjctNC4wNjNcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48Y2lyY2xlIGN4PVwiOS45NzJcIiBjeT1cIjIzLjkyMVwiIHI9XCI0LjMzMlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxjaXJjbGUgY3g9XCI1LjAyM1wiIGN5PVwiMTQuNzYyXCIgcj1cIjIuODM1XCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+PHBhdGggZD1cIk0xNy44MTEsMjguMTY4YS42NjkuNjY5LDAsMCwxLC42MzUtLjk5NCw3LDcsMCwwLDAsMy43LS43NDZjMy4yNDctMS44NDEsOC4yNDQtMTAuNyw1LjczMS0xNi4yODVBMTIuNzcsMTIuNzcsMCwwLDAsMjUuMDQ5LDUuN2MtLjIzNi0uMjQ5LS4xLS4yMzYuMDU5LS4xNTJhMTAuMDgsMTAuMDgsMCwwLDEsMi44NTcsMy42NzYsMTQuNTc4LDE0LjU3OCwwLDAsMSwxLjEsMTAuMjc5Yy0uNDk0LDEuODE3LTIuMiw1LjkyOC00LjY5MSw3LjcwNnMtNS40MjQsMi44LTYuNTYzLjk1NU0xNS41NDgsMTYuNjczYy0xLjctLjUtMy44OTQtMS4yMDgtNS4xNjMtMi44NjdBOC4wODgsOC4wODgsMCwwLDEsOC44NTQsMTAuNDljLS4wNDMtLjI3LS4wOC0uNSwwLS41NThhMjEuODgyLDIxLjg4MiwwLDAsMCwxLjY4OCwyLjcyMyw2LjQ4Nyw2LjQ4NywwLDAsMCwzLjUyNiwyLjI1NiwxMi4zODMsMTIuMzgzLDAsMCwxLDMuODY3LDEuMzdjLjczOS42MjkuOCwxLjk4OS41NTIsMi4xNDJzLS43NTktMS4xLTIuOTM4LTEuNzQ5bS04LjE1NSwxMC40YzMuMzY5LDMuMTIxLDguNDM5LTEuMTY2LDYuMjA3LTQuOTU0LS4yNTEtLjQyNS0uNTc2LS43NDktLjQ2OS0uNDIzLjcxNCwyLjE3OC4wNTQsMy45LTEuMTc2LDQuNzg4YTQuMDYzLDQuMDYzLDAsMCwxLTQuMTkyLjMyOGMtLjM5LS4yLS41NTEuMDkyLS4zNy4yNjFtLTMuOTMtMTAuMTZjLjAxOC4yLjI5Mi40NTguNzIyLjU3NmEyLjk2OSwyLjk2OSwwLDAsMCwyLjU1LS40MTMsMi43NTksMi43NTksMCwwLDAsLjgxLTMuNDUyYy0uMTcyLS4zMDgtLjQtLjUzMy0uMjE4LS4wNDFBMi42OCwyLjY4LDAsMCwxLDYuMTQ4LDE2LjUzYTIuNDM5LDIuNDM5LDAsMCwxLTIuMS4xNjRjLS4zOTEtLjExOS0uNi4wMTYtLjU4LjIyM1wiLz48cGF0aCBkPVwiTTE5LjA1NiwyOC40MDdjLS4wMzMuMzg5LjQxNC40NjYsMS4wMTYuMzc2YTYuNzU1LDYuNzU1LDAsMCwwLDIuMzEzLS42NDgsOS41NCw5LjU0LDAsMCwwLDMuMzE0LTIuNjNjMi42NjItMy40NzMsMy42LTcuNTgyLDMuNDYtOC4xNzNBMTYuMTcyLDE2LjE3MiwwLDAsMSwyNywyMi42OTJjLTEuODg4LDIuOTY4LTMuMjU2LDQuNTQ4LTYuNDEzLDUuMzE0LS44NzkuMjEzLTEuNDg1LS4xMTItMS41MjkuNG0tNy0xMy41QTcuOTY3LDcuOTY3LDAsMCwwLDE0LjYsMTYuMDg5YTEyLjIsMTIuMiwwLDAsMSwyLjk2LDEuMzFjLjM3OC4yNTMuNjE4LjgxOS42NDIuMzE3cy0uMjg1LS45MzQtLjk3Ni0xLjE2NGExNS4yNzQsMTUuMjc0LDAsMCwwLTIuMDA5LS42NzRjLS40ODUtLjEtMS4yNzMtLjI4NS0xLjk0OS0uNDkzLS4zNzEtLjExNC0uNzQ4LS4zMTMtMS4yMTQtLjQ4M00xMC4wMzcsMjcuNzE4Yy40MjktLjA5LDIuOTI0LS43MzYsMy41MS0yLjc4OC4xODMtLjY0LjIxNS0uNTExLjE2NC0uMTY1YTMuOCwzLjgsMCwwLDEtMy4zNTgsMy4xMjNjLS4yODkuMDMtLjY2OC0uMS0uMzE1LS4xN001LjA0NiwxNy4yYTcuOTkxLDcuOTkxLDAsMCwwLDEuMTk1LS4zMzYsMi4zODMsMi4zODMsMCwwLDAsMS4yMzItMS43NDFjLjA2NC0uNTA1LjA4My0uMzc4LjEwOS0uMWEyLjYyNywyLjYyNywwLDAsMS0yLjE0NywyLjMyNGMtLjIuMDI4LS41Ni4wMTEtLjM4OS0uMTQzXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yNy41NCwxNy40NDZjMi4xMjQtNi4xMjMtMi4zMjEtMTUuMzctMTEuMzE1LTE0LjI1OC04LjEyNiwxLTguMjU3LDkuNTU3LTEuMSwxMS41OSw4LjExMiwxLjIyOCwzLjIyNyw3LjM0NywyLjUzNSwxMC40MzMtLjYyMSwyLjc2Niw2LjU1NSwzLjIyMSw5Ljg3Ni03Ljc2NU03LjIxOSwyNi4yYTIuMDI4LDIuMDI4LDAsMCwxLDEuMzMyLjQ0MiwzLjUyNSwzLjUyNSwwLDAsMCwzLjc1NS0uOTgzQTQuMTU0LDQuMTU0LDAsMCwwLDEyLjg2OSwyMmMtLjgwNi0yLjMxOS00LjIyOS0yLjI3OC01Ljc1OC0uMzUzLTEuNjU0LDIuMTUtLjQsNC41MzkuMTA4LDQuNTQ4TTIuNjc2LDE1LjQ1MWExLjE2NiwxLjE2NiwwLDAsMCwuOTA4Ljg2M2MuNzMxLjEuODguNDM0LDEuNzQzLjI2M0EyLjQ2NCwyLjQ2NCwwLDAsMCw3LjEsMTQuOTE2YTEuNzcxLDEuNzcxLDAsMCwwLS44MjQtMi4xNCwyLjY4OSwyLjY4OSwwLDAsMC0zLjA0Ny4zNjMsMi4yNjMsMi4yNjMsMCwwLDAtLjU1OCwyLjMxMlwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNMjEuOTgxLDIyLjIyOGMtMi4yLS4yNzItNS4zNiw0LjY5LTIuMzc4LDQuMTA5aDBhNS42NDUsNS42NDUsMCwwLDAsMy42ODMtMS45MzIsMjMuMTM2LDIzLjEzNiwwLDAsMCw0LjA1NS03LjJjLjUtMS44NjEuMjUxLTQuNzQ1LS4yNjktMi4wMzYtLjUzMywyLjc4MS0yLjg5Myw3LjMzNi01LjA5MSw3LjA2NE0xMC41MjMsMjYuMzYyQTIuNzc4LDIuNzc4LDAsMCwwLDEyLjUsMjIuOTljLS4xNjUtMS4yNzYtLjg2MSwxLjU4NC0yLjE1LDIuMDEyLTEuOTUzLjY0OC0xLjczMywxLjg2MS4xNzYsMS4zNjFtLTQuOTc4LTEwLjJjLjY2My0uMTczLDEuNTQtMS4wNzcsMS4xLTEuNzY3LS41MzctLjg1LTIuMDMzLS4xMjItMi4wODQuODI0cy4yNzcsMS4xMjcuOTc5Ljk0M1wiIHN0eWxlPVwiZmlsbDojZjNmM2YzXCIvPmAsXG5cdFwiLm5wbWlnbm9yZVwiOiBgPHBhdGggZD1cIk0yLDEwLjU1NUgzMHY5LjMzNUgxNnYxLjU1Nkg5Ljc3OFYxOS44ODlIMlptMS41NTYsNy43NzlINi42NjdWMTMuNjY2SDguMjIydjQuNjY3SDkuNzc4VjEyLjExMUgzLjU1NlptNy43NzgtNi4yMjN2Ny43NzloMy4xMTFWMTguMzM0aDMuMTExVjEyLjExMVptMy4xMTEsMS41NTZIMTZ2My4xMTJIMTQuNDQ0Wm00LjY2Ny0xLjU1NnY2LjIyM2gzLjExMVYxMy42NjZoMS41NTZ2NC42NjdoMS41NTZWMTMuNjY2aDEuNTU2djQuNjY3aDEuNTU2VjEyLjExMVpcIiBzdHlsZT1cImZpbGw6I2NiMzgzN1wiLz5gLFxuXHRcIi5wcm9wZXJ0aWVzXCI6IGA8cGF0aCBkPVwiTTIzLjI2NSwyNC4zODFsLjktLjg5NGM0LjE2NC4xMzYsNC4yMjgtLjAxLDQuNDExLS40MzhsMS4xNDQtMi43ODVMMjkuODA1LDIwbC0uMDkzLS4yMzFjLS4wNDktLjEyMi0uMi0uNDg2LTIuOC0yLjk2NVYxNS41YzMtMi44OSwyLjkzNi0zLjAzOCwyLjc2NS0zLjQ2MUwyOC41MzgsOS4yMjVjLS4xNzEtLjQyMi0uMjM2LS41ODctNC4zNy0uNDc0bC0uOS0uOTNhMjAuMTY2LDIwLjE2NiwwLDAsMC0uMTQxLTQuMTA2bC0uMTE2LS4yNjMtMi45NzQtMS4zYy0uNDM4LS4yLS41OTItLjI3Mi0zLjQsMi43ODZsLTEuMjYyLS4wMTljLTIuODkxLTMuMDg2LTMuMDI4LTMuMDMtMy40NjEtMi44NTVMOS4xNDksMy4xODJjLS40MzMuMTc1LS41ODYuMjM3LS40MTgsNC40MzdsLS44OTMuODljLTQuMTYyLS4xMzYtNC4yMjYuMDEyLTQuNDA3LjQzOEwyLjI4NSwxMS43MzMsMi4xOTUsMTJsLjA5NC4yMzJjLjA0OS4xMi4xOTQuNDgsMi44LDIuOTYybDAsMS4zYy0zLDIuODktMi45MzUsMy4wMzgtMi43NjMsMy40NjJsMS4xMzgsMi44MTdjLjE3NC40MzEuMjM2LjU4NCw0LjM2OS40NzZsLjkuOTM1YTIwLjI0MywyMC4yNDMsMCwwLDAsLjEzNyw0LjFsLjExNi4yNjUsMi45OTMsMS4zMDhjLjQzNS4xODIuNTg2LjI0NywzLjM4Ni0yLjhsMS4yNjIuMDE2YzIuODk1LDMuMDksMy4wNDMsMy4wMywzLjQ2NiwyLjg1OWwyLjc1OS0xLjExNUMyMy4yODgsMjguNjQ0LDIzLjQ0LDI4LjU4MywyMy4yNjUsMjQuMzgxWk0xMS40MDcsMTcuODU3YTQuOTU3LDQuOTU3LDAsMSwxLDYuNDg4LDIuODI0QTUuMDE0LDUuMDE0LDAsMCwxLDExLjQwNywxNy44NTdaXCIgc3R5bGU9XCJmaWxsOiM5OWI4YzRcIi8+YCxcblx0XCI2NTAyIEFzc2VtYmx5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCI4MzYuNjNcIiB5MT1cIjM2LjIwNVwiIHgyPVwiODQzLjgwMlwiIHkyPVwiMTQuNDhcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSg1MjUuOTIyIDMwLjI0OSkgcm90YXRlKDE4MCkgc2NhbGUoMC42MDcgMC42MDcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwLjI3NVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2Fzc2VtYmx5PC90aXRsZT48cGF0aCBkPVwiTTE2LDJjLTEuMjQ2LDMuMDU2LTIsNS4wNTctMy4zOTEsOC4wMjJBMjEuODg0LDIxLjg4NCwwLDAsMCwxNi4yLDEzLjE1NmExNC44NTgsMTQuODU4LDAsMCwxLTQtMi4yODNDMTAuNDMsMTQuNTc5LDcuNjQ2LDE5Ljg1NSwyLDMwYzUuMTg2LTIuOTk0LDkuMDEyLTQuNjQ4LDEyLjY5MS00Ljk2NlYyNC4yaC0uODM0di0uODM3aC44MzRWMjQuMmgxLjY3NVYyMi41MjFIMTQuNjkxdi0uODM0aC0uODM0VjIwLjAxM2guODM0di0uODM0aDEuNjc1di44MzRIMTcuMnYuODM3aC0uODM3di0uODM3SDE0LjY5MXYxLjY3NWgxLjY3NXYuODM0SDE3LjJWMjQuMmgtLjgzN3YuNzgzYzMuOTguMSw4LjAwNiwxLjc3MiwxMy42MzQsNS4wMjEtLjg2My0xLjU4OS0xLjYzNi0zLjAyMS0yLjM3Mi00LjM4NWEyNS41MjYsMjUuNTI2LDAsMCwwLTQuODMzLTMuMzMzQTE0LjQzNiwxNC40MzYsMCwwLDEsMjYuNjUsMjMuOEMxOS4xNyw5Ljg3MiwxOC41NjUsOC4wMiwxNiwyWk0xMC41MTEsMTkuMTc5aDEuNjcxdi44MzRoLjgzN3Y1LjAyMWgtLjgzN1YyMi41MjFIMTAuNTExdjIuNTEySDkuNjczVjIwLjAxM2guODM3Wm0wLC44MzR2MS42NzVoMS42NzFWMjAuMDEzWm03LjUyNi0uODM0aC44Mzd2LjgzNGguODM3di44MzdoLjgzNHYtLjgzN2guODM3di0uODM0aC44Mzd2NS44NTVoLS44MzdWMjAuODVoLS44Mzd2LjgzN2gtLjgzNFYyMC44NWgtLjgzN3Y0LjE4NGgtLjgzN1pcIiBzdHlsZT1cImZpbGw6IzAwMDBiZlwiLz48cGF0aCBkPVwiTTIzLjg4MSwxOC42NDJjLTYuMDY5LTguMjM3LTcuNDc2LTE0Ljg3Ni03LjgzMi0xNi40NjFBMTc1LjIxNywxNzUuMjE3LDAsMCwwLDIzLjg4MSwxOC42NDJaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjAuMTY1NjgwNDY4MDgyNDI4XCIvPjxwYXRoIGQ9XCJNMTYuMDUxLDIuMTIsMTUuNiwzLjIyN2MtLjE1OS4zOTEtLjMxMS43NjUtLjQ2MSwxLjEzMXMtLjMuNzI0LS40NDgsMS4wNzctLjMuNy0uNDQ4LDEuMDUzLS4zLjcwNi0uNDY1LDEuMDY2LS4zMjkuNzI5LS41MDYsMS4xMTEtLjM2Mi43NzgtLjU2MSwxLjE5M2MtLjAyOC4wNTctLjA2MS4xMjMtLjA4OS4xODFBMjEuODcyLDIxLjg3MiwwLDAsMCwxNi4yLDEzLjE1NmExNC44NzksMTQuODc5LDAsMCwxLTMuOTg5LTIuMjc2bC0uMTQuMjg3Yy0uMDY1LjEzMy0uMTQ0LjI4My0uMjEyLjQybC0uMTA2LjIxOWMtLjg3OCwxLjc5My0yLjAwNiwzLjk4NC0zLjUyNCw2LjgyMiwzLjU1MS0yLDcuMzgxLTQuODg3LDE0LjMzOC0yLjQtLjM0OS0uNjYxLS42Ny0xLjI4LS45NzEtMS44NjNzLS41ODEtMS4xMjgtLjg0MS0xLjY0NC0uNS0xLS43MjUtMS40NjMtLjQzMy0uOS0uNjI5LTEuMzEzLS4zOC0uODE4LS41NTQtMS4yLS4zMzktLjc1NC0uNS0xLjExOFMxOC4wNDcsNi45LDE3LjksNi41NDZzLS4yOTEtLjcwOS0uNDM0LTEuMDY2Yy0uMDM2LS4wOTEtLjA3My0uMTg2LS4xMDktLjI3N0MxNi45NDksNC4yNDcsMTYuNTM2LDMuMjU4LDE2LjA1MSwyLjEyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiQWN0aW9uU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTIsMTUuMjgxYzEuOTE4LDAsMi4xMS0xLjA1NSwyLjExLTEuOTE4YTE3LjExOSwxNy4xMTksMCwwLDAtLjE5Mi0yLjIwNSwxOC43MjMsMTguNzIzLDAsMCwxLS4xOTItMi4yMDVjMC0yLjQsMS42My0zLjQ1MiwzLjgzNi0zLjQ1MmguNTc1VjYuOTM4SDcuNjU4Yy0xLjUzNCwwLTIuMTEuNzY3LTIuMTEsMi4yMDVhMTQuNDEyLDE0LjQxMiwwLDAsMCwuMTkyLDEuOTE4LDE0LjMwNiwxNC4zMDYsMCwwLDEsLjE5MiwyLjAxNGMwLDEuNzI2LS42NzEsMi40OTMtMS45MTgsMi44Nzd2LjFjMS4xNTEuMjg4LDEuOTE4LDEuMTUxLDEuOTE4LDIuODc3YTE0LjMwNiwxNC4zMDYsMCwwLDEtLjE5MiwyLjAxNCwxMywxMywwLDAsMC0uMTkyLDEuOTE4YzAsMS40MzguNTc1LDIuMywyLjExLDIuM2guNDc5VjI2LjZINy41NjJjLTIuMjA1LDAtMy44MzYtLjk1OS0zLjgzNi0zLjY0NGExOC43MjMsMTguNzIzLDAsMCwxLC4xOTItMi4yMDUsMTUuNjgsMTUuNjgsMCwwLDAsLjE5Mi0yLjExYzAtLjg2My0uMjg4LTEuOTE4LTIuMTEtMS45MThaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+PHBhdGggZD1cIk05LjQ3OSwxOC4wNjIsOC4yMzMsMjEuOEg2LjZMMTAuNjMsOS45MTFoMS44MjJMMTYuNDc5LDIxLjhIMTQuOTQ1TDEzLjcsMTguMDYyWm0zLjkzMi0xLjE1MUwxMi4yNiwxMy40NTlhOS4zNjQsOS4zNjQsMCwwLDEtLjU3NS0yLjIwNWgwYy0uMTkyLjY3MS0uMzg0LDEuNDM4LS41NzUsMi4xMUw5Ljk1OSwxNi44MTVoMy40NTJaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+PHBhdGggZD1cIk0xNy45MTgsMTkuOTc5YTUuOTQxLDUuOTQxLDAsMCwwLDIuNzgxLjc2N2MxLjUzNCwwLDIuNDkzLS44NjMsMi40OTMtMi4wMTRzLS42NzEtMS43MjYtMi4yMDUtMi40Yy0xLjkxOC0uNjcxLTMuMTY0LTEuNzI2LTMuMTY0LTMuMzU2LDAtMS44MjIsMS41MzQtMy4yNiwzLjgzNi0zLjI2YTUuMTM1LDUuMTM1LDAsMCwxLDIuNTg5LjU3NWwtLjM4NCwxLjI0N2E1LjUxOSw1LjUxOSwwLDAsMC0yLjMtLjQ3OWMtMS42MywwLTIuMjA1Ljk1OS0yLjIwNSwxLjgyMiwwLDEuMTUxLjc2NywxLjYzLDIuNCwyLjMsMi4wMTQuNzY3LDMuMDY4LDEuNzI2LDMuMDY4LDMuNDUyLDAsMS44MjItMS4zNDIsMy40NTItNC4xMjMsMy40NTJhNS44MDcsNS44MDcsMCwwLDEtMy4wNjgtLjc2N1pcIiBzdHlsZT1cImZpbGw6I2M0MTcxOFwiLz48cGF0aCBkPVwiTTMwLDE2LjYyM2MtMS45MTgsMC0yLjExLDEuMTUxLTIuMTEsMS45MThhMTUuNjgsMTUuNjgsMCwwLDAsLjE5MiwyLjExLDE1LjczOCwxNS43MzgsMCwwLDEsLjE5MiwyLjIwNWMwLDIuNjg1LTEuNjMsMy42NDQtMy44MzYsMy42NDRoLS41NzVWMjUuMDYyaC40NzljMS40MzgsMCwyLjExLS44NjMsMi4xMS0yLjNhMTMsMTMsMCwwLDAtLjE5Mi0xLjkxOCwxNC4zMDYsMTQuMzA2LDAsMCwxLS4xOTItMi4wMTRjMC0xLjcyNi43NjctMi41ODksMS45MTgtMi44Nzd2LS4xYy0xLjE1MS0uMjg4LTEuOTE4LTEuMTUxLTEuOTE4LTIuODc3YTE0LjMwNiwxNC4zMDYsMCwwLDEsLjE5Mi0yLjAxNCwxMywxMywwLDAsMCwuMTkyLTEuOTE4YzAtMS40MzgtLjU3NS0yLjIwNS0yLjExLTIuM2gtLjQ3OVY1LjRoLjU3NWMyLjIwNSwwLDMuODM2LDEuMDU1LDMuODM2LDMuNDUyYTE3LjExOSwxNy4xMTksMCwwLDEtLjE5MiwyLjIwNSwxNy4xMTksMTcuMTE5LDAsMCwwLS4xOTIsMi4yMDVjMCwuOTU5LjI4OCwxLjkxOCwyLjExLDEuOTE4WlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPmAsXG5cdFwiQWRhXCI6IGA8cGF0aCBkPVwiTTI0LjU1NCwyMC4wNzVjLjIwOS4yNywxLjM1Ni45NjEsMS4zNywxLjI0NmE2LjkyMSw2LjkyMSwwLDAsMC0xLjQtLjMyNGMtLjQ2OC0uMTQyLS45NTEtLjI5My0xLjQxMi0uNDhhOS4yLDkuMiwwLDAsMS0yLjM3NS0xLjNBMy4xNDYsMy4xNDYsMCwwLDEsMTkuMywxNi43NWExLjcyMiwxLjcyMiwwLDAsMSwxLjc2Ny0xLjgyMiwzLjU4NCwzLjU4NCwwLDAsMSwxLjU5My4zMjFjLjE0Ni4wNjYsMS4zMS42MDYsMS4yNTYuODA5YTUuNSw1LjUsMCwwLDAtMS40MS0uMTEyYy0uNjQ5LjI0NC0uNC44MjgtLjE2OCwxLjMxMWE3Ljg3Nyw3Ljg3NywwLDAsMCwxLjA3OCwxLjU1NEMyMy41OCwxOS4wMDUsMjQuMywyMC4wODIsMjQuNTU0LDIwLjA3NVpcIiBzdHlsZT1cImZpbGw6IzBmMjNjM1wiLz48cGF0aCBkPVwiTTI0LjE0MSwxNi4yNzZjLjEyOC0uNTkuODE5LTEuMzg0LDEuMzQ0LS43NzNhNC4yLDQuMiwwLDAsMSwuNTc4LDEuOTE4Yy4xMi42NTYuMiwxLjMyNy4yNjEsMS45ODIuMDM4LjM3OS4zNCwxLjc5NC4xMjMsMi4wNzVhMjMuMjQsMjMuMjQsMCwwLDEtMi45MjItMi44MzgsMy43NjMsMy43NjMsMCwwLDEtLjkyNS0xLjdDMjIuNSwxNS44NjcsMjMuNDc5LDE2LjIxLDI0LjE0MSwxNi4yNzZaXCIgc3R5bGU9XCJmaWxsOiMxYTE5NzhcIi8+PHBhdGggZD1cIk0yNi4zLDE3Ljc4MWMuMTQxLS43MzItLjQwNi0yLjU5Mi0xLjA2Ny0yLjk0OWEuMDYuMDYsMCwwLDAsLjA0NC0uMDA3Yy0uMTU2LS40NDQtMS4zNTksMS4xMTYtMS4yMjgsMS4xNzQtLjMxNi0uMTM4Ljc3NC0xLjk4NC45ODgtMi4xNi43LS41NzgsMS4zNzItLjA4NiwxLjg0NS41NDNhNi4wMzYsNi4wMzYsMCwwLDEsLjczMyw0LjQzNCw0LjUsNC41LDAsMCwxLS40MjEsMS4zMTJjLS4xLjIyLS40NSwxLjEtLjY4MiwxLjE3NEExNC43NTQsMTQuNzU0LDAsMCwwLDI2LjMsMTcuNzgxWlwiIHN0eWxlPVwiZmlsbDojMGYyM2MzXCIvPjxwYXRoIGQ9XCJNMy42ODcsOC40Yy4xNzktLjE4OC0uMDQxLTEuNTI3LjMyNC0xLjU0OC4yNjItLjAxNS41NTMsMS43NDEuNjI3LDEuOTY4YTkuMiw5LjIsMCwwLDAsMS4xMjcsMi4zMjksNy41MjksNy41MjksMCwwLDAsNC4wMTYsMi45NzgsNC41NSw0LjU1LDAsMCwwLDIuMzY2LjJjLjkzMS0uMjA4LDEuODItLjU3NywyLjc1Ny0uNzY1LDEuMzUtLjI3LDMuMzQyLS4zNTIsNC40MzguNjQ3LjcuNjQxLjM3Ni43Ni4wNDMsMS40MjFhMi40NDUsMi40NDUsMCwwLDAsLjE3OCwyLjU2MmMuMjM1LjM0MiwxLjAzMy44MjcuNjc1LDEuMDk0LS41NjcuNDI0LTEuMjc3LS40NTItMS42MzYtLjc3Ni0xLjQtMS4yNjQtMi43MTEtMS4zMTMtNC40OTItMS4wNzRhOC45ODcsOC45ODcsMCwwLDEtNC44ODMtLjcwOEE5LjQ2OSw5LjQ2OSwwLDAsMSwzLjY4Nyw4LjRaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS45NDEsMzBhMy42MTUsMy42MTUsMCwwLDEtMi4zMjUtLjgxN2MuNDY5LS4wOTIsMS4wMjEuMDI1LDEuNTA4LS4wNDRhOS43LDkuNywwLDAsMCwxLjc1NC0uNDNBMTAuNTM3LDEwLjUzNywwLDAsMCwyMy45LDI3LjE1NWE2LjU1LDYuNTUsMCwwLDAsMi43NTctNS4yMTRjLjE0OS0uMDg4LjMxNiwxLjAzNC4zMTksMS4wOTFhNS43ODksNS43ODksMCwwLDEtLjE5LDEuNzI3LDYuODY3LDYuODY3LDAsMCwxLTEuNDIzLDIuNzc0QTcuMjg2LDcuMjg2LDAsMCwxLDE5Ljk0MSwzMFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE4Ljk2MiwxOS4xMDlhNS43Niw1Ljc2LDAsMCwxLTIuMDUuODU5LDEzLjM4LDEzLjM4LDAsMCwxLTIuMjI0LjU0OSw4Ljg2MSw4Ljg2MSwwLDAsMS00LjQzNS0uNTEsOS45MzksOS45MzksMCwwLDEtMy44NDktMi40QzYuMDUyLDE3LjI0LDQuMywxNS4xOSw0Ljg1NiwxNC41NTdjLjI0OC0uMjgyLjg3NS44NDYsMSwuOTkyYTUsNSwwLDAsMCwxLjM1NywxLjExLDEwLjkxNywxMC45MTcsMCwwLDAsNC4wMzUsMS40NTYsNi42OTMsNi42OTMsMCwwLDAsMi4zNC0uMDk0LDEyLjc0MywxMi43NDMsMCwwLDEsMS42OTQtLjQ4NSw0LDQsMCwwLDEsMi4xMTMuNDU3QzE3LjczOSwxOC4xNjMsMTguOTE4LDE4LjczNiwxOC45NjIsMTkuMTA5WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjguMzEzLDE1LjA3OGExOS4yNzcsMTkuMjc3LDAsMCwxLS40NTMsMy43NzRjLS4xNzYtLjI0Mi4wMTYtMS40NywwLTEuNzkyYTYuMDMyLDYuMDMyLDAsMCwwLS4zODQtMi4wODdBNC45MjUsNC45MjUsMCwwLDAsMjYuMSwxMy4zMTJhMTQuNzI4LDE0LjcyOCwwLDAsMS0xLjI3LTEuNTM2Yy0xLjgzNy0yLjM4Mi0zLjI0NS01LjIxMS0yLjktOC4zLjAzNC0uMzA4LjA2OS0xLjQ0OC40MTEtMS40NDUuMTUyLDAsLjI2NiwxLjU2MS4yOSwxLjcxOGExMi41MjcsMTIuNTI3LDAsMCwwLDEuMjI0LDQuMTE2Yy42NywxLjIyMiwxLjk0NywyLjAyMywyLjgyNSwzLjFBNi41NzksNi41NzksMCwwLDEsMjguMzEzLDE1LjA3OFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE1LjcsMjYuOTM1YTEwLjg0NSwxMC44NDUsMCwwLDAsNi40MzYtLjY4Nyw2Ljk0MSw2Ljk0MSwwLDAsMCw0LjI3OC00LjQxOGMuMzE5LjItLjA0OCwxLjUyOS0uMTI4LDEuNzgxYTUuNzI2LDUuNzI2LDAsMCwxLTEuMDEsMS44MTMsOC45MzMsOC45MzMsMCwwLDEtMy4yNTcsMi41MTRDMjAuMzE2LDI4LjcxLDE2LjM1NywyOS41OSwxNS43LDI2LjkzNVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE5LjE1MSwxOS4zNzZjLjM2NywyLjEwNy0yLjk1NywzLjEyNC00LjQ3OCwzLjIxMy0xLjg1OS4xMS00LjkyOS0uMjkyLTYuMDYtMi4wMzEtLjY3My0xLjAzNS43ODEtLjA5LDEuMTg4LjA1OGE4LjY2Myw4LjY2MywwLDAsMCwzLjA2LjUsMTEuNiwxMS42LDAsMCwwLDMuMzA1LS41LDEzLjcyNSwxMy43MjUsMCwwLDAsMS41MzMtLjU3NkMxOCwxOS45MDgsMTguODIzLDE5LjM0OSwxOS4xNTEsMTkuMzc2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjQuMTQyLDIzLjQ2Yy40LS45NDUtMS44ODMtMS41NzgtMi40NDUtMS44NThhNC44NTcsNC44NTcsMCwwLDEtMS4zMTUtLjg2N2MtLjE4MS0uMTgxLS44NzItLjkyLS44MDctMS4yMTlhNC45MTIsNC45MTIsMCwwLDEsMS4wODctLjE3NSw1LjkzLDUuOTMsMCwwLDEsLjg1NS41ODgsMTAuMzIzLDEwLjMyMywwLDAsMCwuOTY0LjVBMTUuNjE1LDE1LjYxNSwwLDAsMCwyNC42LDIxLjJjLjMwOC4wOSwxLjU0OS4yMDgsMS43MjcuNDI4QzI2LjI4NywyMS45MjQsMjQuMzU3LDIzLjY0OSwyNC4xNDIsMjMuNDZaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNi4xLDIyLjE3MmMuMjY1LjQzLTEuMDgsMS44MzEtMS4zNjMsMi4xMDVhOS4zNCw5LjM0LDAsMCwxLTIuNTY2LDEuNzI4LDcuNzQ4LDcuNzQ4LDAsMCwxLTIuNTYuNzUzYy0uNjc5LjA1OC0xLjk2Ni0uMTI0LTIuMTQxLS45NzlhNi45NTEsNi45NTEsMCwwLDEsMS4xNzctLjA4NmMuNDYyLS4wNTkuOTIxLS4xNDksMS4zNzYtLjI0NmExMy4wNjUsMTMuMDY1LDAsMCwwLDIuMTg0LS42NDUsMTEuNTA2LDExLjUwNiwwLDAsMCwyLjA4NC0xLjExLDEwLjg3MiwxMC44NzIsMCwwLDAsMS4wNzgtLjgyMkMyNS40NzQsMjIuNzgxLDI1Ljk4NiwyMi4xNjgsMjYuMSwyMi4xNzJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOC43NTgsMTEuOTY1Yy0uMS0xLjMwOCwyLjYxMi0xLjMsMy4yNzEtMS4wOTJhNS45NzYsNS45NzYsMCwwLDEsMi45ODIsMi40NzVjLTEuMDgyLjgtMi40NDkuMDk0LTMuMy0uNjU0YTQuMzI0LDQuMzI0LDAsMCwwLTEuNDgxLTEuMDI5QzE5LjQyMSwxMS40LDE5LjQxMiwxMS43NTksMTguNzU4LDExLjk2NVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI1Ljc4MywxMy4zNDFjLS40NDQtLjAyOS0uMzE2LjA3MS0uNjQ3LS4yMTItLjM1OC0uMzA3LS42MTQtLjc5NS0uOTQ1LTEuMTQxLS41MzQtLjU1OC0xLjI0Mi0uODk1LTEuNzIzLTEuNDg1YTcuMjY5LDcuMjY5LDAsMCwxLTEuNjI0LTQuODQ4Yy4wMTgtMS40ODkuNDA3LjE4Ny41NTEuNjc1YTEyLjI3NiwxMi4yNzYsMCwwLDAsMS4xMjYsMi43MDgsNDYuMDU1LDQ2LjA1NSwwLDAsMCwzLjQsNC4zMjFDMjUuODgyLDEzLjM2MSwyNS44MjQsMTMuMzM4LDI1Ljc4MywxMy4zNDFaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yMC4wNjgsMTQuNzU2Yy4wMzMtLjYyNS0uOTExLS43OTItMS4yMTEtMS40Mi0uMTY0LS4zNDMtLjIxMS0uNTY5LjAyOS0uNy4wODItLjA0NS4zODMuMDEyLjUtLjAyLjI3MS0uMDc2LjMzNS0uMjczLjU4MS0uNEExLjE5MywxLjE5MywwLDAsMSwyMS42LDEzLjIzNywxLjgyMSwxLjgyMSwwLDAsMSwyMC4wNjgsMTQuNzU2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjAuNSwxNC43NDVhMS45MzEsMS45MzEsMCwwLDAsMS4zMjMtMS43Yy41MjQuMTM5LjkyOC42NTgsMS41MjEuNzcxYTIuNTg0LDIuNTg0LDAsMCwwLDEuMDI5LS4wMTdjLjIwNy0uMDQ1LjU0LS4yNzQuNzIxLS4yNTktLjAzMy4xNjMtLjQ2NC41NDYtLjU2NS43MTdhNC4yNDIsNC4yNDIsMCwwLDAtLjM4OC45Yy0uMjI5Ljc0MS0uMDYxLjczOS0uNzA5LjMxMWE0LjI4NCw0LjI4NCwwLDAsMC0xLjk1Ny0uNzJDMjEuMjA5LDE0LjcyMiwyMC41OTQsMTQuNzY3LDIwLjUsMTQuNzQ1WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuOTA1LDIwLjczNGEyLjAwOCwyLjAwOCwwLDAsMS0xLjQsMS43MTJjLS4yMDUuMDkxLTIuMDE4LjczMy0yLjAzMi4zNDgtLjAwNy0uMiwxLjYyNC0uOTU0LDEuODA5LTEuMTFhMy4zNTUsMy4zNTUsMCwwLDAsLjg2Ny0xLjA3MWMuMDU1LS4xMTIuMjMyLS45MjUuMjcxLS45NDNDMTkuNjQ0LDE5LjU2NCwxOS45MDgsMjAuNiwxOS45MDUsMjAuNzM0WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTEuMzczLDEyLjUzMmExMC42MjUsMTAuNjI1LDAsMCwxLDMuNzEtLjkxNCwxMC4yODIsMTAuMjgyLDAsMCwxLDEuODY1LjAyNGMuMzY2LjAzOSwxLjQ2OS4wNTQsMS43NC4zNDNhLjI1NS4yNTUsMCwwLDEtLjI3My4xNzNjLS4wMzcuMDc3LjI1MS4zNzEuMy40MjUtLjAzNC4wMzQtMS40NDUtLjQtMS41NzItLjQyNGExMC42MzIsMTAuNjMyLDAsMCwwLTIuMjgyLS4xMzQsMTYsMTYsMCwwLDAtMS44NDEuMTk0QTYuMjI0LDYuMjI0LDAsMCwxLDExLjM3MywxMi41MzJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yMi41MTIsMTAuNzMxYTEuODg4LDEuODg4LDAsMCwxLTEuNTE3LS42Yy0uMjQ3LS4zNDktLjczNy0xLjY5Mi0uMzg1LTIuMDIxLjIwOS0uMi4zODQuNjYyLjQ4NC44NDZBMTAuODIyLDEwLjgyMiwwLDAsMCwyMi41MTIsMTAuNzMxWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjcuNzg4LDE5LjJhMTkuMjEyLDE5LjIxMiwwLDAsMS0uNzQ5LDMuMzEzYy0uMTczLS4wNzctLjI3NS0uNzc4LS41NjItLjk1YTQuMDcsNC4wNywwLDAsMCwuNzYtMS4xNTRDMjcuMzg5LDIwLjEwNywyNy41NCwxOS4zNjMsMjcuNzg4LDE5LjJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS45ODEsMTEuODQzYy0uMTMyLjI2OC0uOTMyLDEuMS0xLjExOC40ODFDMTguNzU2LDExLjk2OCwxOS43MzksMTEuNDgzLDE5Ljk4MSwxMS44NDNabS0uNzQ3LjQ1Yy4yMjguMDA2LjAxMi0uMjQ4LjAxMi0uMjY2QzE5LjI0NSwxMS45ODQsMTguODc4LDEyLjI5MywxOS4yMzQsMTIuMjkzWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPmAsXG5cdFwiQUxcIjogYDxwYXRoIGQ9XCJNMTEuNjE2LDcuOTg2QTEuNTU5LDEuNTU5LDAsMCwwLDEwLjE2LDdIMTAuMWExLjU1OCwxLjU1OCwwLDAsMC0xLjQ1Ni45ODZMMiwyNUg1LjgwNmwxLjAxNS0yLjgzNGg2LjYyMUwxNC40NTcsMjVoMy44Wk03Ljk0NCwxOC45NTZsMi4xODgtNi4xMTEsMi4xODgsNi4xMTZaXCIgc3R5bGU9XCJmaWxsOiMyZWE5OGVcIi8+PHBhdGggZD1cIk0yMy44MjksMjEuNjcxVjcuMTI5SDIwLjNWMjIuNzQ3QTIuMzQ2LDIuMzQ2LDAsMCwwLDIyLjU3LDI1SDMwVjIxLjY3MlpcIiBzdHlsZT1cImZpbGw6IzJlYTk4ZVwiLz5gLFxuXHRcIkFOVExSNFwiOiBgPHBhdGggZD1cIk0xNC4xNzcsNy4yNzhhMi4wOCwyLjA4LDAsMCwxLDMuMDQxLS44QTMuNTcxLDMuNTcxLDAsMCwxLDE4LjIsOC4wMjJjMS4zNTYsMy4xMjIsMi45LDYuMTY1LDQuMTE5LDkuMzQ1LjY0NSwxLjUsMS40MjksMi45MzgsMS45OTQsNC40NjhhMS40NTUsMS40NTUsMCwwLDEtMi4yNTgsMS4zNzZjLTIuOC0xLjU3Mi01LjYyOC0zLjA5NC04LjM4NS00LjczMSwyLjAwOS4wMDgsNC4wMTgtLjAwOCw2LjAyNS4wMTNhMTkuNzA3LDE5LjcwNywwLDAsMC0xLjI4OC0yLjkxOGMtLjc4MS0xLjg1OC0xLjYtMy43LTIuMzU4LTUuNTY1YTkuNzgzLDkuNzgzLDAsMCwwLTEuMDMyLDIuMTI1Yy0xLjMsMy4xODItMi44Nyw2LjI0MS00LjEzNiw5LjQzNS0uMjgxLjU5LS40MjQsMS4zNDQtMS4wMzUsMS42OWExLjQ0NywxLjQ0NywwLDAsMS0yLjA5NC0uNzM4Yy0uMjQxLS42MS4xNTEtMS4yLjM4Mi0xLjc0My43NzktMS43MjUsMS42NDUtMy40MTMsMi4yODMtNS4yQzExLjY1LDEyLjgsMTIuOTE2LDEwLjA0MSwxNC4xNzcsNy4yNzhaXCIgc3R5bGU9XCJmaWxsOiNmZWZlZmVcIi8+PHBhdGggZD1cIk0xMy44MTcsMi4yQTEzLjkyMywxMy45MjMsMCwwLDEsMjkuNTI2LDEyLjU0OWExMy43MzMsMTMuNzMzLDAsMCwxLTIuMDgyLDExLjUxOUExNC4wNzQsMTQuMDc0LDAsMCwxLDcuNzM4LDI3LjI5M2ExMy44NTIsMTMuODUyLDAsMCwxLTUuNjE1LTkuNDgzQTE0LjE1MiwxNC4xNTIsMCwwLDEsMy40NTEsOS44NSwxMy45NjEsMTMuOTYxLDAsMCwxLDEzLjgxNywyLjJtLjM1OSw1LjA4Yy0xLjI2MSwyLjc2Mi0yLjUyNiw1LjUyNS0zLjc2Miw4LjMtLjYzOCwxLjc4Ni0xLjUsMy40NzMtMi4yODMsNS4yLS4yMzEuNTQyLS42MjMsMS4xMzMtLjM4MiwxLjc0M2ExLjQ0NywxLjQ0NywwLDAsMCwyLjA5NC43MzhjLjYxLS4zNDcuNzUzLTEuMSwxLjAzNS0xLjY5LDEuMjY2LTMuMTk0LDIuODMzLTYuMjUzLDQuMTM2LTkuNDM1YTkuNzgzLDkuNzgzLDAsMCwxLDEuMDMyLTIuMTI1Yy43NTYsMS44NjgsMS41NzcsMy43MDcsMi4zNTgsNS41NjVhMTkuNzA3LDE5LjcwNywwLDAsMSwxLjI4OCwyLjkxOGMtMi4wMDctLjAyLTQuMDE2LS4wMDUtNi4wMjUtLjAxMywyLjc1NywxLjYzNyw1LjU4OCwzLjE1OSw4LjM4NSw0LjczMWExLjQ1NSwxLjQ1NSwwLDAsMCwyLjI1OC0xLjM3NmMtLjU2NS0xLjUyOS0xLjM0OS0yLjk3MS0xLjk5NC00LjQ2OC0xLjIyLTMuMTc5LTIuNzYyLTYuMjIzLTQuMTE5LTkuMzQ1YTMuNTcxLDMuNTcxLDAsMCwwLS45ODItMS41NDRBMi4wOCwyLjA4LDAsMCwwLDE0LjE3Nyw3LjI3OFpcIiBzdHlsZT1cImZpbGw6I2U0NGEzMlwiLz5gLFxuXHRcIkFwYWNoZSBDb25maWd1cmF0aW9uXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNTYwMi42ODJcIiB5MT1cIjc2OC41NDFcIiB4Mj1cIi01NTk4LjcyN1wiIHkyPVwiNzYzLjkxN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuNDIzLCAtMC45MDYsIC0wLjkwNiwgLTAuNDIzLCAzMDgyLjg1MywgLTQ3NDguNTUxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Y2OTkyM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjMxMlwiIHN0b3AtY29sb3I9XCIjZjc5YTIzXCIvPjxzdG9wIG9mZnNldD1cIjAuODM4XCIgc3RvcC1jb2xvcj1cIiNlOTc4MjZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNTYzMS45NTJcIiB5MT1cIjc2OS4wNTJcIiB4Mj1cIi01NjAzLjczN1wiIHkyPVwiNzY5LjA1MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuNDIzLCAtMC45MDYsIC0wLjkwNiwgLTAuNDIzLCAzMDgyLjg1MywgLTQ3NDguNTUxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMzIzXCIgc3RvcC1jb2xvcj1cIiM5ZTIwNjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC42M1wiIHN0b3AtY29sb3I9XCIjYzkyMDM3XCIvPjxzdG9wIG9mZnNldD1cIjAuNzUxXCIgc3RvcC1jb2xvcj1cIiNjZDIzMzVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZTk3ODI2XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTU2MjguNTQ2XCIgeTE9XCI3NjYuMjIxXCIgeDI9XCItNTYxMS43MzNcIiB5Mj1cIjc2Ni4yMjFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjQyMywgLTAuOTA2LCAtMC45MDYsIC0wLjQyMywgMzA4Mi44NTMsIC00NzQ4LjU1MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMyODI2NjJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wOTVcIiBzdG9wLWNvbG9yPVwiIzY2MmU4ZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjc4OFwiIHN0b3AtY29sb3I9XCIjOWYyMDY0XCIvPjxzdG9wIG9mZnNldD1cIjAuOTQ5XCIgc3RvcC1jb2xvcj1cIiNjZDIwMzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2OS4zMTZcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY5LjMxNlwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCItNTYyOC4zMVwiIHkxPVwiNzY4LjkzM1wiIHgyPVwiLTU2MTMuNDgyXCIgeTI9XCI3NjguOTMzXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY2LjM5NFwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjYuMzk0XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi01NjMyLjExOFwiIHkxPVwiNzY2LjUzOVwiIHgyPVwiLTU2MDMuOTAyXCIgeTI9XCI3NjYuNTM5XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY1LjUyNlwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjUuNTI2XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY1LjYyNVwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjUuNjI1XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIi01NjE0LjUxNlwiIHkxPVwiNzY1LjY0NVwiIHgyPVwiLTU2MDguMjhcIiB5Mj1cIjc2NS42NDVcIiB4bGluazpocmVmPVwiI2JcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXBhY2hlPC90aXRsZT48cGF0aCBkPVwiTTE5Ljk5MywyLjEzM2ExMC4yNjcsMTAuMjY3LDAsMCwwLTIuMDQsMi4wNTZsLjgsMS41MWExOS43MzMsMTkuNzMzLDAsMCwxLDEuNzA4LTIuMTQ0Yy4wNDQtLjA0OS4wNjgtLjA3Mi4wNjgtLjA3MmwtLjA2OC4wNzJhMTcuODY1LDE3Ljg2NSwwLDAsMC0xLjYsMi4xNzQsMzAuMSwzMC4xLDAsMCwwLDMuMTExLS4zODUsMy4yODgsMy4yODgsMCwwLDAtLjMtMi41UzIwLjksMS42LDE5Ljk5MywyLjEzM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE4LjYzOCwxMC43NDlsLjAxOCwwLS4xMTUuMDEzLS4wMjEuMDA5WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTcuODIxLDEzLjQ1NWMtLjA2Ni4wMTUtLjEzMi4wMjYtLjIuMDM2QzE3LjY4OSwxMy40ODEsMTcuNzU2LDEzLjQ2OSwxNy44MjEsMTMuNDU1WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTIuMjcsMTkuNTI0Yy4wMDktLjAyMy4wMTctLjA0NS4wMjUtLjA2OHEuMjY0LS43LjUyMy0xLjM1Ny4yOTEtLjc0MS41NzUtMS40MzYuMy0uNzMzLjU5LTEuNDE4LjMwNS0uNzE4LjYtMS4zODQuMjQtLjU0Mi40NzQtMS4wNDkuMDc4LS4xNjkuMTU1LS4zMzUuMTUzLS4zMjkuMy0uNjQ1LjEzOC0uMjkxLjI3NC0uNTdjLjAzLS4wNjIuMDYtLjEyMy4wOS0uMTg1bC4wMTUtLjAzLS4xLjAxMS0uMDc4LS4xNTRjLS4wMDcuMDE1LS4wMTUuMDMtLjAyMy4wNDVxLS4yMTEuNDE4LS40MTcuODQ1LS4xMTkuMjQ2LS4yMzguNDk1LS4zMjguNjg5LS42NDUsMS4zODlUMTMuNzY2LDE1LjFxLS4zLjctLjU5NCwxLjR0LS41NjcsMS4zODdxLS4yODkuNzItLjU2MiwxLjQyNi0uMDYyLjE1OS0uMTIzLjMxOC0uMjE5LjU2OS0uNDI2LDEuMTI0bC4xMjMuMjQzLjExLS4wMTIuMDEyLS4wMzNRMTIuMDA4LDIwLjIxNiwxMi4yNywxOS41MjRaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PHBhdGggZD1cIk0xNy41NywxMy41WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTcuMzA1LDE0LjgxOGwtLjMxNS4wNTVoMGwuMTYxLS4wMjVDMTcuMiwxNC44MzksMTcuMjUzLDE0LjgyOSwxNy4zMDUsMTQuODE4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuMzA1LDE0LjgxOGwtLjMxNS4wNTVoMGwuMTYxLS4wMjVDMTcuMiwxNC44MzksMTcuMjUzLDE0LjgyOSwxNy4zMDUsMTQuODE4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuNTczLDEzLjVoMGwuMDUtLjAwN2MuMDY4LS4wMS4xMzUtLjAyMi4yLS4wMzZsLS4yNDguMDQyWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuNTczLDEzLjVoMGwuMDUtLjAwN2MuMDY4LS4wMS4xMzUtLjAyMi4yLS4wMzZsLS4yNDguMDQyWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTYuMzk0LDkuNnEuMzY1LS42ODIuNzM5LTEuMzMyLjM4OC0uNjc0Ljc4NC0xLjMwNWwuMDQ2LS4wNzVxLjM5Mi0uNjIuNzktMS4xOTFsLS44LTEuNTEtLjE4Mi4yMjVjLS4yMzEuMjg4LS40Ny42LS43MTYuOTI1LS4yNzcuMzctLjU2Mi43NjQtLjg1MSwxLjE3OS0uMjY3LjM4My0uNTM4Ljc4NC0uODA5LDEuMi0uMjMxLjM1My0uNDYyLjcxNy0uNjkyLDEuMDlsLS4wMjYuMDQyTDE1LjcxOCwxMC45UTE2LjA1MiwxMC4yNDQsMTYuMzk0LDkuNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTExLjY1MSwyMS4xOTJxLS4yMDcuNTY4LS40MTUsMS4xNTlsLS4wMDYuMDE3LS4wNTkuMTY3Yy0uMDkzLjI2Ni0uMTc1LjUtLjM2MSwxLjA0OWEyLjEwNywyLjEwNywwLDAsMSwuNzg2LjkyNiwxLjY4LDEuNjgsMCwwLDAtLjU0NC0xLjE1NCwzLjYyMSwzLjYyMSwwLDAsMCwzLjQ4OS0xLjQyLDIuNzkxLDIuNzkxLDAsMCwwLC4xNjUtLjMxMywxLjQ1MSwxLjQ1MSwwLDAsMS0xLjQuNTEzbDAsMCwwLDBhNC4wNTksNC4wNTksMCwwLDAsMi4wNDYtMS42NzJjLjExMS0uMTc4LjIxOC0uMzcyLjMyOC0uNTg3YTMuMywzLjMsMCwwLDEtMy4xMDksMS4wMWwtLjg0Mi4wOTJDMTEuNywyMS4wNSwxMS42NzcsMjEuMTIxLDExLjY1MSwyMS4xOTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xMi4wNDQsMTkuMzA2cS4yNzMtLjcwNi41NjItMS40MjYuMjc2LS42OS41NjctMS4zODd0LjU5NC0xLjRxLjMwOC0uNzExLjYyOS0xLjQxOXQuNjQ1LTEuMzg5cS4xMTgtLjI0OC4yMzgtLjQ5NS4yMDctLjQyNi40MTctLjg0NWMuMDA3LS4wMTUuMDE1LS4wMy4wMjMtLjA0NUwxNC42NzcsOC44NDdsLS4wNTEuMDgzYy0uMjQyLjQtLjQ4NC44LS43MjEsMS4yMTZzLS40NzUuODQ0LS43LDEuMjc2cS0uMjkxLjU0Ny0uNTY4LDEuMWwtLjExLjIyNWMtLjIyNy40NjctLjQzMi45MTgtLjYxNywxLjM1MnEtLjMxNS43MzctLjU1NiwxLjQwNmMtLjEwNy4yOTMtLjIuNTc2LS4yOTIuODQ3LS4wNzMuMjMyLS4xNDIuNDY0LS4yMDguN3EtLjIzNC44MTgtLjQsMS42MzFMMTEuNSwyMC43NDhxLjIwOC0uNTU0LjQyNi0xLjEyNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTEwLjQzNSwxOC43NTVhMTYuMDcsMTYuMDcsMCwwLDAtLjI3MiwxLjk3NGMwLC4wMjMsMCwuMDQ2LS4wMDUuMDY5YTQuMTUsNC4xNSwwLDAsMC0xLjItMS4wMjksNS44MjUsNS44MjUsMCwwLDEsMS4xNzIsMi42OTMsMi42NDIsMi42NDIsMCwwLDEtMS4zMjUtLjIyNiwyLjY2MiwyLjY2MiwwLDAsMCwxLjEzLjY4NiwzLjI0NywzLjI0NywwLDAsMC0xLjU3MS43ODMsMy4zNTksMy4zNTksMCwwLDEsMS44NjEtLjM0MkM5LjUxLDI1LjM4OSw4Ljc5MywyNy42MjYsOC4wNzYsMzBhLjYyNS42MjUsMCwwLDAsLjQyNS0uNDEzYy4xMjgtLjQzLjk3Ni0zLjI1MSwyLjMwNi02Ljk1OWwuMTE1LS4zMTguMDMyLS4wODlxLjIxMS0uNTgzLjQzNy0xLjE5bC4xLS4yNzcsMC0uMDA1TDEwLjQ1LDE4LjY4NEMxMC40NDUsMTguNzA3LDEwLjQzOSwxOC43MzEsMTAuNDM1LDE4Ljc1NVpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTE1Ljg4LDExLjA3OGwtLjA5LjE4NXEtLjEzNS4yNzktLjI3NC41Ny0uMTUuMzE1LS4zLjY0NWMtLjA1Mi4xMTEtLjEuMjIyLS4xNTUuMzM1cS0uMjM0LjUwOC0uNDc0LDEuMDQ5LS4zLjY2Ni0uNiwxLjM4NC0uMjkxLjY4NS0uNTksMS40MTgtLjI4NC43LS41NzUsMS40MzYtLjI1OS42NjEtLjUyMywxLjM1N2MtLjAwOS4wMjMtLjAxNy4wNDUtLjAyNS4wNjhxLS4yNjIuNjkzLS41MjksMS40MjJsLS4wMTIuMDMzLjg0Mi0uMDkyLS4wNS0uMDA5YTYsNiwwLDAsMCwzLjIxLTEuODA3LDcuOTg0LDcuOTg0LDAsMCwwLDEuMS0xLjUyNCwxMy4xMzksMTMuMTM5LDAsMCwwLC43MDYtMS40NjdjLjE5NS0uNDcyLjM4Mi0uOTgyLjU2Mi0xLjUzNmEzLjA1MywzLjA1MywwLDAsMS0uNzg4LjI3NGMtLjA1MS4wMTEtLjEuMDIxLS4xNTYuMDNzLS4xMDcuMDE4LS4xNjEuMDI1aDBhMy42NjgsMy42NjgsMCwwLDAsMS45NjItMS45MTMsMy4zNDQsMy4zNDQsMCwwLDEtMS4xMy40OTVjLS4wNjYuMDE1LS4xMzIuMDI2LS4yLjAzNmwtLjA1LjAwN2gwYTMuODIxLDMuODIxLDAsMCwwLC44MzktLjQ2OWMuMDUxLS4wMzguMS0uMDc4LjE0OC0uMTIuMDczLS4wNjMuMTQyLS4xMjkuMjA4LS4yLjA0Mi0uMDQ0LjA4My0uMDkuMTIzLS4xMzhhMy4yNywzLjI3LDAsMCwwLC4yNjMtLjM2MmMuMDI1LS4wNC4wNS0uMDguMDc0LS4xMjIuMDMxLS4wNi4wNjEtLjExOS4wOS0uMTc4LjEzMS0uMjY0LjIzNi0uNS4zMTktLjcwNi4wNDItLjEuMDc4LS4yLjEwOS0uMjg4LjAxMy0uMDM1LjAyNS0uMDcuMDM2LS4xLjAzMy0uMS4wNi0uMTg3LjA4MS0uMjY1YTIuNjA1LDIuNjA1LDAsMCwwLC4wNjItLjI3NWgwYTEuMDEsMS4wMSwwLDAsMS0uMTA5LjA3NSwzLjk2NSwzLjk2NSwwLDAsMS0xLjE2Mi40bC43NzMtLjA4NS0uNzczLjA4NS0uMDE4LDAtLjExOS4wMTkuMDIxLS4wMDktMi42NDUuMjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0xOC44NTgsNS43M2MtLjIzNS4zNjEtLjQ5Mi43NzEtLjc2OCwxLjIzNmwtLjA0NC4wNzRxLS4zNTguNi0uNzU5LDEuMzI3LS4zNDYuNjI2LS43MTksMS4zNDctLjMyNi42MjktLjY3MiwxLjMzNmwyLjY0NS0uMjlBMy4yMTYsMy4yMTYsMCwwLDAsMTkuOTksOS42MmMuMDg5LS4xMjguMTc4LS4yNjIuMjY3LS40LjI3Mi0uNDI0LjUzOC0uODkxLjc3Ni0xLjM1NWExNC4wNzQsMTQuMDc0LDAsMCwwLC41ODgtMS4yOTQsNi44LDYuOCwwLDAsMCwuMjMzLS43Yy4wNDgtLjE4NC4wODYtLjM1OC4xMTUtLjUyNEEzMC4xNTIsMzAuMTUyLDAsMCwxLDE4Ljg1OCw1LjczWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMTcuMTQ5LDE0Ljg0OGMtLjA1My4wMDktLjEwNy4wMTgtLjE2MS4wMjVoMEMxNy4wNDIsMTQuODY2LDE3LjEsMTQuODU3LDE3LjE0OSwxNC44NDhaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy4xNDksMTQuODQ4Yy0uMDUzLjAwOS0uMTA3LjAxOC0uMTYxLjAyNWgwQzE3LjA0MiwxNC44NjYsMTcuMSwxNC44NTcsMTcuMTQ5LDE0Ljg0OFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjE0OSwxNC44NDhjLS4wNTMuMDA5LS4xMDcuMDE4LS4xNjEuMDI1aDBDMTcuMDQyLDE0Ljg2NiwxNy4xLDE0Ljg1NywxNy4xNDksMTQuODQ4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNWwuMDUtLjAwNy0uMDUuMDA3WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNWwuMDUtLjAwNy0uMDUuMDA3WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNWwuMDUtLjAwNy0uMDUuMDA3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNMTcuNTcyLDEzLjVoMFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjU3MiwxMy41aDBaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNy41NzIsMTMuNWgwWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPmAsXG5cdFwiQXBleFwiOiBgPHBhdGggZD1cIk0xMy42NTIsOC4zMzhBNC45MDYsNC45MDYsMCwwLDEsMTcuMiw2LjgxNGE0Ljk1Nyw0Ljk1NywwLDAsMSw0LjMyLDIuNTYsNS45NzIsNS45NzIsMCwwLDEsMi40NDItLjUxOSw2LjA4OSw2LjA4OSwwLDEsMS0xLjE4OSwxMi4wNiw0LjQxMiw0LjQxMiwwLDAsMS01Ljc4MiwxLjgxNkE1LjAzNCw1LjAzNCwwLDAsMSw3LjYzNCwyMi41YTQuNjQ2LDQuNjQ2LDAsMCwxLS45Ni4xLDQuNzMyLDQuNzMyLDAsMCwxLTIuMzM3LTguODEyLDUuNDM4LDUuNDM4LDAsMCwxLDkuMzE1LTUuNDUzXCIgc3R5bGU9XCJmaWxsOiMwZjliZDdcIi8+PHBhdGggZD1cIk0yNS4zNzYsMzAuOTY2aC0uNTYxYTQuNjU4LDQuNjU4LDAsMCwxLTEuMjg0LS4xMzcsMS45LDEuOSwwLDAsMS0uODE4LS40ODIsMS43MjYsMS43MjYsMCwwLDEtLjQ1NS0uODQzLDYuNzcsNi43NywwLDAsMS0uMTA2LTEuNDEzLDUuODg5LDUuODg5LDAsMCwwLS4wODQtMS4zMywxLDEsMCwwLDAtLjMtLjU0NCwxLjIyMywxLjIyMywwLDAsMC0uNjYtLjE3OWwtLjIzNi0uMDE0VjI0LjE0NWwuMjM2LS4wMTRhMS40ODIsMS40ODIsMCwwLDAsLjU0OS0uMS43MDYuNzA2LDAsMCwwLC4yNzMtLjI2NCwxLjM5NCwxLjM5NCwwLDAsMCwuMTgxLS41MjksNi42ODMsNi42ODMsMCwwLDAsLjA0NC0uOTM5LDguMTMyLDguMTMyLDAsMCwxLC4xMTItMS42NDMsMS43LDEuNywwLDAsMSwuNDQ4LS44NDEsMi4xNDQsMi4xNDQsMCwwLDEsLjkwNi0uNDkyLDQuNTE0LDQuNTE0LDAsMCwxLDEuMi0uMTE2aC41NjF2MS45aC0uMjVhMi41ODksMi41ODksMCwwLDAtLjc0My4wNTYuMjg0LjI4NCwwLDAsMC0uMTQ4LjExNy44MzkuODM5LDAsMCwwLS4wNTQuMzg2cTAsLjM3Mi0uMDUzLDEuNDEzYTMuNzQsMy43NCwwLDAsMS0uMTY2LDEuMDA5LDEuOTQ1LDEuOTQ1LDAsMCwxLS42OTMsMSwyLjAxLDIuMDEsMCwwLDEsLjcsMS4wNDQsNC42MjcsNC42MjcsMCwwLDEsLjE2MywxLjA3OWMuMDI3LjY1Ny4wNDEsMS4wNzQuMDQxLDEuMjU2YS44NzEuODcxLDAsMCwwLC4wNTcuNDA4QS4zNDMuMzQzLDAsMCwwLDI0LjQsMjlhMi4zODIsMi4zODIsMCwwLDAsLjcyOC4wNmguMjVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMS4xMTgsMjUuNzg4VjI0LjM4MmExLjc1MiwxLjc1MiwwLDAsMCwuNjQ1LS4xMjkuOTM2LjkzNiwwLDAsMCwuMzc1LS4zNTQsMS42MjEsMS42MjEsMCwwLDAsLjIxNy0uNjI0QTYuODgsNi44OCwwLDAsMCwyMi40LDIyLjNhOCw4LDAsMCwxLC4xMDUtMS41ODUsMS40NTYsMS40NTYsMCwwLDEsLjM4MS0uNzIxLDEuOSwxLjksMCwwLDEsLjgtLjQzMSw0LjMzNiw0LjMzNiwwLDAsMSwxLjEyNS0uMTA1aC4zMTF2MS40YTIuODc2LDIuODc2LDAsMCwwLS44MzUuMDczLjUzLjUzLDAsMCwwLS4yNzIuMjIzLDEuMDc5LDEuMDc5LDAsMCwwLS4wODguNTEzcTAsLjM2OS0uMDUzLDEuNGEzLjUzMSwzLjUzMSwwLDAsMS0uMTUyLjk0LDEuOTE4LDEuOTE4LDAsMCwxLS4zMTMuNTk1LDIuNDcsMi40NywwLDAsMS0uNTgzLjQ4NiwyLjA0NSwyLjA0NSwwLDAsMSwuNTY1LjQ2NiwxLjg2OSwxLjg2OSwwLDAsMSwuMzM3LjY0Nyw0LjQxLDQuNDEsMCwwLDEsLjE1MiwxLjAycS4wNDEuOTczLjA0MSwxLjI0MmExLjEsMS4xLDAsMCwwLC4wOTQuNTM5LjU4NC41ODQsMCwwLDAsLjI4NC4yMzEsMi42NDksMi42NDksMCwwLDAsLjgyMy4wNzl2MS40MDZoLS4zMTFBNC40NzQsNC40NzQsMCwwLDEsMjMuNiwzMC41OWExLjY0NCwxLjY0NCwwLDAsMS0uNzEyLS40MTksMS40NzgsMS40NzgsMCwwLDEtLjM5LS43MjQsNi42MjEsNi42MjEsMCwwLDEtLjEtMS4zNTYsNi4zNzQsNi4zNzQsMCwwLDAtLjA5NC0xLjQsMS4yMzIsMS4yMzIsMCwwLDAtLjM5LS42NzFBMS40MzEsMS40MzEsMCwwLDAsMjEuMTE4LDI1Ljc4OFpcIiBzdHlsZT1cImZpbGw6IzAwNzJhMFwiLz48cGF0aCBkPVwiTTI3LjAxMSwzMC45NjZIMjYuNDVWMjkuMDU5aC4yNUEyLjMyOSwyLjMyOSwwLDAsMCwyNy40MjYsMjlhLjMyMy4zMjMsMCwwLDAsLjE2NS0uMTI3LjgxMi44MTIsMCwwLDAsLjA1OC0uMzc5cTAtLjM2LjA1LTEuMzc1YTMuNzI1LDMuNzI1LDAsMCwxLC4xNzMtMS4wNDcsMi4yMjMsMi4yMjMsMCwwLDEsLjM4Ny0uNywyLjE0NSwyLjE0NSwwLDAsMSwuMy0uMjkyLDIuMTQxLDIuMTQxLDAsMCwxLS40LS40LDIuNjEyLDIuNjEyLDAsMCwxLS40MjEtMS4wOTIsMTcuNTI1LDE3LjUyNSwwLDAsMS0uMS0xLjg0MSwxLjM1NywxLjM1NywwLDAsMC0uMDUzLS40NzljLS4wMDgtLjAxNi0uMDMxLS4wNjItLjEzNi0uMTA2YTIuNTI0LDIuNTI0LDAsMCwwLS43NTctLjA2aC0uMjVWMTkuMmguNTYxYTQuNzkzLDQuNzkzLDAsMCwxLDEuMjgzLjEzMywxLjg0MSwxLjg0MSwwLDAsMSwuODE4LjQ4NSwxLjc4MSwxLjc4MSwwLDAsMSwuNDUzLjg0Myw2LjYsNi42LDAsMCwxLC4xMDksMS40MTQsNi4zNTksNi4zNTksMCwwLDAsLjA3OSwxLjMzNi45OTIuOTkyLDAsMCwwLC4zLjUzNywxLjIyNiwxLjIyNiwwLDAsMCwuNjY0LjE4bC4yMzYuMDE0djEuODc5bC0uMjM2LjAxNGExLjQ4MiwxLjQ4MiwwLDAsMC0uNTQ5LjEuNjg2LjY4NiwwLDAsMC0uMjcuMjYyLDEuNDg0LDEuNDg0LDAsMCwwLS4xODYuNTM0LDYuNzQzLDYuNzQzLDAsMCwwLS4wNDMuOTMxLDguMzgzLDguMzgzLDAsMCwxLS4xMDgsMS42NDQsMS42OTQsMS42OTQsMCwwLDEtLjQ0Ni44NDYsMi4xNDMsMi4xNDMsMCwwLDEtLjkxMy40OTJBNC41LDQuNSwwLDAsMSwyNy4wMTEsMzAuOTY2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMzAuNzA4LDI1Ljc4OGExLjc1MiwxLjc1MiwwLDAsMC0uNjQ1LjEyOS45MTguOTE4LDAsMCwwLS4zNzIuMzU0LDEuNzI1LDEuNzI1LDAsMCwwLS4yMi42MjQsNi44Miw2LjgyLDAsMCwwLS4wNDcuOTczLDguMjcsOC4yNywwLDAsMS0uMSwxLjU4OCwxLjQzOSwxLjQzOSwwLDAsMS0uMzc4LjcyNCwxLjksMS45LDAsMCwxLS44MDkuNDMxLDQuMzM2LDQuMzM2LDAsMCwxLTEuMTI1LjEwNUgyNi43VjI5LjMxYTIuNjUyLDIuNjUyLDAsMCwwLC44Mi0uMDc5QS41NzIuNTcyLDAsMCwwLDI3LjgsMjksMS4wNSwxLjA1LDAsMCwwLDI3LjksMjguNXEwLS4zNTcuMDUtMS4zNjVhMy41MywzLjUzLDAsMCwxLC4xNTgtLjk3NiwxLjk3NiwxLjk3NiwwLDAsMSwuMzQzLS42MjFBMi4wMzgsMi4wMzgsMCwwLDEsMjksMjUuMDg1YTIuNDE2LDIuNDE2LDAsMCwxLS42MzMtLjU1MSwyLjMzOSwyLjMzOSwwLDAsMS0uMzc1LS45ODQsMTcuNTY0LDE3LjU2NCwwLDAsMS0uMDk0LTEuOCwxLjU3MSwxLjU3MSwwLDAsMC0uMDc5LS41ODYuNDg3LjQ4NywwLDAsMC0uMjY0LS4yMjYsMi44LDIuOCwwLDAsMC0uODUzLS4wNzl2LTEuNGguMzExYTQuNTc2LDQuNTc2LDAsMCwxLDEuMjEzLjEyMywxLjU4NywxLjU4NywwLDAsMSwuNzA5LjQxOSwxLjUyOSwxLjUyOSwwLDAsMSwuMzkuNzI3LDYuNDM2LDYuNDM2LDAsMCwxLC4xLDEuMzU2LDYuODQyLDYuODQyLDAsMCwwLC4wODgsMS40LDEuMjIzLDEuMjIzLDAsMCwwLC4zOTMuNjcxLDEuNDQ3LDEuNDQ3LDAsMCwwLC44LjIzMVpcIiBzdHlsZT1cImZpbGw6IzAwNzJhMFwiLz5gLFxuXHRcIkFQTFwiOiBgPHBhdGggZD1cIk0zMCwyOC4yNzUsMTYsMiwyLDI4LjI3NUgxNC4xNjJWMzBoMy42NzZWMjguMjc1Wk0xNy44MzgsMjQuODI2VjEzLjE2MWw2LjIxNSwxMS42NjVabS05Ljg5MSwwLDYuMjE1LTExLjY2NVYyNC44MjZaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+YCxcblx0XCJBcHBsZVNjcmlwdFwiOiBgPHBhdGggZD1cIk0xNy4xODEsNC40MzdBNS45OTMsNS45OTMsMCwwLDEsMjEuNTc5LDJhNS45NzksNS45NzksMCwwLDEtMS40NDcsNC40NzYsNC43MjksNC43MjksMCwwLDEtNC4xNywxLjk2MUE1LjIsNS4yLDAsMCwxLDE3LjE4MSw0LjQzN1pcIiBzdHlsZT1cImZpbGw6I2E4YzJhYlwiLz48cGF0aCBkPVwiTTE2LjIsMTAuMDM0Yy45NDYsMCwyLjctMS4zLDQuOTg5LTEuM2E2LjI0OSw2LjI0OSwwLDAsMSw1LjQ4NCwyLjgsNi4wOCw2LjA4LDAsMCwwLTMuMDI4LDUuMyw2LjIzNSw2LjIzNSwwLDAsMCwzLjc3Miw1LjdzLTIuNjM3LDcuNDIyLTYuMiw3LjQyMmMtMS42MzYsMC0yLjkwOC0xLjEtNC42MzEtMS4xLTEuNzU3LDAtMy41LDEuMTQ0LTQuNjM1LDEuMTQ0QzguNywzMCw0LjU4NywyMi45NTksNC41ODcsMTcuM2MwLTUuNTY4LDMuNDc4LTguNDg5LDYuNzQtOC40ODlDMTMuNDQ4LDguODExLDE1LjA5MywxMC4wMzQsMTYuMiwxMC4wMzRaXCIgc3R5bGU9XCJmaWxsOiNhOGMyYWJcIi8+YCxcblx0XCJBcmR1aW5vXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCI3NjcuMTc5XCIgY3k9XCI1MTY5LjU0M1wiIHI9XCIxNC45ODlcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNzE4LjExMiAtNDk1My45MTcpIHNjYWxlKDAuOTU1IDAuOTYyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzM2YmFjMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyZDkwOTRcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hcmR1aW5vPC90aXRsZT48cGF0aCBkPVwiTTI5LjY0NSwxNS45MjVBMTMuNzcsMTMuNzcsMCwxLDEsMTUuODc2LDIuMDU2LDEzLjgxOSwxMy44MTksMCwwLDEsMjkuNjQ1LDE1LjkyNVpcIiBzdHlsZT1cInN0cm9rZTojMDI3OTdlO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xMzY3MjI4NDU0OTY5MjY3cHg7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTAuNTgxLDExLjY0OGMyLjQxLS4wNzYsMy4zNTkuODM0LDQuNjA1LDIuMDY5LjI4NS4yODIuNTc5LjU5LjkuOTIxbC45MjItLjk5MWE2LjIyMyw2LjIyMywwLDAsMSwzLjI1Ni0xLjkzYzEuOTM5LS4yMTEsMy4xMTktLjEyMiw0LjMxMS44MTRhNS4wMjMsNS4wMjMsMCwwLDEsMi4yNDUsMy45LDUuNjUzLDUuNjUzLDAsMCwxLTMuMjUsNS4xNTYsNS45NzUsNS45NzUsMCwwLDEtMy45MTMuMTM1LDcuNjU2LDcuNjU2LDAsMCwxLTMuNTQxLTIuOTg3Yy0xLjY3OCwyLjE0Mi0zLjE4NywzLjI1My01LjIzNSwzLjE1NS03LjQ1Mi0uMzU0LTYuODQyLTEwLjA3NS0uMy0xMC4yNDdabTEuNjU3LDcuOTk0YTkuMTkzLDkuMTkzLDAsMCwwLDIuODU2LTIuOWMtLjc0LTEuMjQzLTIuMjA5LTIuODI0LTMuNDU1LTMuMTM0YTQuMzI4LDQuMzI4LDAsMCwwLTMuMjI0Ljc3NywzLjM4NCwzLjM4NCwwLDAsMC0uNzYyLDMuNjg2LDMuNjc0LDMuNjc0LDAsMCwwLDQuNTg1LDEuNTdabS0yLjk4LTMuNDg3LDMuMjc4LjAwNXYxLjIxbC0zLjI4My4wMDVabTEzLjQ0OCwzLjZBMy44NDMsMy44NDMsMCwwLDAsMjQuOTM3LDE3YTMuNDU4LDMuNDU4LDAsMCwwLTEuODYzLTMuMTA5LDMuNjQ4LDMuNjQ4LDAsMCwwLTQuMi43MjgsNy4zNjQsNy4zNjQsMCwwLDAtMS42NDksMi4xNTFBOC45MzYsOC45MzYsMCwwLDAsMTkuMiwxOS4yNTIsNC4wMjIsNC4wMjIsMCwwLDAsMjIuNzA2LDE5Ljc1NFptLTEuOTU1LTIuMzc2LTEuMDg4LS4wMDgsMC0xLjIxNywxLjA5MSwwVjE1LjA3NWwxLjEwNy0uMDA4LS4wMDcsMS4wOTMsMS4wODUsMHYxLjE2NWwtMS4wMjEtLjAwOHYxLjEySDIwLjc1M1pcIiBzdHlsZT1cInN0cm9rZTojMDAwO3N0cm9rZS13aWR0aDowLjEyMTAzMDk2NDgwOTI3NDgycHg7b3BhY2l0eTowLjE2ODA5OTk5OTQyNzc5NTQ7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk00LjkxNywxNi4zMzdjMCw1LjM0OCw3LjM1NCw3LjM0LDEwLjk4NywxLjg5NCwzLjc2NSw1LjY0NywxMC44MjQsMy4yOCwxMC44MjQtMS45UzE5LjcsOC42NTYsMTUuOSwxNC40NDFjLTMuNi01LjcxOS0xMC45ODctMy40NTMtMTAuOTg3LDEuOVptMS45MzEsMGMwLTMuODYsNS40NTUtNS4wNzgsNy45OTIsMC0yLjU4OCw0Ljg4OS03Ljk5MiwzLjg1OS03Ljk5MiwwWm0xMC4xMTksMGMyLjI4Ni01LjE3OCw3Ljg4OS0zLjc1MSw3Ljg3Mi4wMDhTMTkuMTg2LDIxLjI3NywxNi45NjcsMTYuMzM3WlwiIHN0eWxlPVwiZmlsbDojZmZmO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDowLjI0MjA2MTkyOTYxODU0OTY0cHhcIi8+PHJlY3QgeD1cIjguODk4XCIgeT1cIjE1Ljc5NVwiIHdpZHRoPVwiMy4yMzdcIiBoZWlnaHQ9XCIxLjA2N1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjY0NCAxNi44NDYgMTkuNTc2IDE2Ljg0NiAxOS41NzYgMTUuNzEyIDIwLjY0NCAxNS43MTIgMjAuNjQ0IDE0LjY0NCAyMS43NzkgMTQuNjQ0IDIxLjc3OSAxNS43MTIgMjIuODQ3IDE1LjcxMiAyMi44NDcgMTYuODQ2IDIxLjc3OSAxNi44NDYgMjEuNzc5IDE3LjkxNCAyMC42NDQgMTcuOTE0IDIwLjY0NCAxNi44NDZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkFSTSBBc3NlbWJseVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiODM2LjYzXCIgeTE9XCIzNi4yMDVcIiB4Mj1cIjg0My44MDJcIiB5Mj1cIjE0LjQ4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNTI1LjkyMiAzMC4yNDkpIHJvdGF0ZSgxODApIHNjYWxlKDAuNjA3IDAuNjA3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMC4yNzVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hc3NlbWJseTwvdGl0bGU+PHBhdGggZD1cIk0xNiwyYy0xLjI0NiwzLjA1Ni0yLDUuMDU3LTMuMzkxLDguMDIyQTIxLjg4NCwyMS44ODQsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODU4LDE0Ljg1OCwwLDAsMS00LTIuMjgzQzEwLjQzLDE0LjU3OSw3LjY0NiwxOS44NTUsMiwzMGM1LjE4Ni0yLjk5NCw5LjAxMi00LjY0OCwxMi42OTEtNC45NjZWMjQuMmgtLjgzNHYtLjgzN2guODM0VjI0LjJoMS42NzVWMjIuNTIxSDE0LjY5MXYtLjgzNGgtLjgzNFYyMC4wMTNoLjgzNHYtLjgzNGgxLjY3NXYuODM0SDE3LjJ2LjgzN2gtLjgzN3YtLjgzN0gxNC42OTF2MS42NzVoMS42NzV2LjgzNEgxNy4yVjI0LjJoLS44Mzd2Ljc4M2MzLjk4LjEsOC4wMDYsMS43NzIsMTMuNjM0LDUuMDIxLS44NjMtMS41ODktMS42MzYtMy4wMjEtMi4zNzItNC4zODVhMjUuNTI2LDI1LjUyNiwwLDAsMC00LjgzMy0zLjMzM0ExNC40MzYsMTQuNDM2LDAsMCwxLDI2LjY1LDIzLjhDMTkuMTcsOS44NzIsMTguNTY1LDguMDIsMTYsMlpNMTAuNTExLDE5LjE3OWgxLjY3MXYuODM0aC44Mzd2NS4wMjFoLS44MzdWMjIuNTIxSDEwLjUxMXYyLjUxMkg5LjY3M1YyMC4wMTNoLjgzN1ptMCwuODM0djEuNjc1aDEuNjcxVjIwLjAxM1ptNy41MjYtLjgzNGguODM3di44MzRoLjgzN3YuODM3aC44MzR2LS44MzdoLjgzN3YtLjgzNGguODM3djUuODU1aC0uODM3VjIwLjg1aC0uODM3di44MzdoLS44MzRWMjAuODVoLS44Mzd2NC4xODRoLS44MzdaXCIgc3R5bGU9XCJmaWxsOiMwMDAwYmZcIi8+PHBhdGggZD1cIk0yMy44ODEsMTguNjQyYy02LjA2OS04LjIzNy03LjQ3Ni0xNC44NzYtNy44MzItMTYuNDYxQTE3NS4yMTcsMTc1LjIxNywwLDAsMCwyMy44ODEsMTguNjQyWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtb3BhY2l0eTowLjE2NTY4MDQ2ODA4MjQyOFwiLz48cGF0aCBkPVwiTTE2LjA1MSwyLjEyLDE1LjYsMy4yMjdjLS4xNTkuMzkxLS4zMTEuNzY1LS40NjEsMS4xMzFzLS4zLjcyNC0uNDQ4LDEuMDc3LS4zLjctLjQ0OCwxLjA1My0uMy43MDYtLjQ2NSwxLjA2Ni0uMzI5LjcyOS0uNTA2LDEuMTExLS4zNjIuNzc4LS41NjEsMS4xOTNjLS4wMjguMDU3LS4wNjEuMTIzLS4wODkuMTgxQTIxLjg3MiwyMS44NzIsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODc5LDE0Ljg3OSwwLDAsMS0zLjk4OS0yLjI3NmwtLjE0LjI4N2MtLjA2NS4xMzMtLjE0NC4yODMtLjIxMi40MmwtLjEwNi4yMTljLS44NzgsMS43OTMtMi4wMDYsMy45ODQtMy41MjQsNi44MjIsMy41NTEtMiw3LjM4MS00Ljg4NywxNC4zMzgtMi40LS4zNDktLjY2MS0uNjctMS4yOC0uOTcxLTEuODYzcy0uNTgxLTEuMTI4LS44NDEtMS42NDQtLjUtMS0uNzI1LTEuNDYzLS40MzMtLjktLjYyOS0xLjMxMy0uMzgtLjgxOC0uNTU0LTEuMi0uMzM5LS43NTQtLjUtMS4xMThTMTguMDQ3LDYuOSwxNy45LDYuNTQ2cy0uMjkxLS43MDktLjQzNC0xLjA2NmMtLjAzNi0uMDkxLS4wNzMtLjE4Ni0uMTA5LS4yNzdDMTYuOTQ5LDQuMjQ3LDE2LjUzNiwzLjI1OCwxNi4wNTEsMi4xMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIkFzY2lpRG9jXCI6IGA8cGF0aCBkPVwiTTMwLDMwSDJWMkgzMFpcIiBzdHlsZT1cImZpbGw6I2U0MDA0NlwiLz48cGF0aCBkPVwiTTIzLjczMSwyNC44M2EuNTg5LjU4OSwwLDAsMS0uNzYzLS4zMzdMMTYuNzI0LDkuMjY5LDEzLjkzLDE1Ljk5aDEuODMzYS41OS41OSwwLDAsMS0uMDI0LDEuMThIOC45YS41OS41OSwwLDAsMSwuMDI0LTEuMThoMy43MjdsMC0uMDEzTDE2LjE4NCw3LjVhLjU5MS41OTEsMCwwLDEsLjUzMy0uMzYzaDBhLjU5Mi41OTIsMCwwLDEsLjU1Ny4zNjZsNi43ODUsMTYuNTQ2LjAwOS4wMjFBLjU5LjU5LDAsMCwxLDIzLjczMSwyNC44M1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE0LjUxNiwxOC43OTFINy42NzlhLjU5LjU5LDAsMCwwLS4wMjQsMS4xOEgxMUw5LjMwOSwyNC4wNDNhLjU5LjU5LDAsMCwwLDEuMDg1LjQ2NGwwLS4wMTEsMS44NzUtNC41MDkuMDA1LS4wMTZoMi4yMTVhLjU5LjU5LDAsMCwwLC4wMjMtMS4xOFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkFTUC5ORVQgKEMjKVwiOiBgPHRpdGxlPmZpbGVfdHlwZV9hc3B4PC90aXRsZT48cG9seWdvbiBwb2ludHM9XCIyMi43NSAyIDYuMzUgMiA2LjM1IDMwIDI5LjY1IDMwIDI5LjY1IDkgMjIuNzUgMlwiIHN0eWxlPVwiZmlsbDojYzVjNWM1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjM1IDI3LjcgOC43NSAyNy43IDguNzUgNC4zIDIwLjQ1IDQuMyAyMC40NSAxMS4zIDI3LjQ1IDExLjMgMjcuNDUgMjcuNyAyNy4zNSAyNy43XCIgc3R5bGU9XCJmaWxsOiNmNWY1ZjVcIi8+PHBhdGggZD1cIk0xMi4xLDMwLjk5NEExMS4wOTQsMTEuMDk0LDAsMSwxLDIzLjE5NCwxOS45LDExLjEwNiwxMS4xMDYsMCwwLDEsMTIuMSwzMC45OTRabTAtMjAuM0E5LjIsOS4yLDAsMSwwLDIxLjMsMTkuOSw5LjIxNiw5LjIxNiwwLDAsMCwxMi4xLDEwLjdaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGNcIi8+PHJlY3QgeD1cIjIuMDk5XCIgeT1cIjE5LjQ1NVwiIHdpZHRoPVwiMjAuMDAzXCIgaGVpZ2h0PVwiMC44OVwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxwYXRoIGQ9XCJNMTIuMzI1LDE1Ljc2M2EzMS45MywzMS45MywwLDAsMS04LjQ4NC0xLjExbC4yNDItLjgwN2EzMS4zNzQsMzEuMzc0LDAsMCwwLDE1Ljk5MiwwbC4yMzkuODA3QTI4LjA3NiwyOC4wNzYsMCwwLDEsMTIuMzI1LDE1Ljc2M1pcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTQuMSwyNS43MjRsLS4yMzktLjgwN2EzMS42NTIsMzEuNjUyLDAsMCwxLDE2LjQ3MiwwbC0uMjQyLjgwN0EzMS4zOCwzMS4zOCwwLDAsMCw0LjEsMjUuNzI0WlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxwYXRoIGQ9XCJNOC41MzYsMjkuMDU1QTI1LjQzOCwyNS40MzgsMCwwLDEsOCwxMC42MDhsLjc3Ni4zMzFhMjQuNTU4LDI0LjU1OCwwLDAsMCwuNTMzLDE3Ljc4M1pcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTE1LjYsMjkuMDU1bC0uNzc2LS4zMzNhMjQuNTU5LDI0LjU1OSwwLDAsMCwuNTMxLTE3Ljc4M2wuNzc2LS4zMzFBMjUuNDQzLDI1LjQ0MywwLDAsMSwxNS42LDI5LjA1NVpcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cmVjdCB4PVwiMTEuNjU1XCIgeT1cIjkuODk4XCIgd2lkdGg9XCIwLjg4OVwiIGhlaWdodD1cIjIwLjM3MVwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPmAsXG5cdFwiQXV0b0hvdGtleVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiNTQuNjA0XCIgeTE9XCIxNjguMzg4XCIgeDI9XCI1NC42MDRcIiB5Mj1cIjE5NC44ODVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMzguNjA0IC0xNjUuNjM2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Q4ZDhkOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhM2EzYTNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCI2OC43NTZcIiB5MT1cIjIwOS4xNTJcIiB4Mj1cIjkxLjYzOFwiIHkyPVwiMjA5LjE1MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC01MC42MDEgLTE1OS40NDkpIHNjYWxlKDAuODMyIDAuODM3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Q3ZDdkN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiI2U3ZTdlN1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNkN2Q3ZDdcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hdXRvaG90a2V5PC90aXRsZT48cmVjdCB4PVwiMlwiIHk9XCIyLjgyNFwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyNi4zNTNcIiByeD1cIjMuMDg4XCIgcnk9XCIzLjA4OFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjYuODU2LDI5LjE4MUg1LjE0NEEzLjE0OCwzLjE0OCwwLDAsMSwyLDI2LjAzN1Y1Ljk2M0EzLjE0OCwzLjE0OCwwLDAsMSw1LjE0NCwyLjgxOUgyNi44NTZBMy4xNDgsMy4xNDgsMCwwLDEsMzAsNS45NjNWMjYuMDM3QTMuMTQ4LDMuMTQ4LDAsMCwxLDI2Ljg1NiwyOS4xODFaTTUuMTQ0LDIuOTYzYTMsMywwLDAsMC0zLDNoMFYyNi4wMzdhMywzLDAsMCwwLDMsM0gyNi44NTZhMywzLDAsMCwwLDMtM1Y1Ljk2M2EzLDMsMCwwLDAtMy0zWlwiIHN0eWxlPVwiZmlsbDojOGQ4ZDhkXCIvPjxyZWN0IHg9XCI0LjMxM1wiIHk9XCI0LjY0MVwiIHdpZHRoPVwiMjMuMTY5XCIgaGVpZ2h0PVwiMjEuOTRcIiByeD1cIjIuNTcxXCIgcnk9XCIyLjU3MVwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjQuOTExLDI2LjY0MUg2Ljg4NEEyLjYzNCwyLjYzNCwwLDAsMSw0LjI1MywyNC4wMVY3LjIxMkEyLjYzNCwyLjYzNCwwLDAsMSw2Ljg4NCw0LjU4MUgyNC45MTFhMi42MzQsMi42MzQsMCwwLDEsMi42MzEsMi42MzF2MTYuOEEyLjYzNCwyLjYzNCwwLDAsMSwyNC45MTEsMjYuNjQxWk02Ljg4NCw0LjdBMi41MTQsMi41MTQsMCwwLDAsNC4zNzMsNy4yMTJ2MTYuOGEyLjUxNCwyLjUxNCwwLDAsMCwyLjUxMSwyLjUxMUgyNC45MTFhMi41MTQsMi41MTQsMCwwLDAsMi41MTEtMi41MTFWNy4yMTJBMi41MTQsMi41MTQsMCwwLDAsMjQuOTExLDQuN1pcIiBzdHlsZT1cImZpbGw6I2Y4ZjhmOFwiLz48cGF0aCBkPVwiTTYuMTQ1LDIzLjlsMi4zNDMtNi4xaC44N2wyLjUsNi4xaC0uOTJsLS43MTItMS44NDhINy42NzNMNywyMy45Wk03LjksMjEuNEg5Ljk3NGwtLjYzNy0xLjdxLS4yOTEtLjc3LS40MzMtMS4yNjVBNy43NzYsNy43NzYsMCwwLDEsOC41NzYsMTkuNlpcIi8+PHBhdGggZD1cIk0xMy42MDcsMjMuOVYxNy44aC44MDd2Mi41aDMuMTcxVjE3LjhoLjgwN3Y2LjFoLS44MDdWMjEuMDIxaC0zLjE3VjIzLjlaXCIvPjxwYXRoIGQ9XCJNMjAuNDc4LDIzLjlWMTcuOGguODA3djMuMDI1bDMuMDMtMy4wMjVoMS4wOTRMMjIuODUsMjAuMjY3LDI1LjUyMiwyMy45SDI0LjQ1NmwtMi4xNzItMy4wODgtMSwuOTc0VjIzLjlaXCIvPmAsXG5cdFwiQXV0b0l0XCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjEyLjU1MVwiIHN0eWxlPVwiZmlsbDojNWQ4M2FjXCIvPjxwYXRoIGQ9XCJNMiwxNkExNCwxNCwwLDEsMSwxNiwzMCwxNCwxNCwwLDAsMSwyLDE2Wk0xNiw0Ljc4OUExMS4yMTEsMTEuMjExLDAsMSwwLDI3LjIxMSwxNiwxMS4yMTEsMTEuMjExLDAsMCwwLDE2LDQuNzg5WlwiIHN0eWxlPVwiZmlsbDojZjBmMGYwXCIvPjxwYXRoIGQ9XCJNMjQuNTc2LDIwLjE1NmwtNi40LTkuMjY0YTMuMTMxLDMuMTMxLDAsMCwwLS44MTktLjgxOSwyLjM2LDIuMzYsMCwwLDAtMi40NDIuMDIzLDMuNTQzLDMuNTQzLDAsMCwwLS44MTIuOEw3LjUzMywyMC4xNTZoMy43NTJsNC44MDgtNi44LDEuODM4LDIuNzFxLjI2LjM2OC41NDQuNzg5dC41LjdxLS4zNjgtLjAzMS0uODY1LS4wMzFoLTMuNTNsLTEuOTE0LDIuNjM0WlwiIHN0eWxlPVwiZmlsbDojZjBmMGYwXCIvPmAsXG5cdFwiQXZybyBJRExcIjogYDxwYXRoIGQ9XCJNMiwxMS42NDloLjAyNWE0Ljc4NSw0Ljc4NSwwLDAsMCwyLjkxMSwxLjMzNmMyLjMwOC4yMjEsNC41OS0uNDg1LDYuOS0uMzI2YTcuMDMsNy4wMywwLDAsMSwyLjY4LjY2NGMuNS0uMzE5Ljk4OS0uNjYyLDEuNDg2LS45ODkuNS4zMjcuOTg0LjY3NCwxLjQ4OC45ODlhNi44MzQsNi44MzQsMCwwLDEsMi40ODctLjY1YzEuOTk1LS4xNjcsMy45NjcuMzA4LDUuOTU3LjM1OWE1LjIsNS4yLDAsMCwwLDQuMDI2LTEuMzgzSDMwdi4yMzZjLS4xNzguNzQ3LS44ODIsMS4xNzYtMS4yODQsMS43OWE0Ljk0OCw0Ljk0OCwwLDAsMS0uNzMxLjc5MSwzLjgsMy44LDAsMCwxLS41NjUuNzQ4LDIuNTUxLDIuNTUxLDAsMCwwLS41OTQuNTQxLDIuMTgxLDIuMTgxLDAsMCwxLS45Ni43NDksMS4xNDksMS4xNDksMCwwLDEtLjU2NS41Niw2LjY5LDYuNjksMCwwLDEtMS45NC4xODRjLjcyMy41NDgsMS41LDEuMDIsMi4yNDYsMS41MzUuNzgyLjUxMywxLjU0LDEuMDYxLDIuMzI2LDEuNTY4SDQuMDg5YzEuNS0xLjA1OCwzLjA1Ny0yLjAzNSw0LjU1LTMuMUE2LjgsNi44LDAsMCwxLDYuNywxNy4wNjVhMS4xNTUsMS4xNTUsMCwwLDEtLjU2OS0uNTYyLDIuMjgsMi4yOCwwLDAsMS0xLjA0My0uODZjLS4yNjgtLjMtLjY3LS40NjYtLjg1My0uODQzLS4yLS40MzYtLjY1OC0uNjY0LS45MDktMS4wNjctLjQtLjY0Mi0xLjEzNy0xLjA3Ni0xLjMyNy0xLjg0NnYtLjIzOW0yLjkzOSw4LjUyOHExMS4wNTkuMDA5LDIyLjEyLDBjLTMuNjY4LTIuNTEtNy4zNzYtNC45NjEtMTEuMDU5LTcuNDQ4LTMuNjg0LDIuNDg3LTcuMzkyLDQuOTQxLTExLjA2MSw3LjQ0OU00LjE2NywxMy4yYTcuODQyLDcuODQyLDAsMCwwLDIuODQuNzMxYzEuMTYzLjEyMywyLjM0MS4wNDYsMy41LjIzNmEyLjcsMi43LDAsMCwxLDEuNjA3Ljc4MWMuNjU5LS40NTIsMS4zMzItLjg4NSwxLjk4Ny0xLjM0MmwuMDEyLS4wNjRhNS4yOTQsNS4yOTQsMCwwLDAtMS44NzctLjVjLTIuNjkzLS4zMTYtNS4zODcuNzEyLTguMDY3LjE2bTEzLjY1Mi4zNTZjLjY4OC40NjYsMS4zODIuOTI1LDIuMDcsMS4zOTJhMi40ODgsMi40ODgsMCwwLDEsMS4zLS43MTksMTkuODU5LDE5Ljg1OSwwLDAsMSwzLjEzNy0uMjQ4LDkuMTA1LDkuMTA1LDAsMCwwLDMuNS0uNzY4Yy0yLjU4Mi41LTUuMTY4LS40MDktNy43NjEtLjJhNi4yNTYsNi4yNTYsMCwwLDAtMi4yNDUuNTQ1TTMuMzM5LDEzLjE2NmE3LjI2NCw3LjI2NCwwLDAsMCwyLjcyMywxLjNjLS4yMTktLjE1My0uMzc2LS40MTYtLjY1Ny0uNDU3YTcuOTU1LDcuOTU1LDAsMCwxLTIuMDY2LS44NDRtMjMuMzMzLjgyNWMtLjMxNy4wMjMtLjUuMy0uNzMzLjQ3M2E3LjIzMiw3LjIzMiwwLDAsMCwyLjcyNC0xLjMsOC4xMDYsOC4xMDYsMCwwLDEtMS45OTEuODI0bS0yMi41LjEyNmE1LjEyMSw1LjEyMSwwLDAsMCwyLjU4OSwxLjFjLS4xMTUtLjEyOC0uMjA5LS4zMTItLjQtLjMzNGExMC40NTksMTAuNDU5LDAsMCwxLTIuMTktLjc3MW0yMS40NjcuNzY4Yy0uMTg5LjAyMi0uMjg0LjItLjM5NC4zMzZhNS4xODcsNS4xODcsMCwwLDAsMi42LTEuMTA5LDEwLjQ3NywxMC40NzcsMCwwLDEtMi4yLjc3M002LjMsMTQuMjA2YTMuMjQzLDMuMjQzLDAsMCwwLDIuNDQ1LjM1MmMtLjEtLjA4LS4xODEtLjIxNS0uMzI1LS4yMDZxLTEuMDYzLS4wNC0yLjEyLS4xNDZtMTcuMzUxLjEzOWMtLjE3MS0uMDE5LS4yOTEuMS0uNDA2LjIxMWEzLjEwOCwzLjEwOCwwLDAsMCwyLjQyLS4zNTJxLTEsLjExMi0yLjAxNC4xNDFtLTE2Ljc0MS41MzhhMy42NjksMy42NjksMCwwLDAsMi40ODIuMzE5LDEuMTA3LDEuMTA3LDAsMCwwLS4yODEtLjM3Niw1LjE1OCw1LjE1OCwwLDAsMS0yLjIuMDU3bTE1LjcuMzE4YTMuNjc4LDMuNjc4LDAsMCwwLDIuNDg3LS4zMTksNS4xMjcsNS4xMjcsMCwwLDEtMi4yLS4wNTcsMS4xLDEuMSwwLDAsMC0uMjgzLjM3Nk00LjgzOCwxNC45NzdhNC4xMSw0LjExLDAsMCwwLDIuMTMzLjg0MWMtLjA1Ny0uMDg0LS4xMTQtLjE2OC0uMTcxLS4yNTRhNi45NDgsNi45NDgsMCwwLDEtMS45NjItLjU4N20yMC4zNjEuNTg5LS4xNjkuMjUzYTQuMTQxLDQuMTQxLDAsMCwwLDIuMTM2LS44NDMsNy4wMTUsNy4wMTUsMCwwLDEtMS45NjcuNTltLTE4LjEtLjEzYS44LjgsMCwwLDAsLjUzNC4zMSw3LjU3OSw3LjU3OSwwLDAsMCwyLjAzNy0uMDczYy0uMDA5LS4wMy0uMDI3LS4wOS0uMDM2LS4xMi0uNDU3LS4wNTEtLjkyMy4wNzQtMS4zODUuMDQ3QTcuMDU0LDcuMDU0LDAsMCwxLDcuMSwxNS40MzdtMTYuMTkxLjE1MWE2LjI4LDYuMjgsMCwwLDAtLjkxMy0uMDQxbC0uMDQyLjEyNmE3LjQxNiw3LjQxNiwwLDAsMCwyLjA0NS4wNzIuNy43LDAsMCwwLC41MjItLjMzMSw0LjM0OSw0LjM0OSwwLDAsMS0xLjYxMy4xNzRtLTE3LjUyLjMyN2EzLjEyLDMuMTIsMCwwLDAsMS43NTQuNDgxYy0uMDY1LS4yNC0uMzM0LS4yLS41MjMtLjIzNi0uNDE5LS4wNDEtLjgxNi0uMTg2LTEuMjMxLS4yNDZNMjUsMTYuMTYzYy0uMTg4LjA0MS0uNDUyLS4wMDYtLjUyMS4yMzJhMi44NzQsMi44NzQsMCwwLDAsMS43MzItLjQ4MmMtLjQuMDc5LS44LjIwNy0xLjIxMS4yNTFNNy43MzUsMTYuMTE5YTEsMSwwLDAsMCwuNzg5LjI3NSw5LjMzMSw5LjMzMSwwLDAsMCwxLjMyNS0uMTU4Yy0uMDIxLS4wOTMtLjAwOS0uMjc4LS4xNjMtLjIyOGE5Ljk4Myw5Ljk4MywwLDAsMS0xLjk1MS4xMTFtMTQuNDE1LjExOGE4LjE1Nyw4LjE1NywwLDAsMCwxLjQxMi4xNTQuOS45LDAsMCwwLC43LS4yNzQsOS4zODcsOS4zODcsMCwwLDEtMS45MzQtLjExYy0uMTYtLjA2LS4xNTUuMTMyLS4xNzYuMjNtLTE1LjQzOC40NGExLjk2MiwxLjk2MiwwLDAsMCwxLjMuMTgxbC0uMDkxLS4xMjZjLS40LjAwNi0uODA3LS4wMjItMS4yMDktLjA1NW0xLjYxNS4wNDNhMS4wMywxLjAzLDAsMCwwLC43MTYuMjk0Yy4xNzktLjEyNS4zNTgtLjI1Mi41MzEtLjM4NmE1Ljc0Nyw1Ljc0NywwLDAsMS0xLjI0Ny4wOTJtMTQuMS0uMDkzYy4yMzcuMTQ0LjQ2Ny40NzcuNzgyLjM0NS4xNjYtLjA1LjM2OS0uMDg5LjQ2MS0uMjU3YTUuMjcxLDUuMjcxLDAsMCwxLTEuMjQzLS4wODhtMS43MTMuMjYzYTIuMDA3LDIuMDA3LDAsMCwwLDEuMTQ1LS4yMTMsMTAuMjY5LDEwLjI2OSwwLDAsMS0xLjE0NC4wNDlDMjMuOTkzLDE2LjY2NywyMy45ODQsMTYuOTYxLDI0LjEzOCwxNi44OVpcIiBzdHlsZT1cImZpbGw6IzAwNDBmZlwiLz48cGF0aCBkPVwiTTcuNDM1LDE4Ljg4NlExMS43MTksMTYuMDEzLDE2LDEzLjEzN2w5LjMsNi4yNDRjLjIyMS4xNDcuNDM5LjMuNjQ4LjQ2NHEtOS45NDctLjAxLTE5Ljg5NCwwYy40NDMtLjM0NC45Mi0uNjQsMS4zODMtLjk1OG04LjI1NS01LjA2NmMtLjQ1NywxLjg1OS0uOTA3LDMuNzE5LTEuMzc1LDUuNTc2LjUyLjAxNSwxLjA0MS4wMTIsMS41NjIsMHEtLjAxMy0yLjg0MSwwLTUuNjhsLS4xODQuMW0tMi41LDEuNjg0Yy4yNTUuODU5LjQ4LDEuNzI4Ljc2MywyLjU3OS4yODktMS4yMzguNi0yLjQ3MS45LTMuNzA3LS41NS4zODYtMS4xMTQuNzUtMS42NjgsMS4xMjltMy4zNTctLjg3M2MtLjAwNi42ODIsMCwxLjM2NCwwLDIuMDQ2YTIuMSwyLjEsMCwwLDAsMS4wMTQtLjI1NGMuMTkzLS4xNDUuMS0uNDA5LjAxMS0uNTg2YTQuMjc2LDQuMjc2LDAsMCwwLTEuMDI0LTEuMjA3TTE4LjMyNywxNi40Yy0uMS41NDQtLjY2Ni43OTItMS4xNTEuOS40NzQuNy45NiwxLjM4OSwxLjQxNiwyLjEuNDY5LjAyNC45NC4wMTEsMS40MTEuMDA5YTEuNjMxLDEuNjMxLDAsMCwxLC4xNi0yLjk3NmMtLjgzNC0uNi0xLjctMS4xNC0yLjU0NC0xLjcyNy4zNDkuNS44MzEsMS4wMzcuNzA4LDEuN20tNi44MjIuMjQyYy4yNjcuOTIxLjUyOSwxLjg0NS43OTQsMi43NjcuNDQsMCwuODguMDA4LDEuMzIxLS4wMDctLjMzOS0xLjE2MS0uNjg1LTIuMzE5LTEuMDA5LTMuNDg0LS4zODUuMjE1LS43MzcuNDgyLTEuMS43MjRtOC44LjQ1MmEuOTQ2Ljk0NiwwLDAsMCwuMDU3LDEuN2MuNTMzLjA5Ljg1NS0uNTMzLjc3OS0uOTktLjAyNi0uNC0uNC0uODYxLS44MzYtLjcxNE03LjQsMTkuNHExLjMyNC4wMTgsMi42NSwwYy4yNTYtLjcuNDEzLTEuNDY4LjYyOS0yLjItMS4xLjcxNS0yLjE4NywxLjQ2MS0zLjI3OSwyLjE5NG0xNC4zNzctMS45YTEuNjE2LDEuNjE2LDAsMCwxLS44NzYsMS45YzEuMjMzLjAxOCwyLjQ2NS4wMTUsMy43LDAtLjkzNC0uNjQ0LTEuODgzLTEuMjY2LTIuODIyLTEuOW0tNS4yMjMuMTE1Yy0uMDEuNiwwLDEuMiwwLDEuOC40MTUsMCwuODMxLDAsMS4yNDgsMC0uNDE5LS42LS44LTEuMjE5LTEuMjQzLTEuNzk0bS01LjU0Ni45NDFoLjM0NmMtLjA1NS0uMTg3LS4xMDgtLjM3Ni0uMTY2LS41NjJhMy43NTEsMy43NTEsMCwwLDAtLjE4MS41NjNtLS4xOC42OTNjLS4wMTUuMDQtLjA0NS4xMTktLjA2MS4xNTkuMjc1LS4wMjYuNTkuMDcxLjg0Mi0uMDVDMTEuNDUzLDE5LjExMiwxMS4wNzQsMTkuMjc1LDEwLjgyNiwxOS4yNDRaXCIgc3R5bGU9XCJmaWxsOiMwMDQwZmZcIi8+YCxcblx0XCJBV0tcIjogYDxwYXRoIGQ9XCJNMjYuOTI1LDI3LjczN0MyMy40MzEsMjYuMSwyNC42MDYsMTQuNTg4LDEzLjgxLDguMzE5LDE0LjA4OSw1Ljc5MiwxNC43NTgtLjUsNy45NjEsMyw2Ljg0NSwzLjEyOCw0LjkwNywyLjMzMSw0LDQuODMxdi4xMTRDMTYuOTE4LDMuOS4wODgsMTAuNTMsMTYuNzUsMjUuODQ0Yy0uMzczLjE3Ni0uNjc0LS4zMjUtMS45Ny4xbC0uMDE0LjAxNmMtMS43MjIsMS4xMzUsMS45MzMuNzY4LDQuMTU0LDEuMjc0LTEuNjExLjQxNy01LjU5NC0xLjEzNy02LjMsMS42NDUuODc3LS4zNywxLC4zMjksMS4wNzYsMS4wNzdBMjYuMjc3LDI2LjI3NywwLDAsMSwyMi4zNzksMjcuNWMxLjEuMjg1LDQuMTE4LDIuMDQ5LDUuMTIyLjU1MUMyNy41MTksMjcuOTMsMjcuMjIxLDI3Ljg3NiwyNi45MjUsMjcuNzM3WlwiLz48cGF0aCBkPVwiTTEwLjQ0NiwyLjk3bC0uMTIxLjA4OGEuMjY2LjI2NiwwLDAsMC0uMDExLjM3Ny4yMTEuMjExLDAsMCwwLC4wNDUuMDM5LjQxNi40MTYsMCwwLDAsLjUyMS0uMDYzLjI2My4yNjMsMCwwLDAsLjA3OC0uMzY0bC0uMDEtLjAxNGMtLjA3Ni0uMTQzLS4xNjMtLjE3Ny0uMzQtLjEyN0MxMC41NTMsMi45MjUsMTAuNSwyLjk0NiwxMC40NDYsMi45N1pcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE4LDI2LjM2OGMuMTUxLS4wNDEuMzE4LS44MjguMTc0LS45NDlBNi4yOSw2LjI5LDAsMCwwLDE5LjQsMjYuNDg1YzEuMDIzLDEuMDA3LDIuNjY1LS4wMzIsMy40ODIuNzU5YTEwLjczNiwxMC43MzYsMCwwLDAsMS45NTcsMS4wMjdjLS4xMzktLjE1MS0uMDI5LS4xNDQuMTc5LS4wMTEtLjEzLS4zMzgtNC40MjEtNS4xNTYtNS4yMjYtNy4xOC4wOTUuMjkzLTEuNjA4LS44MjQtMi4wNzYtMS40MTktLjAyOC4wNTYtLjA5Mi0uMjUxLS4yMjgtLjQzNC0uMDQxLjA1LS4yLS40MzMtLjMtLjcyOC4wMzcuMTg3LS40NjItLjUtLjY1LS44MTgtLjA1Ni4wOS0uNzE5LjM3Mi0uODA5LjI4Ni0uNzI5LS40LDIuNTI5LDQuMDY2LjEyMiwyLjU1OS42NzYuNjgzLjYxNC40LTEuMDk1LS44NTIuMzY0LjQ1Mi0uMzE3LjMxMi0xLjU1My0xLjUyMy4xODYuMi0uMjE4LS41NzYtLjIxOC0uNTc2YTIuNjkyLDIuNjkyLDAsMCwwLS4xMzMtLjQ4M2MtLjA1Ni0uMzItLjI0MS0uNzIzLS4xMi0uNjUtMS40NDQtMS41NTYsMS4zMTQtMy4zLjcxOS0zLjY3MS0uMTExLDAtLjAyNy4wMTctLjE1MS0uMTA2LS4wOSwwLS40NjguMjg1LS41ODctLjIzNC4wMDYuMTMyLS4wMzQuNDA2LS4xNTMtLjEtLjAyMy4wNTIuMDE1LjEtLjAzLjE0NS0uMjI1LS41NzYtLjc3Mi0xLjYtMS4yMTctMi41MzktLjE1OC4xNTUtLjEzOC0uMDc2LS4xOTMtMS4wOTIuMDUzLjE0NC0uMjI1LDEuOTIxLS4yLjEzLS4xMjguMDA3LjEwOCwxLjI1OC0uMzQzLjIxLS4xNDEuMDUtLjMwNS0uMzYzLS4zNDEtMS4xNzgtLjA0OC42MjMtLjI5LjE4Ny0uNS0uOTIzLS4yNjkuNTA4LTEuNiwxLjc0My0uMzMzLDcuNjIyLS4wNTMtLjMxMy4xODYuMzQxLjc1NSwyLjQyNy4wMjEtLjAzOS0uMDIyLS4wODMuMDM4LS4xMzFhNi4zMjQsNi4zMjQsMCwwLDAsLjY3NywxLjM2NWMuNTQ0LjY1OC45OTUsMi4wNzQuOCwxLjI3N2ExMS44NjcsMTEuODY3LDAsMCwwLDIuNTU0LDMuMjQ5QTM0LjQyMywzNC40MjMsMCwwLDAsMTgsMjYuMzY4WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTAuODIzLDIuNTU3YS4yOTEuMjkxLDAsMCwwLS4wNTEtLjAyMmMtLjIyMS0uMDQtLjQyOS4xNTMtLjY1NC4wMzItLjE0NS4wODUtLjI1Ny0uMDM2LS4zNzUtLjA3M2EuMjI0LjIyNCwwLDAsMC0uMi4wMTQsNS44MjMsNS44MjMsMCwwLDAtLjgxNC41ODIsMS4wMzcsMS4wMzcsMCwwLDAtLjI3My40NDljLS4wMjEuMDQ4LS4wMzcuMTI2LjA1LjEzN2EyLjMsMi4zLDAsMCwwLC42ODIuMDQ1Yy4xNzctLjAyOC4yNzctLjE1Mi40MTgtLjIyMWExLjIsMS4yLDAsMCwwLC41OTItLjY4Yy4wNjQtLjE3NS4xNjEtLjE2Ny4yOC0uMlMxMC43LDIuNjIsMTAuODIzLDIuNTU3WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTAuMzI1LDMuMDU4bC4xMjEtLjA4OGEuMTE3LjExNywwLDAsMSwuMTIuMDY0Yy4wNDQuMS4xMDYuMTEyLjE5My4wNDcuMDMzLS4wMjUuMDcxLS4wNTguMTE4LS4wMjdhLjExOS4xMTksMCwwLDEsLjA0MS4xMjguMjc2LjI3NiwwLDAsMS0uMTg3LjI0OC4yNjYuMjY2LDAsMCwxLS4zLS4wM0MxMC4zNDEsMy4zMDgsMTAuMjYsMy4yLDEwLjMyNSwzLjA1OFpcIi8+YCxcblx0XCJCYXRjaFwiOiBgPHBhdGggZD1cIk0yOS40LDI3LjZIMi41VjQuNUgyOS40Wm0tMjUuOS0xSDI4LjRWNS41SDMuNVpcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjA3NyAxOS4zMTYgNS41MjIgMTguNDg0IDEwLjM2NiAxNS4yNTUgNS40NzkgMTEuMTg0IDYuMTIgMTAuNDE2IDEyLjAzNSAxNS4zNDQgNi4wNzcgMTkuMzE2XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjEyLjdcIiB5PVwiMTguMlwiIHdpZHRoPVwiNy44XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIyLjVcIiB5PVwiNS41XCIgd2lkdGg9XCIyNi45XCIgaGVpZ2h0PVwiMS45XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+YCxcblx0XCJDI1wiOiBgPHRpdGxlPmZpbGVfdHlwZV9jc2hhcnA8L3RpdGxlPjxwYXRoIGQ9XCJNMTkuNzkyLDcuMDcxaDIuNTUzVjkuNjI0SDI0LjlWNy4wNzFoMi41NTJWOS42MjRIMzB2Mi41NTJoLTIuNTV2Mi41NTFIMzBWMTcuMjhIMjcuNDQ5djIuNTUySDI0Ljl2LTIuNTVsLTIuNTUsMCwwLDIuNTUySDE5Ljc5M3YtMi41NWwtMi41NTMsMFYxNC43MjVoMi41NTNWMTIuMTc5SDE3LjI0VjkuNjIyaDIuNTU0Wm0yLjU1Myw3LjY1OEgyNC45VjEyLjE3NkgyMi4zNDVaXCIgc3R5bGU9XCJmaWxsOiMzNjg4MzJcIi8+PHBhdGggZD1cIk0xNC42ODksMjQuMDEzYTEwLjIsMTAuMiwwLDAsMS00LjY1My45MTUsNy42LDcuNiwwLDAsMS01Ljg5LTIuMzM2QTguODM5LDguODM5LDAsMCwxLDIsMTYuMzY3LDkuNDM2LDkuNDM2LDAsMCwxLDQuNDEyLDkuNjQ4YTguMTgxLDguMTgxLDAsMCwxLDYuMjU5LTIuNTc3LDExLjEsMTEuMSwwLDAsMSw0LjAxOC42Mzh2My43NDVhNi44MSw2LjgxLDAsMCwwLTMuNzIzLTEuMDM2LDQuNzkzLDQuNzkzLDAsMCwwLTMuNywxLjUyOSw1Ljg3OSw1Ljg3OSwwLDAsMC0xLjQwNyw0LjE0Miw1Ljc3NCw1Ljc3NCwwLDAsMCwxLjMyOCwzLjk5Miw0LjU1MSw0LjU1MSwwLDAsMCwzLjU3NSwxLjQ4Nyw3LjI4OCw3LjI4OCwwLDAsMCwzLjkyNy0xLjEwOFpcIiBzdHlsZT1cImZpbGw6IzM2ODgzMlwiLz5gLFxuXHRcIkNcIjogYDx0aXRsZT5maWxlX3R5cGVfYzwvdGl0bGU+PHBhdGggZD1cIk0xMC42NzYsMTUuOTczYTEwLjA1MiwxMC4wNTIsMCwwLDAsMS4xNzUsNS4xNTEsNS40NDYsNS40NDYsMCwwLDAsNi4zMDYsMi40MDgsNC4yODQsNC4yODQsMCwwLDAsMy4wOS0zLjZjLjEwNy0uNi4xMDktLjYxLjEwOS0uNjEsMS43MzcuMjUxLDQuNTM3LjY1OCw2LjI3NC45MDZsLS4xMS40NGExMS4yNTYsMTEuMjU2LDAsMCwxLTIuNyw1LjM5LDkuNDM5LDkuNDM5LDAsMCwxLTUuMzY2LDIuNjg4LDE0LjYxLDE0LjYxLDAsMCwxLTguMjc3LS44MTlBMTAuMTUxLDEwLjE1MSwwLDAsMSw1LjQsMjEuNjg3YTE2LjIyNSwxNi4yMjUsMCwwLDEsLjAxOS0xMS40NSwxMC41MzgsMTAuNTM4LDAsMCwxLDguOTYzLTcuMDU0LDEzLjM1MywxMy4zNTMsMCwwLDEsNi42NjYuNTU1LDkuNTcxLDkuNTcxLDAsMCwxLDYuMTY3LDYuOWMuMDk0LjM1Mi4xMTQuNDE3LjExNC40MTctMS45MzIuMzUxLTQuMzE5LjgtNi4yMzgsMS4yMTUtLjM2Mi0xLjkxNS0xLjI2NS0zLjQyOC0zLjItMy45YTUuMjYzLDUuMjYzLDAsMCwwLTYuNjE2LDMuNTcsMTAuNDksMTAuNDksMCwwLDAtLjM4NSwxLjQzOUExMi4zMSwxMi4zMSwwLDAsMCwxMC42NzYsMTUuOTczWlwiIHN0eWxlPVwiZmlsbDojMDA1ZjkxXCIvPmAsXG5cdFwiQysrXCI6IGA8dGl0bGU+ZmlsZV90eXBlX2NwcDwvdGl0bGU+PHBhdGggZD1cIk0xNC43NDIsMjQuMDQ3YTEwLjI0MiwxMC4yNDIsMCwwLDEtNC42NzMuOTE5QTcuNjI4LDcuNjI4LDAsMCwxLDQuMTU1LDIyLjYyLDguODc2LDguODc2LDAsMCwxLDIsMTYuMzY5LDkuNDc2LDkuNDc2LDAsMCwxLDQuNDIyLDkuNjIxYTguMjE2LDguMjE2LDAsMCwxLDYuMjg1LTIuNTg4LDExLjE1MSwxMS4xNTEsMCwwLDEsNC4wMzUuNjQxdjMuNzYxQTYuODM5LDYuODM5LDAsMCwwLDExLDEwLjM5NSw0LjgxMyw0LjgxMywwLDAsMCw3LjI4OCwxMS45M2E1LjksNS45LDAsMCwwLTEuNDEzLDQuMTU5QTUuOCw1LjgsMCwwLDAsNy4yMDksMjAuMWE0LjU3LDQuNTcsMCwwLDAsMy41OSwxLjQ5Myw3LjMxOSw3LjMxOSwwLDAsMCwzLjk0My0xLjExM1pcIiBzdHlsZT1cImZpbGw6Izk4NGM5M1wiLz48cG9seWdvbiBwb2ludHM9XCIxNy4xMTIgMTQuODI5IDE3LjExMiAxMi40ODUgMTkuNDU2IDEyLjQ4NSAxOS40NTYgMTQuODI5IDIxLjggMTQuODI5IDIxLjggMTcuMTcyIDE5LjQ1NiAxNy4xNzIgMTkuNDU2IDE5LjUxNSAxNy4xMTIgMTkuNTE1IDE3LjExMiAxNy4xNzIgMTQuNzcgMTcuMTcyIDE0Ljc3IDE0LjgyOCAxNy4xMTIgMTQuODI5XCIgc3R5bGU9XCJmaWxsOiM5ODRjOTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjUuMzEzIDE0LjgyOSAyNS4zMTMgMTIuNDg1IDI3LjY1NyAxMi40ODUgMjcuNjU3IDE0LjgyOSAzMCAxNC44MjkgMzAgMTcuMTcyIDI3LjY1NyAxNy4xNzIgMjcuNjU3IDE5LjUxNSAyNS4zMTMgMTkuNTE1IDI1LjMxMyAxNy4xNzIgMjIuOTcxIDE3LjE3MiAyMi45NzEgMTQuODI4IDI1LjMxMyAxNC44MjlcIiBzdHlsZT1cImZpbGw6Izk4NGM5M1wiLz5gLFxuXHRcIkNsb2p1cmVcIjogYDxwYXRoIGQ9XCJNMTYsMkExNCwxNCwwLDEsMCwzMCwxNiwxNC4wMTYsMTQuMDE2LDAsMCwwLDE2LDJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE1LjQ4OCwxNi4yNTJjLS4xMjYuMjczLS4yNjUuNTc5LS40MDguOUEyMi45NjMsMjIuOTYzLDAsMCwwLDEzLjgsMjAuNjA1YTUuMTgxLDUuMTgxLDAsMCwwLS4xMTksMS4xNTVjMCwuMTc0LjAwOS4zNTYuMDI0LjU0MmE2LjY1OCw2LjY1OCwwLDAsMCw0LjQxMy4wNjcsMy45NjYsMy45NjYsMCwwLDEtLjQ0LS40NjZjLS45LTEuMTQ2LTEuNC0yLjgyNy0yLjE5NC01LjY1MlwiIHN0eWxlPVwiZmlsbDojOTFkYzQ3XCIvPjxwYXRoIGQ9XCJNMTIuMTY5LDEwLjU1NmE2LjY3Nyw2LjY3NywwLDAsMC0uMDc3LDEwLjg4MWMuNDExLTEuNzEsMS40NC0zLjI3NiwyLjk4My02LjQxNS0uMDkyLS4yNTItLjItLjUyNy0uMzEzLS44MTdhMTAuMjA3LDEwLjIwNywwLDAsMC0xLjYtMi44ODIsNC40MzksNC40MzksMCwwLDAtMS0uNzY3XCIgc3R5bGU9XCJmaWxsOiM5MWRjNDdcIi8+PHBhdGggZD1cIk0yMS44NCwyMy43YTEwLjg3NywxMC44NzcsMCwwLDEtMi4yNTctLjQ3MUE4LjAzNiw4LjAzNiwwLDAsMSwxMC43MTYsOS45ODJhNS45LDUuOSwwLDAsMC0xLjQtLjE3MWMtMi4zNTguMDIyLTQuODQ4LDEuMzI3LTUuODg0LDQuODUyYTYuNjA2LDYuNjA2LDAsMCwwLS4wNzQsMS4zNjEsMTIuNjQ5LDEyLjY0OSwwLDAsMCwyMyw3LjI3NCwxNC43MzcsMTQuNzM3LDAsMCwxLTMuNDQ4LjQ1OUE4Ljg4MSw4Ljg4MSwwLDAsMSwyMS44NCwyMy43XCIgc3R5bGU9XCJmaWxsOiM2M2IxMzJcIi8+PHBhdGggZD1cIk0xOS40NjMsMjEuMjQ0YTMuNTMsMy41MywwLDAsMCwuNS4xNzJBNi42OSw2LjY5LDAsMCwwLDIyLjcsMTYuMDIzaDBhNi42ODEsNi42ODEsMCwwLDAtOC43OS02LjM0OGMxLjM1OCwxLjU0OCwyLjAxMSwzLjc2MSwyLjY0Myw2LjE4MXYwcy4yLjY3My41NDcsMS41NjJhMTUuNDM0LDE1LjQzNCwwLDAsMCwxLjM2MywyLjc4OCwyLjkyNCwyLjkyNCwwLDAsMCwxLDEuMDM2XCIgc3R5bGU9XCJmaWxsOiM5MGI0ZmVcIi8+PHBhdGggZD1cIk0xNi4wMTMsMy4zNzJBMTIuNjMyLDEyLjYzMiwwLDAsMCw1LjczMSw4LjY1NmE2LjQyNSw2LjQyNSwwLDAsMSwzLjQ4LTEuMDA5LDYuOCw2LjgsMCwwLDEsMy4xODIuNzcyYy4xMzQuMDc3LjI2MS4xNi4zODYuMjQ2YTguMDM4LDguMDM4LDAsMCwxLDExLjI3Myw3LjM1OGgwYTguMDEzLDguMDEzLDAsMCwxLTIuMzkxLDUuNzE5LDkuODcxLDkuODcxLDAsMCwwLDEuMTQzLjA2NCw2LjI0LDYuMjQsMCwwLDAsNC4wNTEtMS4yNjMsNS4zNDgsNS4zNDgsMCwwLDAsMS43LTIuOTA2QTEyLjYzMiwxMi42MzIsMCwwLDAsMTYuMDEzLDMuMzcyXCIgc3R5bGU9XCJmaWxsOiM1ODgxZDhcIi8+YCxcblx0XCJDTWFrZVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiOS45NTVcIiB5MT1cIjkuMDk2XCIgeDI9XCIxNi42OFwiIHkyPVwiMjMuMzI0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzEwMTFhMVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2OTY5ZTFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIxNi4yMzFcIiB5MT1cIjE5LjY1NVwiIHgyPVwiMjUuNjE4XCIgeTI9XCIzLjc4MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNiNDBlMGVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmY1OTU5XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiMjEuNjYzXCIgeTE9XCI0LjgyM1wiIHgyPVwiOC4zODFcIiB5Mj1cIjUuOTM4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzAxYTMwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwMWRmMDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCIxNC42NDNcIiB5MT1cIjguMzY4XCIgeDI9XCIxNC40NzJcIiB5Mj1cIjE0LjE0NVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4NDg0ODRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDJkMmQyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfY21ha2U8L3RpdGxlPjxwYXRoIGQ9XCJNMTcuMjU3LDE2LjkxOSwyLjI0NiwyOS43NDksMTUuOTk0LDIuMjgzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMi4yNjIsMjkuNzY4bC0uMDM4LS4wM0wxNi4wMTIsMi4xOTNsLjAwOC4wODhMMTcuMjgzLDE2LjkzbC0uMDEuMDA4Wk0xNS45NzcsMi4zNzQsMi4zMjQsMjkuNjQ5LDE3LjIzLDE2LjkwOFpcIi8+PHBhdGggZD1cIk0xNy45NTIsMjQuOTMxLDE2LDIuMjgsMjkuNzY3LDI5Ljc1MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTI5LjgxOCwyOS44bC0uMDYxLS4wMjVMMTcuOTI5LDI0Ljk0OGwwLS4wMTVMMTUuOTc1LDIuMjgybC4wNDctLjAxM1pNMTcuOTc2LDI0LjkxMywyOS43MTUsMjkuNywxNi4wMzYsMi40MDhaXCIvPjxwYXRoIGQ9XCJNMTEuMTYsMjIuMDk0bDE4LjYyMSw3LjY1NEgyLjI1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMjkuNzgxLDI5Ljc3M0gyLjE4M2wuMDUxLS4wNDQsOC45MjEtNy42NjUuMDE0LjAwNiwxOC42MjIsNy42NTVabS0yNy40NjQtLjA1SDI5LjY1NGwtMTguNDg5LTcuNlpcIi8+PHBhdGggZD1cIk0xMS4xODksMjIuMTEybDYuMDU5LTUuMTY4Ljg0Myw3Ljk4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTguMTQ5LDI1bC0uMDc3LS4wMzItNi45NzgtMi44NDIsNi4xOTQtNS4yODMuMDEuMDk0Wm0tNi44NjUtMi45LDYuNzQ4LDIuNzQ5LS44MjQtNy44WlwiLz48cGF0aCBkPVwiTTI5LjcsMjkuOTExSDIuMjg1YS4yMjEuMjIxLDAsMCwxLS4xODItLjA4OC4yMjIuMjIyLDAsMCwxLC4wMjItLjJMMTUuODY0LDIuMTg3YS4xNjkuMTY5LDAsMCwxLC4xNC0uMWgwYS4xNTQuMTU0LDAsMCwxLC4xMy4wODVMMjkuODY3LDI5LjYwN2EuMjM4LjIzOCwwLDAsMSwuMDIuMjI2QS4yMTEuMjExLDAsMCwxLDI5LjcsMjkuOTExWm0tMjcuNDY4LS4xNmEuNDg0LjQ4NCwwLDAsMCwuMDU3LjAxMWgyNy40bC4wNzMtLjAwOWEuMjIxLjIyMSwwLDAsMC0uMDI4LS4wNzdMMTYsMi4yNDgsMTYsMi4yNiwyLjI2MSwyOS42ODRhLjI3OS4yNzksMCwwLDAtLjAyNS4wNjdaXCIvPmAsXG5cdFwiQ09CT0xcIjogYDxwYXRoIGQ9XCJNMjIuMjQsNi41NDZhNC40NDksNC40NDksMCwwLDAsMS43NjUtMi41MjIsNC42MzYsNC42MzYsMCwwLDEtLjAxOCwyLjE1N2MtLjIyMy41ODItLjU2NywxLjEwNy0uODM0LDEuNjY5YTIxLjc3MiwyMS43NzIsMCwwLDEsNC41NTktMi45MzhDMjcuMjMsNi40LDI1Ljg5MSw3LjMsMjQuOTA3LDguNDQyYy4xOS40MDkuMjguOTg5LjgsMS4xMDlhNS4wMzYsNS4wMzYsMCwwLDAsMi41LjE1NWMuOTEyLS4zMTMsMS4zNDUtMS4yNTgsMS44LTIuMDM1VjkuMTRhMTUuNzM4LDE1LjczOCwwLDAsMS0uNTgyLDEuNzQ4Yy4yLjU0Ny40MDksMS4wOTIuNTgyLDEuNjQ3di45NTJjLS4yMTQuMzY4LS40NDIuNzI2LS42NjMsMS4wODlhNS4yOTMsNS4yOTMsMCwwLDAtMS4wNjgtMS4xNjIsNC4wMyw0LjAzLDAsMCwwLTEuODUxLS4xMjUsMy4yMTIsMy4yMTIsMCwwLDAsMi40MTMsMS40N2MtLjM1OS4zNy0uNjYzLjkxMi0xLjIzLjk2OS0xLjY0MS4yNDctMy4yMDctLjUwNS00LjgzOS0uNS0uMjgyLjAyLS43MDcuMDI0LS43ODUuMzcyLDAsLjczNS4yMTcsMS40NTMuMTksMi4xODgtLjA1OSwxLjI1OC0uNTEyLDIuNDY2LS41MjksMy43MjZhMTMuNzg1LDEzLjc4NSwwLDAsMCwuODM4LDMuNDQ4Yy0uNTIzLS4wNzctMS4wNDQtLjE2Ni0xLjU2Mi0uMjYtLjEuMjA4LS4xODQuNDItLjI2LjYzNEE0LjUxNCw0LjUxNCwwLDAsMCwyMS44LDI2LjUzMWMtLjA2MS4xMjctLjE4Mi4zODEtLjI0MS41MDhsLS41NzMuMTM4Yy0uMTMxLjI0Ny0uMjYzLjQ5Mi0uNC43MzlhNC40MjEsNC40MjEsMCwwLDAtMi4yLjA2MWMtLjQ2Ni0uMTg2LS45MjgtLjM3Ni0xLjM4OS0uNTY3YTUuOTM5LDUuOTM5LDAsMCwwLC40MDctMi4zMTVjLS4yODItLjk4Mi0xLjYtLjk4NC0yLTEuODc3YTYuMjMzLDYuMjMzLDAsMCwxLTEuMDIyLTIuODUxYy0uODIzLS40MzMtMS40NTUtMS4yMjEtMi40LTEuNC0uMDQ4LjQwOS0uMDgzLjgyLS4xNTMsMS4yMjdBNi4wMTUsNi4wMTUsMCwwLDEsMTAuNDgxLDIyLjZjLjAzOS40MjIuMDc5Ljg0Mi4xMiwxLjI2NS4zNDYuMzI0LjY5MS42NDgsMS4wMzMuOTc0YTkuNzUyLDkuNzUyLDAsMCwxLTEuNDI2LjcxMywxMS4xMTQsMTEuMTE0LDAsMCwxLTEuNjg3LjA3N2MtLjI1OC0uMjU0LS41MTgtLjUwOC0uNzc3LS43NjRhNC44NzEsNC44NzEsMCwwLDAsLjExNC0yLjYwOGMuMTcxLS40LjMyNi0uODEyLjQ3NS0xLjIyMWE1LjU2NSw1LjU2NSwwLDAsMS0zLjAxLjIwNiw1LjEyLDUuMTIsMCwwLDEtMy4yOS00LjMzLDMuODU5LDMuODU5LDAsMCwxLDEuNDA3LTMuMjY4QTYuNDEsNi40MSwwLDAsMCwzLjIsMTYuMjU5YTMuMDM4LDMuMDM4LDAsMCwwLDIuNSwyLjQ2NiwzLjQ2MiwzLjQ2MiwwLDAsMCwxLjk2LS42NDMsNy40OCw3LjQ4LDAsMCwxLC4zNjMtNC4xMzMsNS41MjQsNS41MjQsMCwwLDEsMy41ODYtMi42Niw0LjIzNSw0LjIzNSwwLDAsMCwyLjAxMS0xLjU2NiwxMC42NywxMC42NywwLDAsMSwxLjUyOS0xLjMzYy0uMjI4LS4yMTktLjQ1My0uNDQtLjY4LS42NTlBMi4xNTQsMi4xNTQsMCwwLDAsMTUuOSw2LjAyM2MxLjI4NC0uMywyLjU1MS0uNjYxLDMuODItMS4wMTFhMy43OTMsMy43OTMsMCwwLDAsMS40MTUuNjA2Yy4zMTcuMzQ2LjQ5NCwxLjE1NywxLjEuOTI4TTE4LjQ1OCwxOS45MDhjLjA0Mi43NjgtLjA0OCwxLjY2NS42NzQsMi4xNTUsMC0uNzU1LS4wNDYtMS41MDctLjEtMi4yNlpcIiBzdHlsZT1cImZpbGw6IzAwNWNhNVwiLz5gLFxuXHRcIkNvZmZlZVNjcmlwdFwiOiBgPHBhdGggZD1cIk0xMy4xMTQsNS43MjhjLjAyNS4xNTMtLjA1MS4yOC0uMzA2LjQwOGEzLjQ1NywzLjQ1NywwLDAsMC0xLjYzLS4yMjljLS42MzcuMDUxLTEuMTcyLjI1NS0xLjEuNjg4LjEuNDMzLjcxMy42ODgsMS44MDguNTg2LDIuNjc0LS4yMjksMi42NDktMi4wMzgsNi41NzEtMi4zOTQsMy4wNTYtLjI4LDQuNzYzLjY2Miw0Ljk5MiwxLjgwOC4xNzguODkxLS41NiwxLjc1Ny0yLjc3NiwxLjkzNi0xLjk2MS4xNzgtMy4xMDctLjM1Ny0zLjIwOS0uODkxLS4wNTEtLjI4LjEtLjY4OCwxLjA0NC0uNzkuMS40MzMuNjM3Ljg5MSwxLjkxLjc2NEMyMS4zNDEsNy41MzYsMjIuMSw3LjIsMjIsNi43Yy0uMS0uNTM1LTEuMDctLjg0LTIuNi0uNzEzLTMuMTA3LjI4LTMuODcxLDEuOTg3LTYuNTIsMi4yMTZDMTEsOC4zNzYsOS40NzIsNy42ODksOS4yNjgsNi42N2MtLjA3Ni0uMzgyLS4wNzYtMS4yNzMsMS45MS0xLjQ1MiwxLjAxOS0uMDc2LDEuODM0LjEsMS45MzYuNTA5Wk0zLjE4MSwxNi4zNzRBNS4yNzksNS4yNzksMCwwLDAsMi4wMSwxOS45OWE0LjIwNiw0LjIwNiwwLDAsMCwxLjY1NSwzLjA1Niw0LDQsMCwwLDAsMy4zNjIuNzksMTEuNDM0LDExLjQzNCwwLDAsMCwxLjUtLjQ4NCw0LjIzOCw0LjIzOCwwLDAsMS0yLjc1MS0xLjAxOSw0LjEzLDQuMTMsMCwwLDEtMS43MzItMi44MjdBMy43OSwzLjc5LDAsMCwxLDQuNjU4LDE2LjUsMy45NzcsMy45NzcsMCwwLDEsNy40MDksMTVhNC44MDYsNC44MDYsMCwwLDEsMy4yMDkuOTQyLDYuOTUsNi45NSwwLDAsMC0uODY2LS44NjYsNC4xLDQuMSwwLDAsMC0zLjQ2NC0uNjg4LDUuMiw1LjIsMCwwLDAtMy4xMDcsMS45ODdaTTE2LjgzMywxMC40OUE0MC44MzcsNDAuODM3LDAsMCwxLDguNSw5LjdDNi4yMzcsOS4xNCw1LjA0LDguNTI5LDUuMDQsNy43NGMwLS4zMzEuMTUzLS42MTEuNjExLS45NDItMS40MjYuNTYtMi4xOSwxLjAxOS0yLjE5LDEuNzMyLjA3Ni43OSwxLjM1LDEuNTc5LDMuOTQ4LDIuMTlhMzkuNDQzLDM5LjQ0MywwLDAsMCw5LjM0Ny45NDJBMzguOTkzLDM4Ljk5MywwLDAsMCwyNi4xLDEwLjcyYzIuNi0uNjExLDMuODQ2LTEuNDI2LDMuODQ2LTIuMTksMC0uNTYtLjU2LTEuMS0xLjU3OS0xLjVhLjg2Mi44NjIsMCwwLDEsLjQwOC42ODhjMCwuNzktMS4xNzIsMS40MjYtMy41NCwxLjk2MUEzOS4zMjQsMzkuMzI0LDAsMCwxLDE2LjgzMywxMC40OVptOS4zNzMsMi4xOWE0Mi4zMTUsNDIuMzE1LDAsMCwxLTkuMzQ3Ljk0Miw0NC4xNDQsNDQuMTQ0LDAsMCwxLTkuNDI0LS45NDJjLTIuMTktLjU2LTMuMzYyLTEuMTcyLTMuNzY5LTEuODA4YTIzLjE4NiwyMy4xODYsMCwwLDAsMi42LDcuNjQxYy45NDIsMS40MjYsMS44ODUsMi42NzQsMi44MjcsNC4wMjRhOS44ODMsOS44ODMsMCwwLDEsLjg2NiwyLjM2OSw0LjU1OSw0LjU1OSwwLDAsMCwyLjYsMS43MzIsMTAuNjExLDEwLjYxMSwwLDAsMCw0LjE3Ny42MTFoLjE1M2ExMS44MzksMTEuODM5LDAsMCwwLDQuMy0uNjExLDQuODY5LDQuODY5LDAsMCwwLDIuNTIxLTEuNzMyaC4wNzZhOS41OTIsOS41OTIsMCwwLDEsLjc5LTIuMzY5Yy45NDItMS4zNSwxLjg4NS0yLjYsMi44MjctNC4wMjRBMjQuNjIsMjQuNjIsMCwwLDAsMzAsMTAuODcyQzI5LjQ5MSwxMS41ODUsMjguMzE5LDEyLjIsMjYuMjA1LDEyLjY4MVpcIiBzdHlsZT1cImZpbGw6IzZmNGUzN1wiLz5gLFxuXHRcIkNyeXN0YWxcIjogYDxwYXRoIGQ9XCJNMjkuOTQxLDE5LjgxNiwxOS44LDI5LjkyOGMtLjAyOC4wMjgtLjA4NS4wMjgtLjE2OS4wMjhMNS44LDI2LjI2N2MtLjAyOCwwLS4wODQtLjAyOC0uMTEzLS4xMTNMMiwxMi4zNTJhLjQxOS40MTksMCwwLDEsLjAyOC0uMTY5TDEyLjE2OCwyLjA3MmMuMDI4LS4wMjguMDg0LS4wMjguMTY5LS4wMjhsMTMuODMsMy43MThjLjAyOCwwLC4wODQuMDI4LjExMy4xMTNsMy42OSwxMy44QzMwLjAyNiwxOS43MzIsMzAsMTkuNzg4LDI5Ljk0MSwxOS44MTZaTTE2LjM5Myw4LjgzMiwyLjgxNywxMi40OTNxLS4wNDIsMCwwLC4wODRMMTIuNzYsMjIuNTJjLjAyOC4wMjguMDI4LDAsLjA4NCwwTDE2LjUwNiw4Ljk3MkMxNi40NDksOC44MzIsMTYuMzkzLDguODMyLDE2LjM5Myw4LjgzMlpcIiBzdHlsZT1cImZpbGw6I2M4YzhjOFwiLz5gLFxuXHRcIkNTU1wiOiBgPHBvbHlnb24gcG9pbnRzPVwiNS45MDIgMjcuMjAxIDMuNjU2IDIgMjguMzQ0IDIgMjYuMDk1IDI3LjE5NyAxNS45ODUgMzAgNS45MDIgMjcuMjAxXCIgc3R5bGU9XCJmaWxsOiMxNTcyYjZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMjcuODU4IDI0LjE3IDI1LjU5MyAyNi4wOTIgNC4wNjEgMTYgNC4wNjEgMTYgMjcuODU4XCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMTMuMTkxIDIwLjA5IDEzLjE5MSAyMC4zNzIgMTAuMDI2IDE2IDEwLjAyNiAxNiA2LjkzNSAxNi4wMTEgNi45MzUgMjMuNzUgNi45MzUgMjMuNjc2IDcuNzY0IDIyLjkxNyAxNi4yODIgMTYgMTYuMjgyIDE2IDEzLjE5MVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjAxOSAyMS4yMTggMTYuMDA1IDIxLjIyMiAxMi41NjMgMjAuMjkyIDEyLjM0MyAxNy44MjcgMTAuNjcgMTcuODI3IDkuMjQgMTcuODI3IDkuNjczIDIyLjY4IDE2LjAwNCAyNC40MzggMTYuMDE5IDI0LjQzNCAxNi4wMTkgMjEuMjE4XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuODI3IDE2LjE1MSAxOS40NTUgMjAuMjkgMTYuMDA4IDIxLjIyIDE2LjAwOCAyNC40MzYgMjIuMzQ0IDIyLjY4IDIyLjM5MSAyMi4xNTggMjIuOTI4IDE2LjE1MSAxOS44MjcgMTYuMTUxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuMDExIDYuOTM1IDE2LjAxMSA4Ljg1NSAxNi4wMTEgMTAuMDE4IDE2LjAxMSAxMC4wMjYgOC41NTUgMTAuMDI2IDguNTU1IDEwLjAyNiA4LjU0NSAxMC4wMjYgOC40ODMgOS4zMzEgOC4zNDIgNy43NjQgOC4yNjggNi45MzUgMTYuMDExIDYuOTM1XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMTMuMTkxIDE2IDE1LjExMSAxNiAxNi4yNzQgMTYgMTYuMjgyIDEyLjYxMSAxNi4yODIgMTIuNjExIDE2LjI4MiAxMi42MDEgMTYuMjgyIDEyLjUzOSAxNS41ODcgMTIuMzk5IDE0LjAyIDEyLjMyNSAxMy4xOTEgMTYgMTMuMTkxXCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+YCxcblx0XCJDU1ZcIjogYDxwYXRoIGQ9XCJNMjIuMDM4LDJINi4zNzVhMS43NTUsMS43NTUsMCwwLDAtMS43NSwxLjc1djI0LjVBMS43NTUsMS43NTUsMCwwLDAsNi4zNzUsMzBoMTkuMjVhMS43NTUsMS43NTUsMCwwLDAsMS43NS0xLjc1VjYuODU2Wm0uNTI1LDIuODQ0LDEuNjYzLDEuNTMxSDIyLjU2M1pNNi4zNzUsMjguMjVWMy43NUgyMC44MTNWOC4xMjVoNC44MTNWMjguMjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjE1LjA5N1wiIHdpZHRoPVwiMTMuMDc2XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIyNC40MzlcIiB3aWR0aD1cIjkuNzYyXCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxOS43NjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxMC4yM1wiIHdpZHRoPVwiMTUuNzVcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+YCxcblx0XCJEXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxODUuNDU1XCIgeTE9XCIxNjAxLjY0MVwiIHgyPVwiMTgxLjk1NVwiIHkyPVwiMTYzMC4yMjRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNjIuNTIzIC02NjYuNjQ2KSBzY2FsZSgwLjQyNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjE3Ni4xMzZcIiB5MT1cIjE2MDAuNVwiIHgyPVwiMTcyLjYzNlwiIHkyPVwiMTYyOS4wODNcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZGxhbmc8L3RpdGxlPjxwYXRoIGQ9XCJNMy45NzgsMTUuNDYyLDMuOTY5LDguNTA5QS41ODguNTg4LDAsMCwxLDQuNSw3Ljk0N2EuNjU4LjY1OCwwLDAsMSwuMDc2LDBsNi4wNzQtLjAwOWExNS43LDE1LjcsMCwwLDEsNi4wNjcuOTUsOC45LDguOSwwLDAsMSwyLjI0NCwxLjM1OSw0LjQ2OSw0LjQ2OSwwLDAsMSwyLjk0Ni0xLjA4Myw0LjExLDQuMTEsMCwwLDEsNC4yNzYsMy45MkE0LjExLDQuMTEsMCwwLDEsMjEuOTA3LDE3Yy0uMDg5LDAtLjE3Ny0uMDA4LS4yNjUtLjAxMmE2LjYxNyw2LjYxNywwLDAsMS0uMjMyLjk1Myw4NS4zODMsODUuMzgzLDAsMCwxLDguNTksMi42VjJIMlYxNS40UTIuOTkyLDE1LjQyLDMuOTc4LDE1LjQ2MlptMjIuOC03Ljk0NGExLjMyLDEuMzIsMCwwLDEsMS4zNzQsMS4yNTksMS4zNzksMS4zNzksMCwwLDEtMi43NDcsMEExLjMyLDEuMzIsMCwwLDEsMjYuNzgsNy41MTdaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0xNy44NjEsMTUuNzg3YTQuMTE0LDQuMTE0LDAsMCwwLTEuNzQ4LTMuNDU4LDUuODE0LDUuODE0LDAsMCwwLTEuNTA4LS44MjIsNy4zNTQsNy4zNTQsMCwwLDAtMS42MjktLjQzOCwyMS42MjksMjEuNjI5LDAsMCwwLTIuNTg4LS4xbC0yLjYxOSwwLC4wMDYsNC43MzdhODguODI3LDg4LjgyNywwLDAsMSw5LjkxLDEuNDA4QTQuOTE5LDQuOTE5LDAsMCwwLDE3Ljg2MSwxNS43ODdaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0yMC45OTMsMTguOTc5YTcuOTA2LDcuOTA2LDAsMCwxLTIuMTI4LDIuNTgyLDkuNzM5LDkuNzM5LDAsMCwxLTMuMjU2LDEuNzEsMTEuNTU4LDExLjU1OCwwLDAsMS0xLjk3MS40NzJoLS4wMTVhMzEuODU3LDMxLjg1NywwLDAsMS0zLjMyNi4xMTFsLTUuNjI1LjAyMmEuNjE2LjYxNiwwLDAsMS0uNjg2LS42ODFsLS4wMS03LjczNFEyLjk5MiwxNS40MiwyLDE1LjRWMzBIMzBWMjAuNTQ0YTg1LjM4Myw4NS4zODMsMCwwLDAtOC41OS0yLjZBNi45ODUsNi45ODUsMCwwLDEsMjAuOTkzLDE4Ljk3OVpcIiBzdHlsZT1cImZpbGw6I2IwMzkzMVwiLz48cGF0aCBkPVwiTTIwLjk5MywxOC45NzlhNy45MDYsNy45MDYsMCwwLDEtMi4xMjgsMi41ODIsOS43MzksOS43MzksMCwwLDEtMy4yNTYsMS43MSwxMS41NTgsMTEuNTU4LDAsMCwxLTEuOTcxLjQ3MmgtLjAxNWEzMS44NTcsMzEuODU3LDAsMCwxLTMuMzI2LjExMWwtNS42MjUuMDIyYS42MTYuNjE2LDAsMCwxLS42ODYtLjY4MWwtLjAxLTcuNzM0UTIuOTkyLDE1LjQyLDIsMTUuNFYzMEgzMFYyMC41NDRhODUuMzgzLDg1LjM4MywwLDAsMC04LjU5LTIuNkE2Ljk4NSw2Ljk4NSwwLDAsMSwyMC45OTMsMTguOTc5WlwiIHN0eWxlPVwib3BhY2l0eTowLjMwMDAwMDAxMTkyMDkyOTtpc29sYXRpb246aXNvbGF0ZTtmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xMC40NzcsMjAuODM1YTE2LjAxNCwxNi4wMTQsMCwwLDAsMi44NzctLjIsNy42MzMsNy42MzMsMCwwLDAsMS42MjgtLjUsNS42MjgsNS42MjgsMCwwLDAsMS4xODctLjc0OCw0LjQ1Nyw0LjQ1NywwLDAsMCwxLjUxOC0yLjI3MSw4OC42OTEsODguNjkxLDAsMCwwLTkuOTEtMS40MDhsLjAwNiw1LjEzM1pcIiBzdHlsZT1cImZpbGw6I2IwMzkzMVwiLz48cGF0aCBkPVwiTTEwLjQ3NywyMC44MzVhMTYuMDE0LDE2LjAxNCwwLDAsMCwyLjg3Ny0uMiw3LjYzMyw3LjYzMywwLDAsMCwxLjYyOC0uNSw1LjYyOCw1LjYyOCwwLDAsMCwxLjE4Ny0uNzQ4LDQuNDU3LDQuNDU3LDAsMCwwLDEuNTE4LTIuMjcxLDg4LjY5MSw4OC42OTEsMCwwLDAtOS45MS0xLjQwOGwuMDA2LDUuMTMzWlwiIHN0eWxlPVwib3BhY2l0eTowLjMwMDAwMDAxMTkyMDkyOTtpc29sYXRpb246aXNvbGF0ZTtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yMC4zODMsMTEuNzQ2YTYuOTkzLDYuOTkzLDAsMCwxLDEuMzYsNC4xNDgsNi42MTgsNi42MTgsMCwwLDEtLjEsMS4xYy4wODgsMCwuMTc2LjAxMi4yNjUuMDEyYTQuMTEsNC4xMSwwLDAsMCw0LjI3Ni0zLjkyLDQuMTEsNC4xMSwwLDAsMC00LjI3Ni0zLjkyLDQuNDcsNC40NywwLDAsMC0yLjk0NiwxLjA4M0E4LjEyMyw4LjEyMywwLDAsMSwyMC4zODMsMTEuNzQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxlbGxpcHNlIGN4PVwiMjYuNzhcIiBjeT1cIjguNzc3XCIgcng9XCIxLjM3NFwiIHJ5PVwiMS4yNTlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTQuNjczLDIzLjg3N2w1LjYyNS0uMDIyYTMxLjg3MSwzMS44NzEsMCwwLDAsMy4zMjYtLjExMWguMDE1YTExLjQ5LDExLjQ5LDAsMCwwLDEuOTcxLS40NzIsOS43MzksOS43MzksMCwwLDAsMy4yNTYtMS43MSw3LjkwNiw3LjkwNiwwLDAsMCwyLjEyOC0yLjU4Miw2Ljk4NSw2Ljk4NSwwLDAsMCwuNDE3LTEuMDM0LDcuMDU2LDcuMDU2LDAsMCwwLC4zMzItMi4wNTEsNi45OTIsNi45OTIsMCwwLDAtMS4zNi00LjE0OCw4LjEsOC4xLDAsMCwwLTEuNDIxLTEuNSw4Ljg3OCw4Ljg3OCwwLDAsMC0yLjI0NC0xLjM1OSwxNS42ODYsMTUuNjg2LDAsMCwwLTYuMDY3LS45NWwtNi4wNzQuMDA5YS42NTguNjU4LDAsMCwwLS4wNzYsMCwuNTg4LjU4OCwwLDAsMC0uNTMyLjU2MmwuMDA5LDYuOTUyLjAxLDcuNzM0QS42MTYuNjE2LDAsMCwwLDQuNjczLDIzLjg3N1ptMy4xLTEyLjkwOCwyLjYxOSwwYTIxLjYyMywyMS42MjMsMCwwLDEsMi41ODguMSw3LjM1NCw3LjM1NCwwLDAsMSwxLjYyOS40MzgsNS44MTQsNS44MTQsMCwwLDEsMS41MDguODIyLDQuMTE2LDQuMTE2LDAsMCwxLDEuNzQ4LDMuNDU4LDQuOTA1LDQuOTA1LDAsMCwxLS4xNzUsMS4zMjcsNC40NTcsNC40NTcsMCwwLDEtMS41MTgsMi4yNzEsNS42MTMsNS42MTMsMCwwLDEtMS4xODcuNzQ4LDcuNjY2LDcuNjY2LDAsMCwxLTEuNjI4LjUsMTYuMDA5LDE2LjAwOSwwLDAsMS0yLjg3Ny4ybC0yLjY5NCwwLS4wMDYtNS4xMzNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJEYXJ0XCI6IGA8cGF0aCBkPVwiTTE2LjczOSwyLjAzN2ExLjMxNCwxLjMxNCwwLDAsMC0uOTE2LjM3N2wtLjAxMy4wMUw3LjIyLDcuMzg5bDguNTY2LDguNTY2di4wMDZsMTAuMywxMC4zLDEuOTYzLTMuNTM2TDIwLjk2OCw1LjcyOGwtMy4zLTMuM2ExLjMwNywxLjMwNywwLDAsMC0uOTI3LS4zODhaXCIgc3R5bGU9XCJmaWxsOiM2NmMzZmFcIi8+PHBhdGggZD1cIk03LjI1LDcuMzUsMi4yODgsMTUuOTMxbC0uMDEuMDEzYTEuMzIyLDEuMzIyLDAsMCwwLS4zNzguOTE5LDEuMywxLjMsMCwwLDAsLjM4Ny45MjRMNi40LDIxLjlsMTYuMDg0LDYuMzI3LDMuNjM2LTIuMDItLjEtLjEtLjAyNSwwLTEwLjA4My0xMC4xSDE1LjlMNy4yNSw3LjM1WlwiIHN0eWxlPVwiZmlsbDojMjE1ODk2XCIvPjxwYXRoIGQ9XCJNNy4xOTIsNy4zNjJsOC43NjQsOC43NzNoLjAxM2wxMC4wODcsMTAuMSwzLjgzOS0uNzMyTDI5LjksMTQuMTRsLTQuMDU0LTMuOTczYTYuNTIxLDYuNTIxLDAsMCwwLTMuNjI0LTEuNjE2bDAtLjA0NEw3LjE5Miw3LjM2MlpcIiBzdHlsZT1cImZpbGw6IzIzNTk5N1wiLz48cGF0aCBkPVwiTTcuMjU2LDcuNDExbDguNzY4LDguNzY4di4wMTNMMjYuMTE2LDI2LjI4NGwtLjczNCwzLjgzOUgxNC4wMjJsLTMuOTcxLTQuMDU2YTYuNTIyLDYuNTIyLDAsMCwxLTEuNjE0LTMuNjI1bC0uMDQ0LDBMNy4yNTYsNy40MTFaXCIgc3R5bGU9XCJmaWxsOiM1OGI2ZjBcIi8+YCxcblx0XCJEaGFsbFwiOiBgPHBhdGggZD1cIk0xNiwyLjA3QTEzLjkzLDEzLjkzLDAsMSwxLDIsMTYsMTMuOTMsMTMuOTMsMCwwLDEsMTYsMi4wN1pNMTMuMjgsMjIuMzJhMS40OSwxLjQ5LDAsMSwxLTEsMS44M0ExLjQ5LDEuNDksMCwwLDEsMTMuMjgsMjIuMzJabTgtMTUuNjhhLjUzLjUzLDAsMCwxLC4zOC42Ni41Mi41MiwwLDAsMS0uNjUuMzhsLS41LS4xM2E0Mi42Nyw0Mi42NywwLDAsMC0uMzcsNy4wN0MxOC4wNiwxNi40NSwxNC4zOSwyMiwxNC4zOSwyMmwxLjkzLTcuMThhMSwxLDAsMCwwLC44OS0uNjUuOTEuOTEsMCwwLDAtMS43NS0uNDcsMSwxLDAsMCwwLC40NSwxTDE0LDIxLjg1YTY4LjM4LDY4LjM4LDAsMCwwLTEuMzQtOS4yNSwzNC4yOCwzNC4yOCwwLDAsMCwzLjIxLTYuMzFsLS41LS4xM0EuNTUuNTUsMCwwLDEsMTUsNS41YS41My41MywwLDAsMSwuNjYtLjM4bDUuNjgsMS41MlpcIiBzdHlsZT1cImZpbGw6I2I3YjdiNztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuXHRcIkRpZmZcIjogYDxyZWN0IHg9XCI2Ljk3NVwiIHk9XCIzXCIgd2lkdGg9XCIxOC4wNVwiIGhlaWdodD1cIjYuMDE3XCIgc3R5bGU9XCJmaWxsOiNjMDAwMDBcIi8+PHBhdGggZD1cIk0xMi45OTIsMTAuOTV2Ni4wMTdINi45NzV2Ni4wMTdoNi4wMTdWMjloNi4wMTdWMjIuOTgzaDYuMDE3VjE2Ljk2N0gxOS4wMDhWMTAuOTVaXCIgc3R5bGU9XCJmaWxsOmdyZWVuXCIvPmAsXG5cdFwiRGphbmdvL0ppbmphMlwiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiMTZcIiBjeT1cIi0xMTkuMjgzXCIgcj1cIjEzLjVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMC45NDUsIDAsIC05Ni43MzUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTc1NzU3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzJmMmYyZlwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2ppbmphPC90aXRsZT48cGF0aCBkPVwiTTI5LjM0LDMuMjQxYTM4LjI3MSwzOC4yNzEsMCwwLDEtOS40NTEsMy4wNGMtNC4yNDEuNTUtMTIuMzI5LDEuMS0xMy45MzUuNzEyQTIzLjMsMjMuMywwLDAsMSwzLjIsNi4xNTFsLjMzNCwxLjEzMkwyLjUsOC4xODhsLjE4My4zMjMuNDI0LjAzMiwxLjMuMTYyLjE4My41ODIuNzI3LjA2Ni4zNjQsMS4yMjhzMS41NDQuMTMsMiwuMTMsMS4zNjMtLjA2NCwxLjM2My0uMDY0bC4wMy40ODUuMzM0LjA2NHYuNTVsLS43MjguNjQ4LjE4My4wMzJ2LjIyNWExNS44MTYsMTUuODE2LDAsMCwxLTIuMy4wMzRjLS42NjYtLjEtLjc4OC0uMS0uNzg4LS4xbC0uMDYuMDY0LS4wMy4yOTFoLjE1MWwuMDYsMS4yNjIsMy4zNjMtLjEzLS4yNDMsNC4zNjUtLjAzLjU0OS0yLjg0OC0uMTYyLS4wMy0xLjE2NGguNjM1bC4wNjEtLjQ1My41NzUtLjEzLjA5MS0uMTI4LTIuMTUxLS41MTgtMS42MzYuNDg1LjI3My4yMjdoLjI3M2wuMDMuMzg5LjU3NS4wMzJWMTguN2wtLjYzNS4xNjIuMTIxLjI1Ny4xNTEuMXYuODczaC4zOTR2NC4wNDFsLS42MzcuMS4wOTEsMS4xNjQuMzkzLjA2Ni0uMDYsMi42NTEsMS43MjcuMDMyLS4zNjQtMi42MTksMi42MDUtLjA2NC0uMTgxLDEuNDIyLS4yNDMsMSwyLjYzNS4wMzIuMDMtMi41ODYsMS44MTctLjE2Mi0uMDksMS42NDktLjA2MS45NjloMS41NDZsLS4wNjEtMi42NTEuMjEzLjAzNC4wNi0xLjI2MmgtLjI0M2wtLjA5LS41MThMMTMuOCwyMS45bC4wNi0xLjcxM2guMzMzVjE5LjE0OWwtLjQyNC4wMzIuMDYxLTEuMjIuNDkzLS4wNDkuMDIzLS40LjI4LS4wNDEuMjg3LS4yMThMMTMuMTg3LDE2LjlsLTEuNzEyLjM3OS4xNjcuMjc0LjE4MS0uMDE1LjIxMS0uMDA4LjAzOS41LjQ3Ny0uMDIzLjAwOSwxLjA4Mi0yLjA1My0uMDQ3LjA2OS0xLjE1Ni4wNjctMS4wNTFWMTUuNDU1TDEwLjcsMTRsNC4xMTEtLjIxLDQuODkyLS4yODIuMDQ2LjkyOS0uMTc0LDIuMjMxTDE5LjUsMTguNzQ0bC0xLjgtLjAzMi0uMDA5LTEuNDU1LjY2Ny0uMDI0LjAzLS40MTEuMjczLS4wNDEtLjAxNC0uMDgxLjI3My0uMDE1LjE1MS0uMkwxNy4wMzQsMTYsMTUsMTYuNDRsLjE0NC4yNTEuMjI3LS4wMTd2LjExNGguMjh2LjQ2bC42LjAwOC0uMDA3LDEuMjc3aC0uNjA1bC0uMDA5LjI5MS4yMTMuMDI0LS4wMjMsMS4xMDguNDQ3LjAyNC0uMDUzLDQuMzktLjU5MS4xMi4wMDcuMjFoLjIwNnYxLjEyNGguMzRsLS4wOSwxLjUzNkwxNS45NzQsMjguN2wyLjE1MS4wNTYtLjA2OS0xLjE2NC0uMTU4LS45NjktLjAzMS0uODQxLDEuODI2LS4wMzItLjA1MywxLjMtLjAwOSwxLjM3NCwxLjAzMS4wODEsMS40LS4wNTYuNDQtLjEzLS4yNDMtLjczNi0uMDYtMS4xNTYtLjExNC0uODI0LDEuNzQyLS4wNjQtLjA3NiwxLjAxLS4wMDcsMS41ODUuNy4wNjQuNjktLjAxNS4zMzMtLjEwNS0uMi0xLjVMMjUuMiwyNS40NDVsLjMtLjAzMkwyNS41LDI0LjRsLjA4My0uMDE3LS4wMTQtLjIxOGgtLjM0MWwtLjA2OS0uNzQ0TDI1LjEzLDIwLjJsLjI1Ny0uMDA4VjE5LjEzM2wuMTA3LjAxN3YtLjIxbC0uMzgtLjAzNC4wMDktMS4yMjguNjM1LS4wNTYtLjAzNy0uNDEzLjI4LS4wMjQtLjAxNi0uMDgxLjM3MS0uMTg2LTEuODg2LS4zNzktMS45MTYuMzg5LjEyMS4yMjYuMy0uMDI0LjAxNi4xaC4yNWwuMDE0LjQ4NS42MjEtLjAwOC4wNTMsMS4xODgtMi4yLS4wMTctLjI1Ny0xLjc4Ni0uMjA2LS45NDYtLjE2Ni0xLjcuMS0uOTkzLDQuMzc3LS4zMzIuMDE0LTEuNDc5LjIyLS4wNTYtLjAxNC0uMjI1LS4xNjctLjFzLTIuMzkzLjM1NS0zLjE1MS40MzZsLS4zNzEuMDQtLjAyMy0uMjc0LS45MDUtLjQ3NC4wMTEtLjU1Mi4zMTEtLjAwOS4wMjMtLjc1OWEyNC44MDcsMjQuODA3LDAsMCwwLDIuNTQ0LS4yODNjLjY4OS0uMTYyLDEuNjY2LS4zMjMsMS42NjYtLjMyM0wyNi4yLDcuODA5bC45MTctLjI2Ny4wNzYtLjIxLDIuMDc0LS41NzQuMjM2LS4xOTQtLjc4OC0xLjcyMi4wNzYtLjM4OS40LS4yMS4yODgtLjg4MVpNMTkuMzc0LDkuOGwtLjAxMS42MjYuNDcuMDItLjAzLjU5NC0uOTIxLjYtLjA1Ny4xNzQuMzcxLDAsMCwuMTQ2LTIuODE0LjEzNy4wMTktLjQxNi4xMjgtLjIwNy4wMDktLjEzMywwLS4yODYuMDgtLjE5LjAzLS4xNTR2LS4xMWwuMTIxLS40ODVabS01Ljg4NS41MzMtLjA2OS40MjEuMjIuMjU5LS4wMTQuNDUzLjIuMzE1LS4wNTMuMzcyLjE1MS4yMTgtMi44NzEuMTEzLS4wMDctLjEuMzMzLS4wNDEuMDE2LS4xMjItLjcyNy0uMzk1LS4wMzktLjYzMS4zNDgtLjAxNy4wMy0uNjhabTQuMjQ5LDkuNywxLjc0Mi4xMTNMMTkuNDIsMjIuNWwuMjI3LDEuOTIzTDE3LjgsMjQuMzU0Wm0tMTEuNjYzLjEsMi43ODguMTQ1TDguNjIsMjEuOXYxLjM1OWwuMi43NTktMi43MjcuMTNabTE3Ljg0My4wMTV2NC4wMWwtMS43NzIuMTMtLjA2MS0yLjExOC0uMi0xLjk3M1pNMTAuNSwyMC4yNGwyLjA2LjAwOC4wMjEsMy43MThMMTAuNjU3LDI0bC0uMS0xLjIwNS0uMDA3LTEuMlpcIiBzdHlsZT1cInN0cm9rZTpyZWQ7c3Ryb2tlLXdpZHRoOjAuNXB4O2ZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIkRvY2tlclwiOiBgPHBhdGggZD1cIk0xNi41NCwxMi42NjNIMTkuNHYyLjkyNGgxLjQ0NmE2LjI3Miw2LjI3MiwwLDAsMCwxLjk4OC0uMzMzLDUuMDkxLDUuMDkxLDAsMCwwLC45NjYtLjQzNiwzLjU4NCwzLjU4NCwwLDAsMS0uNjctMS44NDksMy45MDcsMy45MDcsMCwwLDEsLjctMi43NTNsLjMtLjM0OC4zNTguMjg4YTQuNTU4LDQuNTU4LDAsMCwxLDEuNzk1LDIuODkyLDQuMzc1LDQuMzc1LDAsMCwxLDMuMzE5LjMwOWwuMzkzLjIyNi0uMjA3LjRhNC4xNDEsNC4xNDEsMCwwLDEtNC4xNTcsMS45ODNjLTIuNDgsNi4xNjgtNy44NzEsOS4wODgtMTQuNDA5LDkuMDg4LTMuMzc4LDAtNi40NzYtMS4yNjMtOC4yNDEtNC4yNTlsLS4wMjktLjA0OUwyLjcsMjAuMjI3YTguMzE2LDguMzE2LDAsMCwxLS42NTktNC4yMDhsLjA0LS40MzNINC41MjZWMTIuNjYzSDcuMzg3VjkuOGg1LjcyMVY2Ljk0MkgxNi41NHY1LjcyMVpcIiBzdHlsZT1cImZpbGw6IzAwOTZlNlwiLz48cGF0aCBkPVwiTTEyLjAwNiwyNC41NjdhNi4wMjIsNi4wMjIsMCwwLDEtMy4xNC0zLjA4OSwxMC4zMjksMTAuMzI5LDAsMCwxLTIuMjY0LjM0M3EtLjUuMDI4LTEuMDQ1LjAyOC0uNjMyLDAtMS4zMzEtLjAzN2E5LjA1MSw5LjA1MSwwLDAsMCw3LDIuNzY5UTExLjYxOCwyNC41ODEsMTIuMDA2LDI0LjU2N1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTcuMDgsMTMuMzQ2aC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N0g2LjdWMTMuMzQ2Wm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4ydjIuMDY3aC0uMlYxMy4zNDZaTTUsMTMuMTRINy40ODJ2Mi40NzlINVptMi44NTktMi44NjFoMi40OHYyLjQ3OUg3Ljg2M1ptMi4wNzcuMjA3aC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yVjEwLjQ4NlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM2OCwwaC4ydjIuMDY2aC0uMlptLS4yMDcsMi42NTNoMi40OHYyLjQ4SDcuODYzVjEzLjE0Wm0yLjA3Ny4yMDdoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJWMTMuMzQ2Wm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjJ2Mi4wNjdoLS4yWm0yLjY1NC0uMjA3SDEzLjJ2Mi40OGgtMi40OFYxMy4xNFptMi4wNzYuMjA3SDEzdjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjJ2Mi4wNjdoLS4yWm0tLjIwNi0zLjA2N0gxMy4ydjIuNDc5aC0yLjQ4VjEwLjI3OVptMi4wNzYuMjA3SDEzdjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzY4LDBoLjJ2Mi4wNjZoLS4yWm0yLjY1NCwyLjY1M2gyLjQ3OXYyLjQ4aC0yLjQ4VjEzLjE0Wm0yLjA3Ni4yMDdoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNjgsMGguMTkydjIuMDY3aC0uMlYxMy4zNDZabS0uMjA2LTMuMDY3aDIuNDc5djIuNDc5aC0yLjQ4VjEwLjI3OVptMi4wNzYuMjA3aC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzY4LDBoLjE5MnYyLjA2NmgtLjJWMTAuNDg2Wm0tLjIwNi0zLjA2N2gyLjQ3OVY5LjloLTIuNDhWNy40MTlabTIuMDc2LjIwNmguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNzYsMGguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM2OCwwaC4xOTJWOS42OTFoLS4yVjcuNjI1Wm0yLjY1NCw1LjUxNGgyLjQ3OXYyLjQ4aC0yLjQ4VjEzLjE0Wm0yLjA3Ni4yMDdoLjE5NXYyLjA2N2gtLjJWMTMuMzQ2Wm0tLjM3NiwwaC4yMDZ2Mi4wNjdoLS4yMDZabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjIwNVYxMy4zNDZabS0uMzY4LDBoLjJ2Mi4wNjdoLS4xOTRWMTMuMzQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTAuMTg4LDE5LjYzOGEuNjg0LjY4NCwwLDEsMS0uNjg0LjY4NEEuNjg0LjY4NCwwLDAsMSwxMC4xODgsMTkuNjM4Wm0wLC4xOTRhLjQ4OS40ODksMCwwLDEsLjE3Ny4wMzMuMi4yLDAsMSwwLC4yNzUuMjY5LjQ5LjQ5LDAsMSwxLS40NTMtLjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJET1QgKEdyYXBodml6KVwiOiBgPHBvbHlnb24gcG9pbnRzPVwiMjMuOTQyIDMwIDEyLjY3OSAzMCAxLjQxNyAzMCAxLjQxNyAxNiAxLjQxNyAyIDEyLjY3OSAyIDIzLjk0MiAyIDIzLjk0MiAxNiAyMy45NDIgMzBcIiBzdHlsZT1cImZpbGw6I2U2ZTZlNlwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMy4yMDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjcuNDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjExLjYzOFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTUuODU2XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMC4wNzRcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI0LjI5M1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjguNTExXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyXCIgeT1cIjMuMjAyXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjU3M1wiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI2LjIxOFwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTAuNDM2XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNC42NTVcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE4Ljg3M1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMjMuMDkxXCIgeT1cIjMuMjAyXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjU3M1wiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxnIHN0eWxlPVwib3BhY2l0eTowLjVcIj48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjcuNDU2XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNi40MDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI1LjM0N1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjMuMjM4XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMi4xODRcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjIxLjEyOVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTkuMDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE3Ljk2NVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTYuOTExXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxNC44MDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjEzLjc0N1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTIuNjkzXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMC41ODNcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjkuNTI5XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI4LjQ3NFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiNi4zNjVcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjUuMzExXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI0LjI1NlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48L2c+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNVwiPjxyZWN0IHg9XCIyMi4wMzZcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIwLjk4MlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTkuOTI3XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNy44MThcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE2Ljc2NFwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTUuNzA5XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMy42XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMi41NDVcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjExLjQ5MVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiOS4zODJcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjguMzI3XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI3LjI3M1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNS4xNjRcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjQuMTA5XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIzLjA1NVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48L2c+PHBhdGggZD1cIk0xMyw4Ljk3NmMtMi4zMDgsMC00LjEzMS0xLjI3NC00LjE5My0yLjk2OWgwYTIuNzc1LDIuNzc1LDAsMCwxLDEuMjUzLTIuMzIsNS4zLDUuMywwLDAsMSwyLjk0My0uOTYzLDUuMjk0LDUuMjk0LDAsMCwxLDMuMDA2Ljc0MywyLjc3NSwyLjc3NSwwLDAsMSwxLjQyMSwyLjIyMWMuMDY1LDEuNzUyLTEuNzc5LDMuMTk0LTQuMiwzLjI4M0MxMy4xNTgsOC45NzQsMTMuMDgsOC45NzYsMTMsOC45NzZabS4yMzItNS4ycS0uMDk1LDAtLjE5LDBhNC4yMzgsNC4yMzgsMCwwLDAtMi4zNTQuNzU2LDEuNzYxLDEuNzYxLDAsMCwwLS44MjgsMS40MzVDOS45LDcuMDksMTEuNDI4LDcuOTc4LDEzLjIsNy45MTdzMy4yMjMtMS4wNjksMy4xODEtMi4xOTFhMS43NjEsMS43NjEsMCwwLDAtLjkzMi0xLjM2OUE0LjE2NSw0LjE2NSwwLDAsMCwxMy4yMzQsMy43NzNaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk02LjQsMjkuMjgxQTUuMjM4LDUuMjM4LDAsMCwxLDMuNiwyOC41MTlhMi43NzUsMi43NzUsMCwwLDEtMS40MS0yLjIyOWMtLjA1Ni0xLjc1MiwxLjgtMy4xODUsNC4yMTMtMy4yNjJzNC4zNTYsMS4yMzYsNC40MTIsMi45ODhBMi43NzUsMi43NzUsMCwwLDEsOS41NDgsMjguMzNhNS4zLDUuMywwLDAsMS0yLjk0OC45NDhRNi41LDI5LjI4MSw2LjQsMjkuMjgxWm0uMTg2LTUuMi0uMTU2LDBjLTEuNzY2LjA1Ni0zLjIyOSwxLjA1Mi0zLjE5MywyLjE3NGExLjc2MSwxLjc2MSwwLDAsMCwuOTI0LDEuMzc0LDQuMjM1LDQuMjM1LDAsMCwwLDIuNC41OTMsNC4yMzUsNC4yMzUsMCwwLDAsMi4zNTctLjc0NCwxLjc2MSwxLjc2MSwwLDAsMCwuODM1LTEuNDNDOS43MjQsMjQuOTYxLDguMjksMjQuMDgsNi41OTEsMjQuMDhaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xOS4yNjEsMjkuMjZhNS4yMzgsNS4yMzgsMCwwLDEtMi44MDctLjc2MiwyLjc3NSwyLjc3NSwwLDAsMS0xLjQxLTIuMjI5aDBjLS4wNTUtMS43NTIsMS44LTMuMTg1LDQuMjEzLTMuMjYyYTUuMyw1LjMsMCwwLDEsMywuNzU5QTIuNiwyLjYsMCwwLDEsMjIuNCwyOC4zMWE1LjMsNS4zLDAsMCwxLTIuOTQ4Ljk0OFExOS4zNTgsMjkuMjYsMTkuMjYxLDI5LjI2Wk0xNi4xLDI2LjIzNmExLjc2MSwxLjc2MSwwLDAsMCwuOTI0LDEuMzc0LDQuNTcsNC41NywwLDAsMCw0Ljc1Ny0uMTUxLDEuNTU4LDEuNTU4LDAsMCwwLS4wODktMi44LDQuMjI2LDQuMjI2LDAsMCwwLTIuNC0uNTkzYy0xLjc2Ni4wNTYtMy4yMjgsMS4wNTItMy4xOTMsMi4xNzRaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk02LjIsMjMuNDc3QTI3LjQsMjcuNCwwLDAsMSw5Ljc2OSw4Ljk4NmwuNjg3LjM5MUEyNi42MDksMjYuNjA5LDAsMCwwLDYuOTg2LDIzLjQ1WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTAuODUzLDcuOTU3YTcuMTcxLDcuMTcxLDAsMCwwLS4wNzUsMi4zMmwtLjc1OC0uOTMtMS4xNzgtLjIzQTcuMTY1LDcuMTY1LDAsMCwwLDEwLjg1Myw3Ljk1N1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE5Ljg1NCwyMy40NzdsLS43OS0uMDI3YTI2LjU5LDI2LjU5LDAsMCwwLS45MTUtNy44ODQsMjYuNjI0LDI2LjYyNCwwLDAsMC0yLjU1NC02LjE4OWwuNjg3LS4zOTFhMjcuNDIzLDI3LjQyMywwLDAsMSwyLjYzLDYuMzczQTI3LjM3MiwyNy4zNzIsMCwwLDEsMTkuODU0LDIzLjQ3N1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE1LjIsNy45NTdhNy4xNzEsNy4xNzEsMCwwLDAsMi4wMTEsMS4xNTlsLTEuMTc4LjIzLS43NTguOTNBNy4xNjUsNy4xNjUsMCwwLDAsMTUuMiw3Ljk1N1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cmVjdCB4PVwiMTEuMzQ4XCIgeT1cIjkuOTQ1XCIgd2lkdGg9XCIzLjUxNVwiIGhlaWdodD1cIjAuNzkxXCIgdHJhbnNmb3JtPVwibWF0cml4KDAuMDE2LCAtMSwgMSwgMC4wMTYsIDIuNTU3LCAyMy4yNzkpXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xMy4wNTQsMTMuNTI5YTcuMTcxLDcuMTcxLDAsMCwwLTEuMS0yLjA0NmwxLjEyMi40MjYsMS4xMzUtLjM5QTcuMTY1LDcuMTY1LDAsMCwwLDEzLjA1NCwxMy41MjlaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHJlY3QgeD1cIjcuODA5XCIgeT1cIjIwLjA4MVwiIHdpZHRoPVwiNC43NTdcIiBoZWlnaHQ9XCIwLjc5MVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTIuNTYgMTguMTA4KSByb3RhdGUoLTU3LjYwMylcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTguMTQ3LDIzLjY5NGE3LjE3MSw3LjE3MSwwLDAsMCwuMTMzLTIuMzE3bC43MzQuOTQ5LDEuMTcxLjI2QTcuMTY1LDcuMTY1LDAsMCwwLDguMTQ3LDIzLjY5NFpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cmVjdCB4PVwiMTUuNDE4XCIgeT1cIjE4LjA1MVwiIHdpZHRoPVwiMC43OTFcIiBoZWlnaHQ9XCI0LjkxOVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtOC4yNTcgMTAuOTUxKSByb3RhdGUoLTMwLjcwOClcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE3LjgsMjMuODU2YTcuMTcxLDcuMTcxLDAsMCwwLTIuMDA2LTEuMTY4bDEuMTc5LS4yMjUuNzYyLS45MjdBNy4xNjUsNy4xNjUsMCwwLDAsMTcuOCwyMy44NTZaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xMy4wMjQsMTkuMTI1YTUuMjM4LDUuMjM4LDAsMCwxLTIuODA3LS43NjIsMi43NzUsMi43NzUsMCwwLDEtMS40MS0yLjIyOSwyLjc3NSwyLjc3NSwwLDAsMSwxLjI2Ni0yLjMxNCw1LjMsNS4zLDAsMCwxLDIuOTQ4LS45NDgsNi43MTIsNi43MTIsMCwwLDEsMi4xMzQuMzEzbC0uMzMxLDFhNS42NjgsNS42NjgsMCwwLDAtMS43NjktLjI2MSw0LjIzOCw0LjIzOCwwLDAsMC0yLjM1OC43NDQsMS43NjEsMS43NjEsMCwwLDAtLjgzNSwxLjQzLDEuNzYxLDEuNzYxLDAsMCwwLC45MjQsMS4zNzQsNC4yNDIsNC4yNDIsMCwwLDAsMi40LjU5Myw1LjcsNS43LDAsMCwwLDEuNjc4LS4zNzhsLjM3OC45ODVhNi44NDQsNi44NDQsMCwwLDEtMi4wMjIuNDQ4UTEzLjEyMSwxOS4xMjUsMTMuMDI0LDE5LjEyNVpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE1LjQzNSwxMi44NzZhNC4zMzgsNC4zMzgsMCwwLDAtLjk4NCwxLjYyMiwyLjA2NCwyLjA2NCwwLDAsMS0uMDE2LDIuODA2LDQuNCw0LjQsMCwwLDAsLjk4MiwxLjYsMy45MzIsMy45MzIsMCwwLDAsLjA3OC01Ljk4NkMxNS40NzYsMTIuOSwxNS40NTQsMTIuODkzLDE1LjQzNSwxMi44NzZaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xOS41MjUsMTUuMjc4YTI3LjkzMSwyNy45MzEsMCwwLDAtMS4yNjMtMy43NDIsNC4zNzYsNC4zNzYsMCwwLDAtMS43NzcuNTE3LDI2LjA2MywyNi4wNjMsMCwwLDEsMS4yNTMsMy42ODUsMjYuMDM4LDI2LjAzOCwwLDAsMSwuNzM0LDQuNTM0LDQuMzQ3LDQuMzQ3LDAsMCwwLDEuODI1LS4zNTFBMjcuOSwyNy45LDAsMCwwLDE5LjUyNSwxNS4yNzhaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNi4xNTMsMTIuMjI5QTQuNDM3LDQuNDM3LDAsMSwwLDIyLjMsMTMuNSw0LjQzNyw0LjQzNywwLDAsMCwxNi4xNTMsMTIuMjI5Wm00LjgxMiw3LjMzMmE0LjM0Niw0LjM0NiwwLDEsMSwxLjI0OS02LjAxOEE0LjM0Niw0LjM0NiwwLDAsMSwyMC45NjUsMTkuNTYxWlwiIHN0eWxlPVwiZmlsbDojMmMyOTI4XCIvPjxwYXRoIGQ9XCJNMjIuMDE1LDE5LjE4NmEuODIyLjgyMiwwLDAsMC0uMTkyLS4yMDksNC4zNDcsNC4zNDcsMCwwLDEtLjMzMy4zMTksNC41MjIsNC41MjIsMCwwLDEtLjQ0Ni4zMzcsNC43Myw0LjczLDAsMCwxLS45NC40NzcuNjY5LjY2OSwwLDAsMCwuMDMxLjEuNjQuNjQsMCwwLDAsLjA0Ny4wOTRsLjQ4Ny44TDIyLjUsMTkuOTg0WlwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxyZWN0IHg9XCIyMC43OTNcIiB5PVwiMjAuNzg0XCIgd2lkdGg9XCIyLjE0N1wiIGhlaWdodD1cIjAuNDRcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTcuNzQgMTQuNDY1KSByb3RhdGUoLTMxLjM5NClcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cmVjdCB4PVwiMjIuODY4XCIgeT1cIjIwLjk2XCIgd2lkdGg9XCIyLjE0N1wiIGhlaWdodD1cIjYuODg3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC05LjIwNyAxNi4wNDQpIHJvdGF0ZSgtMzEuMzk0KVwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxwYXRoIGQ9XCJNMjcuMDU0LDI3LjQ0M2wtLjIzNi0uMzg3LTEuODMzLDEuMTE5LjIzNi4zODdhLjkyNC45MjQsMCwwLDAsMS4yNzkuMTU5bC4xMS0uMDY3QS45MjQuOTI0LDAsMCwwLDI3LjA1NCwyNy40NDNaXCIgc3R5bGU9XCJmaWxsOiMyODI4MjhcIi8+PHBhdGggZD1cIk0yMC42OCwxNC44NDVhLjMxNS4zMTUsMCwwLDEsLjMzOC4wMjcsMS4wNzgsMS4wNzgsMCwwLDEsLjI5NC41NzgsMS4xLDEuMSwwLDAsMSwuMDI5LjY1NC4zMjcuMzI3LDAsMCwxLS4yNzguMi40NjguNDY4LDAsMCwxLS4zNy0uMS45MjIuOTIyLDAsMCwxLS4yNjItLjUuOTU1Ljk1NSwwLDAsMS0uMDEtLjU4NUEuNDY2LjQ2NiwwLDAsMSwyMC42OCwxNC44NDVabS4wNi4yMjdhLjE0OS4xNDksMCwwLDAtLjA3NC4wNjMuMjQ3LjI0NywwLDAsMC0uMDI3LjEzMiwxLjYyNiwxLjYyNiwwLDAsMCwuMDY0LjM1NSwxLjU5MiwxLjU5MiwwLDAsMCwuMTEyLjMyOS4yNjguMjY4LDAsMCwwLC4wOTQuMTEuMTQyLjE0MiwwLDAsMCwuMDk0LjAxNS4xMjEuMTIxLDAsMCwwLC4wNzgtLjA0OC4yMTEuMjExLDAsMCwwLC4wMjgtLjEyOCwyLjY0MywyLjY0MywwLDAsMC0uMTg2LS43MjIuMjM1LjIzNSwwLDAsMC0uMDkzLS4xMDdBLjExNi4xMTYsMCwwLDAsMjAuNzM5LDE1LjA3MlpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIxLjY5NCwxNC40YS4zLjMsMCwwLDEsLjM0Ni4wNTcsMS40OTMsMS40OTMsMCwwLDEsLjMyNS43LDEuNTIxLDEuNTIxLDAsMCwxLC4wNi43NzEuMzEuMzEsMCwwLDEtLjI3LjIyOC40NDYuNDQ2LDAsMCwxLS4zNzktLjEzNywxLjMxLDEuMzEsMCwwLDEtLjI5Mi0uNjE3LDEuMzQxLDEuMzQxLDAsMCwxLS4wNDEtLjdBLjQ0MS40NDEsMCwwLDEsMjEuNjk0LDE0LjRabS4wNzIuMjczYS4xMzYuMTM2LDAsMCwwLS4wNzIuMDY5LjMxNS4zMTUsMCwwLDAtLjAyMS4xNTUsMi4zNTEsMi4zNTEsMCwwLDAsLjA4NC40MjcsMi4zMSwyLjMxLDAsMCwwLC4xMzEuNC4zNDcuMzQ3LDAsMCwwLC4xLjEzNS4xMy4xMywwLDAsMCwuMS4wMjEuMTEuMTEsMCwwLDAsLjA3Ni0uMDU0LjI3NS4yNzUsMCwwLDAsLjAyMi0uMTUsMy43NzMsMy43NzMsMCwwLDAtLjIyNC0uODYyLjMxMS4zMTEsMCwwLDAtLjEtLjEzMkEuMS4xLDAsMCwwLDIxLjc2NiwxNC42NzRaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMy40NzIsMTUuOTM0bC0uMjY5LjAzOC0uMzc5LTEuNDM5YS45NTUuOTU1LDAsMCwxLS4yNTcuMzkybC0uMDg3LS4zMzFhLjg0MS44NDEsMCwwLDAsLjE2OS0uMjYuODc0Ljg3NCwwLDAsMCwuMDc1LS4zODNsLjItLjA4OVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI0LjQ1NSwxNS43OTRsLS4yNjkuMDM4LS40MjktMS42MjVhMSwxLDAsMCwxLS4yNDcuNDI5bC0uMS0uMzc2YS44NzQuODc0LDAsMCwwLC4xNjItLjI4NCwxLjAyOCwxLjAyOCwwLDAsMCwuMDY0LS40MjRsLjItLjA4OVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI0LjYzNiwxMy4xMTdjLjEyNy0uMDU1LjI0OS0uMDA4LjM2OS4xNDRhMy4xMSwzLjExLDAsMCwxLC40MTYsMS4wMzQsMy4xNDMsMy4xNDMsMCwwLDEsLjE1MSwxLjExYy0uMDI5LjE5LS4xMTEuMjk0LS4yNDcuMzEycy0uMjcyLS4wNTktLjQtLjIzMWEyLjg1NSwyLjg1NSwwLDAsMS0uMzgxLS45NSwyLjg3MSwyLjg3MSwwLDAsMS0uMTMyLTEuMDM5QS40MzcuNDM3LDAsMCwxLDI0LjYzNiwxMy4xMTdabS4xMDcuNGEuMTI0LjEyNCwwLDAsMC0uMDY3LjA4OC41ODQuNTg0LDAsMCwwLDAsLjIyMSw1LjIxOCw1LjIxOCwwLDAsMCwuMTM5LjYzNSw1LjE1Myw1LjE1MywwLDAsMCwuMTg0LjYuNjYuNjYsMCwwLDAsLjEyLjIwOC4xMTguMTE4LDAsMCwwLC4xLjA0LjEuMSwwLDAsMCwuMDcxLS4wNzIuNTI4LjUyOCwwLDAsMCwwLS4yMTYsNS40NDIsNS40NDIsMCwwLDAtLjE0NC0uNjUzLDUuNDQ3LDUuNDQ3LDAsMCwwLS4xODktLjYxOS42MTIuNjEyLDAsMCwwLS4xMTktLjIwNUEuMDkzLjA5MywwLDAsMCwyNC43NDMsMTMuNTIyWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjYuNjM4LDE1LjQ4OGwtLjI2OS4wMzgtLjU0LTIuMDM5QTEuMTUxLDEuMTUxLDAsMCwxLDI1LjYsMTRsLS4xMjYtLjQ3NWEuOTkuOTksMCwwLDAsLjE0OC0uMzM3LDEuNDM2LDEuNDM2LDAsMCwwLC4wMzktLjUxNWwuMi0uMDg4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjYuNjY2LDEyLjIzNmMuMTI3LS4wNTUuMjU1LjAxMi4zODUuMmE0LjU4NCw0LjU4NCwwLDAsMSwuNDc4LDEuMjY4LDQuNjIsNC42MiwwLDAsMSwuMjEzLDEuMzQzYy0uMDE4LjIyOS0uMS4zNTItLjIzMi4zN3MtLjI3OC0uMDgxLS40MjEtLjNhNC4yODQsNC4yODQsMCwwLDEtLjQ0My0xLjE3OSw0LjI4Myw0LjI4MywwLDAsMS0uMTk0LTEuMjcyQzI2LjQ2OCwxMi40MzgsMjYuNTM5LDEyLjI5MSwyNi42NjYsMTIuMjM2Wm0uMTMxLjVxLS4wNDYuMDE4LS4wNjQuMWEuODI5LjgyOSwwLDAsMCwuMDA5LjI2Niw3Ljg1Niw3Ljg1NiwwLDAsMCwuMTc4Ljc3OXEuMTQzLjU0MS4yMjEuNzM4YS45NDcuOTQ3LDAsMCwwLC4xMzQuMjU4LjExOS4xMTksMCwwLDAsLjEuMDUycS4wNDgtLjAwOS4wNjgtLjA4NWEuNzYyLjc2MiwwLDAsMC0uMDA4LS4yNjIsOC4xMTcsOC4xMTcsMCwwLDAtLjE4Mi0uOHEtLjE0OC0uNTU3LS4yMjctLjc1N2EuODkyLjg5MiwwLDAsMC0uMTMzLS4yNTZRMjYuODQzLDEyLjcxNCwyNi44LDEyLjczMlpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI3LjY4MSwxMS44Yy4xMjctLjA1NS4yNTcuMDIzLjM5My4yMzRhNS40MzEsNS40MzEsMCwwLDEsLjUwOSwxLjM4NSw1LjQ2Nyw1LjQ2NywwLDAsMSwuMjQ0LDEuNDZjLS4wMTMuMjQ5LS4wODguMzgxLS4yMjQuNHMtLjI4MS0uMDkyLS40My0uMzI4YTUuMTEsNS4xMSwwLDAsMS0uNDczLTEuMjk0LDUuMSw1LjEsMCwwLDEtLjIyNS0xLjM4OEMyNy40ODYsMTIuMDA4LDI3LjU1NSwxMS44NTEsMjcuNjgxLDExLjhabS4xNDQuNTQycS0uMDQ2LjAxOC0uMDYyLjEwNmEuOTcuOTcsMCwwLDAsLjAxNS4yODlxLjA0LjI1OS4yLjg1MXQuMjQuODA3YTEuMTEyLDEuMTEyLDAsMCwwLC4xNC4yODRxLjA1Ny4wNjcuMTA2LjA1OXQuMDY2LS4wOTFhLjkuOSwwLDAsMC0uMDE0LS4yODRxLS4wNC0uMjYtLjItLjg2N3QtLjI0NS0uODI3YTEuMDUzLDEuMDUzLDAsMCwwLS4xNC0uMjgxUTI3Ljg3MSwxMi4zMiwyNy44MjUsMTIuMzM4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjkuOTE1LDE1LjAzNGwtLjI3LjAzNy0uNzA2LTIuNjYxYTEuNDc4LDEuNDc4LDAsMCwxLS4xOTIuNjM2bC0uMTY2LS42MjVBMS4yNDgsMS4yNDgsMCwwLDAsMjguNzA4LDEyYTIuMjE0LDIuMjE0LDAsMCwwLDAtLjY1M2wuMi0uMDg4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjkuNzEyLDEwLjkyMWMuMTI3LS4wNTQuMjYzLjA0My40MDkuMjk0YTcuMzQ1LDcuMzQ1LDAsMCwxLC41NzIsMS42MTlBNy4zODIsNy4zODIsMCwwLDEsMzEsMTQuNTI3YzAsLjI4OC0uMDcyLjQ0LS4yMDkuNDU4cy0uMjg2LS4xMTQtLjQ0Ny0uMzkzYTYuOTg0LDYuOTg0LDAsMCwxLS41MzUtMS41MjQsNi45NDQsNi45NDQsMCwwLDEtLjI4Ny0xLjYyMUMyOS41MjMsMTEuMTUxLDI5LjU4NiwxMC45NzUsMjkuNzEyLDEwLjkyMVptLjE2OC42MzNxLS4wNDYuMDE4LS4wNTkuMTE5YTEuMjg3LDEuMjg3LDAsMCwwLC4wMjcuMzM0cS4wNTEuMy4yMzUuOTk0dC4yNzcuOTQ2YTEuNDg0LDEuNDg0LDAsMCwwLC4xNTQuMzM0cS4wNi4wOC4xMDkuMDcxdC4wNjMtLjFhMS4yLDEuMiwwLDAsMC0uMDI2LS4zM3EtLjA1MS0uMy0uMjM5LTEuMDExdC0uMjgyLS45NjVhMS40MiwxLjQyLDAsMCwwLS4xNTMtLjMzMlEyOS45MjYsMTEuNTM2LDI5Ljg4LDExLjU1M1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIxLjE2NywxNi4zNjJhLjQyMi40MjIsMCwwLDEsLjMxOC4xODUsMS4wMDUsMS4wMDUsMCwwLDEtLjI3NywxLjAzLjQyLjQyLDAsMCwxLS4zNjYsMCwuNTkuNTksMCwwLDEtLjMxMS0uMjYxLjgwOC44MDgsMCwwLDEsLjI1NC0uODkzQS41NjEuNTYxLDAsMCwxLDIxLjE2NywxNi4zNjJabS0uMDUxLjE4OWEuMTc1LjE3NSwwLDAsMC0uMTkyLjA4NywxLjQ4NywxLjQ4NywwLDAsMC0uMTU1LjU2Ny4yMTYuMjE2LDAsMCwwLC4wMzkuMTI0LjE5MS4xOTEsMCwwLDAsLjA4NC4wNTguMTQ1LjE0NSwwLDAsMCwuMTg4LS4wNjksMS42NjYsMS42NjYsMCwwLDAsLjE2NC0uNi4xODkuMTg5LDAsMCwwLS4wNC0uMTIxQS4xNjMuMTYzLDAsMCwwLDIxLjExNywxNi41NTFaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMi4zNzYsMTYuNTQ4YS4zODIuMzgyLDAsMCwxLC4zMTEuMjEyLDEuMDI0LDEuMDI0LDAsMCwxLS4wMTkuNjYsMS4wMjIsMS4wMjIsMCwwLDEtLjMxNS41ODEuMzguMzgsMCwwLDEtLjM3My4wMjUuNTMzLjUzMywwLDAsMS0uMy0uMjksMS4xODksMS4xODksMCwwLDEsLjMwOS0xLjFBLjUuNSwwLDAsMSwyMi4zNzYsMTYuNTQ4Wm0tLjA2Mi4yM2EuMTY3LjE2NywwLDAsMC0uMS4wMTMuMjM1LjIzNSwwLDAsMC0uMS4xLDIuMjE5LDIuMjE5LDAsMCwwLS4xODkuNjk0LjI2OS4yNjksMCwwLDAsLjAzMy4xNDcuMTY3LjE2NywwLDAsMCwuMDgzLjA2NC4xNDMuMTQzLDAsMCwwLC4xLDAsLjIwNi4yMDYsMCwwLDAsLjA5NC0uMSwyLjQzNiwyLjQzNiwwLDAsMCwuMi0uNzI3LjI0LjI0LDAsMCwwLS4wMzQtLjE0NEEuMTQxLjE0MSwwLDAsMCwyMi4zMTQsMTYuNzc4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjMuMzcsMTguNTQxbC0uMjgxLS4xMS4zMjgtMS4yMjVhMSwxLDAsMCwxLS40NDIuMTUybC4wNzUtLjI4MWEuODgxLjg4MSwwLDAsMCwuMjkyLS4xLjY4LjY4LDAsMCwwLC4yNTktLjIzOGwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI0Ljc5MywxNi45MTlhLjM0OC4zNDgsMCwwLDEsLjMuMjY2LDEuNzUxLDEuNzUxLDAsMCwxLS4wNzUuODcsMS43NDksMS43NDksMCwwLDEtLjM3MS43OTEuMzQ1LjM0NSwwLDAsMS0uMzg4LjA3OC40ODguNDg4LDAsMCwxLS4yODgtLjM0OCwxLjU4NywxLjU4NywwLDAsMSwuMDY3LS43OSwxLjU3NywxLjU3NywwLDAsMSwuMzU0LS43MjdBLjQ1Ny40NTcsMCwwLDEsMjQuNzkzLDE2LjkxOVptLS4wODQuMzEyYS4xNDMuMTQzLDAsMCwwLS4xMDcuMDI1LjM1My4zNTMsMCwwLDAtLjEwNi4xNDEsNC4xMjYsNC4xMjYsMCwwLDAtLjI1Ny45NDguNDA4LjQwOCwwLDAsMCwuMDIxLjE5Mi4xNDMuMTQzLDAsMCwwLC4wOC4wNzUuMTIuMTIsMCwwLDAsLjEtLjAxMS4zMTguMzE4LDAsMCwwLC4xMDUtLjEzNyw0LjQxOCw0LjQxOCwwLDAsMCwuMjY2LS45ODEuMzc0LjM3NCwwLDAsMC0uMDIyLS4xODlBLjExOS4xMTksMCwwLDAsMjQuNzEsMTcuMjMxWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjUuNjQ5LDE5LjQzbC0uMjgxLS4xMS40MjgtMS42YTEuMDMzLDEuMDMzLDAsMCwxLS40NjIuMjI3bC4xLS4zNzFhLjkuOSwwLDAsMCwuMy0uMTUxLjkzLjkzLDAsMCwwLC4yODEtLjMyMWwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI3LjIxMSwxNy4yOTFhLjM0NC4zNDQsMCwwLDEsLjI4Mi4zMTksMi42OTIsMi42OTIsMCwwLDEtLjEzMSwxLjA4LDIuNjksMi42OSwwLDAsMS0uNDI3LDEsLjM0LjM0LDAsMCwxLS40LjEzLjQ4Ny40ODcsMCwwLDEtLjI3My0uNDA1LDIuNDk0LDIuNDk0LDAsMCwxLC4xMjItMSwyLjQ3LDIuNDcsMCwwLDEsLjQxLS45MzdBLjQ1MS40NTEsMCwwLDEsMjcuMjExLDE3LjI5MVptLS4xMDYuMzk0YS4xMzMuMTMzLDAsMCwwLS4xMS4wMzYuNTA5LjUwOSwwLDAsMC0uMTE3LjE4Miw2LjYyMiw2LjYyMiwwLDAsMC0uMzI1LDEuMi41OTEuNTkxLDAsMCwwLC4wMDkuMjM3LjEzMy4xMzMsMCwwLDAsLjA3Ny4wODYuMTEuMTEsMCwwLDAsLjEwNy0uMDIzLjQ2NS40NjUsMCwwLDAsLjExNi0uMTc4LDQuNjM5LDQuNjM5LDAsMCwwLC4yLS42MTksNC42NTgsNC42NTgsMCwwLDAsLjEzNi0uNjE1LjU1Mi41NTIsMCwwLDAtLjAxLS4yMzVBLjExLjExLDAsMCwwLDI3LjEwNSwxNy42ODVaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNy45MjcsMjAuMzJsLS4yODEtLjExLjUyOC0xLjk3MWExLjEzNCwxLjEzNCwwLDAsMS0uNDgyLjNsLjEyMy0uNDZhLjk3Mi45NzIsMCwwLDAsLjMxNy0uMiwxLjI0OCwxLjI0OCwwLDAsMCwuMy0uNGwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI4Ljk1MywyMC43MjFsLS4yODEtLjExLjU3My0yLjEzOWExLjIsMS4yLDAsMCwxLS40OTEuMzM2bC4xMzQtLjVhMS4wMiwxLjAyLDAsMCwwLC4zMjMtLjIyLDEuNDEzLDEuNDEzLDAsMCwwLC4zMTQtLjQ0bC4yNDIuMDM3WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMzAuNzE3LDE3LjgzYy4xNTEuMDIzLjIzOC4xNTUuMjYyLjRhNC40MzYsNC40MzYsMCwwLDEtLjIxMywxLjM4NSw0LjQzNCw0LjQzNCwwLDAsMS0uNTA5LDEuMzA3Yy0uMTQuMTk1LS4yOC4yNjMtLjQyMi4yMDdzLS4yMjYtLjIyLS4yNS0uNDg5YTQuMTk0LDQuMTk0LDAsMCwxLC4yLTEuMyw0LjE0Myw0LjE0MywwLDAsMSwuNDkyLTEuMjQxQzMwLjQyLDE3LjksMzAuNTY2LDE3LjgwNywzMC43MTcsMTcuODNabS0uMTM3LjUxM2EuMTMyLjEzMiwwLDAsMC0uMTE1LjA1My44LjgsMCwwLDAtLjEzMy4yNDEsNy41ODcsNy41ODcsMCwwLDAtLjI0NC43OTEsNy41MzksNy41MzksMCwwLDAtLjE4Ljc3OS45My45MywwLDAsMC0uMDA5LjMuMTMxLjEzMSwwLDAsMCwuMDczLjEuMTA4LjEwOCwwLDAsMCwuMTExLS4wMzkuNzQyLjc0MiwwLDAsMCwuMTMyLS4yMzcsNy44LDcuOCwwLDAsMCwuMjQ4LS44MDYsNy44MzUsNy44MzUsMCwwLDAsLjE4NS0uOC44ODQuODg0LDAsMCwwLC4wMDgtLjNRMzAuNjMzLDE4LjM1MywzMC41OCwxOC4zNDNaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+YCxcblx0XCJFZGl0b3JDb25maWdcIjogYDxwYXRoIGQ9XCJNOC43MDksMTguMzUxYTEuMjY3LDEuMjY3LDAsMCwwLC41MzItMS4zNzlDOC42OTIsMTcuMjA3LDguNzE4LDE3Ljc0OSw4LjcwOSwxOC4zNTFaXCIgc3R5bGU9XCJmaWxsOiNlM2UzZjhcIi8+PHBhdGggZD1cIk0xNC45MjQsMTkuODUyYS44NzEuODcxLDAsMCwwLC42Mi0xLjEzNUExLjQzLDEuNDMsMCwwLDAsMTQuOTI0LDE5Ljg1MlpcIiBzdHlsZT1cImZpbGw6I2UzZTNmOFwiLz48cGF0aCBkPVwiTTIuNzEzLDI3LjA3OWExLjUzOCwxLjUzOCwwLDAsMCwuNTI0LDEuMzUzYzEuNDE0Ljc5NCw2LjM3Mi4xNzUsOC4wNTYtLjJhMTQuOTk0LDE0Ljk5NCwwLDAsMCwyLjQyNi0xLjIxMywyMi42NDMsMjIuNjQzLDAsMCwwLDQuNzEzLTIuNTU3YzEuMDgyLS43OTQsMi44LTMuMDI5LDIuOTg1LTQuMzY0bC0xLjQ3NS0uMzMyYy0uMDM1LDEuNS0uMzc1LDEuODQyLTEuNzExLDIuMTkxYTEwLjY2MiwxMC42NjIsMCwwLDEtMy41Ny4xNCwzLjM2MiwzLjM2MiwwLDAsMS0yLjMxMy0xLjU2MmMtMS4wNjUtMS40MTQuMjM2LTIuNC0xLjQ0OS0yLjUtMS43NzIsMi4xNzMtNC45LjYxMS02LjI2Ny4zOTNhMzAuMDY2LDMwLjA2NiwwLDAsMC0xLjkzOCw3LjYsMi43NDgsMi43NDgsMCwwLDEsMi4xMzguMzIzYzIuNjg4LDEuMDM5LjM0LDEuOTU1LS43MzMsMS42ODVDMy4zNjgsMjcuODY0LDMuMTQxLDI3LjM4NCwyLjcxMywyNy4wNzlaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk02LjIzMSwxNC41MzdhMTEuNTM5LDExLjUzOSwwLDAsMSwyLjk4NSwxLjEyNmMxLjUxLjc1MSwxLjc4MS42NDYsMS45MiwxLjY5My4wMTcuMTkyLS4wMTcuMy41MzIuNDcxLjkyNS4yODgtLjUzMi0uMjI3LDEuOTQ2LS4yMThBMTYuNjQsMTYuNjQsMCwwLDEsMTkuNTU5LDE4LjljLjQ1NC4yODguMzY3LjY1NSwxLjkuNjExYTE4Ljc2NywxOC43NjcsMCwwLDAtMS4yLTYuMTYyYy0uODY0LTIuMDA3LTIuMDA3LTIuMzEzLTQuMzM4LTMuMDY0LTEuMzYyLS40MzYtNS4zNTktLjkxNi02LjYtLjE0OC0xLjE2MS43MjQtMS4zNzksMS41ODktMi40NjEsMy4xMDdBNS4zNjYsNS4zNjYsMCwwLDAsNi4yMzEsMTQuNTM3WlwiIHN0eWxlPVwiZmlsbDojZmRmZGZkXCIvPjxwYXRoIGQ9XCJNMTUuODQsMTguMjQ2Yy44NzMuMzU4LS4wNDQsMi42NzEtMS4yNTcsMi4xMTItLjM5My0xLjEwOC41NDEtMS43MzcuNzk0LTIuMjM0YTguNTEsOC41MSwwLDAsMC0yLjQ2MS0uMTQ4Yy0uNTc2LjIxOC0uNzA3LDEuNDQ5LS40MSwyLjAyNSwxLjQsMi43NDEsNy41NjcsMi4xNTYsNi45MTMuMDI2LS4yNjItLjg2NC0uNTA2LTEtMS4zODgtMS4zQTYuODg1LDYuODg1LDAsMCwwLDE1Ljg0LDE4LjI0NlpcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTQuODY5LDE3Ljk0MWMuNy42NzIsMi4yNzguNzc3LDMuMy44MjlDOC4zLDE3LjQxNyw4LjQxMywxNi40LDkuNSwxNi40ODNhMS42LDEuNiwwLDAsMS0uMzA1LDIuMTMsMS4zODYsMS4zODYsMCwwLDAsMS4zNjItMS43NjMsMTQuNTQyLDE0LjU0MiwwLDAsMC00LjQ2LTEuODk0QTkuNTA2LDkuNTA2LDAsMCwwLDQuODY5LDE3Ljk0MVpcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTMuMjI4LDI2LjU4MWMuNTc2LS4wNTIsMi4wNzcuMzg0LDIuMi44NzNDNC40OTQsMjcuNTY4LDMuMzA3LDI3LjQ4LDMuMjI4LDI2LjU4MVptLS41MTUuNWMuNDI4LjMwNS42NTUuNzg2LDEuMzg4Ljk2LDEuMDc0LjI3MSwzLjQyMS0uNjQ2LjczMy0xLjY4NUEyLjc0OCwyLjc0OCwwLDAsMCwyLjcsMjYuMDMyYTMwLjA2NiwzMC4wNjYsMCwwLDEsMS45MzgtNy42YzEuMzcuMjE4LDQuNDk1LDEuNzgxLDYuMjY3LS4zOTMsMS42ODUuMS4zODQsMS4wODIsMS40NDksMi41QTMuMzYyLDMuMzYyLDAsMCwwLDE0LjY2MiwyMi4xYTEwLjY2MiwxMC42NjIsMCwwLDAsMy41Ny0uMTRjMS4zMzUtLjM0OSwxLjY3Ni0uNjksMS43MTEtMi4xOTFsMS40NzUuMzMyYy0uMTgzLDEuMzM1LTEuOSwzLjU3LTIuOTg1LDQuMzY0YTIyLjY0MywyMi42NDMsMCwwLDEtNC43MTMsMi41NTcsMTQuOTk0LDE0Ljk5NCwwLDAsMS0yLjQyNiwxLjIxM2MtMS42ODUuMzc1LTYuNjQyLDEtOC4wNTYuMkExLjUzOCwxLjUzOCwwLDAsMSwyLjcxMywyNy4wNzlabTEyLjIxMS03LjIyN2ExLjQzLDEuNDMsMCwwLDEsLjYyLTEuMTM1QS44NzEuODcxLDAsMCwxLDE0LjkyNCwxOS44NTJabS45MTYtMS42MDZhNi44ODUsNi44ODUsMCwwLDEsMi4xOTEuNDhjLjg4Mi4zLDEuMTI2LjQzNiwxLjM4OCwxLjMuNjU1LDIuMTMtNS41MTYsMi43MTQtNi45MTMtLjAyNi0uMy0uNTc2LS4xNjYtMS44MDcuNDEtMi4wMjVhOC41MSw4LjUxLDAsMCwxLDIuNDYxLjE0OGMtLjI1My41LTEuMTg3LDEuMTI2LS43OTQsMi4yMzRDMTUuOCwyMC45MTcsMTYuNzEzLDE4LjYsMTUuODQsMTguMjQ2Wm0tNy4xMzEuMWMuMDA5LS42LS4wMTctMS4xNDMuNTMyLTEuMzc5QTEuMjY3LDEuMjY3LDAsMCwxLDguNzA5LDE4LjM1MVptLTMuODQtLjQxYTkuNTA2LDkuNTA2LDAsMCwxLDEuMjIyLTIuOTg1LDE0LjU0MiwxNC41NDIsMCwwLDEsNC40NiwxLjg5NEExLjM4NiwxLjM4NiwwLDAsMSw5LjE5LDE4LjYxM2ExLjYsMS42LDAsMCwwLC4zMDUtMi4xM2MtMS4wODItLjA3OS0xLjIuOTM0LTEuMzI3LDIuMjg3QzcuMTQ3LDE4LjcxNyw1LjU2NywxOC42MTMsNC44NjksMTcuOTQxWk00LDE3LjI0MmMtLjMyMy0uODktLjMyMy0yLjI3OCwxLjA0Ny0yLjM5MmwtLjcsMS45NDZDNC4xNjIsMTcuMjE2LDQuMTYyLDE3LjEyLDQsMTcuMjQyWm0yLjIzNC0yLjcwNmE1LjM2Niw1LjM2NiwwLDAsMSwuNjI4LTEuMjkyYzEuMDgyLTEuNTE5LDEuMy0yLjM4MywyLjQ2MS0zLjEwNywxLjIzOS0uNzY4LDUuMjM3LS4yODgsNi42LjE0OCwyLjMzLjc1MSwzLjQ3NCwxLjA1Niw0LjMzOCwzLjA2NGExOC43NjcsMTguNzY3LDAsMCwxLDEuMiw2LjE2MmMtMS41MzYuMDQ0LTEuNDQ5LS4zMjMtMS45LS42MTFhMTYuNjQsMTYuNjQsMCwwLDAtNS45NDQtMS4yOTJjLTIuNDc5LS4wMDktMS4wMjEuNTA2LTEuOTQ2LjIxOC0uNTUtLjE3NS0uNTE1LS4yNzktLjUzMi0uNDcxLS4xNC0xLjA0Ny0uNDEtLjk0My0xLjkyLTEuNjkzQTExLjUzOSwxMS41MzksMCwwLDAsNi4yMzEsMTQuNTM3Wm0xNS40NDktLjQyOGMtLjE2Ni0uNTUuMTQtLjUxNS42NzItLjg5YTkuMDIxLDkuMDIxLDAsMCwxLC45MjUtLjY1NWMxLjQwNS0uNzg2LDQuMDI0LS45MTYsNS4xNDEuMDE3QTIuNDc5LDIuNDc5LDAsMCwxLDI5LjUsMTQuNjVhNS44MzgsNS44MzgsMCwwLDEtMi42MTgsMy44MzIsNS4yMTMsNS4yMTMsMCwwLDEtNC43ODMsMS4yYy0uMTU3LS4zODQtLjAzNS0yLjgxOS0uMjE4LTMuNzE4LS4xNjYtLjgtLjA3OS0uODkuMzg0LTEuMzcsMS4zNjItMS40MTQsNC4zMTItMi40NDQsNS45ODgtMS4yMzEuNzA3LjUyNC41MDYuNzI0Ljg3MywxLjEyNi40NTQtLjQ4OS0uMzkzLTIuMTMtMy41MTctMi4wMjVDMjMuNDg2LDEyLjUyOSwyMi41NywxNC4xODcsMjEuNjgsMTQuMTA5Wk04Ljk3MSw5LjE0M2E4LjA5NCw4LjA5NCwwLDAsMSwyLjI3OC00LjZDMTIuNiwzLjUsMTQuMDE2LDIuNTA5LDE2LjA5NCwzLjY4N2MuNTE1LjI4OC40ODkuNDM2LjU0MSwxLjE1MmEzLjMxMiwzLjMxMiwwLDAsMS0uMTkyLDEuNWMtMS4zNzksNC40NTEtMi41MzEsMS44OTQtNi45NDgsMi45NWE2LjM3NCw2LjM3NCwwLDAsMSwyLjEyMS0zLjQxM2MxLjItMS4xNjEsMi4wNi0xLjkxMSwzLjg1OC0xLjY2N2ExLjg0MiwxLjg0MiwwLDAsMS0uMDUyLDIuMzIyYy0uOCwxLjI5Mi0xLDEuMjEzLS44ODIsMi4wOTUuNjI4LS4xNTcuODItLjc2OCwxLjEwOC0xLjM3OSwxLjc1NC0zLjY2Ni0uNzk0LTQuMTExLTIuMzU3LTMuNDM5QTEwLjM3MiwxMC4zNzIsMCwwLDAsOS43NjYsNy41NTRjLS4xMjIuMjQ0LS4yNTMuNTU5LS4zNjcuODI5Wm02LjkxMy4xODNDMTYuMDY3LDguMjM1LDE3LjE1LDcuOTY0LDE3LjE1LDQuNmMwLTEuNDQ5LTEuNzgxLTIuNzQ5LTQuMTExLTEuNzgxLTIsLjgyLTIuMywxLjQ0OS0zLjM2OSwzLjA1NS0xLDEuNTE5LS45NjksMy4xODYtMS44MzMsNC41OTEtLjI1My40LS40OC41NDEtLjc1OS45NDMtLjIuMy0uMzQ5LjY3Mi0uNTUsMS4wMjFBMTIuOTQsMTIuOTQsMCwwLDAsNS4zNjcsMTQuNGMtMS4wNDcuMDI2LTEuOTI5LjA0NC0yLjAzNCwxLjEyNi0uMTQsMS40ODQuNTU5LDEuODUuNTU5LDIuNDA5LS4wMDkuNi0yLjQ1Myw2LjY3Ny0xLjc3MiwxMC4zLjE5MiwxLC44NDcsMSwxLjg5NCwxLjEyNmExNy45MywxNy45MywwLDAsMCw4LjA1Ni0uNzA3bDQuMS0xLjk2NGExOC44NSwxOC44NSwwLDAsMCwzLjU2MS0yLjUsMTIuMzgzLDEyLjM4MywwLDAsMCwxLjMwOS0xLjcxOSwzLjIxMywzLjIxMywwLDAsMCwuOC0yLjIwOCw4LjQ3Myw4LjQ3MywwLDAsMSwyLjk4NSwxYy0uMDYxLjYtLjM1OC4zMTQtLjM1OC44NTVhMS4zNTUsMS4zNTUsMCwwLDAsMS4wNDctLjg5Yy0uMzU4LS41MjQtLjczMy0uNDM2LTEuMjQ4LS44NTVhOC4yMTIsOC4yMTIsMCwwLDEsMS43MTktLjcwN2MxLjIyMi0uNTA2LDMuMzA4LTIuMDQyLDMuODIzLTMuNDM5YTQuNDQ5LDQuNDQ5LDAsMCwwLS41NTktMy43MzYsNS40NDQsNS40NDQsMCwwLDAtMy42NDgtMS4xNjFjLTEuNTgsMC0zLjIxMiwxLjEzNS00LjQ4NiwxLjYyMy0uNDg5LS40MjgtLjUyNC0uOTE2LS44ODItMS4zODhBMTIuMjgxLDEyLjI4MSwwLDAsMCwxNS44ODQsOS4zMjZaXCIgc3R5bGU9XCJmaWxsOiMwMjAyMDJcIi8+PHBhdGggZD1cIk0yMS42OCwxNC4xMDljLjg5LjA3OSwxLjgwNy0xLjU4LDMuOTI4LTEuNjUsMy4xMjUtLjEsMy45NzEsMS41MzYsMy41MTcsMi4wMjUtLjM2Ny0uNC0uMTY2LS42LS44NzMtMS4xMjYtMS42NzYtMS4yMTMtNC42MjYtLjE4My01Ljk4OCwxLjIzMS0uNDYzLjQ4LS41NS41NjctLjM4NCwxLjM3LjE4My45LjA2MSwzLjMzNC4yMTgsMy43MThhNS4yMTMsNS4yMTMsMCwwLDAsNC43ODMtMS4yQTUuODM4LDUuODM4LDAsMCwwLDI5LjUsMTQuNjVhMi40NzksMi40NzksMCwwLDAtMS4wODItMi4wNjljLTEuMTE3LS45MzQtMy43MzYtLjgtNS4xNDEtLjAxN2E5LjAyMSw5LjAyMSwwLDAsMC0uOTI1LjY1NUMyMS44MTksMTMuNTk0LDIxLjUxNCwxMy41NTksMjEuNjgsMTQuMTA5WlwiIHN0eWxlPVwiZmlsbDojZmRmMmYyXCIvPjxwYXRoIGQ9XCJNOC45NzEsOS4xNDMsOS40LDguMzgzYy4xMTMtLjI3MS4yNDQtLjU4NS4zNjctLjgyOUExMC4zNzIsMTAuMzcyLDAsMCwxLDEzLjI5MiwzLjgxYzEuNTYyLS42NzIsNC4xMTEtLjIyNywyLjM1NywzLjQzOS0uMjg4LjYxMS0uNDgsMS4yMjItMS4xMDgsMS4zNzktLjEyMi0uODgyLjA3OS0uOC44ODItMi4wOTVhMS44NDIsMS44NDIsMCwwLDAsLjA1Mi0yLjMyMmMtMS44LS4yNDQtMi42NjIuNTA2LTMuODU4LDEuNjY3QTYuMzc0LDYuMzc0LDAsMCwwLDkuNSw5LjI5MWM0LjQxNi0xLjA1Niw1LjU2OSwxLjUsNi45NDgtMi45NWEzLjMxMiwzLjMxMiwwLDAsMCwuMTkyLTEuNWMtLjA1Mi0uNzE2LS4wMjYtLjg2NC0uNTQxLTEuMTUyLTIuMDc3LTEuMTc4LTMuNDkxLS4xOTItNC44NDQuODU1QTguMDk0LDguMDk0LDAsMCwwLDguOTcxLDkuMTQzWlwiIHN0eWxlPVwiZmlsbDojZmVmM2YzXCIvPjxwYXRoIGQ9XCJNNCwxNy4yNDJjLjE2Ni0uMTIyLjE2Ni0uMDI2LjM0OS0uNDQ1bC43LTEuOTQ2QzMuNjczLDE0Ljk2NCwzLjY3MywxNi4zNTIsNCwxNy4yNDJaXCIgc3R5bGU9XCJmaWxsOiNlZmVmZWZcIi8+PHBhdGggZD1cIk01LjQyOCwyNy40NTRjLS4xMjItLjQ4OS0xLjYyMy0uOTI1LTIuMi0uODczQzMuMzA3LDI3LjQ4LDQuNDk0LDI3LjU2OCw1LjQyOCwyNy40NTRaXCIgc3R5bGU9XCJmaWxsOiNmYWYxZjFcIi8+YCxcblx0XCJFSlNcIjogYDxwYXRoIGQ9XCJNMiwxNy42NzJWMTQuMzI4bDExLjg2LTYuMlYxMS4yTDUuMSwxNS45MzlsOC43NjIsNC44MzV2My4xWm0yNy44MTQtOC44OEwxOS40NjUsMjMuMjI5SDE1LjkxMkwyNi4yODEsOC43OTFaTTI2Ljk0NywyMS41YS43OTQuNzk0LDAsMCwwLC42MTktLjI3OCwxLjA2MSwxLjA2MSwwLDAsMCwuMjQ4LS43MzIsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC0uNzUzLjc2OC43NjgsMCwwLDAtMS4yMTcsMCwxLjE0MSwxLjE0MSwwLDAsMC0uMjQ4Ljc1MywxLjA5LDEuMDksMCwwLDAsLjIzNy43MzJBLjc2My43NjMsMCwwLDAsMjYuOTQ3LDIxLjVabTIuMTg2LDEuMDQyYTMuMjM3LDMuMjM3LDAsMCwxLTQuMzUyLS4wMSwyLjg2NCwyLjg2NCwwLDAsMSwwLTQuMSwzLjIyMywzLjIyMywwLDAsMSw0LjM1MiwwQTIuNzczLDIuNzczLDAsMCwxLDMwLDIwLjQ4NiwyLjc0LDIuNzQsMCwwLDEsMjkuMTM0LDIyLjUzOFpNMTguODIxLDEzLjA2MWEuNzk0Ljc5NCwwLDAsMCwuNjE5LS4yNzgsMS4wNjEsMS4wNjEsMCwwLDAsLjI0OC0uNzMyLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDgtLjc1My43NjkuNzY5LDAsMCwwLTEuMjE3LDAsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC43NTMsMS4wOSwxLjA5LDAsMCwwLC4yMzcuNzMyQS43NjMuNzYzLDAsMCwwLDE4LjgyMSwxMy4wNjFaTTIxLjAwNywxNC4xYTMuMjM3LDMuMjM3LDAsMCwxLTQuMzUyLS4wMSwyLjg2NCwyLjg2NCwwLDAsMSwwLTQuMSwzLjIyMywzLjIyMywwLDAsMSw0LjM1MiwwLDIuNzczLDIuNzczLDAsMCwxLC44NjYsMi4wNjNBMi43NCwyLjc0LDAsMCwxLDIxLjAwNywxNC4xWlwiIHN0eWxlPVwiZmlsbDojOTBhOTNhXCIvPmAsXG5cdFwiRWxpeGlyXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNy4yNDlcIiB5MT1cIi0zMzUuNTk3XCIgeDI9XCIxNC45NzNcIiB5Mj1cIi0zMDkuOTk0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC0zMDYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjAxXCIgc3RvcC1jb2xvcj1cIiNmN2Y2ZjhcIiBzdG9wLW9wYWNpdHk9XCIwLjA0XCIvPjxzdG9wIG9mZnNldD1cIjAuMDlcIiBzdG9wLWNvbG9yPVwiI2FhOWNiM1wiIHN0b3Atb3BhY2l0eT1cIjAuMzlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yXCIgc3RvcC1jb2xvcj1cIiM2ZjU2N2VcIiBzdG9wLW9wYWNpdHk9XCIwLjY2XCIvPjxzdG9wIG9mZnNldD1cIjAuMzJcIiBzdG9wLWNvbG9yPVwiIzQ1MjQ1OVwiIHN0b3Atb3BhY2l0eT1cIjAuODZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMyZDA4NDNcIiBzdG9wLW9wYWNpdHk9XCIwLjk3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzI2MDAzZFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2VsaXhpcjwvdGl0bGU+PHBhdGggZD1cIk0xNy44LDguNTkxYzIuMDc5LDQuNTg0LDcuNjQsNi41LDcuMTQxLDEyLjQ3NC0uNTgyLDcuMDE3LTUuNTUxLDguNzg0LTguMzE2LDguOTA5YTguODE1LDguODE1LDAsMCwxLTkuNC03LjQ4NUM1LjYxOCwxNS4wNDYsMTIuNjU1LDMuNjMyLDE2LjcwOSwyQTE1LjA4MywxNS4wODMsMCwwLDAsMTcuOCw4LjU5MVptLS4xNjYsMTguODU3YS40MjMuNDIzLDAsMCwwLS4wNTctLjMyN2MtLjU5My0xLjEtNS44MS0xLjY0NS02LjkwNy0xLjc1MmE4LjI3Miw4LjI3MiwwLDAsMCwxLjYzNSwxLjMsNy43NjYsNy43NjYsMCwwLDAsMi44MTQsMS4wNDFDMTUuOTIyLDI3LjgzMSwxNy40NjcsMjcuOTMzLDE3LjYzNSwyNy40NDdaXCIgc3R5bGU9XCJmaWxsOiM3YzY0OGZcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuMjVcIj48cGF0aCBkPVwiTTE4LjI0OCwxMC42MThjNC40Nyw0LjgyMyw2LjQ0NSw0Ljk3OSw2LjIzNywxMC40NzgtLjI0OSw2LjQ3Ni00LjU0Myw4LjE5MS03LjA1OCw4LjQyLTQuMi41NTEtNy40OTUtMS41MjgtOC4zNTgtNS42ODZDNy4zMTIsMTcuMDYzLDEyLjk3OCw2LjAyMywxNi42MzcsNC4zNkExNS4zMjMsMTUuMzIzLDAsMCwwLDE4LjI1OCwxMC42WlwiIHN0eWxlPVwiZmlsbDojMjYwMDNkXCIvPjwvZz48ZyBzdHlsZT1cIm9wYWNpdHk6MC43NVwiPjxwYXRoIGQ9XCJNMTcuMzg1LDkuOTIxQzIwLjM2OSwxNCwyNC4zMTksMTMuNywyNSwxOS42NDFjLjA5NCw2LjkyMy0zLjYsOS4yODMtNi4yMzcsOS45NDgtNC41LDEuMjc5LTguNTE0LS42NDUtMTAuMDk0LTUtMy4wMzUtNywyLjY1MS0xOC41MTQsNi4zMS0yMC45MTVhMTUuMDgzLDE1LjA4MywwLDAsMCwyLjM3LDYuMjM3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjwvZz5gLFxuXHRcIkVsbVwiOiBgPHBhdGggZD1cIk0xNiwxNi43NjgsMi43NjgsMzBIMjkuMjMyWlwiIHN0eWxlPVwiZmlsbDojNWZiNGNiXCIvPjxwYXRoIGQ9XCJNMjQuMTMsMjMuMzYyLDMwLDI5LjIzMlYxNy40OTJaXCIgc3R5bGU9XCJmaWxsOiNlZWE0MDBcIi8+PHBhdGggZD1cIk0xNS4yMzIsMTYsMiwyLjc2OFYyOS4yMzJaXCIgc3R5bGU9XCJmaWxsOiM1OTYyNzdcIi8+PHBhdGggZD1cIk0zMCwxNC40NDhWMkgxNy41NTJaXCIgc3R5bGU9XCJmaWxsOiM1ZmI0Y2JcIi8+PHBhdGggZD1cIk0yMy4zOTIsOS4zNzZsNi41OTQsNi41OTQtNi42MjQsNi42MjRMMTYuNzY4LDE2Wk0yLjc2OCwyLDguODYzLDguMUgyMi4xMTFMMTYuMDE2LDJaXCIgc3R5bGU9XCJmaWxsOiM4Y2Q2MzZcIi8+PHBhdGggZD1cIk0xNiwxNS4yMzJsNi4wNTEtNi4wNTFIOS45NDlaXCIgc3R5bGU9XCJmaWxsOiNlZWE0MDBcIi8+YCxcblx0XCJFUkJcIjogYDxwYXRoIGQ9XCJNNy4yNSwyNC43NWgxNy41TDEyLjUsMTIuNSw3LjI1LDE3Ljc1Wk0yLDMwSDMwVjJIMTZMMiwxNlptMjUuMzc1LTIuNjI1SDQuNjI1di0xMC41bDEyLjI1LTEyLjI1aDEwLjVaXCIgc3R5bGU9XCJmaWxsOiM5MjFhMWVcIi8+YCxcblx0XCJFcmxhbmdcIjogYDxwYXRoIGQ9XCJNNi4zODgsMjMuODY3YTExLjAxMiwxMS4wMTIsMCwwLDEtMy40NDEtOC4yMzQsMTAuNzY1LDEwLjc2NSwwLDAsMSwyLjg2NC03LjVIMnYxNS43M1ptMjAuMDY2LDBhMTYuNDQsMTYuNDQsMCwwLDAsMi41MzctMy4xMzZsLTQuMjE4LTEuODczYTguMzA2LDguMzA2LDAsMCwxLTYuNjQxLDQuMTJjLTQuMzU5LS4wMTQtNi4wNzItMy4zMjktNi4wNjMtNy41ODRIMjguMzZhNi40NjUsNi40NjUsMCwwLDAsMC0uOTM1LDkuMDU3LDkuMDU3LDAsMCwwLTIuMDI5LTYuMzI2SDMwdjE1LjczSDI2LjQ1NlpNMTIuMzMyLDExLjc0MmEzLjcyMywzLjcyMywwLDAsMSwzLjktMy4yMywzLjI5LDMuMjksMCwwLDEsMy41MzIsMy4yM1pcIiBzdHlsZT1cImZpbGw6I2EyMDAzZVwiLz5gLFxuXHRcIkYjXCI6IGA8cGF0aCBkPVwiTTIsMTYsMTUuMjg4LDIuNzEyVjkuMzU2TDguNjQ0LDE2bDYuNjQ0LDYuNjQ0djYuNjQ0WlwiIHN0eWxlPVwiZmlsbDojMzc4YmJhXCIvPjxwYXRoIGQ9XCJNMTAuNTQyLDE2bDQuNzQ2LTQuNzQ2djkuNDkyWlwiIHN0eWxlPVwiZmlsbDojMzc4YmJhXCIvPjxwYXRoIGQ9XCJNMzAsMTYsMTYuMjM3LDIuNzEyVjkuMzU2TDIyLjg4MSwxNmwtNi42NDQsNi42NDR2Ni42NDRaXCIgc3R5bGU9XCJmaWxsOiMzMGI5ZGJcIi8+YCxcblx0XCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIjogYDxwYXRoIGQ9XCJNNS44LDI0LjZsLjE3LS4yMzdMMTMuOTksOS4xNDlsLjAxNy0uMTYxLTMuNTM1LTYuNjRhLjY1Ni42NTYsMCwwLDAtMS4yMjcuMjA3WlwiIHN0eWxlPVwiZmlsbDojZmZjMjRhXCIvPjxwYXRoIGQ9XCJNNS45LDI0LjQybC4xMjgtLjI1TDEzLjk2NSw5LjExNCwxMC40MzksMi40NDhhLjYuNiwwLDAsMC0xLjEzMy4yMDZaXCIgc3R5bGU9XCJmaWxsOiNmZmE3MTJcIi8+PHBhdGggZD1cIk0xNi41ODQsMTQuMDFsMi42MzItMi43TDE2LjU4Myw2LjI4OWEuNjc4LjY3OCwwLDAsMC0xLjE5NSwwTDEzLjk4MSw4Ljk3MVY5LjJaXCIgc3R5bGU9XCJmaWxsOiNmNGJkNjJcIi8+PHBhdGggZD1cIk0xNi41MzcsMTMuOSwxOS4xLDExLjI4LDE2LjUzNyw2LjRhLjU4OS41ODksMCwwLDAtMS4wNzQtLjA0N0wxNC4wNDksOS4wODJsLS4wNDIuMTM5WlwiIHN0eWxlPVwiZmlsbDojZmZhNTBlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjUuODAyIDI0LjYwMSA1Ljg3OSAyNC41MjMgNi4xNTggMjQuNDEgMTYuNDE4IDE0LjE4OCAxNi41NDggMTMuODM0IDEzLjk4OSA4Ljk1NiA1LjgwMiAyNC42MDFcIiBzdHlsZT1cImZpbGw6I2Y2ODIwY1wiLz48cGF0aCBkPVwiTTE2LjkxMiwyOS43NTYsMjYuMiwyNC41NzcsMjMuNTQ2LDguMjQ2QS42MzUuNjM1LDAsMCwwLDIyLjQ3MSw3LjlMNS44LDI0LjZsOS4yMzMsNS4xNTVhMS45MjcsMS45MjcsMCwwLDAsMS44NzgsMFwiIHN0eWxlPVwiZmlsbDojZmRlMDY4XCIvPjxwYXRoIGQ9XCJNMjYuMTE1LDI0LjUzNCwyMy40ODMsOC4zMjZhLjU1Ny41NTcsMCwwLDAtLjk2Ny0uMzUzTDUuOSwyNC41NjlsOS4xMzEsNS4xYTEuOTEyLDEuOTEyLDAsMCwwLDEuODYzLDBaXCIgc3R5bGU9XCJmaWxsOiNmY2NhM2ZcIi8+PHBhdGggZD1cIk0xNi45MTIsMjkuNmExLjkyNywxLjkyNywwLDAsMS0xLjg3OCwwTDUuODc2LDI0LjUyMiw1LjgsMjQuNmw5LjIzMyw1LjE1NWExLjkyNywxLjkyNywwLDAsMCwxLjg3OCwwTDI2LjIsMjQuNTc3bC0uMDIzLS4xNFpcIiBzdHlsZT1cImZpbGw6I2VlYWIzN1wiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yMDEgMTMgMTUuNDA1IDE2LjUzNCAxNS40MDUgMjcuNjAzIDIxLjYyNSAyNC43ODUgMjEuNjI1IDMxIDMxIDI2Ljc0MyAzMSAxNi41MzQgMjMuMjAxIDEzXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjAxIDE0LjczIDE2Ljk4NSAxNy41NDkgMTYuOTg1IDIwLjMyNyAyMy4yMDEgMTcuNTA3IDI5LjQyMSAyMC4zMjcgMjkuNDIxIDE3LjU0OSAyMy4yMDEgMTQuNzNcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yMDEgMTkuNTY0IDE2Ljk4NSAyMi4zODEgMTYuOTg1IDI1LjE1OCAyMy4yMDEgMjIuMzM3IDI5LjQyMSAyNS4xNTggMjkuNDIxIDIyLjM4MSAyMy4yMDEgMTkuNTY0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNjA2IDI2LjA5OCAyNS41NTEgMjQuNzEyIDIzLjIwMSAyNS43NzggMjMuMjAxIDI4LjU0OCAyOC42MDYgMjYuMDk4XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJGbG93XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNjcuOTA3XCIgeTE9XCItMzA4LjU1MVwiIHgyPVwiLTY3Ljg1N1wiIHkyPVwiLTMwOC41NjRcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4Ny44MjIsIDAsIDAsIC04OC41MzMsIDU5ODQuNTMyLCAtMjcyOTAuNjE3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDQ0MVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmIwNDdcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNjcuNjc0XCIgeTE9XCItMzEwLjEyMVwiIHgyPVwiLTY3LjY0N1wiIHkyPVwiLTMxMC4wNjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4Ny44MjIsIDAsIDAsIC04OC41MzMsIDU5NjQuNjY3LCAtMjc0NDMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNzU0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYjUzMlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi02Ny4wMjlcIiB5MT1cIi0zMTAuOTFcIiB4Mj1cIi02Ny4wMjlcIiB5Mj1cIi0zMTAuODZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4Ny44MjIsIDAsIDAsIC04OC41MzMsIDU5MDIuOCwgLTI3NTE4LjczMylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ2NDJcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNDQxXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYjUzMlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIi02Ni4yNTJcIiB5MT1cIi0zMTAuMzc3XCIgeDI9XCItNjYuMzJcIiB5Mj1cIi0zMTAuMzYyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTA2LjE5OCwgMCwgMCwgLTg4LjU1MSwgNzA0OC40MjgsIC0yNzQ3NC4xNjcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNDQxXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYTgyOVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2Zsb3c8L3RpdGxlPjxwYXRoIGQ9XCJNMjMuNDI2LDI5LjQxVjIyLjE3MmgtNy4xOGw3LjE4LDcuMjM4XCIgc3R5bGU9XCJmaWxsOiNmZmRmNTE7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMjQuMjMxLDI1LjMwNlYxNy40NzdIMTYuNDY2bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZjg5MDA7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMTkuNTE1LDIyLjE3MVYzMGg3Ljc2NmwtNy43NjYtNy44MjlcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MTtmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMi42MDgsMThWMTEuODA5SDE2LjQ2NkwyMi42MDgsMThcIiBzdHlsZT1cImZpbGw6I2ZmZGY0ZjtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0yNS41MjQsMTYuNTI1VjguN0gxNy43NTlsNy43NjYsNy44MjlcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjc5OTk5OTk1MjMxNjI4NDtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xMi4yODgsMlY5LjgyOWg3Ljc2NkwxMi4yODgsMlwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuODAwMDAwMDExOTIwOTI5O2ZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTE0LjExLDE0LjI2MlY2LjQzM0g0LjcxOWw3LjczMiw3LjgzLDEuNjU5LDBcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjg3OTk5OTk5NTIzMTYyODtmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xNC4xMSwyOS45NThWMjAuNDg3SDQuNzE5bDkuMzkxLDkuNDcxXCIgc3R5bGU9XCJmaWxsOiNmZmI3MDA7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMTQuMTEyLDIyLjExNFYxNC4yODVINi4zNDZsNy43NjYsNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmYjcwMDtmaWxsLW9wYWNpdHk6MC41XCIvPjxwYXRoIGQ9XCJNMTYuNDY1LDExLjgwOXY3LjgyOWg3Ljc2NmwtNy43NjYtNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmY2QyNTtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0xNC4wOTIsMTIuNjkxVjQuODYySDYuMzI2bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZjg5MDA7ZmlsbC1vcGFjaXR5OjAuNzAwMDAwMDQ3NjgzNzE2XCIvPjxwYXRoIGQ9XCJNMTYuMjQ2LDIyLjE3MVYzMGg3Ljc2NmwtNy43NjYtNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmODkwMDtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuMTIyIDIyLjE3MiAxOC42MDkgMTkuNjM4IDE2LjQ2NSAxOS42MzggMTYuNDY2IDExLjgwOSAyMC44NDcgMTEuODA5IDE4Ljg4MiA5LjgyOSAxNC4wOTIgOS44MjkgMTQuMTEgMTQuMjYyIDE0LjExIDIwLjQ4NyAxNC4xMSAzMCAxNi4yNDYgMzAgMTYuMjQ2IDIyLjE3MiAyMS4xMjIgMjIuMTcyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJGb3J0cmFuXCI6IGA8ZyBpZD1cImczNzY4XCI+PHJlY3QgaWQ9XCJyZWN0ODgxXCIgeD1cIjIuMzRcIiB5PVwiMi4zNFwiIHdpZHRoPVwiMjcuMzNcIiBoZWlnaHQ9XCIyNy4zM1wiIHJ4PVwiNS4wOFwiIHN0eWxlPVwiZmlsbDojNzM0Zjk2XCIvPjxwYXRoIGlkPVwicGF0aDE0MTJcIiBkPVwiTTYuMDYsMjUuNWMwLTEuMDksMC0xLjE5LjEtMS4xOWwxLjI1LS4wNmMxLDAsMS4xOC0uMDYsMS40Mi0uMTlhLjc0Ljc0LDAsMCwwLC4zOS0uMzdjLjEyLS4yMy4xMi0uMjkuMTItNy43MiwwLTcsMC03LjUtLjEtNy42N2ExLjA2LDEuMDYsMCwwLDAtLjYzLS41LDEwLjIzLDEwLjIzLDAsMCwwLTEuMzgtLjFsLTEuMTcsMFY1LjMySDI1Ljk0djguODJIMjQuODlhOC41Niw4LjU2LDAsMCwxLTEuMi0uMDVjLS4xNCwwLS4xNS0uMDUtLjIyLS45NWExMi43MywxMi43MywwLDAsMC0uMzUtMi40MywzLjIyLDMuMjIsMCwwLDAtMi42My0yLjgxYy0uNTctLjEtMy4xLS4yLTUuMTktLjJIMTMuODd2Ni42M2wuNzUsMEE2LjMzLDYuMzMsMCwwLDAsMTYuNDksMTRhMS44OCwxLjg4LDAsMCwwLC44OS0uOTEsNS44Niw1Ljg2LDAsMCwwLC4zOS0xLjc1YzAtLjMzLjA4LS42Ni4xLS43M3MwLS4xMywxLjE4LS4xM0gyMC4yVjIxLjA2SDE3Ljg1bDAtLjYxYTcuODUsNy44NSwwLDAsMC0uNTQtMi42NmMtLjM2LS42OC0xLjA1LTEtMi40NS0xLjA4bC0uNzYtLjA3LS4yLDAsMCwzLjM0YzAsMy41MSwwLDMuNjUuMywzLjk0cy40My4zMiwzLjIyLjQyYy4wNSwwLC4wNy4yOC4wNywxLjE5djEuMThINi4wNlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48L2c+YCxcblx0XCJGcmVlTWFya2VyIFRlbXBsYXRlIExhbmd1YWdlXCI6IGA8cGF0aCBkPVwiTTI0LjAyMywyMC45LDI1LjQwOCwyM2w0LjYxNS03TDI1LjQwOCw5bC0xLjM4NSwyLjFMMjcuMjU1LDE2WlwiIHN0eWxlPVwiZmlsbDojMDA1MGIyXCIvPjxwYXRoIGQ9XCJNNy45NzcsMTEuMSw2LjU5Miw5LDEuOTc3LDE2bDQuNjE1LDcsMS4zODUtMi4xTDQuNzQ1LDE2WlwiIHN0eWxlPVwiZmlsbDojMDA1MGIyXCIvPjxwYXRoIGQ9XCJNMTMuMDM1LDloMi44bC0uNDk0LDIuOGgyLjhMMTguNjM1LDloMi44bC0uNDk0LDIuOGgyLjhsLS40OTUsMi44aC0yLjhsLS40OTMsMi44aDIuOGwtLjQ5NCwyLjhoLTIuOEwxOC45NjcsMjNoLTIuOGwuNDkzLTIuOC0yLjgsMEwxMy4zNzUsMjNIMTAuNTY3bC40OTMtMi44LTIuOCwwLC40OTQtMi44aDIuOGwuNDkzLTIuNzkzaC0yLjhMOS43NDEsMTEuOGgyLjhabTEuMzE5LDguNGgyLjhsLjQ5NC0yLjhoLTIuOFpcIiBzdHlsZT1cImZpbGw6IzAwNTBiMlwiLz5gLFxuXHRcIkdhbWVNYWtlciBMYW5ndWFnZVwiOiBgPHBhdGggZD1cIk0xNC4yMTYsMjQuMTY3aC0uOTg5YTMuMjQsMy4yNCwwLDAsMS0yLjgxMS0xLjY0OUw2LjY2NywxNmw0LjY4MS04LjE2N0gxNi4ybC00LjM0LDguMTc2LjA1Ny4wMzJMMTMuOTM2LDE5LjVIMTYuODJaTTguNDU1LDEwLjUzNWwtMS4yNy0yLjIxYTEsMSwwLDAsMC0uODU5LS40OTJIMmw0LDYuOTkyWk0yMS41NCw5LjQ4MmEzLjIzOSwzLjIzOSwwLDAsMC0yLjgxMi0xLjY0OUgxNy41MjNMMTUuMDQ1LDEyLjVIMTguMDJMMjAuMDgzLDE2bC00LjUzMSw4LjE2N2g1LjA1NkwyNS4zMzMsMTZaTTI2LDE3LjE3MmwtMi40Nyw0LjI3LDEuMjgzLDIuMjMzYTEsMSwwLDAsMCwuODU5LjQ5MkgzMFpcIiBzdHlsZT1cImZpbGw6IzhiYzM0YVwiLz5gLFxuXHRcIkctY29kZVwiOiBgPHBhdGggZD1cIk0xNy4zMzMsMTYuMzU2aDBMMTcuMzA5LDIwLjhsLTIuMS0xLjAxOC4wMjMtNC40MzdoMGwxMC41NTgtMy4wMzgsMi4xMDYsMS4wMTNaXCIgc3R5bGU9XCJmaWxsOiM4ZTAwMDBcIi8+PHBhdGggZD1cIk0yNC40OTIsMTguNTc2YTE0LjkwOSwxNC45MDksMCwwLDEtMS4zNDMsMy4wNzQsNy44Niw3Ljg2LDAsMCwxLTEuMzksMS44MjksNi44LDYuOCwwLDAsMS0xLjcsMS4zMjQsNy40MDUsNy40MDUsMCwwLDEtMi4wMDYuODU1LDYsNiwwLDAsMS0zLjA3Mi4yM0E0LjY2OCw0LjY2OCwwLDAsMSwxMi40NCwyNC42NGE1LjMyMiw1LjMyMiwwLDAsMS0uNjM2LS42MjlsLS41MDgtLjI0NGE0LjcxNyw0LjcxNywwLDAsMCwuNDU3LjE4MSw1LjUyLDUuNTIsMCwwLDEtMS4wMTUtMS43NTgsOC4xMzUsOC4xMzUsMCwwLDEtLjQzLTEuNTMzYy0uMDIzLS4xMzEtLjA0My0uMjM5LS4wNjEtLjM0YTcuMjkyLDcuMjkyLDAsMCwwLC4zNzcsMS4zNTQsNS44MzYsNS44MzYsMCwwLDAsMS42MTQsMi4zMTljLjA2LjA1NC4xMjcuMS4xOS4xNDguMDQuMDA4LjA3OC4wMjIuMTE5LjAyOWE2LjQ1NCw2LjQ1NCwwLDAsMCwyLjkyOC0uMjE5LDguNCw4LjQsMCwwLDAsMS45MS0uODA3LDcuNjU4LDcuNjU4LDAsMCwwLDEuNTg5LTEuMjI3LDguNjYyLDguNjYyLDAsMCwwLDEuMjktMS42OSwxMi42NjcsMTIuNjY3LDAsMCwwLDEuMDE5LTIuMTk0TDIzLjMsMTljLjA1Ni0uMTUzLjA5MS0uMjU0LjA5MS0uMjU0WlwiIHN0eWxlPVwiZmlsbDojOGUwMDAwXCIvPjxwYXRoIGQ9XCJNMjQuNTI0LDQuMDEzYTExLjYsMTEuNiwwLDAsMC02LjU4OC0xLjk5NCwxMy44LDEzLjgsMCwwLDAtOS4zNzMsNC44NEExOC4yNDMsMTguMjQzLDAsMCwwLDQsMTguOGMuMDIxLDMuODUxLDEuNDgxLDcuODA2LDUuMTEyLDkuNTc1YTEzLjU2MywxMy41NjMsMCwwLDAsNC4xNTksMS41NjQsMTIuMTE0LDEyLjExNCwwLDAsMCw2Ljg2OS0xLjUyOWMtMi43MzQsMS4zMzMtNi4xMiwxLjk5My04Ljg5NC40LTIuNjg5LTEuNTQzLTMuOTgzLTQuNzI0LTQuMjIxLTcuNy0uNTEyLTYuNCwzLjEtMTMuNjQsOS4xMzItMTYuMjgxLDMuNTEyLTEuNTM3LDcuMzA3LTEuNTg1LDEwLjIzOSwxLjFDMjYuNzI3LDUuMjQ0LDI1LDQuMzA1LDI0LjUyNCw0LjAxM1ptLTE0LjM1OSwyNC44LS4xMzgtLjA5M1pcIiBzdHlsZT1cImZpbGw6IzhlMDAwMFwiLz48cGF0aCBkPVwiTTIyLjUyOSwyNi43ODhjLTMuMDQ0LDIuNTgyLTcuOTIsNC4xNDktMTEuNTU0LDEuODU3QzcuMjQsMjYuMjg5LDYuNTMsMjEuMDg5LDcuMjEyLDE3LjA4M2ExNy4yMTgsMTcuMjE4LDAsMCwxLDYuNy0xMC45N2MzLjc3MS0yLjYzNiw4Ljg4LTMuNDksMTIuNDg5LS4xODJsLTIuMjcsMy4yOTFjLTIuNTEtMi4zNTUtNi4zLTEuOTU2LTguOTQ1LS4wNTJBMTIuNDM0LDEyLjQzNCwwLDAsMCwxMC41LDE2LjJjLS42NjIsMi42MjMtLjUsNi4wMTEsMS41LDguMDQ3LDIuMDg4LDIuMTI5LDUuMTEyLDIuMTE2LDcuNjU2LjhBMTAuMzM0LDEwLjMzNCwwLDAsMCwyNC41LDE4LjYzNkwxNy4zMDcsMjAuOGwuMDIyLTQuNDM4TDI3Ljg5LDEzLjMxOWwuMS44MDZoMEExNi42MjUsMTYuNjI1LDAsMCwxLDIyLjUyOSwyNi43ODhaXCIgc3R5bGU9XCJmaWxsOiNiYTAwMDBcIi8+YCxcblx0XCJHRFNjcmlwdFwiOiBgPHBhdGggZD1cIk0yOC4xNjYsMjEuMDI5djEuNjUyYS4zNzQuMzc0LDAsMCwxLS4yNi4zNTdsLTIuNi44NDFhLjM2Ny4zNjcsMCwwLDEtLjMzNS0uMDU0LjM3NC4zNzQsMCwwLDEtLjE1NS0uM3YtMS44bC0yLjQzOC40NjRWMjQuMDJhLjM3NS4zNzUsMCwwLDEtLjMyNS4zNzFsLTMuNTI1LjQ4M2MtLjAxNiwwLS4wMzQsMC0uMDUxLDBBLjM3NC4zNzQsMCwwLDEsMTguMSwyNC41VjIyLjU1N2wtMS44MTkuMDA4aC0uMjY3bC0xLjgxOS0uMDA4VjI0LjVhLjM3NS4zNzUsMCwwLDEtLjM3NS4zNzZjLS4wMTcsMC0uMDM0LDAtLjA1MiwwbC0zLjUyNS0uNDgzYS4zNzUuMzc1LDAsMCwxLS4zMjQtLjM3MVYyMi4xODRsLTIuNDM5LS40NjR2MS44YS4zNzQuMzc0LDAsMCwxLS4xNTQuMy4zNy4zNywwLDAsMS0uMzM2LjA1NGwtMi42LS44NDFhLjM3NC4zNzQsMCwwLDEtLjI1OS0uMzU3VjIxLjAyOWwtMS42MDgtLjU0MWE0LjU1OCw0LjU1OCwwLDAsMC0uMTI0LDEuMDRjMCw0LjMxNyw2LjA4Miw3LjY1LDEzLjYsNy42NzRoLjAxOWM3LjUxNy0uMDI0LDEzLjYtMy4zNTYsMTMuNi03LjY3NGE0LjU0LDQuNTQsMCwwLDAtLjEtLjk1WlwiIGZpbGw9XCIjNDc4Y2JmXCIvPjxwYXRoIGQ9XCJNMy43MTEsMTMuMzczVjIwLjFsLjkwNy4zMDZhLjM3NC4zNzQsMCwwLDEsLjI1Ni4zNTV2MS42NWwxLjg1NS42VjIxLjI2N2EuMzc2LjM3NiwwLDAsMSwuNDQ1LS4zNjlsMy4xODkuNjA5YS4zNzQuMzc0LDAsMCwxLC4zMDUuMzY4djEuODE4bDIuNzc1LjM3OXYtMS44OWEuMzc0LjM3NCwwLDAsMSwuMzc2LS4zNzVoMGwyLjMyNy4wMDksMi4zMjYtLjAwOWEuMzc0LjM3NCwwLDAsMSwuMzc3LjM3NXYxLjg5bDIuNzc1LS4zNzlWMjEuODc0YS4zNzMuMzczLDAsMCwxLC4zLS4zNjhsMy4xODktLjYwOWEuMzc3LjM3NywwLDAsMSwuNDQ2LjM2OXYxLjc0MWwxLjg1NS0uNlYyMC43NmEuMzc0LjM3NCwwLDAsMSwuMjU1LS4zNTVsLjYxOC0uMjA4VjEzLjM3M2guMDE3QTI2Ljc5MiwyNi43OTIsMCwwLDAsMzAsMTAuOTMxYTE5LjAyLDE5LjAyLDAsMCwwLTIuNTA5LTMuMjg4QTI0LjUwNywyNC41MDcsMCwwLDAsMjUsOS4wOTFhMTMuMDEsMTMuMDEsMCwwLDAtMS4yNzktMS4wNTIsMTUuMzY1LDE1LjM2NSwwLDAsMC0xLjM3NS0uODk0LDI4LjM1MywyOC4zNTMsMCwwLDAsLjIzMi0zLjA3MUExNS45NjgsMTUuOTY4LDAsMCwwLDE4Ljg0NywyLjhhMjYuNDQsMjYuNDQsMCwwLDAtMS4zODUsMi43LDkuNDYsOS40NiwwLDAsMC0xLjQ1My0uMTE2aC0uMDE4YTkuNDU3LDkuNDU3LDAsMCwwLTEuNDU0LjExNiwyNi4yNzUsMjYuMjc1LDAsMCwwLTEuMzg1LTIuN0ExNS45NjEsMTUuOTYxLDAsMCwwLDkuNDIyLDQuMDc1YTI4LjE0MiwyOC4xNDIsMCwwLDAsLjIzMiwzLjA3MSwxNS4zMTIsMTUuMzEyLDAsMCwwLTEuMzc2Ljg5NEExMy4wNiwxMy4wNiwwLDAsMCw3LDkuMDkxYTI0LjU1MywyNC41NTMsMCwwLDAtMi40OS0xLjQ0OEExOS4wMiwxOS4wMiwwLDAsMCwyLDEwLjkzMWEyNi43OTIsMjYuNzkyLDAsMCwwLDEuNjk0LDIuNDQzWlwiIGZpbGw9XCIjNDc4Y2JmXCIvPjxwYXRoIGQ9XCJtMTIuNDYyIDE2LjZhMi43MzkgMi43MzkgMCAxIDEtMi43NC0yLjczOCAyLjczOSAyLjczOSAwIDAgMSAyLjc0IDIuNzM4XCIgZmlsbD1cIiNmZmZcIi8+PHBhdGggZD1cIm0xMS44IDE2Ljc2NGExLjgxOSAxLjgxOSAwIDEgMS0xLjgxOS0xLjgxOSAxLjgxNyAxLjgxNyAwIDAgMSAxLjgxOSAxLjgxOVwiIGZpbGw9XCIjNDE0MDQyXCIvPjxwYXRoIGQ9XCJNMTYuMTY2LDE5LjU5YS44NDQuODQ0LDAsMCwxLS44ODItLjhWMTYuMjY3YS44ODYuODg2LDAsMCwxLDEuNzY0LDB2Mi41MjJhLjg0NS44NDUsMCwwLDEtLjg4My44XCIgZmlsbD1cIiNmZmZcIi8+PHBhdGggZD1cIm0xOS44NzEgMTYuNmEyLjczOSAyLjczOSAwIDEgMCAyLjc0LTIuNzM4IDIuNzM5IDIuNzM5IDAgMCAwLTIuNzQgMi43MzhcIiBmaWxsPVwiI2ZmZlwiLz48cGF0aCBkPVwibTIwLjUzMSAxNi43NjRhMS44MTggMS44MTggMCAxIDAgMS44MTctMS44MTkgMS44MTcgMS44MTcgMCAwIDAtMS44MTcgMS44MTlcIiBmaWxsPVwiIzQxNDA0MlwiLz5gLFxuXHRcIkdpdFwiOiBgPHBhdGggZD1cIk0yOS40NzIsMTQuNzUzLDE3LjI0NywyLjUyOGExLjgsMS44LDAsMCwwLTIuNTUsMEwxMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0LDIuNTI4LDE0LjdhMS44LDEuOCwwLDAsMCwwLDIuNTUxTDE0Ljc1MywyOS40NzJhMS44LDEuOCwwLDAsMCwyLjU1LDBMMjkuNDcyLDE3LjNhMS44LDEuOCwwLDAsMCwwLTIuNTUxXCIgc3R5bGU9XCJmaWxsOiNkZDRjMzVcIi8+PHBhdGggZD1cIk0xMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJHTFNMXCI6IGA8cGF0aCBkPVwiTTcuNzc5LDE4LjkyM0EyLjMzMywyLjMzMywwLDAsMSw1LjQsMTcuMTZjLjMwNiwxLjQ2MiwxLjk2MSwyLjg5Miw3LjE4MywzLjUyOWExNC4yMjgsMTQuMjI4LDAsMCwwLDkuMjMyLTEuNjEycy43MzMtLjMyMi4yOTMuMTc2YzAsMC0zLjEwNywyLjg3My05LjIsMi45UzEuOTcsMTkuMTA3LDIsMTZjLS4wMjktMy4xMDcsNC44MDYtNi4xODUsMTAuOS02LjE1NXM5LjIsMi45LDkuMiwyLjljLjQ0LjUtLjI5My4xNzYtLjI5My4xNzYtMS4wODQtLjctNC4yODYtMi4wODktOS4yMzItMS42MTItNC44NjYuNDY5LTYuNDUzLDIuMTIyLTYuOTgxLDMuMjM1YTMuMjU0LDMuMjU0LDAsMCwwLS4zMTgsMS4yNCwyLjQyNCwyLjQyNCwwLDAsMSwyLjUtMi4zMTZBMi41MDcsMi41MDcsMCwwLDEsMTAuMywxNi4xOTUsMi41MDYsMi41MDYsMCwwLDEsNy43NzksMTguOTJabTE5LjY0Ny0xLjA3NEgzMHYuOTM3SDI2LjM0NFYxMy42MDloMS4wODJ2NC4yNFpNMjMuNDU0LDE2aDIuMTYzdjIuNzkxSDI0LjlsLS4xMDgtLjY0OWExLjksMS45LDAsMCwxLTEuNjE0Ljc4NiwyLjQxNCwyLjQxNCwwLDAsMS0yLjM3OS0yLjcxMSwyLjQ4NSwyLjQ4NSwwLDAsMSwyLjUzMS0yLjc0QTIuMDUzLDIuMDUzLDAsMCwxLDI1LjYsMTUuMjE3SDI0LjUxNWExLjEzNiwxLjEzNiwwLDAsMC0xLjEzMi0uODUxYy0uNzcxLDAtMS40ODUuNTM0LTEuNDg1LDEuODYsMCwxLjQxMy43NzEsMS43ODEsMS41MDYsMS43ODFhMS4yOCwxLjI4LDAsMCwwLDEuMjU0LTEuMTM5aC0xLjJWMTZaTTcuNzgxLDE0LjFhMS44NiwxLjg2LDAsMCwwLTEuOCwyLjEwNSwxLjg2LDEuODYsMCwwLDAsMS44LDIuMTA1LDEuODYsMS44NiwwLDAsMCwxLjgtMi4xMDVBMS44NiwxLjg2LDAsMCwwLDcuNzgxLDE0LjFabTIuOTExLDEuMzgzaC41MjV2LjQ2OGguMDEzYTEuMTIsMS4xMiwwLDAsMSwuOTg3LS41NjMsMS41NjUsMS41NjUsMCwwLDEsMS41MDYsMS42NzcsMS42NzUsMS42NzUsMCwwLDEtMS41ODMsMS44MjQsMSwxLDAsMCwxLS44OC0uNDQzaC0uMDEzVjIwLjFoLS41NTdWMTUuNDc5Wk0xMi4xLDE4LjRjLjYwOCwwLDEuMDE5LS41MjcsMS4wMTktMS4yNTQsMC0uNDI0LS4xNzEtMS4yNjQtMS4wMzItMS4yNjQtLjgsMC0uODkzLjg2Ny0uODkzLDEuNDA2LDAsLjg4LjU1MSwxLjExNC45MDUsMS4xMTRabTUtLjY1MmExLjM3OCwxLjM3OCwwLDAsMS0xLjQ4OCwxLjEzMywxLjQ4NywxLjQ4NywwLDAsMS0xLjQ4Mi0xLjY1OGMwLTEuMDI1LjQ5NC0xLjg0MiwxLjU4OC0xLjg0Mi45NTYsMCwxLjQyNC43NiwxLjQyNCwxLjkzMUgxNC43MjFjMCwuNjkuMzIzLDEuMDg5Ljk2MiwxLjA4OWEuODQxLjg0MSwwLDAsMCwuODU0LS42NTJIMTcuMVptLS41OS0uODhjLS4wMzItLjUxMy0uMjQ3LS45ODctLjkyNC0uOTg3YS45NzIuOTcyLDAsMCwwLS45MTguOTg3aDEuODQyWm0zLjcxMywxLjkxN2gtLjU1N1YxNi43NTFjMC0uNTc2LS4xNjUtLjg2Ny0uNzA5LS44NjctLjMxNywwLS44NzQuMi0uODc0LDEuMXYxLjhoLS41NTdWMTUuNDc5aC41MjV2LjQ2OGguMDEzYTEuMiwxLjIsMCwwLDEsMS0uNTYzLDEuMDQ2LDEuMDQ2LDAsMCwxLDEuMTU4LDEuMTUydjIuMjUzXCIgc3R5bGU9XCJmaWxsOiM0Mzg2YjVcIi8+YCxcblx0XCJHbyBtb2R1bGVcIjogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjU0LjUgMjI1XCI+PHRpdGxlPmZpbGVfdHlwZV9nb19wYWNrYWdlPC90aXRsZT48cGF0aCBkPVwiTTYxLjk0OSwxMy4wNjhjMTYuMDYtLjE0NywzMi4xNDMsMCw0OC4yMTEtLjA2Mi0zLjgxLDE2LjQwOC03LjQ2NiwzMi44NjItMTEuMjYxLDQ5LjI3N0gyNS41NDhjLTIuMzE5LDAtNC42MzcuMDc3LTYuOTU2LS4wOTNDMzMsNDUuNzc1LDQ3LjU2NiwyOS41LDYxLjk0OSwxMy4wNjhaXCIgc3R5bGU9XCJmaWxsOiNmMmU2YzlcIi8+PHBhdGggZD1cIk0xNDMuNTA5LDEzLjAxNGg0OC4wNzJjMTQuNDM3LDE2LjQzMSwyOS4wMTMsMzIuNzIzLDQzLjQxMSw0OS4xNzctOS4yNzQuMTkzLTE4LjU0OSwwLTI3LjgyMy4wODVIMTU0LjY1NEMxNTEuMDA2LDQ1LjgzNywxNDcuMTExLDI5LjQ2LDE0My41MDksMTMuMDE0WlwiIHN0eWxlPVwiZmlsbDojZjJlNmM5XCIvPjxwYXRoIGQ9XCJNMTEwLjE2LDEzLjAxNGgzMy4zNDljMy42LDE2LjQ0Niw3LjQ4OSwzMi44MjMsMTEuMTYsNDkuMjU0SDk4LjlDMTAyLjY5NCw0NS44NjgsMTA2LjM1LDI5LjQyMiwxMTAuMTYsMTMuMDE0WlwiIHN0eWxlPVwiZmlsbDojZWZjNzVlXCIvPjxwYXRoIGQ9XCJNMTguNTkyLDYyLjE4M2MyLjMxOS4xNyw0LjYzNy4wODUsNi45NTYuMDkzSDk4LjlxMCwyNi4wMjYuMDU0LDUyLjA1MmExOC44NTcsMTguODU3LDAsMCwwLDEuOTc5LjEzOWg1Mi4xMTRhMTQuNjkzLDE0LjY5MywwLDAsMCwxLjU0Ni0uMTA4Yy4xNDctMTcuMzY2LDAtMzQuNzMyLjA3LTUyLjFoNTIuNTE2YzkuMjc0LS4wNDYsMTguNTQ5LjEwOCwyNy44MjMtLjA4NVYyMTIuNjJIMTguNlExOC41OTIsMTM3LjQwNSwxOC41OTIsNjIuMTgzWlwiIHN0eWxlPVwiZmlsbDojZTdiZjU1XCIvPjxwYXRoIGQ9XCJNOTguOSw2Mi4yOTFoNTUuNzY5Yy0uMDYyLDE3LjM2Ni4wODUsMzQuNzMyLS4wNyw1Mi4xLS41MTguMDU0LTEuMDM2LjA5My0xLjU0Ni4xMDhIMTAwLjk0YTE4Ljg1NywxOC44NTcsMCwwLDEtMS45NzEtLjEzMUM5OC44NjEsOTYuOTkzLDk4Ljk2OSw3OS42MzQsOTguOSw2Mi4yOTFaXCIgc3R5bGU9XCJmaWxsOiNkYmI1NTFcIi8+PHJlY3QgeD1cIjM0LjM4OVwiIHk9XCIxNjMuNjgyXCIgd2lkdGg9XCI3Mi40MTdcIiBoZWlnaHQ9XCIyNy44ODVcIiBzdHlsZT1cImZpbGw6I2YyZjJmMlwiLz48cGF0aCBkPVwiTTYxLjQyMiwxMzcuMDg1Yy0uMzg4LDAtLjQ4Ny0uMTk0LS4yOTEtLjQ4N2wyLjA0MS0yLjYyNWExLjM5MywxLjM5MywwLDAsMSwxLjA2OS0uNDg3aDM0LjdjLjM4OCwwLC40ODcuMjkxLjI5MS41ODRMOTcuNTgyLDEzNi42YTEuNDgxLDEuNDgxLDAsMCwxLS45NzIuNTg0WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNNDYuNzQsMTQ2LjAyOGMtLjM4OCwwLS40ODctLjE5NC0uMjkxLS40ODdsMi4wNDEtMi42MjVhMS4zOTMsMS4zOTMsMCwwLDEsMS4wNjktLjQ4N0g5My44OWEuNDQ3LjQ0NywwLDAsMSwuNDg3LjU4NGwtLjc3OCwyLjMzM2EuODUuODUsMCwwLDEtLjg3NS41ODRaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PHBhdGggZD1cIk03MC4yNjQsMTU0Ljk3MWMtLjM4OCwwLS40ODctLjI5MS0uMjkxLS41ODRsMS4zNTctMi40M2ExLjI4OSwxLjI4OSwwLDAsMSwuOTcyLS41ODRIOTEuNzQ3Yy4zODgsMCwuNTg0LjI5MS41ODQuNjgxbC0uMTk0LDIuMzMzYS43MzEuNzMxLDAsMCwxLS42ODEuNjgxWlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNMTcxLjE2MywxMzUuMzM1Yy02LjEyNCwxLjU1Ni0xMC4zLDIuNzIyLTE2LjMzLDQuMjgtMS40NjIuMzg4LTEuNTU2LjQ4Ny0yLjgxOS0uOTcyYTEzLjAxMSwxMy4wMTEsMCwwLDAtNC41NjktMy42OTRjLTYuMTI0LTMuMDEzLTEyLjA1NC0yLjEzOC0xNy41OTQsMS40NjJhMjAuNjcxLDIwLjY3MSwwLDAsMC05LjkxOCwxOC40NjksMTUuMjQyLDE1LjI0MiwwLDAsMCwxMy4xMjMsMTUuMjYxYzYuNjEuODc1LDEyLjE1MS0xLjQ2MiwxNi41MjUtNi40MTUuODc1LTEuMDY5LDEuNjUzLTIuMjM2LDIuNjI1LTMuNkgxMzMuNDQ2Yy0yLjA0MSwwLTIuNTI4LTEuMjYzLTEuODQ3LTIuOTE2LDEuMjYzLTMuMDEzLDMuNi04LjA2OCw0Ljk1OC0xMC42YTIuNjI1LDIuNjI1LDAsMCwxLDIuNDMtMS41NTZoMzUuMzg0Yy0uMTk0LDIuNjI1LS4xOTQsNS4yNDktLjU4NCw3Ljg3NGE0MS40NTYsNDEuNDU2LDAsMCwxLTcuOTY3LDE5LjA0MmMtNi45OTUsOS4yMzQtMTYuMTM2LDE0Ljk3LTI3LjcsMTYuNTI1LTkuNTI2LDEuMjYzLTE4LjM3NC0uNTg0LTI2LjE0OC02LjQxNUEzMC41MzMsMzAuNTMzLDAsMCwxLDk5LjYyNSwxNjAuNTFjLTEuMjYzLTEwLjYsMS44NDctMjAuMTIyLDguMjYyLTI4LjQ4MUE0My4xMzcsNDMuMTM3LDAsMCwxLDEzNS4xLDExNS4yMTJjOS4xMzctMS42NTMsMTcuODg2LS41ODQsMjUuNzYsNC43NjNBMzAuNDcxLDMwLjQ3MSwwLDAsMSwxNzIuMTQsMTMzLjY4QzE3Mi43MTksMTM0LjU1OCwxNzIuMzMsMTM1LjA0NCwxNzEuMTYzLDEzNS4zMzVaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PHBhdGggZD1cIk0yMDMuMzM4LDE4OS4wOWMtOC44NDYtLjE5NC0xNi45MTMtMi43MjItMjMuNzE5LTguNTU0YTMwLjQ4NSwzMC40ODUsMCwwLDEtMTAuNS0xOC43NjFjLTEuNzUtMTAuOTg0LDEuMjYzLTIwLjcsNy44NzQtMjkuMzU2LDcuMS05LjMzMSwxNS42NTEtMTQuMTkyLDI3LjIxOC0xNi4yMzMsOS45MTgtMS43NSwxOS4yNDctLjc3OCwyNy43LDQuOTU4LDcuNjgsNS4yNDksMTIuNDQyLDEyLjM0NSwxMy43MDYsMjEuNjc2LDEuNjUzLDEzLjEyMy0yLjEzOCwyMy44MTYtMTEuMTc5LDMyLjk1M2E0NC41NDIsNDQuNTQyLDAsMCwxLTIzLjMyOSwxMi40NDJDMjA4LjQ5LDE4OC43LDIwNS44NjYsMTg4LjgsMjAzLjMzOCwxODkuMDlabTIzLjEzNS0zOS4yNzFhMjcuOTc4LDI3Ljk3OCwwLDAsMC0uMjkxLTMuMjA4LDE2LjAxMywxNi4wMTMsMCwwLDAtMTguMzc1LTEzLjIzNXEtLjczNC4xMTktMS40NTQuMzA2Yy05LjA0LDIuMDQxLTE0Ljg3Myw3Ljc3Ny0xNy4wMTEsMTYuOTEzYTE2LjAwOSwxNi4wMDksMCwwLDAsOC45NDMsMTguMzc0LDE3LjgyLDE3LjgyLDAsMCwwLDE1Ljg0NS0uNTg0YzcuNjc5LTMuOTg1LDExLjg1OS0xMC4yMDYsMTIuMzQ4LTE4LjU2NlpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48L3N2Zz5gLFxuXHRcIkdvXCI6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI1NC41IDIyNVwiPjx0aXRsZT5maWxlX3R5cGVfZ288L3RpdGxlPjxwYXRoIGQ9XCJNLTQ2LjkyNiw4OWMtLjYyMSwwLS43NzctLjMxMS0uNDY2LS43NzdsMy4yNjItNC4xOTRhMi4yMjUsMi4yMjUsMCwwLDEsMS43MDgtLjc3N0gxMy4wMjZjLjYyMSwwLC43NzcuNDY2LjQ2Ni45MzJsLTIuNjQsNC4wMzhhMi4zNjcsMi4zNjcsMCwwLDEtMS41NTMuOTMyWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjxwYXRoIGQ9XCJNLTcwLjM3OSwxMDMuMjg1Yy0uNjIxLDAtLjc3Ny0uMzExLS40NjYtLjc3N2wzLjI2Mi00LjE5NGEyLjIyNSwyLjIyNSwwLDAsMSwxLjcwOC0uNzc3SDQuOTVhLjcxNC43MTQsMCwwLDEsLjc3Ny45MzJMNC40ODQsMTAyLjJhMS4zNTgsMS4zNTgsMCwwLDEtMS40LjkzMlpcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTS0zMi43OTIsMTE3LjU3NGMtLjYyMSwwLS43NzctLjQ2Ni0uNDY2LS45MzJsMi4xNzQtMy44ODNhMi4wNiwyLjA2LDAsMCwxLDEuNTUzLS45MzJIMS41MzNjLjYyMSwwLC45MzIuNDY2LjkzMiwxLjA4N2wtLjMxMSwzLjcyOGExLjE2NywxLjE2NywwLDAsMS0xLjA4NywxLjA4N1pcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTTEyOC40MjYsODYuMmMtOS43ODUsMi40ODUtMTYuNDY0LDQuMzQ5LTI2LjA5Myw2LjgzNC0yLjMzLjYyMS0yLjQ4NS43NzctNC41LTEuNTUzLTIuMzMtMi42NC00LjAzOC00LjM0OS03LjMtNS45LTkuNzg1LTQuODE1LTE5LjI1OS0zLjQxNy0yOC4xMTIsMi4zMy0xMC41NjEsNi44MzQtMTYsMTYuOTI5LTE1Ljg0MiwyOS41MS4xNTUsMTIuNDI1LDguNywyMi42NzYsMjAuOTY4LDI0LjM4NSwxMC41NjEsMS40LDE5LjQxNC0yLjMzLDI2LjQtMTAuMjUxLDEuNC0xLjcwOCwyLjY0LTMuNTcyLDQuMTk0LTUuNzQ3SDY4LjE2M2MtMy4yNjIsMC00LjAzOC0yLjAxOS0yLjk1MS00LjY1OSwyLjAxOS00LjgxNSw1Ljc0Ny0xMi44OTEsNy45MjEtMTYuOTI5YTQuMTk0LDQuMTk0LDAsMCwxLDMuODgzLTIuNDg1aDU2LjUzNWMtLjMxMSw0LjE5NC0uMzExLDguMzg3LS45MzIsMTIuNTgxYTY2LjIzOSw2Ni4yMzksMCwwLDEtMTIuNzM2LDMwLjQ0MkMxMDguNywxNTkuNTEsOTQuMSwxNjguNjczLDc1LjYxOCwxNzEuMTU4Yy0xNS4yMjEsMi4wMTktMjkuMzU1LS45MzItNDEuNzgtMTAuMjUxYTQ4Ljc4NSw0OC43ODUsMCwwLDEtMTkuNzI1LTM0LjQ4Yy0yLjAxOS0xNi45MjksMi45NTEtMzIuMTUsMTMuMi00NS41MDhDMzguMzQyLDY2LjQ3NSw1Mi45NDIsNTcuMzEyLDcwLjgsNTQuMDVjMTQuNi0yLjY0LDI4LjU3OC0uOTMyLDQxLjE1OSw3LjYxYTQ4LjY4Niw0OC42ODYsMCwwLDEsMTguMDE3LDIxLjlDMTMwLjkxMSw4NC45NTgsMTMwLjI4OSw4NS43MzUsMTI4LjQyNiw4Ni4yWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjxwYXRoIGQ9XCJNMTc5LjgzNSwxNzIuMDljLTE0LjEzNC0uMzExLTI3LjAyNS00LjM0OS0zNy45LTEzLjY2OGE0OC43MTEsNDguNzExLDAsMCwxLTE2Ljc3NC0yOS45NzZjLTIuOC0xNy41NTEsMi4wMTktMzMuMDgyLDEyLjU4MS00Ni45MDUsMTEuMzM4LTE0LjkxLDI1LjAwNi0yMi42NzYsNDMuNDg4LTI1LjkzOCwxNS44NDItMi44LDMwLjc1My0xLjI0Myw0NC4yNjUsNy45MjEsMTIuMjcsOC4zODcsMTkuODgsMTkuNzI1LDIxLjksMzQuNjM1LDIuNjQsMjAuOTY4LTMuNDE3LDM4LjA1Mi0xNy44NjEsNTIuNjUyYTcxLjE3LDcxLjE3LDAsMCwxLTM3LjI3NiwxOS44OEMxODguMDY3LDE3MS40NjksMTgzLjg3NCwxNzEuNjI0LDE3OS44MzUsMTcyLjA5Wk0yMTYuOCwxMDkuMzQzYTQ0LjcsNDQuNywwLDAsMC0uNDY2LTUuMTI1Yy0yLjgtMTUuMzc2LTE2LjkyOS0yNC4wNzQtMzEuNjg0LTIwLjY1Ny0xNC40NDQsMy4yNjItMjMuNzYzLDEyLjQyNS0yNy4xOCwyNy4wMjVhMjUuNTc5LDI1LjU3OSwwLDAsMCwxNC4yODksMjkuMzU1YzguNTQyLDMuNzI4LDE3LjA4NSwzLjI2MiwyNS4zMTctLjkzMkMyMDkuMzQ1LDEzMi42NCwyMTYuMDI0LDEyMi43LDIxNi44LDEwOS4zNDNaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PC9zdmc+YCxcblx0XCJHcmFkbGVcIjogYDxwYXRoIGQ9XCJNMTMuNSw2Ljk2NWg3LjkyM2w0LDYuODg3SDI5Ljk4QTE0LjEsMTQuMSwwLDAsMCwxMS4wMjQsMi45MzJMMTMuNSw2Ljk2NVwiIHN0eWxlPVwiZmlsbDojMDA2NTMzXCIvPjxwYXRoIGQ9XCJNMjUuNjI4LDE4bC00LjIwOSw3LjI1MkgxMC44MDZMNS41LDE2LjEwOCw5LjczOSw4LjgsNy40LDQuOTgxQTE0LjAzLDE0LjAzLDAsMSwwLDMwLDE4SDI1LjYyOFwiIHN0eWxlPVwiZmlsbDojODJiODE2XCIvPjxwYXRoIGQ9XCJNMjEuMDYxLDE1Ljk2M2E1LjAyNiw1LjAyNiwwLDEsMS01LjAyNi01LDUuMDEzLDUuMDEzLDAsMCwxLDUuMDI2LDVcIiBzdHlsZT1cImZpbGw6IzAwNjUzMlwiLz5gLFxuXHRcIkdyYXBoUUxcIjogYDxyZWN0IHg9XCItMC40M1wiIHk9XCIxMi41MzRcIiB3aWR0aD1cIjIyLjkwMVwiIGhlaWdodD1cIjEuMTg3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC01Ljg1OCAxNi4xMDcpIHJvdGF0ZSgtNTkuOTk5KVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCI0LjU0NVwiIHk9XCIyMS4xNjJcIiB3aWR0aD1cIjIyLjkwMlwiIGhlaWdodD1cIjEuMTg3XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjEwLjQzXCIgeT1cIjE4LjAwOFwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE1LjgxMiAyMS44NTcpIHJvdGF0ZSgtNTkuOTk5KVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIyMC4zODFcIiB5PVwiMC43NzFcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQuMDkyIDIxLjg1Nikgcm90YXRlKC01OS45OTkpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjQuNDEyXCIgeT1cIjYuNzg3XCIgd2lkdGg9XCIxMy4yMjdcIiBoZWlnaHQ9XCIxLjE4N1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMi4yMTMgNi41MDIpIHJvdGF0ZSgtMzAuMDAxKVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIyMC4zODlcIiB5PVwiMS42NzdcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMjIuOTAxXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjc1MyAxMi4yNSkgcm90YXRlKC0zMC4wMDEpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjUuNDU0XCIgeT1cIjkuMzg2XCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjEzLjIyOFwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIyNS4zNlwiIHk9XCI5LjM4NlwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjhcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMTUuMjIyXCIgeT1cIjI0LjA5N1wiIHdpZHRoPVwiMTEuNTA0XCIgaGVpZ2h0PVwiMS4wMzdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTkuNDk4IDEzLjc4NSkgcm90YXRlKC0zMC4wMDEpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0yOC4xMiwyM2EyLjUsMi41LDAsMSwxLS45MTUtMy40MTFBMi41LDIuNSwwLDAsMSwyOC4xMiwyM1wiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNOC4yLDExLjVhMi41LDIuNSwwLDEsMS0uOTE1LTMuNDExQTIuNSwyLjUsMCwwLDEsOC4yLDExLjVcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTMuODgsMjNhMi41LDIuNSwwLDEsMSwzLjQxMS45MTVBMi41LDIuNSwwLDAsMSwzLjg4LDIzXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0yMy44LDExLjVhMi41LDIuNSwwLDEsMSwzLjQxMS45MTVBMi41LDIuNSwwLDAsMSwyMy44LDExLjVcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTE2LDMwYTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjQ5MywyLjQ5MywwLDAsMSwxNiwzMFwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMTYsNi45OTFhMi41LDIuNSwwLDEsMSwyLjUtMi41LDIuNDkzLDIuNDkzLDAsMCwxLTIuNSwyLjVcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz5gLFxuXHRcIkdyb292eVwiOiBgPHBhdGggZD1cIk03LjQ1MywyOS44NjVjMC0uMDc0LjQ5NC0xLjcxNywxLjEtMy42NTFBMjEuODA4LDIxLjgwOCwwLDAsMCw5LjUsMjIuNmMtLjA3OS0uMDU2LS4zNS4wNDUtLjYuMjI0LS43NjQuNTM4LS45Mi40LTEuNDkxLTEuMzU2LS42MTctMS45LS42MzktMi4wOTEtLjMxNy0yLjgxLjIxLS40Ny4yLS41NzktLjE0Ny0xLjI3N2EzLjc1LDMuNzUsMCwwLDEtLjM3Ny0xLjA0NGMwLS4yNi0xLjQxMy0xLjQzOC0zLjY0Ny0zLjA0QTMuODQ1LDMuODQ1LDAsMCwxLDIsMTIuNWExMC40NzcsMTAuNDc3LDAsMCwxLDIuMzc4LS4wMzlsMi4zNzguMS4yMzItLjc0MWMuOTgxLTMuMTMsMi40NjMtNS45NTcsMy4xMjItNS45NTcuMTM3LDAsLjQxNi4yNjUuNjE5LjU4OC4zMzEuNTI3LjM3Ni44NTMuNDM1LDMuMTI2YTIzLjAxMywyMy4wMTMsMCwwLDAsLjE2NSwyLjczOWMuMDU1LjExLjIyOC0uMDM1LjM4NS0uMzIyLjItLjM2Ny40MTItLjQ2Ny43MS0uMzM1cy40ODUuMDQzLjY0Ni0uMzQ1Yy4yNDItLjU4MiwxLjQ1NS00LjUxMywxLjQ1NS00LjcxNywwLS4wNjkuMjQtLjkuNTM0LTEuODQ2cy42MzEtMi4wMzYuNzUxLTIuNDI0Yy4yMTMtLjY4OC4yNDYtLjYwNywxLjUyNCwzLjcyNiwxLjMyLDQuNDc0LDIuMDMsNi4xMjQsMi4zODUsNS41NDQuMjQ4LS40LDEuNTUtLjQyOCwxLjkxNC0uMDM0LjIwNy4yMjQuMzM4LjIyMS40NTMtLjAxLjIzNy0uNDguOC0uNC45NTMuMTQuMTE3LjQyMy4xNDcuNDIzLjMyLDBhLjgxMi44MTIsMCwwLDEsLjY5Mi0uNDY2Yy4zODksMCwuNTM4LjE2NC42NjYuNzM1bC4xNjUuNzM1LDIuNTU4LS4xODNBMTEuNTIxLDExLjUyMSwwLDAsMSwzMCwxMi40NjhhMjAuNzksMjAuNzksMCwwLDEtMi4zMjEsMS44ODljLTEuMjc3Ljk2LTIuMzQyLDEuNzc1LTIuMzY4LDEuODFhMTcuNjA3LDE3LjYwNywwLDAsMCwuMTI4LDEuODY3LDExLjA3NSwxMS4wNzUsMCwwLDEtLjU0NCw1LjcxMyw0LjMwOCw0LjMwOCwwLDAsMS0xLjAyMSwxLjQ5Yy0uMjc4LjE4Ni0uNTA2LjQtLjUwNi40ODZzLjMsMS4wNzcuNjYsMi4yMTJBOS42ODIsOS42ODIsMCwwLDEsMjQuNTY4LDMwYy0uMTA5LDAtMi43NTctMi4wNy02Ljg3Ni01LjM3M2ExMS4xNDMsMTEuMTQzLDAsMCwwLTEuNjQzLTEuMTg0Yy0uMTcxLDAtMS42NDksMS4xMzMtNS45ODQsNC41ODgtMi41MTQsMi0yLjYxMiwyLjA3My0yLjYxMiwxLjgzNVptNS4xNTgtNC43MjdjMS4zMzctMS4wNTEsMi42NjQtMi4wNzgsMi45NDctMi4yODIuNDg4LS4zNTEuNjUxLS4yNjMsMy4wMjEsMS42MzEsMS4zNzgsMS4xLDIuNzM3LDIuMTc0LDMuMDIxLDIuMzg0cy44NjguNjY2LDEuMywxLjAxM2MuNDkxLjQuNzQyLjQ5Mi42NzQuMjU2LS43Ny0yLjYzNC0uNzkzLTIuNjc4LTEuMzI3LTIuNDc2LS42NDQuMjQ0LTEuMDQzLS4wMDYtMS4yNDktLjc4M2ExLjczOSwxLjczOSwwLDAsMSwuMjQtMS40NTEsMi4zNzcsMi4zNzcsMCwwLDAtLjIyMS0yLjczMSw0LjI4OSw0LjI4OSwwLDAsMS0uNjg2LTEuNTNsLS4yNDEtMS4wMjMtLjUxNy43MWMtLjYzNi44NzMtMS40MTEuOTE4LTIuMDU5LjExOWwtLjQ3Ny0uNTg4LS41NTQuNzYyYy0uNTU1Ljc2My0xLjE5NC44NjItMS44NDQuMjg0LS4xNzktLjE1OS0uMjU4LS4xLS4yNTguMmExLjI0LDEuMjQsMCwwLDEtLjM3NS43NzdjLS42MTkuNTctMS4yMjMuNDE5LTEuNjMzLS40MDlMMTIsMTkuMjQ5bC0uMy43NzVhNy4wMzIsNy4wMzIsMCwwLDEtLjg1MywxLjQ3OSwxMy44OTEsMTMuODkxLDAsMCwwLTEuNDU1LDMuNjYzYy0uNSwxLjYyNy0uOSwzLjA0Mi0uOSwzLjE0M3MuMzgxLS4xNDEuODQ3LS41MzgsMS45NDItMS41ODIsMy4yNzktMi42MzNabTExLjM0My0xLjEzMWMxLjAxNS0xLjE1NCwxLjI1LTMuMjg4LjgtNy4yNzEtLjM3NS0zLjMyOS0uNTYyLTQuNDE5LS43ODQtNC41NjUtLjE1NC0uMS0uMTc3LjAxLS4wOTEuNDI2LjU2MiwyLjcuNTkzLDQuMDUzLjEsNC40MzQtLjMzNy4yNjItLjY5NS0uNzE5LS45NzYtMi42NzUtLjIxOC0xLjUxNS0uNDQ1LTIuMi0uNjE3LTEuODVhMy4zNTksMy4zNTksMCwwLDAsLjE2LDEuMDcsMjYuNzE4LDI2LjcxOCwwLDAsMSwuMzk0LDMuMzgxLDIxLjc1NywyMS43NTcsMCwwLDAsLjM3NSwzLjE1MWMuMzA5Ljk4NS44Ljc0NywxLjExOC0uNTRzLjM1LS40MjUuMDQ0LDEuMDU1Yy0uMzE3LDEuNTM2LTEuMjYsMi0yLjM1MiwxLjE1LS4xNzUtLjEzNi0uMjM0LDAtLjIzNC41NTVhNC45ODgsNC45ODgsMCwwLDEtLjMsMS41bC0uMy43NjUuNDA4LjEzOUEyLjI0NywyLjI0NywwLDAsMCwyMy45NTQsMjQuMDA3Wk05LjM0NiwyMS40NjhjMi4xMTgtMS4yMzIsMi41LTIuNjY4LDEuNzkzLTYuODA1YTIxLjk0MSwyMS45NDEsMCwwLDEtLjMtMi4zYzAtMS4wMjktLjI1Ni0uNTU0LS40NDguODMyLS4yNTQsMS44MzItMS4wMTYsMy4zODktMS42NTcsMy4zODMtLjU1Ny0uMDA1LS43MzgtLjIxLS45NjgtMS4wOTQtLjQxMy0xLjU4NS4wMzctNC4wMTgsMS4xODQtNi40MDYuODQtMS43NDksMS4zLTEuOTA4LDEuMy0uNDQ4LDAsMi4yNzYtLjc3Niw1LjYyNS0xLjE4NCw1LjExNWEzLjgxNCwzLjgxNCwwLDAsMSwuMDY1LTIuMmMuMi0uNzIuMTU3LTEuODE4LS4wNjYtMS44MTgtLjI1OSwwLS43NzMsMS45MS0uODQxLDMuMTI3LS4wNiwxLjA3Ni0uMDIyLDEuMzM4LjIzMSwxLjYxMi44ODguOTYyLDIuMDUyLTEuOTczLDIuMTExLTUuMzIzLjAzMS0xLjc1OS0uMTM4LTIuMjU0LS42NzQtMS45ODItLjc4MS40LTIuODgzLDUuODgzLTIuODgzLDcuNTIzLDAsMS4yODMuMzE5LDIuMTg2Ljg4LDIuNDkxLjk1NC41MTksMS44NzYtLjQsMi41MjktMi41MzFsLjI3NS0uODk0VjE0Ljk3YzAsMS43NTktLjU2NywyLjY4Ni0yLjM1NywzLjg1MmE4Ljg5Myw4Ljg5MywwLDAsMC0uODUyLjYsOS43NTgsOS43NTgsMCwwLDAsLjg5MiwyLjUzNCw1LjI4Myw1LjI4MywwLDAsMCwuOTY5LS40ODRabTEyLjc2NC0yLjE4NGMuMjEzLS40NzUuMjUtLjk5Mi4yLTIuODE3LS4wNS0xLjk4Ni0uMS0yLjMzNy0uNDg2LTMuMTQ0LS42OTEtMS40NTgtMS41NDQtMS4wODYtMS4wNDUuNDU1LjI2NS44Mi41ODkuNjguNDc1LS4yMDUtLjA5MS0uNy4wNzktLjcyMy4zNzUtLjA0MS41NTYsMS4yODEuNDE2LDMuMDU1LS4yNDIsMy4wNTUtLjQ1LDAtLjU5LS4zOS0uODgzLTIuNDU5YTYuNzUyLDYuNzUyLDAsMCwwLS4zNjItMS43MTRjLS4yMTcsMC0uMzE0LjM4OC0uMTc5LjcxOGEyOC4yMywyOC4yMywwLDAsMSwuNDUyLDIuODU5Yy40NDEsMy41MDcsMS4wNTcsNC43MDcsMS42OSwzLjI5M1ptLTguMzguMDU2YTMuMzg1LDMuMzg1LDAsMCwwLC4wOTUtMS4zM2MtLjA2LTEuMDA4LS4wOTQtMS4wODEtLjM2NC0uNzktLjM4Ny40MTktLjgtLjM3NS0uOTQ0LTEuOC0uMTA3LTEuMDgyLS4xNC0xLjA2MS42NC0uNDE1LjEuMDgxLjM0Ni0uMTk0LjU1My0uNjExLjM3Ny0uNzYzLjUtMS42OC4yMjgtMS42OC0uMDgxLDAtLjE0Ny4xMzQtLjE0Ny4zLDAsLjQyOS0uNC4zNjgtLjQ5NC0uMDc1LS4wNTMtLjI1OC0uMTY2LS4xNjctLjM2Ny4zLS4xNi4zNjktLjM1Ni42NzEtLjQzNC42NzFzLS4xODUtLjMtLjIzNy0uNjcxYy0uMDktLjY0Ni0uMS0uNjUtLjMtLjExM2EuOTUxLjk1MSwwLDAsMC0uMDEuOTY0LDE4LjgxOCwxOC44MTgsMCwwLDEsLjUyMSwzLjc5MWMwLDEuMTc0LjgsMi4xLDEuMjY3LDEuNDYzWm0yLjY4OC0xLjU1NmE3LjA1NSw3LjA1NSwwLDAsMCwuNDE2LTQuMjU5Yy0uMjM2LTEuMTQxLS42NDUtMS41NjgtMS4yMjItMS4yNzUtLjQyOS4yMTgtMS4wODIsMi43NDYtMS4wODQsNC4yLDAsMi4yNjIsMS4wNiwzLjAxNSwxLjg5LDEuMzM3Wm0tMS4wMDctMS43OTJhMy43NywzLjc3LDAsMCwxLS4yOS0xLjQxNmMwLS43NDUuMDIyLS43NzIuMi0uMy4yMi41ODYuNjExLjY4OC43NjEuMmExLjAzNSwxLjAzNSwwLDAsMC0uMDY1LS42NTZjLS4yMzItLjQ2OS0uMi0xLjEwNy4wNDktMS4xMDcuMjgsMCwuNjcyLDEuMTU0LjY3MiwxLjk4MiwwLC42MDktLjYxMywxLjg5My0uOSwxLjg5My0uMDcsMC0uMjYtLjI2OC0uNDIyLS42Wk0xOS4zNDgsMTcuN2E2LjQ0Nyw2LjQ0NywwLDAsMC0uMTQxLTQuOTE4Yy0uMzU4LS43NzMtMS4xNTMtLjkwNi0xLjQ3OS0uMjQ4YTExLjYwNywxMS42MDcsMCwwLDAtLjQ4OSwzLjg5NUMxNy40NzcsMTguMzQ4LDE4LjcxNiwxOS4xLDE5LjM0OCwxNy43Wk0xOC4xLDE1LjUyN2EyLjQ5MiwyLjQ5MiwwLDAsMS0uMzE4LTEuNTY1Yy4wMDgtLjkwOS4wMzEtLjk5MS4xMzUtLjQ3Mi4xNTMuNzY0LjQ3MywxLjA1Mi43NTMuNjc5LjE3NC0uMjMxLjE2Ni0uMzQxLS4wNS0uNjc2LS4yODgtLjQ0Ny0uMzQ0LTEuMDc5LS4xLTEuMDc5YTUuMDM3LDUuMDM3LDAsMCwxLDEuMDE3LDIuMjVjMCwuNDgtLjU2NCwxLjMyNy0uODg0LDEuMzI3QzE4LjUyNywxNS45OTEsMTguMjc2LDE1Ljc4MiwxOC4xLDE1LjUyN1ptOC42NjItMS4zMTgsMS41NDctMS4xNzUtMS42NTgtLjAxMmMtMS40ODQtLjAxMS0xLjY1OC4wNDMtMS42NTYuNTFhMTEuNTMyLDExLjUzMiwwLDAsMCwuMiwxLjg1N2MuMDExLDAsLjcxNi0uNTM0LDEuNTY3LTEuMThaTTYuNTM1LDE0bC4xNTgtLjk0OUw1LjMsMTIuOTU2Yy0uNzY0LS4wNTItMS4zODktLjAxMi0xLjM4OS4wODhhMTQuMSwxNC4xLDAsMCwwLDIuNDQ3LDEuOTM0QzYuMzcxLDE0Ljk2MSw2LjQ0OCwxNC41MjEsNi41MzUsMTRabTkuNTI2LTIuOTQxYTEuNjI0LDEuNjI0LDAsMCwxLC44MTkuNmMuMTkyLjM0OS4yNzYuMzI2LjU3My0uMTYzLjE5MS0uMzE1LjQ0LS41NzIuNTUzLS41NzJzLjItLjA2Ni4yLS4xNDZjMC0uMjc4LTIuMTIyLTcuMzA2LTIuMi03LjNzLTIuMjcsNy4zODYtMi4zMzcsNy45MjVjLS4wMjguMjI2LjA2LjMwOS4yMzEuMjE5LjE1Mi0uMDgxLjM2My4wNjMuNDY4LjMxOS4xNy40MTUuMjQuMzgyLjY0NC0uMzA2LjM4NC0uNjU0LjU0NC0uNzQyLDEuMDQ4LS41NzlaXCIgc3R5bGU9XCJmaWxsOiMzMzNcIi8+PHBhdGggZD1cIk0xNC41LDEyLjE3NWEuODUuODUsMCwwLDEtLjExNS0uMi43MzcuNzM3LDAsMCwwLS4xOTQtLjI5LjI4MS4yODEsMCwwLDAtLjMtLjA2MWMtLjA4Ny4wMzUtLjExMS4wMzktLjE1LjAyNC0uMDY1LS4wMjYtLjA4OS0uMTA2LS4wNy0uMjQyLjAyMy0uMTY5LjItLjgyNS41NDgtMi4wNTQuNzExLTIuNSwxLjY2Ni01LjY0NiwxLjc3Mi01LjgzOS4wMTItLjAyMS4wMTItLjAyMS4wMjQsMCwuMDYzLjExNC40MzIsMS4yNjYuOTM3LDIuOTIyLjY4MiwyLjI0LDEuMjUsNC4yMSwxLjI1LDQuMzM5LDAsLjA3OS0uMDYuMTI3LS4xODYuMTQ3LS4xNTcuMDI2LS4zMzkuMjEyLS41ODcuNmExLjY3NCwxLjY3NCwwLDAsMS0uMjI2LjMxYy0uMDQ4LjA0Ni0uMDUyLjA0OC0uMS4wNDhzLS4wNTYsMC0uMS0uMDQzYS45NTguOTU4LDAsMCwxLS4xLS4xNDQsMS4yNjgsMS4yNjgsMCwwLDAtLjQxNC0uNDIyLDEuNTI1LDEuNTI1LDAsMCwwLS43MzgtLjI4MS40MzQuNDM0LDAsMCwwLS40LjE1NiwyLjcxOCwyLjcxOCwwLDAsMC0uNDE2LjZjLS4yNTcuNDI1LS4zNDguNTEzLS40NDEuNDI2WlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPjxwYXRoIGQ9XCJNNi4yNTIsMTQuOTI4YTE5LjA1NSwxOS4wNTUsMCwwLDEtMi4zLTEuODM4Yy0uMDMxLS4wMzgtLjAzNC0uMDQ0LS4wMjUtLjA1N2EyLjcsMi43LDAsMCwxLDEuMTQtLjA4NWMuMjMuMDEyLDEuNjE5LjEsMS42MjEuMTA4cy0uMywxLjc3OS0uMzIxLDEuODgxQzYuMzU3LDE0Ljk4MSw2LjMzNywxNC45NzksNi4yNTIsMTQuOTI4WlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPjxwYXRoIGQ9XCJNMjUuMTc3LDE1LjM1QTE0LjIzOSwxNC4yMzksMCwwLDEsMjUsMTMuNTZhLjU1My41NTMsMCwwLDEsLjA0NC0uMjljLjA4MS0uMTUxLjI0NS0uMjA1LjctLjIzLjIyOC0uMDEzLDEuMjgxLS4wMTUsMi4wMjUsMGwuNTIxLjAwOEwyNy4wMjksMTRjLTEuMTQ0Ljg2Ny0xLjgxLDEuMzY5LTEuODM0LDEuMzgyLS4wMDYsMC0uMDEyLS4wMDYtLjAxOC0uMDI3aDBaXCIgc3R5bGU9XCJmaWxsOiM2Mzk4YWFcIi8+PHBhdGggZD1cIk04LjUwNiwyOC4yODFjMC0uMDcxLjE0OS0uNi41MjctMS44NzguOTA1LTMuMDU3LDEuMzE5LTQuMTY1LDEuODI3LTQuODkyYTcuNjY0LDcuNjY0LDAsMCwwLC45NjktMS43OTJMMTIsMTkuMjkybC4yMjUuNDQ4Yy4zOTQuNzg0LjYzMiwxLjAxMSwxLjA2MiwxLjAxNmExLjIzOSwxLjIzOSwwLDAsMCwxLjEtMS4xMzdjMC0uMTI0LjA0NC0uMjUxLjA4Ni0uMjUxYTEuMTE5LDEuMTE5LDAsMCwxLC4yMjYuMTQsMS4yNzEsMS4yNzEsMCwwLDAsLjY2Ni4zLjg3OS44NzksMCwwLDAsLjYwOS0uMTQ4LDIuNDcsMi40NywwLDAsMCwuNzExLS43NjRjLjE4Ny0uMjUyLjM0Ny0uNDU5LjM1NC0uNDU5cy4xNDMuMTU5LjMuMzUyYTUuMDkxLDUuMDkxLDAsMCwwLC40MjIuNDY3LDEuMDQ5LDEuMDQ5LDAsMCwwLDEuNTQ5LS4wOCw2LjExMSw2LjExMSwwLDAsMCwuNDY3LS41NzJjLjE2OC0uMjI4LjMwNy0uNDEuMzEtLjRzLjA2Ni4yNjkuMTQxLjU4NC4xNjkuNjcuMjA5Ljc4OWEzLjgyNiwzLjgyNiwwLDAsMCwuNjQyLDEuMjM0LDIuMTcsMi4xNywwLDAsMSwuNDY2LDEuMjQ2LDMuMDUxLDMuMDUxLDAsMCwxLS4zNTIsMS40NDcsMi4wNywyLjA3LDAsMCwwLS4yNjcuOTM0LDIuMDE3LDIuMDE3LDAsMCwwLC4yMTMuODUxLjc3My43NzMsMCwwLDAsMS4wNjkuNDEzLDEuMzUxLDEuMzUxLDAsMCwxLC4zMTYtLjA2OGMuMiwwLC4zMTUuMTkzLjU0Mi44ODEuMTU3LjQ3NC41LDEuNjM3LjUsMS42OTUsMCwuMDMtLjAxNi4wNTEtLjAzOS4wNTFhMS40ODYsMS40ODYsMCwwLDEtLjQwNy0uMjI0Yy0uMi0uMTQ0LTIuNjEyLTIuMDI5LTMuNDA4LTIuNjYzLTIuMTI4LTEuNjkzLTIuODI4LTIuMjMzLTMuMTcxLTIuNDQ2LS4zNy0uMjMtLjYyMi0uMjg1LS44MjctLjE3Ny0uMjU0LjEzMy0zLjcyNiwyLjg0Ny01Ljc1MSw0LjVBMTAuODQ2LDEwLjg0NiwwLDAsMSw4LjY1LDI4LjI1MWMtLjE0OS4wODMtLjE0My4wODEtLjE0My4wM1pcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz5gLFxuXHRcIkhhbWxcIjogYDxwYXRoIGQ9XCJNMTUuMzExLDE2LjA0MywxMy40LDI5LjcyNmE2LjMyMiw2LjMyMiwwLDAsMS01Ljk1Ni0xLjI1bDMuMS0xMy4yNjZMNC42OSwzLjM0YTguMDMxLDguMDMxLDAsMCwxLDMuNzktLjY0Nmw1LjE0NCw5LjcsOC45MTQtNy41ODFzMywxLjA0MSwzLjI3LDIuMDQxbC0xMC41LDkuMTg0WlwiIHN0eWxlPVwiZmlsbDojZWNkZmE3XCIvPjxwYXRoIGQ9XCJNMjcuMDE2LDE3LjQxMWE0LjI0NCw0LjI0NCwwLDAsMC0uNTQxLS44MTIsNS43LDUuNywwLDAsMC0xLjQ1OC0xLjE4Nyw3LjMzMSw3LjMzMSwwLDAsMC0xLjY4Ny0uNzkxbC0uMjI5LS4wNjItLjE4Ny0uMDYyYy0uMTI1LS4wNDItLjIyOS0uMS0uMzMzLS4xNDZhMS4yODIsMS4yODIsMCwwLDEtLjQ1OC0uNDE3QTEuNzU0LDEuNzU0LDAsMCwxLDIyLDEyLjY0MmEyLjUxOCwyLjUxOCwwLDAsMSwuMS0uMzc1Yy4wNDItLjEyNS4wODMtLjI1LjEyNS0uNGEyLjY5MSwyLjY5MSwwLDAsMCwuMDYyLS42bC4xLS4wODMsMS4yNS0xLjA0MWMuMjI5LS4xODcuNDU4LS40LjY4Ny0uNTgzYTIuMiwyLjIsMCwwLDEsLjIyOS4xNDZzLjY0Ni4wNjIsMS0uOTE2bC0uMTg3LS4xMjUuMTI1LS4xLjMxMi0uMjcxYS42MTMuNjEzLDAsMCwwLC4yMjktLjM3NS41MjkuNTI5LDAsMCwwLS40MTcuMTI1bC0uMzMzLjI1LS4yMjkuMTY3TDIyLjE4NCw2LjQ3OGMuMTQ2LS4xMjUuMjcxLS4yMjkuNDE3LS4zNTRsLjYtLjU0MS4wNjItLjA2MmMuMDYyLjA0Mi4xLjA4My4xNjcuMTI1LjE0Ni4xLjMxMi4yMDguNDU4LjI5MmwuOTE2LjVjLjI5Mi4xNjcuNi4zMzMuOTE2LjQ3OWEzLjMyMywzLjMyMywwLDAsMCwuNDc5LjIwOGMuMDgzLjAyMS4xNjcuMDYyLjI1LjA4My4wNDIsMCwuMS4wMjEuMTQ2LjAyMWguMWEuMTUxLjE1MSwwLDAsMCwuMTI1LS4wODNWNy4xMjNhLjA3Ny4wNzcsMCwwLDEsLjAyMS0uMDYyVjYuOTc3YS4xMDguMTA4LDAsMCwwLS4wNDItLjA4M2MtLjAyMS0uMDQyLS4wNjItLjA4My0uMDgzLS4xMjVhMS41OSwxLjU5LDAsMCwwLS4xODctLjE4N2MtLjEyNS0uMTI1LS4yNzEtLjIyOS0uNC0uMzMzLS4yNzEtLjIwOC0uNTYyLS40LS44NTQtLjU4M2E3LjU0NSw3LjU0NSwwLDAsMC0uOS0uNSwzLjMyMywzLjMyMywwLDAsMC0uNDc5LS4yMDhjLS4wODMtLjAyMS0uMTY3LS4wNjItLjI3MS0uMDgzLS4wNDIsMC0uMS0uMDIxLS4xNjctLjAyMWEuMzEuMzEsMCwwLDAtLjEyNS4wMjEuNTIyLjUyMiwwLDAsMC0uMTY3LjEsMS42LDEuNiwwLDAsMC0uMzc1LjIwOGwtLjYyNS4zNTRjLS4xODcuMTQ2LS40LjMxMi0uNTgzLjQ1OGwtLjIwOC0uMTQ2cy0uODc1LjA4My0uNTgzLjY0NmwuMDgzLjA4M2MtLjgzMy42ODctMS42NDUsMS40LTIuNDU3LDIuMDgzLS44MzMuNzA4LTEuNjQ1LDEuNDE2LTIuNDc4LDIuMTQ1bC0xLjIyOSwxLjA4M2ExLjg3OCwxLjg3OCwwLDAsMS0uMjA4LjE4N2MtLjA0Mi0uMTI1LS4xLS4yMjktLjE0Ni0uMzMzbC0uMjkyLS42MjUtLjU2Mi0xLjI1Yy0uMzc1LS44MzMtLjc1LTEuNjY2LTEuMTQ1LTIuNUwxMS4yMDksNC44OTVsLS4xODctLjM3NWguMjVzLjA4My0uNjg3LS40MTctLjgxMmExLjQsMS40LDAsMCwwLS4yMDguMDIxYy0uMTg3LS4zNzUtLjM1NC0uNzUtLjU0MS0xLjEyNWgwbC0uMDgzLS4zMTJBLjMzLjMzLDAsMCwwLDkuOSwyLjFhLjM1Mi4zNTIsMCwwLDAtLjEtLjA0MmMtLjA2Mi0uMDIxLS4xLS4wMjEtLjE2Ny0uMDQyQTEuMjgxLDEuMjgxLDAsMCwwLDkuMzU1LDJhNC4wNTcsNC4wNTcsMCwwLDAtLjUyMS4wNDIsOC43NjcsOC43NjcsMCwwLDAtMS4wMi4xODdjLS4zMzMuMDgzLS42NjYuMTY3LTEsLjI3MWEzLjI3MiwzLjI3MiwwLDAsMC0uNDc5LjE4N2wtLjI1LjEyNWMtLjA0Mi4wMjEtLjA4My4wNjItLjEyNS4wODNMNS45LDIuOTU4Yy0uMDIxLjAyMS0uMDIxLjA0Mi0uMDQyLjA2MnYuMDYyaDBWMy4xYS4xNjQuMTY0LDAsMCwwLC4xLjEyNWMuMDQyLjAyMS4wNjIuMDQyLjA4My4wNDJhMS4zMjcsMS4zMjcsMCwwLDEsLjE0Ni4wNDIsMS4xODgsMS4xODgsMCwwLDAsLjI3MS4wMjEsNC4zODQsNC4zODQsMCwwLDAsLjUyMS0uMDQyYy4zMzMtLjA0Mi42ODctLjA4MywxLjAyLS4xNDZsMS4wMi0uMTY3Yy4xNjctLjAyMS4zMzMtLjA2Mi41MjEtLjEuMTQ2LjI5Mi4yOTIuNi40MzcuOS0uOTU4LjA4My0yLjQ1Ny4yMDgtMy4zOTUuMzEyLS4xLS4xODctLjE4Ny0uMzU0LS4yOTItLjU0MWEuMTI3LjEyNywwLDAsMC0uMTQ2LS4wNjIuMTA4LjEwOCwwLDAsMC0uMDYyLjE0NmMuMDYyLjE2Ny4xMjUuMzEyLjE4Ny40NzlhMS4xNjcsMS4xNjcsMCwwLDAtLjUuMTI1QTEuODI4LDEuODI4LDAsMCwwLDYuNCw1LjY0NWEzLjU2NywzLjU2NywwLDAsMSwuNDU4LS4xMjVsLjQzNywxLDEuMjUsMi44MzIsMS4yNywyLjgzMmMuNDE3LjkzNy44NTQsMS44NzQsMS4yOTEsMi44MzJoMGEuMDIuMDIsMCwwLDAsLjAyMS4wMjFsLS4xODcuNjI1LS41LDEuNzQ5Yy0uMzEyLDEuMTY2LS42LDIuMzUzLS45LDMuNTJMOS4xMDUsMjIuN2wtLjQxNywxLjc3Yy0uMjkyLDEuMTg3LS41NjIsMi4zNTMtLjksMy41MmEuMTI1LjEyNSwwLDAsMCwuMDIxLjA4MywzLjA3NiwzLjA3NiwwLDAsMCwuNi41NjIsNi4wNDgsNi4wNDgsMCwwLDAsLjY4Ny40MTcsOS40LDkuNCwwLDAsMCwxLjUuNiw2Ljk3Miw2Ljk3MiwwLDAsMCwxLjYyNC4yNzEsMy43MjgsMy43MjgsMCwwLDAsLjgzMy0uMDQyLDYuNTQ3LDYuNTQ3LDAsMCwwLC44MzMtLjE2Ny4yNTQuMjU0LDAsMCwwLC4xNjctLjE4N3YtLjAyMWMuMjI5LTEuMTQ1LjQxNy0yLjMxMi42MjUtMy40NTdsLjU4My0zLjQ3OGMuMTg3LTEuMTY2LjQtMi4zMTIuNTgzLTMuNDc4LjAyMS0uMTI1LjA0Mi0uMjcxLjA2Mi0uNC4wNDIuMDQyLjA2Mi4xLjEuMTQ2YTQuMTM3LDQuMTM3LDAsMCwwLC43MDguNjQ2LDcuMjEyLDcuMjEyLDAsMCwwLDEuNTgzLjgzMywxMS43NzQsMTEuNzc0LDAsMCwwLDEuNjY2LjUsMTAuMTgyLDEwLjE4MiwwLDAsMCwxLjEuMTg3LDIuNjIxLDIuNjIxLDAsMCwwLS4yNSwxLjIwOC4xMTUuMTE1LDAsMCwwLC4wNjIuMWguMDIxYTUuMTY0LDUuMTY0LDAsMCwwLDEuMjcuNDc5LDQuMzMzLDQuMzMzLDAsMCwwLDEuMzc1LjA2MiwyLjYyNywyLjYyNywwLDAsMCwxLjMzMy0uNTYyLDIuODI0LDIuODI0LDAsMCwwLC44MTItMS4xNjZsLjAyMS0uMDIxVjIxLjFsLjA2Mi0uNTYydi0uMDIxYTUuNDI3LDUuNDI3LDAsMCwwLC42MjUtLjQxNywyLjcxLDIuNzEsMCwwLDAsLjY0Ni0uNzI5LDEuODMzLDEuODMzLDAsMCwwLC4yNS0xLDIuNTYzLDIuNTYzLDAsMCwwLS4yOTItLjk1OFptLS40LTEwLjVabS0xLjQ3OS0xLjFhNy4xMiw3LjEyLDAsMCwxLC44MzMuNTQxYy4xMjUuMS4yNzEuMTg3LjQuMzEyYTEuMjU3LDEuMjU3LDAsMCwxLC4xNjcuMTY3bC4wNDIuMDQyaC0uMDQyYy0uMDgzLS4wMjEtLjE0Ni0uMDQyLS4yMjktLjA2Mi0uMTQ2LS4wNjItLjMxMi0uMTI1LS40NTgtLjE4N2E3LjEzMiw3LjEzMiwwLDAsMS0uODc1LS40NzlBNS42MSw1LjYxLDAsMCwxLDI0LjIsNS41MmEyLjUsMi41LDAsMCwxLS4yMjktLjI1bC4zMTIuMTI1YTYuNCw2LjQsMCwwLDEsLjg1NC40MTdabS0xLjQxNi0uOTE2LjAyMS4wMjF2LjA0MmEuMDIuMDIsMCwwLDAtLjAyMS0uMDIxVjQuODk1Wk04Ljg3NiwyLjU2MmE1LjAyMSw1LjAyMSwwLDAsMS0uOTM3LjMzMyw1LjM0Nyw1LjM0NywwLDAsMS0uOTc5LjE2Nyw0LjAxMyw0LjAxMywwLDAsMS0uNS4wMjEuNzgxLjc4MSwwLDAsMS0uMjI5LS4wMjFINi4xNjljLjAyMSwwLC4wMjEtLjAyMS4wNDItLjAyMS4wNjItLjA0Mi4xNDYtLjA2Mi4yMDgtLjEuMTQ2LS4wNjIuMzEyLS4xLjQ1OC0uMTY3LjMxMi0uMDgzLjY0Ni0uMTY3Ljk3OS0uMjI5YTguNCw4LjQsMCwwLDEsLjk3OS0uMTI1QTEuNTc2LDEuNTc2LDAsMCwwLDkuMTQ3LDIuNGExLjUzNiwxLjUzNiwwLDAsMS0uMjcxLjE2N1ptMTQuNDUzLDcuMS0xLjI5MSwxLTEuMjkxLDEuMDJjLS4zNTQuMjkyLS43MDguNTgzLTEuMDYyLjg1NC4wMjEtLjAyMS4wNDItLjA2Mi4wNjItLjA4My4xNjctLjIyOS4zMzMtLjQzNy41LS42NDYuMzU0LS40MTcuNjg3LS44NTQsMS4wNjItMS4yNXMuNzcxLS43OTEsMS4xNjYtMS4xNDVhNC44NzIsNC44NzIsMCwwLDEsLjY0Ni0uNWwuMTg3LS4xMjVjLjE4Ny4xNDYuNC4yOTIuNTgzLjQzNy0uMTY3LjE0Ni0uMzc1LjI5Mi0uNTYyLjQzN1pNOC4wNjQsNy4xbC4xLjFhNS42Myw1LjYzLDAsMCwxLC41ODMuNjQ2LDIuMjEsMi4yMSwwLDAsMSwuMzc1LjcyOS45MjEuOTIxLDAsMCwxLS4wNjIuNjI1bC0uMDIxLS4wNjJMOC4wNjQsNy4xWm0xLjAyLDIuMTY2YS43Mi43MiwwLDAsMCwuMTQ2LS4yNS44NjYuODY2LDAsMCwwLC4wNDItLjQ1OEExLjcsMS43LDAsMCwwLDguOSw3LjcyN2E0LjAxNSw0LjAxNSwwLDAsMC0uOTc5LS45bC0uMjI5LS40NzljLS4xNDYtLjMxMi0uMjkyLS42MjUtLjQ1OC0uOTE2LjMxMi0uMDgzLjY4Ny0uMjA4LDEuMS0uMzEyQTIwLjMxMywyMC4zMTMsMCwwLDEsOS4zNTUsN2E3Ljk2Myw3Ljk2MywwLDAsMSwuNzcxLDIuNTQxYy4wMjEuMjA4LDAsLjQzNywwLC42NjZzMCwuNDU4LjAyMS42ODdhNy42MDksNy42MDksMCwwLDAsLjE0Ni45NThMOS4wODQsOS4yNjhaTTE0LDI2LjI0MmEuOS45LDAsMCwxLS4xODcuMjA4LjQuNCwwLDAsMS0uMzMzLjEuMzU4LjM1OCwwLDAsMS0uMjI5LS4yMjkuOTgxLjk4MSwwLDAsMS0uMDgzLS4zNTQsMi4yNzUsMi4yNzUsMCwwLDEsLjA0Mi0uNzUsMi44MTYsMi44MTYsMCwwLDEsLjIyOS0uNzA4LDEuNDc4LDEuNDc4LDAsMCwxLC4yMDgtLjI5Mi4zNDEuMzQxLDAsMCwxLC4yOTItLjEyNWMuMSwwLC4yMDguMS4yNzEuMjA4YS43NC43NCwwLDAsMSwuMDgzLjE4N2wtLjI1LDEuNDc5Yy0uMDIxLjEtLjAyMS4xODctLjA0Mi4yNzFabTEuMjI5LTcuMTg1LS4zNzUsMi4xODdhMy4zMjksMy4zMjksMCwwLDAtLjEtLjQzN2MtLjEtLjQtLjIyOS0uNzcxLS4zNTQtMS4xNDVhMTUuNTM3LDE1LjUzNywwLDAsMC0uOTU4LTIuMTY2Yy4yMjkuNzcxLjUsMS41Ljc3MSwyLjI0OS4xNDYuMzc1LjI3MS43NS40LDEuMWwuMTg3LjU2MmMwLC4wMjEuMDIxLjA2Mi4wMjEuMDgzLS4wNjIuMzMzLS4xMjUuNjY2LS4xNjcsMS4wMmwtLjMxMiwxLjljLS4wMjEtLjA0Mi0uMDIxLS4wODMtLjA0Mi0uMTI1YS40ODYuNDg2LDAsMCwwLS4zMTItLjI5Mi41MjUuNTI1LDAsMCwwLS40MTcuMTI1LDEuOTQ0LDEuOTQ0LDAsMCwwLS4yNzEuMzEyLDIuMDM2LDIuMDM2LDAsMCwwLS4yNzEuNzUsMi4xMzEsMi4xMzEsMCwwLDAsMCwuODEyLDEuMDIxLDEuMDIxLDAsMCwwLC4xNDYuNC40ODYuNDg2LDAsMCwwLC4zMzMuMjcxLjQyOC40MjgsMCwwLDAsLjM3NS0uMTY3Yy4wNDItLjA0Mi4wODMtLjEuMTI1LS4xNDYtLjE0Ni45NzktLjMxMiwxLjk1OC0uNDU4LDIuOTU3YTIuNzI3LDIuNzI3LDAsMCwxLS41NjIuMTI1Yy0uMjUuMDQyLS41LjA2Mi0uNzUuMDgzYTUuNTMxLDUuNTMxLDAsMCwxLTEuNTQxLS4xNDYsNy44NDYsNy44NDYsMCwwLDEtMS41LS40NzksMy42MjUsMy42MjUsMCwwLDEtMS4yMjktLjg1NGMuMzEyLTEuMTQ1LjY2Ni0yLjI5MSwxLjAyLTMuNDM2bC41NDEtMS43MjkuNTIxLTEuNzQ5Yy4zNTQtMS4xNjYuNzA4LTIuMzMzLDEuMDQxLTMuNS4xNjctLjU4My4zMTItMS4xNjYuNDc5LTEuNzQ5YTMuNjI2LDMuNjI2LDAsMCwwLC4xODctMS44MzN2LS4wMjFjLS4wMjEtLjAyMS0uMDQyLS4wMjEtLjA0MiwwYTMuMTA5LDMuMTA5LDAsMCwwLS4yNS4yOTJjLS4yMjktLjUyMS0uNDc5LTEuMDItLjcwOC0xLjU0MWE0Ljc2NSw0Ljc2NSwwLDAsMS0uMTY3LS41ODMsNy4xNjUsNy4xNjUsMCwwLDEtLjIwOC0xLjMxMmMtLjAyMS0uMjI5LS4wMjEtLjQzNy0uMDIxLS42NjZzLjAyMS0uNDU4LDAtLjY4N2E3LjYyNSw3LjYyNSwwLDAsMC0uODMzLTIuNiwxMi41ODcsMTIuNTg3LDAsMCwwLTEuMS0xLjgzM2MuNjg3LS4xODcsMS40MTYtLjM3NSwyLS40NzkuMDgzLjE4Ny4xODcuMzU0LjI3MS41NDFMMTEuOTM4LDcuNmwxLjI1LDIuNDM3LjYyNSwxLjIwOC4zMTIuNmMuMDgzLjEyNS4xMjUuMjcxLjIwOC4zNzVsLS44MTIuNzVhLjA2OS4wNjksMCwwLDAsMCwuMS4wNzMuMDczLDAsMCwwLC4xLjAyMWMuNDM3LS4zMTIuODc1LS42NDYsMS4zMTItLjk3OWwxLjMxMi0xYy44NzUtLjY2NiwxLjcyOS0xLjMzMywyLjU4Mi0yczEuNzA4LTEuMzU0LDIuNTYyLTIuMDQxbC4wMjEtLjAyMWEyNC4zMTYsMjQuMzE2LDAsMCwwLDEuODc0LDEuNjQ1LDYuMTYyLDYuMTYyLDAsMCwwLS44NzUuNTQxLDguOTQzLDguOTQzLDAsMCwwLTEuMjI5LDEuMTI1LDEyLjI3OSwxMi4yNzksMCwwLDAtMS4wNDEsMS4yOTEsMTEuNzc4LDExLjc3OCwwLDAsMC0uNjQ2LDFjLTEuMjcsMS4wNDEtMi41MiwyLjEtMy43MjgsMy4yMDdhLjEyOC4xMjgsMCwwLDAtLjAyMS4xNDYuMTM4LjEzOCwwLDAsMCwuMTQ2LjA0Miw5LjEzNCw5LjEzNCwwLDAsMC0uMzEyLDEuMjVjLS4xMjUuNTgzLS4yNSwxLjE2Ni0uMzU0LDEuNzQ5Wm05LjIwNSwyLjc5MWEyLjUyNywyLjUyNywwLDAsMS0xLjAyLjQ1OCwzLjc2NywzLjc2NywwLDAsMS0xLjE4Ny4wNDIsNy4zNjEsNy4zNjEsMCwwLDEtMS4xNDUtLjIwOCwyLjAzNywyLjAzNywwLDAsMSwuMTY3LTEuMDQxYy4xNDYuMDIxLjI3MS4wMjEuNDE3LjA0MmEuMTE0LjExNCwwLDAsMCwuMTI1LS4wODMuMTI0LjEyNCwwLDAsMC0uMDgzLS4xNjdoMGMtLjEtLjA0Mi0uMTg3LS4wNjItLjI5Mi0uMWEyLjc3MSwyLjc3MSwwLDAsMSwuMjkyLS40Yy4xMjUtLjEyNS4yNS0uMjUuMzc1LS4zNTRhMy45OTIsMy45OTIsMCwwLDAsLjg1NC40LDIuODgxLDIuODgxLDAsMCwwLDEuMTI1LjEsMS41NSwxLjU1LDAsMCwwLDEuMDItLjU0MSwxLjUyNCwxLjUyNCwwLDAsMCwuMzU0LS45MTYuODUuODUsMCwwLDEsLjAyMS40LDQuNTExLDQuNTExLDAsMCwxLS4wODMuNTIxbC0uMDYyLjMxMkwyNSwyMC40OTRhLjkxOS45MTksMCwwLDAtLjMzMy4zNTQuNzUxLjc1MSwwLDAsMCwuNDc5LDBjLjAyMSwwLC4wMjEtLjAyMS4wNDItLjAyMS0uMDIxLjA2Mi0uMDIxLjEtLjA0Mi4xNjdhMi41NTIsMi41NTIsMCwwLDEtLjcwOC44NTRaTTI2LjUsMTkuMTE5YTIuMiwyLjIsMCwwLDEtLjQ1OC42MjUsMi42MzgsMi42MzgsMCwwLDEtLjI3MS4yMjksMi41ODUsMi41ODUsMCwwLDAtLjA2Mi0uNTYyLDEuNTM0LDEuNTM0LDAsMCwwLS4wODMtLjI5Mi41MzEuNTMxLDAsMCwwLS4xODctLjI1aDBjLS4wMjEsMC0uMDQyLDAtLjA0Mi4wMjFoMGExLjk1LDEuOTUsMCwwLDEtLjU2Mi43NzEsMS40MjksMS40MjksMCwwLDEtLjgxMi4yOTIsMi44NTcsMi44NTcsMCwwLDEtLjkxNi0uMTI1Yy0uMzEyLS4wODMtLjYyNS0uMTg3LS45MzctLjI5MmwtLjA0Mi0uMDIxYS4yLjIsMCwwLDAtLjE4Ny4wNDJjLS4xNjcuMjA4LS4yOTIuNC0uNDM3LjYtLjEuMTY3LS4xODcuMzEyLS4yNzEuNDc5LS4zNzUtLjE0Ni0uNzI5LS4yNzEtMS4xLS40MTctLjUyMS0uMjA4LTEuMDQxLS40MTctMS41Mi0uNjY2YTcuNjQ4LDcuNjQ4LDAsMCwxLTEuNC0uODEyLDIuOTQ5LDIuOTQ5LDAsMCwxLS45NzktMS4wNjJ2LS4wMjFhLjQwOS40MDksMCwwLDAtLjE4Ny0uMTg3YzAtLjA0Mi4wMjEtLjEuMDIxLS4xNDZhNy4zNyw3LjM3LDAsMCwwLC4xLTEuNTJjMS42ODctMS4xODcsMy4zMzItMi40MzcsNC45NTctMy43MjhsLS4wNjIuMTg3YTMuMjcsMy4yNywwLDAsMC0uMTQ2LDEuMDJBMi4wODksMi4wODksMCwwLDAsMjIuMTIyLDE1LjFhMi44MjUsMi44MjUsMCwwLDAsLjQ3OS4xODdsLjI1LjA2Mi4yMDguMDQyYTYuNjQ1LDYuNjQ1LDAsMCwxLDEuNTQxLjYyNSw2LjE1Niw2LjE1NiwwLDAsMSwxLjMxMi45NzksMi4yNzUsMi4yNzUsMCwwLDEsLjcwOCwxLjMzMywxLjUxLDEuNTEsMCwwLDEtLjEyNS43OTFaXCIgc3R5bGU9XCJmaWxsOiMzZjNlMjlcIi8+PHBhdGggZD1cIk0xMi42NjcsMjMuOTA5YTIuMTYxLDIuMTYxLDAsMCwwLS4zNTQuNzcxLDEuNTU2LDEuNTU2LDAsMCwwLS4wNjIuNDE3bC0uMDIxLjQxN2E0LjUzMyw0LjUzMywwLDAsMCwuMTQ2LDEuNjY2LDcuNjQ3LDcuNjQ3LDAsMCwwLC42NjYsMS41MmMtLjA4My0uMjcxLS4xODctLjUyMS0uMjcxLS43NzFzLS4xNjctLjUyMS0uMjI5LS43OTFhNS44OSw1Ljg5LDAsMCwxLS4xLTEuNmwuMDIxLS40MTdhMi41NTIsMi41NTIsMCwwLDEsLjA0Mi0uNCwzLjEzNywzLjEzNywwLDAsMSwuMjkyLS43MjksMi45NjcsMi45NjcsMCwwLDEsLjUyMS0uNjI1LDIuNTkxLDIuNTkxLDAsMCwxLC42NjYtLjQ3OSwyLjc2LDIuNzYsMCwwLDAtMS4zMTIsMS4wMlpcIiBzdHlsZT1cImZpbGw6IzNmM2UyOVwiLz5gLFxuXHRcIkhhbmRsZWJhcnNcIjogYDxwYXRoIGQ9XCJNMTIuMywxMy4xYTQuMjM4LDQuMjM4LDAsMCwxLDIuNzI4LjlBNC41OTIsNC41OTIsMCwwLDEsMTYsMTUuMTI3YTQuMTQ0LDQuMTQ0LDAsMCwxLDIuMDM5LTEuNzQ3LDQuNzU3LDQuNzU3LDAsMCwxLDMuMjg2LjAxOSw3LjgzMyw3LjgzMywwLDAsMSwyLjQ0MywxLjU1OGMuNTY4LjUsMS4wOTQsMS4wNSwxLjY3OSwxLjUzM2EzLjQsMy40LDAsMCwwLDEuMDE5LjYxNCwxLjQyLDEuNDIsMCwwLDAsMS40Ni0uMzc5Ljk2NS45NjUsMCwwLDAtLjA1NS0xLjMyMy41NDUuNTQ1LDAsMCwwLS44LjEwOC42NTkuNjU5LDAsMCwwLC4wNS42ODYsMS4yMjIsMS4yMjIsMCwwLDEtLjYtLjkyNiwxLjAyMiwxLjAyMiwwLDAsMSwuNjkxLTEuMDMyLDIuMDA1LDIuMDA1LDAsMCwxLDIuMzEyLjY2MSwzLjI1OCwzLjI1OCwwLDAsMSwuNDQsMi4zMDgsMi43NjIsMi43NjIsMCwwLDEtMS4xMzcsMS44NzIsNS4wNTEsNS4wNTEsMCwwLDEtMy4wMTMuOCw4LjQ4OCw4LjQ4OCwwLDAsMS0yLjkzMi0uNjNjLTEuNTU4LS42MjYtMy4wMTYtMS40OTItNC42MjUtMS45OTJhMTMuOTc3LDEzLjk3NywwLDAsMC0xLjctLjM2M2MtLjQzLjAwNy0uODYxLS4wMTUtMS4yOS4wMTVhNS42OTIsNS42OTIsMCwwLDAtMS41MzQuMzQ5Yy0xLjYzNi41MDktMy4xMTYsMS40LTQuNywyLjAyNGE3LjYyNSw3LjYyNSwwLDAsMS00LjI0OS40NzQsMy43NCwzLjc0LDAsMCwxLTIuMTI1LTEuMTRBMi44NTYsMi44NTYsMCwwLDEsMiwxNi42NjhhMi43MjIsMi43MjIsMCwwLDEsLjU1NS0xLjg3NCwxLjk5NCwxLjk5NCwwLDAsMSwxLjY4Ny0uNjgsMS40MjUsMS40MjUsMCwwLDEsMS4wNjMuNTIsMS4wNCwxLjA0LDAsMCwxLC4xMjIuOTExLDEuNDU3LDEuNDU3LDAsMCwxLS41NTYuNjQ0LjY0My42NDMsMCwwLDAsLjA1MS0uNjgxLjU0Ny41NDcsMCwwLDAtLjgzMS0uMDc5Ljk3NS45NzUsMCwwLDAtLjE1MSwxLjExLDEuMzMxLDEuMzMxLDAsMCwwLDEuMDMyLjYyMywyLjMzMiwyLjMzMiwwLDAsMCwxLjYtLjdBMjguNTI2LDI4LjUyNiwwLDAsMSw5LjQsMTQuMDUzLDUuMjUxLDUuMjUxLDAsMCwxLDEyLjMsMTMuMVpcIiBzdHlsZT1cImZpbGw6I2MxOTc3MFwiLz5gLFxuXHRcIkhhc2tlbGxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjAuOTk2XCIgeTE9XCItMjA2LjA1N1wiIHgyPVwiMC45NTFcIiB5Mj1cIi0yMDYuMDU3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjU5Ljk0MSwgMCwgMCwgLTE4My40ODcsIC0yMzcuOTQxLCAtMzc3OTIuNzg4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZhYmEwOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiNDJjMDFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9oYXNrZWxsMjwvdGl0bGU+PHBhdGggZD1cIk0yLDI1Ljg4Miw4LjU4OCwxNiwyLDYuMTE4SDYuOTQxTDEzLjUyOSwxNiw2Ljk0MSwyNS44ODJabTYuNTg4LDBMMTUuMTc3LDE2LDguNTg4LDYuMTE4aDQuOTQxTDI2LjcwNiwyNS44ODJIMjEuNzY1bC00LjExNy02LjE3Ni00LjExOCw2LjE3NlpNMjQuNTEsMjAuMTE4bC0yLjItMy4yOTRIMzB2My4yOTRabS0zLjI5NC00Ljk0MS0yLjItMy4yOTRIMzB2My4yOTRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJIYXhlXCI6IGA8cGF0aCBkPVwiTTE2LDUuNSw1LjUsMTYsMTYsMjYuNSwyNi41LDE2LDE2LDUuNVwiIHN0eWxlPVwiZmlsbDojZjY4NzEyXCIvPjxwYXRoIGQ9XCJNMiwyLDE2LDUuNSw1LjUsMTYsMiwyXCIgc3R5bGU9XCJmaWxsOiNmYWIyMGJcIi8+PHBhdGggZD1cIk0zMCwyLDI2LjUsMTYsMTYsNS41LDMwLDJcIiBzdHlsZT1cImZpbGw6I2Y0NzIxNlwiLz48cGF0aCBkPVwiTTMwLDMwLDE2LDI2LjUsMjYuNSwxNiwzMCwzMFwiIHN0eWxlPVwiZmlsbDojZjI1YzE5XCIvPjxwYXRoIGQ9XCJNMiwzMCw1LjUsMTYsMTYsMjYuNSwyLDMwXCIgc3R5bGU9XCJmaWxsOiNmODljMGVcIi8+PHBhdGggZD1cIk0xNiw1LjUsMiwySDlsNywzLjVcIiBzdHlsZT1cImZpbGw6I2ZiYzcwN1wiLz48cGF0aCBkPVwiTTE2LDUuNSwzMCwySDIzTDE2LDUuNVwiIHN0eWxlPVwiZmlsbDojZmJjNzA3XCIvPjxwYXRoIGQ9XCJNMTYsMjYuNSwzMCwzMEgyM2wtNy0zLjVcIiBzdHlsZT1cImZpbGw6I2Y2ODcxMlwiLz48cGF0aCBkPVwiTTE2LDI2LjUsMiwzMEg5bDctMy41XCIgc3R5bGU9XCJmaWxsOiNmMjVjMTlcIi8+PHBhdGggZD1cIk01LjUsMTYsMiwzMFYyM2wzLjUtN1wiIHN0eWxlPVwiZmlsbDojZmZmMjAwXCIvPjxwYXRoIGQ9XCJNNS41LDE2LDIsMlY5bDMuNSw3XCIgc3R5bGU9XCJmaWxsOiNmZmYyMDBcIi8+PHBhdGggZD1cIk0yNi41LDE2LDMwLDJWOWwtMy41LDdcIiBzdHlsZT1cImZpbGw6I2YxNDcxZFwiLz48cGF0aCBkPVwiTTI2LjUsMTYsMzAsMzBWMjNsLTMuNS03XCIgc3R5bGU9XCJmaWxsOiNmMTQ3MWRcIi8+YCxcblx0XCJITFNMXCI6IGA8cG9seWdvbiBwb2ludHM9XCI5LjUyNSAyMS45NDcgNy41NiAyMS45NDcgNy41NiAxNy4xIDMuOTU4IDE3LjEgMy45NTggMjEuOTQ3IDIgMjEuOTQ3IDIgMTAuMDQ0IDMuOTU4IDEwLjA0NCAzLjk1OCAxNC43OTIgNy41NiAxNC43OTIgNy41NiAxMC4wNDQgOS41MjUgMTAuMDQ0IDkuNTI1IDIxLjk0N1wiIHN0eWxlPVwiZmlsbDpibHVlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjY5MiAyMS45NDcgMTEuNTEzIDIxLjk0NyAxMS41MTMgMTAuMDQ0IDEzLjQ3MiAxMC4wNDQgMTMuNDcyIDE5Ljc3MyAxNi42OTIgMTkuNzczIDE2LjY5MiAyMS45NDdcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz48cGF0aCBkPVwiTTE3LjQ2MiwyMS40OTFWMTguODM0YTMuNjc2LDMuNjc2LDAsMCwwLDEuMTQ2LjkwOSwyLjgwOSwyLjgwOSwwLDAsMCwxLjI0OS4zLDIuMDUsMi4wNSwwLDAsMCwuNjQ2LS4wOTIsMS4zMDksMS4zMDksMCwwLDAsLjQ2MS0uMjUyLDEuMDI5LDEuMDI5LDAsMCwwLC4yNzYtLjM4MiwxLjIzMSwxLjIzMSwwLDAsMCwuMDkxLS40NzgsMS4zLDEuMywwLDAsMC0uMTQ1LS42MjMsMS45MDcsMS45MDcsMCwwLDAtLjQtLjUwNiw0LjA3Nyw0LjA3NywwLDAsMC0uNi0uNDQ4cS0uMzQ2LS4yMTUtLjc0Ni0uNDM5YTQuMDQ1LDQuMDQ1LDAsMCwxLTEuNTE5LTEuNDE5LDMuODg0LDMuODg0LDAsMCwxLS41LTIuMDI2LDQuMjMyLDQuMjMyLDAsMCwxLC4yNzMtMS42LDMuMDIsMy4wMiwwLDAsMSwuNzQ0LTEuMSwyLjkzOCwyLjkzOCwwLDAsMSwxLjA4OC0uNjM0LDQuMTY3LDQuMTY3LDAsMCwxLDEuMzEtLjIsNS44MTYsNS44MTYsMCwwLDEsMS4yLjExMSwzLjgsMy44LDAsMCwxLC45NjcuMzQ1djIuNDgyYTIuODU5LDIuODU5LDAsMCwwLS40NzYtLjM2NSwzLjIxMiwzLjIxMiwwLDAsMC0uNTMtLjI2MkEzLjEsMy4xLDAsMCwwLDIxLjQ2LDEyYTIuNzk0LDIuNzk0LDAsMCwwLS41MTItLjA1LDEuOTk0LDEuOTk0LDAsMCwwLS42MDYuMDg3LDEuMzQ3LDEuMzQ3LDAsMCwwLS40NjEuMjQ1LDEuMDkyLDEuMDkyLDAsMCwwLS4yOTEuMzc3LDEuMTQ0LDEuMTQ0LDAsMCwwLS4xLjQ5NCwxLjIsMS4yLDAsMCwwLC4xMTUuNTM2LDEuNjU3LDEuNjU3LDAsMCwwLC4zMjguNDQ4LDMuNDYxLDMuNDYxLDAsMCwwLC41MTUuNDE1Yy4yLjEzNi40My4yNzUuNjg2LjQxOWE3LjA5NCw3LjA5NCwwLDAsMSwuOTM2LjYzNSwzLjcxMiwzLjcxMiwwLDAsMSwuNzEzLjc1OSwzLjI2OSwzLjI2OSwwLDAsMSwuNDU1Ljk2Nyw0LjU3Myw0LjU3MywwLDAsMSwuMTU4LDEuMjY2LDQuNDM5LDQuNDM5LDAsMCwxLS4yNzcsMS42NzIsMi44ODgsMi44ODgsMCwwLDEtLjc0OSwxLjEsMi44MjMsMi44MjMsMCwwLDEtMS4xLjYsNC43NDIsNC43NDIsMCwwLDEtMS4zMjUuMTgyLDUuNDc2LDUuNDc2LDAsMCwxLTEuMzYxLS4xNjZBMy40MSwzLjQxLDAsMCwxLDE3LjQ2MiwyMS40OTFaXCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMzAgMjEuOTQ3IDI0LjgyMiAyMS45NDcgMjQuODIyIDEwLjA0NCAyNi43OCAxMC4wNDQgMjYuNzggMTkuNzczIDMwIDE5Ljc3MyAzMCAyMS45NDdcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz5gLFxuXHRcIkhUTUxcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuOTAyIDI3LjIwMSAzLjY1NSAyIDI4LjM0NSAyIDI2LjA5NSAyNy4xOTcgMTUuOTg1IDMwIDUuOTAyIDI3LjIwMVwiIHN0eWxlPVwiZmlsbDojZTQ0ZjI2XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDI3Ljg1OCAyNC4xNyAyNS41OTMgMjYuMDkyIDQuMDYxIDE2IDQuMDYxIDE2IDI3Ljg1OFwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDEzLjQwNyAxMS45MSAxMy40MDcgMTEuNjI4IDEwLjI0MiAxNiAxMC4yNDIgMTYgNy4xNTEgMTUuOTg5IDcuMTUxIDguMjUgNy4xNTEgOC4zMjQgNy45ODEgOS4wODMgMTYuNDk4IDE2IDE2LjQ5OCAxNiAxMy40MDdcIiBzdHlsZT1cImZpbGw6I2ViZWJlYlwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAyMS40MzQgMTUuOTg2IDIxLjQzOCAxMi41NDQgMjAuNTA5IDEyLjMyNCAxOC4wNDQgMTAuNjUxIDE4LjA0NCA5LjIyMSAxOC4wNDQgOS42NTQgMjIuODk2IDE1Ljk4NiAyNC42NTQgMTYgMjQuNjUgMTYgMjEuNDM0XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuOTg5IDEzLjQwNyAxNS45ODkgMTYuNDk4IDE5Ljc5NSAxNi40OTggMTkuNDM3IDIwLjUwNyAxNS45ODkgMjEuNDM3IDE1Ljk4OSAyNC42NTMgMjIuMzI2IDIyLjg5NiAyMi4zNzIgMjIuMzc0IDIzLjA5OCAxNC4yMzcgMjMuMTc0IDEzLjQwNyAyMi4zNDEgMTMuNDA3IDE1Ljk4OSAxMy40MDdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIxNS45ODkgNy4xNTEgMTUuOTg5IDkuMDcxIDE1Ljk4OSAxMC4yMzUgMTUuOTg5IDEwLjI0MiAyMy40NDUgMTAuMjQyIDIzLjQ0NSAxMC4yNDIgMjMuNDU1IDEwLjI0MiAyMy41MTcgOS41NDggMjMuNjU4IDcuOTgxIDIzLjczMiA3LjE1MSAxNS45ODkgNy4xNTFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkhUVFBcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjEyLjI3OFwiIGN5PVwiMjQuNTU3XCIgcj1cIjE4LjM3MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAtMC4wMDEsIDM0LjAwMSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkM2U5ZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xNTVcIiBzdG9wLWNvbG9yPVwiI2QzZTlmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjc1XCIgc3RvcC1jb2xvcj1cIiM0MDc0YWVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzY0ODZjXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiYlwiIGN4PVwiMTAuNjU3XCIgY3k9XCIyNi43NDZcIiByPVwiMjYuNjZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgLTAuMDAxLCAzNC4wMDEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjAuMTY1XCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiY1wiIGN4PVwiLTQ1LjA1XCIgY3k9XCI5LjI4NVwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yMS45NzEgNDEuOTQyKSByb3RhdGUoMTQzLjczNClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImRcIiBjeD1cIi00MS40NTZcIiBjeT1cIjMyLjE1NFwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDMuNTcxIDg3LjA3NSkgcm90YXRlKDE0My43MzQpIHNjYWxlKDEuMjk3KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJlXCIgY3g9XCItNDguNDg1XCIgY3k9XCIxMy4yMzlcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjMuMDg0IDU1LjQxMykgcm90YXRlKDE0My43MzQpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxyYWRpYWxHcmFkaWVudCBpZD1cImZcIiBjeD1cIi00MC44ODNcIiBjeT1cIjE2LjAzNlwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjg3LCAwLjYzOSwgLTAuNjM4LCAtMC44NywgLTkuMzUxLCA0Ny43MDYpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi02Ni41MDJcIiB5MT1cIjIuMjE5XCIgeDI9XCItNjQuNjI2XCIgeTI9XCI2Ljc0OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuOTM5LCAtMC44NzksIC0wLjY4MywgLTAuNzMsIDg0LjgxLCAtMzMuNjI4KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCItMjYuNzkxXCIgeTE9XCIzOS4xNTlcIiB4Mj1cIi0yNC45OTlcIiB5Mj1cIjQ0LjY4M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuMTMxLCAwLjYxMywgMC40NzcsIC0wLjg3OSwgMjEuNjQ4LCA2OS4wNzEpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIi02My4zODRcIiB5MT1cIjguMTc3XCIgeDI9XCItNjMuNTdcIiB5Mj1cIjQuNjlcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjkxOCwgLTAuODU5LCAtMC42NjgsIC0wLjcxMywgNzcuODU3LCAtMzYuNDkzKVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCItOTkuMjU5XCIgeTE9XCI4OS41NDVcIiB4Mj1cIi05OC44MjVcIiB5Mj1cIjkzLjAyM1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0xLjI4LCAtMC4xMjYsIC0wLjA5OCwgMC45OTUsIC0xMDEuNjM3LCAtOTMuMDE1KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJrXCIgY3g9XCItMjAuNzEyXCIgY3k9XCI1Ny42MVwiIHI9XCIyLjgzNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAsIC0wLjg0MywgLTAuNzIxLCAwLCAyNi42MjUsIC0yMS42OTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzI5ZmNmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNiNjFhNlwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImxcIiBjeD1cIi0yMC43MTJcIiBjeT1cIjM5Ljg1OFwiIHI9XCIyLjgzNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI2LjYyNSA2My4wOTYpIHJvdGF0ZSg5MCkgc2NhbGUoMC44NDMgMC43MjEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzI5ZmNmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzUwOWUyZlwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2h0dHA8L3RpdGxlPjxwYXRoIGQ9XCJNMjguMDI2LDE0LjJBMTEuODc3LDExLjg3NywwLDEsMSwxNi4xNDksMi4zMjUsMTEuODc4LDExLjg3OCwwLDAsMSwyOC4wMjYsMTQuMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE2LjE0OSwyNi4zODZBMTIuMTgzLDEyLjE4MywwLDEsMSwyOC4zMzMsMTQuMiwxMi4yLDEyLjIsMCwwLDEsMTYuMTQ5LDI2LjM4NlptMC0yMy43NTRBMTEuNTcxLDExLjU3MSwwLDEsMCwyNy43MiwxNC4yLDExLjU4NCwxMS41ODQsMCwwLDAsMTYuMTQ5LDIuNjMyWlwiIHN0eWxlPVwiZmlsbDojMzkzOTZjXCIvPjxwYXRoIGQ9XCJNMjcuNjkzLDEyLjQyNGgwbC0uMzI4LjM3MWE3LDcsMCwwLDAtLjY1Ni0uNjQ0bC0uNS4wNzQtLjQ2LS41MTl2LjY0M2wuMzk0LjMuMjYyLjMuMzUtLjRjLjA4OC4xNjUuMTc1LjMzLjI2My41di40OTVsLS4zOTQuNDQ1LS43MjIuNS0uNTQ2LjU0NS0uMzUtLjQuMTc1LS40NDUtLjM1LS40LS41OTEtMS4yNjItLjUtLjU2OUwyMy42LDEyLjFsLjIuNzE4LjM3MS40MjFhMTcuMDY5LDE3LjA2OSwwLDAsMCwuNywxLjc4Myw5Ljk3OSw5Ljk3OSwwLDAsMCwxLjI2OC0uMXYuMzQ3bC0uNTI1LDEuMjg3LS40ODEuNTQ0LS4zOTQuODQzVjE5LjMzbC4xMzIuNTQ1LS4yMTkuMjQ3LS40ODIuMy0uNS40MjEuNDE2LjQ3LS41NjkuNS4xMDkuMzIxLS44NTMuOTY2SDIyLjJsLS40ODEuM2gtLjMwN3YtLjRsLS4xMy0uNzkzYy0uMTY5LS41LS4zNDYtLjk5MS0uNTI1LTEuNDg0LDAtLjM2NC4wMjItLjcyNS4wNDQtMS4wODlsLjIxOS0uNDk1LS4zMDctLjU5NS4wMjItLjgxNy0uNDE2LS40Ny4yMDgtLjY4LS4zMzgtLjM4NEgxOS42bC0uMi0uMjIzLS41OTEuMzcyLS4yNC0uMjczLS41NDcuNDdMMTYuOTExLDE1LjI3bC0uNDM3LTEuMDQuMzk0LS41OTMtLjIxOS0uMjQ3LjQ4MS0xLjEzOWMuMzk1LS40OTEuODA3LS45NjMsMS4yMjUtMS40MzZsLjc0NC0uMi44MzEtLjEuNTY5LjE0OS44MDkuODE2LjI4NC0uMzIxLjM5My0uMDQ5Ljc0NC4yNDdIMjMuM2wuMzk0LS4zNDcuMTc1LS4yNDctLjM5NC0uMjQ3LS42NTYtLjA0OWE2LjYsNi42LDAsMCwwLS41NjgtLjc0M2wtLjIxOS4xLS4wODguNjQ0LS4zOTQtLjQ0NS0uMDg3LS41LS40MzctLjM0NmgtLjE3NmwuNDM4LjQ5NS0uMTc1LjQ0NS0uMzUuMS4yMTktLjQ0NS0uMzk0LS4yLS4zNDktLjQtLjY1Ny4xNDgtLjA4Ny4yLS4zOTQuMjQ4LS4yMTkuNTQ1LS41NDYuMjcyLS4yNDEtLjI3MkgxNy44M1Y5LjQyOGwuNTY5LS4zaC40MzdsLS4wODgtLjM0NkwxOC40LDguNDM4bC41OS0uMTI0LjMyOC0uMzcxLjI2Mi0uNDQ2aC40ODJsLS4xMzItLjM0Ni4zMDctLjJ2LjRsLjY1Ni4xNDguNjU2LS41NDQuMDQ0LS4yNDguNTY4LS40YTQuMzUzLDQuMzUzLDAsMCwwLS42MTIuMVY1Ljk2M2wuMjE5LS41aC0uMjE5bC0uNDguNDQ1LS4xMzIuMjQ4LjEzMi4zNDctLjIxOS41OTMtLjM1LS4yLS4zMDYtLjM0Ni0uNDgyLjM0Ni0uMTc1LS43OTIuODMxLS41NDR2LS4zbC41MjUtLjM0Ni44MzEtLjIuNTY5LjIsMS4wNDkuMi0uMjYyLjNIMjIuNTFsLjU2OS41OTQuNDM3LS40OTUuMTMzLS4yMThhMTUuNTMsMTUuNTMsMCwwLDEsMi42MzUsMy4xNDdBMTEuNDUyLDExLjQ1MiwwLDAsMSwyNy42OTMsMTIuNDI0WlwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xNi44NjEsNS41MTdsLS4wNDQuMy4zMDcuMi41MjQtLjM0Ni0uMjYyLS4zLS4zNS4yLS4xNzQtLjA1XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE3LjM0MywzLjQ4OGwtMS4xMzgtLjQ0Ni0xLjMxMi4xNDgtMS42MTkuNDQ1LS4zMDYuMywxLjAwNi42OTN2LjRsLS4zOTQuNC41MjUsMS4wNC4zNDktLjIuNDM4LS42OTNhMTUuMDUzLDE1LjA1MywwLDAsMCwxLjkyNC0uNzQzbC41MjUtMS4zMzdcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTguNTI0LDcuNjQ3LDE4LjM0OSw3LjJsLS4zMDcuMS4wODguNTQ0LjM5NC0uMlwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xOC43LDcuNTQ3bC0uMDg4LjU5NS40ODEtLjEuMzUtLjM0Ni0uMzA2LS4zYy0uMS0uMjc0LS4yMjEtLjUyOS0uMzUtLjc5MmgtLjI2MnYuM2wuMTc0LjJ2LjQ0NVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMi4yMjUsMTYuOTUzbC0uMzUtLjY5My0uNjU2LS4xNDgtLjM1LS45NC0uODc1LjEtLjc0My0uNTQ0LS43ODguNjkzdi4xMDlhMywzLDAsMCwxLS43NDMtLjIwOWwtLjE3NS0uNDk1VjE0LjI4bC0uNTI1LjA0OXEuMDY2LS41Mi4xMzEtMS4wMzlINi44NDVsLS4zMDYuNC0uMzA2LjE0OEw1LjgsMTMuNTg3bC0uMDQ0LS41NDUuMDg4LS41OTQuNjU2LS40OTVINy4wMmwuMDg3LS4zLjY1Ni4xNDguNDgxLjU5NS4wODgtLjk5MS44MzEtLjY5My4zMDYtLjc0My42MTItLjI0Ny4zNS0uNDk1Ljc4Ny0uMTQ5LjM5NC0uNTkzSDEwLjQzMmwuNzQ0LS4zNDdIMTEuN2wuNzQ0LS4yNDguMDg4LS4zLS4yNjMtLjI0OC0uMzA2LS4xLjA4OC0uMy0uMjE5LS40NDUtLjUyNS4yLjA4OC0uNC0uNjEyLS4zNDdMMTAuMyw2LjhsLjA0NC4zLS40ODEuMi0uMzA2LjY0My0uMTMxLS41OTRMOC41OTQsN2wtLjEzMS0uNDQ1LDEuMDk0LS42NDQuNDgxLS40NDUuMDQ0LS41NDQtLjI2Mi0uMTQ5LS4zNS0uMDUtLjIxOS41NDVzLS4zNjYuMDcyLS40Ni4wOTVBMTIuNSwxMi41LDAsMCwwLDQuNiwxMy4zNzFhNi43ODksNi43ODksMCwwLDAsLjQwOS43MTFsLjkxOC41NDQuOTE4LjI0OC4zOTQuNS42MTIuNDQ1LjM1LS4wNDkuMjYyLjExOHYuMDhsLS4zNS45NC0uMjYzLjQuMDg4LjItLjIxOS43NDIuNzg3LDEuNDM2Ljc4Ny42OTMuMzUuNDk1TDkuNiwyMS45bC4yNjMuNTkzTDkuNiwyMy42MzdzLS4wMjEtLjAwNy4wMTMuMTA3YTUuMjc4LDUuMjc4LDAsMCwwLDEuNDg4LjgwOWwuMTYxLS4xMjMtLjA4Ny0uMjQ3LjM1LS4zNDcuMTMxLS4zNDcuNTY5LS4yLjQzNy0xLjA4OS0uMTMxLS4zLjMwNi0uNDQ1LjY1Ni0uMTQ5LjM1LS43OTItLjA4OC0uOTkuNTI1LS43NDMuMDg4LS43NDNjLS43MTgtLjM1Ni0xLjQzLS43MjMtMi4xNDMtMS4wODlcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTEuMjYzLDUuNzE1bC40MzcuM2guMzVWNS42NjZsLS40MzctLjItLjM1LjI0N1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMC4xMjYsNS4zMTlsLS4yMTkuNTQ0aC40MzhsLjIxOS0uNWMuMTg5LS4xMzMuMzc2LS4yNjguNTY4LS40bC40MzguMTQ5Ljg3NS41OTQuNDM4LS40LS40ODItLjItLjIxOS0uNDQ2LS44MzEtLjEtLjA0NC0uMjQ4LS4zOTQuMS0uMTc1LjM0Ni0uMjE5LS40NDYtLjA4Ny4yLjA0NC41LS4zNS4zXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTExLjcsNC4wODFsLjIxOS0uMi40MzgtLjFhNi45LDYuOSwwLDAsMSwuOTE4LS4zNDdsLS4xNzQtLjMtLjU2NS4wODEtLjI2Ny4yNjYtLjQ0LjA2NC0uMzkxLjE4NC0uMTkuMDkyLS4xMTYuMTU1LjU2OC4xXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTEyLjQ0NCw4Ljc4NWwuMjYzLS40LS4zOTQtLjMuMTMxLjY5M1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xNi4xNDksMjUuNzgzQTExLjU4LDExLjU4LDAsMSwxLDI3LjcyOSwxNC4yLDExLjU5MywxMS41OTMsMCwwLDEsMTYuMTQ5LDI1Ljc4M1ptMC0yMi41NDhBMTAuOTY4LDEwLjk2OCwwLDEsMCwyNy4xMTcsMTQuMiwxMC45OCwxMC45OCwwLDAsMCwxNi4xNDksMy4yMzVaXCIgc3R5bGU9XCJvcGFjaXR5OjAuMzk1NjA0NDAxODI2ODU4NTtpc29sYXRpb246aXNvbGF0ZTtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk01LjU0MSwxMC4yNDFhNC4xMTUsNC4xMTUsMCwxLDAsNi42MzYtNC44NjZoMEE0LjExNSw0LjExNSwwLDAsMCw1LjU0LDEwLjI0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNNy44MzYsOC41NThhMS4yNjgsMS4yNjgsMCwxLDAsMi4wNDYtMS41aDBhMS4yNjgsMS4yNjgsMCwwLDAtMi4wNDYsMS41WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTcuOTUyLDI0LjhhNS4zMzcsNS4zMzcsMCwxLDAsOC42MDctNi4zMTJ2MEE1LjMzNyw1LjMzNywwLDAsMCwxNy45NSwyNC44WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMjAuOTI4LDIyLjYxNmExLjY0NSwxLjY0NSwwLDEsMCwyLjY1My0xLjk0NmgwYTEuNjQ1LDEuNjQ1LDAsMCwwLTIuNjUzLDEuOTQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNC44NTksMTguNDkzQTQuMTE1LDQuMTE1LDAsMSwwLDExLjUsMTMuNjI2aDBhNC4xMTUsNC4xMTUsMCwwLDAtNi42MzYsNC44NjZaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk03LjE1NCwxNi44MDlhMS4yNjgsMS4yNjgsMCwxLDAsMi4wNDYtMS41aDBhMS4yNjgsMS4yNjgsMCwwLDAtMi4wNDYsMS41WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTIuNDA4LDEwLjI2OUE0LjQ0MSw0LjQ0MSwwLDEsMCwxOS41Nyw1LjAxNmgwYTQuNDQxLDQuNDQxLDAsMSwwLTcuMTYyLDUuMjUzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMTQuODg1LDguNDUyYTEuMzY5LDEuMzY5LDAsMSwwLDIuMjA4LTEuNjE5aDBhMS4zNjksMS4zNjksMCwxLDAtMi4yMDgsMS42MTlaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMi42OCwyNi4yMzhhMy44MywzLjgzLDAsMCwxLTIuOTA5LTEuMDg3Yy0xLjEzMy0xLjIxLTEuMi0zLjI1NS0uMi01Ljc1N2EyMS41NDIsMjEuNTQyLDAsMCwxLDUuMzA3LTcuMzI2QzIwLjA2NCw3LjIxNSwyNS45NDUsNS4zNTYsMjguMjcsNy44MzljMS4xMzMsMS4yMTEsMS4yLDMuMjU1LjIsNS43NTdhMjEuNTUzLDIxLjU1MywwLDAsMS01LjMwOCw3LjMyNkEyMS41NTEsMjEuNTUxLDAsMCwxLDE1LjUsMjUuNzMzLDkuMjI5LDkuMjI5LDAsMCwxLDEyLjY4LDI2LjIzOFpNMjUuMzQyLDcuMjhjLTIuNywwLTYuNiwxLjkwOC0xMC4xLDUuMTgzQTIxLDIxLDAsMCwwLDEwLjA3MSwxOS42Yy0uOTIxLDIuMy0uODg3LDQuMTM4LjA5NCw1LjE4N3MyLjgxNywxLjIsNS4xNjkuNDM3YTIxLDIxLDAsMCwwLDcuNDYtNC42OTIsMjEsMjEsMCwwLDAsNS4xNzUtNy4xMzJjLjkyMS0yLjMuODg4LTQuMTM4LS4wOTUtNS4xODdBMy4zNCwzLjM0LDAsMCwwLDI1LjM0Miw3LjI4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMjEuNjgxLDIyLjA5NGEyMC42MzMsMjAuNjMzLDAsMCwxLTkuMzM5LTIuNzU5QzYuMSwxNS45NSwyLjQ3MywxMC45NTcsNC4wOTQsNy45NjhjLjc5LTEuNDU4LDIuNy0yLjE3NSw1LjQtMi4wMTJBMjEuNTQyLDIxLjU0MiwwLDAsMSwxOC4xMiw4LjY3NGEyMS41NDUsMjEuNTQ1LDAsMCwxLDYuOTg3LDUuNzQ2YzEuNiwyLjE2NywyLjA1MSw0LjE2MywxLjI2MSw1LjYyMUMyNS42MjIsMjEuNDE2LDIzLjkxNSwyMi4wOTQsMjEuNjgxLDIyLjA5NFpNOC43NTksNi40NzRjLTIuMSwwLTMuNTcyLjYxMi00LjE5LDEuNzUxQzMuMTE3LDEwLjksNi43MiwxNS42NzQsMTIuNiwxOC44NnMxMS44NDMsMy42LDEzLjI5NC45MjRjLjY4NS0xLjI2My4yNTEtMy4wNTQtMS4yMi01LjA0MmEyMSwyMSwwLDAsMC02LjgxLTUuNTkzQTIxLDIxLDAsMCwwLDkuNDU5LDYuNVE5LjEsNi40NzQsOC43NTksNi40NzRaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0xMCwyNC4wNzhhMy43NTcsMy43NTcsMCwwLDEtMi44NTEtMS4wNjVjLTEuMTEtMS4xODctMS4xODEtMy4xODktLjItNS42MzlhMjEuMDYyLDIxLjA2MiwwLDAsMSw1LjE4OS03LjE2M2M1LjA3My00Ljc0NywxMC44My02LjU2MywxMy4xLTQuMTMyaDBjMi4yNzUsMi40MzEuMDgzLDguMDUzLTQuOTksMTIuOGEyMS4wNTksMjEuMDU5LDAsMCwxLTcuNDkxLDQuN0E5LjAyNCw5LjAyNCwwLDAsMSwxMCwyNC4wNzhaTTIyLjM3Myw1LjU1M2MtMi42MywwLTYuNDM5LDEuODY0LTkuODU2LDUuMDYyQTIwLjUsMjAuNSwwLDAsMCw3LjQ2MywxNy41OGMtLjksMi4yMzktLjg2Niw0LjAzNC4wOSw1LjA1NXMyLjc0NSwxLjE3Miw1LjAzOC40MjRhMjAuNTEzLDIwLjUxMywwLDAsMCw3LjI4NC00LjU4MmM0Ljc2Ni00LjQ2LDYuOTk0LTkuODUzLDQuOTY1LTEyLjAyaDBBMy4yNTYsMy4yNTYsMCwwLDAsMjIuMzczLDUuNTUzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNMTcuNTEyLDE5LjQxM2MtLjg2LDAtMS43NDgtLjA0My0yLjY1OS0uMTMzQzcuNzg0LDE4LjU4NCwyLjUwNywxNS4zODgsMi44NCwxMmgwYy4zMzMtMy4zODMsNi4xMzMtNS40OSwxMy4yLTQuNzkxczEyLjM0NSwzLjg5MiwxMi4wMTIsNy4yNzVDMjcuNzYzLDE3LjQzNiwyMy4zMjQsMTkuNDEzLDE3LjUxMiwxOS40MTNaTTMuMzc4LDEyLjA1N2MtLjMsMy4wMzEsNC44NzMsNi4wMywxMS41MjgsNi42ODZzMTIuMzEyLTEuMjc3LDEyLjYxMS00LjMwOFMyMi42NDQsOC40MDYsMTUuOTg4LDcuNzUsMy42NzcsOS4wMjcsMy4zNzgsMTIuMDU3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNNi4yNTEsMjkuOTY2aDYuNjc0VjIwLjgwOWgyLjk4MUw5LjU0OCwxMS40MzQsMy4yOTUsMjAuNzgybDIuOTU4LjAzMVpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz48cGF0aCBkPVwiTTEyLjkyNCwzMC4wNDVINi4yNTFhLjA0OS4wNDksMCwwLDEtLjAzOS0uMDIzYy0uMDEtLjAxNS0uMDE2LTMuMTM1LS4wMTYtMy4xNTZsMC01Ljk3NS0yLjktLjAzYS4wNi4wNiwwLDAsMS0uMDUxLS4wNDguMS4xLDAsMCwxLC4wMTEtLjA4NUw5LjUwOCwxMS4zOGEuMDU2LjA1NiwwLDAsMSwuMDQxLS4wMjUuMDUuMDUsMCwwLDEsLjA0LjAyNGw2LjM1Nyw5LjM3NWEuMS4xLDAsMCwxLC4wMTEuMDg2LjA1OS4wNTksMCwwLDEtLjA1MS4wNDhIMTIuOTh2OS4wNzhDMTIuOTgsMzAuMDEsMTIuOTU1LDMwLjA0NSwxMi45MjQsMzAuMDQ1Wm0tNi42MTgtLjE1OGg2LjU2MlYyMC44MDljMC0uMDQ0LjAyNS0uMDc5LjA1Ni0uMDc5aDIuODVMOS41NDksMTEuNTQ5LDMuNDI0LDIwLjdsMi44My4wM2MuMDMxLDAsLjA1NS4wMzYuMDU1LjA3OVpcIiBzdHlsZT1cImZpbGw6IzE4Mzg2OFwiLz48cGF0aCBkPVwiTTE5LjA1MywyMC41ODdsLTIuOTU4LjAzMSw2LjI1NCw5LjM0OCw2LjM1Ny05LjM3NUgyNS43MjRWMTEuNDM0SDE5LjA1MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNsKVwiLz48cGF0aCBkPVwiTTI1Ljc4LDExLjQzNHY5LjA3OGgyLjkyNWEuMDU5LjA1OSwwLDAsMSwuMDUxLjA0OC4xLjEsMCwwLDEtLjAxMS4wODZsLTYuMzU3LDkuMzc1YS4wNS4wNSwwLDAsMS0uMDQuMDI0LjA1Ni4wNTYsMCwwLDEtLjA0MS0uMDI1bC02LjI1NC05LjM0OGEuMS4xLDAsMCwxLS4wMTEtLjA4NS4wNi4wNiwwLDAsMSwuMDUxLS4wNDhsMi45LS4wMywwLTUuOTc1YzAtLjAyMS4wMDYtMy4xNDEuMDE2LTMuMTU2YS4wNDkuMDQ5LDAsMCwxLC4wMzktLjAyM2g2LjY3NEMyNS43NTUsMTEuMzU1LDI1Ljc4LDExLjM5LDI1Ljc4LDExLjQzNFptLTYuNjcyLDkuMTUzYzAsLjA0My0uMDI1LjA3OS0uMDU1LjA3OWwtMi44My4wMyw2LjEyNSw5LjE1Niw2LjIyNi05LjE4MWgtMi44NWMtLjAzMSwwLS4wNTYtLjAzNS0uMDU2LS4wNzlWMTEuNTEzSDE5LjEwN1pcIiBzdHlsZT1cImZpbGw6IzE4Mzg2OFwiLz5gLFxuXHRcIklkcmlzXCI6IGA8cGF0aCBkPVwiTTEzLjM3Niw2LjJjMy42LDEuMSw0LjUsMiw1LjgsNS4yLS4zLTQtMS45LTUuNi01LjgtNS4yWlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPjxwYXRoIGQ9XCJNOC4zNzYsMTIuNGMyLjMuNyw1LDEuMyw2LDUuNy40LTUuNS0yLjItNS44LTYtNS43WlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPjxwYXRoIGQ9XCJNOS45NzYsOC44YzMuNS43LDUuNywxLjcsNyw2LjIuMy01LjgtMi45LTYuNC03LTYuMlpcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz48cGF0aCBkPVwiTTE0LjU3NiwyYzE5LjEsMTIuNC00LjIsMTIuNy44LDI3LjFsMywuOWMtOC4zLTExLjIsMTguNC0xNy0zLjgtMjhaXCIgc3R5bGU9XCJmaWxsOiM4YTA4MTlcIi8+YCxcblx0XCJJbmlcIjogYDxwYXRoIGQ9XCJNMjMuMjY1LDI0LjM4MWwuOS0uODk0YzQuMTY0LjEzNiw0LjIyOC0uMDEsNC40MTEtLjQzOGwxLjE0NC0yLjc4NUwyOS44MDUsMjBsLS4wOTMtLjIzMWMtLjA0OS0uMTIyLS4yLS40ODYtMi44LTIuOTY1VjE1LjVjMy0yLjg5LDIuOTM2LTMuMDM4LDIuNzY1LTMuNDYxTDI4LjUzOCw5LjIyNWMtLjE3MS0uNDIyLS4yMzYtLjU4Ny00LjM3LS40NzRsLS45LS45M2EyMC4xNjYsMjAuMTY2LDAsMCwwLS4xNDEtNC4xMDZsLS4xMTYtLjI2My0yLjk3NC0xLjNjLS40MzgtLjItLjU5Mi0uMjcyLTMuNCwyLjc4NmwtMS4yNjItLjAxOWMtMi44OTEtMy4wODYtMy4wMjgtMy4wMy0zLjQ2MS0yLjg1NUw5LjE0OSwzLjE4MmMtLjQzMy4xNzUtLjU4Ni4yMzctLjQxOCw0LjQzN2wtLjg5My44OWMtNC4xNjItLjEzNi00LjIyNi4wMTItNC40MDcuNDM4TDIuMjg1LDExLjczMywyLjE5NSwxMmwuMDk0LjIzMmMuMDQ5LjEyLjE5NC40OCwyLjgsMi45NjJsMCwxLjNjLTMsMi44OS0yLjkzNSwzLjAzOC0yLjc2MywzLjQ2MmwxLjEzOCwyLjgxN2MuMTc0LjQzMS4yMzYuNTg0LDQuMzY5LjQ3NmwuOS45MzVhMjAuMjQzLDIwLjI0MywwLDAsMCwuMTM3LDQuMWwuMTE2LjI2NSwyLjk5MywxLjMwOGMuNDM1LjE4Mi41ODYuMjQ3LDMuMzg2LTIuOGwxLjI2Mi4wMTZjMi44OTUsMy4wOSwzLjA0MywzLjAzLDMuNDY2LDIuODU5bDIuNzU5LTEuMTE1QzIzLjI4OCwyOC42NDQsMjMuNDQsMjguNTgzLDIzLjI2NSwyNC4zODFaTTExLjQwNywxNy44NTdhNC45NTcsNC45NTcsMCwxLDEsNi40ODgsMi44MjRBNS4wMTQsNS4wMTQsMCwwLDEsMTEuNDA3LDE3Ljg1N1pcIiBzdHlsZT1cImZpbGw6Izk5YjhjNFwiLz5gLFxuXHRcIklvXCI6IGA8cGF0aCBkPVwiTTIsMi44ODdINy4wNzVWNy41MUgyWm0uMDUyLDYuODNINy4wNFYyOC42MjZIMi4wNTJaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xMy4yNzEsMjYuNDU0YTkuNzkxLDkuNzkxLDAsMCwxLTIuNjE2LTcuMTc4LDEwLjE0OCwxMC4xNDgsMCwwLDEsMi42MTYtNy4zNDMsOS4zMjEsOS4zMjEsMCwwLDEsNy4wNDctMi43Miw5LjM0LDkuMzQsMCwwLDEsNy4wNzUsMi43MkExMC4xNjgsMTAuMTY4LDAsMCwxLDMwLDE5LjI3NmE5LjgwOSw5LjgwOSwwLDAsMS0yLjYwNyw3LjE3OCw5LjQ1Niw5LjQ1NiwwLDAsMS03LjA3NSwyLjY1OUE5LjQzNiw5LjQzNiwwLDAsMSwxMy4yNzEsMjYuNDU0Wm0xMC40MzYtMi45NzJhNi43LDYuNywwLDAsMCwxLjE2Ni00LjI1OCw2Ljk0Myw2Ljk0MywwLDAsMC0xLjE2Ni00LjM1NCw0LjA0Nyw0LjA0NywwLDAsMC0zLjM4OS0xLjQ4Niw0LjAyMiw0LjAyMiwwLDAsMC0zLjM4LDEuNDg2LDYuOTkxLDYuOTkxLDAsMCwwLTEuMTU2LDQuMzU0LDYuNzQ0LDYuNzQ0LDAsMCwwLDEuMTU2LDQuMjU4LDQuMDUzLDQuMDUzLDAsMCwwLDMuMzgsMS40NkE0LjA3OCw0LjA3OCwwLDAsMCwyMy43MDcsMjMuNDgyWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG5cdFwiSmF2YVwiOiBgPHBhdGggZD1cIk0xMi4zMjUsMjMuNjU0cy0xLjA3LjYyMi43NjEuODMzYTE2LjAyMywxNi4wMjMsMCwwLDAsNS44LS4yNDYsMTAuMDg4LDEwLjA4OCwwLDAsMCwxLjU0MS43NTJjLTUuNDgxLDIuMzQ5LTEyLjQwNS0uMTM2LTguMS0xLjMzOVwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTEuNjU2LDIwLjU4OHMtMS4yLjg4OC42MzMsMS4wNzhhMjIuNjE4LDIyLjYxOCwwLDAsMCw3LjQ4MS0uMzU5LDMuMzIsMy4zMiwwLDAsMCwxLjE1Mi43Yy02LjYyNywxLjkzOC0xNC4wMDkuMTUzLTkuMjY2LTEuNDIxXCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xNy4zLDE1LjM4OGEyLjA1MSwyLjA1MSwwLDAsMS0uMzU1LDIuOTU0czMuNDI5LTEuNzcsMS44NTQtMy45ODdjLTEuNDcxLTIuMDY3LTIuNi0zLjA5NSwzLjUwOC02LjYzNiwwLDAtOS41ODYsMi4zOTQtNS4wMDcsNy42NjlcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTI0LjU1MiwyNS45MjFzLjc5Mi42NTItLjg3MiwxLjE1N2MtMy4xNjQuOTU4LTEzLjE2OCwxLjI0OC0xNS45NDguMDM4LTEtLjQzNS44NzQtMS4wMzgsMS40NjQtMS4xNjRhMy44LDMuOCwwLDAsMSwuOTY2LS4xMDhjLTEuMTExLS43ODMtNy4xODEsMS41MzctMy4wODMsMi4yLDExLjE3NiwxLjgxMiwyMC4zNzItLjgxNiwxNy40NzMtMi4xMjRcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTEyLjg0LDE3LjQxMnMtNS4wODksMS4yMDktMS44LDEuNjQ4YTM4LjIyNSwzOC4yMjUsMCwwLDAsNi43MzEtLjA3MmMyLjEwNi0uMTc4LDQuMjIxLS41NTUsNC4yMjEtLjU1NWE4LjkzNCw4LjkzNCwwLDAsMC0xLjI4LjY4NWMtNS4xNjgsMS4zNTktMTUuMTUxLjcyNy0xMi4yNzctLjY2M2E5LjYyOSw5LjYyOSwwLDAsMSw0LjQwNy0xLjA0MlwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMjEuOTY5LDIyLjUxNWM1LjI1My0yLjczLDIuODI0LTUuMzUzLDEuMTI5LTVhMy45MzIsMy45MzIsMCwwLDAtLjYuMTYxLjk1Ny45NTcsMCwwLDEsLjQ0OS0uMzQ2YzMuMzU0LTEuMTc5LDUuOTMzLDMuNDc4LTEuMDgzLDUuMzIyYS40NTguNDU4LDAsMCwwLC4xMDYtLjEzOFwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTguOCwyczIuOTA5LDIuOTEtMi43NTksNy4zODZjLTQuNTQ2LDMuNTktMS4wMzcsNS42MzcsMCw3Ljk3NS0yLjY1My0yLjM5NC00LjYtNC41LTMuMjk0LTYuNDYzQzE0LjY2NCw4LjAxOSwxOS45NzYsNi42MjMsMTguOCwyXCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xMy4zNTYsMjkuOTEyYzUuMDQyLjMyMywxMi43ODYtLjE3OSwxMi45NjktMi41NjUsMCwwLS4zNTMuOS00LjE2NywxLjYyM2E0MS40NTgsNDEuNDU4LDAsMCwxLTEyLjc2LjJzLjY0NS41MzMsMy45NTkuNzQ2XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+YCxcblx0XCJKYXZhU2NyaXB0XCI6IGA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgc3R5bGU9XCJmaWxsOiNmNWRlMTlcIi8+PHBhdGggZD1cIk0yMC44MDksMjMuODc1YTIuODY2LDIuODY2LDAsMCwwLDIuNiwxLjZjMS4wOSwwLDEuNzg3LS41NDUsMS43ODctMS4zLDAtLjktLjcxNi0xLjIyMi0xLjkxNi0xLjc0N2wtLjY1OC0uMjgyYy0xLjktLjgwOS0zLjE2LTEuODIyLTMuMTYtMy45NjQsMC0xLjk3MywxLjUtMy40NzYsMy44NTMtMy40NzZhMy44ODksMy44ODksMCwwLDEsMy43NDIsMi4xMDdMMjUsMTguMTI4QTEuNzg5LDEuNzg5LDAsMCwwLDIzLjMxMSwxN2ExLjE0NSwxLjE0NSwwLDAsMC0xLjI1OSwxLjEyOGMwLC43ODkuNDg5LDEuMTA5LDEuNjE4LDEuNmwuNjU4LjI4MmMyLjIzNi45NTksMy41LDEuOTM2LDMuNSw0LjEzMywwLDIuMzY5LTEuODYxLDMuNjY3LTQuMzYsMy42NjdhNS4wNTUsNS4wNTUsMCwwLDEtNC43OTUtMi42OTFabS05LjI5NS4yMjhjLjQxMy43MzMuNzg5LDEuMzUzLDEuNjkzLDEuMzUzLjg2NCwwLDEuNDEtLjMzOCwxLjQxLTEuNjUzVjE0Ljg1NmgyLjYzMXY4Ljk4MmMwLDIuNzI0LTEuNiwzLjk2NC0zLjkyOSwzLjk2NGE0LjA4NSw0LjA4NSwwLDAsMS0zLjk0Ny0yLjRaXCIvPmAsXG5cdFwiSlNPTlwiOiBgPHBhdGggZD1cIk00LjAxNCwxNC45NzZhMi41MSwyLjUxLDAsMCwwLDEuNTY3LS41MThBMi4zNzcsMi4zNzcsMCwwLDAsNi4zODYsMTMuMSwxNS4yNjEsMTUuMjYxLDAsMCwwLDYuNiwxMC4xNTZxLjAxMi0yLjA4NS4wNzUtMi43NDdhNS4yMzYsNS4yMzYsMCwwLDEsLjQxOC0xLjY4NiwzLjAyNSwzLjAyNSwwLDAsMSwuNzU1LTEuMDE4QTMuMDQ2LDMuMDQ2LDAsMCwxLDksNC4xMjUsNi43NjIsNi43NjIsMCwwLDEsMTAuNTQ0LDRoLjdWNS45NmgtLjM4N2EyLjMzOCwyLjMzOCwwLDAsMC0xLjcyMy40NjhBMy40LDMuNCwwLDAsMCw4LjcwOSw4LjUyYTM2LjA1NCwzNi4wNTQsMCwwLDEtLjEzNyw0LjEzMyw0LjczNCw0LjczNCwwLDAsMS0uNzY4LDIuMDZBNC41NjcsNC41NjcsMCwwLDEsNi4xLDE2YTMuODA5LDMuODA5LDAsMCwxLDEuOTkyLDEuNzU0LDguODYxLDguODYxLDAsMCwxLC42MTgsMy44NjVxMCwyLjQzNS4wNSwyLjlBMS43NTUsMS43NTUsMCwwLDAsOS4yNjQsMjUuN2EyLjYzOSwyLjYzOSwwLDAsMCwxLjU5Mi4zMzdoLjM4N1YyOGgtLjdhNS42NTUsNS42NTUsMCwwLDEtMS43NzMtLjIsMi45NywyLjk3LDAsMCwxLTEuMzI0LS45MywzLjM1MywzLjM1MywwLDAsMS0uNjgxLTEuNjNBMjQuMTc1LDI0LjE3NSwwLDAsMSw2LjYsMjIuMDA2LDE2LjQ2OSwxNi40NjksMCwwLDAsNi4zODYsMTguOWEyLjQwOCwyLjQwOCwwLDAsMC0uODA1LTEuMzYxLDIuNDg5LDIuNDg5LDAsMCwwLTEuNTY3LS41MjRaXCIgc3R5bGU9XCJmaWxsOiNmNWRlMTlcIi8+PHBhdGggZD1cIk0yNy45ODYsMTcuMDExYTIuNDg5LDIuNDg5LDAsMCwwLTEuNTY3LjUyNCwyLjQwOCwyLjQwOCwwLDAsMC0uODA1LDEuMzYxLDE2LjQ2OSwxNi40NjksMCwwLDAtLjIxMiwzLjEwOSwyNC4xNzUsMjQuMTc1LDAsMCwxLS4xNjksMy4yMzQsMy4zNTMsMy4zNTMsMCwwLDEtLjY4MSwxLjYzLDIuOTcsMi45NywwLDAsMS0xLjMyNC45Myw1LjY1NSw1LjY1NSwwLDAsMS0xLjc3My4yaC0uN1YyNi4wNGguMzg3YTIuNjM5LDIuNjM5LDAsMCwwLDEuNTkyLS4zMzcsMS43NTUsMS43NTUsMCwwLDAsLjUwNi0xLjE4NnEuMDUtLjQ2Mi4wNS0yLjlhOC44NjEsOC44NjEsMCwwLDEsLjYxOC0zLjg2NUEzLjgwOSwzLjgwOSwwLDAsMSwyNS45LDE2YTQuNTY3LDQuNTY3LDAsMCwxLTEuNy0xLjI4Niw0LjczNCw0LjczNCwwLDAsMS0uNzY4LTIuMDYsMzYuMDU0LDM2LjA1NCwwLDAsMS0uMTM3LTQuMTMzLDMuNCwzLjQsMCwwLDAtLjQyNS0yLjA5MiwyLjMzOCwyLjMzOCwwLDAsMC0xLjcyMy0uNDY4aC0uMzg3VjRoLjdBNi43NjIsNi43NjIsMCwwLDEsMjMsNC4xMjVhMy4wNDYsMy4wNDYsMCwwLDEsMS4xNDkuNTgxLDMuMDI1LDMuMDI1LDAsMCwxLC43NTUsMS4wMTgsNS4yMzYsNS4yMzYsMCwwLDEsLjQxOCwxLjY4NnEuMDYyLjY2Mi4wNzUsMi43NDdhMTUuMjYxLDE1LjI2MSwwLDAsMCwuMjEyLDIuOTQ3LDIuMzc3LDIuMzc3LDAsMCwwLC44MDUsMS4zNTUsMi41MSwyLjUxLDAsMCwwLDEuNTY3LjUxOFpcIiBzdHlsZT1cImZpbGw6I2Y1ZGUxOVwiLz5gLFxuXHRcIkpTT041XCI6IGA8cGF0aCBkPVwiTTEyLjgxNSwxNS4xNjdsLjY4LTUuNjc2aDYuNDg5djJoLTQuNEwxNS4zMjksMTMuN2EyLjQsMi40LDAsMCwxLC4yNTItLjEyMiwyLjk2MiwyLjk2MiwwLDAsMSwuMzc0LS4xMywyLjksMi45LDAsMCwxLC40NTgtLjEwNiwyLjgzNCwyLjgzNCwwLDAsMSwuNTEyLS4wNDYsMy45ODMsMy45ODMsMCwwLDEsMS40NjYuMjUyLDIuNzM2LDIuNzM2LDAsMCwxLDEuMDc2LjcyMywzLjE2NywzLjE2NywwLDAsMSwuNjY0LDEuMTY4LDUsNSwwLDAsMSwuMjI4LDEuNTg4LDQuMTU3LDQuMTU3LDAsMCwxLS4yMzYsMS4zODcsMy4zMDcsMy4zMDcsMCwwLDEtMS45LDIuMDI5LDQuMyw0LjMsMCwwLDEtMS43MTUuMzEyLDQuNzUsNC43NSwwLDAsMS0xLjQ1OC0uMjI4LDQuMDU0LDQuMDU0LDAsMCwxLTEuMjUyLS42NTYsMy4zNTksMy4zNTksMCwwLDEtLjg3OC0xLjA0NiwyLjc4NywyLjc4NywwLDAsMS0uMzItMS4zODJIMTUuMThhMS40NTgsMS40NTgsMCwwLDAsLjM5Ljk3LDEuMzgzLDEuMzgzLDAsMCwwLDEuNTU4LjIwNiwxLjA4OSwxLjA4OSwwLDAsMCwuNC0uNDEyLDEuNzQ5LDEuNzQ5LDAsMCwwLC4yMDYtLjYxOCw0LjMsNC4zLDAsMCwwLC4wNjItLjc0LDIuNzA5LDIuNzA5LDAsMCwwLS4wOTItLjc0LDEuNTA2LDEuNTA2LDAsMCwwLS4yODItLjU1OCwxLjIyOSwxLjIyOSwwLDAsMC0uNS0uMzQ5LDEuNzgsMS43OCwwLDAsMC0uNzE4LS4xMywyLjEyMSwyLjEyMSwwLDAsMC0uNS4wNTQsMS44MDUsMS44MDUsMCwwLDAtLjM4Mi4xMzgsMS4zMTgsMS4zMTgsMCwwLDAtLjI3NC4xOSwxLjI4LDEuMjgsMCwwLDAtLjE5LjJsLTIuMDQ4LS40ODJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTUuOTg1LDIzLjM0M2E0LjQ1LDQuNDUsMCwwLDEtMS4zMTEtLjU4LDMuMiwzLjIsMCwwLDEtLjg0OC0uODI0LDMuMDEyLDMuMDEyLDAsMCwxLS40NTgtMS4wMDgsNC44NzksNC44NzksMCwwLDEtLjEzLTEuMTQzdi0xLjU1YTIuMywyLjMsMCwwLDAtLjA3Ni0uNjE4LDEuMTg0LDEuMTg0LDAsMCwwLS4yMjItLjQ2Ni45NjkuOTY5LDAsMCwwLS4zODItLjMwNkExLjMyNCwxLjMyNCwwLDAsMCwyLDE2Ljc0NFYxNS4wMTJhMS4wNzQsMS4wNzQsMCwwLDAsLjkzNy0uNCwxLjg0MSwxLjg0MSwwLDAsMCwuMy0xLjF2LTEuNTVhNC44NzksNC44NzksMCwwLDEsLjEzLTEuMTQzLDMuMDM3LDMuMDM3LDAsMCwxLC40NTgtMS4wMDhBMy4xNywzLjE3LDAsMCwxLDQuNjcxLDlhNC40ODIsNC40ODIsMCwwLDEsMS4zMTEtLjU4bC40OCwxLjM0NGExLjIyMiwxLjIyMiwwLDAsMC0uNDg4LjMyOCwxLjc0MiwxLjc0MiwwLDAsMC0uMzA2LjUsMi41MjQsMi41MjQsMCwwLDAtLjE2LjYzNCw1LjgyNyw1LjgyNywwLDAsMC0uMDQ2Ljc0djEuNTVBMi44NDQsMi44NDQsMCwwLDEsNS4xMjYsMTQuOWEyLjM3LDIuMzcsMCwwLDEtMS4wNzYuOTgzLDIuMzU2LDIuMzU2LDAsMCwxLDEuMDc2Ljk5MiwyLjgwOCwyLjgwOCwwLDAsMSwuMzM2LDEuMzc0djEuNTVhNS44MjcsNS44MjcsMCwwLDAsLjA0Ni43NCwyLjU4NiwyLjU4NiwwLDAsMCwuMTYuNjM0LDEuNjg0LDEuNjg0LDAsMCwwLC4zMDYuNUExLjIyMiwxLjIyMiwwLDAsMCw2LjQ2MiwyMmMwLS4wMDUtLjQ3NywxLjM0NC0uNDc3LDEuMzQ0XCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+PHBhdGggZD1cIk04LjIxNSwxOS4zOTNhMS4yODksMS4yODksMCwwLDEsLjEtLjUxMiwxLjIxMiwxLjIxMiwwLDAsMSwuMjktLjQsMS4zNzMsMS4zNzMsMCwwLDEsLjQ1LS4yNzQsMS42MzcsMS42MzcsMCwwLDEsLjU4LS4xLDEuNTU1LDEuNTU1LDAsMCwxLC41NzIuMSwxLjI2OSwxLjI2OSwwLDAsMSwuNDUuMjc0LDEuMDc3LDEuMDc3LDAsMCwxLC4yOS40LDEuMjk0LDEuMjk0LDAsMCwxLDAsMS4wMjQsMS4xNTEsMS4xNTEsMCwwLDEtLjI5LjQxMiwxLjM4OCwxLjM4OCwwLDAsMS0uNDUuMjY4LDEuNjEzLDEuNjEzLDAsMCwxLS41NzIuMSwxLjU3OCwxLjU3OCwwLDAsMS0uNTgtLjEsMS40MDksMS40MDksMCwwLDEtLjQ1LS4yNjgsMS4yMjksMS4yMjksMCwwLDEtLjM5LS45MjRtMC02LjA4OGExLjI4OSwxLjI4OSwwLDAsMSwuMS0uNTEyLDEuMjEyLDEuMjEyLDAsMCwxLC4yOS0uNCwxLjM3MywxLjM3MywwLDAsMSwuNDUtLjI3NCwxLjYzNywxLjYzNywwLDAsMSwuNTgtLjEsMS41NTUsMS41NTUsMCwwLDEsLjU3Mi4xLDEuMjY5LDEuMjY5LDAsMCwxLC40NS4yNzQsMS4wNzcsMS4wNzcsMCwwLDEsLjI5LjQsMS4yOTQsMS4yOTQsMCwwLDEsMCwxLjAyNCwxLjE1MSwxLjE1MSwwLDAsMS0uMjkuNDEyLDEuMzg4LDEuMzg4LDAsMCwxLS40NS4yNjgsMS42MTMsMS42MTMsMCwwLDEtLjU3Mi4xLDEuNTc4LDEuNTc4LDAsMCwxLS41OC0uMSwxLjQwOSwxLjQwOSwwLDAsMS0uNDUtLjI2OCwxLjIyOSwxLjIyOSwwLDAsMS0uMzktLjkyNFwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNMjQuMjQsMjAuMjkzYTMuNjQ4LDMuNjQ4LDAsMCwxLS4xMjIuOTI5LDQuNTM0LDQuNTM0LDAsMCwxLS4zMzYuODkxLDQuNzA2LDQuNzA2LDAsMCwxLS41LjgwNyw0LjAwNSw0LjAwNSwwLDAsMS0uNjEuNjY0bC0xLjMtLjYxYy4wODEtLjE3My4xNjgtLjM0OS4yNi0uNTI2YTQuODQ2LDQuODQ2LDAsMCwwLC4yNjgtLjU1OCw0LjQ0Myw0LjQ0MywwLDAsMCwuMjA2LS42NTYsMy40MDYsMy40MDYsMCwwLDAsLjA4NC0uOFYxOC42NTZoMi4wNTlsLS4wMDgsMS42MzZcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTI1LjUzOCwyMS45OTRhMS4yNTEsMS4yNTEsMCwwLDAsLjQ4OC0uMzI4LDEuNzA3LDEuNzA3LDAsMCwwLC4zMDYtLjUsMi41MjUsMi41MjUsMCwwLDAsLjE2LS42MzQsNS44MjYsNS44MjYsMCwwLDAsLjA0Ni0uNzR2LTEuNTVhMi44NDQsMi44NDQsMCwwLDEsLjMzNi0xLjM4MiwyLjM2NCwyLjM2NCwwLDAsMSwxLjA4NC0uOTgzLDIuMzY0LDIuMzY0LDAsMCwxLTEuMDg0LS45ODMsMi44NDQsMi44NDQsMCwwLDEtLjMzNi0xLjM4MnYtMS41NWE1LjgyNyw1LjgyNywwLDAsMC0uMDQ2LS43NCwyLjU4NiwyLjU4NiwwLDAsMC0uMTYtLjYzNCwxLjY4NCwxLjY4NCwwLDAsMC0uMzA2LS41LDEuMjIyLDEuMjIyLDAsMCwwLS40ODgtLjMyOGwuNDgtMS4zMzhBNC40NSw0LjQ1LDAsMCwxLDI3LjMyOSw5YTMuMDkyLDMuMDkyLDAsMCwxLC44NDguODE1LDIuODkyLDIuODkyLDAsMCwxLC40NSwxLjAwOCw0LjYwNiw0LjYwNiwwLDAsMSwuMTM4LDEuMTQzdjEuNTVhMi42NTUsMi42NTUsMCwwLDAsLjA2OC42MjYsMS40NDgsMS40NDgsMCwwLDAsLjIyMi40NzQsMS4wMzcsMS4wMzcsMCwwLDAsLjM4Mi4zLDEuMzc2LDEuMzc2LDAsMCwwLC41NjQuMTA2djEuNzMxYTEuMDc3LDEuMDc3LDAsMCwwLS45NDYuNDEyLDEuODI4LDEuODI4LDAsMCwwLS4yOSwxLjA4NHYxLjU1YTQuNjA2LDQuNjA2LDAsMCwxLS4xMzgsMS4xNDMsMi45MTUsMi45MTUsMCwwLDEtLjQ1LDEuMDA4LDMuMTU3LDMuMTU3LDAsMCwxLS44NDguODI0LDQuNDgyLDQuNDgyLDAsMCwxLTEuMzExLjU4bC0uNDgtMS4zNTJcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz5gLFxuXHRcIkp1bGlhXCI6IGA8cGF0aCBkPVwiTTcuNDQ4LDIxLjk4M1YxMy43NzVsLTIuNDMyLjY2OXY4LjcyOWEyLjY2LDIuNjYsMCwwLDEtLjEwNi45MjkuMzM2LjMzNiwwLDAsMS0uMzA4LjIzOS40MDUuNDA1LDAsMCwxLS4yMTItLjA3NCwxLjI4MiwxLjI4MiwwLDAsMS0uMjg3LS4zLDIuODEzLDIuODEzLDAsMCwwLS4zNzctLjQwOS44NzQuODc0LDAsMCwwLS42MTEtLjIwNywxLjIyLDEuMjIsMCwwLDAtLjgxMi4yNTUuNzg5Ljc4OSwwLDAsMC0uMy42MjdBLjkwNy45MDcsMCwwLDAsMi41NDIsMjVhMy4xMTUsMy4xMTUsMCwwLDAsMS41NjEuMzE5LDcuMDY1LDcuMDY1LDAsMCwwLDEuMzctLjEyMiwyLjM2MSwyLjM2MSwwLDAsMCwxLjA1Ny0uNDgzLDIuMjkyLDIuMjkyLDAsMCwwLC42OC0xLjAxNCw1LjA5NCw1LjA5NCwwLDAsMCwuMjM5LTEuNzE1WlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMTAuODI1LDE0LjAwOEg4LjR2NS42MThhMi4yNDEsMi4yNDEsMCwwLDAsLjIxOC45NzcsMi40ODksMi40ODksMCwwLDAsLjYuOCwyLjksMi45LDAsMCwwLC44OTIuNTM2LDMuMDQ1LDMuMDQ1LDAsMCwwLDEuMS4yLDIuNTUsMi41NSwwLDAsMCwxLjA1MS0uMjQ0LDQuMzQ3LDQuMzQ3LDAsMCwwLDEuMDE5LS42NDh2Ljc0M0gxNS43MVYxNC4wMDhIMTMuMjg5djUuNzU2YTIuNzY0LDIuNzY0LDAsMCwxLS42NDguNzA2LDEuMTM5LDEuMTM5LDAsMCwxLS42NDguMjgxLDEuMTU1LDEuMTU1LDAsMCwxLS40NTctLjA5LDEuMjYzLDEuMjYzLDAsMCwxLS4zNzItLjIzOSwxLjA2LDEuMDYsMCwwLDEtLjI1LS4zNTYsMS4wOTEsMS4wOTEsMCwwLDEtLjA5LS40NDFaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0xOS4wNzQsMjEuOTgzVjEwLjEzMmwtMi40MTEuNjY5VjIxLjk4M1pcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cGF0aCBkPVwiTTIwLjAzOCwxNC40NDR2Ny41NGgyLjQyMVYxMy43NzVaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0yNy41NjgsMTcuODYzdjIuM3EtLjM3Mi4yNzYtLjY3NC40NTdhMS4xNjUsMS4xNjUsMCwwLDEtLjYuMTgxLjQ2OC40NjgsMCwwLDEtLjI3Ni0uMDksMSwxLDAsMCwxLS4yMzQtLjIzOSwxLjEzOCwxLjEzOCwwLDAsMS0uMTY1LS4zNTYsMS41NzYsMS41NzYsMCwwLDEtLjA1OC0uNDMuOTY4Ljk2OCwwLDAsMSwuMTgxLS41NTIsMi4zMDYsMi4zMDYsMCwwLDEsLjQ3My0uNSw0LjU3Miw0LjU3MiwwLDAsMSwuNjQ4LS40Myw3LjYxMiw3LjYxMiwwLDAsMSwuNzA2LS4zNDVaTTMwLDIxLjk4M1YxNmEyLjA4MywyLjA4MywwLDAsMC0uMTkxLS45LDEuNzc5LDEuNzc5LDAsMCwwLS41OTUtLjY5LDMuMDA2LDMuMDA2LDAsMCwwLTEuMDI1LS40NDEsNi4yMjUsNi4yMjUsMCwwLDAtMS40ODEtLjE1NCw1LjczNSw1LjczNSwwLDAsMC0xLjMyNy4xNDksNC42LDQuNiwwLDAsMC0xLjEuNCwyLjM3MywyLjM3MywwLDAsMC0uNzU5LjYxMSwxLjIxNiwxLjIxNiwwLDAsMC0uMjgxLjc3Ljk1OC45NTgsMCwwLDAsLjMxOS43MzgsMS4xNzgsMS4xNzgsMCwwLDAsLjgyOC4yOTIsMS4zNjQsMS4zNjQsMCwwLDAsLjU0Ny0uMS44LjgsMCwwLDAsLjMzNS0uMjU1Ljk4Ni45ODYsMCwwLDAsLjE2NS0uMzcyLDEuOTc4LDEuOTc4LDAsMCwwLC4wNDgtLjQzNSwxLjAzMSwxLjAzMSwwLDAsMSwuMjIzLS42NjkuOTc1Ljk3NSwwLDAsMSwuOC0uMjc2LDEuMDA4LDEuMDA4LDAsMCwxLC43ODEuMzE5LDEuNTk0LDEuNTk0LDAsMCwxLC4yOTIsMS4wODN2Ljc4NmwtLjI2NS4wNjRxLS40ODguMTQ5LS45ODguMzEzdC0uOTYxLjM2MWE3Ljg4NCw3Ljg4NCwwLDAsMC0uODY1LjQzLDMuNTExLDMuNTExLDAsMCwwLS43MDYuNTMxLDIuMzE5LDIuMzE5LDAsMCwwLS40NzguNjY5LDEuOTE4LDEuOTE4LDAsMCwwLS4xNzUuODI4LDIuMDM0LDIuMDM0LDAsMCwwLC4xNjUuODIzLDEuODc2LDEuODc2LDAsMCwwLC40NzMuNjUzLDIuMjU1LDIuMjU1LDAsMCwwLC43NDkuNDM1LDIuOTA3LDIuOTA3LDAsMCwwLC45OTMuMTU5LDMuNjc5LDMuNjc5LDAsMCwwLC43LS4wNTgsMi41MDksMi41MDksMCwwLDAsLjUzNi0uMTY1LDIuMjA5LDIuMjA5LDAsMCwwLC40My0uMjVxLjE5MS0uMTQzLjM5My0uMzEzdi42MzdaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PGNpcmNsZSBjeD1cIjYuMjA0XCIgY3k9XCIxMS42NzJcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiM2NjgyZGZcIi8+PHBhdGggZD1cIk02LjIsMTMuMjg3YTEuNjE1LDEuNjE1LDAsMSwxLDEuNjE1LTEuNjE1QTEuNjE3LDEuNjE3LDAsMCwxLDYuMiwxMy4yODdabTAtM2ExLjM4NSwxLjM4NSwwLDEsMCwxLjM4NSwxLjM4NUExLjM4NiwxLjM4NiwwLDAsMCw2LjIsMTAuMjg3WlwiIHN0eWxlPVwiZmlsbDojNDA2M2Q4XCIvPjxjaXJjbGUgY3g9XCIyMS40MTdcIiBjeT1cIjExLjY3MlwiIHI9XCIxLjVcIiBzdHlsZT1cImZpbGw6I2Q1NjM1Y1wiLz48cGF0aCBkPVwiTTIxLjQxNywxMy4yODdhMS42MTUsMS42MTUsMCwxLDEsMS42MTUtMS42MTVBMS42MTcsMS42MTcsMCwwLDEsMjEuNDE3LDEzLjI4N1ptMC0zQTEuMzg1LDEuMzg1LDAsMSwwLDIyLjgsMTEuNjcyLDEuMzg2LDEuMzg2LDAsMCwwLDIxLjQxNywxMC4yODdaXCIgc3R5bGU9XCJmaWxsOiNjYjNjMzNcIi8+PGNpcmNsZSBjeD1cIjIzLjM4NVwiIGN5PVwiOC4yOTdcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiM2MGFkNTFcIi8+PHBhdGggZD1cIk0yMy4zODUsOS45MTJBMS42MTUsMS42MTUsMCwxLDEsMjUsOC4zLDEuNjE3LDEuNjE3LDAsMCwxLDIzLjM4NSw5LjkxMlptMC0zQTEuMzg1LDEuMzg1LDAsMSwwLDI0Ljc3LDguMywxLjM4NiwxLjM4NiwwLDAsMCwyMy4zODUsNi45MTJaXCIgc3R5bGU9XCJmaWxsOiMzODk4MjZcIi8+PGNpcmNsZSBjeD1cIjI1LjM1NFwiIGN5PVwiMTEuNjcyXCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojYWE3OWMxXCIvPjxwYXRoIGQ9XCJNMjUuMzU0LDEzLjI4N2ExLjYxNSwxLjYxNSwwLDEsMSwxLjYxNS0xLjYxNUExLjYxNywxLjYxNywwLDAsMSwyNS4zNTQsMTMuMjg3Wm0wLTNhMS4zODUsMS4zODUsMCwxLDAsMS4zODUsMS4zODVBMS4zODYsMS4zODYsMCwwLDAsMjUuMzU0LDEwLjI4N1pcIiBzdHlsZT1cImZpbGw6Izk1NThiMlwiLz5gLFxuXHRcIktvdGxpblwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMzExLjMzNlwiIHkxPVwiMTQ1Mi4wNjRcIiB4Mj1cIjI4My4zNDJcIiB5Mj1cIjE0ODAuMDU4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4MS40IC0xNDUwKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U0NDg1N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ3XCIgc3RvcC1jb2xvcj1cIiM5ZDRiOWRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNmQ1ZmFhXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfa290bGluPC90aXRsZT48cGF0aCBkPVwiTTMwLDMwSDJWMkgzMEwxNiwxNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIkt1c3RvXCI6IGA8cmVjdCB4PVwiMC41NVwiIHk9XCIyMi4zMzlcIiB3aWR0aD1cIjE1LjQzM1wiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjQzOVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTQuMzYzIDEyLjc5Nykgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNiOGQ0MzJcIi8+PHJlY3QgeD1cIjEuMzcyXCIgeT1cIjE2LjM4MlwiIHdpZHRoPVwiOS44NTlcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC40MzlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEwLjcyNyA5LjY2Mykgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNiOGQ0MzJcIi8+PHJlY3QgeD1cIjkuMjMyXCIgeT1cIjI0LjMwMVwiIHdpZHRoPVwiOS44NTlcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC40MzlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE0LjAyNCAxNy41NDEpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojYjhkNDMyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjMwIDIgMiAyIDMwIDI5Ljk5OSAzMCAyXCIgc3R5bGU9XCJmaWxsOiMwMDc4ZDRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTAuMjgyIDEwLjI4MiAyMS43MTggMjEuNzE4IDMwIDEzLjQzNiAzMCAyIDE4LjU2NCAyIDEwLjI4MiAxMC4yODJcIiBzdHlsZT1cImZpbGw6IzU5YjRkOVwiLz48cG9seWdvbiBwb2ludHM9XCIzMCAyOS45OTkgMzAgMiAxNiAxNiAzMCAyOS45OTlcIiBzdHlsZT1cImZpbGw6I2ZmZjtvcGFjaXR5OjAuMjAwMDAwMDAyOTgwMjMyMjQ7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHJlY3QgeD1cIjE2LjIyNlwiIHk9XCI5LjAwMVwiIHdpZHRoPVwiMi43OTZcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC42MjJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIuMTkyIDE1LjUwNykgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjIwLjE4XCIgeT1cIjUuMDQ4XCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxLjc2MiAxNy4xNDYpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4xOFwiIHk9XCIxMi45NTVcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjgyOSAxOS40NjEpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyNC4xMzNcIiB5PVwiOS4wMDJcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMTI0IDIxLjA5OSkgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJMYVRlWFwiOiBgPHBhdGggZD1cIk0xMS4zMzMsMTMuMTIyYy0uMTI4LTEuNTYyLS4yNDEtMi43NTYtMi4yODctMi43NTZINy45MXY4LjRoMi4xNDV2LjYxMWwtMy4wODMtLjAyOS0zLjA4Mi4wMjl2LS42MTFINi4wMzR2LTguNEg0Ljg4NGMtMi4wNDYsMC0yLjE1OSwxLjIwOC0yLjI4NywyLjc1NkgybC4yODQtMy4zNjdoOS4zNjJsLjI4NCwzLjM2N2gtLjZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+PHBhdGggZD1cIk0xOS4yODksMjIuNTNIMTAuNDFWMjEuOTJoMS41MDZWMTMuNDY3SDEwLjQxdi0uNjExaDguNjM3bC40MTIsMy4zNjdoLS42Yy0uMjEzLTEuODMzLS42ODItMi43NTYtMi44NTUtMi43NTZIMTMuNzkxVjE3LjJoLjgzOGMxLjM2NCwwLDEuNTA1LS42LDEuNTA1LTEuNjYyaC42djMuOTM1aC0uNmMwLTEuMDgtLjE0Mi0xLjY2Mi0xLjUwNS0xLjY2MmgtLjgzOHY0LjEwNmgyLjIxNmMyLjQ3MiwwLDMtMS4xMDgsMy4zLTMuMjI1aC42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMjcuNzI3LDE5LjE4NmMtLjU0LDAtMS45NiwwLTIuNDE1LjAyOVYxOC42aDEuMTc5bC0yLjU1Ny0zLjU1Mi0yLjUyOSwzLjM4MUE0LjEsNC4xLDAsMCwwLDIyLjcsMTguNnYuNjExYy0uMzU1LS4wMjktMS41NzYtLjAyOS0yLjAxNy0uMDI5LS40LDAtMS41NDgsMC0xLjg3NS4wMjlWMTguNmguMzgzYTcuNDU5LDcuNDU5LDAsMCwwLC44MjQtLjA0M2MuNS0uMDQzLjU0LS4wODUuNjY3LS4yNTZMMjMuNTM2LDE0LjVsLTMuMTUzLTQuNDE4SDE5VjkuNDdjLjM4NC4wMjgsMS43OS4wMjgsMi4yNzMuMDI4LjU4MiwwLDEuOTE4LDAsMi40MjktLjAyOHYuNjExSDIyLjUyOGwyLjExNywyLjk1NSwyLjA3NC0yLjc4NGE0LjEsNC4xLDAsMCwwLTEuMjkzLS4xN1Y5LjQ3Yy4zNTYuMDI4LDEuNTkxLjAyOCwyLjAzMi4wMjguNCwwLDEuNTM0LDAsMS44NjEtLjAyOHYuNjExaC0uMzY5YTUuMjY0LDUuMjY0LDAsMCwwLS44MzguMDQzYy0uNDY5LjA0My0uNTI2LjA3MS0uNjY3LjI1NmwtMi40LDMuMjFMMjguNjM2LDE4LjZIMzB2LjYxMUMyOS42NDUsMTkuMTg2LDI4LjE4MiwxOS4xODYsMjcuNzI3LDE5LjE4NlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz5gLFxuXHRcIkxlc3NcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0zLjYwOVwiIHkxPVwiLTQ5Mi42ODVcIiB4Mj1cIi0zLjYwOVwiIHkyPVwiLTQ4MC4yNzFcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxOS43MTIgNTAyLjg5MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjE1XCIgc3RvcC1jb2xvcj1cIiMyYTRmODRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zODhcIiBzdG9wLWNvbG9yPVwiIzI5NGU4MlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMxNzJlNGVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9sZXNzPC90aXRsZT48cGF0aCBkPVwiTTI4LjU1OSwyMC4yMjZhMi40LDIuNCwwLDAsMS0yLjM5NCwyLjM5NEg2LjA0YTIuNCwyLjQsMCwwLDEtMi4zOTQtMi4zOTRWMTIuNkEyLjQsMi40LDAsMCwxLDYuMDQsMTAuMjA2SDI2LjE2NUEyLjQsMi40LDAsMCwxLDI4LjU1OSwxMi42WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjQuMzQ5LDE2LjI1YTEuOTcyLDEuOTcyLDAsMCwxLDEuNTc4LDEuODkxLDEuNjksMS42OSwwLDAsMS0uNjUzLDEuNCwyLjkzNCwyLjkzNCwwLDAsMS0xLjg2Mi41NTksNC41NTgsNC41NTgsMCwwLDEtMi4yNDEtLjYxOCwxLjk4NiwxLjk4NiwwLDAsMSwuMTYtLjY2OSwxLjgzLDEuODMsMCwwLDEsLjM1LS41NzYsMy43LDMuNywwLDAsMCwxLjY0OS40OTMuOTY1Ljk2NSwwLDAsMCwuNTEtLjExMi4zMzkuMzM5LDAsMCwwLC4xNzgtLjNxMC0uMzUzLS41NDYtLjUyOWwtLjY1My0uMjQ3cS0xLjQ4Mi0uNTQtMS40ODItMS43NjJhMS43NTMsMS43NTMsMCwwLDEsLjYyMy0xLjQxNiwyLjU4NywyLjU4NywwLDAsMSwxLjY3OC0uNjQ4LDUuMDk0LDUuMDk0LDAsMCwxLDEuMTUuMTQ3LDQuNTU1LDQuNTU1LDAsMCwxLDEuMDMyLjQ3MiwxLjY2OCwxLjY2OCwwLDAsMS0uMTMuNzIyLDEuMjIsMS4yMiwwLDAsMS0uMzguNTU4LDQuMjYxLDQuMjYxLDAsMCwwLTEuNjYtLjQ0Ni41NDQuNTQ0LDAsMCwwLS4zNjIuMTA2LjMzOC4zMzgsMCwwLDAtLjEyNC4yN3EwLC4yODIuNDUxLjQ0NmwuNzM2LjI1OVpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz48cGF0aCBkPVwiTTE5LjEsMTYuMjVhMS45NzIsMS45NzIsMCwwLDEsMS41NzcsMS44OTEsMS42OTEsMS42OTEsMCwwLDEtLjY1MiwxLjQsMi45MzcsMi45MzcsMCwwLDEtMS44NjIuNTU5LDQuNTYsNC41NiwwLDAsMS0yLjI0MS0uNjE4LDEuOTgxLDEuOTgxLDAsMCwxLC4xNi0uNjY5LDEuODIxLDEuODIxLDAsMCwxLC4zNS0uNTc2LDMuNywzLjcsMCwwLDAsMS42NDkuNDkzLjk2My45NjMsMCwwLDAsLjUxLS4xMTIuMzQuMzQsMCwwLDAsLjE3OC0uM3EwLS4zNTMtLjU0Ni0uNTI5bC0uNjUzLS4yNDdxLTEuNDgyLS41NC0xLjQ4Mi0xLjc2MmExLjc1MiwxLjc1MiwwLDAsMSwuNjIzLTEuNDE2LDIuNTg1LDIuNTg1LDAsMCwxLDEuNjc3LS42NDgsNS4wODgsNS4wODgsMCwwLDEsMS4xNS4xNDcsNC41NTIsNC41NTIsMCwwLDEsMS4wMzIuNDcyLDEuNjY4LDEuNjY4LDAsMCwxLS4xMy43MjIsMS4yMiwxLjIyLDAsMCwxLS4zOC41NTgsNC4yNjMsNC4yNjMsMCwwLDAtMS42NjEtLjQ0Ni41NDMuNTQzLDAsMCwwLS4zNjIuMTA2LjMzOS4zMzksMCwwLDAtLjEyNC4yN3EwLC4yODIuNDUxLjQ0NmwuNzM2LjI1OVpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz48cGF0aCBkPVwiTTE1LjI2NCwxNi4zMzNhMi44MjIsMi44MjIsMCwwLDAtLjE3Mi0xLDIuMjM5LDIuMjM5LDAsMCwwLS40OTItLjc4NywyLjI4LDIuMjgsMCwwLDAtLjc3Ny0uNTE3LDIuNzM3LDIuNzM3LDAsMCwwLTEuMDI2LS4zMTQsMi44LDIuOCwwLDAsMC0xLjE4LjM2MSwyLjI1NiwyLjI1NiwwLDAsMC0uODMuNjQ2LDIuNzY1LDIuNzY1LDAsMCwwLS40ODcuOTY5LDQuNCw0LjQsMCwwLDAtLjE2LDEuMjE2LDUuNjgxLDUuNjgxLDAsMCwwLC4xMywxLjI1NywyLjYyOCwyLjYyOCwwLDAsMCwuNDQ1LDEsMi4xMDcsMi4xMDcsMCwwLDAsLjgxOC42NTcsMi45MzUsMi45MzUsMCwwLDAsMS4yNTEuMjc3LDMuOTUyLDMuOTUyLDAsMCwwLDIuMzI0LS43MTIsMS44NjUsMS44NjUsMCwwLDAtLjQ4NC0xLjA4MSw2LjE4OCw2LjE4OCwwLDAsMS0uODU3LjI2MiwzLjIwOCwzLjIwOCwwLDAsMS0uNjU2LjA3OSwxLjAxNywxLjAxNywwLDAsMS0uODE1LS4yOSwxLjE4NywxLjE4NywwLDAsMS0uMjcxLS43N2gzLjA4M0E0LjQ0Nyw0LjQ0NywwLDAsMCwxNS4yNjQsMTYuMzMzWm0tMy4yNDguMDgxYTIuNDMzLDIuNDMzLDAsMCwxLC4yMTgtMSwuNjMyLjYzMiwwLDAsMSwuNTU5LS4yNjQuNjYuNjYsMCwwLDEsLjU4Mi4yODIsMS43NDksMS43NDksMCwwLDEsLjE5NC44NTZ2LjEzSDEyLjAxNlpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz48cGF0aCBkPVwiTTI5LjE4LDE3LjJhMS42MDUsMS42MDUsMCwwLDAtLjUzLDEuMjY1djIuMDUxYTEuODEsMS44MSwwLDAsMS0uNjgzLDEuNTU3LDIuOCwyLjgsMCwwLDEtMS42NTQuNTQ5bC0uMzczLDBWMjEuNTk0YTEuMjQxLDEuMjQxLDAsMCwwLC41OTUtLjMzNCwxLjM2OSwxLjM2OSwwLDAsMCwuNDE5LTEuMDQ3VjE4LjU1NmEyLjU0NSwyLjU0NSwwLDAsMSwuMjU3LTEuMzIzLDIuNSwyLjUsMCwwLDEsMS4yLS44MzgsMi41MjgsMi41MjgsMCwwLDEtMS4zMjQtMS4xNzksMi45NTYsMi45NTYsMCwwLDEtLjEzNS0xLjE2NVYxMi41MzNhMS40NTgsMS40NTgsMCwwLDAtLjM2Ni0xLjA1NCwxLjE1MiwxLjE1MiwwLDAsMC0uNjQ4LS4zMTR2LS45NmMuNDQ1LDAsLjY2OSwwLC45MjgsMGExLjY3NiwxLjY3NiwwLDAsMSwxLjAyMy40NDIsMiwyLDAsMCwxLC42NzMsMS4wMDksMi4zMywyLjMzLDAsMCwxLC4wODYuN3YxLjc1N2ExLjg0NiwxLjg0NiwwLDAsMCwuNSwxLjM4MywyLjExMywyLjExMywwLDAsMCwuODU0LjQ3OXYuNzk0YTEuOTQzLDEuOTQzLDAsMCwwLS44Mi40MjZaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjY7c3Ryb2tlOiM0MDQwNDA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjVweFwiLz48cGF0aCBkPVwiTTUuNTk0LDEwLjIwNkg1LjI2YTEuNjczLDEuNjczLDAsMCwwLTEuMDIzLjQ0MiwxLjcxLDEuNzEsMCwwLDAtLjY3MywxLjAwOSwzLjUzMSwzLjUzMSwwLDAsMC0uMDM4Ljd2MS43NTdBMS44NjcsMS44NjcsMCwwLDEsMi45ODEsMTUuNSwyLjg0NywyLjg0NywwLDAsMSwyLDE1Ljk3N3YuNzkzYTIuNTUyLDIuNTUyLDAsMCwxLC45NDcuNDI2LDEuNjM4LDEuNjM4LDAsMCwxLC41NzcsMS4yNjV2Mi4wNTFBMS43ODEsMS43ODEsMCwwLDAsNC4xNiwyMi4wN2EyLjgsMi44LDAsMCwwLDEuNjU0LjU1bC40MjEsMFYyMS41OTRhMS40NywxLjQ3LDAsMCwxLS42NDMtLjMzNCwxLjM1NSwxLjM1NSwwLDAsMS0uMzcxLTEuMDQ3VjE4LjU1N2EyLjUxNiwyLjUxNiwwLDAsMC0uMzA1LTEuMzIzLDIuNSwyLjUsMCwwLDAtMS4yLS44MzgsMi41MjksMi41MjksMCwwLDAsMS4zMjQtMS4xNzgsMi44NTcsMi44NTcsMCwwLDAsLjE4My0xLjE2NVYxMi41MzRBMS40NjIsMS40NjIsMCwwLDEsNS41NCwxMS40OGExLjMxMywxLjMxMywwLDAsMSwuNTc1LS4yNzFsLjQyOCwwVjEwLjIwNkg1LjU5NFpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNjtzdHJva2U6IzQwNDA0MDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yNXB4XCIvPjxwYXRoIGQ9XCJNOS41MzcsMTguNTI5aC0uMzJjLS4zNDgsMC0uNDc5LS4xODMtLjQ3OS0uNTUxVjExLjIxOWExLjI1NiwxLjI1NiwwLDAsMC0uMjY4LS44NTZjLS4xNS0uMTY0LS40MTEtLjE2Mi0uNzgzLS4xNjJINi45NjRsLS4wODUsMHY4LjEwNmExLjg3NSwxLjg3NSwwLDAsMCwuMzUyLDEuMjQsMS40NDEsMS40NDEsMCwwLDAsMS4xNDUuMzkzLDcuODU5LDcuODU5LDAsMCwwLDEuMjY5LS4xMTgsMi4yMywyLjIzLDAsMCwwLC4wMzYtLjUwOSwyLjI3OCwyLjI3OCwwLDAsMC0uMTQyLS43ODJaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+YCxcblx0XCJMaXF1aWRcIjogYDxwYXRoIGQ9XCJNMjkuOTg4LDIyLjM3MmwtLjc0OC4wNDhhNS4yMDksNS4yMDksMCwwLDEtMi45OS0uNjcxLDcuOCw3LjgsMCwwLDAtNy44LDAsNS4yNzUsNS4yNzUsMCwwLDEtNS4zLjAxQTcuMjYyLDcuMjYyLDAsMCwwLDkuMjYzLDIwLjdhNy4yMjksNy4yMjksMCwwLDAtMy45NCwxLjA2LDQuNzUxLDQuNzUxLDAsMCwxLTIuNDcuN2wtLjgzOCwwYzAsLjg4OS0uMDA5LDEuNzM5LS4wMTUsMi41MTVsLjg2MSwwYTcuMjM3LDcuMjM3LDAsMCwwLDMuNzUtMS4wNTIsNC43NjMsNC43NjMsMCwwLDEsMi42NTktLjcsNC44MzUsNC44MzUsMCwwLDEsMi42MzQuNzE4LDcuNzk0LDcuNzk0LDAsMCwwLDcuOCwwLDUuMjg3LDUuMjg3LDAsMCwxLDUuMzE5LDAsNy43MDksNy43MDksMCwwLDAsNC40Ljk4OUwzMCwyNC44ODhDMjkuOTk1LDI0LjEsMjkuOTkxLDIzLjI0OSwyOS45ODgsMjIuMzcyWlwiIHN0eWxlPVwiZmlsbDojMDA0OTk5XCIvPjxwYXRoIGQ9XCJNMjkuOTgzLDE1LjU4MWwtLjc0My4wNDdhNS4yMjYsNS4yMjYsMCwwLDEtMi45OS0uNjcxLDcuOCw3LjgsMCwwLDAtNy44LDAsNS4yNzgsNS4yNzgsMCwwLDEtNS4zLjAxQTcuMzEyLDcuMzEyLDAsMCwwLDkuMjYzLDEzLjkxYTcuMyw3LjMsMCwwLDAtMy45NDEsMS4wNiw0Ljc0Miw0Ljc0MiwwLDAsMS0yLjQ2OS43bC0uODI4LDBjMCwuODQ5LDAsMS42OTMsMCwyLjUxNWwuODQsMGE3LjIzNyw3LjIzNywwLDAsMCwzLjc1LTEuMDUyLDQuNyw0LjcsMCwwLDEsMi42NTktLjcsNC44LDQuOCwwLDAsMSwyLjYzNC43MTgsNy43OTQsNy43OTQsMCwwLDAsNy44LDAsNS4yODcsNS4yODcsMCwwLDEsNS4zMTksMCw3LjcwOSw3LjcwOSwwLDAsMCw0LjQuOTg5bC41NjgtLjAzN0MyOS45ODMsMTcuMjY5LDI5Ljk4MywxNi40MjQsMjkuOTgzLDE1LjU4MVpcIiBzdHlsZT1cImZpbGw6IzAwNDk5OVwiLz48cGF0aCBkPVwiTTI5LjI0LDkuMTM3YTUuMjU0LDUuMjU0LDAsMCwxLTIuOTktLjY3MSw3LjgsNy44LDAsMCwwLTcuOCwwLDUuMjc1LDUuMjc1LDAsMCwxLTUuMy4wMDlBNy4xNiw3LjE2LDAsMCwwLDkuMjYzLDcuNDJhNy4xNTksNy4xNTksMCwwLDAtMy45NCwxLjA1OSw0LjczOCw0LjczOCwwLDAsMS0yLjQ2OS43bC0uODM0LDBjMCwuODIsMCwxLjY2NCwwLDIuNTE3bC44MzYsMGE3LjIzNyw3LjIzNywwLDAsMCwzLjc1LTEuMDUyLDQuNzM4LDQuNzM4LDAsMCwxLDIuNjU5LS43MDYsNC44MTQsNC44MTQsMCwwLDEsMi42MzQuNzE5LDcuNzkxLDcuNzkxLDAsMCwwLDcuOCwwLDUuMjkzLDUuMjkzLDAsMCwxLDUuMzE5LDAsNy43MzIsNy43MzIsMCwwLDAsNC40Ljk4OGwuNTY4LS4wMzdjMC0uODU5LDAtMS43LjAwNy0yLjUxNlpcIiBzdHlsZT1cImZpbGw6IzAwNDk5OVwiLz5gLFxuXHRcIkxpc3BcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE5MjUuNzg1XCIgeTE9XCItMTM4My4wNzVcIiB4Mj1cIjIzMDIuMzUxXCIgeTI9XCItMTg2OC41NTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjA0OCwgMCwgMCwgLTAuMDQ1LCAtODIuNTM5LCAtNTQuNjUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjODM4MWM1XCIvPjxzdG9wIG9mZnNldD1cIjAuNTY2XCIgc3RvcC1jb2xvcj1cIiM3ZTU1YjNcIiBzdG9wLW9wYWNpdHk9XCIwLjk5NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhNTJlY2JcIiBzdG9wLW9wYWNpdHk9XCIwLjk5MlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjIyMTQuMTg3XCIgeTE9XCItMTc1MC4yMjVcIiB4Mj1cIjE5MzAuOTc0XCIgeTI9XCItMTQwOC4zNDJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjA1NCwgMCwgMCwgLTAuMDU0LCAtOTUuMTg4LCAtNjguNDg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzQxMWY1ZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1YjJhODVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9lbWFjczwvdGl0bGU+PHBhdGggZD1cIk0yOS4zNjMsMTZBMTMuMzY0LDEzLjM2NCwwLDEsMSwxNiwyLjUsMTMuNDMyLDEzLjQzMiwwLDAsMSwyOS4zNjMsMTZaXCIgc3R5bGU9XCJzdHJva2Utd2lkdGg6MC43NXB4O2ZpbGw6dXJsKCNhKTtzdHJva2U6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTExLjQwNiwyNS40ODNhMTguMTU3LDE4LjE1NywwLDAsMCwyLjU4Ny0uMDQ4LDQxLjcyOCw0MS43MjgsMCwwLDAsNC41LS42MzksMzAuNjcxLDMwLjY3MSwwLDAsMCwzLjEzMi0uODM5YzEuMTQyLS40MjEsMS43NjQtLjc3OCwyLjA0My0xLjI4NGEuNjIuNjIsMCwwLDAtLjQ0MS0uNjkyYy0xLjM0Ny0uNTY1LTIuOTA4LS40NjMtNi0uNTI4LTMuNDI3LS4xMTgtNC41NjctLjY5MS01LjE3NC0xLjE1My0uNTgyLS40NjktLjI5LTEuNzY1LDIuMjA2LTIuOTA3YTU0LjI2Niw1NC4yNjYsMCwwLDEsNi4xODQtMS43M2MtMS42NTktLjgyLTQuNzUzLTIuMjYyLTUuMzg5LTIuNTczLS41NTgtLjI3My0xLjQ1MS0uNjg0LTEuNjQ0LTEuMTgyLS4yMTktLjQ3OC41MTgtLjg4OS45My0xLjAwN2EyMC4zLDIwLjMsMCwwLDEsNC45LS42NDcsNC4zMDgsNC4zMDgsMCwwLDAsMS0uMDY5QTEuNzY3LDEuNzY3LDAsMCwwLDIxLjg3OSw3LjlhMi43NzUsMi43NzUsMCwwLDAtMy4yODYtMS44MUMxNy4yMiw2LjMzOCwxMy45MDgsNy4zLDEzLjkwOCw3LjNjNC4wOTMtLjAzNSw0Ljc3OS4wMzMsNS4wODUuNDYxLjE4MS4yNTMtLjA4Mi42LTEuMTc0Ljc3Ny0xLjE4OS4xOTQtMy42NTkuNDI4LTMuNjU5LjQyOC0yLjM3LjE0MS00LjA0LjE1LTQuNTQsMS4yMS0uMzI3LjY5My4zNDksMS4zLjY0NSwxLjY4OGExMi43MjgsMTIuNzI4LDAsMCwwLDQuMjI1LDIuN2MuNDM4LjIwOCwxLjcyMy42LDEuNzIzLjZhMTEuNTIsMTEuNTIsMCwwLDAtOC4xLDIuMjg3Yy0xLjgwNywxLjY3Mi0xLjAwOCwzLjY2NSwyLjY5NSw0Ljg5MWExMi43NTUsMTIuNzU1LDAsMCwwLDYuNTM0Ljc3MmMxLjkyMi0uMSwyLjIyNC0uMDQyLDIuMjQ0LjExNi4wMjcuMjIyLTIuMTM0Ljc3My0yLjcyNC45NDQtMS41LjQzMy01LjQzNiwxLjMwNy01LjQ1NiwxLjMxMlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkxpdmVTY3JpcHRcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuNTA0IDIuMDA3IDguOTg2IDIgOC45ODYgMjEuNzQ2IDEwLjc1OSAxOS45ODcgMTAuNzU5IDMuNzU1IDEyLjQ5NyAzLjc1NSAxMi40OTcgMTguMjQgMTQuMjUzIDE2LjQ4NyAxNC4yNTMgMy43NTUgMTUuOTk3IDMuNzU1IDE1Ljk5NyAxNC43MjkgMTcuNzM1IDEyLjk2MiAxNy43MzUgMy43NTUgMTkuNDYxIDMuNzU1IDE5LjQ2MSAxMS4yMjUgMjEuMjQ1IDkuNDYxIDIxLjI0NSAzLjc1NSAyMi45NzIgMy43NTUgMjIuOTcyIDcuNzIzIDI0LjczOCA1Ljk3NSAyNC43MzkgMy43NTUgMjYuNDgzIDMuNzU1IDI2LjQ4MyA1LjQ4MiAyOC4yMDkgNS40ODIgMjguMjA5IDcuMjY3IDI1LjkxMSA3LjI2OCAyNC4xODQgOC45OTMgMjguMjA5IDguOTkzIDI4LjIwOSAxMC43MTkgMjIuNDM4IDEwLjcxOSAyMC42OTggMTIuNTA0IDI4LjIwOSAxMi41MDQgMjguMjA5IDE0LjIzIDE4Ljk2MSAxNC4yMyAxNy4yMDUgMTYuMDE0IDI4LjIwOSAxNi4wMTQgMjguMjA5IDE3Ljc0MSAxNS40NTUgMTcuNzQxIDEzLjcxNSAxOS40OTYgMjguMjA5IDE5LjQ5NiAyOC4yMDkgMjEuMjUyIDExLjk4IDIxLjI1MiAxMC4yNDIgMjIuOTc4IDI5Ljk4MiAyMi45NzggMjkuOTg5IDI2LjQ4OSA4Ljk4NiAyNi40ODkgOC45ODYgMzAgNS41MDQgMzAgNS41MDQgMjYuNDg5IDIuMDExIDI2LjQ4OSAyLjAxMSAyMi45NzggNS41MDQgMjIuOTc4IDUuNTAzIDIgNS41MDQgMi4wMDdcIiBzdHlsZT1cImZpbGw6IzMxN2VhY1wiLz5gLFxuXHRcIkxvZyBmaWxlXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIyLjVcIiB5PVwiNS41XCIgd2lkdGg9XCIyNi45XCIgaGVpZ2h0PVwiMS45XCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCI5LjVcIiB3aWR0aD1cIjguMTY3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMTIuMDgzXCIgd2lkdGg9XCIxMi41XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMTQuNzVcIiB3aWR0aD1cIjEwLjYxN1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjE3LjU4M1wiIHdpZHRoPVwiMTQuMTY3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMjAuNVwiIHdpZHRoPVwiOS44MzRcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjVcIiB5PVwiMjMuMDgzXCIgd2lkdGg9XCIxMi4xNjdcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCI5LjVcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTIuMDgzXCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjEyLjA4M1wiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIxNC42NjdcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTcuMjVcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMjAuNVwiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIyMy4wODNcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPmAsXG5cdFwiTE9MQ09ERVwiOiBgPHBhdGggZD1cIk0yMS4zLDMuNzNhMy45NCwzLjk0LDAsMCwxLDEuMDQxLS42Miw4LjQzNSw4LjQzNSwwLDAsMSwuNTU2LDMuMzg1LDI0Ljg2NSwyNC44NjUsMCwwLDEtLjY0Myw1LjAxOWMtLjM2OC0uMTgtLjczNi0uMzY0LTEuMS0uNTU0YTExLjc1NCwxMS43NTQsMCwwLDAsLjI3My0zLjc0NywzLjA4LDMuMDgsMCwwLDAtLjI1NS0uODY1LDUuMTQyLDUuMTQyLDAsMCwwLTIuMDE2LDIuMDdjLS4zMTktLjI0LS42NTItLjQ1OS0uOTg1LS42NzZBMTUuNzE2LDE1LjcxNiwwLDAsMSwyMS4zLDMuNzNaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0xOS40NTEsOC42YTQuNTc0LDQuNTc0LDAsMCwxLDEuNTA5LTEuNTYzLDYuNjg1LDYuNjg1LDAsMCwxLC4wOSwyLjY3MUMyMC41MTcsOS4zNDMsMTkuOTc1LDguOTg3LDE5LjQ1MSw4LjZaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0xNi40NjEsMTAuMDc2Yy0uMDM4LTEuMTM0LS4wMzEtMi4yNjktLjAyNi0zLjQtLjkuNDkzLTEuNzU4LDEuMDcxLTIuNjQ4LDEuNTg5LS40NTMuMjctLjkwOC41MzYtMS4zNi44MDguMjI0LS4xNjMuNDU3LS4zMTIuNjktLjQ2Mi0uODYxLTEuMjI0LTEuOTcxLTIuNS0zLjUzLTIuNzQ4YTEwLjk2NCwxMC45NjQsMCwwLDAtLjM2NSw1LjE0N2MuMzE4LS4xOTUuNjMzLS40Ljk2Mi0uNTcyLS40NzQuMzE5LS45NjQuNjE1LTEuNDQ2LjkyLS45NTcuNi0xLjkyMiwxLjE5Mi0yLjg5MiwxLjc3N2ExLjIzMiwxLjIzMiwwLDAsMC0uMzkxLjMyYy0uMSwxLjM5NS0uMzQsNC4zOTItLjM0LDQuMzkyLS4yNTQsMy42NjgtLjUyMiw3LjMzNi0uODI2LDExLDQuMDYyLjM0Myw4LjExOC43NDIsMTIuMTc5LDEuMDc2QzE2LjQ1OCwyMy4zLDE2LjQ3MiwxNi42OSwxNi40NjEsMTAuMDc2WlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMjEuMSwyLjk3N0E1Ljg4NCw1Ljg4NCwwLDAsMSwyMi43MDYsMmExMC4wNjQsMTAuMDY0LDAsMCwxLC43NzIsNC42MDYsMjQuNTkxLDI0LjU5MSwwLDAsMS0uNTA4LDQuNDU5YzEuMi44NDYsMi40MzMsMS42NDUsMy42MTgsMi41MDlxLjQ0LDYuMzguOTA3LDEyLjc1OGMuMDY2LjgzOS4wOTQsMS42OC4yMTYsMi41MTMtMy4wMjkuMjc5LTYuMDU3LjU5MS05LjA4NS44ODZhMTkuMTM3LDE5LjEzNywwLDAsMC0yLjE1OC4yN3YtLjA4M2MtLjAxLTYuNjE0LDAtMTMuMjI3LS4wMDctMTkuODQxLS4wMzgtMS4xMzQtLjAzMS0yLjI2OS0uMDI2LTMuNHYtLjFjLjQwNi4yOTIuODI2LjU2MiwxLjI0My44MzlBMTYuMjc0LDE2LjI3NCwwLDAsMSwyMS4xLDIuOTc3Wm0uMi43NTJhMTUuNzE2LDE1LjcxNiwwLDAsMC0zLjEyOCw0LjAxMWMuMzM0LjIxNy42NjYuNDM3Ljk4NS42NzZhNS4xNDIsNS4xNDIsMCwwLDEsMi4wMTYtMi4wNywzLjA4LDMuMDgsMCwwLDEsLjI1NS44NjUsMTEuNzU0LDExLjc1NCwwLDAsMS0uMjczLDMuNzQ3Yy4zNjQuMTkuNzMxLjM3NCwxLjEuNTU0YTI0Ljg2NSwyNC44NjUsMCwwLDAsLjY0My01LjAxOSw4LjQzNSw4LjQzNSwwLDAsMC0uNTU2LTMuMzg1QTMuOTQsMy45NCwwLDAsMCwyMS4zLDMuNzNaTTE5LjQ1MSw4LjZjLjUyNC4zODMsMS4wNjYuNzM5LDEuNiwxLjEwOGE2LjY4NSw2LjY4NSwwLDAsMC0uMDktMi42NzFBNC41NzQsNC41NzQsMCwwLDAsMTkuNDUxLDguNlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTkuMjE5LDUuMDYyYTMuNTgxLDMuNTgxLDAsMCwxLDIuMjA1Ljc0OEExMi45LDEyLjksMCwwLDEsMTMuNzg4LDguMjZjLS40NTMuMjctLjkwOC41MzYtMS4zNi44MDguMjI0LS4xNjMuNDU3LS4zMTIuNjktLjQ2Mi0uODYxLTEuMjI0LTEuOTcxLTIuNS0zLjUzLTIuNzQ4YTEwLjk2NCwxMC45NjQsMCwwLDAtLjM2NSw1LjE0N2MuMzE4LS4xOTUuNjMzLS40Ljk2Mi0uNTcyLS40NzQuMzE5LS45NjQuNjE1LTEuNDQ2LjkyQTE0LjEsMTQuMSwwLDAsMSw5LjIxOSw1LjA2MlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEwLjUwNyw4LjQ3NmEyLjQ1NSwyLjQ1NSwwLDAsMSwxLjUxNy44OGwtLjM2LjJBMi42OSwyLjY5LDAsMCwwLDEwLjczOSw5YTMuMzE4LDMuMzE4LDAsMCwwLS4xNjUsMS4yODFsLS4zNDQuMTFBNy4wMjEsNy4wMjEsMCwwLDEsMTAuNTA3LDguNDc2WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTIuMTM5LDEwLjY5M2EuNDg3LjQ4NywwLDAsMSwuNTQyLjAxLDEuNTUyLDEuNTUyLDAsMCwxLC4wNjIuNmMtLjAzOS43ODQuMDI0LDEuNTczLS4wNzYsMi4zNTRhMS4wMTMsMS4wMTMsMCwwLDEtMS4wMTIuODg2Yy0uMjMzLS4wNS0uMjc4LS4zNDEtLjI3OC0uNTQxLDAtLjY3NS4xLTEuMzQ3LjA2Ni0yLjAyNEExLjMsMS4zLDAsMCwxLDEyLjEzOSwxMC42OTNabS4xNSwxLjA4NGEuODkxLjg5MSwwLDAsMCwuMjUxLS44NjZDMTIuMjE4LDExLjA2MSwxMS45LDExLjUwNywxMi4yODksMTEuNzc3WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTQuNSwxMy43MjhhMTcuNjcxLDE3LjY3MSwwLDAsMSwxLjkyOC0uODIyYy0uMDI0LjA2NC0uMDY5LjE5MS0uMDkyLjI1NS0uNjQ5LjM1OC0xLjM2LjYtMi4wMjEuOTM4YTEyLjExOCwxMi4xMTgsMCwwLDAtMy4yMzgsMi4yNDhBNy4yLDcuMiwwLDAsMSwxMCwxNy4zODFhNC4xNjYsNC4xNjYsMCwwLDEsLjk4LTEuMjQ2QTEyLjcyNywxMi43MjcsMCwwLDEsMTQuNSwxMy43MjhaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk03LjYyOCwxMy4yMzFhLjk4OS45ODksMCwwLDEsLjU5NC0uMTUyLDE4LjExNCwxOC4xMTQsMCwwLDEtLjEsMi42NTQuNzEzLjcxMywwLDAsMS0uODkyLjY1OCwyMS4xLDIxLjEsMCwwLDEsLjA4Mi0yLjIyNkExLjM4MywxLjM4MywwLDAsMSw3LjYyOCwxMy4yMzFabS4xNzkuODMxYy4yNjgtLjExMi4zMTktLjQxMy40MTItLjY1NEM3LjgyLDEzLjMxMiw3Ljc3NSwxMy43ODMsNy44MDcsMTQuMDYyWlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTAuODIzLDE3LjA5NGExMy45MzQsMTMuOTM0LDAsMCwxLDQuNjEyLTEuOTY4Yy0uMDEuMDY4LS4wMjkuMjA2LS4wMzkuMjc0YTE0LjI3MywxNC4yNzMsMCwwLDAtNC40NzUsMS45MTQsMi42MjYsMi42MjYsMCwwLDEtLjY4MS4zNDNDMTAuMywxNy4zNTYsMTAuNiwxNy4yNDksMTAuODIzLDE3LjA5NFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTUuMjY0LDE3LjU5QTUuMTQ0LDUuMTQ0LDAsMCwxLDgsMTcuMWExLjUsMS41LDAsMCwxLDEuMTQyLjY2NUE2Ljg1NCw2Ljg1NCwwLDAsMCw3LjYsMTcuMjc4YTYuOTY3LDYuOTY3LDAsMCwwLTIuNDg0LjU2NFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEwLjU3OCwxNy43MjVhOS41OSw5LjU5LDAsMCwxLDMuNjEtLjU2NmMuMjQuMDIxLjMyMS4yLjMxMy40MjRhMy4yMzgsMy4yMzgsMCwwLDAtMS45NTYtLjA5LDIxLjY4OCwyMS42ODgsMCwwLDAtMi41NTcuNjU4QzkuOTk1LDE3LjgyOSwxMC4zNDUsMTcuODA5LDEwLjU3OCwxNy43MjVaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk05LjI2OCwxNy42NzZjLjE0OS0uMTc2LjUzMy0uMzMyLjY2NC0uMDYyYTEuMywxLjMsMCwwLDEtLjUxNi45OTNDOS4yNjgsMTguMzM3LDguOTczLDE3Ljk1Miw5LjI2OCwxNy42NzZaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk01Ljc0NCwxOC42MjlhNS45LDUuOSwwLDAsMSwzLjE4Mi0uNjE4Yy0uMTgyLjIzNS0uNDkzLjE3OC0uNzUxLjIwOGE1LjY2Myw1LjY2MywwLDAsMC0xLjcyLjMzYy0uMzQ0LjEyOC0uNjY1LjMxLTEuMDIuNDA5QS42LjYsMCwwLDEsNS43NDQsMTguNjI5WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNi45LDE5LjExNGE5LjY3Niw5LjY3NiwwLDAsMSwyLjItLjg1NGMtLjEuMy0uNDQxLjMzOC0uNy40NDRhNy44MzksNy44MzksMCwwLDAtMi41NjQsMS40MTVDNS45MzgsMTkuNTg0LDYuNDg4LDE5LjM2OSw2LjksMTkuMTE0WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTEuNjM1LDE5LjdhMy4xMSwzLjExLDAsMCwwLDEuOTEtMS4zODNjLjM0Ny0uMS4yNzMuMjc1LjI2LjQ5NGEyLjA1NiwyLjA1NiwwLDAsMS0uOTUsMS4wMzYsMTIuMzY1LDEyLjM2NSwwLDAsMS0xLjgyNyw2LjQxOUEyLjM0MiwyLjM0MiwwLDAsMSw4Ljg3OSwyNy41YTIuMjUxLDIuMjUxLDAsMCwxLTEuNTM1LTEuNDksMTAuODk0LDEwLjg5NCwwLDAsMS0uNjktNC42NjVjLS4xNTctLjExMi0uMzY5LS4xNzktLjQ2LS4zNjItLjEzLS4yLjAxMS0uNDI1LjA0Ny0uNjMxLjE5LjE1MS4zNDUuMzkyLjYwNi40MmEzLjYxNywzLjYxNywwLDAsMCwxLjg2My0uNCwxLjU4OCwxLjU4OCwwLDAsMCwuNzA5LS42NjIsMy44ODEsMy44ODEsMCwwLDAsLjQzMS4yNjZBNC4yOCw0LjI4LDAsMCwwLDExLjYzNSwxOS43Wm0tMi4yLjgzNWE0LjEzMiw0LjEzMiwwLDAsMS0yLjQ2Mi44MDksMTEuMDQ5LDExLjA0OSwwLDAsMCwuMzU4LDMuNTI2LDMuMjI2LDMuMjI2LDAsMCwxLC45LTEuMjgyLDIuMDU1LDIuMDU1LDAsMCwxLDIuMy0uMiwyLjMsMi4zLDAsMCwxLC44ODQsMS4xNzIsMTQuNjU5LDE0LjY1OSwwLDAsMCwxLjAwNS00LjQ4OUE1LjE2Nyw1LjE2NywwLDAsMSw5LjQzNSwyMC41MzJabS0uMzI5LDMuMjZhMi4yNzMsMi4yNzMsMCwwLDAtMS41LDEuNDM0Yy0uMTIzLjI2OS4xLjUxNy4yMjUuNzM4LjMzMS40NjIuNzk1LDEsMS40MzEuODkzYTIuODY4LDIuODY4LDAsMCwwLDEuNzY5LTEuNkExLjYsMS42LDAsMCwwLDkuMTA2LDIzLjc5MlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz5gLFxuXHRcIkx1YVwiOiBgPHBhdGggZD1cIk0xNi41LDMwbC0uMDExLS4zMjFjLjQtLjAxNC44LS4wNDUsMS4xOS0uMDk0bC4wMzkuMzE5QzE3LjMxMiwyOS45NTIsMTYuOSwyOS45ODQsMTYuNSwzMFptLTEuMjIyLS4wMTFjLS40LS4wMjEtLjgxNC0uMDYxLTEuMjE2LS4xMThsLjA0NS0uMzE4Yy4zOTMuMDU1Ljc5My4wOTQsMS4xODguMTE1Wk0xOC45MiwyOS43bC0uMDY3LS4zMTRjLjM4Ny0uMDgzLjc3Ni0uMTg0LDEuMTU1LS4zbC4wOTQuMzA3QzE5LjcxNCwyOS41MTEsMTkuMzE2LDI5LjYxNSwxOC45MiwyOS43Wm0tNi4wNjMtLjA1M2MtLjQtLjA5MS0uNzkxLS4yLTEuMTc3LS4zMjZsLjEtLjMwNmMuMzc3LjEyMi43NjQuMjMsMS4xNS4zMTlabTguNC0uNjY1LS4xMjEtLjNjLjM2NC0uMTQ4LjcyOC0uMzE0LDEuMDgtLjQ5M2wuMDA2LDAsLjE0NS4yODYsMCwwQzIyLDI4LjY2MSwyMS42MjYsMjguODMxLDIxLjI1MywyOC45ODJabS0xMC43MTgtLjA4OGMtLjM3NC0uMTU4LS43NDUtLjMzNS0xLjEtLjUyNGwuMTUtLjI4NGMuMzUuMTg2LjcxMy4zNTgsMS4wNzguNTEyWm0xMi44OTMtMS4wMjEtLjE3LS4yNzNjLjMzNy0uMjEuNjY4LS40MzcuOTg0LS42NzVsLjE5My4yNTdDMjQuMTExLDI3LjQyNSwyMy43NzIsMjcuNjU4LDIzLjQyOCwyNy44NzNaTTguMzc5LDI3Ljc1MWMtLjM0MS0uMjItLjY3Ni0uNDU5LTEtLjcwOGwuMi0uMjUzYy4zMTIuMjQzLjY0LjQ3Ni45NzIuNjkxWm0xNy0xLjM0Ni0uMjE1LS4yMzljLjI5NC0uMjY1LjU4LS41NDYuODUxLS44MzZsLjIzNS4yMTlDMjUuOTcyLDI1Ljg0NiwyNS42NzksMjYuMTM0LDI1LjM3OCwyNi40Wk02LjQ1NCwyNi4yNTJjLS4zLS4yNzYtLjU4NS0uNTY5LS44NTYtLjg3bC4yMzktLjIxNWMuMjY1LjI5NC41NDcuNTguODM2Ljg1Wk0yNy4wNDEsMjQuNjJsLS4yNTMtLjJjLjI0NC0uMzEyLjQ3Ni0uNjM5LjY5Mi0uOTcybC4yNy4xNzVDMjcuNTI5LDIzLjk2NiwyNy4yOSwyNC4zLDI3LjA0MSwyNC42MlpNNC44MiwyNC40MzljLS4yNDQtLjMyNC0uNDc2LS42NjItLjY5Mi0xLjAwN2wuMjcyLS4xN2MuMjEuMzM3LjQzOC42NjguNjc2Ljk4NFptMjMuNTQ3LTEuODY3LS4yODQtLjE1MWMuMTg2LS4zNS4zNTgtLjcxMy41MTMtMS4wNzhsLjMuMTI1QzI4LjczNSwyMS44NDMsMjguNTU4LDIyLjIxNCwyOC4zNjgsMjIuNTcyWm0tMjQuODQxLS4yLS4wMDYtLjAxMmMtLjE4My0uMzU5LS4zNTItLjcyOC0uNS0xLjFsLjMtLjEyMWMuMTQ3LjM2Mi4zMTIuNzI0LjQ5MSwxLjA3NGwuMDA2LjAxMlpNMjkuMzIsMjAuMzI1bC0uMzA2LS4xYy4xMjItLjM3Ny4yMy0uNzY0LjMxOS0xLjE1bC4zMTMuMDcyQzI5LjU1NSwxOS41NDMsMjkuNDQ2LDE5LjkzOSwyOS4zMiwyMC4zMjVaTTIuNjA4LDIwLjEwN2MtLjEyLS4zODgtLjIyMy0uNzg2LS4zMDgtMS4xODJsLjMxNC0uMDY3Yy4wODMuMzg3LjE4NC43NzYuMywxLjE1NVpNMjkuODcsMTcuOTQ2bC0uMzE4LS4wNDVjLjA1Ni0uMzkzLjA5NC0uNzkzLjExNS0xLjE4OGwuMzIxLjAxN0MyOS45NjcsMTcuMTM1LDI5LjkyNywxNy41NDQsMjkuODcsMTcuOTQ2Wk0yLjEsMTcuNzJjLS4wNS0uNC0uMDgyLS44MTItLjEtMS4yMThsLjMyMS0uMDExYy4wMTQuNC4wNDYuOC4wOTQsMS4xOVptMjcuNTgyLTIuMmMtLjAxNC0uNC0uMDQ1LS44LS4wOTMtMS4xOWwuMzE5LS4wMzljLjA0OS40LjA4Mi44MTMuMSwxLjIxOFpNMi4zMzEsMTUuMywyLjAxLDE1LjI4Yy4wMjEtLjQwNS4wNjEtLjgxNC4xMTctMS4yMTZsLjMxOC4wNDVDMi4zOSwxNC41LDIuMzUyLDE0LjksMi4zMzEsMTUuM1ptMjcuMDU3LTIuMTQ0Yy0uMDgzLS4zODctLjE4NC0uNzc2LS4zLTEuMTU1TDI5LjQsMTEuOWMuMTE5LjM4OC4yMjMuNzg2LjMwNywxLjE4M1pNMi42NjMsMTIuOTM0bC0uMzEzLS4wNzJjLjA5MS0uNC4yLS43OTEuMzI2LTEuMTc3bC4zMDYuMUMyLjg1OSwxMi4xNjEsMi43NTIsMTIuNTQ4LDIuNjYzLDEyLjkzNFptMjYuMDI2LTIuMDYyYy0uMTQ5LS4zNjYtLjMxNS0uNzMyLS41LTEuMDg2bC4yODYtLjE0NmMuMTg1LjM2My4zNTUuNzM2LjUwNywxLjExMVpNMy40LDEwLjY2NWwtLjMtLjEyNWMuMTU4LS4zNzQuMzM0LS43NDUuNTI0LTEuMWwuMjg0LjE1QzMuNzI0LDkuOTM3LDMuNTUyLDEwLjMsMy40LDEwLjY2NVpNNC41MTMsOC41NTdsLS4yNy0uMTc0Yy4yMi0uMzQxLjQ1OC0uNjc2LjcwNy0xbC4yNTQuMkM0Ljk2MSw3LjksNC43MjgsOC4yMjQsNC41MTMsOC41NTdaTTUuOTc3LDYuNjc2bC0uMjM1LS4yMTljLjI3Ni0uMy41NjktLjU4NS44Ny0uODU3bC4yMTUuMjM5QzYuNTMzLDYuMSw2LjI0Nyw2LjM4Niw1Ljk3Nyw2LjY3NlptMS43Ny0xLjYtLjE5My0uMjU3Yy4zMjMtLjI0NC42NjItLjQ3NywxLjAwNy0uNjkybC4xNy4yNzJDOC4zOTQsNC42MTQsOC4wNjMsNC44NDEsNy43NDcsNS4wNzlabTE1LjcwNS0uNTU4LS4wMTgtLjAxMi4xNzUtLjI3LjAxOC4wMTFabS0xLjA0Ny0uNjE2Yy0uMzUtLjE4Ni0uNzEzLS4zNTgtMS4wNzgtLjUxMmwuMTI1LS4zYy4zNzQuMTU4Ljc0NS4zMzQsMS4xLjUyNFpNOS43NjksMy44MTVsLS4xNDYtLjI4Ni4wMTgtLjAwOWMuMzU2LS4xODEuNzI0LS4zNDksMS4wOTMtLjVsLjEyMS4zYy0uMzYxLjE0Ny0uNzIuMzExLTEuMDY4LjQ4OFptMTAuNDQtLjgzOGMtLjM3Ny0uMTIyLS43NjQtLjIyOS0xLjE1MS0uMzE3bC4wNzItLjMxM2MuNC4wOTEuNzkyLjIsMS4xNzguMzI1Wm0tOC4yMjktLjA2LS4wOTQtLjMwN2MuMzg4LS4xMTkuNzg2LS4yMjMsMS4xODItLjMwOGwuMDY3LjMxNEMxMi43NDcsMi43LDEyLjM1OSwyLjgsMTEuOTgsMi45MTdabTUuOS0uNDczYy0uMzkzLS4wNTUtLjc5My0uMDkyLTEuMTg4LS4xMTNsLjAxNi0uMzIxYy40MDUuMDIxLjgxNC4wNTksMS4yMTYuMTE1Wm0tMy41NzItLjAyNi0uMDQtLjMxOWMuNC0uMDUuODEyLS4wODMsMS4yMTgtLjFsLjAxMi4zMjFDMTUuMTA2LDIuMzM3LDE0LjcwNSwyLjM2OSwxNC4zMTIsMi40MThaXCIgc3R5bGU9XCJmaWxsOmdyYXlcIi8+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNS45OThcIiByPVwiMTAuNzA4XCIgc3R5bGU9XCJmaWxsOm5hdnlcIi8+PGNpcmNsZSBjeD1cIjIwLjQzNVwiIGN5PVwiMTEuNTYyXCIgcj1cIjMuMTM2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjI2LjcwOFwiIGN5PVwiNS4yOVwiIHI9XCIzLjEzN1wiIHN0eWxlPVwiZmlsbDpuYXZ5XCIvPjxwYXRoIGQ9XCJNMTMuMSwyMS4zNTJ2LS43OUg5LjYyOVYxNC4zMjZoLS45djcuMDI2SDEzLjFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE3LjkxNiwyMS4zNTJWMTYuM2gtLjh2Mi43ODVjMCwxLjAzMS0uNTQsMS43MDYtMS4zNzgsMS43MDZBLjk1Ljk1LDAsMCwxLDE0LjcsMTkuOFYxNi4zaC0uOHYzLjgxN2MwLC44MzguNjI2LDEuMzc4LDEuNjA5LDEuMzc4YTEuODYzLDEuODYzLDAsMCwwLDEuNjg3LS45MjV2Ljc4MWguNzIzXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMy43OTEsMjEuMzMzdi0uNjA3YS42NjQuNjY0LDAsMCwxLS4xNzMuMDE5Yy0uMjc5LDAtLjQzNC0uMTQ1LS40MzQtLjRWMTcuNTM2YzAtLjktLjY1NS0xLjM3OC0xLjktMS4zNzgtMS4yMjQsMC0xLjk3Ni40NzItMi4wMjQsMS42MzhoLjgxYy4wNjctLjYxNy40MzQtLjksMS4xODUtLjkuNzIzLDAsMS4xMjguMjcsMS4xMjguNzUydi4yMTJjMCwuMzM3LS4yLjQ4Mi0uODM4LjU1OWE1Ljc2Myw1Ljc2MywwLDAsMC0xLjYxOS4zMDgsMS4zMjcsMS4zMjcsMCwwLDAtLjg4NywxLjMxMWMwLC45MTYuNjM2LDEuNDU1LDEuNjU4LDEuNDU1YTIuMzYzLDIuMzYzLDAsMCwwLDEuNzE1LS43NDIuODU1Ljg1NSwwLDAsMCwuODI5LjY2NSwxLjk2NywxLjk2NywwLDAsMCwuNTQ5LS4wODdtLTEuNDA3LTEuNzI1YTEuMzY2LDEuMzY2LDAsMCwxLTEuNTEzLDEuMTg1Yy0uNjI2LDAtLjk5My0uMjIyLS45OTMtLjc3MSwwLS41My4zNTctLjc2MSwxLjIxNC0uODg3YTQsNCwwLDAsMCwxLjI5MS0uMjc5di43NTJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIk1hcmtkb3duXCI6IGA8cmVjdCB4PVwiMi41XCIgeT1cIjcuOTU1XCIgd2lkdGg9XCIyN1wiIGhlaWdodD1cIjE2LjA5MVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojNzU1ODM4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjUuOTA5IDIwLjYzNiA1LjkwOSAxMS4zNjQgOC42MzYgMTEuMzY0IDExLjM2NCAxNC43NzMgMTQuMDkxIDExLjM2NCAxNi44MTggMTEuMzY0IDE2LjgxOCAyMC42MzYgMTQuMDkxIDIwLjYzNiAxNC4wOTEgMTUuMzE4IDExLjM2NCAxOC43MjcgOC42MzYgMTUuMzE4IDguNjM2IDIwLjYzNiA1LjkwOSAyMC42MzZcIiBzdHlsZT1cImZpbGw6Izc1NTgzOFwiLz48cG9seWdvbiBwb2ludHM9XCIyMi45NTUgMjAuNjM2IDE4Ljg2NCAxNi4xMzYgMjEuNTkxIDE2LjEzNiAyMS41OTEgMTEuMzY0IDI0LjMxOCAxMS4zNjQgMjQuMzE4IDE2LjEzNiAyNy4wNDUgMTYuMTM2IDIyLjk1NSAyMC42MzZcIiBzdHlsZT1cImZpbGw6Izc1NTgzOFwiLz5gLFxuXHRcIk1BVExBQlwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTYuODAzXCIgeTE9XCIxNi42MzFcIiB4Mj1cIjE1LjAxM1wiIHkyPVwiMjIuNDExXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzUxMlwiLz48c3RvcCBvZmZzZXQ9XCIwLjIzXCIgc3RvcC1jb2xvcj1cIiM1MjNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNlwiIHN0b3AtY29sb3I9XCIjNTM0XCIvPjxzdG9wIG9mZnNldD1cIjAuNTFcIiBzdG9wLWNvbG9yPVwiIzY0NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2XCIgc3RvcC1jb2xvcj1cIiM1NjhcIi8+PHN0b3Agb2Zmc2V0PVwiMC44NFwiIHN0b3AtY29sb3I9XCIjMjlkXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMjkuNzFcIiB5MT1cIjE4Ljk4M1wiIHgyPVwiMTEuNzFcIiB5Mj1cIjE0LjU2M1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDgxXCIgc3RvcC1jb2xvcj1cIiNjMzNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xODlcIiBzdG9wLWNvbG9yPVwiI2RlNTIzOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjMxM1wiIHN0b3AtY29sb3I9XCIjZjA2ZTNlXCIvPjxzdG9wIG9mZnNldD1cIjAuNDIxXCIgc3RvcC1jb2xvcj1cIiNmYTgwNDJcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiNmZTg2NDNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41OFwiIHN0b3AtY29sb3I9XCIjZmE3ZjQyXCIvPjxzdG9wIG9mZnNldD1cIjAuNjk2XCIgc3RvcC1jb2xvcj1cIiNlZjZjM2VcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MzNcIiBzdG9wLWNvbG9yPVwiI2RjNGMzN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjkxNlwiIHN0b3AtY29sb3I9XCIjY2YzNjMzXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbWF0bGFiPC90aXRsZT48cGF0aCBkPVwiTTIsMTcuNTVsNy45Ny0zLjIyYTIwLjcsMjAuNywwLDAsMSwyLjcyLTIuOTVjLjY2LS4zNSwxLjktLjE2LDQuMTctMi45OCwyLjItMi43NSwyLjktNS4xLDMuOTMtNS4xLDEuNjMsMCwyLjgzLDMuNTIsNC42NSw4Ljg1QTExNS42MjksMTE1LjYyOSwwLDAsMCwzMCwyNC4xMmMtMS45LTEuNzctMy41Mi0zLjY4LTUuMzctMy42My0xLjcyLjA0LTMuNjMsMi4wOC01LjcyLDQuNy0xLjY2LDIuMS0zLjg2LDMuNTQtNC43MiwzLjUxLDAsMC0yLjIyLTYuMjgtNC4wOC03LjNhMi42NDEsMi42NDEsMCwwLDAtMi4zOS4yTDIsMTcuNTRaXCIgc3R5bGU9XCJmaWxsOiM0OWRcIi8+PHBhdGggZD1cIk0xOS44LDQuMDJjLS42Ny45LTEuNDgsMi41NS0yLjk0LDQuMzgtMi4yNywyLjgyLTMuNSwyLjYzLTQuMTcsMi45OGExOS42NzQsMTkuNjc0LDAsMCwwLTIuNzIsMi45NWwzLjMsMi40MWMyLjgtMy44Miw0LjMtNy45Niw1LjQ3LTEwLjY0QTEzLjU3OSwxMy41NzksMCwwLDEsMTkuOCw0LjAyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjAuOCwzLjNjLTIuMTgsMC0zLjY3LDExLjQ4LTExLjcyLDE3Ljg5LDIuMjYtLjM3LDQuMjIsNS4yNCw1LjEyLDcuNTEsNC0uNjgsNy4yLTguMzMsMTAuNDMtOC4yMSwxLjg1LjA3LDMuNDcsMS44Niw1LjM3LDMuNjNDMjUuNjYsMTUsMjMuNjMsMy4zLDIwLjgsMy4zWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPmAsXG5cdFwiTUFYU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTE0LjQsNy41NjgsMjAuMjEyLDJINy4yNzNMNC44NDgsNy41MzZsOS41NTcuMDMyWk00Ljg0OCw3LjUzNmw2Ljg0NCwyLjZMMTQuNCw3LjU2OG0tLjAxMywzLjYyMi0yLjctMS4wNTNMNS4yNjMsMTYuMWw2LjI4Niw1LjgyMywyLjgwOC0xLjFMMTQuNCw3LjU2OG0wLDAsMTIuOCw4LjM3NkwyMC4yMTIsMk0yNy4yLDE1Ljk0NCwxNC4zOTEsMTEuMTltLS4wMzUsOS42MzYtLjAzMiwzLjY4NU0yMC4yMjgsMzBsLTguNjc5LTguMDczTDQuOCwyNC40NjQsNy4yNTcsMzBabTAsMEwyNy4yLDE1Ljk0NCwxNC4zMjUsMjQuNTEyTTI3LjIsMTUuOTQ0LDE0LjM1NywyMC44MjZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzFkMWQxYjtzdHJva2UtbWl0ZXJsaW1pdDoyMi45MjU1ODQ3OTMwOTA4MjtzdHJva2Utd2lkdGg6MC4wMjgzNDk5OTkzMzgzODg0NDNweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zOTEgMTEuMTkgMjcuMiAxNS45NDQgMTQuNDA1IDcuNTY4IDE0LjM5MSAxMS4xOSAxNC4zOTEgMTEuMTlcIiBzdHlsZT1cImZpbGw6IzE4MWIxNztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNy4yIDE1Ljk0NCAxNC4zNTcgMjAuODI2IDE0LjMyNSAyNC41MDkgMTQuMzI2IDI0LjUxMSAyNy4yIDE1Ljk0NCAyNy4yIDE1Ljk0NFwiIHN0eWxlPVwiZmlsbDojMWExZDFhO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjQwNSA3LjU2OCAyNy4yIDE1Ljk0NCAyMC4yMTIgMiAxNC40MDUgNy41NjggMTQuNDA1IDcuNTY4XCIgc3R5bGU9XCJmaWxsOiMwMDVmNWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMiAxNS45NDQgMTQuMzI2IDI0LjUxMSAyMC4yMjggMzAgMjcuMiAxNS45NDQgMjcuMiAxNS45NDRcIiBzdHlsZT1cImZpbGw6IzAwNDI0MjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zNTcgMjAuODI2IDI3LjIgMTUuOTQ0IDE0LjM5MSAxMS4xOSAxNC4zNTcgMjAuODI2IDE0LjM1NyAyMC44MjZcIiBzdHlsZT1cImZpbGw6IzAwNTE1MjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zNTcgMjAuODI2IDE0LjM5MSAxMS4xOSAxMS42OTIgMTAuMTM3IDUuMjYzIDE2LjEwNCAxMS41NDkgMjEuOTI3IDE0LjM1NyAyMC44MjYgMTQuMzU3IDIwLjgyNlwiIHN0eWxlPVwiZmlsbDojMDA2OTZiO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjY5MiAxMC4xMzcgMTQuMzkxIDExLjE5IDE0LjQwNSA3LjU2OCAxMS42OTIgMTAuMTM3IDExLjY5MiAxMC4xMzdcIiBzdHlsZT1cImZpbGw6IzFiMjcyNTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zNTcgMjAuODI2IDExLjU0OSAyMS45MjcgMTQuMzI1IDI0LjUwOSAxNC4zNTcgMjAuODI2IDE0LjM1NyAyMC44MjZcIiBzdHlsZT1cImZpbGw6IzFjMjYyNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zMjUgMjQuNTEyIDQuOCAyNC40NjQgNy4yNTcgMzAgMjAuMjI4IDMwIDE0LjMyNiAyNC41MTEgMTQuMzI1IDI0LjUxMiAxNC4zMjUgMjQuNTEyXCIgc3R5bGU9XCJmaWxsOiMwMDY0NjY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNC44NDggNy41MzYgMTQuNDA1IDcuNTY4IDIwLjIxMiAyIDcuMjczIDIgNC44NDggNy41MzYgNC44NDggNy41MzZcIiBzdHlsZT1cImZpbGw6IzAwNzY3YTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC40MDUgNy41NjggNC44NDggNy41MzYgMTEuNjkyIDEwLjEzNyAxNC40MDUgNy41NjggMTQuNDA1IDcuNTY4XCIgc3R5bGU9XCJmaWxsOiMxZTM5Mzg7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuNTQ5IDIxLjkyNyA0LjggMjQuNDY0IDE0LjMyNSAyNC41MTIgMTQuMzI1IDI0LjUwOSAxMS41NDkgMjEuOTI3IDExLjU0OSAyMS45MjdcIiBzdHlsZT1cImZpbGw6IzIwMzAyZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuXHRcIk1FTFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTYxMS4zNDhcIiB5MT1cIi02Ny40ODhcIiB4Mj1cIi02MDAuMjcyXCIgeTI9XCItNjUuMzM1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwZjYwNjdcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwNWFiYWNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNThiZWM0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTYwMy41OTRcIiB5MT1cIi03Ny42OTlcIiB4Mj1cIi02MDIuMDExXCIgeTI9XCItNTkuNjA0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMTdjODNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMyMWI1YjVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjN2VkNGQ0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTYxMi43NTdcIiB5MT1cIi01OS45MDZcIiB4Mj1cIi02MTYuOTM0XCIgeTI9XCItNzIuNzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzlhY2NkM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzcyYWViM1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzMTdkN2ZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItNjIxLjg1MVwiIHkxPVwiLTc0LjU3OVwiIHgyPVwiLTYxNC44NFwiIHkyPVwiLTcyLjMwMVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjE2MjZlXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMTU3Yzg0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzAzYTNhNVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIi02MTYuMzY5XCIgeTE9XCItNjQuNDY5XCIgeDI9XCItNjI1LjM0XCIgeTI9XCItNzIuODM1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwYjdjODFcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwNjhkOTBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMTZiMWIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiLTYwOC4wNzJcIiB5MT1cIi03NC42NzhcIiB4Mj1cIi02MDMuNDg4XCIgeTI9XCItNzAuOTY2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwYThhOGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwZjdjODJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMWE1OTY0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiLTYwMS4xMzRcIiB5MT1cIi03MC4xMTNcIiB4Mj1cIi02MDYuMDA4XCIgeTI9XCItNjcuMDY3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMyNTZhNzdcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwZDk0OTlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDZhMGEyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbWF5YTwvdGl0bGU+PHBhdGggZD1cIk0yMS42LDMuNDYySDMwTDE4Ljc2NywyNC4yMTFzLTEuODkzLTUuNS0yLjcwNi03LjQ1OVwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjMuNjY5LDI5LjExOEgzMFYzLjQ2MkMyOS45OTUsMTYuODY5LDI0LjM2LDI5LjExOCwyMy42NjksMjkuMTE4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTguNzY3LDI0LjIxMUgxMy41NDFMMiwzLjQ2MmMyLjA0Ny0uMjYsNi4xMzUtLjYxMSw4LjE2LS43NzZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk04LjY5MywxNi4wMTlDNi45NiwyMi44NjYsMS45OTUsMjkuMzIsMiwyOS4zMTRjNS43NTIsMCw2Ljk5MS0uODM1LDYuOTkxLTEuMjc2VjE2LjU0QzguODksMTYuMzcsOC43OTQsMTYuMTk0LDguNjkzLDE2LjAxOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIsMy40NjJWMjkuMzE0YzMuMTQ3LTUuMiw0Ljk4MS04LjYsNi42LTEzLjQ1QzQuNiw4Ljc5NCwyLDMuNDYyLDIsMy40NjJaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjIzLjIzMyAyOC4xMDIgMjMuNjY5IDI5LjExOCAyMy42NjkgMTUuNjQ3IDIzLjIzMyAxNi4zNzVcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTIzLjY0NywxNS42NzN2MTMuNGwuMDE2LjA0M2MuNDUyLDAsNi4zMzItMTQuNSw2LjMzMi0yNS42NTZDMjkuOTk1LDMuNDYyLDI2LjQwNiwxMC45NDcsMjMuNjQ3LDE1LjY3M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz5gLFxuXHRcIk1vbmdvREJcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi02NDUuNzMyXCIgeTE9XCI4MzkuMTg4XCIgeDI9XCItNjU0LjU5XCIgeTI9XCI4MzkuMjVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC45NzcsIC0wLjMyMywgLTAuMjksIDAuODc3LCAtMzc1Ljk0NCwgLTkyOC4yODcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4yMzFcIiBzdG9wLWNvbG9yPVwiIzk5OTg3NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2M1wiIHN0b3AtY29sb3I9XCIjOWI5OTc3XCIvPjxzdG9wIG9mZnNldD1cIjAuNjgzXCIgc3RvcC1jb2xvcj1cIiNhMDlmN2VcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NjhcIiBzdG9wLWNvbG9yPVwiI2E5YTg4OVwiLz48c3RvcCBvZmZzZXQ9XCIwLjgzN1wiIHN0b3AtY29sb3I9XCIjYjdiNjlhXCIvPjxzdG9wIG9mZnNldD1cIjAuODk2XCIgc3RvcC1jb2xvcj1cIiNjOWM3YjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45NDhcIiBzdG9wLWNvbG9yPVwiI2RlZGRjYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5NFwiIHN0b3AtY29sb3I9XCIjZjhmNmViXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZiZjllZlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi02NDQuMjg3XCIgeTE9XCI4MjMuNDA1XCIgeDI9XCItNjU3LjAyOFwiIHkyPVwiODQ1LjQ3NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjk3NywgLTAuMzIzLCAtMC4yOSwgMC44NzcsIC0zNzUuOTQ0LCAtOTI4LjI4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM0OGE1NDdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjM2Y5MTQzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTY0My4zODZcIiB5MT1cIjgzOS40ODVcIiB4Mj1cIi02NTIuNDE4XCIgeTI9XCI4MzMuNDE3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTAuOTc3LCAtMC4zMjMsIC0wLjI5LCAwLjg3NywgLTM3NS45NDQsIC05MjguMjg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzQxYTI0N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjM1MlwiIHN0b3AtY29sb3I9XCIjNGJhNzRiXCIvPjxzdG9wIG9mZnNldD1cIjAuOTU2XCIgc3RvcC1jb2xvcj1cIiM2N2I1NTRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjliNjU1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbW9uZ288L3RpdGxlPjxwYXRoIGQ9XCJNMTYuNjIsMzBsLS43NTEtLjI0OXMuMS0zLjgtMS4yNzUtNC4wNjdjLS45LTEuMDQ4LjEzMy00NC43NDEsMy40MjMtLjE0OWEyLjcxMiwyLjcxMiwwLDAsMC0xLjMzMywxLjUyM0ExNC4xLDE0LjEsMCwwLDAsMTYuNjIsMzBaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNy4wMjYsMjYuMzI5YTEzLjIyMywxMy4yMjMsMCwwLDAsNS0xMy4yMjVDMjAuNTU2LDYuNjE5LDE3LjA3NSw0LjQ4NywxNi43LDMuNjczYTkuNzkyLDkuNzkyLDAsMCwxLS44MjUtMS42bC4yNzcsMTguMDY5UzE1LjU3OCwyNS42NjQsMTcuMDI2LDI2LjMyOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE1LjQ4NywyNi41NjlTOS4zNjYsMjIuNCw5LjcyLDE1LjAyNUExNS41NCwxNS41NCwwLDAsMSwxNS4yMzksMy4zNzcsMS43MjUsMS43MjUsMCwwLDAsMTUuODQ2LDJjLjM4MS44Mi4zMTksMTIuMjQzLjM1OSwxMy41NzlDMTYuMzYsMjAuNzc2LDE1LjkxNiwyNS41ODgsMTUuNDg3LDI2LjU2OVpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz5gLFxuXHRcIm5naW54XCI6IGA8cGF0aCBkPVwiTTE1Ljk0OCwyaC4wNjVhMTAuNDE4LDEwLjQxOCwwLDAsMSwuOTcyLjUyOFEyMi40MTQsNS42NSwyNy44NDMsOC43NzRhLjc5Mi43OTIsMCwwLDEsLjQxNC43ODhjLS4wMDgsNC4zODksMCw4Ljc3Ny0uMDA1LDEzLjE2NGEuODEzLjgxMywwLDAsMS0uMzU2LjUwN3EtNS43NzMsMy4zMjQtMTEuNTQ3LDYuNjQ0YS41ODcuNTg3LDAsMCwxLS42NTcuMDM3UTkuOTEyLDI2LjYsNC4xNDMsMjMuMjc0YS43LjcsMCwwLDEtLjQtLjY2NnEwLTYuNTgyLDAtMTMuMTYzYS42OTMuNjkzLDAsMCwxLC4zODctLjY3UTkuNTUyLDUuNjU3LDE0Ljk3NCwyLjUzNWMuMzIyLS4xODQuNjM4LS4zNzkuOTc0LS41MzVcIiBzdHlsZT1cImZpbGw6IzAxOTYzOVwiLz48cGF0aCBkPVwiTTguNzY3LDEwLjUzOHEwLDUuNDI5LDAsMTAuODU5YTEuNTA5LDEuNTA5LDAsMCwwLC40MjcsMS4wODcsMS42NDcsMS42NDcsMCwwLDAsMi4wNi4yMDYsMS41NjQsMS41NjQsMCwwLDAsLjY4NS0xLjI5M2MwLTIuNjItLjAwNS01LjI0LDAtNy44NnEzLjU4Myw0LjI5LDcuMTgxLDguNTY4YTIuODMzLDIuODMzLDAsMCwwLDIuNi43ODIsMS41NjEsMS41NjEsMCwwLDAsMS4yNTEtMS4zNzFxLjAwOC01LjU0MSwwLTExLjA4MWExLjU4MiwxLjU4MiwwLDAsMC0zLjE1MiwwYzAsMi42NjItLjAxNiw1LjMyMSwwLDcuOTgyLTIuMzQ2LTIuNzY2LTQuNjYzLTUuNTU2LTctOC4zMzJBMi44MTcsMi44MTcsMCwwLDAsMTAuMTcsOS4wMzMsMS41NzksMS41NzksMCwwLDAsOC43NjcsMTAuNTM4WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiTmltXCI6IGA8cGF0aCBkPVwiTTE2LjExMSw2LjQwNXMtMS4wNzMuODQ3LTIuMTY3LDEuNjlhMTUuMzYxLDE1LjM2MSwwLDAsMC00LjUyNy42NTFjLTEuMS0uNy0yLjA3LTEuNDY5LTIuMDctMS40NjlTNi41Miw4LjcsNiw5LjUzNWExMS4zODIsMTEuMzgyLDAsMCwwLTIuMjM2LDEuNDgyQzIuOTYxLDEwLjcsMi4wMywxMC4zMSwyLDEwLjNjMS4wNjMsMi4xNDUsMS43NzgsNC4yOTIsMy43MjIsNS41ODMsMy4xLTQuODg5LDE3LjQ4LTQuNDM5LDIwLjYzOS0uMDI4QzI4LjQsMTQuNzg3LDI5LjIsMTIuNSwzMCwxMC4zOGMtLjA4OC4wMjktMS4xODEuMzk1LTEuODg5LjY2NWExMS40ODksMTEuNDg5LDAsMCwwLTEuOTg2LTEuNTFjLS41MzctLjk4NC0xLjMxOS0yLjMxMy0xLjMxOS0yLjMxM3MtLjkyNy42ODktMiwxLjQ0YTIxLjI2NSwyMS4yNjUsMCwwLDAtNC42ODEtLjUxMmMtMS0uODI2LTIuMDE0LTEuNzQ2LTIuMDE0LTEuNzQ2WlwiIHN0eWxlPVwiZmlsbDojZjNkNDAwXCIvPjxwYXRoIGQ9XCJNMy4xLDE0Ljg1NGwyLjU1NCw2LjE4NWM0LjQzNSw1Ljg1LDE1Ljc1OSw2LjI1NywyMC43LjExMywxLjE2OC0yLjYzMywyLjc0NS02LjMzMywyLjc0NS02LjMzM2ExMy4zNzksMTMuMzc5LDAsMCwxLTQuNiwzLjg2OSwxMi4yMTcsMTIuMjE3LDAsMCwxLTIuOTgzLjc5M2wtNS40NjUtMi44MzItNS41LDIuNzc1YTE1LjY3OSwxNS42NzksMCwwLDEtMi45ODMtLjc2NEExNC4wNzYsMTQuMDc2LDAsMCwxLDMuMSwxNC44NTRaXCIgc3R5bGU9XCJmaWxsOiNmZmU5NTNcIi8+YCxcblx0XCJOaXhcIjogYDxwYXRoIGQ9XCJNMTMsMTEuMTE1LDYuMTgzLDIzLjc2LDQuNTksMjAuODdsMS44MzktMy4zODctMy42NTEtLjAxTDIsMTYuMDI5bC44LTEuNDc3LDUuMi4wMTgsMS44NjgtMy40NDdaXCIgc3R5bGU9XCJmaWxsOiM3ZWJhZTQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMy41MjcsMjEuMjIzaDEzLjY0bC0xLjU0MSwyLjkyMi0zLjY1OC0uMDExLDEuODE3LDMuMzg5LS43NzksMS40NDktMS41OTMsMC0yLjU4NC00LjgyNS0zLjcyMi0uMDA4WlwiIHN0eWxlPVwiZmlsbDojN2ViYWU0O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMjEuNDY3LDE1LjY4MiwxNC42NDcsMy4wMzdsMy4xMzQtLjAzMkwxOS42LDYuNGwxLjgzNC0zLjM3OWgxLjU1N0wyMy43ODYsNC41LDIxLjE3NCw5LjMwN2wxLjg1NCwzLjQ1NVpcIiBzdHlsZT1cImZpbGw6IzdlYmFlNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEwLjU0MiwxNi4zMjRsNi44MjEsMTIuNjQ1TDE0LjIyOSwyOWwtMS44MjEtMy40LTEuODM0LDMuMzhIOS4wMTZsLS44LTEuNDc2TDEwLjgzMSwyMi43LDguOTc2LDE5LjI0M1pcIiBzdHlsZT1cImZpbGw6IzUyNzdjMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE4LjQ2NCwxMC43NTFINC44MjNMNi4zNjUsNy44MjlsMy42NTguMDExTDguMjA3LDQuNDUxLDguOTg2LDNsMS41OTIsMCwyLjU4NCw0LjgyNSwzLjcyMi4wMDhaXCIgc3R5bGU9XCJmaWxsOiM1Mjc3YzM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOSwyMC44ODgsMjUuODE3LDguMjQ0bDEuNTkzLDIuODlMMjUuNTcxLDE0LjUybDMuNjUxLjAxTDMwLDE1Ljk3OWwtLjgsMS40NzctNS4yLS4wMTgtMS44NjgsMy40NDdaXCIgc3R5bGU9XCJmaWxsOiM1Mjc3YzM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcblx0XCJOU0lTXCI6IGA8cGF0aCBkPVwiTTI3LjQzNSwxNi4wMzcsMjIuMDEyLDIxLjQ2bDUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMDU3N2JcIi8+PHBhdGggZD1cIk0yNi44ODQsMTUuNUgxNi4wNDhsNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAwNzlhYVwiLz48cGF0aCBkPVwiTTI2Ljg4NCwxNC43MTIsMjEuNDYxLDkuMjg5bC01LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojMDA5NmQzXCIvPjxwYXRoIGQ9XCJNMjAuNTI4LDkuMTMxSDkuNjgzbDUuNDIzLDUuNDIzTTI3LjQzNSwzLjMyNSwyMi4wMTIsOC43NDhsNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAxYjBmMFwiLz48cGF0aCBkPVwiTTIwLjUyOCw4LjM1NiwxNS4xMDUsMi45MzMsOS42ODMsOC4zNTZcIiBzdHlsZT1cImZpbGw6IzI3YmNmM1wiLz48cGF0aCBkPVwiTTE0LjE3MiwyLjc3NUgzLjMyN0w4Ljc0OSw4LjJcIiBzdHlsZT1cImZpbGw6IzRmYzlmNVwiLz48cGF0aCBkPVwiTTQuNTY4LDE1Ljk2Myw5Ljk5MSwxMC41NCw0LjU2OCw1LjExN1wiIHN0eWxlPVwiZmlsbDojNzkyMDFiXCIvPjxwYXRoIGQ9XCJNMTAuNTQxLDExLjA5MSw1LjExOSwxNi41MTNIMTUuOTY0XCIgc3R5bGU9XCJmaWxsOiNhNDJkMjZcIi8+PHBhdGggZD1cIk01LjExOSwxNy4yODhsNS40MjMsNS40MjMsNS40MjMtNS40MjNcIiBzdHlsZT1cImZpbGw6I2NjMzgyZlwiLz48cGF0aCBkPVwiTTQuNTY4LDE3LjgyOVYyOC42NzVsNS40MjMtNS40MjNMOC40LDIxLjY2NW0xMy45MTYsMS4yTDE2LjksMTcuNDQ3bC01LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojZjA0NTNmXCIvPjxwYXRoIGQ9XCJNMTEuNDc1LDIzLjY0NCwxNi45LDI5LjA2N2w1LjQyMy01LjQyM1wiIHN0eWxlPVwiZmlsbDojZjI2MjVkXCIvPjxwYXRoIGQ9XCJNMTcuODQsMjkuMjI1SDI4LjY4NUwyMy4yNjMsMjMuOFwiIHN0eWxlPVwiZmlsbDojZjQ3ZjdkXCIvPjxwYXRoIGQ9XCJNMjkuODg5LDI5LjMzN2wtMS42OC0xLjY4VjIuMzkyYS4zNzQuMzc0LDAsMCwwLS4yNDMtLjM1NUEuMjYzLjI2MywwLDAsMCwyNy44MjcsMmEuMzU5LjM1OSwwLDAsMC0uMjcxLjExMkwyMS40NzEsOC4yLDE1LjM4NSwyLjExMiwxNS4zLDIuMDM3aC0uMDM3QS4zMDcuMzA3LDAsMCwwLDE1LjEwNSwySDIuNGEuNDM0LjQzNCwwLDAsMC0uMjg5LjExMkEuMzguMzgsMCwwLDAsMiwyLjM5MmEuMzU5LjM1OSwwLDAsMCwuMTEyLjI3MWwxLjY4LDEuNjhWMjkuNjE3YS4zNzQuMzc0LDAsMCwwLC4yNDMuMzU1QS4zODcuMzg3LDAsMCwwLDQuMTg1LDMwYS4zNTkuMzU5LDAsMCwwLC4yNzEtLjExMkwxMC41NDEsMjMuOGw2LjA4NSw2LjA4NS4wODQuMDc1aC4wMzdBLjI1NC4yNTQsMCwwLDAsMTYuOSwzMEgyOS42MDlhLjM5NS4zOTUsMCwwLDAsLjI4LS42NjNaTTI3LjQzNSwzLjMyNVYxNC4xNzFMMjIuMDEyLDguNzQ4bDUuNDIzLTUuNDIzWk05Ljk5MSwxMC41NCw0LjU2OCwxNS45NjNWNS4xMTdMOS45OTEsMTAuNTRaTTkuNjgzLDkuMTMxSDIwLjUyOGwtNS40MjMsNS40MjNMOS42ODMsOS4xMzFabS44NTksMS45Niw1LjQyMyw1LjQyM0g1LjExOWw1LjQyMy01LjQyM1pNMTYuOSwxNy40NDdsNS40MjMsNS40MjNIMTEuNDc1TDE2LjksMTcuNDQ3Wk0xNi4wNDgsMTUuNUgyNi44OTNsLTUuNDIzLDUuNDIzTDE2LjA0OCwxNS41Wm01Ljk2NCw1Ljk2NCw1LjQyMy01LjQyM1YyNi44ODNMMjIuMDEyLDIxLjQ2Wm00Ljg3Mi02Ljc0OEgxNi4wNDhsNS40MjMtNS40MjMsNS40MTMsNS40MjNaTTIwLjUyOCw4LjM1Nkg5LjY4M2w1LjQyMy01LjQyMyw1LjQyMyw1LjQyM1pNMy4zMjcsMi43NzVIMTQuMTcyTDguNzQ5LDguMlptMS4yNDEsMjUuOVYxNy44MjlMOC40LDIxLjY2NWwxLjU4NywxLjU4N0w0LjU2OCwyOC42NzVabS41NTEtMTEuMzg3SDE1Ljk2NGwtNS40MjMsNS40MjNMNS4xMTksMTcuMjg4Wk0xNi45LDI5LjA2N2wtNS40MjMtNS40MjNIMjIuMzJMMTYuOSwyOS4wNjdabS45NDMuMTU5TDIzLjI2MywyMy44bDUuNDIzLDUuNDIzWlwiIHN0eWxlPVwiZmlsbDojNDY0MDQ5XCIvPmAsXG5cdFwiT2JqZWN0IFBhc2NhbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIi0wLjQ0M1wiIHgyPVwiMTZcIiB5Mj1cIjIyLjA0MlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDIxXCIgc3RvcC1jb2xvcj1cIiNmZjBjMTVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWEwYzBmXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZGVscGhpPC90aXRsZT48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNy41NDUsMTYuMjQzSDQuOTI0YS45MTQuOTE0LDAsMCwwLTEuMDkyLjgycS4wMzMuNDI5LjEuODQ5YTEyLjQsMTIuNCwwLDAsMCwyNC41MzIsMHEuMDc1LS41LjEwOC0xLjAyMUMyOC40NzgsMTYuNTIzLDI4LjIxMSwxNi4yMDcsMjcuNTQ1LDE2LjI0M1pcIiBzdHlsZT1cImZpbGw6I2ZmNjQ0M1wiLz48cG9seWxpbmUgcG9pbnRzPVwiMTguNDggMTEuNjQgMjMuNzA3IDcuMjY2IDE5Ljc4NyA1Ljg4IDE2IDExLjA1M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxNS42OCAxMS4wMjYgMTguNjQgNS44OCAxNC44NTMgNS44OCAxMy4zMDcgMTEuMjkzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjEzLjA0IDExLjM3MyAxMy42IDYuNzA2IDEwLjU4NyA3Ljk2IDExLjAxMyAxMi43NlwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMC43NDcgMTMgOS43ODcgOC43NiA3LjcwNyAxMC44NCA5LjY1MyAxNC42OFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjM4NyAxNS4wNTMgNy40OTMgMTIuMzc2IDYuNjQgMTQuNDY2IDkuMDQgMTYuNTE3XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMDQgMTYuNzU3IDYuNjQgMTUuMjEzIDYuNDggMTcuNCA5LjIgMTguMzMzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMjI3IDE4Ljg0NiA2LjY0IDE4LjA0IDcuMjI3IDE5LjggOS41NDcgMTkuOFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjcwNyAyMC4wOTMgNy43MDcgMjAuMzg2IDguNjI3IDIxLjc0NiAxMC4yNjcgMjFcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTIwLjAyMywxMy4wODlhNi42MSw2LjYxLDAsMCwwLTQuNTMtMkE2LjI5Myw2LjI5MywwLDAsMCwxMS4zLDIyLjA3bDQuOTQxLjEyOS0yLjA4LTQuMTZaXCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNi41LDIyLjM2NmwtNS4yNjctLjEzOC0uMDQ0LS4wMzlhNi40NTMsNi40NTMsMCwwLDEsNC4zLTExLjI2NCw2Ljc4Nyw2Ljc4NywwLDAsMSw0LjY0MywyLjA1bC4xMjMuMTIzLTUuOSw0Ljk4MlptLTUuMTQtLjQ1NSw0LjYxNi4xMjFMMTMuOTYxLDE4bDUuODI1LTQuOTE5YTYuNDMsNi40MywwLDAsMC00LjI5Mi0xLjgzNSw2LjEzMyw2LjEzMywwLDAsMC00LjEzMSwxMC42NjdaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0xMi4wMTMsMjAuNDkzYy00LjE3My01LjgxMywyLjEwOS04LjE3MiwyLjQ3OC04LjQ1My40NTEtLjM0NC03LjU5LDEuNzg1LTMuMjI2LDguODhaXCIgc3R5bGU9XCJmaWxsOiNmMDRlMzE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzIgMTIuNiAxMy41MiAxNy41NjcgMTMuNzMzIDE4LjU3MyAyMS40NjcgMTcuMDI2IDIwLjcyIDEyLjZcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEzLjYxLDE4Ljc2MSwxMy4zNDEsMTcuNWw3LjQ5NS01LjE3LjgxNCw0LjgyOFptLjA4OS0xLjEyMy4xNTguNzQ3TDIxLjI4MywxNi45LDIwLjYsMTIuODc0WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTUuNzIzLDIxLjMxOWMtMy45My0uNjY4LTQuMjgzLjQyOC00LjI4My40MjhMMTAuMjY3LDI0LjQ0czEuMTItLjkwNyw1LjQ5MywwbC43Ni0xLjM4OFpcIiBzdHlsZT1cImZpbGw6I2RkMGMxMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE0LjEyMiwyMS42Yy0uMDItLjItMS4xLS4zMTktMS42NzctLjEyMy0uNzMyLjI0OS0xLjIxOSwxLjE0Mi0xLjA0NSwxLjIxM2ExLjk3NSwxLjk3NSwwLDAsMSwxLjEyNS0uOTg2QzEzLjQ0NywyMS40OTMsMTQuMTQyLDIxLjgsMTQuMTIyLDIxLjZaXCIgc3R5bGU9XCJmaWxsOiNmZjZlNGY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNS41MiwxOC42MDZhMTEuMSwxMS4xLDAsMCwwLDEuNTQ3LDEuNDg3LDYuOSw2LjksMCwwLDEsMi43Miw0LjEwN2MtLjEwNywxLjA2Ny0xLjk3MywxLjc2LTEuOTczLDEuNzZsLTMuMzA3LTcuMTk0WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTcuNzMsMjYuMTYxbC0zLjQ1Ny03LjUyMSwxLjMyLS4yMDguMDU3LjA4MWExMC44NjksMTAuODY5LDAsMCwwLDEuNTEyLDEuNDUxLDcsNywwLDAsMSwyLjc4Miw0LjIwN2wwLC4wMjIsMCwuMDIyYy0uMTE1LDEuMTUzLTIsMS44NjQtMi4wNzcsMS44OTRabS0yLjk5LTcuMjcsMy4xNTUsNi44NjNjLjQxNC0uMTc4LDEuNjMtLjc2MywxLjczLTEuNTQ4YTYuNzkzLDYuNzkzLDAsMCwwLTIuNjQ4LTMuOTgxbC0uMDEtLjAwN2ExMS45NCwxMS45NCwwLDAsMS0xLjUxNy0xLjQzOVpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTI4LDEyLjc0MmMuMDI1LjM5NC4wMzQuNzkyLjAyNSwxLjE5NGExMy45NDYsMTMuOTQ2LDAsMCwxLTE5LjksMTIuM0ExMi44NiwxMi44NiwwLDAsMCwyOCwxMi43NDJaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+PHBhdGggZD1cIk0yLjM4MywxMy44OTNBMTMuOTQxLDEzLjk0MSwwLDAsMSwyNS43LDUuODNzLTUuMDA5LDUuOTc5LTEwLjU4NCw3LjkwN1MyLjM4MywxMy44OTMsMi4zODMsMTMuODkzWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMy42MTgsMTguNjk0Yy0uMDQ0LS4zOTItLjA3Mi0uNzktLjA4My0xLjE5MUMzLjMyOSw5LjgwNywxMC4wMTIsNC4yLDE3LjcwOCwzLjk5MWExNC4yLDE0LjIsMCwwLDEsNS43MTksMS40NTgsMTMuMTI4LDEzLjEyOCwwLDAsMC03LjE4OC0yLjM2OWMtNy4xLjE5LTEzLjMwNiw1LjMtMTMuMTE2LDEyLjRBMTIuODczLDEyLjg3MywwLDAsMCwzLjYxOCwxOC42OTRaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+YCxcblx0XCJPYmplY3RpdmUtQ1wiOiBgPHBhdGggZD1cIk0xMS4yOSwxNS45NzZhOC44OTIsOC44OTIsMCwwLDAsMS4wMzksNC41NTcsNC44MTgsNC44MTgsMCwwLDAsNS41NzksMi4xMywzLjc4OSwzLjc4OSwwLDAsMCwyLjczNC0zLjE4MWMuMDk1LS41MzUuMS0uNTQuMS0uNTQsMS41MzcuMjIyLDQuMDE0LjU4Miw1LjU1LjhsLS4xLjM4OUE5Ljk1OCw5Ljk1OCwwLDAsMSwyMy44LDI0LjlhOC4zNSw4LjM1LDAsMCwxLTQuNzQ3LDIuMzc4LDEyLjkyNSwxMi45MjUsMCwwLDEtNy4zMjItLjcyNSw4Ljk4LDguOTgsMCwwLDEtNS4xMDYtNS41MjRBMTQuMzUzLDE0LjM1MywwLDAsMSw2LjY0MiwxMC45YTkuMzIzLDkuMzIzLDAsMCwxLDcuOTI5LTYuMjQsMTEuODEyLDExLjgxMiwwLDAsMSw1LjkuNDkxLDguNDY3LDguNDY3LDAsMCwxLDUuNDU2LDYuMWMuMDgzLjMxMS4xLjM2OS4xLjM2OS0xLjcwOS4zMTEtMy44MjEuNzA1LTUuNTE4LDEuMDc1QzIwLjE4NiwxMSwxOS4zODcsOS42NjYsMTcuNjc4LDkuMjVhNC42NTYsNC42NTYsMCwwLDAtNS44NTMsMy4xNTgsOS4yOCw5LjI4LDAsMCwwLS4zNDEsMS4yNzNBMTAuODksMTAuODksMCwwLDAsMTEuMjksMTUuOTc2WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuMDMzIDMwIDIuMDMzIDIgNy45NjcgMiA3Ljk2NyA0LjIyNyA0LjcyMyA0LjIyNyA0LjcyMyAyNy43NzMgNy45NjcgMjcuNzczIDcuOTY3IDMwIDIuMDMzIDMwXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjkuOTY3IDI5Ljk5OSAyNC4wMzMgMjkuOTk5IDI0LjAzMyAyNy43NzEgMjcuMjc3IDI3Ljc3MSAyNy4yNzcgNC4yMjYgMjQuMDMzIDQuMjI2IDI0LjAzMyAxLjk5OSAyOS45NjcgMS45OTkgMjkuOTY3IDI5Ljk5OVwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG5cdFwiT0NhbWxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi03NDUuNjIzXCIgeTE9XCItOTIuNzZcIiB4Mj1cIi03NDUuNjIzXCIgeTI9XCItODUuMTA4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNzU4IDExMy4yOClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmMjkxMDRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZWM2ODEzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTc0MS45OVwiIHkxPVwiLTEwOS40NzdcIiB4Mj1cIi03NDEuOTlcIiB5Mj1cIi04NS4wOTlcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTc1Mi4xMTFcIiB5MT1cIi05My45MThcIiB4Mj1cIi03NTIuMTExXCIgeTI9XCItODUuMjg0XCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX29jYW1sPC90aXRsZT48cGF0aCBkPVwiTTE2LjU3MSwyNS4yNDZhNC4yOCw0LjI4LDAsMCwwLS4wMzktLjcwOWMtLjA1OS0uMi0uMi0uMjE3LS4zLS4zNzRhMy41MDcsMy41MDcsMCwwLDEtLjUzMi0xLjQ3N2MtLjAyLS40NTMtLjItLjg4Ni0uMjE3LTEuMzM5LS4wMi0uMjE3LjAyLS40NTMsMC0uNjY5YTEuOTYzLDEuOTYzLDAsMCwwLS4wMzktLjMxNSwxLjEzMywxLjEzMywwLDAsMC0uMDM5LS4ybC4wNTktLjEzOGEyLjcyLDIuNzIsMCwwLDEsLjY1LS4wMzljLjI1NiwwLC41MTIuMDIuNzY4LjAyYTcuOTYxLDcuOTYxLDAsMCwwLDEuNTM2LS4wNTksMy43MjIsMy43MjIsMCwwLDAsMS45NDktLjg0Nyw0Ljk0Niw0Ljk0NiwwLDAsMCwxLjUzNi0yLjAwOGMuMTc3LS4zOTQuMTc3LTEuMDgzLjU1MS0xLjQuNDMzLS4zNzQsMS4xODEtLjMzNSwxLjY5My0uNTcxYTEuMTg3LDEuMTg3LDAsMCwxLC44MDctLjEzOGMuMjE3LjAzOS42My4zMTUuNzI5LS4wNTktLjA3OS0uMDM5LS4xLS4xMzgtLjEzOC0uMTc3LjQxNC0uMDM5LDAtMS0uMTU4LTEuMkEyLjIyNSwyLjIyNSwwLDAsMCwyNC4yNSwxM2EzLjUwOSwzLjUwOSwwLDAsMC0xLjUzNi0uMjE3Yy0uODg2LjE3Ny0uODI3LS4zMzUtMS4zMzktLjMzNS0uNjMsMC0xLjczMy4wMzktMS45My42M2ExLjU0LDEuNTQsMCwwLDEtLjMzNS41MTJjLS4xMzguMTc3LjAyLjM1NC0uMDM5LjU3MS0uMDc5LjIxNy0uMTc3Ljk4NS0uMjc2LDEuMjYtLjE3Ny40NTMtLjM5NCwxLjAyNC0uNzg4LDEuMDI0YTMuMTUyLDMuMTUyLDAsMCwxLTEuNDM3LS4wNzljLS4yNzYtLjEtLjcyOS0uMjU2LS45NDUtLjMzNS0xLjAyNC0uNDMzLTEuMi0uOTA2LTEuMi0uOTA2YTMuMDI2LDMuMDI2LDAsMCwxLS41MTItLjg2NmMtLjExOC0uNDE0LS4zMTUtLjc2OC0uMzk0LTFzLS4zLS41OTEtLjQ1My0uOTg1YTIuNjY3LDIuNjY3LDAsMCwwLS43MDktMS4wNjNjLS4zMTUtLjI3Ni0uNjEtLjcyOS0xLjI2LS41OTFhMS42NDEsMS42NDEsMCwwLDAtLjg2Ni4zMTVjLS4yMTcuMTc3LS4zLjU3MS0uNDkyLjg4Ni0uMTE4LjE3Ny0uMzE1LjcwOS0uNTEyLDEuMTYyYTEuOTI5LDEuOTI5LDAsMCwxLS4zMzUuNjVjLS4xMTguMDc5LS4yNTYuMi0uNDE0LjEzOGEuOTI0LjkyNCwwLDAsMS0uMzE1LS4yLDUuMzM0LDUuMzM0LDAsMCwxLS43MDktMS4xMjIsMTEuMSwxMS4xLDAsMCwwLS43ODgtMS4yNDEsMS4wMTYsMS4wMTYsMCwwLDAtLjk4NS0uNTUxYy0xLjAyNCwwLTEuMS41NzEtMS41NTYsMS40MThhNS41NzQsNS41NzQsMCwwLDEtLjY2OSwxLjRjLS4yMzYuMjU2LS45NDUsMS4zMzktMS40NTcsMS41MTZIMnY3LjYyYy4wMzktLjEuMDU5LS4yLjEtLjI3Ni4yLS40MTQuNjUtLjgwNy45MDYtMS4yMjFhMy41LDMuNSwwLDAsMCwuMzc0LS43MDksMy43NDMsMy43NDMsMCwwLDEsLjIzNi0uNzA5Ljc5NC43OTQsMCwwLDEsLjU3MS0uMzM1Yy4zNTQtLjA1OS42NS40OTIsMS4wODMuNzA5LjIuMDc5LDEuMDYzLjM5NCwxLjMxOS40NTMuNDMzLjEuOTA2LjIsMS4zMzkuMjc2LjIzNi4wMzkuNDUzLjA3OS43MDkuMWE3LjMsNy4zLDAsMCwxLDEuMDgzLjEsMi4yNzcsMi4yNzcsMCwwLDAtLjgwNywxLjIyMWMtLjE1OC40MzMtLjI3Ni45MjUtLjQ3MywxLjMzOS0uMjE3LjQ3My0uNjY5LjY2OS0uNjEsMS4yMjFhMi42NjgsMi42NjgsMCwwLDEsLjAyLjY4OSw0LjAwOSw0LjAwOSwwLDAsMS0uMjE3LjY4OWMtLjEuMzE1LS4yMTcsMS4zNTktLjM1NCwxLjY3NGwuOTA2LS4xMThoMEExMC42OTIsMTAuNjkyLDAsMCwwLDguNCwyNi4zODhhMy43MzcsMy43MzcsMCwwLDEsLjcyOS0xLjI4Yy4zMzUtLjM3NC4zMTUtLjg0Ny41MTItMS4zYTEyLjQ4OCwxMi40ODgsMCwwLDEsLjc2OC0xLjNjLjQ5Mi0uODA3LjgwNy0xLjgxMiwxLjg1MS0yLjAyOGEzLjMsMy4zLDAsMCwxLDEuMDI0LjcwOSw0LjQ1Miw0LjQ1MiwwLDAsMSwuODg2LDEuMSwxMi44NTEsMTIuODUxLDAsMCwxLC44ODYsMi42NzgsMS4yMjcsMS4yMjcsMCwwLDAsLjM5NC43MDksNS40NjIsNS40NjIsMCwwLDEsLjQzMy43MjljLjA3OS4xNzcuMi41NzEuMy43ODhhNi4yNjcsNi4yNjcsMCwwLDEsLjMxNS44MjdsLjg0Ny0uMDJoLjAydi0uMDJBOS43NTQsOS43NTQsMCwwLDEsMTYuNTcxLDI1LjI0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE2LjIxNywyNy4yMzVjLS4xLS4yLS4yMTctLjYxLS4zLS43ODhhNS40NjIsNS40NjIsMCwwLDAtLjQzMy0uNzI5LDEuMTE5LDEuMTE5LDAsMCwxLS4zOTQtLjcwOSwxMi40ODcsMTIuNDg3LDAsMCwwLS44ODYtMi42NzgsNC40NTIsNC40NTIsMCwwLDAtLjg4Ni0xLjEsMy4zLDMuMywwLDAsMC0xLjAyNC0uNzA5Yy0xLjA0NC4yLTEuMzU5LDEuMjIxLTEuODUxLDIuMDI4YTEyLjQ4OCwxMi40ODgsMCwwLDAtLjc2OCwxLjNjLS4yLjQzMy0uMTc3LjkyNS0uNTEyLDEuM2EzLjQ0MywzLjQ0MywwLDAsMC0uNzI5LDEuMjhjLS4wMzkuMS0uMTE4LDEuMDgzLS4yMTcsMS4zMTloMGwxLjUzNi0uMWMxLjQzNy4xLDEuMDI0LjY1LDMuMjQ5LjUzMmwzLjUyNS0uMTE4aDBBNi4yNjcsNi4yNjcsMCwwLDAsMTYuMjE3LDI3LjIzNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI2LjQ1NiwzLjhINS41NDRBMy41MjEsMy41MjEsMCwwLDAsMi4wMiw3LjMyOHY3LjY3OWgwYy41MTItLjE3NywxLjIyMS0xLjI2LDEuNDU3LTEuNTE2YTUuOTEzLDUuOTEzLDAsMCwwLC42NjktMS40Yy40NTMtLjgyNy41MzItMS40MTgsMS41NTYtMS40MThhMS4wMTYsMS4wMTYsMCwwLDEsLjk4NS41NTEsOS41NDcsOS41NDcsMCwwLDEsLjc4OCwxLjI0MSw0Ljg0OSw0Ljg0OSwwLDAsMCwuNzA5LDEuMTIyLDIsMiwwLDAsMCwuMzE1LjJjLjE1OC4wNTkuMy0uMDU5LjQxNC0uMTM4QTEuOTI5LDEuOTI5LDAsMCwwLDkuMjQ2LDEzYy4yLS40NTMuMzk0LS45NjUuNTEyLTEuMTYyLjItLjMxNS4yNzYtLjcwOS40OTItLjg4NmExLjU5LDEuNTksMCwwLDEsLjg2Ni0uMzE1Yy42NS0uMTM4Ljk0NS4zMTUsMS4yNi41OTFhMy4yODUsMy4yODUsMCwwLDEsLjcwOSwxLjA2M2MuMTU4LjM5NC4zNTQuNzY4LjQ1My45ODVhOC45NDYsOC45NDYsMCwwLDEsLjM5NCwxLDMuNzEzLDMuNzEzLDAsMCwwLC41MTIuODY2cy4xNzcuNDczLDEuMi45MDZhOC43NDksOC43NDksMCwwLDAsLjk0NS4zMzUsMy4xNTIsMy4xNTIsMCwwLDAsMS40MzcuMDc5Yy4zOTQsMCwuNjEtLjU3MS43ODgtMS4wMjQuMS0uMjc2LjIxNy0xLjA0NC4yNzYtMS4yNnMtLjEtLjM3NC4wMzktLjU3MWMuMTU4LS4yMTcuMjU2LS4yMzYuMzM1LS41MTIuMi0uNjEsMS4zLS42MywxLjkzLS42My41MzIsMCwuNDUzLjUxMiwxLjMzOS4zMzVhMy4yNDMsMy4yNDMsMCwwLDEsMS41MzYuMjE3LDIuMjI1LDIuMjI1LDAsMCwxLDEuMTQyLjU1MWMuMTU4LjIuNTcxLDEuMTYyLjE1OCwxLjIuMDM5LjAzOS4wNzkuMTM4LjEzOC4xNzctLjEuMzc0LS40OTIuMS0uNzI5LjA1OWExLjE4NywxLjE4NywwLDAsMC0uODA3LjEzOGMtLjUxMi4yMTctMS4yNDEuMi0xLjY5My41NzEtLjM3NC4zMTUtLjM3NCwxLS41NTEsMS40YTUuMTY3LDUuMTY3LDAsMCwxLTEuNTM2LDIuMDA4LDMuOSwzLjksMCwwLDEtMS45NDkuODQ3LDcuOTYxLDcuOTYxLDAsMCwxLTEuNTM2LjA1OWMtLjI1Ni0uMDItLjUxMi0uMDItLjc2OC0uMDItLjE1OCwwLS42NjktLjAyLS42NS4wMzlsLS4wNTkuMTM4YS43LjcsMCwwLDAsLjAzOS4yYy4wMi4xMTguMDIuMjE3LjAzOS4zMTUsMCwuMjE3LS4wMi40NTMsMCwuNjY5LjAyLjQ1My4yLjg2Ni4yMTcsMS4zMzlhMy4yNiwzLjI2LDAsMCwwLC41MzIsMS40NzdjLjEuMTU4LjIzNi4xNzcuMy4zNzRhNC4xNjMsNC4xNjMsMCwwLDEsLjAzOS43MDksOS42ODUsOS42ODUsMCwwLDAsLjgyNywyLjc1N3YuMDJoMGMuNTEyLS4wNzksMS4wNDQtLjI3NiwxLjcxMy0uMzc0LDEuMjQxLS4xNzcsMi45NTQtLjEsNC4wNTYtLjIsMi44LS4yNTYsNC4zMTIsMS4xNDIsNi44MTMuNTcxVjcuMzI4QTMuNTUxLDMuNTUxLDAsMCwwLDI2LjQ1NiwzLjhaTTE2LjAyLDIwLjM0M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTguNDc4LDIzLjU3M2MuMi0uNDMzLjMxNS0uOTA2LjQ3My0xLjMzOWEyLjI3NywyLjI3NywwLDAsMSwuODA3LTEuMjIxLDcuMyw3LjMsMCwwLDAtMS4wODMtLjFjLS4yMzYtLjAyLS40NzMtLjA1OS0uNzA5LS4xLS40MzMtLjA3OS0uOTI1LS4xNzctMS4zMzktLjI3Ni0uMjU2LS4wNTktMS4xNDItLjM3NC0xLjMxOS0uNDUzLS40NTMtLjItLjc0OC0uNzY4LTEuMDgzLS43MDlhLjc5NC43OTQsMCwwLDAtLjU3MS4zMzUsMy43NDMsMy43NDMsMCwwLDAtLjIzNi43MDljLS4xLjIzNi0uMjU2LjQ3My0uMzc0LjcwOWExMi4yODksMTIuMjg5LDAsMCwwLS45MjUsMS4yYy0uMDM5LjEtLjA1OS4yLS4xLjN2NC43NDVhNS40LDUuNCwwLDAsMSwuNzI5LjE1OCw4Ljc3LDguNzcsMCwwLDAsNC4zNzEuMzU0bC4xNzctLjAyaDBjLjEzOC0uMzE1LjI1Ni0xLjM1OS4zNTQtMS42NzRhNS40OTQsNS40OTQsMCwwLDAsLjIxNy0uNjg5LDIuNjY4LDIuNjY4LDAsMCwwLS4wMi0uNjg5QzcuODA5LDI0LjI0Miw4LjI2MiwyNC4wNDUsOC40NzgsMjMuNTczWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPmAsXG5cdFwiT2N0YXZlXCI6IGA8ZGVmcyBpZD1cImRlZnMyODc0XCI+IDxyYWRpYWxHcmFkaWVudCBjeD1cIjE4Mi45ODM3XCIgY3k9XCIzOTUuMDQ4NzFcIiByPVwiMTQ4Ljk1MzA5XCIgZng9XCIxODIuOTgzN1wiIGZ5PVwiMzk1LjA0ODcxXCIgaWQ9XCJyYWRpYWxHcmFkaWVudDMwMzNcIiB4bGluazpocmVmPVwiI2xpbmVhckdyYWRpZW50Mzc1NVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuMjI5MTQzMzQsLTAuMjQ5MDE0NzksMC43NjQzNTcyLDAuODMwNjQyNjgsLTI3Mi44NTMzNywtMTU5LjY5NDgyKVwiIC8+IDxsaW5lYXJHcmFkaWVudCBpZD1cImxpbmVhckdyYWRpZW50Mzc1NVwiPiA8c3RvcCBpZD1cInN0b3AzNzU3XCIgc3R5bGU9XCJzdG9wLWNvbG9yOiMwMDhjYmU7c3RvcC1vcGFjaXR5OjFcIiBvZmZzZXQ9XCIwXCIgLz4gPHN0b3AgaWQ9XCJzdG9wMzc1OVwiIHN0eWxlPVwic3RvcC1jb2xvcjojYjJmZmZmO3N0b3Atb3BhY2l0eToxXCIgb2Zmc2V0PVwiMVwiIC8+IDwvbGluZWFyR3JhZGllbnQ+IDwvZGVmcz4gPGcgaWQ9XCJsYXllcjFcIiB0cmFuc2Zvcm09XCJzY2FsZSgwLjExMjk2KSB0cmFuc2xhdGUoLTIzMy4zNTU0NCwtMzkwLjcxODAyKVwiPiA8ZyB0cmFuc2Zvcm09XCJtYXRyaXgoOC40NTE5NzIzLDAsMCw4LjQ1MTk3MjMsLTI3OC40NTAxMiwtNDAzLjgyOTc1KVwiIGlkPVwiZzMwMjVcIj4gPHBhdGggZD1cIm0gNjYuNDMyMTAzLDk3LjQ4ODY3OSBjIC01LjE5NTg0LDUuNjQ2NDMxIC0zLjkzNjYxLDE2LjE2OTAzMSAyLjgxMTA3LDIzLjUwMTg3MSA2Ljc0NzY4LDcuMzMyODUgMTYuNDI4OTgsOC42OTk1NSAyMS42MjQ4MywzLjA1MzEyIDUuMTk1ODUsLTUuNjQ2NDMgMy45NDAyLC0xNi4xNjk0NiAtMi44MDc0OSwtMjMuNTAyMyAtNi43NDc2OCwtNy4zMzI4NjEgLTE2LjQzMjU2LC04LjY5OTEzMSAtMjEuNjI4NDEsLTMuMDUyNjkxIHogbSA0LjcxMTQ5LDIuMzQ1NTMgYyA0LjA4MjU2LC00LjQzNjU5IDExLjU4OSwtMy40NzE1MiAxNi43Njc0MSwyLjE1NTk2MSA1LjE3ODQyLDUuNjI3NSA2LjA2NjQ3LDEzLjc4NDkxIDEuOTgzOTEsMTguMjIxNSAtNC4wODI1Niw0LjQzNjU4IC0xMS41OTA5NywzLjQ3MzY5IC0xNi43NjkzOSwtMi4xNTM4MSAtNS4xNzg0MiwtNS42Mjc1IC02LjA2NDQ5LC0xMy43ODcwNCAtMS45ODE5MywtMTguMjIzNjUxIHpcIiBpZD1cInBhdGg1ODc0XCIgc3R5bGU9XCJmaWxsOnVybCgjcmFkaWFsR3JhZGllbnQzMDMzKTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZVwiIC8+IDxyZWN0IHdpZHRoPVwiNC4zNDk4NTRcIiBoZWlnaHQ9XCI0LjM0OTg1NFwiIHJ4PVwiMC43Njk1ODk2NlwiIHJ5PVwiMC43Njk1ODk2NlwiIHg9XCI4NS4zODE1NjFcIiB5PVwiOTkuNDkzODgxXCIgaWQ9XCJyZWN0NTg3NlwiIHN0eWxlPVwiZmlsbDojZmY3ZjJhO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojZDQ1NTAwO3N0cm9rZS13aWR0aDowLjc0NDAzNzk5O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lXCIgLz4gPHJlY3Qgd2lkdGg9XCIxMC4yNDU0MzZcIiBoZWlnaHQ9XCIxMC4yNDU0MzZcIiByeD1cIjEuODEyNjU0NVwiIHJ5PVwiMS44MTI2NTQ1XCIgeD1cIjYwLjkyNjU5XCIgeT1cIjEwNS4yMjQ1XCIgaWQ9XCJyZWN0NTg3OFwiIHN0eWxlPVwiZmlsbDojZmY3ZjJhO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojZDQ1NTAwO3N0cm9rZS13aWR0aDowLjc0NDAzNzk5O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lXCIgLz4gPHJlY3Qgd2lkdGg9XCI2LjE4OTc1MzFcIiBoZWlnaHQ9XCI2LjE4OTc1MzFcIiByeD1cIjEuMDk1MTEwMlwiIHJ5PVwiMS4wOTUxMTAyXCIgeD1cIjg3LjQwNDczOVwiIHk9XCIxMTguNjM3MDVcIiBpZD1cInJlY3Q1ODgwXCIgc3R5bGU9XCJmaWxsOiNmZjdmMmE7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiNkNDU1MDA7c3Ryb2tlLXdpZHRoOjAuNzQ0MDM3OTk7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmVcIiAvPiA8L2c+IDwvZz5gLFxuXHRcIk9wZW5DTFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMjkuNjYyXCIgeTE9XCIxOC4wMjZcIiB4Mj1cIjIxLjQxOVwiIHkyPVwiMjAuMjM0XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCJyZWRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmY2YTZhXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMjQuNTg4XCIgeTE9XCI5Ljc0OFwiIHgyPVwiMTguNzc2XCIgeTI9XCIxNS41NlwiIHhsaW5rOmhyZWY9XCIjYVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCIxOC40NjZcIiB5MT1cIjYuNjE5XCIgeDI9XCIxNS45MjRcIiB5Mj1cIjEzLjYwM1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2NmYTQwY1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlZGQ0ODBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCIxMy4xN1wiIHkxPVwiNi41MVwiIHgyPVwiMTMuMTdcIiB5Mj1cIjEyLjk5N1wiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCI4LjgwOFwiIHkxPVwiOC40ODZcIiB4Mj1cIjEwLjk4OFwiIHkyPVwiMTMuMTYxXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIjUuNTA1XCIgeTE9XCIxMS40NzdcIiB4Mj1cIjguNTQ2XCIgeTI9XCIxNC41MTlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMWExMTlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzdhZTNkXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiMy42MzlcIiB5MT1cIjE0LjI4NVwiIHgyPVwiNi44ODNcIiB5Mj1cIjE2LjE1OFwiIHhsaW5rOmhyZWY9XCIjZlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCIyLjI2NVwiIHkxPVwiMTcuNzk5XCIgeDI9XCI1LjM3OVwiIHkyPVwiMTguOTMzXCIgeGxpbms6aHJlZj1cIiNmXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIjJcIiB5MT1cIjIxLjYxNFwiIHgyPVwiNC44MzNcIiB5Mj1cIjIxLjYxNFwiIHhsaW5rOmhyZWY9XCIjZlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCIyMC42NjJcIiB5MT1cIjE4Ljk0OVwiIHgyPVwiMTguMDI2XCIgeTI9XCIxNy40MjhcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzY0NjQ2NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNjYmNiY2JcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJrXCIgeDE9XCIxNi4wMjFcIiB5MT1cIjI1LjI2NFwiIHgyPVwiMTYuMDIxXCIgeTI9XCIyMi42OTFcIiB4bGluazpocmVmPVwiI2pcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfb3BlbmNsPC90aXRsZT48cGF0aCBkPVwiTTI3LjgyOCwxMy41NzRhMTQuNjc2LDE0LjY3NiwwLDAsMSwuODM1LDEuNTQyQTE0Ljk2NCwxNC45NjQsMCwwLDEsMjkuOTIsMjIuOUgyMi4xMzNhMTAuMzc3LDEwLjM3NywwLDAsMC0uOTY3LTQuNDI0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTcuNzUzLDE0LjQzYTEwLjA3NCwxMC4wNzQsMCwwLDEsMi43NzIsMi44NzhsNi4yNzMtNS4yYTE1LjU0LDE1LjU0LDAsMCwwLTQuOTg4LTQuMTVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNC43ODEsMTMuMDg2YTguODI3LDguODI3LDAsMCwxLDIuMzc2Ljk2NkwyMC42NjYsNy40M2ExMi43LDEyLjcsMCwwLDAtNC42NDUtLjk1MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTE0LjM2NCwxM2wuNjEyLTYuNDg4YTEyLjQ2LDEyLjQ2LDAsMCwwLTMuNjExLjgxM2wuNTA3LDUuNjM4QTcuMjE5LDcuMjE5LDAsMCwxLDE0LjM2NCwxM1wiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTAuOTQ4LDEzLjE3OWwtLjY4My01LjM3M0ExNC41ODgsMTQuNTg4LDAsMCwwLDcuNzczLDkuMzc5bDEuNzQsNC40MmE3LjUxOCw3LjUxOCwwLDAsMSwxLjQzNS0uNjE5XCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk04Ljg2LDE0LjIwNiw2LjQ3NCwxMC41MTFjLS40NTMuNDQtLjc5LjgyLTEuMDA2LDEuMDc0cS0uMjI3LjI2Ny0uNDM2LjUzOEw3LjQ4LDE1LjM4N2E4Ljg3LDguODcsMCwwLDEsMS4zOC0xLjE4MlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNNy4wNDYsMTUuODc1LDQuMzM1LDEzLjExMmExNC4yNTksMTQuMjU5LDAsMCwwLTEuMjUsMi40MjlsMy4wMDcsMS43MWE5LjgyNiw5LjgyNiwwLDAsMSwuOTU0LTEuMzc2XCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk01LjUyNywxOC4zOTNsLTIuNzctMS45NDVhMTUuNDUyLDE1LjQ1MiwwLDAsMC0uNjMsMi44M2wyLjkwNi42MDdhMTAuMzQzLDEwLjM0MywwLDAsMSwuNDk0LTEuNDkyXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk00LjgzMywyMC45YTEwLjY4NCwxMC42ODQsMCwwLDAtLjEsMkgyLjA5M2ExNC4zMzMsMTQuMzMzLDAsMCwxLS4wNjQtMi41NzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjaSlcIi8+PHBhdGggZD1cIk0yMi41NTEsMTIuNDc4LDE0Ljc1MSwyMy4xQTEuNTQ0LDEuNTQ0LDAsMCwxLDE3LjUsMjQuNDI4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNMTYuMDIxLDI1LjUyMmExLjU0NCwxLjU0NCwwLDEsMSwxLjA5Mi0uNDUyQTEuNTMzLDEuNTMzLDAsMCwxLDE2LjAyMSwyNS41MjJaXCIgc3R5bGU9XCJmaWxsOiM2NDY0NjRcIi8+PHBhdGggZD1cIk0xNy4zMDgsMjMuOTc4YTEuMjg3LDEuMjg3LDAsMSwxLS4zNzctLjkxQTEuMjgzLDEuMjgzLDAsMCwxLDE3LjMwOCwyMy45NzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+YCxcblx0XCJQYXNjYWxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCItMC40NDNcIiB4Mj1cIjE2XCIgeTI9XCIyMi4wNDJcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAyMVwiIHN0b3AtY29sb3I9XCIjZmYwYzE1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzlhMGMwZlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2RlbHBoaTwvdGl0bGU+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjcuNTQ1LDE2LjI0M0g0LjkyNGEuOTE0LjkxNCwwLDAsMC0xLjA5Mi44MnEuMDMzLjQyOS4xLjg0OWExMi40LDEyLjQsMCwwLDAsMjQuNTMyLDBxLjA3NS0uNS4xMDgtMS4wMjFDMjguNDc4LDE2LjUyMywyOC4yMTEsMTYuMjA3LDI3LjU0NSwxNi4yNDNaXCIgc3R5bGU9XCJmaWxsOiNmZjY0NDNcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjE4LjQ4IDExLjY0IDIzLjcwNyA3LjI2NiAxOS43ODcgNS44OCAxNiAxMS4wNTNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTUuNjggMTEuMDI2IDE4LjY0IDUuODggMTQuODUzIDUuODggMTMuMzA3IDExLjI5M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMy4wNCAxMS4zNzMgMTMuNiA2LjcwNiAxMC41ODcgNy45NiAxMS4wMTMgMTIuNzZcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTAuNzQ3IDEzIDkuNzg3IDguNzYgNy43MDcgMTAuODQgOS42NTMgMTQuNjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4zODcgMTUuMDUzIDcuNDkzIDEyLjM3NiA2LjY0IDE0LjQ2NiA5LjA0IDE2LjUxN1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjA0IDE2Ljc1NyA2LjY0IDE1LjIxMyA2LjQ4IDE3LjQgOS4yIDE4LjMzM1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjIyNyAxOC44NDYgNi42NCAxOC4wNCA3LjIyNyAxOS44IDkuNTQ3IDE5LjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS43MDcgMjAuMDkzIDcuNzA3IDIwLjM4NiA4LjYyNyAyMS43NDYgMTAuMjY3IDIxXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0yMC4wMjMsMTMuMDg5YTYuNjEsNi42MSwwLDAsMC00LjUzLTJBNi4yOTMsNi4yOTMsMCwwLDAsMTEuMywyMi4wN2w0Ljk0MS4xMjktMi4wOC00LjE2WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTYuNSwyMi4zNjZsLTUuMjY3LS4xMzgtLjA0NC0uMDM5YTYuNDUzLDYuNDUzLDAsMCwxLDQuMy0xMS4yNjQsNi43ODcsNi43ODcsMCwwLDEsNC42NDMsMi4wNWwuMTIzLjEyMy01LjksNC45ODJabS01LjE0LS40NTUsNC42MTYuMTIxTDEzLjk2MSwxOGw1LjgyNS00LjkxOWE2LjQzLDYuNDMsMCwwLDAtNC4yOTItMS44MzUsNi4xMzMsNi4xMzMsMCwwLDAtNC4xMzEsMTAuNjY3WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTIuMDEzLDIwLjQ5M2MtNC4xNzMtNS44MTMsMi4xMDktOC4xNzIsMi40NzgtOC40NTMuNDUxLS4zNDQtNy41OSwxLjc4NS0zLjIyNiw4Ljg4WlwiIHN0eWxlPVwiZmlsbDojZjA0ZTMxO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjcyIDEyLjYgMTMuNTIgMTcuNTY3IDEzLjczMyAxOC41NzMgMjEuNDY3IDE3LjAyNiAyMC43MiAxMi42XCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMy42MSwxOC43NjEsMTMuMzQxLDE3LjVsNy40OTUtNS4xNy44MTQsNC44MjhabS4wODktMS4xMjMuMTU4Ljc0N0wyMS4yODMsMTYuOSwyMC42LDEyLjg3NFpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTE1LjcyMywyMS4zMTljLTMuOTMtLjY2OC00LjI4My40MjgtNC4yODMuNDI4TDEwLjI2NywyNC40NHMxLjEyLS45MDcsNS40OTMsMGwuNzYtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiNkZDBjMTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNC4xMjIsMjEuNmMtLjAyLS4yLTEuMS0uMzE5LTEuNjc3LS4xMjMtLjczMi4yNDktMS4yMTksMS4xNDItMS4wNDUsMS4yMTNhMS45NzUsMS45NzUsMCwwLDEsMS4xMjUtLjk4NkMxMy40NDcsMjEuNDkzLDE0LjE0MiwyMS44LDE0LjEyMiwyMS42WlwiIHN0eWxlPVwiZmlsbDojZmY2ZTRmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTUuNTIsMTguNjA2YTExLjEsMTEuMSwwLDAsMCwxLjU0NywxLjQ4Nyw2LjksNi45LDAsMCwxLDIuNzIsNC4xMDdjLS4xMDcsMS4wNjctMS45NzMsMS43Ni0xLjk3MywxLjc2bC0zLjMwNy03LjE5NFpcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE3LjczLDI2LjE2MWwtMy40NTctNy41MjEsMS4zMi0uMjA4LjA1Ny4wODFhMTAuODY5LDEwLjg2OSwwLDAsMCwxLjUxMiwxLjQ1MSw3LDcsMCwwLDEsMi43ODIsNC4yMDdsMCwuMDIyLDAsLjAyMmMtLjExNSwxLjE1My0yLDEuODY0LTIuMDc3LDEuODk0Wm0tMi45OS03LjI3LDMuMTU1LDYuODYzYy40MTQtLjE3OCwxLjYzLS43NjMsMS43My0xLjU0OGE2Ljc5Myw2Ljc5MywwLDAsMC0yLjY0OC0zLjk4MWwtLjAxLS4wMDdhMTEuOTQsMTEuOTQsMCwwLDEtMS41MTctMS40MzlaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0yOCwxMi43NDJjLjAyNS4zOTQuMDM0Ljc5Mi4wMjUsMS4xOTRhMTMuOTQ2LDEzLjk0NiwwLDAsMS0xOS45LDEyLjNBMTIuODYsMTIuODYsMCwwLDAsMjgsMTIuNzQyWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMi4zODMsMTMuODkzQTEzLjk0MSwxMy45NDEsMCwwLDEsMjUuNyw1Ljgzcy01LjAwOSw1Ljk3OS0xMC41ODQsNy45MDdTMi4zODMsMTMuODkzLDIuMzgzLDEzLjg5M1pcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtvcGFjaXR5OjAuMlwiLz48cGF0aCBkPVwiTTMuNjE4LDE4LjY5NGMtLjA0NC0uMzkyLS4wNzItLjc5LS4wODMtMS4xOTFDMy4zMjksOS44MDcsMTAuMDEyLDQuMiwxNy43MDgsMy45OTFhMTQuMiwxNC4yLDAsMCwxLDUuNzE5LDEuNDU4LDEzLjEyOCwxMy4xMjgsMCwwLDAtNy4xODgtMi4zNjljLTcuMS4xOS0xMy4zMDYsNS4zLTEzLjExNiwxMi40QTEyLjg3MywxMi44NzMsMCwwLDAsMy42MTgsMTguNjk0WlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPmAsXG5cdFwiUGVybFwiOiBgPHBhdGggZD1cIk0yOS4yNSwxMy44YTYuODg4LDYuODg4LDAsMCwwLS43NDItMi4yNjgsMS4wMTEsMS4wMTEsMCwwLDAtLjE3Mi0uMjMzLDkuNDcxLDkuNDcxLDAsMCwxLTEuNzI1LTIuNCw4LjYzMiw4LjYzMiwwLDAsMC0xLjM5NS0yLjM4MkE2LjkwNiw2LjkwNiwwLDAsMSwyNC4xLDQuNjQ0LDQuNTcyLDQuNTcyLDAsMCwwLDIxLjk5LDEuNzI3YTEuMDA5LDEuMDA5LDAsMCwwLS4xLS4wNTQsOC44ODYsOC44ODYsMCwwLDAtMS4zLS40NjgsMS4wMjIsMS4wMjIsMCwwLDAtLjI2My0uMDM1LDEuMDA5LDEuMDA5LDAsMCwwLS4yLjAyMSw1LjYwNyw1LjYwNywwLDAsMS0uODA3LjEwN2MtLjA1LDAtLjEtLjAwNi0uMTQ5LS4wMDZhMi44NDIsMi44NDIsMCwwLDAtMS40MTYuNDUzYy0uMDk0LjA1Mi0uMTg4LjEwNi0uMjg0LjE0OXEtLjA0MS4wMTgtLjA3OC4wMzlBMS42MzcsMS42MzcsMCwwLDEsMTcuMDY2LDJhMy4xMDksMy4xMDksMCwwLDAtLjc3Mi4xOTQsMSwxLDAsMCwwLS41MDguNDgzLDIuMTg0LDIuMTg0LDAsMCwxLS40NjkuNUE0LjM4Miw0LjM4MiwwLDAsMCwxNC41NTUsNGEuOTY0Ljk2NCwwLDAsMC0uMTE2LjIzNCw0LjY4Nyw0LjY4NywwLDAsMS0xLjU3NCwyLjIsNi40NzEsNi40NzEsMCwwLDAtLjguNjEzLDIuNzM0LDIuNzM0LDAsMCwwLS42MjctMS42MzRjLS4wMTctLjAxOS0uMDM1LS4wMzgtLjA1My0uMDU2bDAtLjAxNGEyLjM3OCwyLjM3OCwwLDAsMC0uMTM1LS41ODYsMSwxLDAsMCwwLS4xMzItLjIzNkE1LjE2Nyw1LjE2NywwLDAsMCw5LjUxMSwzLjExM2EuOTg4Ljk4OCwwLDAsMC0uMzQ2LS4xMTksMS41LDEuNSwwLDAsMS0uMTQ4LS4wNzcsMi4wNiwyLjA2LDAsMCwwLTEtLjMxMSwxLjQ3NiwxLjQ3NiwwLDAsMC0uNjgxLjE2Ni45ODcuOTg3LDAsMCwwLS4yNzQuMjA2LDEuMzI4LDEuMzI4LDAsMCwxLS4xMjUuMDYzLDEuOSwxLjksMCwwLDAtLjkwOC43NzgsMi41MzksMi41MzksMCwwLDAtLjU0MS4xMDYsMS42NTYsMS42NTYsMCwwLDEtLjM4My4wNTcsMi4zLDIuMywwLDAsMC0xLjUuNTQ1bC0uMTA2LjFhMi41MzMsMi41MzMsMCwwLDAtMSwyLjUyNSwxLjA4LDEuMDgsMCwwLDAsLjA2OC4xNjVBMi4yOTQsMi4yOTQsMCwwLDAsNC40NDYsOC40NzhjLS4xLjIzOC0uMi40NzMtLjMxNC43YTEuMDA5LDEuMDA5LDAsMCwwLS4wODcuMjkzQTExLjA1MiwxMS4wNTIsMCwwLDAsNCwxMi4wMzljMCwuMDIsMCwuMDQuMDA3LjA2YTUuMjc4LDUuMjc4LDAsMCwxLC4wNDEuNTQ3LDIuOTI2LDIuOTI2LDAsMCwwLC45MzEsMi40Yy4wMTcuMDE0LjAzNC4wMjYuMDUyLjAzOWwuMDA4LjAzMWEyLjgsMi44LDAsMCwwLC4xNTEuNDQ3LDEuMTg1LDEuMTg1LDAsMCwwLC42MzIuNjE3LDEuMjg5LDEuMjg5LDAsMCwwLC4yNDguNTcxLDEsMSwwLDAsMCwuMzMyLjI3OSwyLjQ1MywyLjQ1MywwLDAsMCwuNDY1LjE3NmwuMDY0LjAxOGEuOTc2Ljk3NiwwLDAsMCwuMTkyLjE3MUE1Ljg3OSw1Ljg3OSwwLDAsMSw3Ljg3MywxOGExLjEzLDEuMTMsMCwwLDAsMS4zNTEuNDI3LDEuNSwxLjUsMCwwLDAsLjc2NS4yMTUsMS40MjEsMS40MjEsMCwwLDAsLjYyNC0uMTQ1bC4xMTQtLjAyNmMuMDI0LjQwOC4wMzMuODE3LjAyOCwxLjIyM2ExLjA0MywxLjA0MywwLDAsMCwuMDI2LjI0MiwxMC43NDQsMTAuNzQ0LDAsMCwxLC4yNjYsMS44MjguOTMxLjkzMSwwLDAsMCwuMDMxLjIsOC40OTIsOC40OTIsMCwwLDEsLjI2OCwxLjgxNWMwLC4wMzEsMCwuMDYzLjAwOC4wOTRhNi4wODMsNi4wODMsMCwwLDEtLjYxLDMuNTc1Ljk5NC45OTQsMCwwLDAtLjA4OS4yNjEsMS4wOTMsMS4wOTMsMCwwLDAtLjIzNC4wNzlsLS4wNS4wMjJhMi4wMTMsMi4wMTMsMCwwLDAtMS4yLDEuMDY1LDEuMzIyLDEuMzIyLDAsMCwwLC4wNzQsMS4wNTQsMSwxLDAsMCwwLC4zMjQuMzcxLDMuNTQ3LDMuNTQ3LDAsMCwwLDMuNTA5LjMsMS41NDYsMS41NDYsMCwwLDAsLjgyOS0xLjY1M2wtLjAwNS0uMDY3YS45ODkuOTg5LDAsMCwwLC4wNTYtLjE1OCwxMS4xODYsMTEuMTg2LDAsMCwwLC4yODgtMi4wNjgsOC45MzksOC45MzksMCwwLDEsLjI1OS0xLjgyMiw0LjcyNyw0LjcyNywwLDAsMCwuMzg5LTEuNTg4bC4wNDIuMDQ4YTEyLjY2MSwxMi42NjEsMCwwLDAsMS4yNTUsMS4xMjksMTAuMywxMC4zLDAsMCwxLDEuMS45ODlsLS4wMTEuMDM4YS41MzIuNTMyLDAsMCwxLS4zNDIuMzU5bC0uMDQ5LjAxN2ExLjkyMSwxLjkyMSwwLDAsMC0xLjE4NCwxLjMzNCwxLjMxMywxLjMxMywwLDAsMCwuNDUyLDEuMjM0LDEsMSwwLDAsMCwuNDQxLjIyMiw0LjkwOCw0LjkwOCwwLDAsMCwyLjczNS0uMTgxLDEuNTU2LDEuNTU2LDAsMCwwLC4yNjYtLjEyNCwxLjQxMSwxLjQxMSwwLDAsMCwuOTcuMzcyLDIuMzI2LDIuMzI2LDAsMCwwLDEtLjI3NGMuMDQ5LS4wMjMuMS0uMDQ1LjE0LS4wNjJhMSwxLDAsMCwwLC42MzctLjg2NCw0LjU1Myw0LjU1MywwLDAsMC0uNDY4LTIuMzQzLDEuNTYsMS41NiwwLDAsMC0uNTEtLjYsMTAuOCwxMC44LDAsMCwxLDEuMy0yLjE1LDIuMTkzLDIuMTkzLDAsMCwwLC40NTEtMi4wMjYsMi41MTksMi41MTksMCwwLDEtLjA0My0uMzk0LDEuMDQ2LDEuMDQ2LDAsMCwwLDAtLjE0OCw1Ljc1Niw1Ljc1NiwwLDAsMSwuMDEyLTEuMjc5LDcuMTYxLDcuMTYxLDAsMCwwLC45NTEsMS43OTMsNy44OTIsNy44OTIsMCwwLDEsLjEzMywxLjEsMTAuNzMzLDEwLjczMywwLDAsMCwuMTMzLDEuMTg2LDkuMzYsOS4zNiwwLDAsMS0uMjI0LDMuOSwxLDEsMCwwLDAtLjAzMi4zNGgwYS45OC45OCwwLDAsMC0uMS4xNzksMi4yMzgsMi4yMzgsMCwwLDAtLjMxMiwxLjIzNSwxLjAwNywxLjAwNywwLDAsMCwuMDM5LjIsMS4zMTUsMS4zMTUsMCwwLDAsMS4zMjguOTYzYy4wODYsMCwuMTc3LS4wMDYuMjY4LS4wMTRsLjAxOSwwLC4wMzguMDEzYTIuMTA5LDIuMTA5LDAsMCwwLDIuNTE3LTEuMDg4LDEsMSwwLDAsMCwuMDU4LS43MzUsNS4yODUsNS4yODUsMCwwLDEtLjIwOC0xLjAyNywxLjAxMSwxLjAxMSwwLDAsMC0uMDQ2LS4yMTcsNi40Nyw2LjQ3LDAsMCwxLS4yMjEtMy4yMiwxLjExMiwxLjExMiwwLDAsMCwuMDE1LS4xMTQsMy45MDcsMy45MDcsMCwwLDEsLjA3NC0uNDQzLDIuNzM4LDIuNzM4LDAsMCwwLS4xOTMtMi4xLDQuMzM5LDQuMzM5LDAsMCwxLC4wMjEtLjQ3NmMuMDExLS4xNDcuMDIzLS4zLjAyNy0uNDYzYTEuNTksMS41OSwwLDAsMCwuODYyLS44NTEsMTIuODMsMTIuODMsMCwwLDAsLjk0Ny0yLjIzLDEuNzE5LDEuNzE5LDAsMCwwLC4xNzItMS4xODUsMS4yMzQsMS4yMzQsMCwwLDAsLjExMS0uMjUxQTEuNDY3LDEuNDY3LDAsMCwwLDI5LjI1LDEzLjhaTTE4Ljg2MywyMi43NjhjLS4wMjYsMC0uMDUzLS4wMDgtLjA4LS4wMWwtLjAyNCwwYTIuNzQ4LDIuNzQ4LDAsMCwxLS4yMzYtLjMyM2MtLjA1OS0uMDg4LS4xMTgtLjE3NS0uMTc4LS4yNThhMi4yNTMsMi4yNTMsMCwwLDAsLjIwOC0uMjM0LDEuMjU1LDEuMjU1LDAsMCwwLC42MjktLjMyMUEzLjE4NiwzLjE4NiwwLDAsMSwxOC44NjMsMjIuNzY4WlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMTkuMjg5LDIuM2MtLjU0OC0uMDY1LS45NjEuMy0xLjQxOS41MDYtLjM2OC4yMDYtLjgxNS4xNTItMS4xODUuMzA5LS4yODIuNTc5LS45NDEuOTA4LTEuMywxLjQ0M2E1LjcsNS43LDAsMCwxLTEuOTQyLDIuNjk0LDUuNDY0LDUuNDY0LDAsMCwwLTIuMzY4LDMuMzk0Yy0uMTQ1LjMtLjEyMi43NDYtLjI3NywxLS41MTEuMTQzLS4yMzktLjUxNi0uMy0uODI1LS4wNzQtLjQ3LjM0MS0uNzcuMzczLTEuMjI2YTEuODM0LDEuODM0LDAsMCwwLC4yMDktMS4wNTNjLS4wNTYtLjgxNC4xODktMS44MDctLjM5My0yLjQ3Ny0uMzQ5LS4yLS4yMzktLjYyMy0uMzY2LS45NDdhNC4yMTQsNC4yMTQsMCwwLDAtMS4zLTEuMTM5Yy0uNDE5LS4wNDEtLjgwNi0uNTQyLTEuMjMyLS4zMjMtLjI2Ni4zMDktLjc2My4zMDUtLjkyMi43MTMtLjEuNTE2LS42ODguMzc0LTEuMDY4LjUtLjQ4OC4xODUtMS4xMTguMDA2LTEuNTE4LjM4Mi0uNDExLjQxLTEuMDM0Ljk2MS0uODM1LDEuNjA2LjQ1Ny44ODIsMS42NDUuNDM4LDIuMzE3Ljk3NEExNy45OSwxNy45OSwwLDAsMSw1LjAzNiw5LjYxYTEwLjA1MSwxMC4wNTEsMCwwLDAtLjA0NCwyLjMzMmMuMTIzLjc3My0uMDgzLDEuNzcyLjYwNiwyLjMxOS4zOC4xMzcuMzU3LjU3Mi41Ljg4Ny4xMzQuMjkuNDI3LS4xMTMuNTQzLjE5My4zMzguMTg0LjAzNy41NjEuMjIuOC4yNjMuMTM3LjYzOS4xMjguODIyLjQyNmE2Ljg0NCw2Ljg0NCwwLDAsMSwuOTc1LjgwNmMuMjMuNDY3LjUzMS0uNDU0Ljc4My0uMTA5LjE3LjI4NS41MDYuNTIyLjgxOS4yODVhMi45OTMsMi45OTMsMCwwLDAsMS4zMjQtLjU1NiwxOC4wMzMsMTguMDMzLDAsMCwxLC4xNzEsMi43MTgsMTEuNzMzLDExLjczMywwLDAsMSwuMjksMiw5LjQwOSw5LjQwOSwwLDAsMSwuMywyLjAzLDcuMTExLDcuMTExLDAsMCwxLS43MDksNC4xNiwxLjAxMiwxLjAxMiwwLDAsMS0uODA3LjhjLS4yOTEuMTMtLjkuMzY2LS42OTIuNzc2YTIuNTQ5LDIuNTQ5LDAsMCwwLDIuNTIuMjE0Yy41MS0uMjQzLjA3My0uODU4LjMzNC0xLjIyNi4zNDMtMS4zLjE3NC0yLjY5MS41NzUtMy45ODVhMy43NjIsMy43NjIsMCwwLDAsLjMtMi4xYy4wNzktLjQ0LS4xMDUtLjk2OS4xODctMS4zMjlhMS44MTMsMS44MTMsMCwwLDEsLjQ4My0xLjIsMTQuNzYyLDE0Ljc2MiwwLDAsMCwuMTQ0LTIuMDI2LDMuMjE0LDMuMjE0LDAsMCwxLDEuMjY3LS4xMjdjLjAxOC4zNzUtLjI3Mi44MTItLjE5LDEuMjM0QTEuOTQ4LDEuOTQ4LDAsMCwxLDE1LjUsMjAuM2EyLjg0OSwyLjg0OSwwLDAsMCwuMTY4LDIuMzA4Yy43ODIuODM5LDEuOCwxLjQzMiwyLjUzNiwyLjMyNy4zMTQuMjA1LjIuNTE3LjAzOC43ODRhMS41MjgsMS41MjgsMCwwLDEtLjk4NywxLjAzNGMtLjMwOC4xMjEtLjgwNi41NjYtLjQ0Mi44ODJhMy45MDYsMy45MDYsMCwwLDAsMi4xNzgtLjE0NGMuNDc2LS4xNzEuMy0uNzM4LjQ4OC0xLjA4OC4zLjIzMy40MjMuNzY1LjcxMSwxLjA2OS4zLjQzMy44MDcuMDczLDEuMTU2LS4wNjJhMy41NDksMy41NDksMCwwLDAtLjM3Mi0xLjg0MmMtLjE2Ny0uMzc4LS44LS4zODUtLjc3LS44NTJhMTEuNzYxLDExLjc2MSwwLDAsMSwxLjcxMi0zYy41MS0uNDc5LjEzLTEuMTkxLjE1OC0xLjhBNi43NjUsNi43NjUsMCwwLDEsMjMuMTU4LDE1LjVhMTUuODg5LDE1Ljg4OSwwLDAsMCwuNjkyLDIuMTQsNi4yMyw2LjIzLDAsMCwwLDEuMSwyLjI0NmMuMjM3LjgxMS4xNzYsMS43MS4zMzEsMi41NTFhMTAuNDQsMTAuNDQsMCwwLDEtLjI0Miw0LjM0N2MuMDQuNTE4LS40NTcuOS0uNDE1LDEuNDA4LjE0LjQ2OS43LjA5My45OS4yOWExLjExLDEuMTEsMCwwLDAsMS4zMjQtLjU3Miw2LjIxMiw2LjIxMiwwLDAsMS0uMjQ3LTEuMjIzLDcuNDU0LDcuNDU0LDAsMCwxLS4yNTUtMy43MTljLjA0Ni0uNjY5LjQ1Ny0xLjUtLjA3My0yLjA3Mi0uMTQ4LS42MTkuMS0xLjI4NS0uMDQ5LTEuOTE1YTEyLjg3NywxMi44NzcsMCwwLDEtLjEyMi00LjkzM2MuMDkzLS4yMjcuMDEzLS42NDkuMjQ3LS43NzVhMS44NTEsMS44NTEsMCwwLDEsLjMxNSwxLjIzMiwzLjcsMy43LDAsMCwxLC4wNzksMi4wODFjLS40MjQuNTMxLS4xNjMsMS4yNDgtLjEwOSwxLjg1LjA2OC40MjIuNTE2LjExOC41ODktLjE0NGExMS44NTEsMTEuODUxLDAsMCwwLC45NDQtMi4yNDFjLjI2OS0uMzU2LjAxNC0uNzcsMC0xLjE0Mi40MTMtLjA0OS4yNTYtLjUwNi4wMzUtLjdhNS45Myw1LjkzLDAsMCwwLS42NjctMi4yLDEwLjQ2NCwxMC40NjQsMCwwLDEtMS45NDEtMi43MjNjLS41MjgtMS42MzktMi4wNDItMi43MjYtMi41NTYtNC4zNzlhMy41NTYsMy41NTYsMCwwLDAtMS42NTItMi4zMTdBNy44ODEsNy44ODEsMCwwLDAsMjAuMzIsMi4xNyw2LjUsNi41LDAsMCwxLDE5LjI4OSwyLjNabS40LDE0LjY2YTM4LjkwNywzOC45MDcsMCwwLDEsLjUsNC4yOTEsNC4xNzUsNC4xNzUsMCwwLDEtLjc2LDIuNTE3Yy0uMTIuNDI1LS40ODYuMDEyLS43NTEtLjAxNi0uNjQzLS4wMTgtLjg4Mi0uNjgzLTEuMjMyLTEuMTA3LS4zNi0uMzQ0LS4xLS44LjEzMy0xLjEzMS4yNTItLjE3OS4zNS0uNTc5LjcwOC0uNTQ4LjQtLjAwNy4zMTYtLjQ4Ny4yNi0uNzQzLjIzOC0uMzYyLjA5Mi0uODkyLjMyOC0xLjI4My40MTktLjE4Mi4yOTQtLjgyLjQ0Mi0xLjE4LjExNS0uMjU2LjAxNy0uNzQ5LjMzNC0uODU0LjAzNy0uMDA2LjA0OS4wMTIuMDQyLjA1MlpcIiBzdHlsZT1cImZpbGw6IzNhM2M1YlwiLz5gLFxuXHRcIlBIUFwiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiLTE2LjExNFwiIGN5PVwiMjAuNTMyXCIgcj1cIjE4LjM4NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI2LjUyIC05LjMwNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiM0YzZiOTZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMjMxZjIwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcGhwPC90aXRsZT48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHJ4PVwiMTRcIiByeT1cIjcuMzY1XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiMTZcIiByeD1cIjEzLjQ1M1wiIHJ5PVwiNi44MThcIiBzdHlsZT1cImZpbGw6IzYyODBiNlwiLz48cGF0aCBkPVwiTTE4LjcyNSwxOC4ybC42NjctMy40MzRhMS43NTIsMS43NTIsMCwwLDAtLjM3Mi0xLjcxOSwyLjkyOSwyLjkyOSwwLDAsMC0yLS41MjVIMTUuODY3bC4zMzEtMS43YS4yMTkuMjE5LDAsMCwwLS4yMTUtLjI2aC0xLjZhLjIxOS4yMTksMCwwLDAtLjIxNS4xNzdsLS43MDksMy42NDZhMi4wNTEsMi4wNTEsMCwwLDAtLjQ3Ny0xLjA1NCwyLjc4MywyLjc4MywwLDAsMC0yLjItLjgwN0g3LjdhLjIxOS4yMTksMCwwLDAtLjIxNS4xNzdsLTEuNDM0LDcuMzhhLjIxOS4yMTksMCwwLDAsLjIxNS4yNkg3Ljg2OWEuMjE5LjIxOSwwLDAsMCwuMjE1LS4xNzdsLjM0Ny0xLjc4NWgxLjJhNS4xNjcsNS4xNjcsMCwwLDAsMS41NjgtLjIsMy4wNjgsMy4wNjgsMCwwLDAsMS4xNS0uNjg5LDMuNTM4LDMuNTM4LDAsMCwwLC42OC0uODQ0bC0uMjg3LDEuNDc1YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZoMS42YS4yMTkuMjE5LDAsMCwwLC4yMTUtLjE3N2wuNzg3LTQuMDUxaDEuMDk0Yy40NjYsMCwuNi4wOTMuNjQuMTMzcy4xLjE2NS4wMjUuNTY5bC0uNjM1LDMuMjY1YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZoMS42MkEuMjE5LjIxOSwwLDAsMCwxOC43MjUsMTguMlpNMTEuMzMsMTUuMzY2YTEuNzQ5LDEuNzQ5LDAsMCwxLS41NjEsMS4wOTIsMi4xNzEsMi4xNzEsMCwwLDEtMS4zMTUuMzIxSDguNzQybC41MTUtMi42NTFoLjkyMWMuNjc3LDAsLjk0OS4xNDUsMS4wNTkuMjY2QTEuMTgxLDEuMTgxLDAsMCwxLDExLjMzLDE1LjM2NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI1LjU0NiwxMy4zMzJhMi43ODMsMi43ODMsMCwwLDAtMi4yLS44MDdIMjAuMjU1YS4yMTkuMjE5LDAsMCwwLS4yMTUuMTc3bC0xLjQzNCw3LjM4YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZoMS42MDhhLjIxOS4yMTksMCwwLDAsLjIxNS0uMTc3bC4zNDctMS43ODVoMS4yYTUuMTY3LDUuMTY3LDAsMCwwLDEuNTY4LS4yLDMuMDY4LDMuMDY4LDAsMCwwLDEuMTUtLjY4OSwzLjQyNSwzLjQyNSwwLDAsMCwxLjA3Ni0xLjkyN0EyLjUxMiwyLjUxMiwwLDAsMCwyNS41NDYsMTMuMzMyWm0tMS42NjcsMi4wMzRhMS43NDksMS43NDksMCwwLDEtLjU2MSwxLjA5MkEyLjE3MSwyLjE3MSwwLDAsMSwyMiwxNi43NzhIMjEuMjlsLjUxNS0yLjY1MWguOTIxYy42NzcsMCwuOTQ5LjE0NSwxLjA1OS4yNjZBMS4xODEsMS4xODEsMCwwLDEsMjMuODc5LDE1LjM2NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEwLjE3OCwxMy45MDhhMS42NDUsMS42NDUsMCwwLDEsMS4yMjEuMzM4LDEuMzQsMS4zNCwwLDAsMSwuMTQ1LDEuMTYxLDEuOTQ1LDEuOTQ1LDAsMCwxLS42NDIsMS4yMjNBMi4zNjEsMi4zNjEsMCwwLDEsOS40NTQsMTdIOC40NzZsLjYtMy4wODlaTTYuMjYxLDIwLjEyNEg3Ljg2OWwuMzgxLTEuOTYySDkuNjI3YTQuOTMxLDQuOTMxLDAsMCwwLDEuNS0uMTkxLDIuODQsMi44NCwwLDAsMCwxLjA3LS42NDIsMy4yMDcsMy4yMDcsMCwwLDAsMS4wMS0xLjgwOCwyLjMsMi4zLDAsMCwwLS4zODUtMi4wNDQsMi41NjgsMi41NjgsMCwwLDAtMi4wMzUtLjczMkg3LjdaXCIgc3R5bGU9XCJmaWxsOiMwMDAwMDRcIi8+PHBhdGggZD1cIk0xNC4zODcsMTAuNzgyaDEuNkwxNS42LDEyLjc0NGgxLjQyMWEyLjc2NywyLjc2NywwLDAsMSwxLjg1LjQ2OCwxLjU0OCwxLjU0OCwwLDAsMSwuMzA1LDEuNTE2bC0uNjY3LDMuNDM0SDE2Ljg5bC42MzUtMy4yNjVhLjg4Ni44ODYsMCwwLDAtLjA4LS43NiwxLjEyMSwxLjEyMSwwLDAsMC0uOC0uMkgxNS4zN2wtLjgyMiw0LjIyOGgtMS42WlwiIHN0eWxlPVwiZmlsbDojMDAwMDA0XCIvPjxwYXRoIGQ9XCJNMjIuNzI3LDEzLjkwOGExLjY0NSwxLjY0NSwwLDAsMSwxLjIyMS4zMzgsMS4zNCwxLjM0LDAsMCwxLC4xNDUsMS4xNjEsMS45NDUsMS45NDUsMCwwLDEtLjY0MiwxLjIyM0EyLjM2MSwyLjM2MSwwLDAsMSwyMiwxN2gtLjk3OGwuNi0zLjA4OVpNMTguODEsMjAuMTI0aDEuNjA4bC4zODEtMS45NjJoMS4zNzdhNC45MzEsNC45MzEsMCwwLDAsMS41LS4xOTEsMi44NCwyLjg0LDAsMCwwLDEuMDctLjY0MiwzLjIwNywzLjIwNywwLDAsMCwxLjAxLTEuODA4LDIuMywyLjMsMCwwLDAtLjM4NS0yLjA0NCwyLjU2OCwyLjU2OCwwLDAsMC0yLjAzNS0uNzMySDIwLjI0NFpcIiBzdHlsZT1cImZpbGw6IzAwMDAwNFwiLz5gLFxuXHRcIlBML1NRTFwiOiBgPHBhdGggZD1cIk04LjU2MiwxNS4yNTZBMjEuMTU5LDIxLjE1OSwwLDAsMCwxNiwxNi40NDlhMjEuMTU5LDIxLjE1OSwwLDAsMCw3LjQzOC0xLjE5NGMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJWOS43YTEwLjM1NywxMC4zNTcsMCwwLDEtMi4wODQsMS4wNzZBMjIuMjkzLDIyLjI5MywwLDAsMSwxNiwxMi4wNzhhMjIuMzYsMjIuMzYsMCwwLDEtNy44NzktMS4zQTEwLjI4LDEwLjI4LDAsMCwxLDYuMDM3LDkuN3YzLjU1QzYuMDM3LDEzLjcyNCw2LjcsMTQuNTI4LDguNTYyLDE1LjI1NlpcIiBzdHlsZT1cImZpbGw6cmVkXCIvPjxwYXRoIGQ9XCJNOC41NjIsMjEuOTYxYTE1LjYxMSwxNS42MTEsMCwwLDAsMi42Ljc0MUEyNC45LDI0LjksMCwwLDAsMTYsMjMuMTU1YTI0LjksMjQuOSwwLDAsMCw0LjgzOC0uNDUyLDE1LjYxNCwxNS42MTQsMCwwLDAsMi42LS43NDFjMS44NjQtLjcyNywyLjUyNS0xLjUzNSwyLjUyNS0ydi0zLjM5YTEwLjcwNiwxMC43MDYsMCwwLDEtMS42OTIuODI1QTIzLjQ5LDIzLjQ5LDAsMCwxLDE2LDE4Ljc0YTIzLjQ5LDIzLjQ5LDAsMCwxLTguMjcxLTEuMzQ4LDEwLjgyOSwxMC44MjksMCwwLDEtMS42OTItLjgyNVYxOS45NkM2LjAzNywyMC40MjYsNi43LDIxLjIzMSw4LjU2MiwyMS45NjFaXCIgc3R5bGU9XCJmaWxsOnJlZFwiLz48cGF0aCBkPVwiTTE2LDMwYzUuNSwwLDkuOTYzLTEuNzQ0LDkuOTYzLTMuODk0VjIzLjI2OWExMC41LDEwLjUsMCwwLDEtMS41MzUuNzYybC0uMTU3LjA2M0EyMy40ODcsMjMuNDg3LDAsMCwxLDE2LDI1LjQ0NWEyMy40MjIsMjMuNDIyLDAsMCwxLTguMjcxLTEuMzUxYy0uMDU0LS4wMi0uMTA2LS4wNDMtLjE1Ny0uMDYzYTEwLjUsMTAuNSwwLDAsMS0xLjUzNS0uNzYydjIuODM3QzYuMDM3LDI4LjI1NiwxMC41LDMwLDE2LDMwWlwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiNS44OTRcIiByeD1cIjkuOTYzXCIgcnk9XCIzLjg5NFwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+YCxcblx0XCJQbGFpbiB0ZXh0XCI6IGA8cGF0aCBkPVwiTTIyLjAzOCwySDYuMzc1YTEuNzU1LDEuNzU1LDAsMCwwLTEuNzUsMS43NXYyNC41QTEuNzU1LDEuNzU1LDAsMCwwLDYuMzc1LDMwaDE5LjI1YTEuNzU1LDEuNzU1LDAsMCwwLDEuNzUtMS43NVY2Ljg1NlptLjUyNSwyLjg0NCwxLjY2MywxLjUzMUgyMi41NjNaTTYuMzc1LDI4LjI1VjMuNzVIMjAuODEzVjguMTI1aDQuODEzVjI4LjI1WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxNS4wOTdcIiB3aWR0aD1cIjEzLjA3NlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMjQuNDM5XCIgd2lkdGg9XCI5Ljc2MlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTkuNzYzXCIgd2lkdGg9XCIxNS43NVwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTAuMjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPmAsXG5cdFwiUGxhbnRVTUxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0zMy40MjNcIiB5MT1cIi0yNTAuOTExXCIgeDI9XCItMzMuMzUzXCIgeTI9XCItMjUwLjg1OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDM3LjEzNCwgMjYuMDAxLCAxMy41NzUsIC0xOS4zODcsIDQ2NzMuNDczLCAtMzk4Mi4wMTkpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzY3Njc2XCIvPjxzdG9wIG9mZnNldD1cIjFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMzIuMTA3XCIgeTE9XCItMjQyLjU2M1wiIHgyPVwiLTMyLjAyOFwiIHkyPVwiLTI0Mi41ODZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4MS4wODEsIDU2Ljc3NCwgMTcuMzA2LCAtMjQuNzE1LCA2ODA0LjAyMSwgLTQxNDkuNjQ0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzAwNzliOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTMzLjI4MlwiIHkxPVwiLTI0My40MjNcIiB4Mj1cIi0zMy4yMjRcIiB5Mj1cIi0yNDMuNDU1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjAuMDAzLCA0Mi4wMTUsIDM0LjE4NCwgLTQ4LjgyLCAxMDM0My4wMDUsIC0xMDQ2OS4wODQpXCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIjEyLjM1NlwiIHkxPVwiMjYuMjY4XCIgeDI9XCIxNC4wMTFcIiB5Mj1cIjI2LjI2OFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzU5NTk1OVwiLz48c3RvcCBvZmZzZXQ9XCIwLjA4N1wiIHN0b3AtY29sb3I9XCIjNmU2ZTZlXCIvPjxzdG9wIG9mZnNldD1cIjAuMjQyXCIgc3RvcC1jb2xvcj1cIiM4YzhjOGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MDVcIiBzdG9wLWNvbG9yPVwiI2E0YTRhNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjU3N1wiIHN0b3AtY29sb3I9XCIjYjViNWI1XCIvPjxzdG9wIG9mZnNldD1cIjAuNzY1XCIgc3RvcC1jb2xvcj1cIiNiZmJmYmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYzJjMmMyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiMTguMjkxXCIgeTE9XCIyNi4xNzFcIiB4Mj1cIjE5Ljk0NlwiIHkyPVwiMjYuMTcxXCIgeGxpbms6aHJlZj1cIiNkXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIjI0LjQ0XCIgeTE9XCIyNi4xNzFcIiB4Mj1cIjI2LjA5NlwiIHkyPVwiMjYuMTcxXCIgeGxpbms6aHJlZj1cIiNkXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3BsYW50dW1sPC90aXRsZT48cG9seWdvbiBwb2ludHM9XCIyMC4zMDUgMTcuODcyIDI3LjE2IDIyLjQxOCAyMS43MiAyNS40OTMgMTQuODYxIDIwLjk5OSAyMC4zMDUgMTcuODcyXCIgc3R5bGU9XCJmaWxsOiMxYzBhNDJcIi8+PHBhdGggZD1cIk0yMS43MTYsMjUuNjE5bC0uMDU1LS4wMzYtNy4wMDUtNC41OSw1LjY1My0zLjI0Nyw3LjA1Niw0LjY4Wm0tNi42NS00LjYxMyw2LjY1OCw0LjM2Miw1LjIzMS0yLjk1N0wyMC4zLDE4WlwiLz48cG9seWdvbiBwb2ludHM9XCIyNi40MDEgMTEuOTA5IDI5LjQxOCAxMy41OTIgMjcuMDcgMTUuMDg4IDI0LjIxMyAxMy4yNDcgMjYuNDAxIDExLjkwOVwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjcuMDY5LDE1LjIxNWwtMy4wNTgtMS45NywyLjM4Ny0xLjQ2LDMuMjI4LDEuOFptLTIuNjU0LTEuOTY2TDI3LjA3LDE0Ljk2LDI5LjIwOCwxMy42bC0yLjgtMS41NjVaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjQ5OCAxNy44MDcgMjEuMzU0IDIyLjM1NCAxNS45MTQgMjUuNDI5IDkuMDU1IDIwLjkzNSAxNC40OTggMTcuODA3XCIgc3R5bGU9XCJmaWxsOiNmZmJkM2ZcIi8+PHBhdGggZD1cIk0xNS45MSwyNS41NTRsLS4wNTUtLjAzNkw4Ljg1LDIwLjkyOSwxNC41LDE3LjY4MWw3LjA1Niw0LjY4Wk05LjI2LDIwLjk0MSwxNS45MTgsMjUuM2w1LjIzMS0yLjk1Ny02LjY1NC00LjQxM1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiNy45OSAxNy45NjYgMTQuOTU0IDIyLjM2NiA5LjU3NyAyNS41MDQgMi4yMTggMjAuODQ5IDcuOTkgMTcuOTY2XCIgc3R5bGU9XCJmaWxsOiNhMTFmNDBcIi8+PHBhdGggZD1cIk05LjU3NSwyNS42MjksMiwyMC44MzhsNi0zLDcuMTY0LDQuNTI3Wk0yLjQzNiwyMC44Niw5LjU4LDI1LjM3OGw1LjE2OC0zLjAxNkw3Ljk4NCwxOC4wODlaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuMTExIDIxLjAyMSA5LjQ0MyAyNS41MTUgOS40NDMgMjkuMDYzIDIuMTExIDI0LjMzMiAyLjExMSAyMS4wMjFcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTkuNTUsMjkuMjYsMiwyNC4zOTFWMjAuODI5TDkuNTUsMjUuNDU1Wk0yLjIxOCwyNC4yNzRsNy4xMTgsNC41OTJWMjUuNTc1TDIuMjE4LDIxLjIxM1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjQuMDcxIDEzLjM0MyAyNy4wMDkgMTUuMjIyIDI3LjAwOSAyMi4xMzEgMjQuMDcxIDIwLjI0NyAyNC4wNzEgMTMuMzQzXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0yNy4wNjMsMjIuMjI5bC0zLjA0NS0xLjk1M1YxMy4yNDVsMy4wNDUsMS45NDdabS0yLjkzOC0yLjAxMiwyLjgzMSwxLjgxNVYxNS4yNTFsLTIuODMxLTEuODFaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjE0OSAyMi41MjYgMjcuMTQ5IDE1LjE5NCAyOS41MTQgMTMuNzc1IDI5LjUxNCAyOS4xNDkgMjguMzMxIDI5LjE0OSA5LjY0NiAyOS4xNDkgOS42NDYgMjUuNjAxIDE1LjA4NiAyMi41MjYgMTUuNzg1IDI1LjYwMSAxNS43OTYgMjUuNjAxIDIxLjQ3MiAyMi41MjYgMjEuODkxIDI1LjYwMSAyMS45NDUgMjUuNjAxIDI3LjE0OSAyMi41MjZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI5LjYyMSwyOS4yNTZIOS41MzlWMjUuNTM4bDUuNjItMy4xNzcuNywzLjA4Myw1LjctMy4wODcuNDIyLDMuMSw1LjA2MS0yLjk5MVYxNS4xMzNsMi41OC0xLjU0OFpNOS43NTMsMjkuMDQxSDI5LjQwN1YxMy45NjRsLTIuMTUxLDEuMjl2Ny4zMzJsLS4wNTMuMDMxLTUuMjI5LDMuMDlIMjEuOGwtLjQxMS0zLjAxNC01LjU2NCwzLjAxNEgxNS43bC0uNjg2LTMuMDE4LTUuMjYsMi45NzNaXCIvPjxyZWN0IHg9XCIxMi4zNTZcIiB5PVwiMjUuNDRcIiB3aWR0aD1cIjEuNjU2XCIgaGVpZ2h0PVwiMS42NTZcIiByeD1cIjAuMjE1XCIgcnk9XCIwLjIxNVwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTMuOCwyNy4ySDEyLjU3YS4zMjIuMzIyLDAsMCwxLS4zMjItLjMyMlYyNS42NTVhLjMyMi4zMjIsMCwwLDEsLjMyMi0uMzIySDEzLjhhLjMyMi4zMjIsMCwwLDEsLjMyMi4zMjJ2MS4yMjZBLjMyMi4zMjIsMCwwLDEsMTMuOCwyNy4yWk0xMi41NywyNS41NDdhLjEwOC4xMDgsMCwwLDAtLjEwNy4xMDd2MS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy4xMDdIMTMuOGEuMTA4LjEwOCwwLDAsMCwuMTA3LS4xMDdWMjUuNjU1YS4xMDguMTA4LDAsMCwwLS4xMDctLjEwN1pcIi8+PHJlY3QgeD1cIjE4LjI5MVwiIHk9XCIyNS4zNDNcIiB3aWR0aD1cIjEuNjU2XCIgaGVpZ2h0PVwiMS42NTZcIiByeD1cIjAuMjE1XCIgcnk9XCIwLjIxNVwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNMTkuNzMyLDI3LjEwNkgxOC41MDVhLjMyMi4zMjIsMCwwLDEtLjMyMi0uMzIyVjI1LjU1OGEuMzIyLjMyMiwwLDAsMSwuMzIyLS4zMjJoMS4yMjZhLjMyMi4zMjIsMCwwLDEsLjMyMi4zMjJ2MS4yMjZBLjMyMi4zMjIsMCwwLDEsMTkuNzMyLDI3LjEwNlptLTEuMjI2LTEuNjU2YS4xMDguMTA4LDAsMCwwLS4xMDcuMTA3djEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDcuMTA3aDEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDctLjEwN1YyNS41NThhLjEwOC4xMDgsMCwwLDAtLjEwNy0uMTA3WlwiLz48cmVjdCB4PVwiMjQuNDRcIiB5PVwiMjUuMzQzXCIgd2lkdGg9XCIxLjY1NlwiIGhlaWdodD1cIjEuNjU2XCIgcng9XCIwLjIxNVwiIHJ5PVwiMC4yMTVcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTI1Ljg4MSwyNy4xMDZIMjQuNjU1YS4zMjIuMzIyLDAsMCwxLS4zMjItLjMyMlYyNS41NThhLjMyMi4zMjIsMCwwLDEsLjMyMi0uMzIyaDEuMjI2YS4zMjIuMzIyLDAsMCwxLC4zMjIuMzIydjEuMjI2QS4zMjIuMzIyLDAsMCwxLDI1Ljg4MSwyNy4xMDZabS0xLjIyNi0xLjY1NmEuMTA4LjEwOCwwLDAsMC0uMTA3LjEwN3YxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LjEwN2gxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LS4xMDdWMjUuNTU4YS4xMDguMTA4LDAsMCwwLS4xMDctLjEwN1pcIi8+PHBhdGggZD1cIk0yNy4yMTUsMTEuMjNjLS4wNTIuMDY5LS40MTctLjI2Mi0uNjUzLS41MjZhNC40MDgsNC40MDgsMCwwLDEtLjUxNi0uNzNBMi42LDIuNiwwLDAsMSwyNS43LDkuMmEyLjM1OCwyLjM1OCwwLDAsMS0uMDUyLS42ODIsMi45NTksMi45NTksMCwwLDEsLjEyOS0uNzQ5LDMuMTQyLDMuMTQyLDAsMCwxLC43ODctMS4yMDcsMTUuNTMyLDE1LjUzMiwwLDAsMCwxLjI4My0xLjQsMy4wNjIsMy4wNjIsMCwwLDAsLjQ3OS0uOTI3LDMuOTc5LDMuOTc5LDAsMCwwLC4xNTEtLjg1NWMuMDE5LS4zNjQtLjAyNS0uNTkzLjAyMy0uNjEzcy4yMTUuMjc0LjI4Ny41NjRhMy4xNjcsMy4xNjcsMCwwLDEtLjQ1OCwyLjEsNi45LDYuOSwwLDAsMS0xLjA5NCwxLjQ0OCwyLjgsMi44LDAsMCwwLS44NDksMS4yMzRBMi40NjYsMi40NjYsMCwwLDAsMjYuMyw4LjhhMy40NjUsMy40NjUsMCwwLDAsLjQ3NiwxLjU0MkMyNy4wNjQsMTAuOTE0LDI3LjI1NiwxMS4xNzUsMjcuMjE1LDExLjIzWlwiIHN0eWxlPVwiZmlsbDojZWEyZDJlXCIvPjxwYXRoIGQ9XCJNMjcuMTkzLDExLjI2NmMtLjEyNCwwLS40OTItLjM2NS0uNjUxLS41NDRhNC40NzgsNC40NzgsMCwwLDEtLjUyLS43MzQsMi42MjgsMi42MjgsMCwwLDEtLjM0Ni0uNzgxLDIuMzc1LDIuMzc1LDAsMCwxLS4wNTMtLjY5LDIuOTc4LDIuOTc4LDAsMCwxLC4xMy0uNzU2LDMuMjA4LDMuMjA4LDAsMCwxLC43OTMtMS4yMTZjLjI5NC0uMzMxLjUtLjUyOC42NTktLjY4NmE0LjM5Myw0LjM5MywwLDAsMCwuNjIyLS43MTEsMy4wNTIsMy4wNTIsMCwwLDAsLjQ3Ni0uOTE5LDMuOTUxLDMuOTUxLDAsMCwwLC4xNS0uODQ5Yy4wMDgtLjE1OSwwLS4yOTQsMC0uMzkzLDAtLjE1OS0uMDA2LS4yMjUuMDM4LS4yNDNhLjA1LjA1LDAsMCwxLC4wNDMsMCwxLjIyNiwxLjIyNiwwLDAsMSwuMjguNTc5LDMuMTY3LDMuMTY3LDAsMCwxLS40NiwyLjEyMSw2LjkyOCw2LjkyOCwwLDAsMS0xLjEsMS40NTNjLS4wNTUuMDYtLjEwOS4xMTYtLjE2Mi4xNzFhMi4zLDIuMywwLDAsMC0uNjgxLDEuMDUyLDIuNDcsMi40NywwLDAsMC0uMDgyLjY3MywzLjQ1OCwzLjQ1OCwwLDAsMCwuNDczLDEuNTNjLjExNC4yMzEuMjE1LjQxNS4yODkuNTQ5LjEyOS4yMzUuMTc4LjMyMy4xNDIuMzY5aDBhLjA1MS4wNTEsMCwwLDEtLjA0LjAyWk0yOC41MTIsMi44YS44NjMuODYzLDAsMCwwLDAsLjE5YzAsLjEuMDA3LjIzNiwwLC40YTQuMDIxLDQuMDIxLDAsMCwxLS4xNTIuODYxLDMuMTA2LDMuMTA2LDAsMCwxLS40ODMuOTM0LDQuNDM3LDQuNDM3LDAsMCwxLS42MjkuNzE5Yy0uMTYyLjE1OC0uMzY0LjM1NC0uNjU3LjY4M2EzLjE2OCwzLjE2OCwwLDAsMC0uNzgyLDEuMiwyLjkzMywyLjkzMywwLDAsMC0uMTI4Ljc0MywyLjMyNSwyLjMyNSwwLDAsMCwuMDUyLjY3NSwyLjU5LDIuNTksMCwwLDAsLjM0MS43NjcsNC40MjIsNC40MjIsMCwwLDAsLjUxMy43MjUsMi4wMzUsMi4wMzUsMCwwLDAsLjYxMS41MjYsMS4xODMsMS4xODMsMCwwLDAtLjE0Ny0uMzFjLS4wNzQtLjEzNC0uMTc1LS4zMTgtLjI5LS41NTFBMy41LDMuNSwwLDAsMSwyNi4yNzgsOC44YTIuNTMsMi41MywwLDAsMSwuMDg0LS42ODgsMi4zNzUsMi4zNzUsMCwwLDEsLjY5NC0xLjA3NWMuMDUyLS4wNTUuMTA2LS4xMTEuMTYxLS4xNzFhNi44NzksNi44NzksMCwwLDAsMS4wOS0xLjQ0MiwzLjExOSwzLjExOSwwLDAsMCwuNDU2LTIuMDgzQTEuMjgxLDEuMjgxLDAsMCwwLDI4LjUxMiwyLjhaXCIvPjxwYXRoIGQ9XCJNMjkuOTcyLDYuMDg3Yy0uMDE5LS4wODgtLjQzMi0uMDQtLjc2Ni4wNzNhMi42LDIuNiwwLDAsMC0xLjA1OS43MjIsMi44LDIuOCwwLDAsMC0uOTE2LDEuODU1LDIuOTcyLDIuOTcyLDAsMCwwLC4yNTgsMS4wNmMuMjIxLjU3Mi40NTUuNzczLjQ0NCwxLjIyNS0uMDA3LjMtLjExNC40ODQtLjA0OC41NDlzLjMxNC0uMS40NjItLjMxM2ExLjgsMS44LDAsMCwwLC4yNTktMS4wMjJjLS4wNDYtLjgxNS0uNi0xLjAxNS0uNjA4LTEuOGExLjg1OCwxLjg1OCwwLDAsMSwuMTI5LS42NzZDMjguNTcsNi41MDksMzAuMDA4LDYuMjUyLDI5Ljk3Miw2LjA4N1pcIiBzdHlsZT1cImZpbGw6I2VhMmQyZVwiLz48cGF0aCBkPVwiTTI3LjkzNCwxMS42MTdhLjA5NC4wOTQsMCwwLDEtLjA2OS0uMDI2Yy0uMDQ2LS4wNDYtLjAzLS4xMjItLjAwNS0uMjM3YTEuNzE4LDEuNzE4LDAsMCwwLC4wNDUtLjMzMSwxLjM3NCwxLjM3NCwwLDAsMC0uMjE0LS43Miw1LDUsMCwwLDEtLjIyOC0uNDk1LDIuOTgsMi45OCwwLDAsMS0uMjU5LTEuMDcsMi44MSwyLjgxLDAsMCwxLC45MjMtMS44NzQsMi42NCwyLjY0LDAsMCwxLDEuMDctLjcyOSwxLjQ4MiwxLjQ4MiwwLDAsMSwuNzY2LS4xQS4wNjUuMDY1LDAsMCwxLDMwLDYuMDgxaDBjLjAxNS4wNy0uMDkyLjEyMS0uMzA2LjIyNGEyLjczLDIuNzMsMCwwLDAtMS41NDIsMS40NjMsMS44MjcsMS44MjcsMCwwLDAtLjEyNy42NjcsMS42NDUsMS42NDUsMCwwLDAsLjI5MS44ODUsMS44ODksMS44ODksMCwwLDEsLjMxNy45MTQsMS44MTQsMS44MTQsMCwwLDEtLjI2NCwxLjAzOS44MDkuODA5LDAsMCwxLS40MjEuMzQyWm0xLjg4OS01LjU0OWEyLjExNywyLjExNywwLDAsMC0uNjA4LjExNywyLjU4OCwyLjU4OCwwLDAsMC0xLjA0OC43MTUsMi43NjQsMi43NjQsMCwwLDAtLjkwOSwxLjgzNywyLjkzNSwyLjkzNSwwLDAsMCwuMjU2LDEuMDUsNC45NTUsNC45NTUsMCwwLDAsLjIyNS40OSwxLjQzMywxLjQzMywwLDAsMSwuMjIuNzQ1LDEuNzY1LDEuNzY1LDAsMCwxLS4wNDcuMzQxYy0uMDE5LjA5MS0uMDM1LjE2My0uMDA5LjE4OGEuMDQ2LjA0NiwwLDAsMCwuMDM4LjAxLjc2OS43NjksMCwwLDAsLjM4Mi0uMzIsMS43OTMsMS43OTMsMCwwLDAsLjI1NC0xLjAwNSwxLjg0NCwxLjg0NCwwLDAsMC0uMzEtLjg5LDEuNzExLDEuNzExLDAsMCwxLS4zLS45MTEsMS44NzcsMS44NzcsMCwwLDEsLjEzLS42ODZBMi43NzYsMi43NzYsMCwwLDEsMjkuNjcsNi4yNTdjLjEyNi0uMDYxLjI4My0uMTM2LjI3Ny0uMTY0bC0uMDA4LS4wMDdBLjI2NC4yNjQsMCwwLDAsMjkuODIzLDYuMDY4WlwiLz5gLFxuXHRcIlBvd2VyUXVlcnlcIjogYDxwYXRoIGQ9XCJNMzAsMjUuNTgzSDI1Ljc1N1YxNS4zNzhhOC4yNzEsOC4yNzEsMCwwLDAtLjgzMi00LjI2MUEzLjA2MSwzLjA2MSwwLDAsMCwyMi4xMTgsOS44YTMuMzgzLDMuMzgzLDAsMCwwLTIuODI2LDEuNjY0LDYuNzkxLDYuNzkxLDAsMCwwLTEuMTYxLDMuOTg3VjI1LjU4M0gxMy44NjlWMTUuMDMxcTAtNS4yMzEtMy42OTQtNS4yMzFhMy4zMzIsMy4zMzIsMCwwLDAtMi44MjYsMS41NzMsNi45MzUsNi45MzUsMCwwLDAtMS4xMDYsNC4wNzhWMjUuNTgzSDJWNi44NTZINi4yNDNWOS44MThoLjA3M2E2LjQ4OCw2LjQ4OCwwLDAsMSw1LjkwNy0zLjQsNS41NjksNS41NjksMCwwLDEsMy4zOTMsMS4wN0E1LjMyOCw1LjMyOCwwLDAsMSwxNy42LDEwLjI5NGE2LjY4Myw2LjY4MywwLDAsMSw2LjIxOC0zLjg3N1EzMCw2LjQxNywzMCwxNC4wNDNaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+YCxcblx0XCJQb3dlclNoZWxsXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIyMy4zMjVcIiB5MT1cIi0xMTguNTQzXCIgeDI9XCI3LjI2XCIgeTI9XCItMTA0LjE5M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtOTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTM5MWZlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNlNmRiZlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjcuMVwiIHkxPVwiLTEwNC4wMDJcIiB4Mj1cIjIzLjAwMVwiIHkyPVwiLTExOC4yOTJcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcG93ZXJzaGVsbDwvdGl0bGU+PHBhdGggZD1cIk0zLjE3NCwyNi41ODlhMS4xNTQsMS4xNTQsMCwwLDEtLjkyOC0uNDIzLDEuMjM0LDEuMjM0LDAsMCwxLS4yMS0xLjA1Mkw2LjIzMyw2Ljc4QTEuOCwxLjgsMCwwLDEsNy45MTQsNS40MUgyOC44MjZhMS4xNTcsMS4xNTcsMCwwLDEsLjkyOC40MjMsMS4yMzUsMS4yMzUsMCwwLDEsLjIxLDEuMDUybC00LjIsMTguMzM1YTEuOCwxLjgsMCwwLDEtMS42ODEsMS4zN0gzLjE3NFpcIiBzdHlsZT1cImZpbGwtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTcuOTE0LDUuNjQ2SDI4LjgyNmEuOTEzLjkxMywwLDAsMSwuOTA4LDEuMTg3bC00LjIsMTguMzM0YTEuNTc1LDEuNTc1LDAsMCwxLTEuNDUxLDEuMTg3SDMuMTc0YS45MTMuOTEzLDAsMCwxLS45MDgtMS4xODdsNC4yLTE4LjMzNEExLjU3NCwxLjU3NCwwLDAsMSw3LjkxNCw1LjY0NlpcIiBzdHlsZT1cImZpbGwtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE2LjA0LDIxLjU0NGg1LjA4NmExLjExOCwxLjExOCwwLDAsMSwwLDIuMjM0SDE2LjA0YTEuMTE4LDEuMTE4LDAsMCwxLDAtMi4yMzRaXCIgc3R5bGU9XCJmaWxsOiMyYzU1OTE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOS4zMzksMTYuNTc4YTEuNzYyLDEuNzYyLDAsMCwxLS41OTEuNkw5LjMwOSwyMy45NTNhMS4yMjQsMS4yMjQsMCwwLDEtMS40MzgtMS45NzdsOC41MTItNi4xNjR2LS4xMjZMMTEuMDM1LDEwYTEuMjI0LDEuMjI0LDAsMCwxLDEuNzgyLTEuNjcybDYuNDE4LDYuODI3QTEuMTY2LDEuMTY2LDAsMCwxLDE5LjMzOSwxNi41NzhaXCIgc3R5bGU9XCJmaWxsOiMyYzU1OTE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOS4xLDE2LjM0MmExLjc0OSwxLjc0OSwwLDAsMS0uNTkuNkw5LjA3NCwyMy43MThhMS4yMjUsMS4yMjUsMCwwLDEtMS40MzktMS45NzdsOC41MTMtNi4xNjRWMTUuNDVMMTAuOCw5Ljc2MWExLjIyNCwxLjIyNCwwLDAsMSwxLjc4My0xLjY3MkwxOSwxNC45MTZBMS4xNjIsMS4xNjIsMCwwLDEsMTkuMSwxNi4zNDJaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNS45LDIxLjQxMmg1LjA4NmExLjA1OSwxLjA1OSwwLDEsMSwwLDIuMTE4SDE1LjlhMS4wNTksMS4wNTksMCwxLDEsMC0yLjExOFpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLCAgXG5cdFwiUHJvY2Vzc2luZ1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIjNcIiB4Mj1cIjE2XCIgeTI9XCIyOVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzFjNGM3MFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwYzJiNDJcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wcm9jZXNzaW5nbGFuZzwvdGl0bGU+PHBhdGggZD1cIk0xNS45MjIsMTkuOTYyYTEzLDEzLDAsMCwxLTEuNjQ3LS4wNzd2NS41NTJhMjcuNzYsMjcuNzYsMCwwLDEsMy4zMzIuNDYxVjI5SDUuOTY4VjI1LjlBMjcuOTg4LDI3Ljk4OCwwLDAsMSw5LjMsMjUuNDM4VjYuNzE1YTI4LjIxNSwyOC4yMTUsMCwwLDEtMy4zMzEtLjQ2di0zLjFIOC45NTVDMTAuMTgsMy4xNTMsMTMuNTQ5LDMsMTYuMjMsM2M2LjMxOCwwLDkuOCwyLjk0OCw5LjgsOEMyNi4wMzEsMTYuMDE4LDIyLjIsMTkuOTYyLDE1LjkyMiwxOS45NjJaTTE2LDcuMDU4Yy0uNjEzLDAtMS4xNDksMC0xLjcyMy4wMzh2OC42MTVhOS42OTQsOS42OTQsMCwwLDAsMS40NTUuMTE1YzMuMDI1LS4wMzgsNS4xMy0xLjcyMyw1LjEzLTQuNTE5QzIwLjg2Miw4LjcsMTkuNDA3LDcuMDU4LDE2LDcuMDU4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiUHJvbG9nXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCIxMzQxLjI1XCIgY3k9XCItMzM5Ni44NjZcIiByPVwiMTguMjk5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEzMjcuMDc3IDM0MDUuOTM1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE4MVwiIHN0b3AtY29sb3I9XCIjZmJmYmZiXCIvPjxzdG9wIG9mZnNldD1cIjAuMzY1XCIgc3RvcC1jb2xvcj1cIiNlZmVmZjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NTJcIiBzdG9wLWNvbG9yPVwiI2RhZGJkY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjczOFwiIHN0b3AtY29sb3I9XCIjYmViZmMyXCIvPjxzdG9wIG9mZnNldD1cIjAuODI0XCIgc3RvcC1jb2xvcj1cIiNhZWIwYjNcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJiXCIgY3g9XCI2LjY3OFwiIGN5PVwiODQuNzRcIiByPVwiMTUuNTU0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEuODg0IC04Ni4xNTQpIHNjYWxlKDEuMDcyIDEuMTY2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZhZmRmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjA3OVwiIHN0b3AtY29sb3I9XCIjZWVmNWZhXCIvPjxzdG9wIG9mZnNldD1cIjAuMjJcIiBzdG9wLWNvbG9yPVwiI2NmZGZlY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQwN1wiIHN0b3AtY29sb3I9XCIjOWRiYmQ1XCIvPjxzdG9wIG9mZnNldD1cIjAuNjMxXCIgc3RvcC1jb2xvcj1cIiM1ODhhYjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NDVcIiBzdG9wLWNvbG9yPVwiIzMyNmZhNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjc5OVwiIHN0b3AtY29sb3I9XCIjMmI2Njk4XCIvPjxzdG9wIG9mZnNldD1cIjAuODk3XCIgc3RvcC1jb2xvcj1cIiMxNzRlNzhcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTRcIiBzdG9wLWNvbG9yPVwiIzAwMzE1MlwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImNcIiBjeD1cIjExLjI0MVwiIGN5PVwiLTkuODk3XCIgcj1cIjE2LjU5NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMjIuNjMxKSBzY2FsZSgxIDEuMDYyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDU0MFwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2N1wiIHN0b3AtY29sb3I9XCIjZWMxYzI0XCIvPjxzdG9wIG9mZnNldD1cIjAuOTk0XCIgc3RvcC1jb2xvcj1cIiM3NjAwMDBcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJkXCIgY3g9XCIxMi4yODZcIiBjeT1cIjI2LjEyN1wiIHI9XCIyLjA4M1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2RkZGZlMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjE3NFwiIHN0b3AtY29sb3I9XCIjZDlkYmRjXCIvPjxzdG9wIG9mZnNldD1cIjAuMzUxXCIgc3RvcC1jb2xvcj1cIiNjZGNmZDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MzFcIiBzdG9wLWNvbG9yPVwiI2I4YmFiYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxMVwiIHN0b3AtY29sb3I9XCIjOWM5ZTlmXCIvPjxzdG9wIG9mZnNldD1cIjAuODkxXCIgc3RvcC1jb2xvcj1cIiM3ODc5N2JcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNWU1ZjYxXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiZVwiIGN4PVwiMTkuMDY0XCIgY3k9XCIyNi4xMjdcIiByPVwiMi4wODNcIiB4bGluazpocmVmPVwiI2RcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwiZlwiIGN4PVwiMTUuNDM0XCIgY3k9XCIxNi4xOTFcIiByPVwiMi42ODdcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNDYxKVwiIHhsaW5rOmhyZWY9XCIjZFwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wcm9sb2c8L3RpdGxlPjxnIHN0eWxlPVwiaXNvbGF0aW9uOmlzb2xhdGVcIj48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC02LjYwMiAxNC45Mikgcm90YXRlKC00Mi4yNjUpXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xOS45MzgsNi4zMDlhOS43ODUsOS43ODUsMCwwLDAtNi41LTIuMzM5QzguNTY0LDMuOTcsMy43NzQsNy43LDMuNDA1LDE0Ljk2MWMtLjQsNy44LDQuNzUsMTIuODYyLDEyLDEyLjg2MiwxMC43MzMsMCwxNi42NzItOS43OCwxMC4wMjctMjAuMzg4LDQuNjcxLDEwLjYtLjUyNywxNy4yNzktNy4yMzYsMTcuMjc5LTUuNDQxLDAtOS42MS0zLjY1MS05LjYxLTEwLjM0NUM4LjU4Miw0LjcwOSwxNS44MjMsNC4wMzksMTkuOTM4LDYuMzA5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjIuNywxMC40MTVjLS4yOTMtLjk0LS42NDUtMi43ODguNjM0LTMuODZhMy43MjksMy43MjksMCwwLDAtMy44NDQsMS41MzRBOS4xNjUsOS4xNjUsMCwwLDAsMTIsOC4xLDMuNzI5LDMuNzI5LDAsMCwwLDguMTUyLDYuNTU1YzEuMzA5LDEuMS45MSwzLjAwNS42MTQsMy45MjNBMTAuNTE3LDEwLjUxNywwLDAsMCw2LjEsMTcuNTI0YzAsMi4xNzQsMS40LDQuNjQ1LDEuNjc1LDcuOTU1bDEuNzY4LTEuNTMyYTExLjc0MywxMS43NDMsMCwwLDAsNi4yMTIsMS40MzMsMTEuNzQxLDExLjc0MSwwLDAsMCw2LjIxMi0xLjQzM2wxLjc2OSwxLjUzMmMuMjgtMy4zMSwxLjY3NS01Ljc4MSwxLjY3NS03Ljk1NUExMC41MTIsMTAuNTEyLDAsMCwwLDIyLjcsMTAuNDE1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTAuNzIyLDI3Ljg2N2ExLjYyMSwxLjYyMSwwLDEsMSwzLjI0LDBjMCwuMDE4LDAsLjAzNSwwLC4wNTNhMi4yMzQsMi4yMzQsMCwxLDAtMy4yMjguMTI2QzEwLjcyNSwyNy45ODcsMTAuNzIyLDI3LjkyNywxMC43MjIsMjcuODY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMjAuNjI5LDI3Ljg2N2ExLjYyMSwxLjYyMSwwLDEsMC0zLjI0LDBjMCwuMDE4LDAsLjAzNSwwLC4wNTNhMi4yMzQsMi4yMzQsMCwxLDEsMy4yMjguMTI2QTEuNjc4LDEuNjc4LDAsMCwwLDIwLjYyOSwyNy44NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNTM7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj48cGF0aCBkPVwiTTguMzQ2LDE4LjRjLS4xMzIuNjY3LS45NzEuODc3LS45NzEuODc3QTEuMzU5LDEuMzU5LDAsMCwxLDYuODA5LDE4LjFhMi45MjksMi45MjksMCwwLDAsLjQ0MywxLjc5M0EyLjkyNywyLjkyNywwLDAsMCw4LjM0NiwxOC40WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTAuMDA4LDE4LjczN2MtLjEzMi42NjctLjk3Mi44NzctLjk3Mi44NzdhMS4zNiwxLjM2LDAsMCwxLS41NjYtMS4xODIsMi45MjksMi45MjksMCwwLDAsLjQ0NCwxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMCwxMC4wMDgsMTguNzM3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNOC44MzMsMjAuMjQ5Yy0uMTMyLjY2Ny0uOTcxLjg3Ny0uOTcxLjg3N0ExLjM1OSwxLjM1OSwwLDAsMSw3LjMsMTkuOTQ0YTIuOTI5LDIuOTI5LDAsMCwwLC40NDMsMS43OTNBMi45MjUsMi45MjUsMCwwLDAsOC44MzMsMjAuMjQ5WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTAuNSwyMC41ODNjLS4xMzIuNjY3LS45NzEuODc3LS45NzEuODc3YTEuMzYsMS4zNiwwLDAsMS0uNTY2LTEuMTgyQTIuOTI5LDIuOTI5LDAsMCwwLDkuNCwyMi4wNzIsMi45MjcsMi45MjcsMCwwLDAsMTAuNSwyMC41ODNaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk05LjMyOCwyMi4xMjFjLS4xMzIuNjY3LS45NzIuODc3LS45NzIuODc3YTEuMzYsMS4zNiwwLDAsMS0uNTY1LTEuMTgyLDIuOTI5LDIuOTI5LDAsMCwwLC40NDMsMS43OTNBMi45MjYsMi45MjYsMCwwLDAsOS4zMjgsMjIuMTIxWlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTEuNjY0LDE5LjA3Yy0uMTMyLjY2Ny0uOTcyLjg3Ny0uOTcyLjg3N2ExLjM1OSwxLjM1OSwwLDAsMS0uNTY1LTEuMTgyLDIuOTMsMi45MywwLDAsMCwuNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwwLDExLjY2NCwxOS4wN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48L2c+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNTM7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj48cGF0aCBkPVwiTTIzLjE1NywxOC40Yy4xMzIuNjY3Ljk3MS44NzcuOTcxLjg3N2ExLjM1OSwxLjM1OSwwLDAsMCwuNTY2LTEuMTgyLDIuOTMsMi45MywwLDAsMS0uNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwxLDIzLjE1NywxOC40WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjEuNDk1LDE4LjczN2MuMTMyLjY2Ny45NzIuODc3Ljk3Mi44NzdhMS4zNiwxLjM2LDAsMCwwLC41NjUtMS4xODIsMi45MzEsMi45MzEsMCwwLDEtLjQ0NCwxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMSwyMS40OTUsMTguNzM3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjIuNjY5LDIwLjI0OWMuMTMyLjY2Ny45NzEuODc3Ljk3MS44NzdhMS4zNiwxLjM2LDAsMCwwLC41NjYtMS4xODIsMi45MjksMi45MjksMCwwLDEtLjQ0MywxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMSwyMi42NjksMjAuMjQ5WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjEuMDA4LDIwLjU4M2MuMTMyLjY2Ny45NzEuODc3Ljk3MS44NzdhMS4zNTksMS4zNTksMCwwLDAsLjU2NS0xLjE4MiwyLjkyOCwyLjkyOCwwLDAsMS0uNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwxLDIxLjAwOCwyMC41ODNaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMi4xNzUsMjIuMTIxYy4xMzIuNjY3Ljk3Mi44NzcuOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDAsLjU2NS0xLjE4MiwyLjkyOCwyLjkyOCwwLDAsMS0uNDQ0LDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwxLDIyLjE3NSwyMi4xMjFaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xOS44MzgsMTkuMDdjLjEzMi42NjcuOTcyLjg3Ny45NzIuODc3YTEuMzU5LDEuMzU5LDAsMCwwLC41NjUtMS4xODIsMi45MjgsMi45MjgsMCwwLDEtLjQ0MywxLjc5M0EyLjkyOCwyLjkyOCwwLDAsMSwxOS44MzgsMTkuMDdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PC9nPjxjaXJjbGUgY3g9XCIxMS4zMzlcIiBjeT1cIjE0LjA3NFwiIHI9XCIzLjgxNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIxMi4xM1wiIGN5PVwiMTQuNDQ2XCIgcj1cIjEuODYxXCIgc3R5bGU9XCJmaWxsOiNiZGJmYzFcIi8+PGNpcmNsZSBjeD1cIjEyLjEzXCIgY3k9XCIxNC40NDZcIiByPVwiMS4xOTFcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48Y2lyY2xlIGN4PVwiMTEuNjAzXCIgY3k9XCIxNC4wMjdcIiByPVwiMC4zNTdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMjAuMTEyXCIgY3k9XCIxNC4wNzRcIiByPVwiMy44MTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMjAuOTAzXCIgY3k9XCIxNC40NDZcIiByPVwiMS44NjFcIiBzdHlsZT1cImZpbGw6I2JkYmZjMVwiLz48Y2lyY2xlIGN4PVwiMjAuOTAzXCIgY3k9XCIxNC40NDZcIiByPVwiMS4xOTFcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48Y2lyY2xlIGN4PVwiMjAuMzc1XCIgY3k9XCIxNC4wMjdcIiByPVwiMC4zNTdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE1LjcwNiwyMS41MmMwLTEuNDEyLDIuMTU3LTMuNDEzLDIuMTU3LTQuODg3YTIuMTU3LDIuMTU3LDAsMCwwLTQuMzEzLDBDMTMuNTUsMTguMTA3LDE1LjcwNiwyMC4xMDgsMTUuNzA2LDIxLjUyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjwvZz5gLFxuXHRcIlByb3RvY29sIEJ1ZmZlcnNcIjogYDxwb2x5Z29uIHBvaW50cz1cIjE1Ljk5NiAzLjIyIDI2Ljk2NiA5LjcgMjYuOTU0IDIyLjMgMTYgMjguNzggNS4wMzggMjIuNDA4IDUuMDM0IDkuNjI4IDE1Ljk5NiAzLjIyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNiwyLDMuOTg3LDkuMDJsMCwxNEwxNiwzMGwxMi03LjEuMDEzLTEzLjhaTTI2Ljk1NCwyMi4zLDE2LDI4Ljc4LDUuMDM4LDIyLjQwOGwwLTEyLjc4TDE2LDMuMjIsMjYuOTY2LDkuN1pcIiBzdHlsZT1cImZpbGw6IzE3MWMxZVwiLz48cG9seWdvbiBwb2ludHM9XCIyNS41NjkgMTMuNjU0IDE5Ljk0NiAxNi45NjQgMTkuOTQzIDI0Ljg5IDI1LjU5IDIxLjU2NSAyNS41NjkgMTMuNjU0XCIgc3R5bGU9XCJmaWxsOiMxZWE4ZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjgyIDEyLjMwMyAyNS41NjkgMTMuNjU0IDE5Ljk0NiAxNi45NjQgMTkuOTQzIDI0Ljg5IDE3LjMyNyAyMy4zNyAxNy4zNDggMTUuODc1IDIzLjI4MiAxMi4zMDNcIiBzdHlsZT1cImZpbGw6IzUwYmZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMi41MTIgMTAuMzUgMjIuNTE0IDExLjgxNiAxNi40MTEgMTUuNDk4IDE2LjQxOCAyMy41OTcgMTQuOTk4IDI0LjQzMSAxNC45OTQgMTQuODU2IDIyLjUxMiAxMC4zNVwiIHN0eWxlPVwiZmlsbDojOTdmZjI3XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjAwOCA4Ljg3MSAyMi41MTIgMTAuMzUgMTQuOTk0IDE0Ljg1NiAxNC45OTggMjQuNDMxIDEyLjE5NCAyMi44MDEgMTIuMTg5IDEzLjQxMyAyMC4wMDggOC44NzFcIiBzdHlsZT1cImZpbGw6I2MyZmY3MlwiLz48cG9seWdvbiBwb2ludHM9XCIxOS4yMjYgNi42MDYgMTkuMjI2IDguMzc0IDExLjIxIDEzLjA3NCAxMS4yMSAyMy4xNzIgOS44MDggMjMuOTg4IDkuODM1IDEyLjI3NyAxOS4yMjYgNi42MDZcIiBzdHlsZT1cImZpbGw6I2ZmMjc0YlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi4xNiA0Ljc4NCA2LjUzIDEwLjM5NCA2LjUyOSAyMi4wNzEgOS44MjcgMjMuOTg4IDkuODM1IDEyLjI3NyAxOS4yMzUgNi42MDYgMTYuMTYgNC43ODRcIiBzdHlsZT1cImZpbGw6I2ZmNWM3N1wiLz5gLFxuXHRcIlB1Z1wiOiBgPHBhdGggZD1cIk0yNS41MTQsMTIuODQ2Yy0uMDUyLS45MzguMjA5LTEuODI1LS4yMDktMi41NTQtMS4wNDMtMS44MjUtMy42NDktMi44NjctOC44NjMtMi44NjdWNy4zNzJoMHYuMDUyYy01LjczNSwwLTguMTg1LDEuMDQzLTkuMjI3LDIuODY3YTUuNiw1LjYsMCwwLDAtLjQ2OSwyLjU1NCw5LjU0Niw5LjU0NiwwLDAsMC0uMjYxLDIuNDVjLjE1NiwxLjE0Ny4yNjEsMi4yOTQuNDE3LDMuMzM2LjE1Ni44ODYsMS40MDgsMS41NjQsMS41NjQsMi40LjMxMywyLjI0MiwyLjI5NCwzLjI4NCw4LjAyOCwzLjI4NHYuMjYxaC0uMXYtLjI2MWM1LjIxMywwLDcuNC0xLjA0Myw3LjcxNi0zLjI4NC4xLS44MzQsMS4xNDctMS41MTIsMS4zLTIuNC4xNTYtMS4wNDMuMjA5LTIuMTkuMzY1LTMuMzM2QTExLjc3NCwxMS43NzQsMCwwLDAsMjUuNTE0LDEyLjg0NlpcIiBzdHlsZT1cImZpbGw6I2VmY2NhM1wiLz48cGF0aCBkPVwiTTE2LjE4MiwxMy42OGEzLjI0MSwzLjI0MSwwLDAsMSwyLjE5LDEuMTQ3Yy43My42MjYsMS45MjksMS4wNDMsMi40NSwxLjYxNmE0LjcxNSw0LjcxNSwwLDAsMSwxLjQwOCwxLjk4MSw4LjksOC45LDAsMCwxLC4zMTMsMi4yNDJjMCwuMjYxLjE1Ni4yMDkuNTczLDBhOS4wMiw5LjAyLDAsMCwwLDIuMTktMS44NzdjLS4xNTYuODg2LTEuMjUxLDEuNjY4LTEuMzU1LDIuNS0uMzEzLDIuMjQyLTIuNSwzLjMzNi03Ljg3MiwzLjMzNmguMzEzXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xOS41MTksMTEuOTA4Yy4yMDkuNjc4Ljg4NiwzLjAyNC0uNDY5LDIuMjQyYTIuNTU3LDIuNTU3LDAsMCwxLC45MzgsMS41NjQsMS44MzEsMS44MzEsMCwwLDAsMS4zLDEuNDA4LDMuNDc5LDMuNDc5LDAsMCwwLDIuNTU0LS42MjYsMi45NTYsMi45NTYsMCwwLDAsLjY3OC0zLjI4NCwyLjQzLDIuNDMsMCwwLDAtMi4xMzctMS42MTZDMjEuNCwxMS4zMzQsMTkuMzEsMTEuMTI2LDE5LjUxOSwxMS45MDhaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PGNpcmNsZSBjeD1cIjIyLjE3OFwiIGN5PVwiMTQuNDFcIiByPVwiMS45MjlcIi8+PGNpcmNsZSBjeD1cIjIxLjY1NlwiIGN5PVwiMTMuNTI0XCIgcj1cIjAuNTIxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS4yMDYsMTQuMzA2YTE3LjY4LDE3LjY4LDAsMCwxLDIuNzExLDIuMzQ2Yy45MzgsMS4yLjkzOCwxLjQwOC45MzgsMS40MDhsLS42NzguMzEzYTcuMSw3LjEsMCwwLDAtMi4xMzctMi41Yy0xLjItLjY3OC0xLjM1NS0xLjI1MS0xLjM1NS0xLjI1MVpcIiBzdHlsZT1cImZpbGw6I2VmY2NhM1wiLz48cGF0aCBkPVwiTTE2LjIzNSwxMy42OGEzLjYwNSwzLjYwNSwwLDAsMC0yLjM0NiwxLjE0N2MtLjczLjYyNi0yLjAzMywxLjA0My0yLjUsMS42MTZhNC44MDYsNC44MDYsMCwwLDAtMS40NiwxLjk4MSw4LjksOC45LDAsMCwwLS4zMTMsMi4yNDJjMCwuMjYxLjA1Mi4zMTMtLjYyNiwwQTcuOTcyLDcuOTcyLDAsMCwxLDYuOCwxOC43ODljLjE1Ni44ODYsMS4yNTEsMS42NjgsMS4zNTUsMi41LjMxMywyLjE5LDIuNSwzLjI4NCw3Ljg3MiwzLjI4NGguMzY1XCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMS4yMzksMTcuMjc3YTYuNTUyLDYuNTUyLDAsMCwwLTUuMTA5LTIuNjA3aDBhNi42MzgsNi42MzgsMCwwLDAtNS4xMDksMi42MDcsMy44NjEsMy44NjEsMCwwLDAtMS4wNDMsMy4xOGMwLDQuNjQsMS42MTYsMy4yMzIsMi43MTEsMy44MDZhNy40NjYsNy40NjYsMCwwLDAsMy4zODkuMzEzaDBhNy40LDcuNCwwLDAsMCwzLjM4OS0uMzEzYzEuMDk1LS41NzMsMi43MTEuODM0LDIuNzExLTMuODA2QTMuMzg2LDMuMzg2LDAsMCwwLDIxLjIzOSwxNy4yNzdaXCIgc3R5bGU9XCJmaWxsOiM1NjMzMmJcIi8+PHBhdGggZD1cIk0xNi4wMjYsMTUuOTc0YTkuNTQ5LDkuNTQ5LDAsMCwxLS40NjksMi41NTRsLjU3My0uMTU2WlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDE1Ljk3NGE5LjU0OSw5LjU0OSwwLDAsMCwuNDY5LDIuNTU0bC0uNTczLS4xNTZaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xNC4zNTgsMTUuNDUzYy0uMjA5LS41MjEuNTczLTEuMzU1LDEuODI1LTEuMzU1czIuMDMzLjgzNCwxLjgyNSwxLjM1NS0xLjA0My42NzgtMS44MjUuNjc4QzE1LjM0OCwxNi4xMywxNC41NjYsMTUuOTc0LDE0LjM1OCwxNS40NTNaXCIgc3R5bGU9XCJmaWxsOiM1NjMzMmJcIi8+PHBhdGggZD1cIk0xNi4xODIsMTUuOTc0YzAtLjEuNzMtLjEsMS4xNDctLjM2NSwwLDAtLjgzNC4yNjEtLjk5MS4xNTZhLjY1Ni42NTYsMCwwLDEtLjIwOS0uMzY1LjY1Ni42NTYsMCwwLDEtLjIwOS4zNjVjLS4xNTYuMS0xLjA5NS0uMTU2LTEuMDk1LS4xNTZhOC4wNTgsOC4wNTgsMCwwLDEsMS4yLjM2NXYuNDE3YTEwLjQ5MiwxMC40OTIsMCwwLDAsLjEsMi4wMzNjLjE1Ni4yMDkuMS0xLjQ2LjEtMi4wMzNBMS4zLDEuMywwLDAsMSwxNi4xODIsMTUuOTc0WlwiLz48cGF0aCBkPVwiTTE2LjE4MiwxOC45NDVhMy4zNSwzLjM1LDAsMCwxLDEuNjE2LjY3OCwzLjEyMSwzLjEyMSwwLDAsMC0xLjYxNi0xLjA5NSwzLjAzNiwzLjAzNiwwLDAsMC0xLjgyNSwxLjJBMy4zMTIsMy4zMTIsMCwwLDEsMTYuMTgyLDE4Ljk0NVpcIiBzdHlsZT1cImZpbGw6IzdmNGE0MVwiLz48cGF0aCBkPVwiTTE2LjA3OCwyMi44YTguOSw4LjksMCwwLDEtMi40LS40NjljLS4xNTYtLjA1Mi0uMzEzLjA1Mi0uNDY5LDBhNi4xNzIsNi4xNzIsMCwwLDEtMy4xOC0yLjEzN3YuMjA5YzAsNC42NCwxLjYxNiwzLjIzMiwyLjcxMSwzLjgwNmE3LjQ2Niw3LjQ2NiwwLDAsMCwzLjM4OS4zMTNoMGE3LjQsNy40LDAsMCwwLDMuMzg5LS4zMTNjMS4wOTUtLjU3MywyLjcxMS44MzQsMi43MTEtMy44MDZ2LS40NjlBNS45MTQsNS45MTQsMCwwLDEsMTksMjIuMjgyYy0uMTU2LjA1Mi0uNDE3LS4wNTItLjU3My0uMDUyQTcuMDQ1LDcuMDQ1LDAsMCwxLDE2LjA3OCwyMi44WlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTMuOTQxLDIwLjNzLS41NzMsMS42NjgtLjE1NiwyLjRsLS41MjEtLjIwOUExNS40MzMsMTUuNDMzLDAsMCwxLDEzLjk0MSwyMC4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTguMzIsMjAuM3MuNTczLDEuNjY4LjE1NiwyLjRMMTksMjIuNDkxQTEwLjYyOSwxMC42MjksMCwwLDAsMTguMzIsMjAuM1pcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTEyLjU4NSwxMS45MDhjLS4yMDkuNjc4LS44ODYsMy4wMjQuNDY5LDIuMjQyYTIuNTU3LDIuNTU3LDAsMCwwLS45MzgsMS41NjQsMS44MzEsMS44MzEsMCwwLDEtMS4zLDEuNDA4QTMuNDc5LDMuNDc5LDAsMCwxLDguMjU4LDE2LjVhMi45NTYsMi45NTYsMCwwLDEtLjY3OC0zLjI4NCwyLjQzLDIuNDMsMCwwLDEsMi4xMzctMS42MTZDMTAuNzA5LDExLjMzNCwxMi43OTQsMTEuMTI2LDEyLjU4NSwxMS45MDhaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xNi4xMywxOC41MjhhMy4zOTMsMy4zOTMsMCwwLDEsMi40NSwyLjg2N3YtLjFhMy4wNTEsMy4wNTEsMCwwLDAtMi40NS0yLjkxOSwzLDMsMCwwLDAtMi40NSwyLjkxOXYuMUEzLjQ2MywzLjQ2MywwLDAsMSwxNi4xMywxOC41MjhaXCIvPjxlbGxpcHNlIGN4PVwiMTYuNTQ2XCIgY3k9XCIxNS4xMzhcIiByeD1cIjAuMTU2XCIgcnk9XCIwLjMxM1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy4yNTYgNC42MTEpIHJvdGF0ZSgtMTQuNDYpXCIgc3R5bGU9XCJmaWxsOiMzMzE3MTJcIi8+PGVsbGlwc2UgY3g9XCIxNS42MDlcIiBjeT1cIjE1LjE0NlwiIHJ4PVwiMC4zMTNcIiByeT1cIjAuMTU2XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjQ4MiAyNS41NjcpIHJvdGF0ZSgtNzIuNzY1KVwiIHN0eWxlPVwiZmlsbDojMzMxNzEyXCIvPjxjaXJjbGUgY3g9XCIxMC4wMzFcIiBjeT1cIjE0LjQxXCIgcj1cIjEuOTI5XCIvPjxjaXJjbGUgY3g9XCIxMC41NTJcIiBjeT1cIjEzLjUyNFwiIHI9XCIwLjUyMVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTYuNywxNC40MXMtLjUyMS4yMDktLjYyNi4yNjFhMi40OTIsMi40OTIsMCwwLDEtLjYyNi0uMjYxSDE2LjdaXCIgc3R5bGU9XCJmaWxsOiM3ZjRhNDFcIi8+PHBhdGggZD1cIk0xMi45LDE0LjMwNmExNy42OCwxNy42OCwwLDAsMC0yLjcxMSwyLjM0NmMtLjkzOCwxLjItLjkzOCwxLjQwOC0uOTM4LDEuNDA4bC42NzguMzEzYTcuMSw3LjEsMCwwLDEsMi4xMzctMi41YzEuMi0uNjc4LDEuMzU1LTEuMjUxLDEuMzU1LTEuMjUxWlwiIHN0eWxlPVwiZmlsbDojZWZjY2EzXCIvPjxwYXRoIGQ9XCJNOS4wOTIsMTAuODEzYTQuNTE5LDQuNTE5LDAsMCwxLTEuOTI5LDIuMjk0QTIuMTksMi4xOSwwLDAsMCw5LjA5MiwxMC44MTNaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMi45MDgsMTAuODEzYTQuNTE5LDQuNTE5LDAsMCwwLDEuOTI5LDIuMjk0QTIuMTksMi4xOSwwLDAsMSwyMi45MDgsMTAuODEzWlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTkuMzEsMTMuODM2YTUuMTYsNS4xNiwwLDAsMC0zLjA3Ni0xLjQwOGguMTU2YTMuODUyLDMuODUyLDAsMCwwLTMuMDI0LDEuNDA4LDQuODMyLDQuODMyLDAsMCwxLDMuMDI0LTEuMDQzaDBBNS43ODUsNS43ODUsMCwwLDEsMTkuMzEsMTMuODM2WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTcuNzQ2LDEwLjk2OWEyLjQ1NSwyLjQ1NSwwLDAsMC0xLjU2NC0uOTM4aC4xNTZhMS43ODYsMS43ODYsMCwwLDAtMS41MTIuOTM4LDIuMTg3LDIuMTg3LDAsMCwxLDEuNTEyLS42NzhoMEExLjg5NCwxLjg5NCwwLDAsMSwxNy43NDYsMTAuOTY5WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTAuMDMxLDE3Ljc0NmEyLjU0NSwyLjU0NSwwLDAsMS0xLjc3My4yMDlIOC4wNWEzLjY4LDMuNjgsMCwwLDEtLjg4Ni0xLjUxMkEyLjI3LDIuMjcsMCwwLDAsMTAuMDMxLDE3Ljc0NlpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIyLjEyNiwxNy43NDZhMi41NDUsMi41NDUsMCwwLDAsMS43NzMuMjA5SDIzLjY5YTEuNzQ5LDEuNzQ5LDAsMCwwLDEuMDk1LTEuNTEyQTIuMDIsMi4wMiwwLDAsMSwyMi4xMjYsMTcuNzQ2WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTEuMjMsMTAuNzA5YTQuNzUsNC43NSwwLDAsMSwyLjI0Mi4xYy45MzguMzEzLjIwOSwxLjU2NC4zNjUsMS42MTZhMi44NjUsMi44NjUsMCwwLDEsMi4yNDItLjczYzEuNzczLjEsMS45ODEuODg2LDIuMjQyLjczLjI2MS0uMS0uMjYxLTIuMTksMi40NS0xLjcyLDAsMC0yLjc2My0uNzMtMi42NTksMS4yNTFhMy42NzUsMy42NzUsMCwwLDAtMy44NTgtLjFTMTQuODI3LDkuOTI3LDExLjIzLDEwLjcwOVpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTEwLjUsOHMtMi40LDIuOTcyLTIuNzExLDQuMTE4Yy0uMzY1LDEuMTQ3LS42MjYsNS45NDMtLjkzOCw2LjYyMUw1Ljc1NiwxNC4wNDVsMi4wMzMtNC45WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjEuNjU2LDhzMi40LDIuOTcyLDIuNzExLDQuMTE4Yy4zNjUsMS4xNDcuNjI2LDUuOTQzLjkzOCw2LjYyMUwyNi40LDE0LjA0NWwtMi4wMzMtNC45WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjEuNSw4YTExLjYxNywxMS42MTcsMCwwLDEsMy4yODQsNC41ODhjLjczLDIuNDUuNDE3LDUuNDc0Ljk5MSw1LjgzOS44MzQuNTIxLDEuNzItMi42MDcsMi4wMzMtMi45MTkuNDY5LS41MjEsMi4wODUtMS44NzcsMi4xOS0yLjEzN3MtMy4yMzItMy45MS00Ljc0NC00LjY0QzIzLjU4NSw3Ljg5MywyMS40LDcuNzg5LDIxLjUsOFpcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTIzLjY5LDkuM2ExNS4zNzksMTUuMzc5LDAsMCwxLDIuOTcyLDguNjU0bDEuMi0yLjQ1QTE2LjU2NCwxNi41NjQsMCwwLDAsMjMuNjksOS4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTAuNSw4YTExLjYxNywxMS42MTcsMCwwLDAtMy4yODQsNC41ODhjLS43MywyLjQ1LS40MTcsNS40NzQtLjk5MSw1LjgzOS0uODM0LjUyMS0xLjcyLTIuNjA3LTIuMDMzLTIuOTE5LS40NjktLjUyMS0yLjA4NS0xLjg3Ny0yLjE5LTIuMTM3czMuMjMyLTMuOTEsNC43NDQtNC42NEM4LjQxNSw3Ljg5MywxMC42LDcuNzg5LDEwLjUsOFpcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTguMzEsOS4zYTE1LjM3OSwxNS4zNzksMCwwLDAtMi45NzIsOC42NTRMNC4xNCwxNS41QTE2LjU2NCwxNi41NjQsMCwwLDEsOC4zMSw5LjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk02LjY0MiwxOC4wMDdhNC4xMTgsNC4xMTgsMCwwLDAsLjU3MywxLjU2NGMuMzY1LjM2NS4xLS4zMTMuMS0uMzEzcy0uMzY1LS4yMDktLjMxMy0xLjcyUzYuNjQyLDE4LjAwNyw2LjY0MiwxOC4wMDdaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yNS40MSwxOC4wMDdhNC4xMTgsNC4xMTgsMCwwLDEtLjU3MywxLjU2NGMtLjM2NS4zNjUtLjEtLjMxMy0uMS0uMzEzcy4zNjUtLjIwOS4zMTMtMS43MkMyNC45OTMsMTYuMDc4LDI1LjQxLDE4LjAwNywyNS40MSwxOC4wMDdaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PGNpcmNsZSBjeD1cIjEzLjg4OVwiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjEyLjg0NlwiIGN5PVwiMTguMjE2XCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjEyLjUzM1wiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjE4LjE2NFwiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjE5LjE1NFwiIGN5PVwiMTguMjE2XCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjE5LjQ2N1wiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+YCxcblx0XCJQdXBwZXRcIjogYDxwYXRoIGQ9XCJNMjUuMDg5LDExLjgyMkgxOC43TDE1LjI2Nyw4LjM4OFYySDYuOTExdjguMzU3SDEzLjNsMy40MjIsMy40MjJoMHY0LjQzMWgwbC0zLjQzNCwzLjQzNEg2LjkxMVYzMGg4LjM1N1YyMy42MTJoMEwxOC43LDIwLjE3OGg2LjM4OFpNOS43LDQuNzg2aDIuNzg2VjcuNTcxSDkuN1pNMTIuNDgyLDI3LjJIOS43VjI0LjQxN2gyLjc4NlpcIiBzdHlsZT1cImZpbGw6I2ZmYWUxYVwiLz5gLFxuXHRcIlB1cmVTY3JpcHRcIjogYDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHN0eWxlPVwiZmlsbDojMTYxNzFiXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjg5MiAyMi4xMzYgMTkuNzA2IDIwLjA5NSAxMC4xMDcgMjAuMDk1IDEyLjI5MyAyMi4xMzYgMjEuODkyIDIyLjEzNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjEyLjI5MyAxNC45OCAxMC4xMDcgMTcuMDIxIDE5LjcwNiAxNy4wMjEgMjEuODkyIDE0Ljk4IDEyLjI5MyAxNC45OFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjg5MSAxMS45MDYgMTkuNzA2IDkuODY0IDEwLjEwNyA5Ljg2NCAxMi4yOTMgMTEuOTA2IDIxLjg5MSAxMS45MDZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTkuMSwxMy45MjYsNy42NTIsMTIuNDgyLDIuMywxNy44MzZhMS4wMjMsMS4wMjMsMCwwLDAsMCwxLjQ0M2w1LjM1NCw1LjM1NEw5LjEsMjMuMTksNC40NjQsMTguNTU4WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjkuNywxMi43MjEsMjQuMzQ4LDcuMzY2LDIyLjksOC44MWw0LjYzLDQuNjMyTDIyLjksMTguMDc1bDEuNDQzLDEuNDQzTDI5LjcsMTQuMTY1YTEuMDIxLDEuMDIxLDAsMCwwLDAtMS40NDRaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJQeXRob25cIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzMuMjY4XCIgeTE9XCItMjAyLjkxXCIgeDI9XCItMTMzLjE5OFwiIHkyPVwiLTIwMi44NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI1MjQzLjA2MSAzODUxOS4xNykgc2NhbGUoMTg5LjM4IDE4OS44MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMzODdlYjhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzY2OTk0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTEzMy41NzVcIiB5MT1cIi0yMDMuMjAzXCIgeDI9XCItMTMzLjQ5NVwiIHkyPVwiLTIwMy4xMzNcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNTMwOS4wNjEgMzg1ODMuNDIpIHNjYWxlKDE4OS4zOCAxODkuODEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZlMDUyXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYzMzMVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3B5dGhvbjwvdGl0bGU+PHBhdGggZD1cIk0xNS44ODUsMi4xYy03LjEsMC02LjY1MSwzLjA3LTYuNjUxLDMuMDdWOC4zNmg2Ljc1MnYxSDYuNTQ1UzIsOC44LDIsMTYuMDA1czQuMDEzLDYuOTEyLDQuMDEzLDYuOTEySDguMzNWMTkuNTU2cy0uMTMtNC4wMTMsMy45LTQuMDEzaDYuNzYyczMuNzcyLjA2LDMuNzcyLTMuNjUyVjUuOHMuNTcyLTMuNzEyLTYuODQyLTMuNzEyaDBaTTEyLjE1Myw0LjIzN2ExLjIxNCwxLjIxNCwwLDEsMS0xLjE4MywxLjI0NHYtLjAyYTEuMjE0LDEuMjE0LDAsMCwxLDEuMjE0LTEuMjE0aDBaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNi4wODUsMjkuOTFjNy4xLDAsNi42NTEtMy4wOCw2LjY1MS0zLjA4VjIzLjY1SDE1Ljk4NXYtMWg5LjQ3UzMwLDIzLjE1OCwzMCwxNS45OTVzLTQuMDEzLTYuOTEyLTQuMDEzLTYuOTEySDIzLjY0VjEyLjRzLjEzLDQuMDEzLTMuOSw0LjAxM0gxMi45NzVTOS4yLDE2LjM1Niw5LjIsMjAuMDY4VjI2LjJzLS41NzIsMy43MTIsNi44NDIsMy43MTJoLjA0Wm0zLjczMi0yLjE0N0ExLjIxNCwxLjIxNCwwLDEsMSwyMSwyNi41MTl2LjAzYTEuMjE0LDEuMjE0LDAsMCwxLTEuMjE0LDEuMjE0aC4wM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz5gLFxuXHRcIlEgKGtkYisgZGF0YWJhc2UpXCI6IGA8cGF0aCBkPVwiTTIwLjA5MiwyOVYxOS42ODJBNi45NTMsNi45NTMsMCwwLDEsMTcuNywyMS42NDVhNi43NDMsNi43NDMsMCwwLDEtMy4wODkuNzI0QTYuNTU3LDYuNTU3LDAsMCwxLDkuNDEzLDIwLDExLjA4MSwxMS4wODEsMCwwLDEsNywxMi40NzUsMTAuMDMzLDEwLjAzMywwLDAsMSw5LjI2NCw1LjUsNy4yNTEsNy4yNTEsMCwwLDEsMTQuODc0LDNhNi4yNjYsNi4yNjYsMCwwLDEsMy4yLjc4NSw3LjMyOSw3LjMyOSwwLDAsMSwyLjQsMi4zNzNWMy40MTlIMjVWMjlabS4xNTctMTYuNTQyYTYuNDkyLDYuNDkyLDAsMCwwLTEuMTYtNC4yMzIsMy42MzQsMy42MzQsMCwwLDAtMi45MDUtMS4zODcsMy43NDIsMy43NDIsMCwwLDAtMi45NzUsMS40MTMsNi44ODEsNi44ODEsMCwwLDAtMS4yLDQuNDg1LDYuNzY3LDYuNzY3LDAsMCwwLDEuMTUyLDQuNDA2QTMuNTkzLDMuNTkzLDAsMCwwLDE2LjAwOSwxOC41YTMuNzg2LDMuNzg2LDAsMCwwLDIuOTY2LTEuNTE4QTYuODg5LDYuODg5LDAsMCwwLDIwLjI0OSwxMi40NThaXCIgc3R5bGU9XCJmaWxsOiMxZTc4YjNcIi8+YCxcblx0XCJRI1wiOiBgPHBhdGggZD1cIk0xOS40NTEsNi4yMThoMi42MzhWOC44NTZoMi42MzdWNi4yMThoMi42MzdWOC44NTZIMzBWMTEuNUgyNy4zNjR2Mi42MzZIMzBWMTYuNzdIMjcuMzY0djIuNjM3SDI0LjcyN1YxNi43NjlIMjIuMDkxbDAsMi42MzdIMTkuNDUzVjE2Ljc2OEgxNi44MTVWMTQuMTI3aDIuNjM4VjExLjVIMTYuODE1VjguODUzaDIuNjM5Wm0yLjYzOCw3LjkxNGgyLjYzN1YxMS41SDIyLjA4OVpcIiBzdHlsZT1cImZpbGw6IzMzY1wiLz48cGF0aCBkPVwiTTE0LjAxOCwyMS41MjRhMTEuNDM2LDExLjQzNiwwLDAsMCwxLjU3Mi02LjE5MiwxMC44NzcsMTAuODc3LDAsMCwwLTEuODU4LTYuNkE1Ljg4OSw1Ljg4OSwwLDAsMCw4LjgwOCw2LjE1M2E1LjkyMSw1LjkyMSwwLDAsMC00Ljk0LDIuNTgxQTEwLjg0MiwxMC44NDIsMCwwLDAsMiwxNS4zMzNhMTAuODUzLDEwLjg1MywwLDAsMCwxLjg2OCw2LjU5Miw1LjkxOCw1LjkxOCwwLDAsMCw0Ljk0MSwyLjU4OCw1Ljc0Myw1Ljc0MywwLDAsMCwzLjI2LS45ODdsMi4zMDYsMi4zMjEsMS41NzctMi40Wm0tNS4xNy0xLjIxOCwxLjExNywxLjEyMWEzLjIyOSwzLjIyOSwwLDAsMS0xLjE3NC4yMTcsMy4zMzUsMy4zMzUsMCwwLDEtMi44MzctMS41OTMsOC4xMjUsOC4xMjUsMCwwLDEtMS4xOC00LjcxOSw4LjEsOC4xLDAsMCwxLDEuMTg0LTQuNzI0LDMuMzcyLDMuMzcyLDAsMCwxLDIuODctMS41ODgsMy4zMSwzLjMxLDAsMCwxLDIuODE5LDEuNTg1LDguMTc4LDguMTc4LDAsMCwxLDEuMTcyLDQuNzI2LDkuMTEzLDkuMTEzLDAsMCwxLS44MzMsNC4xNWwtMS41Ni0xLjU3MVpcIiBzdHlsZT1cImZpbGw6IzMzY1wiLz5gLFxuXHRcIlFNTFwiOiBgPHBhdGggZD1cIk0yNy4zLDVINS44ODZMMiw4Ljk1OFYyNkgyNi4xMTRMMzAsMjIuMDQyVjVaTTE2LjksMjMuMDdsLTEuODI4Ljg1MkwxMy41LDIxLjMzMWEzLjk2OCwzLjk2OCwwLDAsMS0xLjA4Mi4xMDZjLTEuODQ1LDAtMy4xMjMtLjUtMy44NS0xLjQ5YTguMDMsOC4wMywwLDAsMS0xLjA4Mi00LjcsOC4zNTEsOC4zNTEsMCwwLDEsMS4xLTQuNzczLDQuMzc5LDQuMzc5LDAsMCwxLDMuODMzLTEuNTYxYzEuODI4LDAsMy4wODcuNTE1LDMuODMzLDEuNTQ0YTguMzUxLDguMzUxLDAsMCwxLDEuMSw0Ljc3MywxMC44MDksMTAuODA5LDAsMCwxLS40NTIsMy40NCwzLjksMy45LDAsMCwxLTEuNDczLDJabTUuODQ4LTEuNjdhMi43MzUsMi43MzUsMCwwLDEtMi4xNjgtLjY5MkE0LjE5Miw0LjE5MiwwLDAsMSwyMCwxOC4xVjE0SDE5VjEyaDFWOWgydjNoMnYySDIydjMuOWEzLjkwNywzLjkwNywwLDAsMCwuMTY4LDEuNDM3Yy4xMTIuMjMxLjM5My4zNTUuODYuMzU1bDEuNTMzLS4wNTMuMDkzLDEuNTQ0QTEyLjUxOSwxMi41MTksMCwwLDEsMjIuNzQ4LDIxLjRaTTEyLjQxNiwxMC42MTRhMi40LDIuNCwwLDAsMC0yLjI4OSwxLjEsNy42NTcsNy42NTcsMCwwLDAtLjYsMy41MTMsNy4xMzEsNy4xMzEsMCwwLDAsLjYsMy40NDJBMi40NCwyLjQ0LDAsMCwwLDEyLjQzMywxOS43YTIuNDE3LDIuNDE3LDAsMCwwLDIuMjg5LTEuMDExLDcuMzQzLDcuMzQzLDAsMCwwLC41ODYtMy40NDIsNy42OTIsNy42OTIsMCwwLDAtLjYtMy41MzFBMi40LDIuNCwwLDAsMCwxMi40MTYsMTAuNjE0WlwiIHN0eWxlPVwiZmlsbDojNDFjZDUyXCIvPmAsXG5cdFwiUlwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzNC44MTFcIiB5MT1cIi0xMDMuMjg0XCIgeDI9XCItMTM0Ljc3MlwiIHkyPVwiLTEwMy4zMjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3MjEuMDk0LCAwLCAwLCAtNDgyLjkzNywgOTcyMTMuNTk1LCAtNDk4NzQuNTEyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2NiY2VkMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4NDgzOGJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMTM1LjM3OFwiIHkxPVwiLTEwMi45ODVcIiB4Mj1cIi0xMzUuMzM5XCIgeTI9XCItMTAzLjAyNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDM5OCwgMCwgMCwgLTQwNi4xMjQsIDUzODkzLCAtNDE4MTIuODM2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzI3NmRjM1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMxNjVjYWFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9yPC90aXRsZT48cGF0aCBkPVwiTTE2LDIzLjk1NmMtNy43MzIsMC0xNC00LjItMTQtOS4zNzZTOC4yNjgsNS4yLDE2LDUuMiwzMCw5LjQsMzAsMTQuNTgsMjMuNzMyLDIzLjk1NiwxNiwyMy45NTZaTTE4LjE0Myw4Ljg3QzEyLjI2Niw4Ljg3LDcuNSwxMS43NCw3LjUsMTUuMjhzNC43NjQsNi40MSwxMC42NDEsNi40MSwxMC4yMTQtMS45NjIsMTAuMjE0LTYuNDFTMjQuMDIsOC44NywxOC4xNDMsOC44N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIzLjMyMSwxOS43MjZhMTAuNTQ1LDEwLjU0NSwwLDAsMSwxLjM0LjUsMi41OTEsMi41OTEsMCwwLDEsLjY4LjQ4NSwxLjgzNSwxLjgzNSwwLDAsMSwuMzExLjQ0N2wzLjMzOSw1LjYzLTUuNCwwLTIuNTI0LTQuNzRhNi4xLDYuMSwwLDAsMC0uODM1LTEuMTQ1Ljg3OS44NzksMCwwLDAtLjY0MS0uMjkxSDE4LjMxMXY2LjE3M2wtNC43NzYsMFYxMS4wMjZoOS41OTFTMjcuNSwxMS4xLDI3LjUsMTUuMjYxLDIzLjMyMSwxOS43MjYsMjMuMzIxLDE5LjcyNlptLTIuMDc3LTUuMjgtMi44OTEsMHYyLjY4MWgyLjg5M2ExLjMyMywxLjMyMywwLDAsMCwxLjM0LTEuMzY0QTEuMjQ3LDEuMjQ3LDAsMCwwLDIxLjI0NCwxNC40NDdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+YCxcblx0XCJSYWNrZXRcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI3LjAxNiwyNC42NDFhMTQsMTQsMCwwLDAtMTUuOC0yMS44QzE2LjksNS44MjIsMjQuNDEzLDE1LjU0OSwyNy4wMTYsMjQuNjQxWlwiIHN0eWxlPVwiZmlsbDojM2U1YmE5XCIvPjxwYXRoIGQ9XCJNMTMuOTk1LDEwLjkzYTI0LjMsMjQuMywwLDAsMC03LjIyLTUuNDZBMTQsMTQsMCwwLDAsNS40NjMsMjUuMjE3LDM5LjU2LDM5LjU2LDAsMCwxLDEzLjk5NSwxMC45M1pcIiBzdHlsZT1cImZpbGw6IzlmMWQyMFwiLz48cGF0aCBkPVwiTTE2LjU3NSwxNC4xQTMyLjY0NSwzMi42NDUsMCwwLDAsOS40MywyOC4zNjVhMTQuMDE2LDE0LjAxNiwwLDAsMCwxMy4zLS4wODlBMzguNjQyLDM4LjY0MiwwLDAsMCwxNi41NzUsMTQuMVpcIiBzdHlsZT1cImZpbGw6IzlmMWQyMFwiLz5gLFxuXHRcIlJhem9yIEMjXCI6IGA8cGF0aCBkPVwiTTIzLjg0NCwyNy42OTJhMTYuMzMyLDE2LjMzMiwwLDAsMS02LjY0NSwxLjNxLTYuMzY0LDAtMTAuMDEzLTMuMjQzYTExLjMsMTEuMywwLDAsMS0zLjY0OS04LjlBMTMuNzE2LDEzLjcxNiwwLDAsMSw3LjMyMiw2Ljk1MSwxMi43MTYsMTIuNzE2LDAsMCwxLDE2LjksMy4wMDhhMTEuNjc2LDExLjY3NiwwLDAsMSw4LjQyNSwzLjAwNiw5Ljk5NCw5Ljk5NCwwLDAsMSwzLjE0Miw3LjUzMywxMC4xODcsMTAuMTg3LDAsMCwxLTIuMzE4LDcuMTE0LDcuNTMyLDcuNTMyLDAsMCwxLTUuODE3LDIuNTQ3LDIuNjEzLDIuNjEzLDAsMCwxLTEuODQ1LS42NDIsMi4zMjMsMi4zMjMsMCwwLDEtLjc2NC0xLjYsNC45LDQuOSwwLDAsMS00LjE0OCwyLjI0Myw0LjYsNC42LDAsMCwxLTMuNTA3LTEuNDc5LDUuNzA2LDUuNzA2LDAsMCwxLTEuMzg0LTQuMDYzLDkuOTEzLDkuOTEzLDAsMCwxLDIuMi02LjM1N3EyLjItMi43NjMsNC44LTIuNzYzYTUuMDYzLDUuMDYzLDAsMCwxLDQuMjU2LDEuNzE2bC4zMTEtMS4zMzhoMi40MDVsLTIuMDgxLDkuMDhhMTAuNzE2LDEwLjcxNiwwLDAsMC0uMzUyLDIuMjQzcTAsLjk3Mi43NDQuOTcyYTQuODE5LDQuODE5LDAsMCwwLDMuODc3LTIuMDQ3LDguOTMsOC45MywwLDAsMCwxLjYyMS01LjY4MSw3Ljk4LDcuOTgsMCwwLDAtMi42NzUtNi4xNzUsOS44ODcsOS44ODcsMCwwLDAtNi45MTktMi40MzJBMTAuNiwxMC42LDAsMCwwLDguNzEzLDguMzUyYTEyLjA2NiwxMi4wNjYsMCwwLDAtMy4yLDguNDk1LDkuNTYxLDkuNTYxLDAsMCwwLDMuMDYsNy41NzNxMy4wNiwyLjcsOC41ODYsMi43YTEzLjc1NywxMy43NTcsMCwwLDAsNS42NzUtMS4wNTRaTTE5LjQ2NiwxMi4yNWEzLjk3NywzLjk3NywwLDAsMC0zLjYtMS43MTZxLTEuODI0LDAtMy4yNjMsMi4yM2E4LjcyNiw4LjcyNiwwLDAsMC0xLjQzOSw0LjgyNHEwLDMuNjM1LDIuOTA1LDMuNjM1QTMuNzcxLDMuNzcxLDAsMCwwLDE2LjcyLDIwLjA0YTYuMzA5LDYuMzA5LDAsMCwwLDEuNy0zLjJaXCIgc3R5bGU9XCJmaWxsOiMzNjg4MzJcIi8+YCxcblx0XCJSZWFjdCBKU1hcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTUuOTc0XCIgcj1cIjIuNVwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPjxwYXRoIGQ9XCJNMTYsMjEuNzA2YTI4LjM4NSwyOC4zODUsMCwwLDEtOC44OC0xLjIsMTEuMywxMS4zLDAsMCwxLTMuNjU3LTEuOTU4QTMuNTQzLDMuNTQzLDAsMCwxLDIsMTUuOTc0YzAtMS42NTMsMS44MTYtMy4yNzMsNC44NTgtNC4zMzNBMjguNzU1LDI4Ljc1NSwwLDAsMSwxNiwxMC4yOTNhMjguNjc0LDI4LjY3NCwwLDAsMSw5LjAyMiwxLjMyNCwxMS4zNzYsMTEuMzc2LDAsMCwxLDMuNTM4LDEuODY2QTMuMzkxLDMuMzkxLDAsMCwxLDMwLDE1Ljk3NGMwLDEuNzE4LTIuMDMsMy40NTktNS4zLDQuNTQxQTI4LjgsMjguOCwwLDAsMSwxNiwyMS43MDZabTAtMTAuMjE3YTI3Ljk0OCwyNy45NDgsMCwwLDAtOC43NDksMS4yODJjLTIuOC45NzctNC4wNTUsMi4zMTMtNC4wNTUsMy4yLDAsLjkyOCwxLjM0OSwyLjM4Nyw0LjMxMSwzLjRBMjcuMjEsMjcuMjEsMCwwLDAsMTYsMjAuNTFhMjcuNiwyNy42LDAsMCwwLDguMzI1LTEuMTNDMjcuNCwxOC4zNjEsMjguOCwxNi45LDI4LjgsMTUuOTc0YTIuMzI3LDIuMzI3LDAsMCwwLTEuMDEtMS41NzMsMTAuMTk0LDEwLjE5NCwwLDAsMC0zLjE2MS0xLjY1NEEyNy40NjIsMjcuNDYyLDAsMCwwLDE2LDExLjQ4OVpcIiBzdHlsZT1cImZpbGw6IzAwZDhmZlwiLz48cGF0aCBkPVwiTTEwLjMyLDI4LjQ0M2EyLjYzOSwyLjYzOSwwLDAsMS0xLjMzNi0uMzI4Yy0xLjQzMi0uODI2LTEuOTI4LTMuMjA4LTEuMzI3LTYuMzczYTI4Ljc1NSwyOC43NTUsMCwwLDEsMy40LTguNTkzaDBBMjguNjc2LDI4LjY3NiwwLDAsMSwxNi43MSw1Ljk5NWExMS4zNzYsMTEuMzc2LDAsMCwxLDMuMzg0LTIuMTMzLDMuMzkxLDMuMzkxLDAsMCwxLDIuODc4LDBjMS40ODkuODU4LDEuOTgyLDMuNDg2LDEuMjg3LDYuODU5YTI4LjgwNiwyOC44MDYsMCwwLDEtMy4zMTYsOC4xMzMsMjguMzg1LDI4LjM4NSwwLDAsMS01LjQ3Niw3LjA5MywxMS4zLDExLjMsMCwwLDEtMy41MjMsMi4xODlBNC45MjYsNC45MjYsMCwwLDEsMTAuMzIsMjguNDQzWm0xLjc3My0xNC43YTI3Ljk0OCwyNy45NDgsMCwwLDAtMy4yNiw4LjIxOWMtLjU1MywyLjkxNS0uMDIyLDQuNjY4Ljc1LDUuMTE0LjguNDYzLDIuNzQyLjAyNCw1LjEtMi4wMzZhMjcuMjA5LDI3LjIwOSwwLDAsMCw1LjIyNy02Ljc5LDI3LjYsMjcuNiwwLDAsMCwzLjE4MS03Ljc3NmMuNjU0LTMuMTc1LjA4OS01LjExOS0uNzEzLTUuNTgxYTIuMzI3LDIuMzI3LDAsMCwwLTEuODY4LjA4OUExMC4xOTQsMTAuMTk0LDAsMCwwLDE3LjUsNi45YTI3LjQ2NCwyNy40NjQsMCwwLDAtNS40LDYuODQ5WlwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPjxwYXRoIGQ9XCJNMjEuNjc3LDI4LjQ1NmMtMS4zNTUsMC0zLjA3Ni0uODItNC44NjgtMi4zNjFhMjguNzU2LDI4Ljc1NiwwLDAsMS01Ljc0Ny03LjIzN2gwYTI4LjY3NiwyOC42NzYsMCwwLDEtMy4zNzQtOC40NzEsMTEuMzc2LDExLjM3NiwwLDAsMS0uMTU4LTRBMy4zOTEsMy4zOTEsMCwwLDEsOC45NjQsMy45YzEuNDg3LS44NjEsNC4wMS4wMjQsNi41ODUsMi4zMWEyOC44LDI4LjgsMCwwLDEsNS4zOSw2LjkzNCwyOC4zODQsMjguMzg0LDAsMCwxLDMuNDEsOC4yODcsMTEuMywxMS4zLDAsMCwxLC4xMzcsNC4xNDYsMy41NDMsMy41NDMsMCwwLDEtMS40OTQsMi41NTVBMi41OSwyLjU5LDAsMCwxLDIxLjY3NywyOC40NTZabS05LjU4LTEwLjJhMjcuOTQ5LDI3Ljk0OSwwLDAsMCw1LjQ5Miw2LjkyOWMyLjI0OSwxLjkzNSw0LjAzMywyLjM1MSw0LjgsMS45LjgtLjQ2NSwxLjM5LTIuMzYzLjc4Mi01LjQzNEEyNy4yMTIsMjcuMjEyLDAsMCwwLDE5LjksMTMuNzQsMjcuNiwyNy42LDAsMCwwLDE0Ljc1NSw3LjFjLTIuNDI0LTIuMTUyLTQuMzktMi42MzMtNS4xOTEtMi4xNjlhMi4zMjcsMi4zMjcsMCwwLDAtLjg1NSwxLjY2MiwxMC4xOTQsMTAuMTk0LDAsMCwwLC4xNTMsMy41NjUsMjcuNDY1LDI3LjQ2NSwwLDAsMCwzLjIzNiw4LjFaXCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+YCxcblx0XCJSZWFjdCBUU1hcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTUuOTc0XCIgcj1cIjIuNVwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMTYsMjEuNzA2YTI4LjM4NSwyOC4zODUsMCwwLDEtOC44OC0xLjIsMTEuMywxMS4zLDAsMCwxLTMuNjU3LTEuOTU4QTMuNTQzLDMuNTQzLDAsMCwxLDIsMTUuOTc0YzAtMS42NTMsMS44MTYtMy4yNzMsNC44NTgtNC4zMzNBMjguNzU1LDI4Ljc1NSwwLDAsMSwxNiwxMC4yOTNhMjguNjc0LDI4LjY3NCwwLDAsMSw5LjAyMiwxLjMyNCwxMS4zNzYsMTEuMzc2LDAsMCwxLDMuNTM4LDEuODY2QTMuMzkxLDMuMzkxLDAsMCwxLDMwLDE1Ljk3NGMwLDEuNzE4LTIuMDMsMy40NTktNS4zLDQuNTQxQTI4LjgsMjguOCwwLDAsMSwxNiwyMS43MDZabTAtMTAuMjE3YTI3Ljk0OCwyNy45NDgsMCwwLDAtOC43NDksMS4yODJjLTIuOC45NzctNC4wNTUsMi4zMTMtNC4wNTUsMy4yLDAsLjkyOCwxLjM0OSwyLjM4Nyw0LjMxMSwzLjRBMjcuMjEsMjcuMjEsMCwwLDAsMTYsMjAuNTFhMjcuNiwyNy42LDAsMCwwLDguMzI1LTEuMTNDMjcuNCwxOC4zNjEsMjguOCwxNi45LDI4LjgsMTUuOTc0YTIuMzI3LDIuMzI3LDAsMCwwLTEuMDEtMS41NzMsMTAuMTk0LDEwLjE5NCwwLDAsMC0zLjE2MS0xLjY1NEEyNy40NjIsMjcuNDYyLDAsMCwwLDE2LDExLjQ4OVpcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz48cGF0aCBkPVwiTTEwLjMyLDI4LjQ0M2EyLjYzOSwyLjYzOSwwLDAsMS0xLjMzNi0uMzI4Yy0xLjQzMi0uODI2LTEuOTI4LTMuMjA4LTEuMzI3LTYuMzczYTI4Ljc1NSwyOC43NTUsMCwwLDEsMy40LTguNTkzaDBBMjguNjc2LDI4LjY3NiwwLDAsMSwxNi43MSw1Ljk5NWExMS4zNzYsMTEuMzc2LDAsMCwxLDMuMzg0LTIuMTMzLDMuMzkxLDMuMzkxLDAsMCwxLDIuODc4LDBjMS40ODkuODU4LDEuOTgyLDMuNDg2LDEuMjg3LDYuODU5YTI4LjgwNiwyOC44MDYsMCwwLDEtMy4zMTYsOC4xMzMsMjguMzg1LDI4LjM4NSwwLDAsMS01LjQ3Niw3LjA5MywxMS4zLDExLjMsMCwwLDEtMy41MjMsMi4xODlBNC45MjYsNC45MjYsMCwwLDEsMTAuMzIsMjguNDQzWm0xLjc3My0xNC43YTI3Ljk0OCwyNy45NDgsMCwwLDAtMy4yNiw4LjIxOWMtLjU1MywyLjkxNS0uMDIyLDQuNjY4Ljc1LDUuMTE0LjguNDYzLDIuNzQyLjAyNCw1LjEtMi4wMzZhMjcuMjA5LDI3LjIwOSwwLDAsMCw1LjIyNy02Ljc5LDI3LjYsMjcuNiwwLDAsMCwzLjE4MS03Ljc3NmMuNjU0LTMuMTc1LjA4OS01LjExOS0uNzEzLTUuNTgxYTIuMzI3LDIuMzI3LDAsMCwwLTEuODY4LjA4OUExMC4xOTQsMTAuMTk0LDAsMCwwLDE3LjUsNi45YTI3LjQ2NCwyNy40NjQsMCwwLDAtNS40LDYuODQ5WlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMjEuNjc3LDI4LjQ1NmMtMS4zNTUsMC0zLjA3Ni0uODItNC44NjgtMi4zNjFhMjguNzU2LDI4Ljc1NiwwLDAsMS01Ljc0Ny03LjIzN2gwYTI4LjY3NiwyOC42NzYsMCwwLDEtMy4zNzQtOC40NzEsMTEuMzc2LDExLjM3NiwwLDAsMS0uMTU4LTRBMy4zOTEsMy4zOTEsMCwwLDEsOC45NjQsMy45YzEuNDg3LS44NjEsNC4wMS4wMjQsNi41ODUsMi4zMWEyOC44LDI4LjgsMCwwLDEsNS4zOSw2LjkzNCwyOC4zODQsMjguMzg0LDAsMCwxLDMuNDEsOC4yODcsMTEuMywxMS4zLDAsMCwxLC4xMzcsNC4xNDYsMy41NDMsMy41NDMsMCwwLDEtMS40OTQsMi41NTVBMi41OSwyLjU5LDAsMCwxLDIxLjY3NywyOC40NTZabS05LjU4LTEwLjJhMjcuOTQ5LDI3Ljk0OSwwLDAsMCw1LjQ5Miw2LjkyOWMyLjI0OSwxLjkzNSw0LjAzMywyLjM1MSw0LjgsMS45LjgtLjQ2NSwxLjM5LTIuMzYzLjc4Mi01LjQzNEEyNy4yMTIsMjcuMjEyLDAsMCwwLDE5LjksMTMuNzQsMjcuNiwyNy42LDAsMCwwLDE0Ljc1NSw3LjFjLTIuNDI0LTIuMTUyLTQuMzktMi42MzMtNS4xOTEtMi4xNjlhMi4zMjcsMi4zMjcsMCwwLDAtLjg1NSwxLjY2MiwxMC4xOTQsMTAuMTk0LDAsMCwwLC4xNTMsMy41NjUsMjcuNDY1LDI3LjQ2NSwwLDAsMCwzLjIzNiw4LjFaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+YCxcblx0XCJSZWFzb25cIjogYDxwb2x5bGluZSBwb2ludHM9XCIyIDIgMzAgMiAzMCAzMCAyIDMwIDIgMlwiIHN0eWxlPVwiZmlsbDojZGQ0YjM5XCIvPjxwYXRoIGQ9XCJNOS4wNTEsMTcuNTI3cTIuNTM3LDAsNS4wNzIsMEE0Ljk0Nyw0Ljk0NywwLDAsMSwxNy4xLDE4LjVhMy4yOSwzLjI5LDAsMCwxLDEuMTI4LDIuMjY3LDQuMTE3LDQuMTE3LDAsMCwxLS43NzgsMy4wMjIsMy42LDMuNiwwLDAsMS0xLjEzNy45MDVsMi4yNDcsMy41NDktMy4wNjEsMC0xLjYtMy4wNDMtMi4xNTQsMCwwLDMuMDMySDkuMDUxVjE3LjUyN20yLjY5LDIuMTI4LDAsMy40MzgsMS45ODksMGEyLjE4NCwyLjE4NCwwLDAsMCwxLjQ2OC0uNDUyLDEuODE0LDEuODE0LDAsMCwwLC40ODItMS41NDQsMS40NjksMS40NjksMCwwLDAtLjcwNS0xLjE4LDIuNzY4LDIuNzY4LDAsMCwwLTEuNDM3LS4yNjlDMTIuOTQsMTkuNjU0LDExLjc0MSwxOS42NTUsMTEuNzQxLDE5LjY1NVptOC4zODQtMi4xM2g4LjM1djIuMTNoLTUuNjZWMjEuOGw1LjExLDB2Mi4xMTlIMjIuODJWMjYuMWg1LjgyNHYyLjE0MkgyMC4xMjVWMTcuNTI1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiUmVnb1wiOiBgPGRlZnM+PGNsaXBQYXRoIGlkPVwiYVwiPjxwYXRoIGQ9XCJNNy4wNTUsMTYuMjQxYzMuNDE1LTEwLjIyLDE0Ljc1OS05LjQ3MywxNy45MjQsMGwuMSw1Ljg5M2ExNS41NjIsMTUuNTYyLDAsMCwwLTkuMDM2LDcuMjQ2QTE3LjY0MSwxNy42NDEsMCwwLDAsNy4wMywyMi4zNDZaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PC9jbGlwUGF0aD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9yZWdvPC90aXRsZT48cGF0aCBkPVwiTTcuMDMsMTYuMjQxbDIuNi00LjU1OWMtMi40MTgtLjMxMi0yLjYwNi0zLjQzMS0uOC05LjA2MkMzLjgwOSw4Ljg1MywyLjQyLDEwLjIyOCw3LjAzLDE2LjI0MVpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTI0Ljk3LDE2LjI0MWwtMi41OTUtNC41NTljMi40MTgtLjMxMiwyLjYwNi0zLjQzMS44LTkuMDYyQzI4LjE5MSw4Ljg1MywyOS41OCwxMC4yMjgsMjQuOTcsMTYuMjQxWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNNy4wNTUsMTYuMjQxYzMuNDE1LTEwLjIyLDE0Ljc1OS05LjQ3MywxNy45MjQsMGwuMSw1Ljg5M2ExNS41NjIsMTUuNTYyLDAsMCwwLTkuMDM2LDcuMjQ2QTE3LjY0MSwxNy42NDEsMCwwLDAsNy4wMywyMi4zNDZaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PGcgc3R5bGU9XCJjbGlwLXBhdGg6dXJsKCNhKVwiPjxyZWN0IHg9XCIxNi4wNTNcIiB5PVwiNy45NjJcIiB3aWR0aD1cIjkuNTQ5XCIgaGVpZ2h0PVwiMjEuODk5XCIgc3R5bGU9XCJmaWxsOiM1MzYzNjdcIi8+PHJlY3QgeD1cIjUuMzIyXCIgeT1cIjcuOTYyXCIgd2lkdGg9XCIxMC43MzJcIiBoZWlnaHQ9XCIyMS44OTlcIiBzdHlsZT1cImZpbGw6Izc4OTI5YVwiLz48L2c+PGNpcmNsZSBjeD1cIjE2LjA0XCIgY3k9XCIxNi4yNDFcIiByPVwiMS4xNjZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlJlU2NyaXB0XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxMS40MjFcIiB5MT1cIi0yMjEuNzA1XCIgeDI9XCIyMS41MDlcIiB5Mj1cIi0yNDguNzkyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC0yMTgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTg0ZjRmXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA5XCIgc3RvcC1jb2xvcj1cIiNkYjQ2NDZcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTlcIiBzdG9wLWNvbG9yPVwiI2NiMzkzOVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Jlc2NyaXB0PC90aXRsZT48cGF0aCBkPVwiTTIsMTAuOTdjMC0zLjczOCwwLTUuNi45NTItNi45MTZhNC45OTIsNC45OTIsMCwwLDEsMS4xLTEuMUM1LjM2NCwyLDcuMjMzLDIsMTAuOTY5LDJIMjEuMDNjMy43MzgsMCw1LjYwNSwwLDYuOTE2Ljk1MWE0Ljk5Miw0Ljk5MiwwLDAsMSwxLjEsMS4xQzMwLDUuMzY0LDMwLDcuMjMyLDMwLDEwLjk3VjIxLjAzYzAsMy43MzcsMCw1LjYwNS0uOTUyLDYuOTE2YTQuOTY2LDQuOTY2LDAsMCwxLTEuMSwxLjFDMjYuNjM2LDMwLDI0Ljc2OCwzMCwyMS4wMywzMEgxMC45NjljLTMuNzM2LDAtNS42LDAtNi45MTUtLjk1MmE0Ljk2Niw0Ljk2NiwwLDAsMS0xLjEtMS4xQzIsMjYuNjM2LDIsMjQuNzY3LDIsMjEuMDNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMC45NzQsMTUuNTU0YTMuMzI1LDMuMzI1LDAsMSwwLTMuMzI0LTMuMzI1QTMuMzI1LDMuMzI1LDAsMCwwLDIwLjk3NCwxNS41NTRaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk05LjMxNiwxMS44MDlhNC42NzYsNC42NzYsMCwwLDEsLjIwNi0xLjk4N0ExLjg4NiwxLjg4NiwwLDAsMSwxMC4zNDUsOWE0LjcsNC43LDAsMCwxLDEuOTg3LS4yMDVoMi42NFYyMS4wNDVhNC42ODYsNC42ODYsMCwwLDEtLjE0NCwxLjY2NCwxLjg5MiwxLjg5MiwwLDAsMS0xLjAyLDEuMDIsNC43Miw0LjcyLDAsMCwxLTEuNjY0LjE0Myw0LjcxNyw0LjcxNywwLDAsMS0xLjY2NC0uMTQzLDEuODkyLDEuODkyLDAsMCwxLTEuMDItMS4wMiw0LjcyLDQuNzIsMCwwLDEtLjE0My0xLjY2NFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCI6IGA8cGF0aCBkPVwiTTE2LDMwQTEzLjg1OSwxMy44NTksMCwwLDEsMi4yODYsMTYsMTQuMTQ5LDE0LjE0OSwwLDAsMSw2LjMsNi4xLDEzLjUxNywxMy41MTcsMCwwLDEsMjUuNyw2LjEsMTQuMTQ5LDE0LjE0OSwwLDAsMSwyOS43MTQsMTYsMTMuODU5LDEzLjg1OSwwLDAsMSwxNiwzMFpcIiBzdHlsZT1cImZpbGw6I2NlM2YzMVwiLz48cGF0aCBkPVwiTTExLjg2OSwyMy4wMTVoLS40YTQuMjYzLDQuMjYzLDAsMCwxLTEuMDQ4LS4xMTMsMS4zODcsMS4zODcsMCwwLDEtLjc2Ny0uNTQ4LDIuMiwyLjIsMCwwLDEtLjQwOS0xLjAyNkExMy4yOCwxMy4yOCwwLDAsMSw5LjE1OSwxOS42YTEyLjc4LDEyLjc4LDAsMCwwLS4wOC0xLjY4NywxLjc3MywxLjc3MywwLDAsMC0uNDA1LS45MjQsMS4zMjUsMS4zMjUsMCwwLDAtMS4wMjYtLjM5MVYxNS40YTEuMzI1LDEuMzI1LDAsMCwwLDEuMDI2LS4zOTEsMS43NzMsMS43NzMsMCwwLDAsLjQwNS0uOTI0LDEyLjc4LDEyLjc4LDAsMCwwLC4wOC0xLjY4NywxMy4yOCwxMy4yOCwwLDAsMSwuMDg0LTEuNzMxLDIuMiwyLjIsMCwwLDEsLjQwOS0xLjAyNiwxLjM4NywxLjM4NywwLDAsMSwuNzY3LS41NDgsNC4yNjMsNC4yNjMsMCwwLDEsMS4wNDgtLjExM2guNHYxLjE0aC0uMjI2cS0uNzYsMC0uOTMxLjRhNy43Miw3LjcyLDAsMCwwLS4xNzIsMi4xNyw0Ljg3Niw0Ljg3NiwwLDAsMS0uNDE2LDIuMzE2QTIuMTE3LDIuMTE3LDAsMCwxLDguODU5LDE2YTIuMDg5LDIuMDg5LDAsMCwxLDEuMjY0Ljk4NkE0Ljg3Niw0Ljg3NiwwLDAsMSwxMC41NCwxOS4zYTcuNzIsNy43MiwwLDAsMCwuMTcyLDIuMTdxLjE3Mi40LjkzMS40aC4yMjZabTEuNi0zLjE0MWgxLjAzNVYxNi40MmgxLjQ1OWwxLjk3LDMuNDU0aDEuMTg0TDE3LjA0LDE2LjMwOGEyLjI0MywyLjI0MywwLDAsMCwxLjgzMy0yLjMxOWMwLTEuNy0xLjItMi4yOTQtMi44NTUtMi4yOTRIMTMuNDc0Wm0xLjAzNS00LjNWMTIuNTNoMS4zNTljMS4yNzIsMCwxLjk3LjM4NiwxLjk3LDEuNDU5cy0uNywxLjU4My0xLjk3LDEuNTgzWm01LjU1Ny02LjU5MWguNGE0LjI2Myw0LjI2MywwLDAsMSwxLjA0OC4xMTMsMS4zODcsMS4zODcsMCwwLDEsLjc2Ny41NDgsMi4yLDIuMiwwLDAsMSwuNDA5LDEuMDI2LDEzLjI4LDEzLjI4LDAsMCwxLC4wODQsMS43MzEsMTIuNzgsMTIuNzgsMCwwLDAsLjA4LDEuNjg3LDEuNzczLDEuNzczLDAsMCwwLC40MDUuOTI0LDEuMzI1LDEuMzI1LDAsMCwwLDEuMDI2LjM5MXYxLjE5MWExLjMyNSwxLjMyNSwwLDAsMC0xLjAyNi4zOTEsMS43NzMsMS43NzMsMCwwLDAtLjQwNS45MjQsMTIuNzgsMTIuNzgsMCwwLDAtLjA4LDEuNjg3LDEzLjI4LDEzLjI4LDAsMCwxLS4wODQsMS43MzEsMi4yLDIuMiwwLDAsMS0uNDA5LDEuMDI2LDEuMzg3LDEuMzg3LDAsMCwxLS43NjcuNTQ4LDQuMjYzLDQuMjYzLDAsMCwxLTEuMDQ4LjExM2gtLjR2LTEuMTRoLjIyNnEuNzYsMCwuOTMxLS40QTcuNzIsNy43MiwwLDAsMCwyMS40LDE5LjNhNC44NzYsNC44NzYsMCwwLDEsLjQxNi0yLjMxNkEyLjA4OSwyLjA4OSwwLDAsMSwyMy4wNzUsMTZhMi4xMTcsMi4xMTcsMCwwLDEtMS4yNjQtLjk5NCw0Ljg3Niw0Ljg3NiwwLDAsMS0uNDE2LTIuMzE2LDcuNzIsNy43MiwwLDAsMC0uMTcyLTIuMTdxLS4xNzItLjQtLjkzMS0uNGgtLjIyNlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlJvYm90IEZyYW1ld29ya1wiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTAuMzg3LDE0LjZhMi43MjcsMi43MjcsMCwwLDEsNS40NTMsMCwuOTkuOTksMCwxLDEtMS45OCwwLC43NDYuNzQ2LDAsMCwwLTEuNDkyLDAsLjk5Ljk5LDAsMSwxLTEuOTgsMG0xMS4zLDQuNTg2YS45OTEuOTkxLDAsMCwxLS45OTIuOTkySDExLjUwOGEuOTkyLjk5MiwwLDAsMSwwLTEuOTg0aDkuMTg0YS45OTQuOTk0LDAsMCwxLC45OTIuOTkyTTE3LjM5MSwxNS4xNmEuOTkyLjk5MiwwLDAsMSwuMjctMS4zNzVsMi4yOTMtMS41NTFhLjk4OS45ODksMCwxLDEsMS4xMDksMS42MzdsLTIuMywxLjU1MWEuOTY1Ljk2NSwwLDAsMS0uNTUxLjE3Mi45OTQuOTk0LDAsMCwxLS44MjQtLjQzNG02LjI4OSw2LjA5NGEuNzA3LjcwNywwLDAsMS0uMjA3LjVsLTEuNzA3LDEuNzA3YS43MDcuNzA3LDAsMCwxLS41LjIwN0gxMC44YS43MDcuNzA3LDAsMCwxLS41LS4yMDdMOC42LDIxLjc1NGEuNzA3LjcwNywwLDAsMS0uMjA3LS41VjEwLjhhLjcwNy43MDcsMCwwLDEsLjIwNy0uNUwxMC4zLDguNTk0YS43MDcuNzA3LDAsMCwxLC41LS4yMDdIMjEuMjY2YS43MDcuNzA3LDAsMCwxLC41LjIwN0wyMy40NzMsMTAuM2EuNzA3LjcwNywwLDAsMSwuMjA3LjVaTTI1LjEyOSw5LjE2LDIyLjksNi45M0ExLjgwNywxLjgwNywwLDAsMCwyMS42MjksNi40SDEwLjQzOGExLjgwNywxLjgwNywwLDAsMC0xLjI3My41MjdMNi45MzgsOS4xNmExLjgsMS44LDAsMCwwLS41MjcsMS4yN1YyMS42MjFhMS44LDEuOCwwLDAsMCwuNTI3LDEuMjczbDIuMjI3LDIuMjNhMS44MSwxLjgxLDAsMCwwLDEuMjczLjUyM0gyMS42MjlhMS44LDEuOCwwLDAsMCwxLjI3My0uNTIzbDIuMjI3LTIuMjNhMS43ODQsMS43ODQsMCwwLDAsLjUyNy0xLjI3M1YxMC40MzRhMS43ODQsMS43ODQsMCwwLDAtLjUyNy0xLjI3M1wiLz5gLFxuXHRcIlJ1YnlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0yMzUuOTU3XCIgeTE9XCItMzA4LjU3OVwiIHgyPVwiLTIzNS45ODZcIiB5Mj1cIi0zMDguNTI3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjAyLjkzNSwgMCwgMCwgLTIwMi43OCwgNDc5MTAuNDYxLCAtNjI1NDEuMTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmI3NjU1XCIvPjxzdG9wIG9mZnNldD1cIjAuNDFcIiBzdG9wLWNvbG9yPVwiI2U0MmIxZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5MDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOTAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTIzNS41NzFcIiB5MT1cIi0zMDkuMDg3XCIgeDI9XCItMjM1LjY5N1wiIHkyPVwiLTMwOS4wNDFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg2MC4zMDgsIDAsIDAsIC0xMTEuNzc4LCAxNDIzNi4zNTEsIC0zNDUyNS4zOTUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjODcxMTAxXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzkxMTIwOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5MTEyMDlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItMjM1Ljg5NlwiIHkxPVwiLTMxMy4zNjJcIiB4Mj1cIi0yMzUuOTM3XCIgeTI9XCItMzEzLjEyOVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE4OC4zMiwgMCwgMCwgLTIxLjk4NiwgNDQ0NDcuMzAyLCAtNjg1Ni44ODIpXCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIi0yMzMuNTE1XCIgeTE9XCItMzA5LjA4MlwiIHgyPVwiLTIzMy40OTdcIiB5Mj1cIi0zMDkuMTYxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjUuMjIyLCAwLCAwLCAtOTcuMSwgMTUyMzcuODAyLCAtMjk5OTEuODE0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjIzXCIgc3RvcC1jb2xvcj1cIiNlNTcyNTJcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NlwiIHN0b3AtY29sb3I9XCIjZGUzYjIwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E2MDAwM1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhNjAwMDNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCItMjM1LjMxNFwiIHkxPVwiLTMwOS41MzRcIiB4Mj1cIi0yMzUuMzFcIiB5Mj1cIi0zMDkuNjA3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTA1LjMyLCAwLCAwLCAtMTA2LjgyNSwgMjQ3OTguOTI1LCAtMzMwNTMuMTUyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjIzXCIgc3RvcC1jb2xvcj1cIiNlNDcxNGVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NlwiIHN0b3AtY29sb3I9XCIjYmUxYTBkXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCItMjM1Ljg4MlwiIHkxPVwiLTMxMS44NTFcIiB4Mj1cIi0yMzUuODY5XCIgeTI9XCItMzExLjkzNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDk0LjMyMSwgMCwgMCwgLTY2LjQxOCwgMjIyNzEuNDk5LCAtMjA3MDcuMDA0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE4XCIgc3RvcC1jb2xvcj1cIiNlNDYzNDJcIi8+PHN0b3Agb2Zmc2V0PVwiMC40XCIgc3RvcC1jb2xvcj1cIiNjODI0MTBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi0yMzUuNDEyXCIgeTE9XCItMzIxLjA3NFwiIHgyPVwiLTIzNS4zMzNcIiB5Mj1cIi0zMjAuOTU4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNzAuNzY3LCAwLCAwLCAtMjQuMzAxLCAxNjY3OC4xMTYsIC03Nzk4LjY0NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NFwiIHN0b3AtY29sb3I9XCIjYzgxZjExXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2JmMDkwNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiZjA5MDVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCItMjIzLjgyMVwiIHkxPVwiLTMxMC4xMTZcIiB4Mj1cIi0yMjMuNzk2XCIgeTI9XCItMzEwLjE4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTguMTc3LCAwLCAwLCAtNzIuNjQ1LCA0MDcxLjAxNywgLTIyNTEwLjIzMylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMVwiIHN0b3AtY29sb3I9XCIjZGU0MDI0XCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2JmMTkwYlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiZjE5MGJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCItMjM1LjU2MVwiIHkxPVwiLTMwOS4yNThcIiB4Mj1cIi0yMzUuNDI0XCIgeTI9XCItMzA5LjExNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1OC4xNjIsIDAsIDAsIC0xNTcuOTM3LCAzNzI1Ni4zMTMsIC00ODgxOS4zODIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYmQwMDEyXCIvPjxzdG9wIG9mZnNldD1cIjAuMDdcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE3XCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yN1wiIHN0b3AtY29sb3I9XCIjYzgyZjFjXCIvPjxzdG9wIG9mZnNldD1cIjAuMzNcIiBzdG9wLWNvbG9yPVwiIzgyMGMwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ2XCIgc3RvcC1jb2xvcj1cIiNhMzE2MDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MlwiIHN0b3AtY29sb3I9XCIjYjMxMzAxXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2U4MjYwOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlODI2MDlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCItMjM1LjQyNFwiIHkxPVwiLTMwOS4xNDNcIiB4Mj1cIi0yMzUuNDc2XCIgeTI9XCItMzA5LjEyNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEyNy4wNzQsIDAsIDAsIC05Ny40MDksIDI5OTMyLjIyOSwgLTMwMDg2Ljk0NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4YzBjMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NFwiIHN0b3AtY29sb3I9XCIjOTkwYzAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E4MGQwZVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhODBkMGVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJrXCIgeDE9XCItMjM1LjgzOVwiIHkxPVwiLTMwOS42MDRcIiB4Mj1cIi0yMzUuOTAxXCIgeTI9XCItMzA5LjU1NVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDk0LjAxMSwgMCwgMCwgLTEwNS42MDMsIDIyMTk4Ljc0MywgLTMyNjc2Ljg1NilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3ZTExMGJcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOWUwYzAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzllMGMwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImxcIiB4MT1cIi0yMzUuODU0XCIgeTE9XCItMzExLjI0XCIgeDI9XCItMjM1Ljg5MVwiIHkyPVwiLTMxMS4yMDJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3OS43MDIsIDAsIDAsIC04MS43OTEsIDE4ODI3LjM5NywgLTI1NDQ3LjkwNSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3OTEzMGRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOWUxMjBiXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzllMTIwYlwiLz48L2xpbmVhckdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cIm1cIiBjeD1cIi0yMzUuODgyXCIgY3k9XCItMzEyLjU0M1wiIHI9XCIwLjA3NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDkzLjExMywgMCwgMCwgLTQ4LjY1NSwgMjE5ODYuMDczLCAtMTUxOTMuNjEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzdlMGUwOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM3ZTBlMDhcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJuXCIgY3g9XCItMjM1LjI4MlwiIGN5PVwiLTMwOS43MDRcIiByPVwiMC4wOTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg5Ny40MzQsIDAsIDAsIC03NS44NDgsIDIyOTM3LjA1NywgLTIzNDY3Ljg0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2EzMGMwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM4MDBlMDhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjODAwZTA4XCIvPjwvcmFkaWFsR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwib1wiIHgxPVwiLTIzMS4yNDFcIiB5MT1cIi0zMDkuNDM1XCIgeDI9XCItMjMxLjI5OVwiIHkyPVwiLTMwOS4zMzdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg0MC4xMzcsIDAsIDAsIC04MS4xNDMsIDkyODYuOTk4LCAtMjUwNzguNTg5KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzhiMjExNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjQzXCIgc3RvcC1jb2xvcj1cIiM5ZTEwMGFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYjMxMDBjXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2IzMTAwY1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cInBcIiB4MT1cIi0yMzUuODk4XCIgeTE9XCItMzE3LjQ2NlwiIHgyPVwiLTIzNS44MzFcIiB5Mj1cIi0zMTcuNTM3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNzguMDk5LCAwLCAwLCAtMzIuNjI0LCAxODQ0Ny4zNjEsIC0xMDM1My41NTMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYjMxMDAwXCIvPjxzdG9wIG9mZnNldD1cIjAuNDRcIiBzdG9wLWNvbG9yPVwiIzkxMGYwOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM3OTFjMTJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNzkxYzEyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcnVieTwvdGl0bGU+PHBhdGggZD1cIk0yMy42OTMsMjAuNDY5LDcuNzA3LDI5Ljk2MWwyMC43LTEuNEwzMCw3LjY4NVpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI4LjQ0LDI4LjU0MiwyNi42NjEsMTYuMjYzbC00Ljg0Niw2LjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yOC40NjQsMjguNTQyLDE1LjQzLDI3LjUxOSw3Ljc3NiwyOS45MzRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk03Ljc5NCwyOS45MzcsMTEuMDUsMTkuMjcsMy44ODUsMjAuOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIxLjgxMywyMi43bC0zLTExLjczNUwxMC4yNDMsMTlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0yOS4zMiwxMS4xMjdsLTguMS02LjYxOS0yLjI1Nyw3LjNaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0yNS41MywyLjE0OCwyMC43NjMsNC43ODJsLTMuMDA3LTIuNjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk0yLDI0LjM4bDItMy42NDJMMi4zODIsMTYuNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTIuMjc0LDE2LjI2MywzLjksMjAuODczbDcuMDYyLTEuNTg0TDE5LjAyNCwxMS44LDIxLjMsNC41NjlsLTMuNTgzLTIuNTMtNi4wOTEsMi4yOEM5LjcwNiw2LjEsNS45ODIsOS42MzUsNS44NDgsOS43cy0yLjQ1OSw0LjQ2NC0zLjU3NCw2LjU2MlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTcuOTgxLDcuOTgxQzEyLjE0LDMuODU4LDE3LjUsMS40MjEsMTkuNTU5LDMuNXMtLjEyNCw3LjEyMS00LjI4MywxMS4yNDRTNS44MjEsMjEuNDM0LDMuNzY1LDE5LjM1OCwzLjgyMiwxMi4xLDcuOTgxLDcuOTgxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNNy43OTQsMjkuOTMzbDMuMjMxLTEwLjcsMTAuNzI5LDMuNDQ3Yy0zLjg3OSwzLjYzOC04LjE5NCw2LjcxMy0xMy45Niw3LjI1NFpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTE5LjAzOCwxMS43NzRsMi43NTQsMTAuOTFjMy4yNC0zLjQwNyw2LjE0OS03LjA3LDcuNTczLTExLjZsLTEwLjMyOC42OTFaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+PHBhdGggZD1cIk0yOS4zMzcsMTEuMTM5YzEuMS0zLjMyNywxLjM1Ny04LjEtMy44NDEtOC45ODVMMjEuMjMxLDQuNTA5bDguMTA2LDYuNjI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2wpXCIvPjxwYXRoIGQ9XCJNMiwyNC4zMzJjLjE1Myw1LjQ5LDQuMTE0LDUuNTcyLDUuOCw1LjYybC0zLjktOS4xTDIsMjQuMzMyWlwiIHN0eWxlPVwiZmlsbDojOWUxMjA5XCIvPjxwYXRoIGQ9XCJNMTkuMDUzLDExLjc5MWMyLjQ5LDEuNTMxLDcuNTA5LDQuNiw3LjYxLDQuNjYxYTE3LjU1MiwxNy41NTIsMCwwLDAsMi42MTktNS4zNDNsLTEwLjIyOS42ODNaXCIgc3R5bGU9XCJmaWxsOnVybCgjbSlcIi8+PHBhdGggZD1cIk0xMS4wMjEsMTkuMjMybDQuMzE5LDguMzMyYTI3LjkyNCwyNy45MjQsMCwwLDAsNi4zODUtNC44OGwtMTAuNy0zLjQ1MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNuKVwiLz48cGF0aCBkPVwiTTMuODg3LDIwLjg2MWwtLjYxMiw3LjI4N2MxLjE1NSwxLjU3NywyLjc0MywxLjcxNCw0LjQwOSwxLjU5MS0xLjIwNS0zLTMuNjE0LTktMy44LTguODc4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI28pXCIvPjxwYXRoIGQ9XCJNMjEuMjA2LDQuNTI4bDguNTgsMS4yYy0uNDU4LTEuOTQtMS44NjQtMy4xOTItNC4yNjEtMy41ODRsLTQuMzE5LDIuMzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjcClcIi8+YCxcblx0XCJSdXN0XCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCItNDkyLjAzNVwiIGN5PVwiLTg4My4zN1wiIHI9XCIxMy45OThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjg2NiwgLTAuNSwgLTAuMywgLTAuNTIsIDE3Ny4xMDYsIC02ODkuMDMzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzdkN2Q3ZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjI2N1wiIHN0b3AtY29sb3I9XCIjN2U3YzdhXCIvPjxzdG9wIG9mZnNldD1cIjAuNDVcIiBzdG9wLWNvbG9yPVwiIzgxNzg3MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjYwOFwiIHN0b3AtY29sb3I9XCIjODY3MTYyXCIvPjxzdG9wIG9mZnNldD1cIjAuNzUzXCIgc3RvcC1jb2xvcj1cIiM4ZDY4NGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC44ODZcIiBzdG9wLWNvbG9yPVwiIzk2NWMzMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhMDRmMTJcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9ydXN0PC90aXRsZT48cGF0aCBkPVwiTTE1LjEyNCw1LjNhLjgzMi44MzIsMCwxLDEsLjgzMi44MzJoMGEuODMxLjgzMSwwLDAsMS0uODMyLS44MzJNNS4yLDEyLjgzNGEuODMyLjgzMiwwLDEsMSwuODMyLjgzMmgwYS44MzIuODMyLDAsMCwxLS44MzItLjgzMm0xOS44NTYuMDM5YS44MzIuODMyLDAsMSwxLC44MzIuODMyLjgzMS44MzEsMCwwLDEtLjgzMi0uODMyaDBNNy42MDUsMTQuMDEzYS43Ni43NiwwLDAsMCwuMzg2LTFsLS4zNjktLjgzNUg5LjA3NHY2LjU0NUg2LjE0NGExMC4yNDcsMTAuMjQ3LDAsMCwxLS4zMzItMy45MTFabTYuMDc0LjE2MVYxMi4yNDVoMy40NThjLjE3OSwwLDEuMjYxLjIwNiwxLjI2MSwxLjAxNiwwLC42NzItLjgzLjkxMy0xLjUxMy45MTNaTTguOTU4LDI0LjU2MWEuODMyLjgzMiwwLDEsMSwuODMyLjgzMi44MzEuODMxLDAsMCwxLS44MzItLjgzMmgwbTEyLjMzMS4wMzlhLjgzMi44MzIsMCwxLDEsLjgzMi44MzIuODMyLjgzMiwwLDAsMS0uODMyLS44MzJoMG0uMjU3LTEuODg3YS43NTguNzU4LDAsMCwwLS45LjU4NGwtLjQxOCwxLjk0OWExMC4yNDksMTAuMjQ5LDAsMCwxLTguNTQ1LS4wNDFsLS40MTctMS45NDlhLjc1OS43NTksMCwwLDAtLjktLjU4M2gwbC0xLjcyMS4zN2ExMC4yMzMsMTAuMjMzLDAsMCwxLS44OS0xLjA0OWg4LjM3NGMuMDk1LDAsLjE1OC0uMDE3LjE1OC0uMVYxOC45MjhjMC0uMDg2LS4wNjMtLjEtLjE1OC0uMWgtMi40NVYxNi45NDdoMi42NDlhMS42NjUsMS42NjUsMCwwLDEsMS42MjksMS40MTJjLjEwNS40MTMuMzM2LDEuNzU3LjQ5NCwyLjE4Ny4xNTcuNDgzLjgsMS40NDcsMS40ODIsMS40NDdoNC4zMjNhMTAuMjQzLDEwLjI0MywwLDAsMS0uOTQ5LDEuMVptNC42NS03LjgyMWExMC4yNjEsMTAuMjYxLDAsMCwxLC4wMjIsMS43NzlIMjUuMTY3Yy0uMTA1LDAtLjE0OC4wNjktLjE0OC4xNzJ2LjQ4M2MwLDEuMTM2LS42NDEsMS4zODQtMS4yLDEuNDQ3LS41MzUuMDYtMS4xMjgtLjIyNC0xLjItLjU1MWEzLjYxNiwzLjYxNiwwLDAsMC0xLjY3MS0yLjgwOGMxLjAzLS42NTQsMi4xLTEuNjE5LDIuMS0yLjkxMUEzLjI5MiwzLjI5MiwwLDAsMCwyMS40NCw5LjhhNC41NTksNC41NTksMCwwLDAtMi4yLS43MjRIOC4zNjdBMTAuMjQ2LDEwLjI0NiwwLDAsMSwxNC4xLDUuODRsMS4yODIsMS4zNDRhLjc1OC43NTgsMCwwLDAsMS4wNzIuMDI2aDBsMS40MzQtMS4zNzJhMTAuMjQ4LDEwLjI0OCwwLDAsMSw3LjAxNSw1bC0uOTgyLDIuMjE3YS43NjEuNzYxLDAsMCwwLC4zODYsMVptMi40NDguMDM2LS4wMzMtLjM0MywxLjAxMS0uOTQzYS40Mi40MiwwLDAsMC0uMDEzLS41OTUuNDI4LjQyOCwwLDAsMC0uMTIxLS4wODFMMjguMiwxMi40ODNsLS4xLS4zMzQuODA2LTEuMTJhLjQyMi40MjIsMCwwLDAtLjEzLS41ODEuNDMuNDMsMCwwLDAtLjEzMy0uMDU1bC0xLjM2My0uMjIyLS4xNjQtLjMwNi41NzMtMS4yNTdhLjQxOS40MTksMCwwLDAtLjIzNi0uNTQ0LjQyNi40MjYsMCwwLDAtLjE0Ni0uMDI5bC0xLjM4My4wNDhMMjUuNyw3LjgxOWwuMzE4LTEuMzQ3YS40MjEuNDIxLDAsMCwwLS4zNDMtLjQ4Ny40MzUuNDM1LDAsMCwwLS4xNDQsMEwyNC4xODMsNi4zbC0uMjY2LS4yMTlMMjMuOTY2LDQuN2EuNDIxLjQyMSwwLDAsMC0uNDMxLS40MTEuNDI2LjQyNiwwLDAsMC0uMTQxLjAyOGwtMS4yNTcuNTczLS4zMDYtLjE2NC0uMjIyLTEuMzYzYS40MjEuNDIxLDAsMCwwLS41LS4zMTguNDMuNDMsMCwwLDAtLjEzMy4wNTVsLTEuMTIxLjgwNi0uMzMzLS4xLS40ODMtMS4yOTNhLjQyMS40MjEsMCwwLDAtLjU1NS0uMjE1LjQ0Mi40NDIsMCwwLDAtLjEyLjA4TDE3LjQxOCwzLjM5bC0uMzQzLS4wMzNMMTYuMzQ3LDIuMThhLjQyMS40MjEsMCwwLDAtLjY4OCwwbC0uNzI4LDEuMTc3LS4zNDMuMDMzLS45NDMtMS4wMTJhLjQyMS40MjEsMCwwLDAtLjU5NS4wMTUuNDQyLjQ0MiwwLDAsMC0uMDguMTJMMTIuNDgzLDMuOGwtLjMzMy4xLTEuMTItLjhhLjQyMi40MjIsMCwwLDAtLjU4MS4xMy40My40MywwLDAsMC0uMDU1LjEzM2wtLjIyMiwxLjM2My0uMzA2LjE2NEw4LjYwOCw0LjMxN2EuNDIxLjQyMSwwLDAsMC0uNTQ0LjIzOS40NDQuNDQ0LDAsMCwwLS4wMjguMTQ0bC4wNDgsMS4zODNMNy44MTgsNi4zLDYuNDcxLDUuOTg0YS40MjEuNDIxLDAsMCwwLS40ODcuMzQzLjQzNS40MzUsMCwwLDAsMCwuMTQ0TDYuMyw3LjgxOWwtLjIxOC4yNjVMNC43LDguMDM2YS40MjIuNDIyLDAsMCwwLS4zODMuNTczTDQuODksOS44NjZsLS4xNjQuMzA2LTEuMzYzLjIyMmEuNDIuNDIsMCwwLDAtLjMxOC41LjQzLjQzLDAsMCwwLC4wNTUuMTMzbC44MDYsMS4xMi0uMS4zMzQtMS4yOTMuNDgzYS40MjEuNDIxLDAsMCwwLS4yMTUuNTU1LjQxNC40MTQsMCwwLDAsLjA4MS4xMjFsMS4wMTEuOTQzLS4wMzMuMzQzLTEuMTc3LjcyOGEuNDIxLjQyMSwwLDAsMCwwLC42ODhsMS4xNzcuNzI4LjAzMy4zNDMtMS4wMTEuOTQzYS40MjEuNDIxLDAsMCwwLC4wMTUuNTk1LjQzNi40MzYsMCwwLDAsLjExOS4wOGwxLjI5My40ODMuMS4zMzRMMy4xLDIwLjk3MmEuNDIxLjQyMSwwLDAsMCwuMTMxLjU4MS40My40MywwLDAsMCwuMTMzLjA1NWwxLjM2My4yMjIuMTY0LjMwNy0uNTczLDEuMjU3YS40MjIuNDIyLDAsMCwwLC4yNC41NDUuNDM4LjQzOCwwLDAsMCwuMTQzLjAyOGwxLjM4My0uMDQ4LjIxOS4yNjYtLjMxNywxLjM0OGEuNDIuNDIsMCwwLDAsLjM0MS40ODYuNC40LDAsMCwwLC4xNDYsMEw3LjgxOCwyNS43bC4yNjYuMjE4TDguMDM1LDI3LjNhLjQxOS40MTksMCwwLDAsLjQyOS40MS40MTMuNDEzLDAsMCwwLC4xNDMtLjAyOGwxLjI1Ny0uNTczLjMwNi4xNjQuMjIyLDEuMzYyYS40MjEuNDIxLDAsMCwwLC41LjMxOS40MDcuNDA3LDAsMCwwLC4xMzMtLjA1NWwxLjEyLS44MDcuMzM0LjEuNDgzLDEuMjkyYS40MjIuNDIyLDAsMCwwLC41NTYuMjE0LjQzNi40MzYsMCwwLDAsLjExOS0uMDhsLjk0My0xLjAxMS4zNDMuMDM0LjcyOCwxLjE3N2EuNDIyLjQyMiwwLDAsMCwuNTg4LjEuNDEzLjQxMywwLDAsMCwuMS0uMWwuNzI4LTEuMTc3LjM0My0uMDM0Ljk0MywxLjAxMWEuNDIxLjQyMSwwLDAsMCwuNTk1LS4wMTUuNDM2LjQzNiwwLDAsMCwuMDgtLjExOWwuNDgzLTEuMjkyLjMzNC0uMSwxLjEyLjgwN2EuNDIxLjQyMSwwLDAsMCwuNTgxLS4xMzEuNDMuNDMsMCwwLDAsLjA1NS0uMTMzbC4yMjItMS4zNjIuMzA2LS4xNjQsMS4yNTcuNTczYS40MjEuNDIxLDAsMCwwLC41NDQtLjIzOS40MzguNDM4LDAsMCwwLC4wMjgtLjE0M2wtLjA0OC0xLjM4NC4yNjUtLjIxOCwxLjM0Ny4zMTdhLjQyMS40MjEsMCwwLDAsLjQ4Ny0uMzQuNDQ3LjQ0NywwLDAsMCwwLS4xNDZMMjUuNywyNC4xODNsLjIxOC0uMjY2LDEuMzgzLjA0OGEuNDIxLjQyMSwwLDAsMCwuNDEtLjQzMS40LjQsMCwwLDAtLjAyOC0uMTQybC0uNTczLTEuMjU3LjE2NC0uMzA3LDEuMzYzLS4yMjJhLjQyMS40MjEsMCwwLDAsLjMxOS0uNS40MzQuNDM0LDAsMCwwLS4wNTYtLjEzNWwtLjgwNi0xLjEyLjEtLjMzNCwxLjI5My0uNDgzYS40Mi40MiwwLDAsMCwuMjE1LS41NTQuNDE0LjQxNCwwLDAsMC0uMDgxLS4xMjFsLTEuMDExLS45NDMuMDMzLS4zNDMsMS4xNzctLjcyOGEuNDIxLjQyMSwwLDAsMCwwLS42ODhaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJTQVNcIjogYDxwYXRoIGQ9XCJNMTYuMDE4LDMwQTE0LDE0LDAsMSwxLDMwLDE2LjIsMTQsMTQsMCwwLDEsMTYuMDE4LDMwWlwiIHN0eWxlPVwiZmlsbDojMDAyYmI1XCIvPjxwYXRoIGQ9XCJNOS4xNywyMi42M2MuMDI2LjA2MS4wNDYuMTI0LjA3Ny4xODMsMi4yMTUsNC4yMDYsNy43MzgsNC42MTYsMTAuNzU2LDIuNDU0YTYuMDE3LDYuMDE3LDAsMCwwLDEuNzMxLTguNTgzLDE1LjcsMTUuNywwLDAsMC0xLjMxOC0xLjczMWMtLjg4MS0xLjA2Ny0xLjc1NS0yLjE0LTIuNjM2LTMuMjA3LS4zNjYtLjQ0My0uNzY3LS44MzUtMS40MTYtLjY4M2ExLjM5MywxLjM5MywwLDAsMC0uODE2LDIuMzExYy44ODgsMS4xMDYsMS44MTksMi4xNzcsMi43LDMuMjg2YTMuODc0LDMuODc0LDAsMCwxLC41ODksNC40LDUuNDIzLDUuNDIzLDAsMCwxLTUsMy4xMzRBNi42LDYuNiwwLDAsMSw5LjE3LDIyLjYzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjIuNDk0LDkuNjA5Yy4wOC0uMjQ4LS4wNjYtLjM3LS4xNDEtLjUwOUE3LjQ3Nyw3LjQ3NywwLDAsMCwxMi42LDYuMjM3Yy0zLjMsMS42My01LjEsNS4zNTItMi42MzcsOS4xNDdhNTYuNTMsNTYuNTMsMCwwLDAsNC4xMzUsNS4xMiwxLjAxMiwxLjAxMiwwLDAsMCwuNzA5LjM0NSwxLjM4NCwxLjM4NCwwLDAsMCwxLjQyOC0uNzY1LDEuMjQ3LDEuMjQ3LDAsMCwwLS4xNzMtMS41MDdjLS44NzYtMS4wNTEtMS43NjktMi4wODgtMi42MTUtMy4xNjJhNC4xMyw0LjEzLDAsMCwxLC4zMjMtNS43NzFBNi4wNTQsNi4wNTQsMCwwLDEsMTkuOTg0LDguMTMsNS4xOSw1LjE5LDAsMCwxLDIyLjQ5NCw5LjYwOVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlNhc3MgKFNhc3MpXCI6IGA8cGF0aCBkPVwiTTI2LjExLDE3LjU3MmE1LjgsNS44LDAsMCwwLTIuNTM3LjU4OCw1LjM0NSw1LjM0NSwwLDAsMS0uNTY4LTEuMzE0LDMuNTMsMy41MywwLDAsMS0uMDUxLTEuMSw5LjgxMSw5LjgxMSwwLDAsMSwuMzMyLTEuMTkyYy0uMDA1LS4wNTEtLjA2MS0uMjkyLS42MjQtLjNzLTEuMDQ4LjEwNy0xLjEuMjU2YTYuMTcxLDYuMTcxLDAsMCwwLS4yMzUuODM0LDE5LjY4NiwxOS42ODYsMCwwLDEtMS43MTMsMy4yOTQsMy4xODYsMy4xODYsMCwwLDEtLjQ0LTIuMDY2LDkuODExLDkuODExLDAsMCwxLC4zMzItMS4xOTJjLS4wMDUtLjA1MS0uMDYxLS4yOTItLjYyNC0uM3MtMS4wNDguMTA3LTEuMS4yNTYtLjExOC41LS4yMzUuODM0LTEuNDgzLDMuMzg2LTEuODQxLDQuMTczYy0uMTg0LjQtLjM0My43MjYtLjQ1NS45NDZoMGEuMjMzLjIzMywwLDAsMS0uMDIuMDQxYy0uMS4xODktLjE1My4yOTItLjE1My4yOTJ2LjAwNWMtLjA3Ny4xMzgtLjE1OS4yNjYtLjIuMjY2YTEuNzExLDEuNzExLDAsMCwxLC4wMS0uODY5Yy4yLTEuMDU5LjY5LTIuNzA1LjY4NS0yLjc2MiwwLS4wMzEuMDkyLS4zMTctLjMxNy0uNDY1YS41MDguNTA4LDAsMCwwLS41NzguMWMtLjAzNiwwLS4wNjEuMDg3LS4wNjEuMDg3cy40NDUtMS44NTEtLjg0OS0xLjg1MWEzLjg1NSwzLjg1NSwwLDAsMC0yLjQ3NSwxLjY4M2MtLjM0OC4xODktMS4wODkuNTkzLTEuODgyLDEuMDI4LS4zLjE2OS0uNjE0LjMzOC0uOTA1LjUtLjAyLS4wMi0uMDQxLS4wNDYtLjA2MS0uMDY2QzYuODcsMTcuNiwzLjk3NSwxNi40MTYsNC4xLDE0LjE3MWMuMDQ2LS44MTguMzI3LTIuOTY2LDUuNTU5LTUuNTc1LDQuMzA2LTIuMTIyLDcuNzMzLTEuNTM0LDguMzI2LS4yMy44NDksMS44NjItMS44MzYsNS4zMTktNi4yODUsNS44MmEzLjM1MSwzLjM1MSwwLDAsMS0yLjgxMy0uNzExYy0uMjM1LS4yNTYtLjI3MS0uMjcxLS4zNTgtLjIyLS4xNDMuMDc3LS4wNTEuMzA3LDAsLjQ0YTIuNjI2LDIuNjI2LDAsMCwwLDEuNjA2LDEuMjYzLDguNTUsOC41NSwwLDAsMCw1LjIxNy0uNTE3YzIuNy0xLjA0Myw0LjgtMy45NDMsNC4xODQtNi4zNzItLjYxOS0yLjQ2NS00LjcxLTMuMjc4LTguNTgyLTEuOUExOS41LDE5LjUsMCwwLDAsNC4zNTksOS45NTJjLTIuMTMzLDEuOTk1LTIuNDcsMy43MjgtMi4zMzIsNC40NTUuNSwyLjU3OCw0LjA1MSw0LjI1NSw1LjQ3Miw1LjUtLjA3Mi4wNDEtLjEzOC4wNzctLjE5NC4xMDctLjcxMS4zNTMtMy40MjEsMS43Ny00LjEsMy4yNjgtLjc2NywxLjcuMTIzLDIuOTE1LjcxMSwzLjA3OWE0LjM3NCw0LjM3NCwwLDAsMCw0LjcxLTEuOTA4QTQuNzI1LDQuNzI1LDAsMCwwLDkuMDQ5LDIwLjFhLjEwNy4xMDcsMCwwLDAtLjAyLS4wMzFsLjU1Ny0uMzI3Yy4zNjMtLjIxNS43MjEtLjQxNCwxLjAyOC0uNTc4YTYuNzQsNi43NCwwLDAsMC0uMzYzLDEuODYyLDMuODg2LDMuODg2LDAsMCwwLC44MzQsMi43LjkyMS45MjEsMCwwLDAsLjY3NS4yMmMuNiwwLC44NzUtLjUsMS4xNzYtMS4wOTQuMzY4LS43MjYuNy0xLjU3LjctMS41N3MtLjQxNCwyLjI4MS43MTEsMi4yODFjLjQwOSwwLC44MjMtLjUzMiwxLjAwOC0uOHYuMDA1cy4wMS0uMDE1LjAzMS0uMDUxbC4wNjYtLjEwN3YtLjAxYy4xNjQtLjI4Ni41MzItLjkzNiwxLjA3OS0yLjAxNS43MDYtMS4zOTEsMS4zODYtMy4xMywxLjM4Ni0zLjEzYTguODg4LDguODg4LDAsMCwwLC4yNzEsMS4xMywxMC42NDMsMTAuNjQzLDAsMCwwLC41ODMsMS4zMDljLS4xNjQuMjMtLjI2Ni4zNTgtLjI2Ni4zNThsLjAwNS4wMDVjLS4xMzMuMTc0LS4yNzYuMzYzLS40MzUuNTQ3YTE2LjMsMTYuMywwLDAsMC0xLjMxNCwxLjY0Ny40NDcuNDQ3LDAsMCwwLC4xMjMuNiwxLjExNiwxLjExNiwwLDAsMCwuNjg1LjExMywzLjE0NywzLjE0NywwLDAsMCwxLjAyOC0uMjM1LDMuNDUsMy40NSwwLDAsMCwuODg1LS40NjUsMS45OCwxLjk4LDAsMCwwLC44NDktMS43NDQsMy41MjEsMy41MjEsMCwwLDAtLjMyMi0xLjIzM2MuMDUxLS4wNzIuMS0uMTQzLjE0OC0uMjE1YTIzLjQyOCwyMy40MjgsMCwwLDAsMS41MzQtMi42NDksOC44ODgsOC44ODgsMCwwLDAsLjI3MSwxLjEzLDcuNTcsNy41NywwLDAsMCwuNSwxLjEyNUE0Ljg2MSw0Ljg2MSwwLDAsMCwyMC45NjUsMjAuOGMtLjMyMi45MzEtLjA3MiwxLjM1LjQsMS40NDdhMS40MjUsMS40MjUsMCwwLDAsLjc0Ny0uMTUzLDMuNCwzLjQsMCwwLDAsLjk0Ni0uNDg2LDIuMTI2LDIuMTI2LDAsMCwwLDEuMDQzLTEuNzI5LDMuMjY4LDMuMjY4LDAsMCwwLS4yMzUtMS4wMjMsNS4zNTYsNS4zNTYsMCwwLDEsMi43MTYtLjMxMmMyLjQzNC4yODYsMi45MTUsMS44MDUsMi44MjMsMi40NDVhMS42MTgsMS42MTgsMCwwLDEtLjc3MiwxLjA5NGMtLjE2OS4xMDctLjIyNS4xNDMtLjIxLjIyLjAyLjExMy4xLjEwNy4yNDUuMDg3QTEuOSwxLjksMCwwLDAsMzAsMjAuN2MuMDc3LTEuNS0xLjM1NS0zLjE0NS0zLjg4Ny0zLjEzWk03LjMzLDIzLjljLS44MDguODgtMS45MzMsMS4yMTItMi40MTkuOTMxLS41MjItLjMtLjMxNy0xLjYuNjc1LTIuNTMyYTEyLjg4NCwxMi44ODQsMCwwLDEsMS45LTEuNDE3Yy4xMTgtLjA3Mi4yOTItLjE3NC41LS4zbC4wNTYtLjAzMWgwbC4xMjMtLjA3N0EzLjQ5MywzLjQ5MywwLDAsMSw3LjMzLDIzLjlabTUuODgxLTRjLS4yODEuNjg1LS44NjksMi40NC0xLjIyNywyLjM0Mi0uMzA3LS4wODItLjUtMS40MTItLjA2MS0yLjcyNmE2LjE5Myw2LjE5MywwLDAsMSwuOTU2LTEuNzU0Yy40NC0uNDkxLjkyNi0uNjU1LDEuMDQzLS40NTVhOS4wNjIsOS4wNjIsMCwwLDEtLjcxMSwyLjU5M1ptNC44NTMsMi4zMjJjLS4xMTguMDYxLS4yMy4xLS4yODEuMDcyLS4wMzYtLjAyLjA1MS0uMS4wNTEtLjFzLjYwOS0uNjU1Ljg0OS0uOTUxYy4xMzgtLjE3NC4zLS4zNzguNDc2LS42MDlWMjAuN2MwLC43ODItLjc1NywxLjMwOS0xLjA5NCwxLjUyNFptMy43NDQtLjg1NGMtLjA4Ny0uMDYxLS4wNzItLjI2Ni4yMi0uOTA1YTMuNDA4LDMuNDA4LDAsMCwxLC44MzQtMS4wNzQsMS40NDgsMS40NDgsMCwwLDEsLjA4Mi40NzEsMS41NDcsMS41NDcsMCwwLDEtMS4xMzUsMS41MDlaXCIgc3R5bGU9XCJmaWxsOiNjZDY3OTlcIi8+YCxcblx0XCJTYXNzIChTQ1NTKVwiOiBgPHBhdGggZD1cIk0xNi4xNzEsMTguN2MtLjQ4MS4yMjEtMS4wMDguNTA5LTIuMDYzLDEuMDg4LS40LjIyNS0uODE4LjQ1LTEuMjA3LjY2Mi0uMDI3LS4wMjctLjA1NS0uMDYxLS4wODItLjA4OS0yLjA4Ny0yLjIzLTUuOTQ3LTMuODA1LTUuNzgzLTYuOC4wNjEtMS4wOTEuNDM2LTMuOTU1LDcuNDEzLTcuNDMzLDUuNzQyLTIuODMsMTAuMzExLTIuMDQ2LDExLjEtLjMwN0MyNi42ODMsOC4zLDIzLjEsMTIuOTEzLDE3LjE3LDEzLjU4MmE0LjQ2OSw0LjQ2OSwwLDAsMS0zLjc1MS0uOTQ4Yy0uMzE0LS4zNDEtLjM2MS0uMzYxLS40NzctLjI5My0uMTkxLjEtLjA2OC40MDksMCwuNTg2YTMuNSwzLjUsMCwwLDAsMi4xNDEsMS42ODQsMTEuNCwxMS40LDAsMCwwLDYuOTU2LS42ODljMy41OTQtMS4zOTEsNi40LTUuMjU4LDUuNTc4LTguNS0uODI1LTMuMjg3LTYuMjgxLTQuMzcxLTExLjQ0My0yLjUzN2EyNiwyNiwwLDAsMC04Ljc5LDUuMDQ3Yy0yLjg0NCwyLjY2LTMuMjk0LDQuOTcyLTMuMTEsNS45NC42NjIsMy40MzcsNS40LDUuNjc0LDcuMyw3LjMzMS0uMS4wNTUtLjE4NC4xLS4yNTkuMTQzLS45NDguNDcxLTQuNTYyLDIuMzYtNS40NjMsNC4zNTgtMS4wMjMsMi4yNjQuMTY0LDMuODg3Ljk0OCw0LjEwNWE1LjgzMiw1LjgzMiwwLDAsMCw2LjI4MS0yLjU0NCw2LjMsNi4zLDAsMCwwLC41NTktNS44LDUuMDMsNS4wMywwLDAsMSwuNzE2LS40NzdjLjQ4NC0uMjg2Ljk0NS0uNTY4LDEuMzU0LS43ODZsMCwwYTEwLjQ3NSwxMC40NzUsMCwwLDEsNC40NzUtLjk4OWMzLjI0Ni4zODIsMy44ODcsMi40MDcsMy43NjQsMy4yNmEyLjE1NywyLjE1NywwLDAsMS0xLjAzLDEuNDU5Yy0uMjI1LjE0My0uMy4xOTEtLjI4LjI5My4wMjcuMTUuMTM2LjE0My4zMjcuMTE2YTIuNTM1LDIuNTM1LDAsMCwwLDEuNzY2LTIuMjU3Yy4xLTItMS44MDctNC4xOTQtNS4xODMtNC4xNzRhNy43NTMsNy43NTMsMCwwLDAtMi45NDYuNTg3cS0uMjI1LjA5My0uNDM3LjJabS00LjgyNSw3LjgzOWMtMS4wNzgsMS4xNzMtMi41NzgsMS42MTYtMy4yMjYsMS4yNDEtLjctLjQtLjQyMy0yLjEzNS45LTMuMzc2YTE3LjE4LDE3LjE4LDAsMCwxLDIuNTMtMS44ODljLjE1Ny0uMS4zODktLjIzMi42NjgtLjQuMDQ4LS4wMjcuMDc1LS4wNDEuMDc1LS4wNDFsLjE2NC0uMUE0LjY1OCw0LjY1OCwwLDAsMSwxMS4zNDYsMjYuNTM5WlwiIHN0eWxlPVwiZmlsbDojY2Q2Nzk5XCIvPmAsXG5cdFwiU2NhbGFcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzQuOTA3XCIgeTE9XCIyMDQuNTcyXCIgeDI9XCItMTM0Ljg5NlwiIHkyPVwiMjA0LjU3MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1MzgsIDAsIDAsIC05NjEuMjUsIDIwNzQ5NSwgMTk2NjYxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U2MmQyYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjZcIiBzdG9wLWNvbG9yPVwiI2RmM2YzZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjhcIiBzdG9wLWNvbG9yPVwiI2RmM2YzZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlNjJkMmFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMTM0LjkwN1wiIHkxPVwiMjAzLjc4MVwiIHgyPVwiLTEzNC44OTZcIiB5Mj1cIjIwMy43ODFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTM4LCAwLCAwLCAtOTYxLjI1LCAyMDc0OTUsIDE5NTg5MilcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTEzNC45MDdcIiB5MT1cIjIwNS4zNjNcIiB4Mj1cIi0xMzQuODk2XCIgeTI9XCIyMDUuMzYzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTUzOCwgMCwgMCwgLTk2MS4yNSwgMjA3NDk1LCAxOTc0MzApXCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3NjYWxhPC90aXRsZT48cGF0aCBkPVwiTTcuMzg0LDE5LjIzMXYyLjE1NGMwLC4zNjMsNy44MzMuOTcxLDEyLjkzNywyLjE1NCwyLjQ2NS0uNTcxLDQuMjk1LTEuMjc3LDQuMjk1LTIuMTU0VjE5LjIzMWMwLS44NzctMS44My0xLjU4Mi00LjI5NS0yLjE1NC01LjEsMS4xODMtMTIuOTM3LDEuNzkxLTEyLjkzNywyLjE1NFwiIHN0eWxlPVwiZmlsbDojN2YwYzFkXCIvPjxwYXRoIGQ9XCJNNy4zODQsMTAuNjE1djIuMTU0YzAsLjM2Myw3LjgzMy45NzEsMTIuOTM3LDIuMTU0LDIuNDY1LS41NzEsNC4yOTUtMS4yNzcsNC4yOTUtMi4xNTRWMTAuNjE1YzAtLjg3Ny0xLjgzLTEuNTgyLTQuMjk1LTIuMTU0LTUuMSwxLjE4My0xMi45MzcsMS43OTEtMTIuOTM3LDIuMTU0XCIgc3R5bGU9XCJmaWxsOiM3ZjBjMWRcIi8+PHBhdGggZD1cIk03LjM4NCwxNC45MjN2Ni40NjJjMC0uNTM4LDE3LjIzMi0xLjYxNSwxNy4yMzItNC4zMDhWMTAuNjE1YzAsMi42OTItMTcuMjMyLDMuNzY5LTE3LjIzMiw0LjMwOFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNNy4zODQsNi4zMDhWMTIuNzdjMC0uNTM4LDE3LjIzMi0xLjYxNSwxNy4yMzItNC4zMDhWMmMwLDIuNjkyLTE3LjIzMiwzLjc2OS0xNy4yMzIsNC4zMDhcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTcuMzg0LDIzLjUzOFYzMGMwLS41MzgsMTcuMjMyLTEuNjE1LDE3LjIzMi00LjMwOFYxOS4yMzFjMCwyLjY5Mi0xNy4yMzIsMy43NjktMTcuMjMyLDQuMzA4XCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+YCxcblx0XCJTaGVsbCBzZXNzaW9uXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuMDc3IDE5LjMxNiA1LjUyMiAxOC40ODQgMTAuMzY2IDE1LjI1NSA1LjQ3OSAxMS4xODQgNi4xMiAxMC40MTYgMTIuMDM1IDE1LjM0NCA2LjA3NyAxOS4zMTZcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMTIuN1wiIHk9XCIxOC4yXCIgd2lkdGg9XCI3LjhcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjIuNVwiIHk9XCI1LjVcIiB3aWR0aD1cIjI2LjlcIiBoZWlnaHQ9XCIxLjlcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz5gLFxuXHRcIlNoZWxsXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuMDc3IDE5LjMxNiA1LjUyMiAxOC40ODQgMTAuMzY2IDE1LjI1NSA1LjQ3OSAxMS4xODQgNi4xMiAxMC40MTYgMTIuMDM1IDE1LjM0NCA2LjA3NyAxOS4zMTZcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMTIuN1wiIHk9XCIxOC4yXCIgd2lkdGg9XCI3LjhcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjIuNVwiIHk9XCI1LjVcIiB3aWR0aD1cIjI2LjlcIiBoZWlnaHQ9XCIxLjlcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz5gLFxuXHRcIlNtYXJ0eVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTMuODU5XCIgeTE9XCIyOS4yMTlcIiB4Mj1cIjE4LjEwNlwiIHkyPVwiMjkuMjE5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzYzNjM2MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjE3OFwiIHN0b3AtY29sb3I9XCIjNmM2ZDcwXCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiM2ZjcxNzVcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMDlcIiBzdG9wLWNvbG9yPVwiIzYxNjM2NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ4MVwiIHN0b3AtY29sb3I9XCIjM2MzZDNmXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE2XCIgc3RvcC1jb2xvcj1cIiMwMTAxMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjM2YTZlXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMTUuMTc4XCIgeTE9XCIyOS43MzRcIiB4Mj1cIjE2Ljc4N1wiIHkyPVwiMjkuNzM0XCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIjE1LjI3N1wiIHkxPVwiMjkuODgxXCIgeDI9XCIxNi42ODhcIiB5Mj1cIjI5Ljg4MVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM5YjliOThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMzFcIiBzdG9wLWNvbG9yPVwiI2E0YTVhN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjYWViMWI4XCIvPjxzdG9wIG9mZnNldD1cIjAuMzUyXCIgc3RvcC1jb2xvcj1cIiM5ZmE0YWJcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MDVcIiBzdG9wLWNvbG9yPVwiIzc4ODE4OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiIHN0b3AtY29sb3I9XCIjNjU3MDc2XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzhiOTQ5YVwiLz48L2xpbmVhckdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImRcIiBjeD1cIi04LjQ1NlwiIGN5PVwiLTE2LjYxNlwiIHI9XCIxOS4zODNcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzNC4wNDIgMzcuMDYzKSBzY2FsZSgxLjA1NClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjNzA3MDZlXCIvPjxzdG9wIG9mZnNldD1cIjAuMTEyXCIgc3RvcC1jb2xvcj1cIiM2MTYyNjFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiIzQ2NDc0YVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQwOFwiIHN0b3AtY29sb3I9XCIjNDg0OTRjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDg3XCIgc3RvcC1jb2xvcj1cIiM0ZTUwNTNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NDRcIiBzdG9wLWNvbG9yPVwiIzVhNWM1ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjU5MlwiIHN0b3AtY29sb3I9XCIjNmE2ZTcxXCIvPjxzdG9wIG9mZnNldD1cIjAuNjMzXCIgc3RvcC1jb2xvcj1cIiM3Zjg1ODhcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NjdcIiBzdG9wLWNvbG9yPVwiIzk3OWVhMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiIHN0b3AtY29sb3I9XCIjM2Q0NDQ3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzY1NmM3MFwiLz48L3JhZGlhbEdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIjE2LjEyNlwiIHkxPVwiMjguMTA4XCIgeDI9XCIxNi4wNVwiIHkyPVwiMjYuODkzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzliOWI5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjEwOVwiIHN0b3AtY29sb3I9XCIjYTVhNmE3XCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiNiYWJjYzRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMTFcIiBzdG9wLWNvbG9yPVwiI2FiYWViNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ4N1wiIHN0b3AtY29sb3I9XCIjODQ4OThmXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiM0ODUwNTRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOGI5NDlhXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiMTYuMDEzXCIgeTE9XCIyNi41NDJcIiB4Mj1cIjE1Ljg5NVwiIHkyPVwiMjQuNjM1XCIgeGxpbms6aHJlZj1cIiNlXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIjE2LjAyM1wiIHkxPVwiMjUuNTQ2XCIgeDI9XCIxNS44ODdcIiB5Mj1cIjIzLjM1NVwiIHhsaW5rOmhyZWY9XCIjZVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCIxNi4wMTNcIiB5MT1cIjI3LjYyN1wiIHgyPVwiMTUuODk1XCIgeTI9XCIyNS43MlwiIHhsaW5rOmhyZWY9XCIjZVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCIxMy42OFwiIHkxPVwiMjguODA1XCIgeDI9XCIxOC4yODRcIiB5Mj1cIjI4LjgwNVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM1NDU0NTNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wNzFcIiBzdG9wLWNvbG9yPVwiIzYxNjI2MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE0M1wiIHN0b3AtY29sb3I9XCIjODQ4NTg5XCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiNhZWIxYjhcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTJcIiBzdG9wLWNvbG9yPVwiIzlmYTRhYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYwNVwiIHN0b3AtY29sb3I9XCIjNzg4MTg4XCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiM2NTcwNzZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNTA1NjU5XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwia1wiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNS44MTNcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjUuODEzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTVlMWRmXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2RkZGFkNlwiLz48c3RvcCBvZmZzZXQ9XCIwLjAzOFwiIHN0b3AtY29sb3I9XCIjY2VjY2M5XCIvPjxzdG9wIG9mZnNldD1cIjAuMTEyXCIgc3RvcC1jb2xvcj1cIiNhN2E5YThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTJcIiBzdG9wLWNvbG9yPVwiIzY5NzA3MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjI2NFwiIHN0b3AtY29sb3I9XCIjNDY1MDU0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzAzXCIgc3RvcC1jb2xvcj1cIiM2MzZjNmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zOThcIiBzdG9wLWNvbG9yPVwiI2E1YWFhY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ3OFwiIHN0b3AtY29sb3I9XCIjZDVkN2Q5XCIvPjxzdG9wIG9mZnNldD1cIjAuNTM5XCIgc3RvcC1jb2xvcj1cIiNmM2Y0ZjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NzNcIiBzdG9wLWNvbG9yPVwiI2ZlZmVmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYyXCIgc3RvcC1jb2xvcj1cIiNmNGY1ZjZcIi8+PHN0b3Agb2Zmc2V0PVwiMC42OTlcIiBzdG9wLWNvbG9yPVwiI2RhZGNkZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjhcIiBzdG9wLWNvbG9yPVwiI2IwYjRiOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjg3NlwiIHN0b3AtY29sb3I9XCIjOGI5Mjk4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2QxZDNkNFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhN2E5YWNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJsXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI0LjcyOFwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNC43MjhcIiB4bGluazpocmVmPVwiI2tcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwibVwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyMy41NDhcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjMuNTQ4XCIgeGxpbms6aHJlZj1cIiNrXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cIm5cIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjYuODk4XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI2Ljg5OFwiIHhsaW5rOmhyZWY9XCIja1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJvXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI1Ljk2N1wiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNS45NjdcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNWUxZGZcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZGRlOGQwXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2QyZjNiYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjAzNlwiIHN0b3AtY29sb3I9XCIjYzVlNGIxXCIvPjxzdG9wIG9mZnNldD1cIjAuMTA1XCIgc3RvcC1jb2xvcj1cIiNhNGJkOThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xOTlcIiBzdG9wLWNvbG9yPVwiIzZlN2Y3MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjI2NFwiIHN0b3AtY29sb3I9XCIjNDY1MDU0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzAzXCIgc3RvcC1jb2xvcj1cIiM2MzZjNmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zOThcIiBzdG9wLWNvbG9yPVwiI2E1YWFhY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ3OFwiIHN0b3AtY29sb3I9XCIjZDVkN2Q5XCIvPjxzdG9wIG9mZnNldD1cIjAuNTM5XCIgc3RvcC1jb2xvcj1cIiNmM2Y0ZjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NzNcIiBzdG9wLWNvbG9yPVwiI2ZlZmVmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYyXCIgc3RvcC1jb2xvcj1cIiNmNGY1ZjZcIi8+PHN0b3Agb2Zmc2V0PVwiMC42OTlcIiBzdG9wLWNvbG9yPVwiI2RhZGNkZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjhcIiBzdG9wLWNvbG9yPVwiI2IwYjRiOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjg3NlwiIHN0b3AtY29sb3I9XCIjOGI5Mjk4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2QxZDNkNFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhN2E5YWNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJwXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI0Ljg4M1wiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNC44ODNcIiB4bGluazpocmVmPVwiI29cIi8+PGxpbmVhckdyYWRpZW50IGlkPVwicVwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNy4wNVwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNy4wNVwiIHhsaW5rOmhyZWY9XCIjb1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJyXCIgeDE9XCIxMS45MDJcIiB5MT1cIjIzLjIwMVwiIHgyPVwiMTkuODg0XCIgeTI9XCIyMy4yMDFcIiB4bGluazpocmVmPVwiI2VcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwic1wiIGN4PVwiLTE2Ljk4M1wiIGN5PVwiLTIyLjk0OFwiIHI9XCIxMC43MThcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzNC4wNDIgMzcuMDYzKSBzY2FsZSgxLjA1NClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZmZDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MDVcIiBzdG9wLWNvbG9yPVwiI2ZmMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2OFwiIHN0b3AtY29sb3I9XCIjZmRmNzAwXCIvPjxzdG9wIG9mZnNldD1cIjAuNjY0XCIgc3RvcC1jb2xvcj1cIiNmNmUyMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC43ODJcIiBzdG9wLWNvbG9yPVwiI2ViYmYwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjkwNlwiIHN0b3AtY29sb3I9XCIjZGU5MjAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2RhOTgxOVwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3NtYXJ0eTwvdGl0bGU+PHBhdGggZD1cIk0xMy44NTksMjguNzc2YS4yNDIuMjQyLDAsMCwwLC4xMjguMTkxLDEyLDEyLDAsMCwwLDEuMzkyLjYyMiw0LjMsNC4zLDAsMCwwLC41NzguMDcyaC4wNTJhNC4zLDQuMywwLDAsMCwuNTc4LS4wNzIsMTIuMDE0LDEyLjAxNCwwLDAsMCwxLjM5Mi0uNjIyLjI0My4yNDMsMCwwLDAsLjEyOC0uMTkxbC0yLjEzNy4xOTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNi4wMTQsMzBhMS4xMjMsMS4xMjMsMCwwLDAsLjY4OC0uMjQ3LjE3NS4xNzUsMCwwLDAsLjA4NS0uMTI2di0uMTA1YTMuMjM1LDMuMjM1LDAsMCwwLS43NzMtLjA1M2gtLjA2M2EzLjIzNywzLjIzNywwLDAsMC0uNzczLjA1M3YuMTA1YS4xNzUuMTc1LDAsMCwwLC4wODUuMTI2LDEuMTIyLDEuMTIyLDAsMCwwLC42ODguMjQ3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTUuOTUxLDI5LjgwN2E0LjczMiw0LjczMiwwLDAsMS0uNjc0LS4wNDQsMS4xMDUsMS4xMDUsMCwwLDAsLjY3NC4yMzdoLjA2M2ExLjEwNiwxLjEwNiwwLDAsMCwuNjc1LS4yMzcsNC43MzMsNC43MzMsMCwwLDEtLjY3NS4wNDRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xOS44MDksMjYuODM4YTEsMSwwLDAsMC0uMjM0LjM4OWMtLjAzNi4xODEtLjEuNTg1LTEuMzI2LDEuNDA2bC0uMDI1LjAxN2EuNDM1LjQzNSwwLDAsMS0uMDg2LjAzNyw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1NS4yMDksOS45NjgsOS45NjgsMCwwLDEtMi4xNTYtLjIwOS40MzYuNDM2LDAsMCwxLS4wODUtLjAzNmwtLjAyNS0uMDE3YTQuNTc5LDQuNTc5LDAsMCwxLTEuMTItLjk1N2MtLjE2NC0uMjE5LS4zNzMtLjI1Ny0uMzktLjM0NWEyMS4wNTUsMjEuMDU1LDAsMCwwLDMuODU1LjA1NywxMy4wNDksMTMuMDQ5LDAsMCwwLDMuNzYxLS42NTRBLjY5Mi42OTIsMCwwLDEsMTkuODA5LDI2LjgzOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTE5Ljc3MiwyNi44OGEuOTg1Ljk4NSwwLDAsMS0uMjQ2LjEyOWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUsMjUuMTUsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjhhMS4wNjIsMS4wNjIsMCwwLDEtLjE0LS4wMjgsMS4wMTYsMS4wMTYsMCwwLDEsLjE0LjEwN2MuMTYuMDEzLjMxOS4wMTkuMzE5LjAxOWEyNi44NjQsMjYuODY0LDAsMCwwLDYuNzQzLS4zMjNsLjAwOS0uMDQyQS44ODUuODg1LDAsMCwxLDE5Ljc3MiwyNi44OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTE5LjQzOSwyNS4zODJzLjI0NS0uMDcuMjQ1LS4xNjJhLjExNC4xMTQsMCwwLDAtLjAxMy0uMDY1LjIxNC4yMTQsMCwwLDEtLjA2MS0uMTQ0LjQzNy40MzcsMCwwLDEsLjExOS0uMjcsMS4wNjksMS4wNjksMCwwLDEtLjIuMWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUxLDI1LjE1MSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA1NSwxLjA1NSwwLDAsMS0uMTgxLS4wNDEuMzc3LjM3NywwLDAsMSwuMDc4LjIxNy43MTYuNzE2LDAsMCwxLS4yNTQuNDMyLjY3My42NzMsMCwwLDEsLjM2OC0uMDc5QTI2LjIsMjYuMiwwLDAsMCwxOS40MzksMjUuMzgyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI0LjIyOXMuMjQ1LS4wNzguMjQ1LS4xODJhLjE0My4xNDMsMCwwLDAtLjAxMy0uMDczLjI1NC4yNTQsMCwwLDEtLjA2MS0uMTYyLjUxNC41MTQsMCwwLDEsLjExOS0uMywxLjAyNiwxLjAyNiwwLDAsMS0uMi4xMTFjLS4wNzYuMDMyLS4yNDUuMDg4LS4yNDUuMDg4YTIyLjUwNywyMi41MDcsMCwwLDEtNi40NTguNDg5Yy0uMTM2LS4wMS0uMzItLjAzMi0uMzItLjAzMmEuOTUzLjk1MywwLDAsMS0uMTgxLS4wNDYuNDU1LjQ1NSwwLDAsMSwuMDc4LjI0My44MjUuODI1LDAsMCwxLS4yNTQuNDg0LjYxNC42MTQsMCwwLDEsLjM2OC0uMDg5QzEzLjAxNCwyNC43NTgsMTYuOTM1LDI1LjA0MSwxOS40MzksMjQuMjI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI2LjQ2N3MuMjQ1LS4wNy4yNDUtLjE2M2EuMTE1LjExNSwwLDAsMC0uMDEzLS4wNjUuMjE0LjIxNCwwLDAsMS0uMDYxLS4xNDQuNDM1LjQzNSwwLDAsMSwuMTE5LS4yNywxLjA3LDEuMDcsMCwwLDEtLjIuMWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTYyLDI1LjE2MiwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA0MiwxLjA0MiwwLDAsMS0uMTgxLS4wNDEuMzc3LjM3NywwLDAsMSwuMDc4LjIxNy43MTcuNzE3LDAsMCwxLS4yNTQuNDMyLjY3LjY3LDAsMCwxLC4zNjgtLjA3OUEyNi4yMDcsMjYuMjA3LDAsMCwwLDE5LjQzOSwyNi40NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0xOS40MzksMjYuNDY3cy4yNDUtLjA3LjI0NS0uMTYzYS4xMTUuMTE1LDAsMCwwLS4wMTMtLjA2NS4yMTQuMjE0LDAsMCwxLS4wNjEtLjE0NC40MzUuNDM1LDAsMCwxLC4xMTktLjI3LDEuMDcsMS4wNywwLDAsMS0uMi4xYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNjgsMjUuMTY4LDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDQyLDEuMDQyLDAsMCwxLS4xODEtLjA0MS4zNzYuMzc2LDAsMCwxLC4wNzguMjE3LjcxNy43MTcsMCwwLDEtLjI1NC40MzIuNjcuNjcsMCwwLDEsLjM2OC0uMDc5QTI2LjIwNywyNi4yMDcsMCwwLDAsMTkuNDM5LDI2LjQ2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTE4LjIyNCwyOC42NWEuNDM1LjQzNSwwLDAsMS0uMDg2LjAzNyw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1NS4yMDksOS45NjgsOS45NjgsMCwwLDEtMi4xNTYtLjIwOS40MzYuNDM2LDAsMCwxLS4wODUtLjAzNmwtLjAyNS0uMDE3LS4wMjktLjAxOWEuMTEyLjExMiwwLDAsMCwwLC4wNzNjLjAyNC4wNzMuMTQ3LjEuMTQ3LjFhOS45NDMsOS45NDMsMCwwLDAsMi4xNS4yMDksOS45NDIsOS45NDIsMCwwLDAsMi4xNS0uMjA5cy4xMjYtLjAyOS4xNDctLjFhLjExOC4xMTgsMCwwLDAsMC0uMDczbC0uMDI5LjAxOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyNS41cy4wNDEuMjUyLS40MTguNDIzYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNjIsMjUuMTYyLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4LS4yNzYtLjAzOC0uNDY3LS4xNi0uNDU1LS4zMDgsMCwwLS4wMzMtLjI0OS40NjYtLjI0OWEyNi4yLDI2LjIsMCwwLDAsNi45MjUtLjQ3MnMuMjQ1LS4wNy4yNDUtLjE2MmEuMTExLjExMSwwLDAsMC0uMDEzLS4wNjZTMTkuOTQ0LDI1LjMxMiwxOS45NDQsMjUuNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyNC40MTZzLjA0MS4yNTItLjQxOC40MjNjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE1MSwyNS4xNTEsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjgtLjI3Ni0uMDM4LS40NjctLjE2LS40NTUtLjMwOCwwLDAtLjAzMy0uMjQ4LjQ2Ni0uMjQ4YTI2LjE5MywyNi4xOTMsMCwwLDAsNi45MjUtLjQ3MnMuMjQ1LS4wNy4yNDUtLjE2MmEuMTEuMTEsMCwwLDAtLjAxMy0uMDY1UzE5Ljk0NCwyNC4yMjcsMTkuOTQ0LDI0LjQxNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNsKVwiLz48cGF0aCBkPVwiTTE5Ljg5MywyNC40MDZ2LS4wMjFjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI2LS4yNDUuMDczLS4yNDUuMDczYTIyLjM3MiwyMi4zNzIsMCwwLDEtNS4xLjVoMGEyMi4xNTUsMjIuMTU1LDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjQuNjQzLDE5Ljg5MywyNC40MDYsMTkuODkzLDI0LjQwNlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5Ljg5MywyNS40OTFWMjUuNDdjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI3LS4yNDUuMDczLS4yNDUuMDczYTIyLjM4LDIyLjM4LDAsMCwxLTUuMS41aDBhMjIuMTcxLDIyLjE3MSwwLDAsMCw1LjEtLjQ0MXMuMTY5LS4wNDcuMjQ1LS4wNzNDMTkuOTMzLDI1LjcyOCwxOS44OTMsMjUuNDkxLDE5Ljg5MywyNS40OTFaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS45NDQsMjMuMDM0cy4wNDEuMzI5LS40MTguNTUyYy0uMDc2LjAzNy0uMjQ1LjEtLjI0NS4xYTE5LjQwOSwxOS40MDksMCwwLDEtNi40NTguNTY5Yy0uMTM2LS4wMTItLjMyLS4wMzctLjMyLS4wMzctLjI3Ni0uMDUtLjQ2Ny0uMjA5LS40NTUtLjQsMCwwLS4wMzMtLjMyNC40NjYtLjMyNGExOC4yODMsMTguMjgzLDAsMCwwLDYuOTI1LS40NjEsMS4wMTQsMS4wMTQsMCwwLDAsLjQ0NC0uMjM4QS41My41MywwLDAsMSwxOS45NDQsMjMuMDM0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI20pXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDI2LjU4NnMuMDQxLjI1Mi0uNDE4LjQyM2MtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUsMjUuMTUsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjgtLjI3Ni0uMDM4LS40NjctLjE2LS40NTUtLjMwOCwwLDAtLjAzMy0uMjQ4LjQ2Ni0uMjQ4YTI2LjIwNywyNi4yMDcsMCwwLDAsNi45MjUtLjQ3MnMuMjQ1LS4wNy4yNDUtLjE2M2EuMTExLjExMSwwLDAsMC0uMDEzLS4wNjVTMTkuOTQ0LDI2LjQsMTkuOTQ0LDI2LjU4NlpcIiBzdHlsZT1cImZpbGw6dXJsKCNuKVwiLz48cGF0aCBkPVwiTTE5Ljg5MywyNi41NzZ2LS4wMjFjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI2LS4yNDUuMDczLS4yNDUuMDczYTIyLjM3MiwyMi4zNzIsMCwwLDEtNS4xLjVoMGEyMi4xNjMsMjIuMTYzLDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjYuODEzLDE5Ljg5MywyNi41NzYsMTkuODkzLDI2LjU3NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5Ljg5MywyMy4zMjFWMjMuM2MtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjctLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzcyLDIyLjM3MiwwLDAsMS01LjEuNWgwYTIyLjE1NiwyMi4xNTYsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyMy41NTgsMTkuODkzLDIzLjMyMSwxOS44OTMsMjMuMzIxWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTIuNDE3LDI1Ljg4MXMtLjIzNiwwLS4yNDEuMDguMjQ2LjA4NS4yNDYuMDg1LjE3NSwwLC4zLjAwNWMuNjE5LS4wMTMsMS45OTMtLjAzOCwzLjQzNy0uMTY2QzE0LjM4NCwyNS45NTgsMTIuNzIzLDI1Ljg4MywxMi40MTcsMjUuODgxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI28pXCIvPjxwYXRoIGQ9XCJNMTIuNDE3LDI0LjhzLS4yMzYsMC0uMjQxLjA4LjI0Ni4wODUuMjQ2LjA4NS4xNzUsMCwuMy4wMDVjLjYxOS0uMDEyLDEuOTkzLS4wMzgsMy40MzctLjE2NkMxNC4zODQsMjQuODc0LDEyLjcyMywyNC44LDEyLjQxNywyNC44WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3ApXCIvPjxwYXRoIGQ9XCJNMTIuNDE3LDI2Ljk2NXMtLjIzNiwwLS4yNDEuMDguMjQ2LjA4NS4yNDYuMDg1LjE3NSwwLC4zLjAwNWMuNjE5LS4wMTIsMS45OTMtLjAzOCwzLjQzNy0uMTY2QzE0LjM4NCwyNy4wNDIsMTIuNzIzLDI2Ljk2NiwxMi40MTcsMjYuOTY1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3EpXCIvPjxwYXRoIGQ9XCJNMTEuOTY1LDIyLjc3OXMtLjI3NC4zMTUuMzE5LjcxMWMwLDAsNS43NzUuNTg3LDcuNi0uNjk1QzE5Ljg4NCwyMi43OTUsMTMuNjIzLDIzLjMyLDExLjk2NSwyMi43NzlaXCIgc3R5bGU9XCJmaWxsOnVybCgjcilcIi8+PHBhdGggZD1cIk0yMC4wMzUsMjIuNzc5YTQuNDQ5LDQuNDQ5LDAsMCwwLC44MS0xLjE1NSwzLjM4NiwzLjM4NiwwLDAsMCwuMi0xLjExNSw2LjczMyw2LjczMywwLDAsMSwuNjMyLTIuOTFjLjUzNC0xLjAxNCwyLjgxLTQuNDQ3LDIuODEtNy40NjJBOC4wMTIsOC4wMTIsMCwwLDAsMTYsMmE4LjAxMiw4LjAxMiwwLDAsMC04LjQ4Myw4LjEzNmMwLDMuMDE1LDIuMjc2LDYuNDQ4LDIuODEsNy40NjJhNi43MzEsNi43MzEsMCwwLDEsLjYzMiwyLjkxLDMuMzg0LDMuMzg0LDAsMCwwLC4yLDEuMTE1LDQuNDUzLDQuNDUzLDAsMCwwLC44MSwxLjE1NSwxMy44NjYsMTMuODY2LDAsMCwwLDMuOTg3LjM3QTE1LjE1MSwxNS4xNTEsMCwwLDAsMjAuMDM1LDIyLjc3OVpcIiBzdHlsZT1cImZpbGw6dXJsKCNzKVwiLz5gLFxuXHRcIlNvbGlkaXR5IChFdGhlcmV1bSlcIjogYDxwYXRoIGQ9XCJNMjAuNDc3LDJsLTQuNSw4aC05bDQuNS04aDlcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuNDU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xMS41MiwzMGw0LjUtOGg5bC00LjUsOGgtOVwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC40NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE1Ljk3NSwxMGg5bC00LjUtOGgtOVpcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuNjtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE2LjAyMiwyMmgtOWw0LjUsOGg5WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC42O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTEuNDc3LDE4bDQuNS04LTQuNS04LTQuNSw4WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC44O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMjAuNTIsMTRsLTQuNSw4LDQuNSw4LDQuNS04WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC44O2lzb2xhdGlvbjppc29sYXRlXCIvPmAsXG5cdFwiU29sdXRpb24gZmlsZVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIi0xODIuMDcyXCIgeDI9XCIxNlwiIHkyPVwiLTIwOS45MjhcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgLTE4MClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3NsbjwvdGl0bGU+PHBhdGggZD1cIk02LjA0NSwyMy45OTFhMS4xNjYsMS4xNjYsMCwwLDEtMS4yMDguMTkxTDIuNzE4LDIzLjNBMS4xNjgsMS4xNjgsMCwwLDEsMiwyMi4yMjJWOS43NzhBMS4xNjUsMS4xNjUsMCwwLDEsMi43MTgsOC43bDIuMTE5LS44ODNhMS4xNjksMS4xNjksMCwwLDEsMS4yMDguMTkxbC40NzYuNDA4QS42NDYuNjQ2LDAsMCwwLDUuNSw4Ljk0MlYyMy4wNThhLjY0Ni42NDYsMCwwLDAsMS4wMjEuNTI1WlwiIHN0eWxlPVwiZmlsbDojNTIyMThhXCIvPjxwYXRoIGQ9XCJNMi43MTgsMjMuM0ExLjE2OSwxLjE2OSwwLDAsMSwyLDIyLjIyMnYtLjFhLjY3NC42NzQsMCwwLDAsMS4xNzQuNDUyTDIxLjI1LDIuNTgzYTEuNzQzLDEuNzQzLDAsMCwxLDEuOTktLjMzOGw1Ljc2OSwyLjc3OEExLjc0OSwxLjc0OSwwLDAsMSwzMCw2LjZ2LjA2N2ExLjEsMS4xLDAsMCwwLTEuOC0uODU0TDYuNTIxLDIzLjU4M2wtLjQ3Ni40MDhhMS4xNjYsMS4xNjYsMCwwLDEtMS4yMDguMTkxWlwiIHN0eWxlPVwiZmlsbDojNmMzM2FmXCIvPjxwYXRoIGQ9XCJNMi43MTgsOC43QTEuMTY4LDEuMTY4LDAsMCwwLDIsOS43Nzh2LjFhLjY3NC42NzQsMCwwLDEsMS4xNzQtLjQ1MkwyMS4yNSwyOS40MTZhMS43NDMsMS43NDMsMCwwLDAsMS45OS4zMzhsNS43NjktMi43NzhBMS43NDcsMS43NDcsMCwwLDAsMzAsMjUuNHYtLjA2OGExLjEsMS4xLDAsMCwxLTEuOC44NTVMNi41MjEsOC40MTdsLS40NzYtLjQwOGExLjE2NiwxLjE2NiwwLDAsMC0xLjIwOC0uMTkxWlwiIHN0eWxlPVwiZmlsbDojODU0Y2M3XCIvPjxwYXRoIGQ9XCJNMjMuMjQsMjkuNzU1YTEuNzQzLDEuNzQzLDAsMCwxLTEuOTktLjMzOEExLjAyNSwxLjAyNSwwLDAsMCwyMywyOC42OTJWMy4zMDhhMS4wMjUsMS4wMjUsMCwwLDAtMS43NS0uNzI1LDEuNzQzLDEuNzQzLDAsMCwxLDEuOTktLjMzOGw1Ljc2OCwyLjc3NEExLjc0OSwxLjc0OSwwLDAsMSwzMCw2LjZWMjUuNDA1YTEuNzUxLDEuNzUxLDAsMCwxLS45OTEsMS41NzdaXCIgc3R5bGU9XCJmaWxsOiNiMTc5ZjFcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuMjVcIj48cGF0aCBkPVwiTTIyLjA5MywyOS44ODNhMS43NCwxLjc0LDAsMCwwLDEuMTQ3LS4xMjhsNS43NjgtMi43NzRBMS43NDksMS43NDksMCwwLDAsMzAsMjUuNFY2LjZhMS43NSwxLjc1LDAsMCwwLS45OTItMS41NzdMMjMuMjQsMi4yNDVhMS43NDIsMS43NDIsMCwwLDAtMS45OS4zMzlsLTkuMywxMC4yODRMNi41MjEsOC40MTZsLS40NzYtLjQwOGExLjE2OCwxLjE2OCwwLDAsMC0xLjIwNy0uMTkxTDIuNzE5LDguN0ExLjE2NywxLjE2NywwLDAsMCwyLDkuNjg5YzAsLjAyOSwwLC4wNTksMCwuMDg4VjIyLjIyMWMwLC4wMywwLC4wNTksMCwuMDg4YTEuMTY3LDEuMTY3LDAsMCwwLC43MTUuOTg5bDIuMTE5Ljg4M2ExLjIyNiwxLjIyNiwwLDAsMCwuMTU1LjA1MiwxLjE2NSwxLjE2NSwwLDAsMCwxLjA1Mi0uMjQzbC40NzYtLjQwOCw1LjQzLTQuNDUyLDkuMywxMC4yODVBMS43MzMsMS43MzMsMCwwLDAsMjIuMDkzLDI5Ljg4M1pNMjMsMTAuMDcyLDE1Ljc3LDE2LDIzLDIxLjkyN1pNNS41LDEybDMuNjE5LDRMNS41LDIwWlwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI2EpXCIvPjwvZz5gLFxuXHRcIlNQQVJRTFwiOiBgPHBhdGggZD1cIk0yNi4yODQsMjAuMzYxYy0uMTY1LS4wODQtLjM1OS0uMTY0LS41MjMtLjI0OEgyNS45cy0xLjE1OC0uNS0xLjI0LTQuMTc2Yy0uMTExLTMuNjU1LDEuMS00LjI4OSwxLjEtNC4yODlhNC45Niw0Ljk2LDAsMCwwLDIuMTc2LTIuMTQzLDUuMTIyLDUuMTIyLDAsMCwwLTIuMTIyLTYuOTI3LDUuMzQyLDUuMzQyLDAsMCwwLTcuMTM4LDIuMTQ2LDUuMDY3LDUuMDY3LDAsMCwwLS41MjMsMy4yMTRMMTguMSw3Ljg1NXMuMywxLjMxOS0yLjgzOSwzLjI3MmMtMy4xMTUsMS45NS00LjU0OS45NjItNC41NDkuOTYybC4wODIuMTM4YTIuMTMxLDIuMTMxLDAsMCwwLS4yNzMtLjE2Nyw1LjExNyw1LjExNywwLDEsMCwuODI1LDguNTJsLS4wMjUuMDU1czEuMTI5LS45MzMsNC40MDcuODI3YzIuNTkyLDEuMzc0LDIuOTc5LDIuNzQ4LDMuMDMzLDMuMjRhNS4xLDUuMSwwLDAsMCwyLjcsNC43LDUuMTI0LDUuMTI0LDAsMSwwLDQuODI1LTkuMDQxWm0tNS43OS42ODVjLS40MTIuMTM4LTEuNi4zLTQuMDc3LTEuMDE3LTIuNy0xLjQ1NC0zLjExNS0yLjY2NC0zLjE2OS0zLjAyMWE1LjQwNiw1LjQwNiwwLDAsMC0uMDU3LTEuMzE5bC4wMjkuMDI2UzEzLDE0LjUzNCwxNi4wODQsMTIuNjM5YzIuNzU3LTEuNzA1LDQuMDI2LTEuMzc0LDQuMjQ1LTEuMjkzYTIuODMsMi44MywwLDAsMCwuNDcuMjc3LDQuMDgyLDQuMDgyLDAsMCwwLC45NjQuMzgzYy4zODcuMzU3LDEuMDc2LDEuMzc0LDEuMTU4LDQuMXMtLjcxNywzLjc2NC0xLjE1OCw0LjEyMUE1LjA0LDUuMDQsMCwwLDAsMjAuNDk0LDIxLjA0N1pcIiBzdHlsZT1cImZpbGw6IzBjNDc5Y1wiLz48cGF0aCBkPVwiTTIwLjEzNSw0LjIyOWEzLjg2MSwzLjg2MSwwLDAsMC0uMDgyLDUuMzg2Yy0uNzE3LS42ODUtLjY4OC0yLjExNy4wMjktMy40NjJhLjY3My42NzMsMCwwLDEsLjc0Ni0uMjc3Yy4wMjUsMCwuMDU0LjAyOS4wODIuMDI5YS45OTMuOTkzLDAsMCwwLC4yNzYuMDI2QTEuMDU2LDEuMDU2LDAsMCwwLDIyLjIsNC44MDVhLjkzNC45MzQsMCwwLDAtLjMtLjY4NWMxLjM4LS45MDcsMi45NS0xLjAxNywzLjYxLS40MTJoLjAyOUEzLjgyNiwzLjgyNiwwLDAsMCwyMC4xMzUsNC4yMjlaTTUuMTQ1LDEzLjg0NmEzLjg1OSwzLjg1OSwwLDAsMC0uMDgyLDUuMzg5Yy0uNzE3LS42ODktLjY5Mi0yLjExNy4wMjUtMy40NjVhLjY2OC42NjgsMCwwLDEsLjc0Ni0uMjczYy4wMjUsMCwuMDU0LjAyOS4wODIuMDI5YTEsMSwwLDAsMCwuMjc2LjAyNkExLjA1NiwxLjA1NiwwLDAsMCw3LjIxLDE0LjQyNWEuOTQ1Ljk0NSwwLDAsMC0uMy0uNjg5YzEuMzc3LS45MDcsMi45NDctMS4wMTcsMy42MS0uNDEyaC4wMjVBMy44NTIsMy44NTIsMCwwLDAsNS4xNDUsMTMuODQ2Wm0xNS44NzIsOC4xNjNhMy44NjUsMy44NjUsMCwwLDAtLjA4Miw1LjM4OWMtLjcxNy0uNjg5LS42ODgtMi4xMTcuMDI5LTMuNDY1YS42NjguNjY4LDAsMCwxLC43NDYtLjI3M2MuMDI1LDAsLjA1NC4wMjYuMDgyLjAyNmEuODg3Ljg4NywwLDAsMCwuMjc2LjAyOSwxLjA1NywxLjA1NywwLDAsMCwxLjAxOC0xLjEyNi45MzYuOTM2LDAsMCwwLS4zLS42ODljMS4zOC0uOTA3LDIuOTUtMS4wMTcsMy42MS0uNDEyaC4wMjlBMy44MjksMy44MjksMCwwLDAsMjEuMDE3LDIyLjAwOVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlNRRlwiOiBgPHBhdGggZD1cIk0yNSwyMy41SDdhNS4wMTUsNS4wMTUsMCwwLDEtNS01di02YTUuMDE1LDUuMDE1LDAsMCwxLDUtNUgyNWE1LjAxNSw1LjAxNSwwLDAsMSw1LDV2NmE1LjAxNSw1LjAxNSwwLDAsMS01LDVaXCIvPjxwYXRoIGQ9XCJNNywxOS40NjFhNC44MSw0LjgxLDAsMCwxLTEuNDE0LS4yLDUuMDUyLDUuMDUyLDAsMCwxLTEuMTExLS40NzJsLS40LjQzMmgtLjVMMy41LDE2LjA1Mkg0YTguNDYyLDguNDYyLDAsMCwwLC40MzEuOTUzLDQuNjM4LDQuNjM4LDAsMCwwLC42MDYuOSwzLjE3NywzLjE3NywwLDAsMCwuOC42NzUsMS45ODUsMS45ODUsMCwwLDAsMS4wMjkuMjYsMS42NzIsMS42NzIsMCwwLDAsMS4yMTYtLjQxMUExLjM4MiwxLjM4MiwwLDAsMCw4LjUsMTcuMzkxYTEuMTU2LDEuMTU2LDAsMCwwLS4zNTktLjg2MiwyLjk0NSwyLjk0NSwwLDAsMC0xLjExMS0uNnEtLjQ5LS4xNjctLjktLjMxdC0uNzczLS4yOTJhMi41OCwyLjU4LDAsMCwxLTEuMjM5LTEuMDA3LDIuNzMsMi43MywwLDAsMS0uNDA1LTEuNDY1LDIuNDA2LDIuNDA2LDAsMCwxLC4yMS0uOTg2LDIuNjA4LDIuNjA4LDAsMCwxLC42MTItLjg1LDIuOTY3LDIuOTY3LDAsMCwxLC45ODUtLjU3NSwzLjcyMiwzLjcyMiwwLDAsMSwxLjMwNi0uMjIzLDMuOTg0LDMuOTg0LDAsMCwxLDEuMjg4LjIsNS4xNTEsNS4xNTEsMCwwLDEsLjk0NC40MDhsLjM1Ni0uMzdoLjUwN2wuMDQ3LDIuOTg4aC0uNXEtLjE3NS0uNDgzLS40MTEtLjk4N2E0LjMzMiw0LjMzMiwwLDAsMC0uNS0uODM5LDIuMywyLjMsMCwwLDAtLjY1OS0uNTczLDEuNzI5LDEuNzI5LDAsMCwwLS44NzUtLjIxNEExLjQzNywxLjQzNywwLDAsMCw2LDExLjIxMmExLjIzMywxLjIzMywwLDAsMC0uNC45MzQsMS4xNDEsMS4xNDEsMCwwLDAsLjM0Ny44NiwyLjk1MSwyLjk1MSwwLDAsMCwxLjA4Mi41ODhxLjQzMS4xNTQuODguMzA5dC44LjNhMi44ODUsMi44ODUsMCwwLDEsMS4yODYuOTU1LDIuNTEyLDIuNTEyLDAsMCwxLC40NCwxLjUxMiwyLjYzMiwyLjYzMiwwLDAsMS0uOTI3LDEuOTg1LDMuMzY3LDMuMzY3LDAsMCwxLTEuMDc5LjZBNC4zOTEsNC4zOTEsMCwwLDEsNywxOS40NjFaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xOC45MjEsMTEuNDM0YTQuMzM4LDQuMzM4LDAsMCwxLC45NzEsMS40MzIsNC44MzQsNC44MzQsMCwwLDEsLjM1OSwxLjkxNCw0Ljk1OCw0Ljk1OCwwLDAsMS0uNzIsMi42OCw0LjAzNiw0LjAzNiwwLDAsMS0yLjAzOCwxLjY2MSwyLjE1MSwyLjE1MSwwLDAsMCwuNDIsMS4yNzIsMS4xNjgsMS4xNjgsMCwwLDAsLjk1LjUzNywzLjU2MywzLjU2MywwLDAsMCwuNTkyLS4wNDNxLjI1NC0uMDQzLjQ1OC0uMXYuNTQzYTUuNzUzLDUuNzUzLDAsMCwxLS45ODUuMyw2LjA1NCw2LjA1NCwwLDAsMS0xLjM3LjE1MSwyLjIwNiwyLjIwNiwwLDAsMS0xLjYxMi0uNjIxLDIuNTc0LDIuNTc0LDAsMCwxLS43MDgtMS43MzJBNC41NzksNC41NzksMCwwLDEsMTMuNywxOWE0LjE4Niw0LjE4NiwwLDAsMS0xLjI1My0uOTMyLDQuMzg4LDQuMzg4LDAsMCwxLS44NDItMS4zNzcsNC43NjksNC43NjksMCwwLDEtLjMxMi0xLjc1Myw1LjIzNyw1LjIzNywwLDAsMSwuMzQ3LTEuOTQ4LDQuNSw0LjUsMCwwLDEsLjk1My0xLjUsNC4xMTksNC4xMTksMCwwLDEsMS40MjUtLjk0Miw0Ljg2LDQuODYsMCwwLDEsMy41LS4wMDlBNC4yNDcsNC4yNDcsMCwwLDEsMTguOTIxLDExLjQzNFptLTEuNSw2LjI2NmE0Ljg1Nyw0Ljg1NywwLDAsMCwuMzc5LTEuMjczLDkuOTgxLDkuOTgxLDAsMCwwLC4xMTctMS42MDYsMTAuNTM0LDEwLjUzNCwwLDAsMC0uMS0xLjQ4LDQuOTM2LDQuOTM2LDAsMCwwLS4zNDctMS4yODIsMi40MSwyLjQxLDAsMCwwLS42NjUtLjksMS41NzEsMS41NzEsMCwwLDAtMS4wMzItLjM0LDEuNzMsMS43MywwLDAsMC0xLjYsMS4wNiw2LjYzNCw2LjYzNCwwLDAsMC0uNTQ4LDIuOTkzLDkuNTgzLDkuNTgzLDAsMCwwLC4xMiwxLjU1MSw0LjgsNC44LDAsMCwwLC4zNzYsMS4yNzMsMi4yODYsMi4yODYsMCwwLDAsLjY2NS44NTYsMS41OTEsMS41OTEsMCwwLDAsLjk5MS4zMDYsMS42MTEsMS42MTEsMCwwLDAsLjk5MS0uMzA5QTIuMTM1LDIuMTM1LDAsMCwwLDE3LjQyMywxNy43WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMjguNSwxMi44aC0uNDU1YTMuOTMsMy45MywwLDAsMC0uNi0xLjA4NiwxLjM4NSwxLjM4NSwwLDAsMC0uODEyLS42M2MtLjExNi0uMDE2LS4yNzItLjAzMS0uNDY1LS4wNDNzLS4zNzMtLjAxOS0uNTM1LS4wMTlIMjQuMzQ5djMuNDMzaC44MjJhMS45NjksMS45NjksMCwwLDAsLjYwNi0uMDgzLDEuMDU0LDEuMDU0LDAsMCwwLC40NTUtLjMsMS41OTEsMS41OTEsMCwwLDAsLjI4My0uNTE2LDIuNjM1LDIuNjM1LDAsMCwwLC4xNjYtLjYyMWguNDQzdjMuNjg2aC0uNDQzYTIuNDcxLDIuNDcxLDAsMCwwLS4xODEtLjY3NiwyLjA5NCwyLjA5NCwwLDAsMC0uMjY4LS41MjgsMS4wMTIsMS4wMTIsMCwwLDAtLjQzMS0uMjkzLDEuODQyLDEuODQyLDAsMCwwLS42My0uMWgtLjgyMnYyLjlhLjg0Mi44NDIsMCwwLDAsLjA3OS4zOC41OC41OCwwLDAsMCwuMy4yNTYsMS44NywxLjg3LDAsMCwwLC4zNTMuMXEuMjI0LjA0Ni40NDYuMDcxdi40ODJoLTQuNDZ2LS40ODJsLjQ0OS0uMDUyYTEuNTI1LDEuNTI1LDAsMCwwLC4zOTEtLjA4My41NDcuNTQ3LDAsMCwwLC4yOTItLjI0MS44NDIuODQyLDAsMCwwLC4wODItLjR2LTYuMThhLjg2Ny44NjcsMCwwLDAtLjA3My0uMzY3LjU3NS41NzUsMCwwLDAtLjMtLjI2MiwyLjM0MSwyLjM0MSwwLDAsMC0uNDMxLS4xMzZxLS4yNjgtLjA2Mi0uNDA4LS4wOHYtLjQ4MkgyOC41WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG5cdFwiU1FGOiBTdGF0dXMgUXVvIEZ1bmN0aW9uIChBcm1hIDMpXCI6IGA8cGF0aCBkPVwiTTI1LDIzLjVIN2E1LjAxNSw1LjAxNSwwLDAsMS01LTV2LTZhNS4wMTUsNS4wMTUsMCwwLDEsNS01SDI1YTUuMDE1LDUuMDE1LDAsMCwxLDUsNXY2YTUuMDE1LDUuMDE1LDAsMCwxLTUsNVpcIi8+PHBhdGggZD1cIk03LDE5LjQ2MWE0LjgxLDQuODEsMCwwLDEtMS40MTQtLjIsNS4wNTIsNS4wNTIsMCwwLDEtMS4xMTEtLjQ3MmwtLjQuNDMyaC0uNUwzLjUsMTYuMDUySDRhOC40NjIsOC40NjIsMCwwLDAsLjQzMS45NTMsNC42MzgsNC42MzgsMCwwLDAsLjYwNi45LDMuMTc3LDMuMTc3LDAsMCwwLC44LjY3NSwxLjk4NSwxLjk4NSwwLDAsMCwxLjAyOS4yNiwxLjY3MiwxLjY3MiwwLDAsMCwxLjIxNi0uNDExQTEuMzgyLDEuMzgyLDAsMCwwLDguNSwxNy4zOTFhMS4xNTYsMS4xNTYsMCwwLDAtLjM1OS0uODYyLDIuOTQ1LDIuOTQ1LDAsMCwwLTEuMTExLS42cS0uNDktLjE2Ny0uOS0uMzF0LS43NzMtLjI5MmEyLjU4LDIuNTgsMCwwLDEtMS4yMzktMS4wMDcsMi43MywyLjczLDAsMCwxLS40MDUtMS40NjUsMi40MDYsMi40MDYsMCwwLDEsLjIxLS45ODYsMi42MDgsMi42MDgsMCwwLDEsLjYxMi0uODUsMi45NjcsMi45NjcsMCwwLDEsLjk4NS0uNTc1LDMuNzIyLDMuNzIyLDAsMCwxLDEuMzA2LS4yMjMsMy45ODQsMy45ODQsMCwwLDEsMS4yODguMiw1LjE1MSw1LjE1MSwwLDAsMSwuOTQ0LjQwOGwuMzU2LS4zN2guNTA3bC4wNDcsMi45ODhoLS41cS0uMTc1LS40ODMtLjQxMS0uOTg3YTQuMzMyLDQuMzMyLDAsMCwwLS41LS44MzksMi4zLDIuMywwLDAsMC0uNjU5LS41NzMsMS43MjksMS43MjksMCwwLDAtLjg3NS0uMjE0QTEuNDM3LDEuNDM3LDAsMCwwLDYsMTEuMjEyYTEuMjMzLDEuMjMzLDAsMCwwLS40LjkzNCwxLjE0MSwxLjE0MSwwLDAsMCwuMzQ3Ljg2LDIuOTUxLDIuOTUxLDAsMCwwLDEuMDgyLjU4OHEuNDMxLjE1NC44OC4zMDl0LjguM2EyLjg4NSwyLjg4NSwwLDAsMSwxLjI4Ni45NTUsMi41MTIsMi41MTIsMCwwLDEsLjQ0LDEuNTEyLDIuNjMyLDIuNjMyLDAsMCwxLS45MjcsMS45ODUsMy4zNjcsMy4zNjcsMCwwLDEtMS4wNzkuNkE0LjM5MSw0LjM5MSwwLDAsMSw3LDE5LjQ2MVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE4LjkyMSwxMS40MzRhNC4zMzgsNC4zMzgsMCwwLDEsLjk3MSwxLjQzMiw0LjgzNCw0LjgzNCwwLDAsMSwuMzU5LDEuOTE0LDQuOTU4LDQuOTU4LDAsMCwxLS43MiwyLjY4LDQuMDM2LDQuMDM2LDAsMCwxLTIuMDM4LDEuNjYxLDIuMTUxLDIuMTUxLDAsMCwwLC40MiwxLjI3MiwxLjE2OCwxLjE2OCwwLDAsMCwuOTUuNTM3LDMuNTYzLDMuNTYzLDAsMCwwLC41OTItLjA0M3EuMjU0LS4wNDMuNDU4LS4xdi41NDNhNS43NTMsNS43NTMsMCwwLDEtLjk4NS4zLDYuMDU0LDYuMDU0LDAsMCwxLTEuMzcuMTUxLDIuMjA2LDIuMjA2LDAsMCwxLTEuNjEyLS42MjEsMi41NzQsMi41NzQsMCwwLDEtLjcwOC0xLjczMkE0LjU3OSw0LjU3OSwwLDAsMSwxMy43LDE5YTQuMTg2LDQuMTg2LDAsMCwxLTEuMjUzLS45MzIsNC4zODgsNC4zODgsMCwwLDEtLjg0Mi0xLjM3Nyw0Ljc2OSw0Ljc2OSwwLDAsMS0uMzEyLTEuNzUzLDUuMjM3LDUuMjM3LDAsMCwxLC4zNDctMS45NDgsNC41LDQuNSwwLDAsMSwuOTUzLTEuNSw0LjExOSw0LjExOSwwLDAsMSwxLjQyNS0uOTQyLDQuODYsNC44NiwwLDAsMSwzLjUtLjAwOUE0LjI0Nyw0LjI0NywwLDAsMSwxOC45MjEsMTEuNDM0Wm0tMS41LDYuMjY2YTQuODU3LDQuODU3LDAsMCwwLC4zNzktMS4yNzMsOS45ODEsOS45ODEsMCwwLDAsLjExNy0xLjYwNiwxMC41MzQsMTAuNTM0LDAsMCwwLS4xLTEuNDgsNC45MzYsNC45MzYsMCwwLDAtLjM0Ny0xLjI4MiwyLjQxLDIuNDEsMCwwLDAtLjY2NS0uOSwxLjU3MSwxLjU3MSwwLDAsMC0xLjAzMi0uMzQsMS43MywxLjczLDAsMCwwLTEuNiwxLjA2LDYuNjM0LDYuNjM0LDAsMCwwLS41NDgsMi45OTMsOS41ODMsOS41ODMsMCwwLDAsLjEyLDEuNTUxLDQuOCw0LjgsMCwwLDAsLjM3NiwxLjI3MywyLjI4NiwyLjI4NiwwLDAsMCwuNjY1Ljg1NiwxLjU5MSwxLjU5MSwwLDAsMCwuOTkxLjMwNiwxLjYxMSwxLjYxMSwwLDAsMCwuOTkxLS4zMDlBMi4xMzUsMi4xMzUsMCwwLDAsMTcuNDIzLDE3LjdaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yOC41LDEyLjhoLS40NTVhMy45MywzLjkzLDAsMCwwLS42LTEuMDg2LDEuMzg1LDEuMzg1LDAsMCwwLS44MTItLjYzYy0uMTE2LS4wMTYtLjI3Mi0uMDMxLS40NjUtLjA0M3MtLjM3My0uMDE5LS41MzUtLjAxOUgyNC4zNDl2My40MzNoLjgyMmExLjk2OSwxLjk2OSwwLDAsMCwuNjA2LS4wODMsMS4wNTQsMS4wNTQsMCwwLDAsLjQ1NS0uMywxLjU5MSwxLjU5MSwwLDAsMCwuMjgzLS41MTYsMi42MzUsMi42MzUsMCwwLDAsLjE2Ni0uNjIxaC40NDN2My42ODZoLS40NDNhMi40NzEsMi40NzEsMCwwLDAtLjE4MS0uNjc2LDIuMDk0LDIuMDk0LDAsMCwwLS4yNjgtLjUyOCwxLjAxMiwxLjAxMiwwLDAsMC0uNDMxLS4yOTMsMS44NDIsMS44NDIsMCwwLDAtLjYzLS4xaC0uODIydjIuOWEuODQyLjg0MiwwLDAsMCwuMDc5LjM4LjU4LjU4LDAsMCwwLC4zLjI1NiwxLjg3LDEuODcsMCwwLDAsLjM1My4xcS4yMjQuMDQ2LjQ0Ni4wNzF2LjQ4MmgtNC40NnYtLjQ4MmwuNDQ5LS4wNTJhMS41MjUsMS41MjUsMCwwLDAsLjM5MS0uMDgzLjU0Ny41NDcsMCwwLDAsLjI5Mi0uMjQxLjg0Mi44NDIsMCwwLDAsLjA4Mi0uNHYtNi4xOGEuODY3Ljg2NywwLDAsMC0uMDczLS4zNjcuNTc1LjU3NSwwLDAsMC0uMy0uMjYyLDIuMzQxLDIuMzQxLDAsMCwwLS40MzEtLjEzNnEtLjI2OC0uMDYyLS40MDgtLjA4di0uNDgySDI4LjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcblx0XCJTUUxcIjogYDxwYXRoIGQ9XCJNOC41NjIsMTUuMjU2QTIxLjE1OSwyMS4xNTksMCwwLDAsMTYsMTYuNDQ5YTIxLjE1OSwyMS4xNTksMCwwLDAsNy40MzgtMS4xOTRjMS44NjQtLjcyNywyLjUyNS0xLjUzNSwyLjUyNS0yVjkuN2ExMC4zNTcsMTAuMzU3LDAsMCwxLTIuMDg0LDEuMDc2QTIyLjI5MywyMi4yOTMsMCwwLDEsMTYsMTIuMDc4YTIyLjM2LDIyLjM2LDAsMCwxLTcuODc5LTEuM0ExMC4yOCwxMC4yOCwwLDAsMSw2LjAzNyw5Ljd2My41NUM2LjAzNywxMy43MjQsNi43LDE0LjUyOCw4LjU2MiwxNS4yNTZaXCIgc3R5bGU9XCJmaWxsOiNmZmRhNDRcIi8+PHBhdGggZD1cIk04LjU2MiwyMS45NjFhMTUuNjExLDE1LjYxMSwwLDAsMCwyLjYuNzQxQTI0LjksMjQuOSwwLDAsMCwxNiwyMy4xNTVhMjQuOSwyNC45LDAsMCwwLDQuODM4LS40NTIsMTUuNjE0LDE1LjYxNCwwLDAsMCwyLjYtLjc0MWMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJ2LTMuMzlhMTAuNzA2LDEwLjcwNiwwLDAsMS0xLjY5Mi44MjVBMjMuNDksMjMuNDksMCwwLDEsMTYsMTguNzRhMjMuNDksMjMuNDksMCwwLDEtOC4yNzEtMS4zNDgsMTAuODI5LDEwLjgyOSwwLDAsMS0xLjY5Mi0uODI1VjE5Ljk2QzYuMDM3LDIwLjQyNiw2LjcsMjEuMjMxLDguNTYyLDIxLjk2MVpcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz48cGF0aCBkPVwiTTE2LDMwYzUuNSwwLDkuOTYzLTEuNzQ0LDkuOTYzLTMuODk0VjIzLjI2OWExMC41LDEwLjUsMCwwLDEtMS41MzUuNzYybC0uMTU3LjA2M0EyMy40ODcsMjMuNDg3LDAsMCwxLDE2LDI1LjQ0NWEyMy40MjIsMjMuNDIyLDAsMCwxLTguMjcxLTEuMzUxYy0uMDU0LS4wMi0uMTA2LS4wNDMtLjE1Ny0uMDYzYTEwLjUsMTAuNSwwLDAsMS0xLjUzNS0uNzYydjIuODM3QzYuMDM3LDI4LjI1NiwxMC41LDMwLDE2LDMwWlwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPjxlbGxpcHNlIGN4PVwiMTZcIiBjeT1cIjUuODk0XCIgcng9XCI5Ljk2M1wiIHJ5PVwiMy44OTRcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz5gLFxuXHRcIlNxdWlycmVsXCI6IGA8cGF0aCBkPVwiTTEyLjk2NiwyNy4zYTE4LjkyNiwxOC45MjYsMCwwLDEtNS43MDctLjkxNWMtMS44MzItLjU5Mi00LjA0NC0xLjU0LTQuOTMxLTMuNjQ1YS41NTcuNTU3LDAsMCwxLS4wMjUtLjA3MywxMi4yMTQsMTIuMjE0LDAsMCwxLC43NjMtNy41MzFjMS41MjItNC4wMDgsMy43MS02LjczOSw2LjUtOC4xMTZhMTAuNDIyLDEwLjQyMiwwLDAsMSw3LjYtLjU1LDEwLjQyNiwxMC40MjYsMCwwLDEsNi4wNCw0LjYzOSwxMS4wNTcsMTEuMDU3LDAsMCwxLDEuMDU4LDIuMzI2LDEwLjY2LDEwLjY2LDAsMCwxLTUuMzc4LDEyLjY4OWwtLjAyLjAwOUExNC44MzIsMTQuODMyLDAsMCwxLDEyLjk2NiwyNy4zWlwiLz48cGF0aCBkPVwiTTIyLjcyLDExLjM5M2ExMC4xNDQsMTAuMTQ0LDAsMCwwLTEyLjktMy44NjlDNi43LDkuMDYxLDQuNzg0LDEyLjIsMy41OTMsMTUuMzM0YTExLjksMTEuOSwwLDAsMC0uNzQ2LDcuMTg3Yy43ODMsMS44NiwyLjc3OSwyLjc0NCw0LjU4MiwzLjMyN2ExNi4yMDYsMTYuMjA2LDAsMCwwLDExLjIxMy0uMjMyQTEwLjExLDEwLjExLDAsMCwwLDIzLjcyNywxMy42LDEwLjQ4OCwxMC40ODgsMCwwLDAsMjIuNzIsMTEuMzkzWlwiIHN0eWxlPVwiZmlsbDojYTA1YTJjXCIvPjxwYXRoIGQ9XCJNMTUuNzgyLDYuNzJBOC4yNjMsOC4yNjMsMCwwLDEsMTcuNjQsOC4wODQsOS42NSw5LjY1LDAsMCwxLDE5LjA4LDkuOGE5LjMxNyw5LjMxNywwLDAsMS0xLjUzMSwxMS45MjFBMTQuOTMzLDE0LjkzMywwLDAsMSw3LjY1NiwyNC43YTcuNTgxLDcuNTgxLDAsMCwxLTQuMTM1LTEuMSw4LjQ1NCw4LjQ1NCwwLDAsMCwzLjkwNywyLjI0MSwxNi4yMDgsMTYuMjA4LDAsMCwwLDExLjIxNC0uMjMzQTEwLjExMiwxMC4xMTIsMCwwLDAsMjMuNzI3LDEzLjZhMTAuNDg3LDEwLjQ4NywwLDAsMC0xLjAwNy0yLjIxMUE5Ljk3Myw5Ljk3MywwLDAsMCwxNS43ODIsNi43MlpcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjMxMzcyNTUwMTI5ODkwNDRcIi8+PHBhdGggZD1cIk0yMy40NzYsMTMuMzg5bC0xLjA2Mi0yLjg5NS4xNTItLjIzNkE2Ljg3NSw2Ljg3NSwwLDAsMSwyNy41MDksNy43YTIuMTc3LDIuMTc3LDAsMCwxLDEuODc5LjU4OCwzLjM3NiwzLjM3NiwwLDAsMSwuMSwzLjcyOWMtLjM0My4yOTItLjc1MS4xMjQtMS4yMjItLjA3YTIuODIxLDIuODIxLDAsMCwwLTIuMTMzLS4yNywxMC4yLDEwLjIsMCwwLDAtMi4wNDcsMS4yMDlaXCIvPjxwYXRoIGQ9XCJNMjMuMDM5LDEwLjU2M2MxLjIyMy0xLjksNS4xMDctMi45MTUsNS45MTItMS45MjNhMi45NywyLjk3LDAsMCwxLC4xNzcsMi45NDVjLS4yNDUuMjA3LTEuODM3LTEuMDU5LTMuMjI1LS40MjNBMTAuNTc0LDEwLjU3NCwwLDAsMCwyMy43MywxMi40NVpcIiBzdHlsZT1cImZpbGw6IzUwMmQxNlwiLz48cGF0aCBkPVwiTTI5LjQsOS43MjdhLjguOCwwLDAsMS0uMi40NjljLS4yMjkuMTYyLTEuOS0uNTA2LTMuMjM4LjA1NmExMi40MzksMTIuNDM5LDAsMCwwLTIuMDcxLDEuMDdMMjMuMiwxMC4zNGMtLjA1Ny4wNzQtLjExNi4xNDctLjE2NS4yMjNsLjY5MiwxLjg4NkExMC41NzcsMTAuNTc3LDAsMCwxLDI1LjksMTEuMTYyYzEuMzg4LS42MzYsMi45OC42MzEsMy4yMjUuNDIzQTIuODQ2LDIuODQ2LDAsMCwwLDI5LjQsOS43MjdaXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC4zMTM3MjU1MDEyOTg5MDQ0XCIvPjxwYXRoIGQ9XCJNMjEuMzgyLDI1LjE4YTIuMjM2LDIuMjM2LDAsMCwxLTEuMTQ3LS4zMjMuNTYzLjU2MywwLDAsMS0uMDgyLS44ODhjLjczNy0uNjg0LjYwNy0yLjE3My0uNDEtNC42ODlhMzYuNTI2LDM2LjUyNiwwLDAsMC01LjEyMy04LjgyNWwtLjM1LS40M2MtMS41MTItMS44NjUtMi4zNTgtMi44MTUtMy41NTQtMi4zYS41NjIuNTYyLDAsMCwxLS40MTMuMDE2LjU3MS41NzEsMCwwLDEtLjM3Ny0uNTkyLDIuMTE5LDIuMTE5LDAsMCwxLDEuNDYxLTJjNC43MTYtMS40ODEsMTAuMjYuODE0LDEyLjkwNSw1LjM0NGExMS4yLDExLjIsMCwwLDEtMS40MzEsMTMuOTkxQTEuOTE5LDEuOTE5LDAsMCwxLDIxLjM4MiwyNS4xOFpcIi8+PHBhdGggZD1cIk0yMy44MTIsMTAuNzgzYy0yLjQ0NC00LjE5Mi03LjczLTYuNTI4LTEyLjI3LTUuMDkzLTEuMDA3LjI0OC0xLjA2NSwxLjUzNS0xLjA1MiwxLjUxNywxLjc3Ni0uNzY3LDIuOTUzLjkxOSw0LjU2NiwyLjg5YTM2LjksMzYuOSwwLDAsMSw1LjIwOSw4Ljk3MWMuODksMi4yLDEuNCw0LjI2Ny4yNyw1LjMxMmExLjUsMS41LDAsMCwwLDEuOTA5LS4yNzRBMTAuNjQ2LDEwLjY0NiwwLDAsMCwyMy44MTIsMTAuNzgzWlwiIHN0eWxlPVwiZmlsbDojNTAyZDE2XCIvPjxwYXRoIGQ9XCJNMjMuNjQ5LDEwLjM0NmE5LjMxNCw5LjMxNCwwLDAsMS0yLjUxOCw3LjcyNWMtLjQ1NS40ODYtLjg3My4xNzctMS4yNjMuMDYzLjEzOC4zMTMuMjcxLjYyNi40LjkzNi44OSwyLjIsMS40LDQuMjY2LjI3MSw1LjMxMmExLjUsMS41LDAsMCwwLDEuOTA5LS4yNzRDMjYuMDg5LDIwLjE4MywyNi4zNTcsMTQuOTE5LDIzLjY0OSwxMC4zNDZaXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC4zMTM3MjU1MDEyOTg5MDQ0XCIvPmAsXG5cdFwiU3RhblwiOiBgPHRpdGxlPmZpbGVfdHlwZV9zdGFuPC90aXRsZT48cGF0aCBkPVwiTTE2LDJBMTQsMTQsMCwwLDAsNS42ODgsMjUuNDY5YzEuNy0uNTE0LDMuNDExLS45OTIsNC44MDYtMS4zNTcsNC4wMzctMS4wNTQsMTAuOTQ4LTIuODM2LDExLjk0Ni01LjA4Mi0uMjguNzgtMS4yMTgsMi44Ny0xLjIxOCwyLjg3LTEuMjc5LDEuMjQ3LTcuMDksMi42MzEtMTAuOTE3LDMuMzY3LTEuMjIuMjM1LTIuNjE0LjUwNy00LjAyNi44MDZBMTQsMTQsMCwwLDAsMjguNDY3LDkuNjI4Yy0yLjUyNi40MDgtMTAuNSwxLjg1NC0xMi41MzksMi4zMTUtMi4yNTUuNTA5LTYuNzg5LDEuNDMzLTcuNjk0LDIuOTkzQzguOCwxMy41LDEwLjQ5Miw5Ljc0NCwxMC40OTIsOS43NDRjMS4yMTYtMiw2LjYtMy40MjUsMTAuMzU4LTQuNDYzLjg3Ni0uMjQyLDEuOTIyLS41MzksMy4wMjMtLjg1OEExMy45MzQsMTMuOTM0LDAsMCwwLDE2LDJaXCIgc3R5bGU9XCJmaWxsOiNiMjAwMWRcIi8+PHBhdGggZD1cIk04LjIyMywxNC45ODdjLS4yNTIsMS4xNzUsMy41MiwyLjMxMyw2LjkyMSwzLjM4OWEyNi4zNjIsMjYuMzYyLDAsMCwxLDUuNjY3LDIuMTkyLDMuMDg1LDMuMDg1LDAsMCwwLDEuNjYyLTEuNjE0Yy4zNzctMS40ODktMy4wMTMtMy4zOTMtNS4yNzQtNC4yMjlhMzMuMzM3LDMzLjMzNywwLDAsMS00LjQwNy0yLjA0MmMtNC4zMTYsMS4xNDMtNC41NjksMi4zLTQuNTY5LDIuM1pcIiBzdHlsZT1cImZpbGw6IzU5MDgxNVwiLz5gLFxuXHRcIlN0YXRhIEFkb1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIjJcIiB4Mj1cIjE2XCIgeTI9XCIzMFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzhhYTdjMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzYzZlOGZcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zdGF0YTwvdGl0bGU+PHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS41NTZcIiByeT1cIjEuNTU2XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHJlY3QgeD1cIjEzLjE3MVwiIHk9XCI2LjAxNVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4zMjZcIiB5PVwiNi4wMTVcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjAuMzI2XCIgeT1cIjEzLjE3MVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIxMy4xNzFcIiB5PVwiMTMuMTcxXCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjYuMDE1XCIgeT1cIjEzLjE3MVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCI2LjAxNVwiIHk9XCIyMC4zMjZcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMTMuMTcxXCIgeT1cIjIwLjMyNlwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiU3R5bHVzXCI6IGA8dGl0bGU+ZmlsZV90eXBlX3N0eWx1czwvdGl0bGU+PHBhdGggZD1cIk02LjMxNSwyMC43NzZjLjcyNi0uODY5LjgxMi0xLjc2Ni4yNDktMy40MzItLjM1Ni0xLjA1NC0uOTQ3LTEuODY1LS41MTMtMi41MjEuNDYzLS43LDEuNDQ1LS4wMjEuNjI3LjkxMWwuMTY0LjExNGMuOTgzLjExNCwxLjQ2Ny0xLjIzMi43MzMtMS42MTYtMS45MzctMS4wMTEtMy42MzEuOTMzLTIuODg0LDMuMTgzLjMyLjk1NC43NjksMS45NjUuNDA2LDIuNzdBMS43OTQsMS43OTQsMCwwLDEsMy43NzMsMjEuM2MtLjg0Ny4wNDMtLjI4NS0xLjkuNjkxLTIuMzg1LjA4NS0uMDQzLjIwNi0uMS4wOTMtLjI0MmEyLjEzNCwyLjEzNCwwLDAsMC0yLjMxNCwxLjJDMS4wNjEsMjIuMTIxLDQuNDg1LDIyLjk1NCw2LjMxNSwyMC43NzZaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yNy40NjIsMTQuMTRjLjI3OC42ODQuNywxLjM2LjQ0OSwxLjk1OC0uMjA2LjUxMy0uNDc3LjcyNi0uNzc2Ljc3Ni0uNDIuMDcxLS4zMDYtMS4yNDYuNDEzLTEuNjM4LjA2NC0uMDM2LjE1Ny0uMjA2LjA3MS0uMzA2YTEuNjM2LDEuNjM2LDAsMCwwLTEuNy45NjFjLS44LDEuNjg3LDEuODIzLDIuMTUsMy4xMTIuNDkxLjUxMy0uNjYyLjUzNC0xLjMxNy4wNDMtMi41MDYtLjMxMy0uNzU1LS43OS0xLjMxNy0uNDkxLTEuODE2LjMyLS41MjcsMS4wODktLjA3MS41MTMuNjM0bC4xMjguMDcxYy43NDguMDQzLDEuMDU0LS45NTQuNDg0LTEuMkExLjgzNCwxLjgzNCwwLDAsMCwyNy40NjIsMTQuMTRaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xNy45NSwxMi4zMzhjLS41Mi0uNDEzLTEuOTc5LjI3OC0yLjM5MiwxLjNhMTYuMjEzLDE2LjIxMywwLDAsMS0yLjA0Myw0LjAzN2MtLjguODc2LS44NzYuMi0uOC0uMzA2QTE1LjMyNywxNS4zMjcsMCwwLDEsMTQuNywxMi42NTJjLS4yMzUtLjM0OS0xLjc3My0uMy0yLjg0MSwxLjM2LS40LjYyNy0xLjMxLDIuNzEzLTIuMzIxLDQuMzU4LS4yMjEuMzU2LS41LjEwNy0uMjg1LS43MjZhMzkuOCwzOS44LDAsMCwxLDEuODczLTUuNjgyLDM5LjA3MiwzOS4wNzIsMCwwLDEsNi45MjEtLjgxOWMuMjYzLS4wNzEuNDQxLS4zMDYsMC0uMzJhNDYuNzc4LDQ2Ljc3OCwwLDAsMC02LjU5My40NDEsNC45MjMsNC45MjMsMCwwLDEsMS40NDUtMS45NDQsMS43ODcsMS43ODcsMCwwLDAtMi4yNjQuNzE5LDEyLjI4NywxMi4yODcsMCwwLDAtLjgxOSwxLjQ1MywyNC4xOTQsMjQuMTk0LDAsMCwwLTMuOTguODYyYy0uNzgzLjMtLjcsMS4yNDYtLjIyMSwxLjA2OGEzMS42MzEsMzEuNjMxLDAsMCwxLDMuODE2LTEuMSwzMC4yOTIsMzAuMjkyLDAsMCwwLTEuODY1LDUuNjgyYy0uNDQxLDIuNDkyLDEuMSwyLjQ3OCwxLjg1OCwxLjUuODE5LTEuMDc1LDIuNTI4LTQuODU2LDIuNzkxLTUuMjU1LjA3OC0uMTM1LjE4NS0uMDY0LjEyOC4wNTctMS45MDgsMy44MDktMS43NDQsNS4yODMtLjIsNC45NTZhNC45MjksNC45MjksMCwwLDAsMi4yMTQtMS45NjVjLjA2NC0uMTUuMi0uMTM1LjE3MS0uMDcxLTEuMjEsMy4xNC0yLjc0OCw1LjY4Mi0zLjc4MSw2LjQ3OS0uOTQuNzE5LTEuNjM4LS44NCwxLjY4Ny0zLjA3Ni40OTEtLjMzNS4yNjMtLjc5LS4yOTItLjYzNGgwYTI5Ljc5MywyOS43OTMsMCwwLDAtOC43ODYsMy4zMjVjLS4xNjQuMTE0LS4zMTMuMjA2LS4zMDYuNDQxLjAwNy4xMzUuMjQyLjA4NS4zNTYuMDE0QTIyLjc3MSwyMi43NzEsMCwwLDEsMTEuMSwyMC45YS4xNTguMTU4LDAsMCwwLC4xMTQuMDA3Yy4xMjEtLjAyOC4xMTQuMDM2LjAzNi4wODUtLjE3OC4xLS4zNTYuMTkyLS40LjIwNi0xLjc2Ni42OTEtMi44MzQsMi4yMTQtMi40NTYsMi45OS4zMi42NjksMi4wNTEuNDI3LDIuODY5LS4wMTQsMi4wMDgtMS4wODksMy40NjgtMy4yMjUsNC40NjQtNi4xNzNDMTYuNiwxNS4zODYsMTcuNjkzLDEyLjQyNCwxNy45NSwxMi4zMzhaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yOS42MiwxOC4zNjlhNDguMTQ1LDQ4LjE0NSwwLDAsMC0xMy40MjkuOTY4Yy0uOTI2LjI0Mi0uNjY5LjczMy0uMi42NDEuMDA3LDAsLjIwNi0uMDUuMjE0LS4wNWE0Mi4yNzksNDIuMjc5LDAsMCwxLDEyLjM3NS0uMjQyQzI5LjAxNCwxOS43NjUsMzAuMzE3LDE4LjQ2MiwyOS42MiwxOC4zNjlaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xOC44NjEsMTcuOTg1Yy45MTEtLjQ1NiwyLjI2NC0zLjI3NSwzLjE1NC00LjgyLjA2NC0uMTE0LjE3OC0uMDIxLjExNC4wNTctMi4yNSwzLjg3My0xLjMsNC4zMjItLjQwNiw0LjI2NSwxLjE4OS0uMDcxLDIuMjg2LTEuNzgsMi41MjgtMi4xNjUuMS0uMTUuMTU3LS4wMjguMS4wNzgtLjA1Ny4xNzgtLjI2My40OTEtLjQ1Ni45MTktLjI3MS42MDUuMDE0Ljg0LjI0OS45NDcuMzcuMTc4LDEuMzgxLjA2NCwxLjUzOC0uNTU1LTEuMDExLS4wMjEsMS40MS00Ljc5MiwxLjY1OS01LjA4NGExLjcxOCwxLjcxOCwwLDAsMC0yLjIuOTc1Yy0xLjAxOCwyLjAxNS0xLjg3MywzLjYzOC0yLjQwNywzLjY2Ny0xLjA0LjA1NywxLjItNC40OTMsMS41NTktNC42MzUtLjIyMS0uMzItMS42MzgtLjE4NS0yLjQyOCwxLjA0LS4yODUuNDQxLTIuMDIyLDMuNTE3LTIuNDQ5LDQuMDIzLS43NTUuOS0uODEyLjEyOC0uNi0uNzY5YTEwLjU2OSwxMC41NjksMCwwLDEsLjM0OS0xLjEzMiw1LjMyNCw1LjMyNCwwLDAsMSwxLjM2LTEuODQ0YzIuMi0yLjQ0MiwzLjQ2LTQuNDIyLDIuOTYyLTUuMi0uNDQxLS42OTEtMS45MTUtLjM4NC0yLjg2MiwxLjA0LTEuNzQ0LDIuNjEzLTMuMzU0LDYuMTk1LTMuNTYsNy44MzJTMTguMDU2LDE4LjM4MywxOC44NjEsMTcuOTg1Wm0uOTI2LTQuNzkyYy4wNzgtLjE3OC4xMjgtLjIyOC4yNjMtLjUyN2gwQTI0LjkzNCwyNC45MzQsMCwwLDEsMjIuNDkyLDguMjhjLjQyLS40NDEsMS4wMTEuMTU3LS4wNTcsMS43OTRhMTYuNDYyLDE2LjQ2MiwwLDAsMS0yLjExNSwyLjY0MnYuMDA3Yy0uMi4yMjEtLjM3Ny40MDYtLjQ1Ni41MTNDMTkuODA4LDEzLjMwNywxOS43NDQsMTMuMjkyLDE5Ljc4NywxMy4xOTNaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcblx0XCJTVkdcIjogYDxwYXRoIGQ9XCJNNy42NzQsMTQuNDg4YTIuMjE4LDIuMjE4LDAsMSwwLDAsMy4xMzdIMjQuMzI2YTIuMjE4LDIuMjE4LDAsMSwwLDAtMy4xMzdaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTExLjIyMiw5LjA2QTIuMjE4LDIuMjE4LDAsMSwwLDksMTEuMjc4TDIwLjc3OCwyMy4wNTJBMi4yMTgsMi4yMTgsMCwxLDAsMjMsMjAuODM0WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDozLjczMDAwMDAxOTA3MzQ5cHhcIi8+PHBhdGggZD1cIk0xNy41NjgsNy43M2EyLjIxOCwyLjIxOCwwLDEsMC0zLjEzNywwVjI0LjM4MmEyLjIxOCwyLjIxOCwwLDEsMCwzLjEzNywwWlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDozLjczMDAwMDAxOTA3MzQ5cHhcIi8+PHBhdGggZD1cIk0yMywxMS4yNzhBMi4yMTgsMi4yMTgsMCwxLDAsMjAuNzc4LDkuMDZMOSwyMC44MzRhMi4yMTgsMi4yMTgsMCwxLDAsMi4yMTgsMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTcuNjc0LDE0LjQ4OGEyLjIxOCwyLjIxOCwwLDEsMCwwLDMuMTM3SDI0LjMyNmEyLjIxOCwyLjIxOCwwLDEsMCwwLTMuMTM3WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMTEuMjIyLDkuMDZBMi4yMTgsMi4yMTgsMCwxLDAsOSwxMS4yNzhMMjAuNzc4LDIzLjA1MkEyLjIxOCwyLjIxOCwwLDEsMCwyMywyMC44MzRaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0xNy41NjgsNy43M2EyLjIxOCwyLjIxOCwwLDEsMC0zLjEzNywwVjI0LjM4MmEyLjIxOCwyLjIxOCwwLDEsMCwzLjEzNywwWlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMjMsMTEuMjc4QTIuMjE4LDIuMjE4LDAsMSwwLDIwLjc3OCw5LjA2TDksMjAuODM0YTIuMjE4LDIuMjE4LDAsMSwwLDIuMjE4LDIuMjE4WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMiwxNi4wNTZIMzBWMjUuOTVhNC4wMzUsNC4wMzUsMCwwLDEtNC4xMDYsNC4xMDZINi4xMDZBNC4wMzUsNC4wMzUsMCwwLDEsMiwyNS45NVpcIi8+PHBhdGggZD1cIk02LjIsMjMuMDQ1QTMuNjI4LDMuNjI4LDAsMSwxLDEyLjQsMjAuNDhIMTAuMjdBMS41LDEuNSwwLDEsMCw3LjcsMjEuNTQxaDBhMS42LDEuNiwwLDAsMCwxLjA2Mi40NDFoMGE0LjExOCw0LjExOCwwLDAsMSwyLjU2NiwxLjA2M2gwYTMuNjI4LDMuNjI4LDAsMSwxLTYuMTk0LDIuNTY1SDcuMjY0QTEuNSwxLjUsMCwxLDAsOS44MywyNC41NWgwYTEuOTQ4LDEuOTQ4LDAsMCwwLTEuMDYzLS40NGgwQTQuNDY1LDQuNDY1LDAsMCwxLDYuMiwyMy4wNDVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS42NTEsMTYuODUyLDE3LjA4NSwyOS4yNEgxNC45NkwxMi40LDE2Ljg1MkgxNC41MmwxLjUsNy4yNTUsMS41LTcuMjU1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjMuMjgsMjEuOTgzaDMuNjI4djMuNjI4aDBhMy42MjgsMy42MjgsMCwxLDEtNy4yNTcsMGgwVjIwLjQ4aDBhMy42MjgsMy42MjgsMCwwLDEsNy4yNTcsMEgyNC43ODNhMS41LDEuNSwwLDEsMC0zLjAwNSwwdjUuMTNoMGExLjUsMS41LDAsMCwwLDMuMDA1LDBoMHYtMS41aC0xLjVWMjEuOTgzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiU3dpZnRcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzQuNDk0XCIgeTE9XCItMTcxLjgyXCIgeDI9XCItMTM0LjQ5N1wiIHkyPVwiLTE3MS44OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDI0MCwgMCwgMCwgLTIwNS42LCAzMjI5NSwgLTM1MzEyLjU4NSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmODg1MzVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmQyMjIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc3dpZnQ8L3RpdGxlPjxwYXRoIGQ9XCJNMTkuNDIyLDQuMDA3czYuMjE3LDMuNTU0LDcuODQ0LDkuMmMxLjQ2Niw1LjEuMjkyLDcuNTM0LjI5Miw3LjUzNGE4LjkxNSw4LjkxNSwwLDAsMSwxLjc0MiwyLjgsNC44MjUsNC44MjUsMCwwLDEsLjI5LDQuNDUzcy0uMS0yLjA4LTMuMi0yLjUxMWMtMi44NDEtLjQtMy44NzQsMi4zNjYtOS4zLDIuMjMyQTE4LjQzNSwxOC40MzUsMCwwLDEsMiwxOS4zNTRDNC42NTEsMjAuOCw4LjEyNCwyMy4wNDUsMTIuNDQ5LDIyLjdzNS4yMjgtMS42NzQsNS4yMjgtMS42NzRBNjYuOSw2Ni45LDAsMCwxLDQuODkxLDcuNjQzYzMuNCwyLjg0NSwxMS44MjIsOC41MDcsMTEuNjI2LDguMzYzQTc1LjgyNiw3NS44MjYsMCwwLDEsOC4wOTIsNi4yNFMyMC43MjgsMTYuNjI5LDIxLjc0NSwxNi41NjNjLjQxOC0uODYxLDIuNTc5LTUuMzE4LTIuMzI0LTEyLjU1N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCI6IGA8cGF0aCBkPVwiTTIsMTJ2OEg1LjI1NlYxOC43NjlIMy4zVjEzLjIzMUg1LjI1NlYxMlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI2Ljc0NCwxMnYxLjIzMUgyOC43djUuNTM4SDI2Ljc0NFYyMEgzMFYxMlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE3LjYyOCwxNmw1LjIxLTIuNzY5djUuNTM4WlwiIHN0eWxlPVwiZmlsbDojMzBkNDc1XCIvPjxlbGxpcHNlIGN4PVwiMTIuMDkzXCIgY3k9XCIxNlwiIHJ4PVwiMi45M1wiIHJ5PVwiMi43NjlcIiBzdHlsZT1cImZpbGw6IzMwZDQ3NVwiLz5gLFxuXHRcIlQ0IHRlbXBsYXRpbmdcIjogYDxwYXRoIGQ9XCJNMTkuNTQ1LDYuMDM1SDEzLjI3VjI0SDguM1Y2LjAzNUgyLjA1NVYyaDE3LjQ5WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPjxwYXRoIGQ9XCJNMjcuNTY3LDEwVjIyLjYwOGgyLjRWMjUuOWgtMi40VjMwSDIzLjU1MVYyNS45SDE0LjgzNFYyMi40NTVxMS4xNTgtMS4zLDIuNC0yLjgzOHQyLjQtMy4xNzNxMS4xNTgtMS42MzIsMi4xNTUtMy4yODVBMzIuOTI1LDMyLjkyNSwwLDAsMCwyMy40ODEsMTBaTTE4Ljc4MSwyMi42MDhoNC43N1YxNS42MjFxLS40ODguOTA3LTEuMDYsMS44MzR0LTEuMiwxLjgyN3EtLjYyOC45LTEuMjY5LDEuNzQzVDE4Ljc4MSwyMi42MDhaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+YCxcblx0XCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCI6IGA8cGF0aCBkPVwiTTE5LjU0NSw2LjAzNUgxMy4yN1YyNEg4LjNWNi4wMzVIMi4wNTVWMmgxNy40OVpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz48cGF0aCBkPVwiTTI3LjU2NywxMFYyMi42MDhoMi40VjI1LjloLTIuNFYzMEgyMy41NTFWMjUuOUgxNC44MzRWMjIuNDU1cTEuMTU4LTEuMywyLjQtMi44Mzh0Mi40LTMuMTczcTEuMTU4LTEuNjMyLDIuMTU1LTMuMjg1QTMyLjkyNSwzMi45MjUsMCwwLDAsMjMuNDgxLDEwWk0xOC43ODEsMjIuNjA4aDQuNzdWMTUuNjIxcS0uNDg4LjkwNy0xLjA2LDEuODM0dC0xLjIsMS44MjdxLS42MjguOS0xLjI2OSwxLjc0M1QxOC43ODEsMjIuNjA4WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPmAsXG5cdFwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiOiBgPHBhdGggZD1cIk0xOS41NDUsNi4wMzVIMTMuMjdWMjRIOC4zVjYuMDM1SDIuMDU1VjJoMTcuNDlaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+PHBhdGggZD1cIk0yNy41NjcsMTBWMjIuNjA4aDIuNFYyNS45aC0yLjRWMzBIMjMuNTUxVjI1LjlIMTQuODM0VjIyLjQ1NXExLjE1OC0xLjMsMi40LTIuODM4dDIuNC0zLjE3M3ExLjE1OC0xLjYzMiwyLjE1NS0zLjI4NUEzMi45MjUsMzIuOTI1LDAsMCwwLDIzLjQ4MSwxMFpNMTguNzgxLDIyLjYwOGg0Ljc3VjE1LjYyMXEtLjQ4OC45MDctMS4wNiwxLjgzNHQtMS4yLDEuODI3cS0uNjI4LjktMS4yNjksMS43NDNUMTguNzgxLDIyLjYwOFpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz5gLFxuXHRcIlRjbFwiOiBgPHBhdGggZD1cIk0yMS45NDIsMi44NzZjLjA0LDIuNDY4LS4wMzMsNC45MS0yLjE2OSw3LjIzbC0uMDc5LjA4OWguMTE5bC44NzMuMDEzYy0xLjQxOCwyLjk1LTIuMzQxLDUuODkyLTQuMzgsOC44M2wtLjA3My4xMDYuMTI2LS4wMjMsMS4wNzgtLjJhNS44NTEsNS44NTEsMCwwLDEtMy40ODQsMy42NWMtLjM5LTUuNDU1LDIuMzMzLTEwLjI3LDQuNjQ1LTE1LjA3MWwuMDA3LS4wMTMtLjA4Ni0uMDZjLTMuNzg2LDQuMjMzLTUuNDkxLDEwLjItNi4xMzYsMTUuMTI3YTQuNTgyLDQuNTgyLDAsMCwxLTIuMTQ1LTIuOTg4bC45LjM3Ny4wOTMuMDQtLjAyLS4xYy0uNjgxLTMuMDI4LjM3Ni01LjIsMS40LTguMDU2bC43MzcuNDkzLjA4Ni4wNiwwLS4xYy0uMDU4LTIuMzIsMS41LTQuNjQ5LDMuNTc3LTYuNzI3bC4yODguNzcuMDQuMS4wNTYtLjEuNjMxLTEuMDUxLDAtLjAwN0E2LjEsNi4xLDAsMCwxLDIxLjk0MiwyLjg3NlpcIiBzdHlsZT1cImZpbGw6I2MzYjE1ZlwiLz48cGF0aCBkPVwiTTIxLjk0OCwyLjg3NWE2LjEzMSw2LjEzMSwwLDAsMC0zLjkyNiwyLjM4OGwwLC4wMDctLjYzMSwxLjA1MS0uMDU2LjEtLjA0LS4xTDE3LDUuNTQ0Yy0yLjA3MiwyLjA3OC0zLjYzNSw0LjQwNy0zLjU3Nyw2LjcyN2wwLC4xLS4wODYtLjA2LS43MzctLjQ5M2MtMS4wMjUsMi44NTYtMi4wODMsNS4wMjktMS40LDguMDU2bC4wMi4xLS4wOTMtLjA0LS44ODYtLjM3NGMwLC4wMTguMDA3LjAzNS4wMS4wNTNhNC41MzMsNC41MzMsMCwwLDAsMi4xMjYsMi45MzJjLjA1LS4zODEuMTA1LS43NzEuMTY5LTEuMTY0LTEuNTQzLTMuNjE0LS4yLTYuMjcxLjQwNy04LjY2MWwuOTM5LjU0MmMtLjEzLTIuMjM4LDEuMTg0LTQuNjUxLDIuODkzLTYuNzU3bC41Ljg3M0MxOC41NTUsNC43NjksMTkuNTYsMy43MiwyMS45NDgsMi44NzVaXCIgc3R5bGU9XCJmaWxsOiNlZmYxY2I7c3Ryb2tlOiNlZmYxY2JcIi8+PHBhdGggZD1cIk0yMi41MTgsMmwtLjA1Ni4wMWMtMi4wODIuMzYzLTQuMTIxLDEuMTI4LTUuMDE1LDIuOTU5bC0uMzc3LS42NTgtLjAzMy0uMDYtLjA1LjA1YTIwLjg1LDIwLjg1LDAsMCwwLTIuOTM5LDMuNUE1LjkzOSw1LjkzOSwwLDAsMCwxMi44MzUsMTFsLS41MzItLjY2NC0uMDUzLS4wNjYtLjAzNi4wNzZhMjcuNTM1LDI3LjUzNSwwLDAsMC0xLjY5Myw0LjcsNi43Myw2LjczLDAsMCwwLS4xNTksMy43MTlsLS44NzYtLjUwOS0uMDczLS4wNDMtLjAwNy4wODZhNS41MjksNS41MjksMCwwLDAsMi4wMTcsNC44NDNsLS45NzIuMjQxLS4yLjA1LjIuMDUzYTQuMjU4LDQuMjU4LDAsMCwxLDEuNDU1LjYsMS4zMjUsMS4zMjUsMCwwLDEsLjUxNiwxLjNWMjguMWwuMDEuMDEzLDEuMjE3LDEuNzQ1LjEuMTM5VjI1LjcxOWEzLjQ2NiwzLjQ2NiwwLDAsMSwuNjIxLTEuNDg0QTEuNjM5LDEuNjM5LDAsMCwxLDE1LjUsMjMuN2wuMTgyLS4wMjMtLjE2NS0uMDc2LS42NDEtLjNhOS4xMTIsOS4xMTIsMCwwLDAsMy42OTMtNS4zMjJsLjAyLS4wODYtLjA4My4wMjMtLjc5My4yMTVhMTEuNjY5LDExLjY2OSwwLDAsMCwyLjA4OS0zLjVDMjAuNTEyLDEzLDIxLjE4LDExLjE2NiwyMS43MjgsOS43bC4wMy0uMDc5LS4wODMuMDA3LS42MTIuMDQzYTYuNjU1LDYuNjU1LDAsMCwwLDEuMzgyLTMuNTI3LDE3LjAzOSwxNy4wMzksMCwwLDAsLjA3OS00LjA4NlptLS41NzUuODc2Yy4wNCwyLjQ2OC0uMDMzLDQuOTEtMi4xNjksNy4yM2wtLjA3OS4wODloLjExOWwuODczLjAxM2MtMS40MTgsMi45NS0yLjM0MSw1Ljg5Mi00LjM4LDguODNsLS4wNzMuMTA2LjEyNi0uMDIzLDEuMDc4LS4yYTUuODUxLDUuODUxLDAsMCwxLTMuNDg0LDMuNjVjLS4zOS01LjQ1NSwyLjMzMy0xMC4yNyw0LjY0NS0xNS4wNzFsLjAwNy0uMDEzLS4wODYtLjA2Yy0zLjc4Niw0LjIzMy01LjQ5MSwxMC4yLTYuMTM2LDE1LjEyN2E0LjU4Miw0LjU4MiwwLDAsMS0yLjE0NS0yLjk4OGwuOS4zNzcuMDkzLjA0LS4wMi0uMWMtLjY4MS0zLjAyOC4zNzYtNS4yLDEuNC04LjA1NmwuNzM3LjQ5My4wODYuMDYsMC0uMWMtLjA1OC0yLjMyLDEuNS00LjY0OSwzLjU3Ny02LjcyN2wuMjg4Ljc3LjA0LjEuMDU2LS4xLjYzMS0xLjA1MSwwLS4wMDdBNi4xLDYuMSwwLDAsMSwyMS45NDIsMi44NzZaXCIvPmAsXG5cdFwiVGVtcGxhdGUgVG9vbGtpdCAyXCI6IGA8cGF0aCBkPVwiTTguOTA3LDIzLjAyMUg4Ljg3OGEzLjMwNSwzLjMwNSwwLDAsMS0yLjAxMS0uNjYxQTIuNTYxLDIuNTYxLDAsMCwxLDUuODMsMjAuMzM0VjE2LjFINC4yODhhMy4wNSwzLjA1LDAsMCwxLTIuNzM4LTEuNjksMy4zLDMuMywwLDAsMSwuNDQxLTMuNTMsMi4yNjUsMi4yNjUsMCwwLDEsMS44MTUtLjloOS42NWEzLjA1LDMuMDUsMCwwLDEsMi43MzgsMS42OSwzLjMsMy4zLDAsMCwxLS40NDEsMy41MywyLjI2NSwyLjI2NSwwLDAsMS0xLjgxNS45SDExLjk1NXY0LjIzMWEyLjU2MSwyLjU2MSwwLDAsMS0xLjAzNywyLjAyNkEzLjMwNSwzLjMwNSwwLDAsMSw4LjkwNywyMy4wMjFaTTQuMjY0LDExLjYzNmExLjM5LDEuMzksMCwwLDAtMS4zODgsMS4zODh2LjAzM2ExLjM5LDEuMzksMCwwLDAsMS4zODgsMS4zODhINy40ODd2NS44ODFjMCwuNTcyLjYyNCwxLjAzNywxLjM5LDEuMDM3aC4wMjljLjc2NywwLDEuMzktLjQ2NSwxLjM5LTEuMDM3VjE0LjQ0NmgzLjIyM2ExLjM5LDEuMzksMCwwLDAsMS4zODgtMS4zODh2LS4wMzNhMS4zOSwxLjM5LDAsMCwwLTEuMzg4LTEuMzg4WlwiIHN0eWxlPVwiZmlsbDojMDE1ZDlhXCIvPjxwYXRoIGQ9XCJNMTQuOTgxLDEyLjk1M3YuMDMzYTEuNTMzLDEuNTMzLDAsMCwxLTEuNTMzLDEuNTMzSDEwLjM3djUuNzM3YTEuMzkzLDEuMzkzLDAsMCwxLTEuNTM1LDEuMTgxSDguODA2YTEuMzkzLDEuMzkzLDAsMCwxLTEuNTM1LTEuMTgxVjE0LjUxOEg0LjE5MkExLjUzMywxLjUzMywwLDAsMSwyLjY2LDEyLjk4NnYtLjAzM0ExLjUzMywxLjUzMywwLDAsMSw0LjE5MiwxMS40Mmg5LjI1N0ExLjUzMywxLjUzMywwLDAsMSwxNC45ODEsMTIuOTUzWm0tNC4yMjMsOS4yMjJhMi40MTgsMi40MTgsMCwwLDAsLjk4LTEuOTEyVjE1Ljg4OGgyLjEyN2EyLjExNCwyLjExNCwwLDAsMCwxLjctLjg0NiwyLjk5MiwyLjk5MiwwLDAsMC0yLjE4LTQuOTlIMy43MzVhMi4xMTQsMi4xMTQsMCwwLDAtMS43Ljg0NiwyLjk5MiwyLjk5MiwwLDAsMCwyLjE4LDQuOTlINS45djQuMzc1YTIuNDE4LDIuNDE4LDAsMCwwLC45OCwxLjkxMiwzLjE2LDMuMTYsMCwwLDAsMS45MjMuNjMxaC4wMjlBMy4xNiwzLjE2LDAsMCwwLDEwLjc1OCwyMi4xNzRaXCIgc3R5bGU9XCJmaWxsOiMzYmNlZmNcIi8+PHBhdGggZD1cIk0yMy42MDcsMjMuMDIxaC0uMDI5YTMuMzA1LDMuMzA1LDAsMCwxLTIuMDExLS42NjEsMi41NjEsMi41NjEsMCwwLDEtMS4wMzctMi4wMjZWMTYuMUgxOC45ODhhMy4wNSwzLjA1LDAsMCwxLTIuNzM4LTEuNjksMy4zLDMuMywwLDAsMSwuNDQxLTMuNTMsMi4yNjUsMi4yNjUsMCwwLDEsMS44MTUtLjloOS42NWEzLjA1LDMuMDUsMCwwLDEsMi43MzgsMS42OSwzLjMsMy4zLDAsMCwxLS40NDEsMy41MywyLjI2NSwyLjI2NSwwLDAsMS0xLjgxNS45SDI2LjY1NXY0LjIzMWEyLjU2MSwyLjU2MSwwLDAsMS0xLjAzNywyLjAyNkEzLjMwNSwzLjMwNSwwLDAsMSwyMy42MDcsMjMuMDIxWk0xOC45NjQsMTEuNjM2YTEuMzksMS4zOSwwLDAsMC0xLjM4OCwxLjM4OHYuMDMzYTEuMzksMS4zOSwwLDAsMCwxLjM4OCwxLjM4OGgzLjIyM3Y1Ljg4MWMwLC41NzIuNjI0LDEuMDM3LDEuMzksMS4wMzdoLjAyOWMuNzY3LDAsMS4zOS0uNDY1LDEuMzktMS4wMzdWMTQuNDQ2aDMuMjIzYTEuMzksMS4zOSwwLDAsMCwxLjM4OC0xLjM4OHYtLjAzM2ExLjM5LDEuMzksMCwwLDAtMS4zODgtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiMwMTVkOWFcIi8+PHBhdGggZD1cIk0yOS42ODEsMTIuOTUzdi4wMzNhMS41MzMsMS41MzMsMCwwLDEtMS41MzMsMS41MzNIMjUuMDd2NS43MzdhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUsMS4xODFoLS4wMjlhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUtMS4xODFWMTQuNTE4SDE4Ljg5MmExLjUzMywxLjUzMywwLDAsMS0xLjUzMy0xLjUzM3YtLjAzM2ExLjUzMywxLjUzMywwLDAsMSwxLjUzMy0xLjUzM2g5LjI1N0ExLjUzMywxLjUzMywwLDAsMSwyOS42ODEsMTIuOTUzWm0tNC4yMjMsOS4yMjJhMi40MTgsMi40MTgsMCwwLDAsLjk4LTEuOTEyVjE1Ljg4OGgyLjEyN2EyLjExNCwyLjExNCwwLDAsMCwxLjctLjg0NiwyLjk5MiwyLjk5MiwwLDAsMC0yLjE4LTQuOTloLTkuNjVhMi4xMTQsMi4xMTQsMCwwLDAtMS43Ljg0NiwyLjk5MiwyLjk5MiwwLDAsMCwyLjE4LDQuOTlIMjAuNnY0LjM3NWEyLjQxOCwyLjQxOCwwLDAsMCwuOTgsMS45MTIsMy4xNiwzLjE2LDAsMCwwLDEuOTIzLjYzMWguMDI5QTMuMTYsMy4xNiwwLDAsMCwyNS40NTgsMjIuMTc0WlwiIHN0eWxlPVwiZmlsbDojM2JjZWZjXCIvPmAsXG5cdFwiVGVYXCI6IGA8cGF0aCBkPVwiTTExLjMzMywxMy4xMjJjLS4xMjgtMS41NjItLjI0MS0yLjc1Ni0yLjI4Ny0yLjc1Nkg3LjkxdjguNGgyLjE0NXYuNjExbC0zLjA4My0uMDI5LTMuMDgyLjAyOXYtLjYxMUg2LjAzNHYtOC40SDQuODg0Yy0yLjA0NiwwLTIuMTU5LDEuMjA4LTIuMjg3LDIuNzU2SDJsLjI4NC0zLjM2N2g5LjM2MmwuMjg0LDMuMzY3aC0uNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTE5LjI4OSwyMi41M0gxMC40MVYyMS45MmgxLjUwNlYxMy40NjdIMTAuNDF2LS42MTFoOC42MzdsLjQxMiwzLjM2N2gtLjZjLS4yMTMtMS44MzMtLjY4Mi0yLjc1Ni0yLjg1NS0yLjc1NkgxMy43OTFWMTcuMmguODM4YzEuMzY0LDAsMS41MDUtLjYsMS41MDUtMS42NjJoLjZ2My45MzVoLS42YzAtMS4wOC0uMTQyLTEuNjYyLTEuNTA1LTEuNjYyaC0uODM4djQuMTA2aDIuMjE2YzIuNDcyLDAsMy0xLjEwOCwzLjMtMy4yMjVoLjZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+PHBhdGggZD1cIk0yNy43MjcsMTkuMTg2Yy0uNTQsMC0xLjk2LDAtMi40MTUuMDI5VjE4LjZoMS4xNzlsLTIuNTU3LTMuNTUyLTIuNTI5LDMuMzgxQTQuMSw0LjEsMCwwLDAsMjIuNywxOC42di42MTFjLS4zNTUtLjAyOS0xLjU3Ni0uMDI5LTIuMDE3LS4wMjktLjQsMC0xLjU0OCwwLTEuODc1LjAyOVYxOC42aC4zODNhNy40NTksNy40NTksMCwwLDAsLjgyNC0uMDQzYy41LS4wNDMuNTQtLjA4NS42NjctLjI1NkwyMy41MzYsMTQuNWwtMy4xNTMtNC40MThIMTlWOS40N2MuMzg0LjAyOCwxLjc5LjAyOCwyLjI3My4wMjguNTgyLDAsMS45MTgsMCwyLjQyOS0uMDI4di42MTFIMjIuNTI4bDIuMTE3LDIuOTU1LDIuMDc0LTIuNzg0YTQuMSw0LjEsMCwwLDAtMS4yOTMtLjE3VjkuNDdjLjM1Ni4wMjgsMS41OTEuMDI4LDIuMDMyLjAyOC40LDAsMS41MzQsMCwxLjg2MS0uMDI4di42MTFoLS4zNjlhNS4yNjQsNS4yNjQsMCwwLDAtLjgzOC4wNDNjLS40NjkuMDQzLS41MjYuMDcxLS42NjcuMjU2bC0yLjQsMy4yMUwyOC42MzYsMTguNkgzMHYuNjExQzI5LjY0NSwxOS4xODYsMjguMTgyLDE5LjE4NiwyNy43MjcsMTkuMTg2WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPmAsXG5cdFwiVGV4dGlsZVwiOiBgPHBhdGggZD1cIk0yOC42ODEsMjYuMDc1SDMuMzE5QTEuMzE3LDEuMzE3LDAsMCwxLDIsMjQuNzU2VjcuMjQ0QTEuMzE3LDEuMzE3LDAsMCwxLDMuMzE5LDUuOTI1SDI4LjY4MUExLjMxNywxLjMxNywwLDAsMSwzMCw3LjI0NFYyNC43NkExLjMxNiwxLjMxNiwwLDAsMSwyOC42ODEsMjYuMDc1WlwiIHN0eWxlPVwiZmlsbDojZmZlN2FjXCIvPjxwYXRoIGQ9XCJNNi4wNjYsMTIuODQ4YTQuOTg3LDQuOTg3LDAsMCwxLDEuNTA4LS42NTlWMTAuNjY0YTMuNywzLjcsMCwwLDEsLjc0My0uMzMsNy44NjksNy44NjksMCwwLDEsMS4zMjctLjM0N2guNjQydjIuMzkxaDIuNDg0VjEzLjZIMTAuMjg2djQuODQ4YTMuMTcyLDMuMTcyLDAsMCwwLC4yOSwxLjYwOSwxLjA3LDEuMDcsMCwwLDAsLjk3MS40NDgsNy4xMjcsNy4xMjcsMCwwLDAsLjc2LS4wNDgsMy4zMzgsMy4zMzgsMCwwLDAsLjc4Mi0uMThsLjEzMi42MmEyLjM4OCwyLjM4OCwwLDAsMS0uNS4zNTYsNS40NTcsNS40NTcsMCwwLDEtLjc1Mi4zNTYsNS44MzcsNS44MzcsMCwwLDEtLjkyMy4yODFBNC43NjksNC43NjksMCwwLDEsMTAsMjJhMi4zODUsMi4zODUsMCwwLDEtMS44MjQtLjYzNywyLjk0NywyLjk0NywwLDAsMS0uNi0yLjA2MlYxMy41OTFINi4wNjZaXCIvPjxwYXRoIGQ9XCJNMTQuNjA3LDIwLjQ1M2ExLjQ0NywxLjQ0NywwLDAsMSwuNDMxLTEuMDksMS41OTEsMS41OTEsMCwwLDEsMS4xNDctLjQxMywxLjY0OSwxLjY0OSwwLDAsMSwxLjE2NS40MTMsMS40MjIsMS40MjIsMCwwLDEsLjQ1MywxLjA5LDEuMzY5LDEuMzY5LDAsMCwxLS40NTMsMS4wODEsMS42OTIsMS42OTIsMCwwLDEtMS4xNjUuNCwxLjYxLDEuNjEsMCwwLDEtMS4xNDctLjRBMS40MjcsMS40MjcsMCwwLDEsMTQuNjA3LDIwLjQ1M1pcIi8+YCxcblx0XCJUT01MXCI6IGA8cGF0aCBkPVwiTTIyLjc2LDYuODN2My4yNWgtNVYyNS4xN0gxNC4yNlYxMC4wOGgtNVY2LjgzWlwiIHN0eWxlPVwiZmlsbDojN2Y3ZjdmXCIvPjxwYXRoIGQ9XCJNMiwySDguMlY1LjA5SDUuMzR2MjEuOEg4LjJWMzBIMlpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48cGF0aCBkPVwiTTMwLDMwSDIzLjhWMjYuOTFoMi44NlY1LjExSDIzLjhWMkgzMFpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz5gLFxuXHRcIlRTQ29uZmlnXCI6IGA8cGF0aCBkPVwiTTIzLjgyNyw4LjI0M0E0LjQyNCw0LjQyNCwwLDAsMSwyNi4wNSw5LjUyNGE1Ljg1Myw1Ljg1MywwLDAsMSwuODUyLDEuMTQzYy4wMTEuMDQ1LTEuNTM0LDEuMDgzLTIuNDcxLDEuNjYyLS4wMzQuMDIzLS4xNjktLjEyNC0uMzIyLS4zNWEyLjAxNCwyLjAxNCwwLDAsMC0xLjY3LTFjLTEuMDc3LS4wNzQtMS43NzEuNDktMS43NjYsMS40MzNhMS4zLDEuMywwLDAsMCwuMTUzLjY2NmMuMjM3LjQ5LjY3Ny43ODQsMi4wNTksMS4zODMsMi41NDQsMS4xLDMuNjM2LDEuODE3LDQuMzEsMi44NDNhNS4xNTgsNS4xNTgsMCwwLDEsLjQxNiw0LjMzMyw0Ljc2NCw0Ljc2NCwwLDAsMS0zLjkzMiwyLjgxNSwxMC45LDEwLjksMCwwLDEtMi43MDgtLjAyOCw2LjUzMSw2LjUzMSwwLDAsMS0zLjYxNi0xLjg4NCw2LjI3OCw2LjI3OCwwLDAsMS0uOTI2LTEuMzcxLDIuNjU1LDIuNjU1LDAsMCwxLC4zMjctLjIwOGMuMTU4LS4wOS43NTYtLjQzNCwxLjMyLS43NjFsMS4wMjQtLjYuMjE0LjMxMmE0Ljc3MSw0Ljc3MSwwLDAsMCwxLjM1LDEuMjkyLDMuMywzLjMsMCwwLDAsMy40NTgtLjE3NSwxLjU0NSwxLjU0NSwwLDAsMCwuMi0xLjk3NGMtLjI3Ni0uNC0uODQtLjcyNy0yLjQ0My0xLjQyMmE4LjgsOC44LDAsMCwxLTMuMzQ5LTIuMDU1LDQuNjg3LDQuNjg3LDAsMCwxLS45NzYtMS43NzcsNy4xMTYsNy4xMTYsMCwwLDEtLjA2Mi0yLjI2OCw0LjMzMiw0LjMzMiwwLDAsMSwzLjY0NC0zLjM3NEE5LDksMCwwLDEsMjMuODI3LDguMjQzWk0xNS40ODQsOS43MjZsLjAxMSwxLjQ1NGgtNC42M1YyNC4zMjhINy42VjExLjE4M0gyLjk3VjkuNzU1YTEzLjk4NiwxMy45ODYsMCwwLDEsLjA0LTEuNDY2Yy4wMTctLjAyMywyLjgzMi0uMDM0LDYuMjQ1LS4wMjhsNi4yMTEuMDE3WlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMjcuMDc1LDI1LjEwN2wuMzYzLS4zNjFjMS42OC4wNTUsMS43MDYsMCwxLjc4LS4xNzdsLjQ2Mi0xLjEyNC4wMzQtLjEwNy0uMDM4LS4wOTNjLS4wMi0uMDQ5LS4wODEtLjItMS4xMy0xLjJ2LS41MjZjMS4yMTEtMS4xNjYsMS4xODUtMS4yMjYsMS4xMTYtMS40bC0uNDYtMS4xMzZjLS4wNjktLjE3LS4xLS4yMzctMS43NjMtLjE5MWwtLjM2NC0uMzY3YTguMTM4LDguMTM4LDAsMCwwLS4wNTctMS42NTdsLS4wNDctLjEwNi0xLjItLjUyNWMtLjE3Ny0uMDgxLS4yMzktLjExLTEuMzcyLDEuMTI0bC0uNTA5LS4wMDhjLTEuMTY3LTEuMjQ1LTEuMjIyLTEuMjIzLTEuNC0xLjE1MmwtMS4xMTUuNDUyYy0uMTc1LjA3MS0uMjM2LjEtLjE2OSwxLjc5bC0uMzYuMzU5Yy0xLjY4LS4wNTUtMS43LDAtMS43NzguMTc3TDE4LjYwNiwyMGwtLjAzNi4xMDguMDM4LjA5NGMuMDIuMDQ4LjA3OC4xOTQsMS4xMywxLjJ2LjUyNWMtMS4yMTEsMS4xNjYtMS4xODQsMS4yMjYtMS4xMTUsMS40bC40NTksMS4xMzdjLjA3LjE3NC4xLjIzNiwxLjc2My4xOTJsLjM2My4zNzdhOC4xNjksOC4xNjksMCwwLDAsLjA1NSwxLjY1NGwuMDQ3LjEwNywxLjIwOC41MjhjLjE3Ni4wNzMuMjM2LjEsMS4zNjYtMS4xM2wuNTA5LjAwNmMxLjE2OCwxLjI0NywxLjIyOCwxLjIyMywxLjQsMS4xNTRsMS4xMTMtLjQ1QzI3LjA4MiwyNi44MjcsMjcuMTQzLDI2LjgsMjcuMDc1LDI1LjEwN1ptLTQuNzg4LTIuNjMyYTIsMiwwLDEsMSwyLjYxOCwxLjE0QTIuMDIzLDIuMDIzLDAsMCwxLDIyLjI4NywyMi40NzVaXCIgc3R5bGU9XCJmaWxsOiM5OWI4YzRcIi8+YCxcblx0XCJUd2lnXCI6IGA8cGF0aCBkPVwiTTQuNTc0LDUuNDYzYy4yNjIuNCwyLjUtMS42MDgsNC40NTQtMS4xNjEsMi4wNjEuNDcyLDQuMDE0LDMuNzI0LDQuODQ4LDEzLjdhNDAuMTgsNDAuMTgsMCwwLDEsMy41NDEsMy42MXEuNTMuNjE0LDEuMDEzLDEuMjJhMTEuODQ3LDExLjg0NywwLDAsMSwuMjI5LTEuNCwxMi4zLDEyLjMsMCwwLDEsMS45ODEtNC40QTE5LjE1MSwxOS4xNTEsMCwwLDAsMTcuMjcyLDcuOWMtMS4wMy0xLjQ0NS00LjYtNi40NzgtOC41NDYtNS44NDNDNi4xODIsMi40NjUsNC4zLDUuMDU0LDQuNTc0LDUuNDYzWlwiIHN0eWxlPVwiZmlsbDojNjNiZjZhXCIvPjxwYXRoIGQ9XCJNMjQuNCwzMGMtLjMyLTIuNTY3LS40NDgtNC43Ni0uNS02LjQ0OS0uMDk0LTMuMjMyLjEtNC41NDEuOS01Ljc1Ni4xOTMtLjI5NSwxLjI4OC0xLjk3NSwyLjU4LTEuODYzLDEuNDY2LjEyOCwyLjIxMywyLjQxNCwyLjM2MiwyLjMzNy4xNzUtLjA5LS4zNi0zLjU0My0yLjUzMi00LjQzMS0yLjYtMS4wNjMtNi4zMTIsMi4wNy03LjgsNS4xNTRhMTIuMjIzLDEyLjIyMywwLDAsMC0uODU3LDIuODEsMzIuNTU1LDMyLjU1NSwwLDAsMC0uNzEsOC4yWlwiIHN0eWxlPVwiZmlsbDojNzRkNzRkXCIvPjxwYXRoIGQ9XCJNMi4yMzgsMTMuOTM1Yy4xNDUtLjQ0NywyLjQ2OC0uMjU5LDQuNTQuMjkzLDIuNS42NjYsNywyLjM0NCwxMS42NTEsOC42MDZBMTIuNTQ0LDEyLjU0NCwwLDAsMSwyMC4yNzksMzBIMTAuMzg2YTIxLjg3NSwyMS44NzUsMCwwLDAtLjE3NS00LjYyLDE0LjksMTQuOSwwLDAsMC0yLjQ1OS03LjE1OEM1LjQ0MSwxNS4xNTksMi4wNTUsMTQuNSwyLjIzOCwxMy45MzVaXCIgc3R5bGU9XCJmaWxsOiM3OGRjNTBcIi8+PHBhdGggZD1cIk0xNy4zLDIxLjMyM2ExLjc1MywxLjc1MywwLDEsMS0uNTEzLTEuMjRBMS43NDgsMS43NDgsMCwwLDEsMTcuMywyMS4zMjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMS45NzUsMjEuMzIzYTEuNzUzLDEuNzUzLDAsMSwxLS41MTMtMS4yNEExLjc0OCwxLjc0OCwwLDAsMSwyMS45NzUsMjEuMzIzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiVHlwZVNjcmlwdFwiOiBgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS4zMTJcIiBzdHlsZT1cImZpbGw6IzMxNzhjNlwiLz48cGF0aCBkPVwiTTE4LjI0NSwyMy43NTl2My4wNjhhNi40OTIsNi40OTIsMCwwLDAsMS43NjQuNTc1LDExLjU2LDExLjU2LDAsMCwwLDIuMTQ2LjE5Miw5Ljk2OCw5Ljk2OCwwLDAsMCwyLjA4OC0uMjExLDUuMTEsNS4xMSwwLDAsMCwxLjczNS0uNywzLjU0MiwzLjU0MiwwLDAsMCwxLjE4MS0xLjI2Niw0LjQ2OSw0LjQ2OSwwLDAsMCwuMTg2LTMuMzk0LDMuNDA5LDMuNDA5LDAsMCwwLS43MTctMS4xMTcsNS4yMzYsNS4yMzYsMCwwLDAtMS4xMjMtLjg3NywxMi4wMjcsMTIuMDI3LDAsMCwwLTEuNDc3LS43MzRxLS42LS4yNDktMS4wOC0uNDg0YTUuNSw1LjUsMCwwLDEtLjgxMy0uNDc5LDIuMDg5LDIuMDg5LDAsMCwxLS41MTYtLjUxOCwxLjA5MSwxLjA5MSwwLDAsMS0uMTgxLS42MTgsMS4wMzksMS4wMzksMCwwLDEsLjE2Mi0uNTcxLDEuNCwxLjQsMCwwLDEsLjQ1OS0uNDM2LDIuNDM5LDIuNDM5LDAsMCwxLC43MjYtLjI4Myw0LjIxMSw0LjIxMSwwLDAsMSwuOTU2LS4xLDUuOTQyLDUuOTQyLDAsMCwxLC44MDguMDU4LDYuMjkyLDYuMjkyLDAsMCwxLC44NTYuMTc3LDUuOTk0LDUuOTk0LDAsMCwxLC44MzYuMyw0LjY1Nyw0LjY1NywwLDAsMSwuNzUxLjQyMlYxMy45YTcuNTA5LDcuNTA5LDAsMCwwLTEuNTI1LS40LDEyLjQyNiwxMi40MjYsMCwwLDAtMS45LS4xMjksOC43NjcsOC43NjcsMCwwLDAtMi4wNjQuMjM1LDUuMjM5LDUuMjM5LDAsMCwwLTEuNzE2LjczMywzLjY1NSwzLjY1NSwwLDAsMC0xLjE3MSwxLjI3MSwzLjczMSwzLjczMSwwLDAsMC0uNDMxLDEuODQ1LDMuNTg4LDMuNTg4LDAsMCwwLC43ODksMi4zNCw2LDYsMCwwLDAsMi4zOTUsMS42MzlxLjYzLjI2LDEuMTc1LjUwOWE2LjQ1OCw2LjQ1OCwwLDAsMSwuOTQyLjUxNywyLjQ2MywyLjQ2MywwLDAsMSwuNjI2LjU4NSwxLjIsMS4yLDAsMCwxLC4yMy43MTksMS4xLDEuMSwwLDAsMS0uMTQ0LjU1MiwxLjI2OSwxLjI2OSwwLDAsMS0uNDM1LjQ0MSwyLjM4MSwyLjM4MSwwLDAsMS0uNzI2LjI5Miw0LjM3Nyw0LjM3NywwLDAsMS0xLjAxOC4xMDUsNS43NzMsNS43NzMsMCwwLDEtMS45NjktLjM1QTUuODc0LDUuODc0LDAsMCwxLDE4LjI0NSwyMy43NTlabS01LjE1NC03LjYzOGg0VjEzLjU5NEg1LjkzOHYyLjUyN0g5LjkyVjI3LjM3NWgzLjE3MVpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuXHRcIlR5cG9TY3JpcHRcIjogYDxwYXRoIGQ9XCJNMjMuMDkzLDIxLjNhMy44NDcsMy44NDcsMCwwLDEtMS4xOC4xNjVjLTMuNTU1LDAtOC43NzgtMTIuNDI0LTguNzc4LTE2LjU1OSwwLTEuNTIzLjM2Mi0yLjAzMS44Ny0yLjQ2NkM5LjY1MywyLjk0Myw0LjQzLDQuNTM5LDIuNzYxLDYuNTdhNC4wNDgsNC4wNDgsMCwwLDAtLjU4LDIuMzIxQzIuMTgxLDE1LjM0OCw5LjA3MiwzMCwxMy45MzMsMzBjMi4yNDgsMCw2LjA0MS0zLjcsOS4xNi04LjdcIiBzdHlsZT1cImZpbGw6I2ZmODcwMFwiLz48cGF0aCBkPVwiTTIwLjgyMywyYzQuNSwwLDksLjcyNSw5LDMuMjY0LDAsNS4xNTEtMy4yNjQsMTEuMzg5LTQuOTMzLDExLjM4OS0yLjk3NCwwLTYuNjczLTguMjY5LTYuNjczLTEyLjQsMC0xLjg4Ni43MjUtMi4yNDksMi42MTEtMi4yNDlcIiBzdHlsZT1cImZpbGw6I2ZmODcwMFwiLz5gLFxuXHRcIlZcIjogYDxwYXRoIGQ9XCJNMjAuNDY3LDI5LjI4OCwyOS45NTIsMi45MTNhLjUuNSwwLDAsMC0uNTY2LS43MjhMMjEuOTI3LDIuOWExLjQ2NCwxLjQ2NCwwLDAsMC0xLjE0MS45TDEyLjAwNywyOS4wMDZhLjU3My41NzMsMCwwLDAsLjU3OC44MTNoNy4yNmEuNjU3LjY1NywwLDAsMCwuNTc3LS40WlwiIHN0eWxlPVwiZmlsbDojNTM2YjhhXCIvPjxwYXRoIGQ9XCJNMi42MTQsMi4xODVsNy40NTkuNzE5YTEuNDY2LDEuNDY2LDAsMCwxLDEuMTQyLjlMMjAuMTgsMjkuNDEzYS4yODYuMjg2LDAsMCwxLS4yODkuNDA2SDEyLjU4NWExLjMxMSwxLjMxMSwwLDAsMS0xLjE1Mi0uODFMMi4wNDgsMi45MTNBLjUuNSwwLDAsMSwyLjYxNCwyLjE4NVpcIiBzdHlsZT1cImZpbGw6IzVkODdiZlwiLz5gLFxuXHRcIlZhbGFcIjogYDxwYXRoIGQ9XCJNMTIuNTA5LDE3LjE5M2MtLjE2NS02LjgzNi0uMzI1LTEyLjQ1NS0uMzU3LTEyLjQ4N0E3LjkxNiw3LjkxNiwwLDAsMCw5Ljg3OSw1Ljg3NCw3LjYwNiw3LjYwNiwwLDAsMCw3LjMyNCw5LjE4OGE4LjQyMiw4LjQyMiwwLDAsMC0uNTg3LDMuNTQzLDQuNjY1LDQuNjY1LDAsMCwwLC4yLDEuOTYyLDMuNDE3LDMuNDE3LDAsMCwxLC4xODIuNTZjLS4wMTIuMDA5LS4zMzgtLjAxOC0uNzI0LS4wNjEtMS44NjgtLjIwNy0yLjc4Ni0xLjA1LTMtMi43NTdBNi4zMTIsNi4zMTIsMCwwLDEsNC44NSw3LjcxOWExNS4xMzQsMTUuMTM0LDAsMCwxLDguNDE0LTUuMTYzLDEyLjg5MSwxMi44OTEsMCwwLDEsMi41NDItLjIzNWwxLjc0OC0uMDUuMDU5LDIuNTA2Yy4wMzIsMS4zNzguMSw2LjM1OC4xNjEsMTEuMDY3cy0uMjUyLDguMjktLjIxOSw4LjRDMTkuNSwxNy44NzksMjIsMTMuMDczLDI0LjM2Nyw2LjI1M2wxLjQyNy0zLjk4M0gyOC41NGMtLjAyMi4wNjMtMi43NTEsNi41LTUuNTE0LDEzLjkxNmwtNS40NzMsMTMuNTVIMTIuOTc2QzEyLjk3NiwyNy45MDYsMTIuNTM1LDE4LjQ4NiwxMi41MDksMTcuMTkzWlwiIHN0eWxlPVwiZmlsbDojNDAzNzU3XCIvPjxwYXRoIGQ9XCJNMTcuNzMyLDMwSDEyLjcxM3YtLjI2M2MwLTEuMTM3LS4xNy01LjE5Mi0uMzA3LTguNDUyLS4wODEtMS45MjktLjE1LTMuNi0uMTYxLTQuMDg3LS4xNTYtNi40NzktLjI4Ni0xMS0uMzM2LTEyLjE2M2ExMS42NzQsMTEuNjc0LDAsMCwwLTEuODc0LDEuMDQ5LDcuMzQ4LDcuMzQ4LDAsMCwwLTIuNDY2LDMuMkE4LjE0Niw4LjE0NiwwLDAsMCw3LDEyLjczMSw0LjM3LDQuMzcsMCwwLDAsNy4xODUsMTQuNmMuMjE1LjU2OS4yNzMuNzIzLjEuODU5LS4wOTMuMDczLS4xMDcuMDg0LS45MTYtLjAwNy0xLjk3Ni0uMjE5LTMtMS4xNjctMy4yMzQtMi45ODZBNi41NjgsNi41NjgsMCwwLDEsNC42NCw3LjU2MSwxNS40MzksMTUuNDM5LDAsMCwxLDEzLjIsMi4zLDEzLjE3NiwxMy4xNzYsMCwwLDEsMTUuOCwyLjA1OEwxNy44MTEsMmwuMDY1LDIuNzdjLjAzMiwxLjM5Mi4xMDYsNi40NjEuMTYxLDExLjA3LjAzMSwyLjYxNi0uMDUyLDQuOTE1LS4xMjQsNi40My45MzEtMi43NjMsMS45NTgtNS4yNywzLjAzMy03LjksMS4wNDMtMi41NDcsMi4xMjItNS4xOCwzLjE3My04LjIwN2wxLjQ5MS00LjE2aDMuM2wtLjEyNS4zNTFjMCwuMDA3LS4wMzEuMDc2LS4wODQuMi0xLjEsMi42MjItMy4yNTksNy44ODktNS40MywxMy43MTdabS00LjQ5NS0uNTI2aDQuMTRsNS40MDctMTMuMzg2YzIuMTI0LTUuNyw0LjI0My0xMC44NzYsNS4zNjItMTMuNTU1SDI1Ljk3OUwyNC42MTQsNi4zNDJjLTEuMDU1LDMuMDM4LTIuMTM3LDUuNjc4LTMuMTgzLDguMjMxLTEuMzExLDMuMi0yLjU1LDYuMjI2LTMuNjI2LDkuNzQ3bC0uMjU1LjgzMS0uMjQ4LS44MzNhMy4yNzQsMy4yNzQsMCwwLDEsLjAyMS0uODM5Yy4wNzQtMS4zNS4yMjktNC4xNTguMTg4LTcuNjMzLS4wNTUtNC42MDctLjEyOS05LjY3NC0uMTYxLTExLjA2NEwxNy4zLDIuNTQxbC0xLjQ4NC4wNDNhMTIuNzI5LDEyLjcyOSwwLDAsMC0yLjQ5LjIyOEExNC44ODcsMTQuODg3LDAsMCwwLDUuMDYsNy44NzdhNi4wNzEsNi4wNzEsMCwwLDAtMS40LDQuNTI0Yy4yLDEuNTgsMS4wMjgsMi4zMzYsMi43NywyLjUyOWwuMzMzLjAzNWMtLjAxOS0uMDU0LS4wNDEtLjExNC0uMDY2LS4xNzlhNC44OTMsNC44OTMsMCwwLDEtLjIxOS0yLjA1NSw4LjcsOC43LDAsMCwxLC42LTMuNjM4LDcuODgzLDcuODgzLDAsMCwxLDIuNjQ0LTMuNDNjLjAyMi0uMDE2LDIuMjMyLTEuNTI1LDIuNjE1LTEuMTQyLjA5Mi4wOTIuMTMxLjEzMS40MzMsMTIuNjY2aDBjLjAxLjQ4NS4wOCwyLjE0OS4xNiw0LjA3NkMxMy4wNiwyNC4zMTMsMTMuMjE3LDI4LjA2LDEzLjIzNywyOS40NzRaXCIgc3R5bGU9XCJmaWxsOiNjOGM4YzhcIi8+YCxcblx0XCJWQi5OZXRcIjogYDxwYXRoIGQ9XCJNNi42Nyw3LjgzNiw5LDE4LjkxNSwxMS4zMzYsNy44MzZIMTZMMTEuMzM2LDI0LjE2NEg2LjY3MkwyLDcuODM2WlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPjxwYXRoIGQ9XCJNMTguMzMxLDcuODM2aDcuNmE0LjA4LDQuMDgsMCwwLDEsMi45LDEuNzQ5LDMuNzgsMy43OCwwLDAsMSwuNTcxLDIuMDQsMy45ODUsMy45ODUsMCwwLDEtLjU3MSwyLjAzNCw0LjEwOCw0LjEwOCwwLDAsMS0yLjM0MSwxLjc2Myw0LjEsNC4xLDAsMCwxLDIuOTI5LDEuNzU2LDMuOCwzLjgsMCwwLDEsLjU4LDIuMSw0LjY2Myw0LjY2MywwLDAsMS0uNTc5LDIuNTQ2LDUuMDQ3LDUuMDQ3LDAsMCwxLTMuNSwyLjMzOEgxOC4zMzFaTTIzLDE0LjI1MmgxLjE2NmExLjc1NCwxLjc1NCwwLDAsMCwwLTMuNUgyM1ptMCw3SDI0LjM5YTIuMDQ3LDIuMDQ3LDAsMCwwLDAtNC4wODlIMjNaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+YCxcblx0XCJWQkFcIjogYDxwb2x5Z29uIHBvaW50cz1cIjEwLjQ1NyAxMS4wOTIgMTYuMDE0IDEzLjgzOSAxNi4wMTQgMTguMzA3IDEwLjQ1NyAxNS4zODIgMTAuNDU3IDExLjA5MlwiIHN0eWxlPVwiZmlsbDojNjQ4M2MwXCIvPjxwYXRoIGQ9XCJNMTYuMiwxOC42MTNsLTUuOTI2LTMuMTJWMTAuOEwxNi4yLDEzLjcyNFpNMTAuNjQyLDE1LjI3LDE1LjgzLDE4VjEzLjk1M2wtNS4xODgtMi41NjRaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjM3MSAxMy44MzkgMTYuMzcxIDE4LjMwNyAyMS4zMTUgMTUuODE0IDIxLjMxNSAxMS4zNTQgMTYuMzcxIDEzLjgzOVwiIHN0eWxlPVwiZmlsbDojNjQ4M2MwXCIvPjxwYXRoIGQ9XCJNMTYuMTg2LDE4LjYwN1YxMy43MjVsNS4zMTMtMi42N3Y0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NUwyMS4xMywxNS43VjExLjY1M1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTAuNzAzIDEwLjc5NyAxNi4xODYgMTMuNTggMjEuMDgyIDExLjA2NCAxNS43NzcgOC4zODkgMTAuNzAzIDEwLjc5N1wiIHN0eWxlPVwiZmlsbDojNjQ4M2MwXCIvPjxwYXRoIGQ9XCJNMTYuMTg3LDEzLjc4OGwtNS45LTMsNS41LTIuNjA4LDUuNzA5LDIuODc5Wk0xMS4xMjIsMTAuOGw1LjA2NCwyLjU3LDQuNDktMi4zMDgtNC45LTIuNDcxWlwiLz48cG9seWdvbiBwb2ludHM9XCIxOC45NTcgMTUuODI5IDI0LjUxNSAxOC41NzUgMjQuNTE1IDIzLjA0MyAxOC45NTcgMjAuMTE4IDE4Ljk1NyAxNS44MjlcIiBzdHlsZT1cImZpbGw6Izk1Mjc4MVwiLz48cGF0aCBkPVwiTTI0LjcsMjMuMzQ5bC01LjkyNi0zLjEydi00LjdMMjQuNywxOC40NlptLTUuNTU3LTMuMzQzLDUuMTg4LDIuNzMxVjE4LjY4OWwtNS4xODgtMi41NjRaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI0Ljg3MSAxOC41NzUgMjQuODcxIDIzLjA0MyAyOS44MTUgMjAuNTUgMjkuODE1IDE2LjA5IDI0Ljg3MSAxOC41NzVcIiBzdHlsZT1cImZpbGw6Izk1Mjc4MVwiLz48cGF0aCBkPVwiTTI0LjY4NywyMy4zNDNWMTguNDYxTDMwLDE1Ljc5MXY0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NWw0LjU3NS0yLjMwOFYxNi4zODlaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjIwMyAxNS41NDYgMjQuNjg3IDE4LjMyOSAyOS41ODMgMTUuODEyIDI0LjM2NCAxMy4zNDYgMTkuMjAzIDE1LjU0NlwiIHN0eWxlPVwiZmlsbDojOTUyNzgxXCIvPjxwYXRoIGQ9XCJNMjQuNjg3LDE4LjUzNmwtNS45Mi0zLjAwNSw1LjYtMi4zODdMMzAsMTUuODA1Wk0xOS42NCwxNS41Nmw1LjA0NiwyLjU2MSw0LjQ3OS0yLjMtNC44MDYtMi4yN1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi4xOSAxNS40OTYgNy43NDggMTguMjQzIDcuNzQ4IDIyLjcxMSAyLjE5IDE5Ljc4NiAyLjE5IDE1LjQ5NlwiIHN0eWxlPVwiZmlsbDojZDg3YjMwXCIvPjxwYXRoIGQ9XCJNNy45MzIsMjMuMDE3LDIuMDA2LDE5LjlWMTUuMmw1LjkyNiwyLjkyOVpNMi4zNzUsMTkuNjc0bDUuMTg4LDIuNzMxVjE4LjM1N0wyLjM3NSwxNS43OTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjguMTA0IDE4LjI0MyA4LjEwNCAyMi43MTEgMTMuMDQ4IDIwLjIxOCAxMy4wNDggMTUuNzU4IDguMTA0IDE4LjI0M1wiIHN0eWxlPVwiZmlsbDojZDg3YjMwXCIvPjxwYXRoIGQ9XCJNNy45MiwyMy4wMTFWMTguMTI5bDUuMzEzLTIuNjd2NC44NzNabS4zNjktNC42NTV2NC4wNTVMMTIuODY0LDIwLjFWMTYuMDU3WlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjQzNiAxNS4yMTMgNy45MiAxNy45OTcgMTIuODE2IDE1LjQ4IDcuNTk3IDEzLjAxNCAyLjQzNiAxNS4yMTNcIiBzdHlsZT1cImZpbGw6I2Q4N2IzMFwiLz48cGF0aCBkPVwiTTcuOTIsMTguMiwyLDE1LjJsNS42LTIuMzg3LDUuNjMyLDIuNjYxWk0yLjg3MywxNS4yMjhsNS4wNDYsMi41NjEsNC40NzktMi4zLTQuODA2LTIuMjdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjEwLjg3NSAxNi4yOTYgMTYuNDMyIDE5LjA0MiAxNi40MzIgMjMuNTExIDEwLjg3NSAyMC41ODUgMTAuODc1IDE2LjI5NlwiIHN0eWxlPVwiZmlsbDojZTBkNDAwXCIvPjxwYXRoIGQ9XCJNMTYuNjE3LDIzLjgxNiwxMC42OTEsMjAuN1YxNmw1LjkyNiwyLjkyOVpNMTEuMDYsMjAuNDc0bDUuMTg4LDIuNzMxVjE5LjE1N0wxMS4wNiwxNi41OTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2Ljc4OSAxOS4wNDIgMTYuNzg5IDIzLjUxMSAyMS43MzMgMjEuMDE3IDIxLjczMyAxNi41NTcgMTYuNzg5IDE5LjA0MlwiIHN0eWxlPVwiZmlsbDojZTBkNDAwXCIvPjxwYXRoIGQ9XCJNMTYuNiwyMy44MTFWMTguOTI5bDUuMzEzLTIuNjd2NC44NzNabS4zNjktNC42NTV2NC4wNTVMMjEuNTQ5LDIwLjlWMTYuODU3WlwiLz48cG9seWdvbiBwb2ludHM9XCIxMS4xMjEgMTYuMDAxIDE2LjYwNSAxOC43ODQgMjEuNTAxIDE2LjI2NyAxNi4xOTYgMTMuNTkzIDExLjEyMSAxNi4wMDFcIiBzdHlsZT1cImZpbGw6I2UwZDQwMFwiLz48cGF0aCBkPVwiTTE2LjYwNSwxOC45OTFsLTUuOS0zLDUuNS0yLjYwOCw1LjcwOSwyLjg3OVpNMTEuNTQsMTYuMDA2bDUuMDY0LDIuNTcsNC40OS0yLjMwOC00LjktMi40NzFaXCIvPmAsXG5cdFwiVmVsb2NpdHlcIjogYDxwYXRoIGQ9XCJNMTYuMjQ1LDI0LjE4N0E4LjM1Miw4LjM1MiwwLDEsMSwyNC42LDE1LjgzNSw4LjM2Miw4LjM2MiwwLDAsMSwxNi4yNDUsMjQuMTg3Wm0wLTE0Ljc2MmE2LjQxLDYuNDEsMCwxLDAsNi40MSw2LjQxQTYuNDE3LDYuNDE3LDAsMCwwLDE2LjI0NSw5LjQyNVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjkuMTMyIDguNTUxIDI1LjQ1MSA2LjUzMSAyNS40NTEgNy40NzQgMTUuODIxIDcuNDc0IDE1LjgyMSA5LjQyNCAyNS40NTEgOS40MjQgMjUuNDUxIDEwLjU3MSAyOS4xMzIgOC41NTFcIiBzdHlsZT1cImZpbGw6IzI2MjY5MlwiLz48cG9seWdvbiBwb2ludHM9XCI4Ljk4NCAyIDYuOTY0IDUuNjg3IDcuOTA2IDUuNjg3IDcuOTA2IDE1LjMyOCA5Ljg1NyAxNS4zMjggOS44NTcgNS42ODcgMTEuMDA0IDUuNjg3IDguOTg0IDJcIiBzdHlsZT1cImZpbGw6IzI2MjY5M1wiLz48cG9seWdvbiBwb2ludHM9XCIyMy43MDUgMzAgMjEuNjg1IDI2LjI0MyAyMi42MjggMjYuMjQzIDIyLjYyOCAxNi40MTcgMjQuNTc4IDE2LjQxNyAyNC41NzggMjYuMjQzIDI1LjcyNSAyNi4yNDMgMjMuNzA1IDMwXCIgc3R5bGU9XCJmaWxsOiMyNjI2OTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi44NjggMjMuMzIgNi42MzQgMjEuMyA2LjYzNCAyMi4yNDIgMTYuNDg0IDIyLjI0MiAxNi40ODQgMjQuMTkyIDYuNjM0IDI0LjE5MiA2LjYzNCAyNS4zNCAyLjg2OCAyMy4zMlwiIHN0eWxlPVwiZmlsbDojMjYyNjkyXCIvPmAsXG5cdFwiVmVyaWxvZ1wiOiBgPHBhdGggZD1cIk0yOS4wMDcsMTcuNGguMDM3YTEuNDQ5LDEuNDQ5LDAsMCwwLC45MzgtLjMxNiwxLjQ3MywxLjQ3MywwLDAsMCwuNTE5LTEuMDMxVjE1LjlhMS40MTMsMS40MTMsMCwwLDAtMS4zNzYtMS4zaC0uMDA5Yy0uNjg3LDAtMS4zNzQsMC0yLjA2MiwwSDI1LjVWMTEuOTU2bDMuNTEzLDBoLjAzNEExLjQxMSwxLjQxMSwwLDAsMCwzMC41LDEwLjZsMC0uMDksMC0uMDMyYTEuNDEyLDEuNDEyLDAsMCwwLS42NDYtMS4xLDEuNDU1LDEuNDU1LDAsMCwwLS44MzUtLjIyNUgyNS40NTZhMi45NiwyLjk2LDAsMCwwLS4yNzgtMS4wMzQsMi45MDksMi45MDksMCwwLDAtMS43LTEuNDYxLDIuNjg0LDIuNjg0LDAsMCwwLS42MjktLjEzVjQuOTQ3YzAtLjY5LDAtMS4zOCwwLTIuMDYzQTEuNDE0LDEuNDE0LDAsMCwwLDIxLjQ4MSwxLjVoLS4xMTZhMS40LDEuNCwwLDAsMC0xLjMxOSwxLjM4OHEwLDEuMTU0LDAsMi4zMDZWNi41SDE3LjRWNC45ODFjMC0uNywwLTEuNCwwLTIuMDg3QTEuNDEsMS40MSwwLDAsMCwxNi4wNTMsMS41SDE1LjlhMS40MDgsMS40MDgsMCwwLDAtMS4zLDEuMzgzYzAsLjY4OCwwLDEuMzc2LDAsMi4wNjRWNi41MDhxLTEuMzE5LDAtMi42MzksMFY0Ljg4OGMwLS42NjYsMC0xLjMzMiwwLTEuOTg5YTEuMzY2LDEuMzY2LDAsMCwwLS40LS45NzUsMS40LDEuNCwwLDAsMC0uOTg0LS40MjRIMTAuNUExLjQxLDEuNDEsMCwwLDAsOS4xNTksMi44ODFjMCwuNjgzLDAsMS4zNjYsMCwyLjA0OXYxLjZhMi45MzMsMi45MzMsMCwwLDAtMi40NjYsMS45LDIuODc4LDIuODc4LDAsMCwwLS4xNjEuNzI2SDQuOTU3Yy0uNjkzLDAtMS4zODYsMC0yLjA3MywwSDIuODc2QTEuNDEzLDEuNDEzLDAsMCwwLDEuNSwxMC41di4wOTVhMS40MTcsMS40MTcsMCwwLDAsLjU3NSwxLjA5MSwxLjQ2MywxLjQ2MywwLDAsMCwuODg3LjI3M2guMDE3bDMuNTIyLDBWMTQuNkg0Ljk0OGMtLjY4NiwwLTEuMzc1LDAtMi4wNTcsMEExLjQyOCwxLjQyOCwwLDAsMCwxLjUsMTUuOTEzVjE2LjFhMS40LDEuNCwwLDAsMCwxLjM4NiwxLjNjLjcxMSwwLDEuNDIzLDAsMi4xMzUsMEg2LjVWMjAuMDVsLS4yOTIsMGMtLjYxMy0uMDA3LTEuMjI2LDAtMS44MzgsMEgzLjA4N2ExLjYzMywxLjYzMywwLDAsMC0uOTE4LjIxMUExLjQzNywxLjQzNywwLDAsMCwxLjUsMjEuNFYyMS41YTEuNDE3LDEuNDE3LDAsMCwwLDEuMzc1LDEuMzM3aC4wMDVxLjY0NSwwLDEuMjksMEg2LjU0NmEyLjgzMiwyLjgzMiwwLDAsMCwxLjk3OCwyLjUsMi43MTIsMi43MTIsMCwwLDAsLjYzMS4xMjh2MS42MmMwLC42NzgsMCwxLjM1NCwwLDIuMDI1YTEuNCwxLjQsMCwxLDAsMi44LS4wOTJsMC0zLjUyN0gxNC42djMuNTE2QTEuNDE0LDEuNDE0LDAsMCwwLDE1Ljk0NywzMC41SDE2LjFhMS40MTEsMS40MTEsMCwwLDAsMS4zLTEuMzg1cS4wMDYtMS4wNjYsMC0yLjEzMVYyNS41aDIuNjQ0VjI5LjFBMS40MjMsMS40MjMsMCwwLDAsMjEuNCwzMC41aC4xMTlhMS40MDgsMS40MDgsMCwwLDAsMS4xNi0uNzQxLDEuNjQzLDEuNjQzLDAsMCwwLC4xNjctLjgzM1YyNS40NzRhMi42NzEsMi42NzEsMCwwLDAsLjYyLS4xMjgsMi45MjgsMi45MjgsMCwwLDAsMS44ODYtMS44ODgsMi44MzQsMi44MzQsMCwwLDAsLjEyMy0uNjEzaDEuNTgxYy42ODcsMCwxLjM3NSwwLDIuMDU3LDBoLjAwOEExLjQyMiwxLjQyMiwwLDAsMCwzMC41LDIxLjQ4MXYtLjExOGExLjQwOSwxLjQwOSwwLDAsMC0xLjM4Mi0xLjMxOGgwYy0uNzE4LDAtMS40MzYsMC0yLjE1NCwwSDI1LjVWMTcuNFpcIiBzdHlsZT1cImZpbGw6I2M1YzVjNTtvcGFjaXR5OjAuM1wiLz48cGF0aCBkPVwiTTEwLjUxNSwyaC4wNTZhLjkxLjkxLDAsMCwxLC44ODYuODkzYy4wMDYsMS4xMDgsMCwyLjIxNiwwLDMuMzI0LS42LDAtMS4yLDAtMS44LDAsMC0xLjExMSwwLTIuMjIyLDAtMy4zMzNBLjkwNy45MDcsMCwwLDEsMTAuNTE1LDJaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0xNS45MzcsMmguMTE2YS45MTIuOTEyLDAsMCwxLC44NDYuODg5Yy4wMDYsMS4xMDksMCwyLjIxOSwwLDMuMzI5SDE1LjFjMC0xLjExLDAtMi4yMiwwLTMuMzNBLjkxMS45MTEsMCwwLDEsMTUuOTM3LDJaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yMS4zOTIsMmguMDg5YS45MDcuOTA3LDAsMCwxLC44NTkuODgxYy4wMDcsMS4xMTIsMCwyLjIyNSwwLDMuMzM3aC0xLjhjMC0xLjEwOSwwLTIuMjE3LDAtMy4zMjZBLjkxMi45MTIsMCwwLDEsMjEuMzkyLDJaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yLDEwLjUxOGEuOTA4LjkwOCwwLDAsMSwuODgyLS44NTljMS4xMTItLjAwNywyLjIyMywwLDMuMzM0LDBxMCwuOSwwLDEuOGMtMS4wNzksMC0yLjE1OCwwLTMuMjM3LDBhLjk4My45ODMsMCwwLDEtLjYtLjE3M0EuOTI0LjkyNCwwLDAsMSwyLDEwLjU3MVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI1Ljc4Niw5LjY1NWgzLjIzM2ExLDEsMCwwLDEsLjU2MS4xNDMuOTI0LjkyNCwwLDAsMSwuNDIuNzE2di4wNThhLjkzMy45MzMsMCwwLDEtLjMuNjUxLjk1Ny45NTcsMCwwLDEtLjY3Ny4yMzRjLTEuMDc5LDAtMi4xNTgsMC0zLjIzNywwUTI1Ljc4NiwxMC41NTYsMjUuNzg2LDkuNjU1WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMiwxNS45NDRhLjkxMy45MTMsMCwwLDEsLjg4OC0uODQyYzEuMTA5LS4wMDcsMi4yMTksMCwzLjMyOCwwcTAsLjksMCwxLjhjLTEuMTA5LDAtMi4yMTcsMC0zLjMyNiwwQS45MTUuOTE1LDAsMCwxLDIsMTYuMDYzWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjUuNzg2LDE1LjFjMS4xMDksMCwyLjIxOCwwLDMuMzI2LDBhLjkxNC45MTQsMCwwLDEsLjg4OS44MzV2LjExN2EuOTQ2Ljk0NiwwLDAsMS0uMzMxLjY0MS45NzMuOTczLDAsMCwxLS42NTEuMjA3SDI1Ljc4NlEyNS43ODUsMTYsMjUuNzg2LDE1LjFaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yLjQzMywyMC42NzhhMS4xMjEsMS4xMjEsMCwwLDEsLjY0My0uMTM2YzEuMDQzLjAwNiwyLjA4Ni0uMDA2LDMuMTI5LjAwNi4wMjguNiwwLDEuMi4wMTIsMS44LTEuMTEsMC0yLjIyMSwwLTMuMzMxLDBBLjkxMS45MTEsMCwwLDEsMiwyMS40ODNWMjEuNEEuOTI1LjkyNSwwLDAsMSwyLjQzMywyMC42NzhaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yNS43ODYsMjAuNTQzYzEuMTA4LDAsMi4yMTYsMCwzLjMyNCwwYS45MTQuOTE0LDAsMCwxLC44OS44NDd2LjA5YS45MTEuOTExLDAsMCwxLS44ODguODU5Yy0xLjEwOS4wMDctMi4yMTgsMC0zLjMyNiwwQzI1Ljc4NiwyMS43NDMsMjUuNzg1LDIxLjE0MywyNS43ODYsMjAuNTQzWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNOS42NTYsMjUuNzgxaDEuOGMwLDEuMDgxLDAsMi4xNjIsMCwzLjI0M2EuOTU3Ljk1NywwLDAsMS0uMjM1LjY3Ny45MzEuOTMxLDAsMCwxLS42NTMuM2gtLjA1MmEuOTA3LjkwNywwLDAsMS0uODYtLjg4MkM5LjY1MSwyOC4wMDYsOS42NTgsMjYuODk0LDkuNjU2LDI1Ljc4MVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTE1LjEsMjUuNzgxaDEuOGMwLDEuMTEsMCwyLjIyLDAsMy4zM2EuOTE0LjkxNCwwLDAsMS0uODM2Ljg4OWgtLjExNmEuOTQuOTQsMCwwLDEtLjYxOS0uMzA2Ljk2Mi45NjIsMCwwLDEtLjIyOC0uNjczUTE1LjEsMjcuNCwxNS4xLDI1Ljc4MVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIwLjU0NywyOS4xMDZjMC0xLjEwOCwwLTIuMjE3LDAtMy4zMjVoMS44YzAsMS4wNDgsMCwyLjEsMCwzLjE0NGExLjE3OCwxLjE3OCwwLDAsMS0uMTA1LjU5LjkyLjkyLDAsMCwxLS43NTYuNDg0SDIxLjRBLjkxMS45MTEsMCwwLDEsMjAuNTQ3LDI5LjEwNlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI0LjczMiw4LjM0OUEyLjQyOSwyLjQyOSwwLDAsMCwyMy4zMSw3LjEzMSwzLjI0NSwzLjI0NSwwLDAsMCwyMi4yNTQsN2MtNC4zLjAwOC04LjYtLjAxMS0xMi45MDUuMDFBMi40MzYsMi40MzYsMCwwLDAsNy4xNTcsOC42MDYsMy42MTEsMy42MTEsMCwwLDAsNyw5LjkzNHEwLDYuMjUsMCwxMi41YTIuNjczLDIuNjczLDAsMCwwLC4yNjgsMS4yMTlBMi40MzEsMi40MzEsMCwwLDAsOC42ODgsMjQuODcsMy43NTYsMy43NTYsMCwwLDAsOS45MjcsMjVIMjIuMDdhMy43NjIsMy43NjIsMCwwLDAsMS4yNDMtLjEyN0EyLjQyOSwyLjQyOSwwLDAsMCwyNC44NzUsMjMuMywzLjgsMy44LDAsMCwwLDI1LDIyLjA3MXEwLTYuMjUsMC0xMi41QTIuNjg2LDIuNjg2LDAsMCwwLDI0LjczMiw4LjM0OVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTcuNSw4LjMwN2wuMDg0LS4ycS45NjgsMCwxLjkzNS4wMjRoLjM5NHEuMTc5LDAsLjM5NC0uMDEyLjc3Ni0uMDM2LDIuODA3LS4wMzYuNDA2LDAsLjc4OC4wMDZ0Ljc0MS4wMThhLjIzNC4yMzQsMCwwLDEsLjEwOC4xMDhsLS4wMjQuMTkxcS0uMDcyLjExOS0uMzU4LjExOWgtLjFhMTAuMywxMC4zLDAsMCwwLTEuMS4wNTQsMi4xNzksMi4xNzksMCwwLDAtMSwuMjQ1LjQzMi40MzIsMCwwLDAtLjE1NS4zNDYsNC4wNSw0LjA1LDAsMCwwLC4zOTQsMS40bDEuODE4LDQuMjE3LjYzNCwxLjRxLjkyMSwyLjIyMiwxLjgxOSw0LjUzOS4xLjI1MS4xNzkuNDU0bC44LTEuOTU5cS42Mi0xLjQ4MSwxLjI1Mi0zLjE1NGwuODIzLTIuMjQ2cS4wMjQtLjA3Mi4xMzEtLjQ3OGExNy4wMjYsMTcuMDI2LDAsMCwwLDEuMTU3LTQsLjU2MS41NjEsMCwwLDAtLjE2MS0uMzY0LDEuMTY1LDEuMTY1LDAsMCwwLS41Mi0uMyw3LjcyMyw3LjcyMywwLDAsMC0uOTMyLS4xNDNsLS44ODQtLjEwOGEuMzM3LjMzNywwLDAsMS0uMTA4LS4ybC4wMzYtLjEsMy44Ny0uMDM2SDIzLjZhMy4xLDMuMSwwLDAsMSwuODg1LjA4NGwuMDEyLjFhLjY0MS42NDEsMCwwLDEtLjA3Mi4yNTEsMi40NDksMi40NDksMCwwLDEtLjUyNi4xMTksMy42LDMuNiwwLDAsMC0xLjI0NC4yODEsMS44MTUsMS44MTUsMCwwLDAtLjUuNjg3bC0zLjEzNCw3Ljc2NXEtMS40NjYsMy41LTIuMDg2LDUuNDIzbC0uMzQ1LDEuMDM5YS41MzEuNTMxLDAsMCwxLS4yNjMuMSwxLjM4MywxLjM4MywwLDAsMS0uMy0uMDM2cS0xLjQyMi0zLjY3Ni0yLjMxOC01LjY4MUwxMC4wNTUsOS45MmEzLjI0NywzLjI0NywwLDAsMC0uNTkxLS44OSw1LjQ2Myw1LjQ2MywwLDAsMC0xLjM3OS0uNDI0LDQuMzQ3LDQuMzQ3LDAsMCwxLS40NjYtLjExOUEuMzI2LjMyNiwwLDAsMSw3LjUsOC4zMDdaXCIgc3R5bGU9XCJmaWxsOiNjNWMyZmZcIi8+YCxcblx0XCJWSERMXCI6IGA8cGF0aCBkPVwiTTIsMkgzMFYzMEgyWm0xLjY4OS4wNjdBMS42MjQsMS42MjQsMCwwLDAsMi4wNjMsMy42OTJWMjguMzE0QTEuNjI1LDEuNjI1LDAsMCwwLDMuNjg5LDI5Ljk0SDI4LjMxNmExLjYyNSwxLjYyNSwwLDAsMCwxLjYyNi0xLjYyNlYzLjY5MmExLjYyNCwxLjYyNCwwLDAsMC0xLjYyNi0xLjYyNVpNMy4wMDgsMjguMDc5YS45MTEuOTExLDAsMCwwLC45MTEuOTEySDI4LjA4M2EuOTExLjkxMSwwLDAsMCwuOTExLS45MTJWMy45MTlhLjkxLjkxLDAsMCwwLS45MTEtLjkxMUgzLjkxOWEuOTEuOTEsMCwwLDAtLjkxMS45MTFaXCIgc3R5bGU9XCJmaWxsOiMwZDliMzVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjUuNTIgNS41MDIgMTguODU4IDI2LjQ5MSAxMy4xNTQgMjYuNDkxIDYuNDkyIDUuNTAyIDEwLjUwOCA1LjUwMiAxNi4wMjkgMjIuNzk1IDIxLjUwNCA1LjUwMiAyNS41MiA1LjUwMlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwidmltXCI6IGA8ZGVmcz48Y2xpcFBhdGggaWQ9XCJhXCI+PHBvbHlnb24gcG9pbnRzPVwiMiAyIDMwIDIgMzAgMzAgMiAzMCAyIDIgMiAyXCIgc3R5bGU9XCJmaWxsOm5vbmU7Y2xpcC1ydWxlOmV2ZW5vZGRcIi8+PC9jbGlwUGF0aD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV92aW08L3RpdGxlPjxwb2x5Z29uIHBvaW50cz1cIjI5Ljk4OSAxNS44NTYgMTUuODU2IDIuMDExIDIuMDExIDE2LjEzNiAxNS44NTYgMjkuOTg5IDI5Ljk4OSAxNS44NTYgMjkuOTg5IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxnIHN0eWxlPVwiY2xpcC1wYXRoOnVybCgjYSlcIj48cG9seWdvbiBwb2ludHM9XCIyOS45ODkgMTUuODU2IDE1Ljg1NiAyLjAxMSAyLjAxMSAxNi4xMzYgMTUuODU2IDI5Ljk4OSAyOS45ODkgMTUuODU2IDI5Ljk4OSAxNS44NTZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48L2c+PHBvbHlnb24gcG9pbnRzPVwiMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyOS40MjIgMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDI4LjU3NSAxNS44NTZcIiBzdHlsZT1cImZpbGw6IzI5Njk1ZDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDI5LjQyMiAxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMjguNTc1IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjkuNDIyIDIuNTc4IDE2LjEzNiAyLjU3OCAxNi4xMzZcIiBzdHlsZT1cImZpbGw6IzMxNzM2NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyLjU3OCAxNi4xMzYgMy40MjUgMTYuMTM2IDE1Ljg1NiAyOC41NzUgMTUuODU2IDI5LjQyMiAyLjU3OCAxNi4xMzYgMi41NzggMTYuMTM2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDMuNDE4IDE1Ljg1NiAyLjU3OCAyLjU3OCAxNi4xMzYgMy40MjUgMTYuMTM2IDE1Ljg1NiAzLjQxOCAxNS44NTYgMy40MThcIiBzdHlsZT1cImZpbGw6IzYwYzJhYztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMy40MTggMTUuODU2IDIuNTc4IDIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDMuNDE4IDE1Ljg1NiAzLjQxOFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAyLjU3OCAxNS44NTYgMy40MTggMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyLjU3OCAxNS44NTYgMi41NzhcIiBzdHlsZT1cImZpbGw6IzQzYjU0YTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMi41NzggMTUuODU2IDMuNDE4IDI4LjU3NSAxNS44NTYgMjkuNDIyIDE1Ljg1NiAxNS44NTYgMi41NzggMTUuODU2IDIuNTc4XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDE1Ljg1NiAzLjQxOCAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjguNTc1XCIgc3R5bGU9XCJmaWxsOiMzYzgzNzY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDE1Ljg1NiAzLjQxOCAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjguNTc1XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguNDk4IDYuMjQ2IDE5LjM0NSA3LjEgMTMuNTAyIDEzLjAyOCAxMy41MDIgNy4xIDE0LjA2OSA3LjEgMTQuOTE2IDYuMjQ2IDE0LjkxNiAzLjk5MiAxNC4wNjkgMy4xMzggNC42NTIgMy4xMzggMy44MDUgMy45OTIgMy44MDUgNi4yNDYgNC42NTIgNy4xIDUuMzEyIDcuMSA1LjMxMiAyNi4zMTQgNi4zNDYgMjcuMTYxIDkuMjY3IDI3LjE2MSAyOS41MTYgNi4yNDYgMjkuNTE2IDMuOTkyIDI4LjY2OSAzLjEzOCAxOS40MzggMy4xMzggMTguNDk4IDMuOTkyIDE4LjQ5OCA2LjI0NiAxOC40OTggNi4yNDZcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC40OTggNi4yNDYgMTkuMzQ1IDcuMSAxMy41MDIgMTMuMDI4IDEzLjUwMiA3LjEgMTQuMDY5IDcuMSAxNC45MTYgNi4yNDYgMTQuOTE2IDMuOTkyIDE0LjA2OSAzLjEzOCA0LjY1MiAzLjEzOCAzLjgwNSAzLjk5MiAzLjgwNSA2LjI0NiA0LjY1MiA3LjEgNS4zMTIgNy4xIDUuMzEyIDI2LjMxNCA2LjM0NiAyNy4xNjEgOS4yNjcgMjcuMTYxIDI5LjUxNiA2LjI0NiAyOS41MTYgMy45OTIgMjguNjY5IDMuMTM4IDE5LjQzOCAzLjEzOCAxOC40OTggMy45OTIgMTguNDk4IDYuMjQ2IDE4LjQ5OCA2LjI0NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjQuOTMyIDYuNTMzIDQuMzY1IDUuOTY2IDQuMzY1IDQuMjcyIDQuOTMyIDMuNzA1IDEzLjc4OSAzLjY5OCAxNC4zNDkgNC4yNzIgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI3MiA0LjkzMiA1LjY3OSA0LjkzMiA2LjUzMyA0LjkzMiA2LjUzM1wiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjQuOTMyIDYuNTMzIDQuMzY1IDUuOTY2IDQuMzY1IDQuMjcyIDQuOTMyIDMuNzA1IDEzLjc4OSAzLjY5OCAxNC4zNDkgNC4yNzIgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI3MiA0LjkzMiA1LjY3OSA0LjkzMiA2LjUzMyA0LjkzMiA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuNjI2IDI2LjU5NCA1Ljk2NiAyNi4wMjcgNS45NjYgNi41MjYgNi42MjYgNS45NjYgNi42MjYgMjYuNTk0IDYuNjI2IDI2LjU5NFwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuNjI2IDI2LjU5NCA1Ljk2NiAyNi4wMjcgNS45NjYgNi41MjYgNi42MjYgNS45NjYgNi42MjYgMjYuNTk0IDYuNjI2IDI2LjU5NFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjc1OSA2LjUzMyAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNzAzIDEyLjk0MiAxNC40NDIgMjAuNzU5IDYuNTMzIDIwLjc1OSA2LjUzM1wiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjc1OSA2LjUzMyAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNzAzIDEyLjk0MiAxNC40NDIgMjAuNzU5IDYuNTMzIDIwLjc1OSA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuODIgNS42ODYgNi42MjYgNS45NjYgNS45NjYgNi41MzMgNC45MzIgNi41MzMgNC45MzIgNS4zOTkgNi44MiA1LjY4NiA2LjgyIDUuNjg2XCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi44MiA1LjY4NiA2LjYyNiA1Ljk2NiA1Ljk2NiA2LjUzMyA0LjkzMiA2LjUzMyA0LjkzMiA1LjM5OSA2LjgyIDUuNjg2IDYuODIgNS42ODZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxMi45NDIgNi41MzMgMTIuOTQyIDE0LjQ0MiAxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc4IDEzLjUwMiA0LjI3MiAxNC4zNDkgNC4yNzIgMTQuMzQ5IDUuOTY2IDEzLjc4OSA2LjUzMyAxMi45NDIgNi41MzMgMTIuOTQyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTIuOTQyIDYuNTMzIDEyLjk0MiAxNC40NDIgMTEuOTAyIDE2LjY5NiAxMS45MDIgNS45NTggMTMuNTAyIDUuOTU4IDEzLjc4OSA1LjY3OCAxMy41MDIgNC4yNzIgMTQuMzQ5IDQuMjcyIDE0LjM0OSA1Ljk2NiAxMy43ODkgNi41MzMgMTIuOTQyIDYuNTMzIDEyLjk0MiA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjYyNSA2LjUzMyAxOS4wNjUgNS45NjYgMTkuMDY1IDQuMjcyIDE5LjcxOCAzLjcwNSAyOC4yOTUgMy43MDUgMjguOTU2IDQuMjcyIDI4LjAwOCA1LjExOSAxOS42MjUgNS42NzkgMTkuNjI1IDYuNTMzIDE5LjYyNSA2LjUzM1wiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjYyNSA2LjUzMyAxOS4wNjUgNS45NjYgMTkuMDY1IDQuMjcyIDE5LjcxOCAzLjcwNSAyOC4yOTUgMy43MDUgMjguOTU2IDQuMjcyIDI4LjAwOCA1LjExOSAxOS42MjUgNS42NzkgMTkuNjI1IDYuNTMzIDE5LjYyNSA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4Ljk1NiA1Ljk2NiA5LjA3NCAyNi41OTQgNi42MjYgMjYuNTk0IDYuNjI2IDI1Ljc0NyA4LjQyIDI1Ljc0NyAyOC4yOTUgNS4zOTkgMjguMDA4IDQuMjcyIDI4Ljk1NiA0LjI3MiAyOC45NTYgNS45NjYgMjguOTU2IDUuOTY2XCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguOTU2IDUuOTY2IDkuMDc0IDI2LjU5NCA2LjYyNiAyNi41OTQgNi42MjYgMjUuNzQ3IDguNDIgMjUuNzQ3IDI4LjI5NSA1LjM5OSAyOC4wMDggNC4yNzIgMjguOTU2IDQuMjcyIDI4Ljk1NiA1Ljk2NiAyOC45NTYgNS45NjZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIyMS41MTIgNS42ODYgMjEuMzE5IDUuOTY2IDIwLjc1OSA2LjUzMyAxOS42MjUgNi41MzMgMTkuNjI1IDUuMzk5IDIxLjUxMiA1LjY4NiAyMS41MTIgNS42ODZcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyMS41MTIgNS42ODYgMjEuMzE5IDUuOTY2IDIwLjc1OSA2LjUzMyAxOS42MjUgNi41MzMgMTkuNjI1IDUuMzk5IDIxLjUxMiA1LjY4NiAyMS41MTIgNS42ODZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc5IDEzLjc4OSA0LjU0NCAxMy41MDIgNC4yNjUgNS4yMTIgNC4yNjUgNC45MzIgNC41NDQgNC45MzIgNS42NzkgNS4yMTIgNS45NTggNi42MjYgNS45NTggNi42MjYgMjUuNzQ3IDYuOTkyIDI2LjAyNyA4LjYwNyAyNi4wMjcgMjguMzg5IDUuMzk5IDI4LjM4OSA0LjU4OCAyOC4xMDIgNC4yNjUgMTkuOTEyIDQuMjY1IDE5LjYyNSA0LjU0NCAxOS42MjUgNS42ODYgMTkuOTEyIDUuOTY2IDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi42OTYgMTEuOTAyIDE2LjY5NlwiIHN0eWxlPVwiZmlsbDojZDBkMmQzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzkgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI2NSA1LjIxMiA0LjI2NSA0LjkzMiA0LjU0NCA0LjkzMiA1LjY3OSA1LjIxMiA1Ljk1OCA2LjYyNiA1Ljk1OCA2LjYyNiAyNS43NDcgNi45OTIgMjYuMDI3IDguNjA3IDI2LjAyNyAyOC4zODkgNS4zOTkgMjguMzg5IDQuNTg4IDI4LjEwMiA0LjI2NSAxOS45MTIgNC4yNjUgMTkuNjI1IDQuNTQ0IDE5LjYyNSA1LjY4NiAxOS45MTIgNS45NjYgMjEuMzI2IDUuOTY2IDIxLjMyNiA3LjEgMTEuOTAyIDE2LjY5NiAxMS45MDIgMTYuNjk2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuMDQxIDE2LjcxMSAxNy43MDEgMTYuMTQ0IDE5LjM5NSAxNi4xNDQgMTkuODY5IDE2LjcxMSAxOS4zMDIgMTguNDA1IDE4LjY0OSAxOC45NzIgMTYuOTU1IDE4Ljk3MiAxNi40NzQgMTguNDA1IDE3LjA0MSAxNi43MTEgMTcuMDQxIDE2LjcxMVwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjA0MSAxNi43MTEgMTcuNzAxIDE2LjE0NCAxOS4zOTUgMTYuMTQ0IDE5Ljg2OSAxNi43MTEgMTkuMzAyIDE4LjQwNSAxOC42NDkgMTguOTcyIDE2Ljk1NSAxOC45NzIgMTYuNDc0IDE4LjQwNSAxNy4wNDEgMTYuNzExIDE3LjA0MSAxNi43MTFcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy42MDggMjYuMDM0IDE5LjMwOSAyMC45NTMgMTguNzQyIDIwLjk1MyAxOS4zMDkgMTkuMjUxIDIxLjg0MyAxOS4yNTEgMjIuNDEgMTkuODE5IDIyLjc5IDE5LjgxOSAyMy4zNSAxOS4yNTEgMjUuMjM4IDE5LjI1MSAyNS44MDUgMTkuODE5IDI2LjE3OCAxOS44MTkgMjYuNzQ1IDE5LjI1MSAyOC44MTIgMTkuMjUxIDI5LjU2NiAyMC4zODYgMjguMzMxIDI0LjQwNSAyOC44OTEgMjQuNDA1IDI4LjM0NiAyNi4wMzQgMjQuOTUxIDI2LjAzNCAyNi4yNzggMjIuMDc5IDI1LjQzMSAyMi4wNzkgMjQuNjQ5IDI0LjM5MSAyNS4yMDkgMjQuMzkxIDI0LjY3OCAyNi4wMzQgMjEuMjgzIDI2LjAzNCAyMi42MDMgMjIuMDc5IDIxLjc1NiAyMi4wNzkgMjAuOTY3IDI0LjQwNSAyMS41MzQgMjQuNDA1IDIxLjAwMyAyNi4wMzQgMTcuNjA4IDI2LjAzNCAxNy42MDggMjYuMDM0XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuNjA4IDI2LjAzNCAxOS4zMDkgMjAuOTUzIDE4Ljc0MiAyMC45NTMgMTkuMzA5IDE5LjI1MSAyMS44NDMgMTkuMjUxIDIyLjQxIDE5LjgxOSAyMi43OSAxOS44MTkgMjMuMzUgMTkuMjUxIDI1LjIzOCAxOS4yNTEgMjUuODA1IDE5LjgxOSAyNi4xNzggMTkuODE5IDI2Ljc0NSAxOS4yNTEgMjguODEyIDE5LjI1MSAyOS41NjYgMjAuMzg2IDI4LjMzMSAyNC40MDUgMjguODkxIDI0LjQwNSAyOC4zNDYgMjYuMDM0IDI0Ljk1MSAyNi4wMzQgMjYuMjc4IDIyLjA3OSAyNS40MzEgMjIuMDc5IDI0LjY0OSAyNC4zOTEgMjUuMjA5IDI0LjM5MSAyNC42NzggMjYuMDM0IDIxLjI4MyAyNi4wMzQgMjIuNjAzIDIyLjA3OSAyMS43NTYgMjIuMDc5IDIwLjk2NyAyNC40MDUgMjEuNTM0IDI0LjQwNSAyMS4wMDMgMjYuMDM0IDE3LjYwOCAyNi4wMzQgMTcuNjA4IDI2LjAzNFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU1NCAxOS44MTkgMjguOTkyIDIwLjQ0MyAyNy41OTkgMjQuOTA3IDI4LjE1OSAyNC45MDcgMjcuOTcyIDI1LjQ2NyAyNS43MTEgMjUuNDY3IDI3LjAzMiAyMS41MTIgMjUuMDUxIDIxLjUxMiAyMy45MjQgMjQuOTA3IDI0LjQ4NCAyNC45MDcgMjQuMjk3IDI1LjQ2NyAyMi4wMzYgMjUuNDY3IDIzLjM1NyAyMS41MTIgMjEuMzc2IDIxLjUxMiAyMC4yNDkgMjQuOTA3IDIwLjgxNiAyNC45MDcgMjAuNjIyIDI1LjQ2NyAxOC4zNjEgMjUuNDY3IDIwLjA2MyAyMC4zODYgMTkuNDk1IDIwLjM4NiAxOS42ODIgMTkuODE5IDIxLjc1NiAxOS44MTkgMjIuMzIzIDIwLjM4NiAyMi44ODMgMjAuMzg2IDIzLjQ1IDE5LjgxOSAyNS4xNDQgMTkuODE5IDI1LjcxMSAyMC4zODYgMjYuMjc4IDIwLjM4NiAyNi44NDUgMTkuODE5IDI4LjU1NCAxOS44MTkgMjguNTU0IDE5LjgxOVwiIHN0eWxlPVwiZmlsbDojZDBkMmQzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU1NCAxOS44MTkgMjguOTkyIDIwLjQ0MyAyNy41OTkgMjQuOTA3IDI4LjE1OSAyNC45MDcgMjcuOTcyIDI1LjQ2NyAyNS43MTEgMjUuNDY3IDI3LjAzMiAyMS41MTIgMjUuMDUxIDIxLjUxMiAyMy45MjQgMjQuOTA3IDI0LjQ4NCAyNC45MDcgMjQuMjk3IDI1LjQ2NyAyMi4wMzYgMjUuNDY3IDIzLjM1NyAyMS41MTIgMjEuMzc2IDIxLjUxMiAyMC4yNDkgMjQuOTA3IDIwLjgxNiAyNC45MDcgMjAuNjIyIDI1LjQ2NyAxOC4zNjEgMjUuNDY3IDIwLjA2MyAyMC4zODYgMTkuNDk1IDIwLjM4NiAxOS42ODIgMTkuODE5IDIxLjc1NiAxOS44MTkgMjIuMzIzIDIwLjM4NiAyMi44ODMgMjAuMzg2IDIzLjQ1IDE5LjgxOSAyNS4xNDQgMTkuODE5IDI1LjcxMSAyMC4zODYgMjYuMjc4IDIwLjM4NiAyNi44NDUgMTkuODE5IDI4LjU1NCAxOS44MTkgMjguNTU0IDE5LjgxOVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwYXRoIGQ9XCJNMTkuMDIyLDE5LjI1MSwxNy4yOTIsMjQuNGguNTg5bC0uNTYsMS42MzdIMTMuOTMzbDEuNjk0LTUuMDgySDE1LjA2bDMuOTYyLTEuN1ptLTMuOTYyLDEuNy41NjctMS43aDMuNGwtMy45NjIsMS43WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTkuMDIyLDE5LjI1MSwxNy4yOTIsMjQuNGguNTg5bC0uNTYsMS42MzdIMTMuOTMzbDEuNjk0LTUuMDgySDE1LjA2bDMuOTYyLTEuN1ptLTMuOTYyLDEuNy41NjctMS43aDMuNGwtMy45NjIsMS43WlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2Ljk0NyAyNS40NjcgMTcuMTM0IDI0LjkwNyAxNi41NjcgMjQuOTA3IDE4LjI2OCAxOS44MTkgMTUuOTE0IDE5LjgxOSAxNS43MiAyMC4zODYgMTYuMzggMjAuMzg2IDE0LjY4NiAyNS40NjcgMTYuOTQ3IDI1LjQ2NyAxNi45NDcgMjUuNDY3XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuOTQ3IDI1LjQ2NyAxNy4xMzQgMjQuOTA3IDE2LjU2NyAyNC45MDcgMTguMjY4IDE5LjgxOSAxNS45MTQgMTkuODE5IDE1LjcyIDIwLjM4NiAxNi4zOCAyMC4zODYgMTQuNjg2IDI1LjQ2NyAxNi45NDcgMjUuNDY3IDE2Ljk0NyAyNS40NjdcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC44MjggMTguMTI1IDE5LjIwOCAxNi45OTEgMTkuMDIyIDE2LjcxMSAxNy44ODggMTYuNzExIDE3LjUxNCAxNi45OTEgMTcuMTM0IDE4LjEyNSAxNy4zMjggMTguNDA1IDE4LjQ2MiAxOC40MDUgMTguODI4IDE4LjEyNSAxOC44MjggMTguMTI1XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguODI4IDE4LjEyNSAxOS4yMDggMTYuOTkxIDE5LjAyMiAxNi43MTEgMTcuODg4IDE2LjcxMSAxNy41MTQgMTYuOTkxIDE3LjEzNCAxOC4xMjUgMTcuMzI4IDE4LjQwNSAxOC40NjIgMTguNDA1IDE4LjgyOCAxOC4xMjUgMTguODI4IDE4LjEyNVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPmAsXG5cdFwiVmlzdWFsIEJhc2ljXCI6IGA8cGF0aCBkPVwiTTYuNjcsNy44MzYsOSwxOC45MTUsMTEuMzM2LDcuODM2SDE2TDExLjMzNiwyNC4xNjRINi42NzJMMiw3LjgzNlpcIiBzdHlsZT1cImZpbGw6IzAwNTE5YVwiLz48cGF0aCBkPVwiTTE4LjMzMSw3LjgzNmg3LjZhNC4wOCw0LjA4LDAsMCwxLDIuOSwxLjc0OSwzLjc4LDMuNzgsMCwwLDEsLjU3MSwyLjA0LDMuOTg1LDMuOTg1LDAsMCwxLS41NzEsMi4wMzQsNC4xMDgsNC4xMDgsMCwwLDEtMi4zNDEsMS43NjMsNC4xLDQuMSwwLDAsMSwyLjkyOSwxLjc1NiwzLjgsMy44LDAsMCwxLC41OCwyLjEsNC42NjMsNC42NjMsMCwwLDEtLjU3OSwyLjU0Niw1LjA0Nyw1LjA0NywwLDAsMS0zLjUsMi4zMzhIMTguMzMxWk0yMywxNC4yNTJoMS4xNjZhMS43NTQsMS43NTQsMCwwLDAsMC0zLjVIMjNabTAsN0gyNC4zOWEyLjA0NywyLjA0NywwLDAsMCwwLTQuMDg5SDIzWlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPmAsXG5cdFwiV2ViQXNzZW1ibHlcIjogYDxwYXRoIGQ9XCJNMTkuMTUzLDIuMzVWMi41YTMuMiwzLjIsMCwxLDEtNi40LDBoMFYyLjM1SDJWMzAuMjY5SDI5LjkxOVYyLjM1WlwiIHN0eWxlPVwiZmlsbDojNjU0ZmYwXCIvPjxwYXRoIGQ9XCJNOC40ODUsMTcuNGgxLjg1TDExLjYsMjQuMTIzaC4wMjNMMTMuMTQsMTcuNGgxLjczMWwxLjM3MSw2LjgxaC4wMjdsMS40NC02LjgxaDEuODE1bC0yLjM1OCw5Ljg4NUgxNS4zMjlsLTEuMzYtNi43MjhoLS4wMzZsLTEuNDU2LDYuNzI4aC0xLjg3Wm0xMy4xMjQsMGgyLjkxN2wyLjksOS44ODVIMjUuNTE1bC0uNjMtMi4ySDIxLjU2MmwtLjQ4NiwyLjJIMTkuMjE3Wm0xLjExLDIuNDM3LS44MDcsMy42MjdoMi41MTJMMjMuNSwxOS44MzJaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJXb2xmcmFtIGxhbmd1YWdlXCI6IGA8cGF0aCBkPVwiTTMwLDIwLjU1LDI1Ljk0LDE2LDMwLDExLjQ1bC01Ljk0OC0xLjI5NC41OTUtNi4wNjdMMTkuMDcxLDYuNTQzLDE1Ljk5MywxLjI3OSwxMi45MjksNi41NDMsNy4zNTMsNC4wODlsLjU5NSw2LjA2N0wyLDExLjQ1LDYuMDU5LDE2LDIsMjAuNTVsNS45NDgsMS4yOTQtLjU5NSw2LjA2Nyw1LjU3Ni0yLjQ1NCwzLjA3OCw1LjI2NCwzLjA2My01LjI2NCw1LjU5MSwyLjQ1NC0uNjEtNi4wNjdaXCIgc3R5bGU9XCJmaWxsOiNkMTBcIi8+PHBhdGggZD1cIk0xOS4zNTMsMTEuNDVhNi45NjgsNi45NjgsMCwwLDEtMy40Mi44NjIsNS40NDYsNS40NDYsMCwwLDEtMy4yMTItLjg2MkE3LjEsNy4xLDAsMCwxLDEyLjUsMTQuOGE2LjIyNSw2LjIyNSwwLDAsMS0xLjg3NCwyLjkxNCw3LjQ1NCw3LjQ1NCwwLDAsMSwzLjEzOCwxLjE5LDkuNjU5LDkuNjU5LDAsMCwxLDIuMjE2LDIuNzIxLDguMTk0LDguMTk0LDAsMCwxLDIuMTQxLTIuNjkxLDcuNjA1LDcuNjA1LDAsMCwxLDMuMjQyLTEuMiwxMi41NjIsMTIuNTYyLDAsMCwxLTEuOTMzLTIuOTQ0QTYuNzE4LDYuNzE4LDAsMCwxLDE5LjM1MywxMS40NVptLTEuOSw2LjU0M2E1LjIzMyw1LjIzMywwLDAsMC0xLjQ1NywxLjYzNiw2LjIzNiw2LjIzNiwwLDAsMC0xLjUtMS42MjEsNS4xOTEsNS4xOTEsMCwwLDAtMS45NDgtLjg0OCw2LjgzOSw2LjgzOSwwLDAsMCwxLjExNS0yLjAwNyw2LjE4LDYuMTgsMCwwLDAsLjIyMy0yLjA4Miw2LjMxNyw2LjMxNywwLDAsMCwyLjA4Mi40NDYsNi41NTIsNi41NTIsMCwwLDAsMi4xNzEtLjQ2MSw0LjUyMSw0LjUyMSwwLDAsMCwuMDc0LDIuMTU2LDYuNzEsNi43MSwwLDAsMCwxLjI0OSwxLjkzM0E3LjAzMSw3LjAzMSwwLDAsMCwxNy40NSwxNy45OTNabTQuMjM4LTQuMDE1Yy0uMzU3LTEuMTc1LjY1NC02LjcwNi42NTQtNi43MDZTMTguNTUsOS44NDQsMTUuODg4LDkuODQ0cy02LjIzLTIuNTcyLTYuMjMtMi41NzIsMS4xNzUsNC4wMTUuNDYxLDYuNTg3LTQuMzg3LDUuNDcyLTQuMzg3LDUuNDcyLDQuNzg4LjI4Myw2LjYsMS41LDMuNjU4LDUuOTQ4LDMuNjU4LDUuOTQ4LDIuNDU0LTUuMiwzLjQ4LTUuOTQ4LDYuOC0xLjUsNi44LTEuNS00LjIyMy00LjE3OC00LjU4LTUuMzUzWm0tMi44NCw1Ljk2M2E5LjQ0NCw5LjQ0NCwwLDAsMC0yLjg0LDQuMTc4cy0xLjQxMy0zLjE1Mi0yLjk3NC00LjIyM1M4LjMsMTguNTQzLDguMywxOC41NDNzMi40NTQtMi4xNzEsMy4wNDgtNC4xYTExLjkyMywxMS45MjMsMCwwLDAtLjEtNC45NTIsMTEuMywxMS4zLDAsMCwwLDQuNjY5LDEuNjIxYzIuMDM3LDAsNC44NDgtMS42MjEsNC44NDgtMS42MjFzLS44MTgsMy4wMzMtLjE2NCw0LjkyMiwzLjEwOCw0LjEzNCwzLjEwOCw0LjEzNGExMC41NTcsMTAuNTU3LDAsMCwwLTQuODYyLDEuNFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlhNTFwiOiBgPHBhdGggZD1cIk0yMC40MiwyMS4xNTdsMi4yMTEsMi4yMTFMMzAsMTYsMjIuNjMxLDguNjMxLDIwLjQyLDEwLjg0MywyNS41OCwxNlpcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cGF0aCBkPVwiTTExLjU4LDEwLjg0Myw5LjM2OSw4LjYzMSwyLDE2bDcuMzY5LDcuMzY5LDIuMjExLTIuMjExTDYuNDIsMTZaXCIgc3R5bGU9XCJmaWxsOiNmMTY2MmFcIi8+PHBhdGggZD1cIk0xNy40MTEsNy42NzdsMS42LjQzNy00LjQyLDE2LjIwOS0xLjYtLjQzNyw0LjQyLTE2LjIwOVpcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz5gLFxuXHRcIlhRdWVyeVwiOiBgPHBhdGggZD1cIk0yMC40MiwyMS4xNTdsMi4yMTEsMi4yMTFMMzAsMTYsMjIuNjMxLDguNjMxLDIwLjQyLDEwLjg0MywyNS41OCwxNlpNMTEuNTgsMTAuODQzLDkuMzY5LDguNjMxLDIsMTZsNy4zNjksNy4zNjksMi4yMTEtMi4yMTFMNi40MiwxNlptNS44MzEtMy4xNjYsMS42LjQzNy00LjQyLDE2LjIwOS0xLjYtLjQzN1pcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cGF0aCBkPVwiTTIwLjMzMiwxOC40NjJhMy4zNTQsMy4zNTQsMCwwLDEsLjk3NS0xLjQyMyw0LjAxNCw0LjAxNCwwLDAsMSwxLjYxNy0uOEE5LjExOCw5LjExOCwwLDAsMSwyNS4xMzgsMTZhNS40NzIsNS40NzIsMCwwLDEsMy42ODEsMS4wMzlBMy41LDMuNSwwLDAsMSwzMCwxOS44MDhhNC40Nyw0LjQ3LDAsMCwxLS4yNCwxLjQ5MSwzLjEyNCwzLjEyNCwwLDAsMS0uODM4LDEuMjM5bC0xLjY3NSwxLjZhMS41MTIsMS41MTIsMCwwLDAtLjQyNC43ODksNS4zMDcsNS4zMDcsMCwwLDAtLjEsMS4xSDIzdi0uNTRhNi4zMiw2LjMyLDAsMCwxLC4yMDctMS43NzgsMi44ODYsMi44ODYsMCwwLDEsLjc4LTEuMjRsMS4zNTItMS4yODlhMS44NCwxLjg0LDAsMCwwLC41NjMtLjg5NCwzLjY4MiwzLjY4MiwwLDAsMCwuMS0uOCwxLjUsMS41LDAsMCwwLS4yNTItLjkuOS45LDAsMCwwLS43NzktLjM0NiwxLjI1NSwxLjI1NSwwLDAsMC0uNDgzLjA4Ni43MjQuNzI0LDAsMCwwLS4zNDQuMzM3LDIuMzQ3LDIuMzQ3LDAsMCwwLS4yMTcuNzIxLDcuNjE0LDcuNjE0LDAsMCwwLS4wODEsMS4yNEgyMEE2LjE1NSw2LjE1NSwwLDAsMSwyMC4zMzIsMTguNDYyWm02LjQ1Nyw4LjVWMzBIMjIuOTM2VjI2Ljk2MlpcIiBzdHlsZT1cImZpbGw6I2ZjYmEwMFwiLz5gLFxuXHRcIllBTUxcIjogYDxwYXRoIGQ9XCJNMiwxMi4yMThjLjc1NSwwLDEuNTEtLjAwOCwyLjI2NCwwbC4wNTMuMDM4UTUuNywxMy42MzgsNy4wNzgsMTUuMDE0Yy44OTEtLjkwNiwxLjgtMS43OTQsMi43LTIuNy4wNTMtLjA1Mi4xMS0uMTEzLjE5Mi0uMS42MDgsMCwxLjIxNSwwLDEuODIzLDBhMS40LDEuNCwwLDAsMSwuMzUzLjAxOWMtLjcuNjctMS4zNzcsMS4zNjktMi4wNjksMi4wNUw1LjU0NSwxOC44Yy0uMzMxLjMyNC0uNjQ4LjY2My0uOTg5Ljk3NS0uNzU0LjAyMi0xLjUxMS4wMDctMi4yNjYuMDA3LDEuMjIzLTEuMjA5LDIuNDMxLTIuNDMzLDMuNjU4LTMuNjM3QzQuNjI3LDE0Ljg0MSwzLjMxOCwxMy41MjUsMiwxMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmU4ODVcIi8+PHBhdGggZD1cIk0xMi43LDEyLjIxOGMuNjEzLDAsMS4yMjYsMCwxLjgzOSwwcTAsMy43ODMsMCw3LjU2NmMtLjYxMSwwLTEuMjIyLjAxMi0xLjgzMi0uMDA4LDAtMS42NjQsMC0zLjMyOSwwLTQuOTk0LTEuNiwxLjYwNy0zLjIwOSwzLjItNC44MTEsNC44LS4wODkuMDgtLjE2Ni4yMTctLjMwNS4xOTQtLjgyNC0uMDA2LTEuNjQ5LDAtMi40NzQsMFE4LjkxNiwxNiwxMi43LDEyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz48cGF0aCBkPVwiTTE0Ljk1OCwxMi4yMmMuNDctLjAwOS45MzksMCwxLjQwOSwwLC44MzYuODUzLDEuNjksMS42ODksMi41MzYsMi41MzJxMS4yNjgtMS4yNjcsMi41MzktMi41MzIuNywwLDEuNCwwLS4wMDgsMy43ODQsMCw3LjU2N2MtLjQ3MSwwLS45NDMuMDA2LTEuNDE0LDBxLjAwOC0yLjM4NywwLTQuNzczYy0uODQ0Ljg0My0xLjY3NiwxLjctMi41MjYsMi41MzYtLjg1Ni0uODM1LTEuNjg3LTEuNjk1LTIuNTMyLTIuNTQxLDAsMS41OTQtLjAwNiwzLjE4OC4wMDYsNC43ODEtLjQ3MiwwLS45NDMuMDA1LTEuNDE1LDBRMTQuOTU4LDE2LDE0Ljk1OCwxMi4yMlpcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz48cGF0aCBkPVwiTTIzLjI1OSwxMi4yMTdjLjQ3MiwwLC45NDQtLjAwNywxLjQxNiwwcS0uMDA3LDMuMDgzLDAsNi4xNjZjMS4yNiwwLDIuNTIxLDAsMy43ODIsMCwuMDYzLjAwNi4xNDQtLjAxMi4xOTEuMDQ1LjQ0OC40NTQuOTA3LjksMS4zNTMsMS4zNTRxLTMuMzcxLjAwNy02Ljc0MSwwUTIzLjI2NywxNiwyMy4yNTksMTIuMjE3WlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPmAsXG5cdFwiWUFOR1wiOiBgPHBhdGggZD1cIk04Ljg3NywyMy4xNTljMC01LjUzNSwzLjk5Mi03LjE2OCw3Ljg5NC03LjE2OCwzLjM1NywwLDUuOTg4LTMuODExLDUuOTg4LTYuNjI0LDAtMy42MjEtMi40ODctNS44MzEtNC44ODItNy4xMkExMy44ODEsMTMuODgxLDAsMSwwLDE0LjUsMjkuOEMxMC40OTEsMjguMjQ4LDguODc3LDI1LjMyNCw4Ljg3NywyMy4xNTlaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNC40ODIsMjkuOTE3QTE0LDE0LDAsMCwxLDE2LDJhMTQuMTU0LDE0LjE1NCwwLDAsMSwxLjg5My4xMzFsLjA0LjAxM2MyLjI1NSwxLjIxMyw0Ljk0NCwzLjQ1Miw0Ljk0NCw3LjIyMywwLDIuNzE1LTIuNTY0LDYuNzQxLTYuMTA2LDYuNzQxLTIuOSwwLTcuNzc2LjkxNi03Ljc3Niw3LjA1LDAsMi4wMjIsMS40NTEsNC45NDYsNS41NDIsNi41MzFaTTE2LDIuMjM2QTEzLjc2NSwxMy43NjUsMCwwLDAsMTMuNjM3LDI5LjU2Yy0zLjU4MS0xLjY4NC00Ljg3Ny00LjQ0Ny00Ljg3Ny02LjQsMC02LjU3Niw1LjYtNy4yODYsOC4wMTItNy4yODYsMy40MDYsMCw1Ljg3LTMuODg2LDUuODctNi41MDYsMC0zLjY0NS0yLjYwNi01LjgyLTQuOC03LjAwNkExMy45MjgsMTMuOTI4LDAsMCwwLDE2LDIuMjM2WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjkuODgyLDE2YTEzLjg4MiwxMy44ODIsMCwwLDAtMTItMTMuNzUyYzIuNCwxLjI4OSw0Ljg4MiwzLjUsNC44ODIsNy4xMiwwLDIuODEzLTIuNjMxLDYuNjI0LTUuOTg4LDYuNjI0LTMuOSwwLTcuODk0LDEuNjMzLTcuODk0LDcuMTY4LDAsMi4xNjYsMS42MTMsNS4wODksNS42MTgsNi42NDFBMTMuODc1LDEzLjg3NSwwLDAsMCwyOS44ODIsMTZaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xNiwzMGExNC4yLDE0LjIsMCwwLDEtMS41MTgtLjA4M2wtLjAzLS4wMDdjLTQuMi0xLjYyOC01LjY5My00LjY1NC01LjY5My02Ljc1LDAtNi41NzYsNS42LTcuMjg2LDguMDEyLTcuMjg2LDMuNDA2LDAsNS44Ny0zLjg4Niw1Ljg3LTYuNTA2LDAtMy42NTUtMi42MjEtNS44MzMtNC44Mi03LjAxNmwuMDcyLS4yMjFBMTQsMTQsMCwwLDEsMTYsMzBabS0xLjQ3Ny0uMzE2QTEzLjc1NiwxMy43NTYsMCwwLDAsMjkuNzY0LDE2LDEzLjgwNywxMy44MDcsMCwwLDAsMTguNSwyLjQ2NmMyLjExNSwxLjI3Miw0LjM3NywzLjQ0MSw0LjM3Nyw2LjksMCwyLjcxNS0yLjU2NCw2Ljc0MS02LjEwNiw2Ljc0MS0yLjksMC03Ljc3Ni45MTYtNy43NzYsNy4wNUM5LDI1LjE3OCwxMC40NDMsMjguMSwxNC41MjMsMjkuNjg0WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxjaXJjbGUgY3g9XCIxNS45NDNcIiBjeT1cIjIyLjc4N1wiIHI9XCIxLjUwNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIxNi4wMDdcIiBjeT1cIjkuMTQyXCIgcj1cIjEuNTA2XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+YCxcblx0XCJaaWdcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuNzMzIDE5LjczMSA1LjczMyAxMi4yNjQgOC41MzMgMTIuMjY0IDguNTMzIDguNTMxIDIgOC41MzEgMiAyMy40NjQgNS41NDcgMjMuNDY0IDguOTA3IDE5LjczMSA1LjczMyAxOS43MzFcIiBzdHlsZT1cImZpbGw6I2Y3YTQxZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNi40NTMgOC41MzEgMjMuMDkzIDEyLjI2NCAyNi4yNjcgMTIuMjY0IDI2LjI2NyAxOS43MzEgMjMuNDY3IDE5LjczMSAyMy40NjcgMjMuNDY0IDMwIDIzLjQ2NCAzMCA4LjUzMSAyNi40NTMgOC41MzFcIiBzdHlsZT1cImZpbGw6I2Y3YTQxZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNi44NzUgNi43MDcgMjAuNTEzIDguNTMxIDkuNDY3IDguNTMxIDkuNDY3IDEyLjI2NCAxNi44NDcgMTIuMjY0IDUuMTE1IDI1LjI5MyAxMS40OTcgMjMuNDY0IDIyLjUzMyAyMy40NjQgMjIuNTMzIDE5LjczMSAxNS4xNDggMTkuNzMxIDI2Ljg3NSA2LjcwN1wiIHN0eWxlPVwiZmlsbDojZjdhNDFkXCIvPmBcbn1cbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9DT0xPVVJTIDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XG5cdFwiLmdpdGlnbm9yZVwiOiAnI2RkNGMzNScsXG5cdFwiLmhnaWdub3JlXCI6ICcjYmZiZmJmJyxcblx0XCIubnBtaWdub3JlXCI6ICcjY2IzODM3Jyxcblx0XCIucHJvcGVydGllc1wiOiAnIzk5YjhjNCcsXG5cdFwiNjUwMiBBc3NlbWJseVwiOiAnIzAwMDBiZicsXG5cdFwiQWN0aW9uU2NyaXB0XCI6ICcjYzQxNzE4Jyxcblx0XCJBZGFcIjogJyMwZjIzYzMnLFxuXHRcIkFMXCI6ICcjMmVhOThlJyxcblx0XCJBTlRMUjRcIjogJyNlNDRhMzInLFxuXHRcIkFwYWNoZSBDb25maWd1cmF0aW9uXCI6ICcjYzkyMDM3Jyxcblx0XCJBcGV4XCI6ICcjMGY5YmQ3Jyxcblx0XCJBUExcIjogJyNkMmQyZDInLFxuXHRcIkFwcGxlU2NyaXB0XCI6ICcjYThjMmFiJyxcblx0XCJBcmR1aW5vXCI6ICcjMmQ5MDk0Jyxcblx0XCJBUk0gQXNzZW1ibHlcIjogJyMwMDAwYmYnLFxuXHRcIkFzY2lpRG9jXCI6ICcjZTQwMDQ2Jyxcblx0XCJBU1AuTkVUIChDIylcIjogJyMzM2E5ZGMnLFxuXHRcIkF1dG9Ib3RrZXlcIjogJyNkOGQ4ZDgnLFxuXHRcIkF1dG9JdFwiOiAnIzVkODNhYycsXG5cdFwiQXZybyBJRExcIjogJyMwMDQwZmYnLFxuXHRcIkFXS1wiOiAnI2QyZDJkMicsXG5cdFwiQmF0Y2hcIjogJyNkOWI0MDAnLFxuXHRcIkMjXCI6ICcjMzY4ODMyJyxcblx0XCJDXCI6ICcjMDA1ZjkxJyxcblx0XCJDKytcIjogJyM5ODRjOTMnLFxuXHRcIkNsb2p1cmVcIjogJyM5MWRjNDcnLFxuXHRcIkNNYWtlXCI6ICcjMDFhMzAwJyxcblx0XCJDT0JPTFwiOiAnIzAwNWNhNScsXG5cdFwiQ29mZmVlU2NyaXB0XCI6ICcjNmY0ZTM3Jyxcblx0XCJDcnlzdGFsXCI6ICcjYzhjOGM4Jyxcblx0XCJDU1NcIjogJyMxNTcyYjYnLFxuXHRcIkNTVlwiOiAnI2MyYzJjMicsXG5cdFwiRFwiOiAnI2IwMzkzMScsXG5cdFwiRGFydFwiOiAnIzU4YjZmMCcsXG5cdFwiRGhhbGxcIjogJyNiN2I3YjcnLFxuXHRcIkRpZmZcIjogJyNjMDAwMDAnLFxuXHRcIkRqYW5nby9KaW5qYTJcIjogJyNmZjAwMDAnLFxuXHRcIkRvY2tlclwiOiAnIzAwOTZlNicsXG5cdFwiRE9UIChHcmFwaHZpeilcIjogJyM0ZWQxZjgnLFxuXHRcIkVkaXRvckNvbmZpZ1wiOiAnI2UzZTNmOCcsXG5cdFwiRUpTXCI6ICcjOTBhOTNhJyxcblx0XCJFbGl4aXJcIjogJyM0NTI0NTknLFxuXHRcIkVsbVwiOiAnIzhjZDYzNicsXG5cdFwiRVJCXCI6ICcjOTIxYTFlJyxcblx0XCJFcmxhbmdcIjogJyNhMjAwM2UnLFxuXHRcIkYjXCI6ICcjMzc4YmJhJyxcblx0XCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIjogJyNmNjgyMGMnLFxuXHRcIkZsb3dcIjogJyNmZmIwNDcnLFxuXHRcIkZvcnRyYW5cIjogJyM3MzRmOTYnLFxuXHRcIkZyZWVNYXJrZXIgVGVtcGxhdGUgTGFuZ3VhZ2VcIjogJyMwMDUwYjInLFxuXHRcIkdhbWVNYWtlciBMYW5ndWFnZVwiOiAnIzhiYzM0YScsXG5cdFwiRy1jb2RlXCI6ICcjYmEwMDAwJyxcblx0XCJHRFNjcmlwdFwiOiAnIzQ3OGNiZicsXG5cdFwiR2l0XCI6ICcjZGQ0YzM1Jyxcblx0XCJHTFNMXCI6ICcjNDM4NmI1Jyxcblx0XCJHbyBtb2R1bGVcIjogJyNjZTMyNjInLFxuXHRcIkdvXCI6ICcjMDBhY2Q3Jyxcblx0XCJHcmFkbGVcIjogJyMwMDY1MzMnLFxuXHRcIkdyYXBoUUxcIjogJyNlMTAwOTgnLFxuXHRcIkdyb292eVwiOiAnIzYzOThhYScsXG5cdFwiSGFtbFwiOiAnI2VjZGZhNycsXG5cdFwiSGFuZGxlYmFyc1wiOiAnI2MxOTc3MCcsXG5cdFwiSGFza2VsbFwiOiAnI0MwNDUwNCcsXG5cdFwiSGF4ZVwiOiAnI2Y2ODcxMicsXG5cdFwiSExTTFwiOiAnIzAwMDBmZicsXG5cdFwiSFRNTFwiOiAnI2U0NGYyNicsXG5cdFwiSFRUUFwiOiAnIzNiNjFhNicsXG5cdFwiSWRyaXNcIjogJyM4YTA4MTknLFxuXHRcIkluaVwiOiAnIzk5YjhjNCcsXG5cdFwiSW9cIjogJyNjMmMyYzInLFxuXHRcIkphdmFcIjogJyM1MzgyYTEnLFxuXHRcIkphdmFTY3JpcHRcIjogJyNmNWRlMTknLFxuXHRcIkpTT05cIjogJyNmNWRlMTknLFxuXHRcIkpTT041XCI6ICcjOTA5MDkwJyxcblx0XCJKdWxpYVwiOiAnIzQwNjNkOCcsXG5cdFwiS290bGluXCI6ICcjOWQ0YjlkJyxcblx0XCJLdXN0b1wiOiAnIzU5YjRkOScsXG5cdFwiTGFUZVhcIjogJyNjZmNmY2YnLFxuXHRcIkxlc3NcIjogJyMyYTRmODQnLFxuXHRcIkxpcXVpZFwiOiAnIzAwNDk5OScsXG5cdFwiTGlzcFwiOiAnIzgzODFjNScsXG5cdFwiTGl2ZVNjcmlwdFwiOiAnIzMxN2VhYycsXG5cdFwiTG9nIGZpbGVcIjogJyMwMGJkMDInLFxuXHRcIkxPTENPREVcIjogJyM4ZDI3MDEnLFxuXHRcIkx1YVwiOiAnIzA1MDA4MCcsXG5cdFwiTWFya2Rvd25cIjogJyM3NTU4MzgnLFxuXHRcIk1BVExBQlwiOiAnI2VmNmMzZScsXG5cdFwiTUFYU2NyaXB0XCI6ICcjMDA2OTZiJyxcblx0XCJNRUxcIjogJyMwNmEwYTInLFxuXHRcIk1vbmdvREJcIjogJyM0MWEyNDcnLFxuXHRcIm5naW54XCI6ICcjMDE5NjM5Jyxcblx0XCJOaW1cIjogJyNmZmU5NTMnLFxuXHRcIk5peFwiOiAnIzUyNzdjMycsXG5cdFwiTlNJU1wiOiAnI2E0MmQyNicsXG5cdFwiT2JqZWN0IFBhc2NhbFwiOiAnI0ZGNjM0NCcsXG5cdFwiT2JqZWN0aXZlLUNcIjogJyNjMmMyYzInLFxuXHRcIk9DYW1sXCI6ICcjZjI5MTA0Jyxcblx0XCJPY3RhdmVcIjogJyM3N2NjZTEnLFxuXHRcIk9wZW5DTFwiOiAnI0ZGMUMxQScsXG5cdFwiUGFzY2FsXCI6ICcjRkY2MzQ0Jyxcblx0XCJQZXJsXCI6ICcjM2EzYzViJyxcblx0XCJQSFBcIjogJyM0YzZiOTYnLFxuXHRcIlBML1NRTFwiOiAnI2ZmMDAwMCcsXG5cdFwiUGxhaW4gdGV4dFwiOiAnI2MyYzJjMicsXG5cdFwiUGxhbnRVTUxcIjogJyNBMTFGNDEnLFxuXHRcIlBvd2VyUXVlcnlcIjogJyNjZmNmY2YnLFxuXHRcIlBvd2VyU2hlbGxcIjogJyM1MzkxZmUnLFxuXHRcIlByb2Nlc3NpbmdcIjogJyMxYzRjNzAnLFxuXHRcIlByb2xvZ1wiOiAnI2VjMWMyNCcsXG5cdFwiUHJvdG9jb2wgQnVmZmVyc1wiOiAnIzk3ZmYyNycsXG5cdFwiUHVnXCI6ICcjNDQyODIzJyxcblx0XCJQdXBwZXRcIjogJyNmZmFlMWEnLFxuXHRcIlB1cmVTY3JpcHRcIjogJyMxNjE3MWInLFxuXHRcIlB5dGhvblwiOiAnIzM2NzFBMScsXG5cdFwiUSAoa2RiKyBkYXRhYmFzZSlcIjogJyMxZTc4YjMnLFxuXHRcIlEjXCI6IGAjMzMzM2NjYCxcblx0XCJRTUxcIjogJyM0MWNkNTInLFxuXHRcIlJcIjogJyMyNzZkYzMnLFxuXHRcIlJhY2tldFwiOiAnIzlmMWQyMCcsXG5cdFwiUmF6b3IgQyNcIjogJyMzNjg4MzInLFxuXHRcIlJlYWN0IEpTWFwiOiAnIzAwZDhmZicsXG5cdFwiUmVhY3QgVFNYXCI6ICcjMDA3YWNjJyxcblx0XCJSZWFzb25cIjogJyNkZDRiMzknLFxuXHRcIlJlZ29cIjogJyM3ODkyOWEnLFxuXHRcIlJlU2NyaXB0XCI6ICcjZTg0ZjRmJyxcblx0XCJyZVNUIChyZVN0cnVjdHVyZWRUZXh0KVwiOiAnI2NlM2YzMScsXG5cdFwiUm9ib3QgRnJhbWV3b3JrXCI6IGBgLFxuXHRcIlJ1YnlcIjogJyNiMzEzMDEnLFxuXHRcIlJ1c3RcIjogJyNhMDRmMTInLFxuXHRcIlNBU1wiOiAnIzAwMmJiNScsXG5cdFwiU2FzcyAoU2FzcylcIjogJyNjZDY3OTknLFxuXHRcIlNhc3MgKFNDU1MpXCI6ICcjY2Q2Nzk5Jyxcblx0XCJTY2FsYVwiOiBgI2U2MmQyYSBgLFxuXHRcIlNoZWxsIHNlc3Npb25cIjogJyNkOWI0MDAnLFxuXHRcIlNoZWxsXCI6ICcjZDliNDAwJyxcblx0XCJTbWFydHlcIjogJyNmNmUyMDAnLFxuXHRcIlNvbGlkaXR5IChFdGhlcmV1bSlcIjogJyNjMWMxYzEnLFxuXHRcIlNvbHV0aW9uIGZpbGVcIjogJyM4NTRjYzcnLFxuXHRcIlNQQVJRTFwiOiAnIzBjNDc5YycsXG5cdFwiU1FGXCI6ICcjYzJjMmMyJyxcblx0XCJTUUY6IFN0YXR1cyBRdW8gRnVuY3Rpb24gKEFybWEgMylcIjogJyNjMmMyYzInLFxuXHRcIlNRTFwiOiAnI2ZmZGE0NCcsXG5cdFwiU3F1aXJyZWxcIjogJyNhMDVhMmMnLFxuXHRcIlN0YW5cIjogJyNiMjAwMWQnLFxuXHRcIlN0YXRhIEFkb1wiOiAnIzNjNmU4ZicsXG5cdFwiU3R5bHVzXCI6ICcjYzJjMmMyJyxcblx0XCJTVkdcIjogJyNmZmIxM2InLFxuXHRcIlN3aWZ0XCI6ICcjRkE1RDJEJyxcblx0XCJTeXN0ZW1kIGNvbmZpZ3VyYXRpb24gZmlsZVwiOiAnIzMwZDQ3NScsXG5cdFwiVDQgdGVtcGxhdGluZ1wiOiAnIzFlODhlNScsXG5cdFwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiOiAnIzFlODhlNScsXG5cdFwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiOiAnIzFlODhlNScsXG5cdFwiVGNsXCI6ICcjZWZmMWNiJyxcblx0XCJUZW1wbGF0ZSBUb29sa2l0IDJcIjogJyMzYmNlZmMnLFxuXHRcIlRlWFwiOiAnI2NmY2ZjZicsXG5cdFwiVGV4dGlsZVwiOiAnI2ZmZTdhYycsXG5cdFwiVE9NTFwiOiAnI2JmYmZiZicsXG5cdFwiVFNDb25maWdcIjogJyMwMDdhY2MnLFxuXHRcIlR3aWdcIjogJyM3OGRjNTAnLFxuXHRcIlR5cGVTY3JpcHRcIjogJyMzMTc4YzYnLFxuXHRcIlR5cG9TY3JpcHRcIjogJyNmZjg3MDAnLFxuXHRcIlZcIjogJyM1ZDg3YmYnLFxuXHRcIlZhbGFcIjogJyM0MDM3NTcnLFxuXHRcIlZCLk5ldFwiOiAnIzAwNTE5YScsXG5cdFwiVkJBXCI6ICcjZDg3YjMwJyxcblx0XCJWZWxvY2l0eVwiOiAnIzI2MjY5MicsXG5cdFwiVmVyaWxvZ1wiOiAnIzFhMzQ4ZicsXG5cdFwiVkhETFwiOiAnIzBkOWIzNScsXG5cdFwidmltXCI6ICcjNDNiNTRhJyxcblx0XCJWaXN1YWwgQmFzaWNcIjogJyMwMDUxOWEnLFxuXHRcIldlYkFzc2VtYmx5XCI6ICcjNjU0ZmYwJyxcblx0XCJXb2xmcmFtIGxhbmd1YWdlXCI6ICcjZDAxMDAwJyxcblx0XCJYTUxcIjogJyNmMTY2MmEnLFxuXHRcIlhRdWVyeVwiOiAnI2YxNjYyYScsXG5cdFwiWUFNTFwiOiAnI2ZmZTg4NScsXG5cdFwiWUFOR1wiOiAnIzIzMWYyMCcsXG5cdFwiWmlnXCI6ICcjZjdhNDFkJ1xufVxuIiwgImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgTm90aWNlLCBUZXh0Q29tcG9uZW50LCBEcm9wZG93bkNvbXBvbmVudCwgU2xpZGVyQ29tcG9uZW50LCBUb2dnbGVDb21wb25lbnQsIEV4dHJhQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgUGlja3IgZnJvbSBcIkBzaW1vbndlcC9waWNrclwiO1xuaW1wb3J0IHsgQ29sb3JUcmFuc2xhdG9yIH0gZnJvbSBcImNvbG9ydHJhbnNsYXRvclwiO1xuXG5pbXBvcnQgQ29kZVN0eWxlclBsdWdpbiBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBDb2xvdXIsIENTUywgSEVYLCBEaXNwbGF5LCBDb2RlU3R5bGVyU2V0dGluZ3MsIENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIFBBUkFNRVRFUlMsIERFRkFVTFRfU0VUVElOR1MsIExBTkdVQUdFX05BTUVTLCBMQU5HVUFHRV9JQ09OU19EQVRBIH0gZnJvbSAnLi9TZXR0aW5ncyc7XG5cbmNvbnN0IERJU1BMQVlfT1BUSU9OUzogUmVjb3JkPERpc3BsYXksc3RyaW5nPiA9IHtcblx0XCJub25lXCI6IFwiTmV2ZXJcIixcblx0XCJpZl9oZWFkZXJfc2hvd25cIjogXCJJZiBIZWFkZXIgU2hvd25cIixcblx0XCJhbHdheXNcIjogXCJBbHdheXNcIixcbn1cblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbjtcblx0cGlja3JzOiBSZWNvcmQ8c3RyaW5nLFBpY2tyUmVzZXR0YWJsZT47XG5cdGRpc2FibGVhYmxlQ29tcG9uZW50czogUmVjb3JkPHN0cmluZyxBcnJheTxUb2dnbGVDb21wb25lbnQgfCBTbGlkZXJDb21wb25lbnQgfCBUZXh0Q29tcG9uZW50IHwgRXh0cmFCdXR0b25Db21wb25lbnQ+PlxuXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pIHtcblx0XHRzdXBlcihhcHAsIHBsdWdpbik7XG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XG5cdFx0dGhpcy5waWNrcnMgPSB7fVxuXHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzID0ge307XG5cdH1cblxuXHQvKipcblx0ICogIEJ1aWxkcyB0aGUgaHRtbCBwYWdlIHRoYXQgaXMgc2hvd2VkIGluIHRoZSBzZXR0aW5ncy5cblx0ICovXG5cdGRpc3BsYXkoKSB7XG5cdFx0Y29uc3Qge2NvbnRhaW5lckVsfSA9IHRoaXM7XG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDInLCB7dGV4dDogJ1NldHRpbmdzIGZvciB0aGUgQ29kZSBTdHlsZXIgUGx1Z2luLid9KTtcblxuXHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzID0ge1xuXHRcdFx0J2xpbmVOdW1iZXJzJzogW10sXG5cdFx0XHQnd3JhcExpbmVzJzogW10sXG5cdFx0XHQnaGVhZGVyTGFuZ3VhZ2VUYWdzJzogW10sXG5cdFx0XHQnaGVhZGVyTGFuZ3VhZ2VJY29ucyc6IFtdLFxuXHRcdFx0J2VkaXRvckFjdGl2ZUxpbmVIaWdobGlnaHQnOiBbXSxcblx0XHRcdCdjb2RlYmxvY2tBY3RpdmVMaW5lSGlnaGxpZ2h0JzogW10sXG5cdFx0XHQnZ3JhZGllbnRIaWdobGlnaHRpbmcnOiBbXSxcblx0XHRcdCdsYW5ndWFnZUJvcmRlckNvbG91cic6IFtdLFxuXHRcdH07XG5cblx0XHQvLyA9PT09PT09PT09IEdlbmVyYWwgPT09PT09PT09PVxuXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSWdub3JlIENvZGVibG9ja3MnKVxuXHRcdFx0LnNldERlc2MoJ0RlZmluZSBsYW5ndWFnZXMgaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCB3aGljaCB0aGUgcGx1Z2luIHNob3VsZCBjb21wbGV0ZWx5IGlnbm9yZS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdlLmcuIGRhdGF2aWV3LCBkYXRhdmlld2pzIGV0Yy4nKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFeGNsdWRlIExhbmd1YWdlcycpXG5cdFx0XHQuc2V0RGVzYygnRGVmaW5lIGxhbmd1YWdlcyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IHdoaWNoIHRoZSBwbHVnaW4gc2hvdWxkIG5vdCBkZWNvcmF0ZS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdlLmcuIGFkLSosIHB5dGhvbiBldGMuJylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1N0eWxlIENvZGUgb24gRXhwb3J0Jylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBzdHlsaW5nIHdpbGwgYmUgYXBwbGllZCB3aGVuIGV4cG9ydGluZyB0byBQREYuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVjb3JhdGVQcmludClcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmRlY29yYXRlUHJpbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgICAgICBcblx0XHRcdFx0fSkpO1xuXG5cdFx0Ly8gPT09PT09PT09PSBUaGVtZXMgPT09PT09PT09PVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnVGhlbWUgU2V0dGluZ3MnfSk7XG5cblx0XHRsZXQgdGhlbWVEcm9wZG93bjogRHJvcGRvd25Db21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdCBUaGVtZVwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHR0aGVtZURyb3Bkb3duID0gZHJvcGRvd247XG5cdFx0XHRcdHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG5cdFx0XHRcdHRoZW1lRHJvcGRvd24ub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0pXG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0VG9vbHRpcChcIlVwZGF0ZSB0aGVtZVwiKTtcblx0XHRcdFx0YnV0dG9uLnNldEljb24oJ3NhdmUnKTtcblx0XHRcdFx0YnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnWW91IGNhbm5vdCB1cGRhdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBzYXZlZCBzdWNjZXNzZnVsbHkhYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0YnV0dG9uLnNldFRvb2x0aXAoXCJEZWxldGUgdGhlbWVcIik7XG5cdFx0XHRcdGJ1dHRvbi5zZXRJY29uKCd0cmFzaCcpO1xuXHRcdFx0XHRidXR0b24ub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ1NlbGVjdCBhIHRoZW1lIGZpcnN0IHRvIGRlbGV0ZScpOyAvL05PU09OQVJcblx0XHRcdFx0XHRlbHNlIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnWW91IGNhbm5vdCBkZWxldGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBkZWxldGVkIHN1Y2Nlc3NmdWxseSFgKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lID0gXCJEZWZhdWx0XCI7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdKVxuXHRcdFx0XHRcdFx0dGhpcy51cGRhdGVEcm9wZG93bih0aGVtZURyb3Bkb3duLHRoaXMucGx1Z2luLnNldHRpbmdzKTtcblx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGxldCBuZXdUaGVtZU5hbWU6IFRleHRDb21wb25lbnQ7XG5cdFx0bGV0IG5ld1RoZW1lRGVmYXVsdDogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gJyc7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQWRkIE5ldyBUaGVtZScpXG5cdFx0XHQuc2V0RGVzYygnQ3JlYXRlIGEgbmV3IHRoZW1lIGZyb20gdGhlIGN1cnJlbnQgc2V0dGluZ3MuJylcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4ge25ld1RoZW1lTmFtZSA9IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdOZXcgdGhlbWUgbmFtZScpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gdmFsdWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0VG9vbHRpcChcIlNhdmUgdGhlbWVcIik7XG5cdFx0XHRcdGJ1dHRvbi5zZXRJY29uKCdwbHVzJyk7XG5cdFx0XHRcdGJ1dHRvbi5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ1NldCBhIG5hbWUgZm9yIHlvdXIgdGhlbWUnKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgaW4gREVGQVVMVF9TRVRUSU5HUy50aGVtZXMpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCdZb3UgY2FuXFwndCBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lIGluIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lcykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoYCR7dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWV9IHRoZW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZV0gPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZX0gdGhlbWUgc2F2ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZTtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgPSAnJztcblx0XHRcdFx0XHRcdG5ld1RoZW1lTmFtZS5zZXRWYWx1ZShcIlwiKTtcblx0XHRcdFx0XHRcdG5ld1RoZW1lRGVmYXVsdC5zZXRWYWx1ZShmYWxzZSk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdDb2RlYmxvY2sgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2RlYmxvY2sgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnY29kZWJsb2NrX2JhY2tncm91bmQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQ29kZWJsb2NrIFRleHQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2NvZGVibG9ja190ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1Vud3JhcCBjb2RlYmxvY2sgbGluZXMnKVxuXHRcdFx0LnNldERlc2MoJ0Nob29zZSB3aGV0aGVyIHRvIHVud3JhcCBsaW5lcyBpbiByZWFkaW5nIG1vZGUnKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLnVud3JhcExpbmVzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay51bndyYXBMaW5lcyA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWyd3cmFwTGluZXMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdH0pKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2RlYmxvY2sgQ3VydmF0dXJlJylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyByb3VuZGVkIHRoZSBjb2RlYmxvY2tzIGFwcGVhciBpbiBwaXhlbHMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDI1LDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmUgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGN1cnZhdHVyZScpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZTtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmUpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHRcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7dGV4dDogJ0d1dHRlciBBcHBlYXJhbmNlJ30pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0VuYWJsZSBMaW5lIE51bWJlcnMnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGRpc2FibGVkLCB0aGUgYmVsb3cgc2V0dGluZ3MgYXJlIGRpc2FibGVkIHRvby4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycyA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQoIXZhbHVlKX0pO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICAgICAgIFxuXHRcdFx0XHR9KSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnR3V0dGVyIEJhY2tncm91bmQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2d1dHRlcl9iYWNrZ3JvdW5kJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIuYmFja2dyb3VuZENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIuYmFja2dyb3VuZENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5wdXNoKHRoaXMucGlja3JzWydndXR0ZXJfYmFja2dyb3VuZCddLnJlc2V0QnV0dG9uKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdMaW5lIE51bWJlciBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnbGluZV9udW1iZXInLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmd1dHRlci50ZXh0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmd1dHRlci50ZXh0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHRcdCgpID0+ICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzLFxuXHRcdFx0KX0pO1xuXHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLnB1c2godGhpcy5waWNrcnNbJ2xpbmVfbnVtYmVyJ10ucmVzZXRCdXR0b24pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hpZ2hsaWdodCBMaW5lIE51bWJlcnMnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgd2lsbCBhbHNvIGhpZ2hsaWdodCB0aGUgbGluZSBudW1iZXJzLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGV0IGhpZ2hsaWdodExpbmVOdW1iZXJzVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuZ3V0dGVyLmhpZ2hsaWdodClcblx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10ucHVzaChoaWdobGlnaHRMaW5lTnVtYmVyc1RvZ2dsZSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmRpY2F0ZSBDdXJyZW50IExpbmUgTnVtYmVyJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCB0aGUgY3VycmVudCBsaW5lIG51bWJlciBpbiBjb2RlYmxvY2tzIHdpbGwgYmUgaW5kaWNhdGVkIHdpdGggYSBzZXBhcmF0ZSBjb2xvdXIuJylcblx0XHRcdC5zZXRDbGFzcygnY29kZS1zdHlsZXItc3BhY2VkJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHtsZXQgaW5kaWNhdGVDdXJyZW50TGluZU51bWJlclRvZ2dsZSA9IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5hY3RpdmVMaW5lKVxuXHRcdFx0XHQuc2V0RGlzYWJsZWQoIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuZ3V0dGVyLmFjdGl2ZUxpbmUgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10ucHVzaChpbmRpY2F0ZUN1cnJlbnRMaW5lTnVtYmVyVG9nZ2xlKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdhY3RpdmVfbGluZV9udW1iZXInLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmd1dHRlci5hY3RpdmVUZXh0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmd1dHRlci5hY3RpdmVUZXh0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHRcdCgpID0+ICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzLFxuXHRcdFx0KX0pO1xuXHRcdFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNCcsIHt0ZXh0OiAnSGVhZGVyIEFwcGVhcmFuY2UnfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIEJhY2tncm91bmQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2hlYWRlcl9iYWNrZ3JvdW5kJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIuYmFja2dyb3VuZENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIuYmFja2dyb3VuZENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBGb250IFNpemUnKVxuXHRcdFx0LnNldERlc2MoJ1NldCB0aGUgZm9udCBzaXplIGZvciBoZWFkZXIgbGFuZ3VhZ2UgdGFncyBhbmQgdGl0bGVzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoNiwzMiwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmZvbnRTaXplKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5mb250U2l6ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBmb250IHNpemUnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuZm9udFNpemUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaGVhZGVyLmZvbnRTaXplO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmZvbnRTaXplKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdIZWFkZXIgVGl0bGUgVGV4dCBTdHlsaW5nJylcblx0XHRcdC5zZXREZXNjKCdTdHlsZSB0aGUgaGVhZGVyIHRpdGxlIHRleHQgdXNpbmcgYm9sZCBhbmQgaXRhbGljIHRvZ2dsZXMsIGJ5IHNldHRpbmcgYSBmb250IG9yIGJ5IHNldHRpbmcgYSB0ZXh0IGNvbG91ci4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3RvZ2dsZVxuXHRcdFx0XHQuc2V0VG9vbHRpcChcIlRvZ2dsZSBib2xkIHRpdGxlIHRleHRcIilcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEJvbGQpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRCb2xkID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHt0b2dnbGVcblx0XHRcdFx0LnNldFRvb2x0aXAoXCJUb2dnbGUgaXRhbGljIHRpdGxlIHRleHRcIilcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEl0YWxpYylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEl0YWxpYyA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHt0ZXh0XG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignRm9udCcpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRGb250KVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Rm9udCA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdoZWFkZXJfdGl0bGVfdGV4dCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLnRpdGxlLnRleHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLnRpdGxlLnRleHRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2xsYXBzZSBQbGFjZWhvbGRlciBUZXh0Jylcblx0XHRcdC5zZXREZXNjKCdUaXRsZSBwbGFjZWhvbGRlciB0ZXh0IGZvciBjb2xsYXBzZWQgY29kZSB3aGVuIG5vIHRpdGxlIHBhcmFtZXRlciBpcyBzZXQuJylcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4gdGV4dFxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ0NvbGxhcHNlZCBDb2RlJylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlcilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlciA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIFNlcGFyYXRvciBDb2xvdXInKVxuXHRcdFx0LnNldERlc2MoJ0NvbG91ciBvZiB0aGUgbGluZSBzZXBhcmF0aW5nIHRoZSBjb2RlYmxvY2sgaGVhZGVyIGFuZCB0aGUgY29kZWJsb2NrLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdoZWFkZXJfc2VwYXJhdG9yJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGluZUNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGluZUNvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g1Jywge3RleHQ6ICdIZWFkZXIgTGFuZ3VhZ2UgVGFnIEFwcGVhcmFuY2UnfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnRGlzcGxheSBIZWFkZXIgTGFuZ3VhZ2UgVGFncycpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lIHdoZW4gdG8gc2hvdyBsYW5ndWFnZSB0YWdzIGluIHRoZSBoZWFkZXIuIFwiVGl0bGUgT25seVwiIHdpbGwgb25seSBzaG93IGxhbmd1YWdlIHRhZ3Mgd2hlbiB0aGUgdGl0bGUgcGFyYW1ldGVyIGlzIHNldC4gSWYgc2V0IHRvIFwiTm9uZVwiLCB0aGUgYmVsb3cgc2V0dGluZ3MgYXJlIGRpc2FibGVkIHRvby4nKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4gZHJvcGRvd25cblx0XHRcdFx0LmFkZE9wdGlvbnMoRElTUExBWV9PUFRJT05TKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5KVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlOiBEaXNwbGF5KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID0gdmFsdWU7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQodmFsdWU9PT1cIm5vbmVcIil9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBMYW5ndWFnZSBUYWcgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX2xhbmd1YWdlX3RhZ19iYWNrZ3JvdW5kJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdub25lJyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaCh0aGlzLnBpY2tyc1snaGVhZGVyX2xhbmd1YWdlX3RhZ19iYWNrZ3JvdW5kJ10ucmVzZXRCdXR0b24pO1xuXHRcdGxldCBsYW5ndWFnZVRhZ3NCb2xkVG9nZ2xlOiBUb2dnbGVDb21wb25lbnQ7XG5cdFx0bGV0IGxhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZTogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdGxldCBsYW5ndWFnZUljb25zRm9udFRleHQ6IFRleHRDb21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIExhbmd1YWdlIFRhZyBUZXh0IFN0eWxpbmcnKVxuXHRcdFx0LnNldERlc2MoJ1N0eWxlIHRoZSBoZWFkZXIgbGFuZ3VhZ2UgdGFnIHRleHQgdXNpbmcgYm9sZCBhbmQgaXRhbGljIHRvZ2dsZXMsIGJ5IHNldHRpbmcgYSBmb250IG9yIGJ5IHNldHRpbmcgYSB0ZXh0IGNvbG91ci4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlVGFnc0JvbGRUb2dnbGUgPSB0b2dnbGVcblx0XHRcdFx0LnNldFRvb2x0aXAoXCJUb2dnbGUgYm9sZCBsYW5ndWFnZSB0YWcgdGV4dFwiKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZClcblx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZCA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2gobGFuZ3VhZ2VUYWdzQm9sZFRvZ2dsZSk7XG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZSA9IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VG9vbHRpcChcIlRvZ2dsZSBpdGFsaWMgbGFuZ3VhZ2UgdGFnIHRleHRcIilcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEl0YWxpYylcblx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0SXRhbGljID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaChsYW5ndWFnZVRhZ3NJdGFsaWNUb2dnbGUpO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4ge2xhbmd1YWdlSWNvbnNGb250VGV4dCA9IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdGb250Jylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5wdXNoKGxhbmd1YWdlSWNvbnNGb250VGV4dCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX2xhbmd1YWdlX3RhZ190ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdub25lJyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaCh0aGlzLnBpY2tyc1snaGVhZGVyX2xhbmd1YWdlX3RhZ190ZXh0J10ucmVzZXRCdXR0b24pO1xuXHRcdFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNScsIHt0ZXh0OiAnSGVhZGVyIExhbmd1YWdlIEljb24gQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdEaXNwbGF5IEhlYWRlciBMYW5ndWFnZSBJY29ucycpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lIHdoZW4gdG8gc2hvdyBsYW5ndWFnZSBpY29ucyB3aGVyZSBhdmFpbGFibGUuIFwiVGl0bGUgT25seVwiIHdpbGwgb25seSBzaG93IGxhbmd1YWdlIHRhZ3Mgd2hlbiB0aGUgdGl0bGUgcGFyYW1ldGVyIGlzIHNldC4gSWYgc2V0IHRvIFwiTm9uZVwiLCB0aGUgYmVsb3cgc2V0dGluZ3MgYXJlIGRpc2FibGVkIHRvby4nKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4gZHJvcGRvd25cblx0XHRcdFx0LmFkZE9wdGlvbnMoRElTUExBWV9PUFRJT05TKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZTogRGlzcGxheSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXkgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQodmFsdWU9PT1cIm5vbmVcIil9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpO1xuXHRcdGxldCBsYW5ndWFnZUljb25zQ29sb3VyZWRUb2dnbGU6IFRvZ2dsZUNvbXBvbmVudDtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdMYW5ndWFnZSBJY29ucyBDb2xvdXJlZCcpXG5cdFx0XHQuc2V0RGVzYygnSWYgZGlzYWJsZWQsIGxhbmd1YWdlIGljb25zIHdpbGwgYmUgYmxhY2sgYW5kIHdoaXRlLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGFuZ3VhZ2VJY29uc0NvbG91cmVkVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5Q29sb3VyKVxuXHRcdFx0XHQuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheT09PVwibm9uZVwiKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheUNvbG91ciA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLnB1c2gobGFuZ3VhZ2VJY29uc0NvbG91cmVkVG9nZ2xlKTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0xhbmd1YWdlIEljb24gU2l6ZScpXG5cdFx0XHQuc2V0RGVzYygnU2V0IHRoZSBzaXplIG9mIHRoZSBkaXNwbGF5ZWQgbGFuZ3VhZ2UgaWNvbnMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygxMCw0MCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5wdXNoKHJlc2V0dGFibGVTbGlkZXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IHJlc2V0QnV0dG9uOiBFeHRyYUJ1dHRvbkNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7cmVzZXRCdXR0b24gPSBidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGljb24gc2l6ZScpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5wdXNoKHJlc2V0QnV0dG9uKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdIaWdobGlnaHRpbmcgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFZGl0b3IgQWN0aXZlIExpbmUgSGlnaGxpZ2h0Jylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHRoZSBhY3RpdmUgbGluZSBvdXRzaWRlIGNvZGVibG9ja3MuJylcblx0XHRcdC5zZXRDbGFzcygnY29kZS1zdHlsZXItc3BhY2VkJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHtyZXR1cm4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRUb29sdGlwKCdUb2dnbGUgZWRpdG9yIGFjdGl2ZSBsaW5lIGhpZ2hsaWdodGluZycpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydlZGl0b3JBY3RpdmVMaW5lSGlnaGxpZ2h0J10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2VkaXRvcl9hY3RpdmVfbGluZV9oaWdobGlnaHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZUNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmVDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2VkaXRvckFjdGl2ZUxpbmVIaWdobGlnaHQnXS5wdXNoKHRoaXMucGlja3JzWydlZGl0b3JfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0J10ucmVzZXRCdXR0b24pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0NvZGVibG9jayBBY3RpdmUgTGluZSBIaWdobGlnaHQnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgdGhlIGFjdGl2ZSBsaW5lIGluc2lkZSBjb2RlYmxvY2tzLicpXG5cdFx0XHQuc2V0Q2xhc3MoJ2NvZGUtc3R5bGVyLXNwYWNlZCcpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7cmV0dXJuIHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUgPSB2YWx1ZTsgXG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnY29kZWJsb2NrX2FjdGl2ZV9saW5lX2hpZ2hsaWdodCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZUNvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZSxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snY29kZWJsb2NrQWN0aXZlTGluZUhpZ2hsaWdodCddLnB1c2godGhpcy5waWNrcnNbJ2NvZGVibG9ja19hY3RpdmVfbGluZV9oaWdobGlnaHQnXS5yZXNldEJ1dHRvbik7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnRGVmYXVsdCBIaWdobGlnaHQgQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdVc2VkIGJ5IHRoZSBcXCdobFxcJyBwYXJhbWV0ZXIuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2RlZmF1bHRfaGlnaGxpZ2h0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmRlZmF1bHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5kZWZhdWx0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bGV0IG5ld0hpZ2hsaWdodFRleHQ6IFRleHRDb21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkFkZCBBbHRlcm5hdGl2ZSBIaWdobGlnaHRcIilcblx0XHRcdC5zZXREZXNjKCdEZWZpbmUgYSBuZXcgYWx0ZXJuYXRpdmUgaGlnaGxpZ2h0IG5hbWUuIFRoZSBjb2xvdXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyIGl0IGlzIGFkZGVkLicpXG5cdFx0XHQuYWRkVGV4dCh2YWx1ZSA9PiB7bmV3SGlnaGxpZ2h0VGV4dCA9IHZhbHVlXG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignZS5nLiBlcnJvciwgd2FybicpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvbi5zZXRCdXR0b25UZXh0KFwiQWRkXCIpO1xuXHRcdFx0XHRidXR0b24ub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodC50cmltKCkgPT09IFwiXCIpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiUGxlYXNlIGVudGVyIGEgY29sb3VyIG5hbWUuXCIpOyAvL05PU09OQVJcblx0XHRcdFx0XHRlbHNlIGlmICghL15bXlxcZF1cXHcqJC8udGVzdCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQpKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIiBpcyBub3QgYSB2YWxpZCBjb2xvdXIgbmFtZS5gKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0LnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAnaGwnKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkNhbm5vdCBvdmVycmlkZSB0aGUgZGVmYXVsdCBoaWdobGlnaHQgcGFyYW1ldGVyLlwiKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAoUEFSQU1FVEVSUy5pbmNsdWRlcyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQudHJpbSgpLnRvTG93ZXJDYXNlKCkpKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkNhbm5vdCB1c2Ugb3RoZXIgZGVmYXVsdCBwYXJhbWV0ZXJzLlwiKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0IGluIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKVxuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKGBBIGhpZ2hsaWdodCB3aXRoIHRoZSBuYW1lIFwiJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHR9XCIgYWxyZWFkeSBleGlzdHMuYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0XHQvL3RvZG8gKEBtYXl1cmFua3YpIEZ1dHVyZTogRm9jdXMgb24gZXhpc3RpbmcgaGlnaGxpZ2h0ZXIgLSBgcmVuZGVyTWF0Y2hlc2Bcblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZXdDb2xvdXIgPSBnZXRSYW5kb21Db2xvdXIoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0XSA9IG5ld0NvbG91cjtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMuZGFyay5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHRdID0gbmV3Q29sb3VyO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKGBBZGRlZCBoaWdobGlnaHQgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIi5gKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdG5ld0hpZ2hsaWdodFRleHQuc2V0VmFsdWUoXCJcIik7XG5cdFx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRjb25zdCBhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIgPSBjb250YWluZXJFbC5jcmVhdGVEaXYoKTtcblx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdJbmxpbmUgQ29kZSBBcHBlYXJhbmNlJ30pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1N5bnRheCBIaWdobGlnaHQgSW5saW5lIENvZGUnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGluIHJlYWRpbmcgbW9kZSwgaW5saW5lIGNvZGUgd2lsbCBiZSBzeW50YXggaGlnaGxpZ2h0ZWQgYmFzZWQgb24gYSBsYW5ndWFnZSBzZXQgd2l0aCBge2xhbmd1YWdlfSBoaWdobGlnaHRlZF9pbmxpbmVfY29kZWAuIFNlZSB0aGUgUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGVcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0KVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5zeW50YXhIaWdobGlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdH0pKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBCYWNrZ3JvdW5kIENvbG91cicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdpbmxpbmVfYmFja2dyb3VuZCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLmJhY2tncm91bmRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBUZXh0IENvbG91cicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdpbmxpbmVfdGV4dCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLnRleHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLnRleHRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBBY3RpdmUgVGV4dCBDb2xvdXInKVxuXHRcdFx0LnNldERlc2MoJ1RoZSB0ZXh0IGNvbG91ciB3aGVuIGVkaXRpbmcgaW5saW5lIGNvZGUuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2lubGluZV9hY3RpdmVfdGV4dCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLmFjdGl2ZVRleHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLmFjdGl2ZVRleHRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBGb250IFdlaWdodCcpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgYm9sZCBpbmxpbmUgY29kZSBhcHBlYXJzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMSw5LDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuZm9udFdlaWdodClcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuZm9udFdlaWdodCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgZm9udCB3ZWlnaHQnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuZm9udFdlaWdodCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5pbmxpbmUuZm9udFdlaWdodDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5mb250V2VpZ2h0KTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIEN1cnZhdHVyZScpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgcm91bmRlZCBpbmxpbmUgY29kZSBhcHBlYXIgaW4gcGl4ZWxzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwxMiwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmN1cnZhdHVyZSlcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuY3VydmF0dXJlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjdXJ2YXR1cmUnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuY3VydmF0dXJlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmlubGluZS5jdXJ2YXR1cmU7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuY3VydmF0dXJlKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIFZlcnRpY2FsIFBhZGRpbmcnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZXMgaG93IG11Y2ggdmVydGljYWwgaW5uZXIgcGFkZGluZyBpbiBwaXhlbHMgaW5saW5lIGNvZGUgaGFzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwxMCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdWZXJ0aWNhbClcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ1ZlcnRpY2FsID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCB2ZXJ0aWNhbCBwYWRkaW5nJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdWZXJ0aWNhbCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ1ZlcnRpY2FsO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdWZXJ0aWNhbCk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBIb3Jpem9udGFsIFBhZGRpbmcnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZXMgaG93IG11Y2ggaG9yaXpvbnRhbCBpbm5lciBwYWRkaW5nIGluIHBpeGVscyBpbmxpbmUgY29kZSBoYXMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDEwLDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ0hvcml6b250YWwpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdIb3Jpem9udGFsID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBob3Jpem9udGFsIHBhZGRpbmcnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ0hvcml6b250YWwgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdIb3Jpem9udGFsO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdIb3Jpem9udGFsKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIEhvcml6b250YWwgTWFyZ2luJylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyBtdWNoIGhvcml6b250YWwgb3V0ZXIgbWFyZ2luIGlzIGFkZGVkIHRvIHRoZSBpbmxpbmUgY29kZSBpbiBwaXhlbHMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDgsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5tYXJnaW5Ib3Jpem9udGFsKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5tYXJnaW5Ib3Jpem9udGFsID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBob3Jpem9udGFsIG1hcmdpbicpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5tYXJnaW5Ib3Jpem9udGFsID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmlubGluZS5tYXJnaW5Ib3Jpem9udGFsO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLm1hcmdpbkhvcml6b250YWwpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgVGl0bGUgQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdUaGUgdGV4dCBjb2xvdXIgb2YgaW5saW5lIGNvZGUgdGl0bGVzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCd0aXRsZV90ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUudGl0bGVUZXh0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS50aXRsZVRleHRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBUaXRsZSBGb250IFdlaWdodCcpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgYm9sZCBpbmxpbmUgY29kZSB0aXRsZXMgYXBwZWFyLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMSw5LDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUudGl0bGVGb250V2VpZ2h0KVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS50aXRsZUZvbnRXZWlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGZvbnQgd2VpZ2h0Jylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnRpdGxlRm9udFdlaWdodCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5pbmxpbmUudGl0bGVGb250V2VpZ2h0O1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnRpdGxlRm9udFdlaWdodCk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdC8vID09PT09PT09PT0gQWR2YW5jZWQgPT09PT09PT09PVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnQWR2YW5jZWQgU2V0dGluZ3MnfSk7XG5cdFx0XG5cblx0XHRsZXQgd3JhcExpbmVzQWN0aXZlVG9nZ2xlOiBUb2dnbGVDb21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnV3JhcCBMaW5lcyBvbiBDbGljaycpXG5cdFx0XHQuc2V0RGVzYygnSWYgZW5hYmxlZCwgaW4gcmVhZGluZyBtb2RlLCBob2xkaW5nIGNsaWNrIG9uIGEgY29kZWJsb2NrIHdpbGwgd3JhcCB0aGUgbGluZXMgZm9yIGJldHRlciB2aXNpYmlsaXR5LiBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIFwiVW53cmFwIExpbmVzXCIgc2V0dGluZyBpcyBlbmFibGVkLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7d3JhcExpbmVzQWN0aXZlVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLndyYXBMaW5lc0FjdGl2ZSlcblx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLnVud3JhcExpbmVzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay53cmFwTGluZXNBY3RpdmUgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWyd3cmFwTGluZXMnXS5wdXNoKHdyYXBMaW5lc0FjdGl2ZVRvZ2dsZSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdCdXR0b24gQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdVc2VkIGZvciBVSSBidXR0b25zIGxpa2UgdGhlIGNvcHkgY29kZSBidXR0b24uJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2RlZmF1bHRfaGlnaGxpZ2h0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5hZHZhbmNlZC5idXR0b25Db2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uYWR2YW5jZWQuYnV0dG9uQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQnV0dG9uIEFjdGl2ZSBDb2xvdXInKVxuXHRcdFx0LnNldERlc2MoJ0NvbG91ciBidXR0b25zIHVzZSB3aGVuIGFjdGl2YXRlZC4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnZGVmYXVsdF9oaWdobGlnaHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmFkdmFuY2VkLmJ1dHRvbkFjdGl2ZUNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5hZHZhbmNlZC5idXR0b25BY3RpdmVDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdHcmFkaWVudCBIaWdobGlnaHRpbmcnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgZmFkZSBhd2F5IHRvIHRoZSByaWdodC4gVGhlIHNsaWRlciBzZXRzIHRoZSBncmFkaWVudCBjb2xvdXIgc3RvcCBhcyBhIHBlcmNlbnRhZ2UuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHMgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZ3JhZGllbnRIaWdobGlnaHRpbmcnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwxMDAsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUoK3RoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wLnNsaWNlKDAsLTEpKVxuXHRcdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cylcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wID0gYCR7dmFsdWV9JWA7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2dyYWRpZW50SGlnaGxpZ2h0aW5nJ10ucHVzaChyZXNldHRhYmxlU2xpZGVyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGxldCByZXNldEJ1dHRvbjogRXh0cmFCdXR0b25Db21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3Jlc2V0QnV0dG9uID0gYnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cylcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGNvbG91ciBzdG9wJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSgrdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3Auc2xpY2UoMCwtMSkpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2dyYWRpZW50SGlnaGxpZ2h0aW5nJ10ucHVzaChyZXNldEJ1dHRvbik7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0xhbmd1YWdlIENvbG91cmVkIEJvcmRlcnMnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGxhbmd1YWdlcyB3aXRoIGljb25zIGRpc3BsYXkgYSBsZWZ0IGJvcmRlciB3aXRoIHRoZSBjb2xvdXIgb2YgdGhlIGljb24uIFRoZSBzbGlkZXIgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlci4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvdXIpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvdXIgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGFuZ3VhZ2VCb3JkZXJDb2xvdXInXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwyMCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aClcblx0XHRcdFx0XHQuc2V0RGlzYWJsZWQoIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG91cilcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xhbmd1YWdlQm9yZGVyQ29sb3VyJ10ucHVzaChyZXNldHRhYmxlU2xpZGVyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGxldCByZXNldEJ1dHRvbjogRXh0cmFCdXR0b25Db21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3Jlc2V0QnV0dG9uID0gYnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3VyKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3VyIHN0b3AnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGg7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsYW5ndWFnZUJvcmRlckNvbG91ciddLnB1c2gocmVzZXRCdXR0b24pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnUmVkaXJlY3QgTGFuZ3VhZ2UgU2V0dGluZ3MnKVxuXHRcdFx0LnNldERlc2MoJ1VzZSB0aGlzIHRleHRib3ggdG8gcmVkaXJlY3Qgc3BlY2lmaWMgbGFuZ3VhZ2UgY29sb3VycyBhbmQgaWNvbnMgYXMgYSBKU09OIHdpdGggbGFuZ3VhZ2UgbmFtZXMgYXMga2V5cyBhbmQgZWl0aGVyIGEgY29sb3VyIGtleSwgYW4gaWNvbiBrZXkgb3IgYm90aCBhcyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gbGFuZ3VhZ2UuIENvbG91cnMgc2hvdWxkIGJlIHBhc3NlZCBhcyBDU1MgY29sb3VycyBhbmQgaWNvbnMgc2hvdWxkIGJlIHBhc3NlZCBhcyBhIHN0cmluZyBvZiB0aGUgaW5zaWRlIG9mIGFuIHN2ZyBlbGVtZW50LiBUaGlzIHNldHRpbmcgaXMgdGhlbWUgaW5kZXBlbmRlbnQuJylcblx0XHRcdC5zZXRDbGFzcygnY29kZS1zdHlsZXItc2V0dGluZy10ZXh0LWFyZWEnKVxuXHRcdFx0LmFkZFRleHRBcmVhKHRleHRBcmVhID0+IHRleHRBcmVhXG5cdFx0XHRcdC5zZXRWYWx1ZShKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcyk9PT0ne30nPycnOkpTT04uc3RyaW5naWZ5KHRoaXMucGx1Z2luLnNldHRpbmdzLnJlZGlyZWN0TGFuZ3VhZ2VzLG51bGwsNCkpXG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcihKU09OLnN0cmluZ2lmeSh7dG9tbDoge2NvbG91cjogJyMwMTIzNDUnLCBpY29uOiBMQU5HVUFHRV9JQ09OU19EQVRBWydBUEwnXX19LG51bGwsNCkpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpPT57XG5cdFx0XHRcdFx0aWYgKHZhbHVlID09PSAnJykge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MucmVkaXJlY3RMYW5ndWFnZXMgPSB7fTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcyA9IEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRPYmplY3QuZW50cmllcyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcykuZm9yRWFjaCgoW2xhbmd1YWdlTmFtZSwgbGFuZ3VhZ2VTZXR0aW5nc106IFtzdHJpbmcsIHtjb2xvdXI/OiBDb2xvdXIsIGljb24/OiBzdHJpbmd9XSk9Pntcblx0XHRcdFx0XHRcdFx0XHRpZiAoJ2ljb24nIGluIGxhbmd1YWdlU2V0dGluZ3MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChMQU5HVUFHRV9OQU1FU1tsYW5ndWFnZU5hbWVdIGluIHRoaXMucGx1Z2luLmxhbmd1YWdlSWNvbnMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5wbHVnaW4ubGFuZ3VhZ2VJY29uc1tMQU5HVUFHRV9OQU1FU1tsYW5ndWFnZU5hbWVdXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5sYW5ndWFnZUljb25zW0xBTkdVQUdFX05BTUVTW2xhbmd1YWdlTmFtZV1dID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIj4ke2xhbmd1YWdlU2V0dGluZ3MuaWNvbn08L3N2Zz5gXSwgeyB0eXBlOiBcImltYWdlL3N2Zyt4bWxcIiB9KSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnSW52YWxpZCBKU09OJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkpO1xuXG5cblx0XHQvLyA9PT09PT09PT09IERvbmF0aW9uID09PT09PT09PT1cblx0XHRjb25zdCBkb25hdGlvbkRpdiA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIsIHsgY2xzOiBcImNvZGUtc3R5bGVyLWRvbmF0aW9uXCIsIH0pOyAgICBcblx0XHRjb25zdCBkb25hdGlvblRleHQgPSBjcmVhdGVFbChcInBcIiwge3RleHQ6IFwiSWYgeW91IGxpa2UgdGhpcyBwbHVnaW4sIGFuZCB3b3VsZCBsaWtlIHRvIGhlbHAgc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQsIHVzZSB0aGUgYnV0dG9uIGJlbG93IVwifSk7XG5cdFx0ZG9uYXRpb25EaXYuYXBwZW5kQ2hpbGQoZG9uYXRpb25UZXh0KTtcblx0XHRjb25zdCBkb25hdGlvbkJ1dHRvbiA9IGNyZWF0ZUVsKFwiYVwiLCB7IGhyZWY6IFwiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9tYXl1cmFua3YyXCJ9KTtcblx0XHRkb25hdGlvbkJ1dHRvbi5pbm5lckhUTUwgPSBgPGltZyBzcmM9XCJodHRwczovL2ltZy5idXltZWFjb2ZmZWUuY29tL2J1dHRvbi1hcGkvP3RleHQ9QnV5IG1lIGEgY29mZmVlJmVtb2ppPSZzbHVnPW1heXVyYW5rdjImYnV0dG9uX2NvbG91cj1lM2U3ZWZhMCZmb250X2NvbG91cj0yNjI2MjYmZm9udF9mYW1pbHk9SW50ZXImb3V0bGluZV9jb2xvdXI9MjYyNjI2JmNvZmZlZV9jb2xvdXI9YTA1MjJkXCIgaGVpZ2h0PVwiNDJweFwiPmA7XG5cdFx0ZG9uYXRpb25EaXYuYXBwZW5kQ2hpbGQoZG9uYXRpb25CdXR0b24pO1xuXHR9XG5cblx0Ly8gU2V0dGluZyBDcmVhdGlvblxuXHRjcmVhdGVQaWNrcihwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZzogU2V0dGluZywgaWQ6IHN0cmluZywgZ2V0UmVsZXZhbnRUaGVtZUNvbG91cjogKHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKT0+Q29sb3VyLCBzYXZlUmVsZXZhbnRUaGVtZUNvbG91cjogKHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpPT52b2lkLCBkaXNhYmxlZD86ICgpPT5ib29sZWFuKSB7XG5cdFx0bGV0IHBpY2tyOiBQaWNrclJlc2V0dGFibGUgPSBuZXcgUGlja3JSZXNldHRhYmxlKHBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLGdldFJlbGV2YW50VGhlbWVDb2xvdXIsc2F2ZVJlbGV2YW50VGhlbWVDb2xvdXIpO1xuXHRcdHBpY2tyXG5cdFx0XHQub24oJ3Nob3cnLCAoY29sb3VyOiBQaWNrci5IU1ZhQ29sb3IsIGluc3RhbmNlOiBQaWNrcikgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIGRpc2FibGVkICE9PSAndW5kZWZpbmVkJyAmJiBkaXNhYmxlZCgpKVxuXHRcdFx0XHRcdGluc3RhbmNlLmhpZGUoKVxuXHRcdFx0XHQvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChpbnN0YW5jZS5nZXRSb290KCkgYXMgYW55KS5pbnRlcmFjdGlvbi5yZXN1bHQuc2VsZWN0KCkpKVxuXHRcdFx0fSlcblx0XHRcdC5vbignc2F2ZScsIChjb2xvdXI6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzYXZlZENvbG91cjogQ29sb3VyID0gYCMke2NvbG91ci50b0hFWEEoKS50b1N0cmluZygpLnN1YnN0cmluZygxKX1gO1xuXHRcdFx0XHRpbnN0YW5jZS5oaWRlKCk7XG5cdFx0XHRcdGluc3RhbmNlLmFkZFN3YXRjaChzYXZlZENvbG91cik7XG5cdFx0XHRcdGluc3RhbmNlLnNhdmVDb2xvdXIoc2F2ZWRDb2xvdXIpO1xuXHRcdFx0fSlcblx0XHRcdC5vbignY2FuY2VsJywgKGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtpbnN0YW5jZS5oaWRlKCl9KTtcblx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtwaWNrci5yZXNldEJ1dHRvbiA9IGJ1dHRvblxuXHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0LnNldERpc2FibGVkKHR5cGVvZiBkaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGlzYWJsZWQoKSlcblx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3VyJylcblx0XHRcdC5vbkNsaWNrKCgpID0+IHtwaWNrci5yZXNldENvbG91cigpfSk7XG5cdFx0fSk7XG5cdFx0dGhpcy5waWNrcnNbaWRdPXBpY2tyO1xuXHR9XG5cdFxuXHQvLyBTZXR0aW5nIFVwZGF0ZXNcblx0dXBkYXRlRHJvcGRvd24oZHJvcGRvd246IERyb3Bkb3duQ29tcG9uZW50LCBzZXR0aW5nczogQ29kZVN0eWxlclNldHRpbmdzKSB7XG5cdFx0ZHJvcGRvd24uc2VsZWN0RWwuZW1wdHkoKTtcblx0XHRPYmplY3Qua2V5cyhzZXR0aW5ncy50aGVtZXMpLmZvckVhY2goKHRoZW1lX25hbWU6IHN0cmluZykgPT4ge1xuXHRcdFx0ZHJvcGRvd24uYWRkT3B0aW9uKHRoZW1lX25hbWUsIHRoZW1lX25hbWUpOyAgICAgICAgICAgIFxuXHRcdH0pXG5cdFx0ZHJvcGRvd24uc2V0VmFsdWUoc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSk7XG5cdH1cblx0dXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQpIHtcblx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIuZW1wdHkoKTtcblx0XHRPYmplY3Qua2V5cyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3Vycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cykuZm9yRWFjaCgoYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lKSA9PiB7XG5cdFx0XHRuZXcgU2V0dGluZyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpXG5cdFx0XHRcdC5zZXROYW1lKGFsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZSlcblx0XHRcdFx0LnNldERlc2MoYFRvIGhpZ2hsaWdodCBsaW5lcyB3aXRoIHRoaXMgaGlnaGxpZ2h0LCB1c2UgdGhlICR7YWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lfSBwYXJhbWV0ZXIuYClcblx0XHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4sYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyLHNldHRpbmcsXG5cdFx0XHRcdFx0XHRgYWx0ZXJuYXRpdmVfaGlnaGxpZ2h0XyR7YWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lfWAsXG5cdFx0XHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IGFsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZSBpbiByZWxldmFudFRoZW1lQ29sb3Vycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cz9yZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdOnRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV0sXG5cdFx0XHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV0gPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdFx0LnNldEljb24oXCJ0cmFzaFwiKVxuXHRcdFx0XHRcdFx0LnNldFRvb2x0aXAoXCJEZWxldGUgaGlnaGxpZ2h0XCIpXG5cdFx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3Vycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3Vycy5kYXJrLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV1cblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShgUmVtb3ZlZCBoaWdobGlnaHQgXCIke2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZX1cIi5gKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0XHRcdHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG5cdFx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG59XG5cbmNsYXNzIFBpY2tyUmVzZXR0YWJsZSBleHRlbmRzIFBpY2tyIHtcblx0c2F2ZUNvbG91cjogKHNhdmVDb2xvdXI6IENvbG91cik9PnZvaWQ7XG5cdHJlc2V0Q29sb3VyOiAoKT0+dm9pZDtcblx0Z2V0Q3VycmVudENvbG91cjogKGFjY2Vzc1RoZW1lOiBib29sZWFuKT0+dm9pZDtcblx0cmVzZXRCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuXG5cdGNvbnN0cnVjdG9yKHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbiwgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzZXR0aW5nOiBTZXR0aW5nLCBnZXRSZWxldmFudFRoZW1lQ29sb3VyOiAocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpPT5Db2xvdXIsIHNhdmVSZWxldmFudFRoZW1lQ29sb3VyOiAocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cik9PnZvaWQsIHRvb2x0aXA/OiBzdHJpbmcpIHtcblx0XHRjb25zdCBzZXR0aW5nczogUGlja3IuT3B0aW9ucyA9IHtcblx0XHRcdGVsOiBzZXR0aW5nLmNvbnRyb2xFbC5jcmVhdGVEaXYoe2NsczogXCJwaWNrZXJcIn0pLFxuXHRcdFx0dGhlbWU6ICduYW5vJyxcblx0XHRcdGRlZmF1bHQ6IGdldENvbG91cihnZXRSZWxldmFudFRoZW1lQ29sb3VyKHBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3VycykpLFxuXHRcdFx0cG9zaXRpb246IFwibGVmdC1taWRkbGVcIixcblx0XHRcdGxvY2tPcGFjaXR5OiBmYWxzZSxcblx0XHRcdGNvbXBvbmVudHM6IHtcblx0XHRcdFx0cHJldmlldzogdHJ1ZSxcblx0XHRcdFx0aHVlOiB0cnVlLFxuXHRcdFx0XHRvcGFjaXR5OiB0cnVlLFxuXHRcdFx0XHRpbnRlcmFjdGlvbjoge1xuXHRcdFx0XHRcdGhleDogdHJ1ZSxcblx0XHRcdFx0XHRyZ2JhOiB0cnVlLFxuXHRcdFx0XHRcdGhzbGE6IGZhbHNlLFxuXHRcdFx0XHRcdGlucHV0OiB0cnVlLFxuXHRcdFx0XHRcdGNhbmNlbDogdHJ1ZSxcblx0XHRcdFx0XHRzYXZlOiB0cnVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdGkxOG46IHtcblx0XHRcdFx0J3VpOmRpYWxvZyc6ICdDb2xvdXIgcGlja2VyIGRpYWxvZycsXG5cdFx0XHRcdCdidG46dG9nZ2xlJzogKHR5cGVvZiB0b29sdGlwICE9PSAndW5kZWZpbmVkJyk/dG9vbHRpcDonU2VsZWN0IGNvbG91cicsXG5cdFx0XHRcdCdidG46c3dhdGNoJzogJ0NvbG91ciBzd2F0Y2gnLFxuXHRcdFx0XHQnYnRuOmxhc3QtY29sb3InOiAnVXNlIHByZXZpb3VzIGNvbG91cicsXG5cdFx0XHR9XG5cdFx0fTtcblx0XHRpZiAoY29udGFpbmVyRWwucGFyZW50RWxlbWVudCAhPT0gbnVsbClcblx0XHRcdHNldHRpbmdzLmNvbnRhaW5lciA9IGNvbnRhaW5lckVsLnBhcmVudEVsZW1lbnQ7XG5cdFx0c3VwZXIoc2V0dGluZ3MpO1xuXHRcdHRoaXMuc2F2ZUNvbG91ciA9IChzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtcblx0XHRcdHNhdmVSZWxldmFudFRoZW1lQ29sb3VyKHBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3VycyxzYXZlQ29sb3VyKTtcblx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHR9O1xuXHRcdHRoaXMucmVzZXRDb2xvdXIgPSAoKSA9PiB7XG5cdFx0XHRjb25zdCByZXNldENvbG91cjogQ29sb3VyID0gZ2V0UmVsZXZhbnRUaGVtZUNvbG91cihwbHVnaW4uc2V0dGluZ3MudGhlbWVzW3BsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5jb2xvdXJzKTtcblx0XHRcdHRoaXMuc2V0Q29sb3IoZ2V0Q29sb3VyKHJlc2V0Q29sb3VyKSk7XG5cdFx0XHR0aGlzLnNhdmVDb2xvdXIocmVzZXRDb2xvdXIpO1xuXHRcdH07XG5cdH1cbn1cblxuLy8gQ29sb3VyIE1hbmFnZW1lbnRcbmZ1bmN0aW9uIGdldFJhbmRvbUNvbG91cigpOiBDb2xvdXIge1xuXHRjb25zdCBsZXR0ZXJzID0gXCIwMTIzNDU2Nzg5QUJDREVGXCI7XG5cdGxldCBjb2xvdXIgPSBcIlwiO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKylcblx0XHRjb2xvdXIgKz0gbGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNildO1xuXHRyZXR1cm4gYCMke2NvbG91cn1GRmA7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNDc3MocG9zc2libGVDc3M6IHN0cmluZyk6IHBvc3NpYmxlQ3NzIGlzIENTUyB7XG5cdHJldHVybiBwb3NzaWJsZUNzcy5zdGFydHNXaXRoKCctLScpICYmIHR5cGVvZiBwb3NzaWJsZUNzcyA9PT0gJ3N0cmluZyc7XG59XG5mdW5jdGlvbiBjYWxjKGNhbGNTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHNwbGl0U3RyaW5nID0gY2FsY1N0cmluZy50cmltKCkucmVwbGFjZSgvKFxcZCopJS9nLCckMScpLnNwbGl0KCcgJyk7XG5cdGNvbnN0IG9wZXJhdG9yczoge1trZXk6IHN0cmluZ106IChudW0xOm51bWJlciwgbnVtMjpudW1iZXIpID0+IG51bWJlcn0gPSB7XG5cdFx0JysnOiAobnVtMTpudW1iZXIsIG51bTI6bnVtYmVyKTpudW1iZXIgPT4gTWF0aC5tYXgobnVtMStudW0yLDApLFxuXHRcdCctJzogKG51bTE6bnVtYmVyICxudW0yOm51bWJlcik6bnVtYmVyID0+IE1hdGgubWF4KG51bTEtbnVtMiwwKSxcblx0fVxuXHRpZiAoc3BsaXRTdHJpbmcubGVuZ3RoID09PSAzKVxuXHRcdGlmIChzcGxpdFN0cmluZ1sxXSBpbiBvcGVyYXRvcnMpXG5cdFx0XHRyZXR1cm4gYCR7b3BlcmF0b3JzW3NwbGl0U3RyaW5nWzFdXShwYXJzZUZsb2F0KHNwbGl0U3RyaW5nWzBdKSxwYXJzZUZsb2F0KHNwbGl0U3RyaW5nWzJdKSl9JWBcblx0XG5cdGNvbnNvbGUud2FybignV2FybmluZzogQ291bGRuXFwndCBwYXJzZSBjYWxjIHN0cmluZycpO1xuXHRyZXR1cm4gY2FsY1N0cmluZztcbn1cbmZ1bmN0aW9uIGdldENzc1ZhcmlhYmxlKGNzc1ZhcmlhYmxlOiBDU1MpOiBIRVgge1xuXHRsZXQgdmFyaWFibGVWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoY3NzVmFyaWFibGUpLnRyaW0oKTtcblx0aWYgKHR5cGVvZiB2YXJpYWJsZVZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhcmlhYmxlVmFsdWUudHJpbSgpLnN0YXJ0c1dpdGgoJyMnKSlcblx0XHRyZXR1cm4gYCMke3ZhcmlhYmxlVmFsdWUudHJpbSgpLnN1YnN0cmluZygxKX1gO1xuXHRlbHNlIGlmICh2YXJpYWJsZVZhbHVlLnN0YXJ0c1dpdGgoJ3JnYicpKVxuXHRcdHJldHVybiBgIyR7Q29sb3JUcmFuc2xhdG9yLnRvSEVYQSh2YXJpYWJsZVZhbHVlLnJlcGxhY2UoL2NhbGNcXCgoLio/KVxcKS9nLChtYXRjaCxjYXB0dXJlKT0+Y2FsYyhjYXB0dXJlKSkpLnN1YnN0cmluZygxKX1gO1xuXHRlbHNlIGlmICh2YXJpYWJsZVZhbHVlLnN0YXJ0c1dpdGgoJ2hzbCcpKVxuXHRcdHJldHVybiBgIyR7Q29sb3JUcmFuc2xhdG9yLnRvSEVYQSh2YXJpYWJsZVZhbHVlLnJlcGxhY2UoL2NhbGNcXCgoLio/KVxcKS9nLChtYXRjaCxjYXB0dXJlKT0+Y2FsYyhjYXB0dXJlKSkpLnN1YnN0cmluZygxKX1gO1xuXHRlbHNlXG5cdFx0Y29uc29sZS53YXJuKGBXYXJuaW5nOiBDb3VsZG4ndCBkZXRlcm1pbmUgY29sb3VyIGZvcm1hdCAtICR7dmFyaWFibGVWYWx1ZX1gKTtcblx0cmV0dXJuIGAjJHtDb2xvclRyYW5zbGF0b3IudG9IRVhBKHZhcmlhYmxlVmFsdWUpLnN1YnN0cmluZygxKX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG91cih0aGVtZUNvbG91cjogQ29sb3VyKTogQ29sb3VyIHtcblx0cmV0dXJuIGlzQ3NzKHRoZW1lQ29sb3VyKT9nZXRDc3NWYXJpYWJsZSh0aGVtZUNvbG91cik6dGhlbWVDb2xvdXI7O1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50TW9kZSgpIHtcblx0Y29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcblx0aWYgKGJvZHkgIT09IG51bGwpe1xuXHRcdGlmIChib2R5LmNsYXNzTGlzdC5jb250YWlucygndGhlbWUtbGlnaHQnKSlcblx0XHRcdHJldHVybiBcImxpZ2h0XCI7XG5cdFx0ZWxzZSBpZiAoYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3RoZW1lLWRhcmsnKSlcblx0XHRcdHJldHVybiBcImRhcmtcIjtcblx0fVxuXHRjb25zb2xlLndhcm4oJ1dhcm5pbmc6IENvdWxkblxcJ3QgZ2V0IGN1cnJlbnQgdGhlbWUnKTtcblx0cmV0dXJuIFwibGlnaHRcIjtcbn1cbiIsICJ2YXIgdD1mdW5jdGlvbigpe3JldHVybiB0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIGU9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiYodFtpXT1lW2ldKTtyZXR1cm4gdH0sdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGUodCxlLHIpe2lmKHJ8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbixpPTAsbz1lLmxlbmd0aDtpPG87aSsrKSFuJiZpIGluIGV8fChufHwobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDAsaSkpLG5baV09ZVtpXSk7cmV0dXJuIHQuY29uY2F0KG58fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX12YXIgcixuLGksbzshZnVuY3Rpb24odCl7dC5IRVg9XCJIRVhcIix0LlJHQj1cIlJHQlwiLHQuSFNMPVwiSFNMXCIsdC5DTVlLPVwiQ01ZS1wifShyfHwocj17fSkpLGZ1bmN0aW9uKHQpe3QuQU5BTE9HT1VTPVwiQU5BTE9HT1VTXCIsdC5DT01QTEVNRU5UQVJZPVwiQ09NUExFTUVOVEFSWVwiLHQuU1BMSVRfQ09NUExFTUVOVEFSWT1cIlNQTElUX0NPTVBMRU1FTlRBUllcIix0LlRSSUFESUM9XCJUUklBRElDXCIsdC5URVRSQURJQz1cIlRFVFJBRElDXCIsdC5TUVVBUkU9XCJTUVVBUkVcIn0obnx8KG49e30pKSxmdW5jdGlvbih0KXt0LkFERElUSVZFPVwiQURESVRJVkVcIix0LlNVQlRSQUNUSVZFPVwiU1VCVFJBQ1RJVkVcIn0oaXx8KGk9e30pKSxmdW5jdGlvbih0KXt0LmJsYWNrPVwiIzAwMDAwMFwiLHQuc2lsdmVyPVwiI0MwQzBDMFwiLHQuZ3JheT1cIiM4MDgwODBcIix0LndoaXRlPVwiI0ZGRkZGRlwiLHQubWFyb29uPVwiIzgwMDAwMFwiLHQucmVkPVwiI0ZGMDAwMFwiLHQucHVycGxlPVwiIzgwMDA4MFwiLHQuZnVjaHNpYT1cIiNGRjAwRkZcIix0LmdyZWVuPVwiIzAwODAwMFwiLHQubGltZT1cIiMwMEZGMDBcIix0Lm9saXZlPVwiIzgwODAwMFwiLHQueWVsbG93PVwiI0ZGRkYwMFwiLHQubmF2eT1cIiMwMDAwODBcIix0LmJsdWU9XCIjMDAwMEZGXCIsdC50ZWFsPVwiIzAwODA4MFwiLHQuYXF1YT1cIiMwMEZGRkZcIix0Lm9yYW5nZT1cIiNGRkE1MDBcIix0LmFsaWNlYmx1ZT1cIiNGMEY4RkZcIix0LmFudGlxdWV3aGl0ZT1cIiNGQUVCRDdcIix0LmFxdWFtYXJpbmU9XCIjN0ZGRkQ0XCIsdC5henVyZT1cIiNGMEZGRkZcIix0LmJlaWdlPVwiI0Y1RjVEQ1wiLHQuYmlzcXVlPVwiI0ZGRTRDNFwiLHQuYmxhbmNoZWRhbG1vbmQ9XCIjRkZFQkNEXCIsdC5ibHVldmlvbGV0PVwiIzhBMkJFMlwiLHQuYnJvd249XCIjQTUyQTJBXCIsdC5idXJseXdvb2Q9XCIjREVCODg3XCIsdC5jYWRldGJsdWU9XCIjNUY5RUEwXCIsdC5jaGFydHJldXNlPVwiIzdGRkYwMFwiLHQuY2hvY29sYXRlPVwiI0QyNjkxRVwiLHQuY29yYWw9XCIjRkY3RjUwXCIsdC5jb3JuZmxvd2VyYmx1ZT1cIiM2NDk1RURcIix0LmNvcm5zaWxrPVwiI0ZGRjhEQ1wiLHQuY3JpbXNvbj1cIiNEQzE0M0NcIix0LmN5YW49XCIjMDBGRkZGXCIsdC5kYXJrYmx1ZT1cIiMwMDAwOEJcIix0LmRhcmtjeWFuPVwiIzAwOEI4QlwiLHQuZGFya2dvbGRlbnJvZD1cIiNCODg2MEJcIix0LmRhcmtncmF5PVwiI0E5QTlBOVwiLHQuZGFya2dyZWVuPVwiIzAwNjQwMFwiLHQuZGFya2dyZXk9XCIjQTlBOUE5XCIsdC5kYXJra2hha2k9XCIjQkRCNzZCXCIsdC5kYXJrbWFnZW50YT1cIiM4QjAwOEJcIix0LmRhcmtvbGl2ZWdyZWVuPVwiIzU1NkIyRlwiLHQuZGFya29yYW5nZT1cIiNGRjhDMDBcIix0LmRhcmtvcmNoaWQ9XCIjOTkzMkNDXCIsdC5kYXJrcmVkPVwiIzhCMDAwMFwiLHQuZGFya3NhbG1vbj1cIiNFOTk2N0FcIix0LmRhcmtzZWFncmVlbj1cIiM4RkJDOEZcIix0LmRhcmtzbGF0ZWJsdWU9XCIjNDgzRDhCXCIsdC5kYXJrc2xhdGVncmF5PVwiIzJGNEY0RlwiLHQuZGFya3NsYXRlZ3JleT1cIiMyRjRGNEZcIix0LmRhcmt0dXJxdW9pc2U9XCIjMDBDRUQxXCIsdC5kYXJrdmlvbGV0PVwiIzk0MDBEM1wiLHQuZGVlcHBpbms9XCIjRkYxNDkzXCIsdC5kZWVwc2t5Ymx1ZT1cIiMwMEJGRkZcIix0LmRpbWdyYXk9XCIjNjk2OTY5XCIsdC5kaW1ncmV5PVwiIzY5Njk2OVwiLHQuZG9kZ2VyYmx1ZT1cIiMxRTkwRkZcIix0LmZpcmVicmljaz1cIiNCMjIyMjJcIix0LmZsb3JhbHdoaXRlPVwiI0ZGRkFGMFwiLHQuZm9yZXN0Z3JlZW49XCIjMjI4QjIyXCIsdC5nYWluc2Jvcm89XCIjRENEQ0RDXCIsdC5naG9zdHdoaXRlPVwiI0Y4RjhGRlwiLHQuZ29sZD1cIiNGRkQ3MDBcIix0LmdvbGRlbnJvZD1cIiNEQUE1MjBcIix0LmdyZWVueWVsbG93PVwiI0FERkYyRlwiLHQuZ3JleT1cIiM4MDgwODBcIix0LmhvbmV5ZGV3PVwiI0YwRkZGMFwiLHQuaG90cGluaz1cIiNGRjY5QjRcIix0LmluZGlhbnJlZD1cIiNDRDVDNUNcIix0LmluZGlnbz1cIiM0QjAwODJcIix0Lml2b3J5PVwiI0ZGRkZGMFwiLHQua2hha2k9XCIjRjBFNjhDXCIsdC5sYXZlbmRlcj1cIiNFNkU2RkFcIix0LmxhdmVuZGVyYmx1c2g9XCIjRkZGMEY1XCIsdC5sYXduZ3JlZW49XCIjN0NGQzAwXCIsdC5sZW1vbmNoaWZmb249XCIjRkZGQUNEXCIsdC5saWdodGJsdWU9XCIjQUREOEU2XCIsdC5saWdodGNvcmFsPVwiI0YwODA4MFwiLHQubGlnaHRjeWFuPVwiI0UwRkZGRlwiLHQubGlnaHRnb2xkZW5yb2R5ZWxsb3c9XCIjRkFGQUQyXCIsdC5saWdodGdyYXk9XCIjRDNEM0QzXCIsdC5saWdodGdyZWVuPVwiIzkwRUU5MFwiLHQubGlnaHRncmV5PVwiI0QzRDNEM1wiLHQubGlnaHRwaW5rPVwiI0ZGQjZDMVwiLHQubGlnaHRzYWxtb249XCIjRkZBMDdBXCIsdC5saWdodHNlYWdyZWVuPVwiIzIwQjJBQVwiLHQubGlnaHRza3libHVlPVwiIzg3Q0VGQVwiLHQubGlnaHRzbGF0ZWdyYXk9XCIjNzc4ODk5XCIsdC5saWdodHNsYXRlZ3JleT1cIiM3Nzg4OTlcIix0LmxpZ2h0c3RlZWxibHVlPVwiI0IwQzRERVwiLHQubGlnaHR5ZWxsb3c9XCIjRkZGRkUwXCIsdC5saW1lZ3JlZW49XCIjMzJDRDMyXCIsdC5saW5lbj1cIiNGQUYwRTZcIix0Lm1hZ2VudGE9XCIjRkYwMEZGXCIsdC5tZWRpdW1hcXVhbWFyaW5lPVwiIzY2Q0RBQVwiLHQubWVkaXVtYmx1ZT1cIiMwMDAwQ0RcIix0Lm1lZGl1bW9yY2hpZD1cIiNCQTU1RDNcIix0Lm1lZGl1bXB1cnBsZT1cIiM5MzcwREJcIix0Lm1lZGl1bXNlYWdyZWVuPVwiIzNDQjM3MVwiLHQubWVkaXVtc2xhdGVibHVlPVwiIzdCNjhFRVwiLHQubWVkaXVtc3ByaW5nZ3JlZW49XCIjMDBGQTlBXCIsdC5tZWRpdW10dXJxdW9pc2U9XCIjNDhEMUNDXCIsdC5tZWRpdW12aW9sZXRyZWQ9XCIjQzcxNTg1XCIsdC5taWRuaWdodGJsdWU9XCIjMTkxOTcwXCIsdC5taW50Y3JlYW09XCIjRjVGRkZBXCIsdC5taXN0eXJvc2U9XCIjRkZFNEUxXCIsdC5tb2NjYXNpbj1cIiNGRkU0QjVcIix0Lm5hdmFqb3doaXRlPVwiI0ZGREVBRFwiLHQub2xkbGFjZT1cIiNGREY1RTZcIix0Lm9saXZlZHJhYj1cIiM2QjhFMjNcIix0Lm9yYW5nZXJlZD1cIiNGRjQ1MDBcIix0Lm9yY2hpZD1cIiNEQTcwRDZcIix0LnBhbGVnb2xkZW5yb2Q9XCIjRUVFOEFBXCIsdC5wYWxlZ3JlZW49XCIjOThGQjk4XCIsdC5wYWxldHVycXVvaXNlPVwiI0FGRUVFRVwiLHQucGFsZXZpb2xldHJlZD1cIiNEQjcwOTNcIix0LnBhcGF5YXdoaXA9XCIjRkZFRkQ1XCIsdC5wZWFjaHB1ZmY9XCIjRkZEQUI5XCIsdC5wZXJ1PVwiI0NEODUzRlwiLHQucGluaz1cIiNGRkMwQ0JcIix0LnBsdW09XCIjRERBMEREXCIsdC5wb3dkZXJibHVlPVwiI0IwRTBFNlwiLHQucm9zeWJyb3duPVwiI0JDOEY4RlwiLHQucm95YWxibHVlPVwiIzQxNjlFMVwiLHQuc2FkZGxlYnJvd249XCIjOEI0NTEzXCIsdC5zYWxtb249XCIjRkE4MDcyXCIsdC5zYW5keWJyb3duPVwiI0Y0QTQ2MFwiLHQuc2VhZ3JlZW49XCIjMkU4QjU3XCIsdC5zZWFzaGVsbD1cIiNGRkY1RUVcIix0LnNpZW5uYT1cIiNBMDUyMkRcIix0LnNreWJsdWU9XCIjODdDRUVCXCIsdC5zbGF0ZWJsdWU9XCIjNkE1QUNEXCIsdC5zbGF0ZWdyYXk9XCIjNzA4MDkwXCIsdC5zbGF0ZWdyZXk9XCIjNzA4MDkwXCIsdC5zbm93PVwiI0ZGRkFGQVwiLHQuc3ByaW5nZ3JlZW49XCIjMDBGRjdGXCIsdC5zdGVlbGJsdWU9XCIjNDY4MkI0XCIsdC50YW49XCIjRDJCNDhDXCIsdC50aGlzdGxlPVwiI0Q4QkZEOFwiLHQudG9tYXRvPVwiI0ZGNjM0N1wiLHQudHVycXVvaXNlPVwiIzQwRTBEMFwiLHQudmlvbGV0PVwiI0VFODJFRVwiLHQud2hlYXQ9XCIjRjVERUIzXCIsdC53aGl0ZXNtb2tlPVwiI0Y1RjVGNVwiLHQueWVsbG93Z3JlZW49XCIjOUFDRDMyXCIsdC5yZWJlY2NhcHVycGxlPVwiIzY2MzM5OVwifShvfHwobz17fSkpO3ZhciBhLHUsYyxzLGQsaCxsLGY9T2JqZWN0LmtleXMobyksZz17SEVYOltcInJcIixcImdcIixcImJcIixcImFcIl0sUkdCOltcInJcIixcImdcIixcImJcIixcImFcIl0sSFNMOltcImhcIixcInNcIixcImxcIixcImFcIl0sQ01ZSzpbXCJjXCIsXCJtXCIsXCJ5XCIsXCJrXCIsXCJhXCJdfSxwPXtCR1I6ci5SR0IsQUJHUjpyLlJHQixITFM6ci5IU0wsQUhMUzpyLkhTTCxDS01ZOnIuQ01ZSyxBQ0tNWTpyLkNNWUt9LGI9KChhPXt9KVtyLkhFWF09L14jKD86KFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKT98KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KT8pJC9pLGFbci5SR0JdPS9ecmdiYT9cXHMqXFwoXFxzKig/OigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KSg/OlxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSk/fCgoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKlxcL1xccyooKD86XFxkKlxcLik/XFxkKyU/KSk/KVxccypcXCkkLyxhW3IuSFNMXT0vXmhzbGE/XFxzKlxcKFxccyooPzooLT8oPzpcXGQqXFwuKT9cXGQrKD86ZGVnfGdyYWR8cmFkfHR1cm4pPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyklXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspJSg/OlxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSk/fCgtPyg/OlxcZCpcXC4pP1xcZCsoPzpkZWd8Z3JhZHxyYWR8dHVybik/KVxccyooKD86XFxkKlxcLik/XFxkKyklXFxzKigoPzpcXGQqXFwuKT9cXGQrKSUoPzpcXHMqXFwvXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKT8pXFxzKlxcKSQvLGFbci5DTVlLXT0vXig/OmRldmljZS1jbXlrfGNteWspXFxzKlxcKFxccyooPzooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KSg/OlxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSk/fCgoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKlxcL1xccyooKD86XFxkKlxcLik/XFxkKyU/KSk/KVxccypcXCkkLyxhKSxGPS9eKC0/KD86XFxkKlxcLik/XFxkKykoKD86ZGVnfGdyYWR8cmFkfHR1cm4pPykkLyxtPS9eKFxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKyklJC8seT0vXjB4KFthLWZcXGRdezEsMn0pJC9pLEE9L1xceyhcXGQrKVxcfS9nLEU9XCJUaGUgcHJvdmlkZWQgc3RyaW5nIGNvbG9yIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlY3QgZm9ybWF0XCIsdj1cIlRoZSBwcm92aWRlZCBjb2xvciBvYmplY3QgZG9lc24ndCBoYXZlIHRoZSBwcm9wZXIga2V5cyBvciBmb3JtYXRcIixIPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxCPWZ1bmN0aW9uKHQpe3JldHVybitcIlwiLmNvbmNhdCh0KS5yZXBsYWNlKG0sXCIkMVwiKX0sQz1mdW5jdGlvbih0KXtyZXR1cm4gbS50ZXN0KFwiXCIuY29uY2F0KHQpKT9CKHQpOk1hdGgubWluKCt0LDEwMCl9LE09ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQrPXQpLHBhcnNlSW50KHQsMTYpfSxSPWZ1bmN0aW9uKHQpe3ZhciBlPUcodCwwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtyZXR1cm4gMT09PWUubGVuZ3RoP1wiMHgwXCIuY29uY2F0KGUpOlwiMHhcIi5jb25jYXQoZSl9LEQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLCFlJiZtLnRlc3QodCk/TWF0aC5taW4oMjU1KkIodCkvMTAwLDI1NSk6eS50ZXN0KHQpPygzPT09dC5sZW5ndGgmJih0Kz10LnNsaWNlKC0xKSksZT9HKHQpLzI1NTpHKHQpKTpNYXRoLm1pbigrdCxlPzE6MjU1KX0sUz1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4obS50ZXN0KHQpP0IodCkvMTAwOit0LDEpfSxMPWZ1bmN0aW9uKHQpe3JldHVybiBlKFtdLHQsITApLnNvcnQoKS5qb2luKFwiXCIpLnRvVXBwZXJDYXNlKCl9LEc9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT02KTt2YXIgcj1NYXRoLnBvdygxMCxlKTtyZXR1cm4gTWF0aC5yb3VuZCgrdCpyKS9yfSxrPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LHIpKX0sTz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHI8MCYmKHIrPTYpLHI+PTYmJihyLT02KSxHKHI8MT8yNTUqKChlLXQpKnIrdCk6cjwzPzI1NSplOnI8ND8yNTUqKChlLXQpKig0LXIpK3QpOjI1NSp0KX0sWD1mdW5jdGlvbih0LGUscil7ZS89MTAwO3ZhciBuPShyLz0xMDApPD0uNT9yKihlKzEpOnIrZS1yKmUsaT0yKnItbjtyZXR1cm57cjpPKGksbiwodC89NjApKzIpLGc6TyhpLG4sdCksYjpPKGksbix0LTIpfX0sWT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm57cjpHKDI1NSooMS10KSoobj0xLW4pKSxnOkcoMjU1KigxLWUpKm4pLGI6RygyNTUqKDEtcikqbil9fSxqPWZ1bmN0aW9uKHQsZSxyKXt0Lz0yNTUsZS89MjU1LHIvPTI1NTt2YXIgbj0xLU1hdGgubWF4KHQsZSxyKSxpPTEtbixvPWkmJihpLWUpL2ksYT1pJiYoaS1yKS9pO3JldHVybntjOkcoMTAwKihpJiYoaS10KS9pKSksbTpHKDEwMCpvKSx5OkcoMTAwKmEpLGs6RygxMDAqbil9fSxLPWZ1bmN0aW9uKHQsZSxyLG4pe3ZvaWQgMD09PW4mJihuPTEpLHQvPTI1NSxlLz0yNTUsci89MjU1LG49TWF0aC5taW4obiwxKTt2YXIgaT1NYXRoLm1heCh0LGUsciksbz1NYXRoLm1pbih0LGUsciksYT1pLW8sdT0wLGM9MCxzPShpK28pLzI7aWYoMCE9PWEpe3N3aXRjaChpKXtjYXNlIHQ6dT0oZS1yKS9hJTY7YnJlYWs7Y2FzZSBlOnU9KHItdCkvYSsyO2JyZWFrO2Nhc2Ugcjp1PSh0LWUpL2ErNH0odT1HKDYwKnUpKTwwJiYodSs9MzYwKSxjPWEvKDEtTWF0aC5hYnMoMipzLTEpKX1yZXR1cm57aDp1LHM6RygxMDAqYyksbDpHKDEwMCpzKSxhOm59fSxJPWZ1bmN0aW9uKHQsZSl7aWYodDwwJiYodCs9MzYwKSx0PjM2MCYmKHQtPTM2MCksMzYwPT09dHx8MD09PXQpcmV0dXJuIHQ7dmFyIHI9W1swLDEyMF0sWzEyMCwxODBdLFsxODAsMjQwXSxbMjQwLDM2MF1dLG49W1swLDYwXSxbNjAsMTIwXSxbMTIwLDI0MF0sWzI0MCwzNjBdXSxpPWU/bjpyLG89MCxhPTAsdT0wLGM9MDtyZXR1cm4oZT9yOm4pLmZpbmQoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQ+PWVbMF0mJnQ8ZVsxXSYmKG89ZVswXSxhPWVbMV0sdT1pW3JdWzBdLGM9aVtyXVsxXSwhMCl9KSksdSsoYy11KS8oYS1vKSoodC1vKX0sUD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgcj1MKE9iamVjdC5rZXlzKHQpKTtyZXR1cm4gZ1twW3JdXS5yZWR1Y2UoKGZ1bmN0aW9uKHIsbil7dmFyIGksbyxhPXRbbl07cmV0dXJuIHZvaWQgMCE9PWEmJihlP3IucHVzaCgoaT1HKGEsMCksMT09PShvPUcoaSwwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkubGVuZ3RoJiYobz1cIjBcIi5jb25jYXQobykpLG8pKTpyLnB1c2goYSkpLHJ9KSxbXSl9LFQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yZXBsYWNlKEEsKGZ1bmN0aW9uKHQscil7cmV0dXJuXCJcIi5jb25jYXQoZVsrci0xXSl9KSl9LHc9KCh1PXt9KVtyLkhFWF09ZnVuY3Rpb24odCl7dmFyIGU9UCh0LCEwKSxyPTQ9PT1lLmxlbmd0aD9cIiN7MX17Mn17M317NH1cIjpcIiN7MX17Mn17M31cIjtyZXR1cm4gVChyLGUpfSx1W3IuUkdCXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQpLHI9ND09PWUubGVuZ3RoP1wicmdiYSh7MX0sezJ9LHszfSx7NH0pXCI6XCJyZ2IoezF9LHsyfSx7M30pXCI7cmV0dXJuIFQocixlKX0sdVtyLkhTTF09ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPTQ9PT1lLmxlbmd0aD9cImhzbGEoezF9LHsyfSUsezN9JSx7NH0pXCI6XCJoc2woezF9LHsyfSUsezN9JSlcIjtyZXR1cm4gVChyLGUpfSx1W3IuQ01ZS109ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPTU9PT1lLmxlbmd0aD9cImNteWsoezF9JSx7Mn0lLHszfSUsezR9JSx7NX0pXCI6XCJjbXlrKHsxfSUsezJ9JSx7M30lLHs0fSUpXCI7cmV0dXJuIFQocixlKX0sdSkseD1mdW5jdGlvbih0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7dmFyIGU9dC5tYXRjaChGKSxyPStlWzFdO3N3aXRjaChlWzJdKXtjYXNlXCJyYWRcIjp0PUcoMTgwKnIvTWF0aC5QSSk7YnJlYWs7Y2FzZVwidHVyblwiOnQ9RygzNjAqcik7YnJlYWs7ZGVmYXVsdDp0PXJ9fXJldHVybih0PjM2MHx8dDwwKSYmKHQtPTM2MCpNYXRoLmZsb29yKHQvMzYwKSksdH0sTj1mdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bS50ZXN0KHQpP0IodCkvMTAwOit0KSxpc05hTigrdCl8fHQ+MT8xOkcodCl9LFY9ZnVuY3Rpb24ocixuLG8pe3JldHVybiBuLnJlZHVjZSgoZnVuY3Rpb24obixhKXtyZXR1cm4gZShlKFtdLG4sITApLFt0KHQoe30scikse2g6bz09PWkuQURESVRJVkU/eChyLmgrYSk6eChJKEkoci5oLCExKSthLCEwKSl9KV0sITEpfSksW3Qoe30scildKX0sVT1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzMwLC0zMF0sZSl9LHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFsxODBdLGUpfSwkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMTUwLC0xNTBdLGUpfSxfPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMTIwLC0xMjBdLGUpfSxRPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbNjAsLTEyMCwxODBdLGUpfSx6PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbOTAsLTkwLDE4MF0sZSl9LEo9ZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7dmFyIGU7aWYoT2JqZWN0LmtleXMocikuc29tZSgoZnVuY3Rpb24ocil7aWYoYltyXS50ZXN0KHQpKXJldHVybiBlPXIsITB9KSksIWUmJn5mLmluZGV4T2YodCkmJihlPXIuSEVYKSwhZSl0aHJvdyBuZXcgRXJyb3IoRSk7cmV0dXJuIGV9KHQpOmZ1bmN0aW9uKHQpe3ZhciBlLG49ITEsaT1MKE9iamVjdC5rZXlzKHQpKTtpZihwW2ldJiYoZT1wW2ldKSxlJiZlPT09ci5SR0Ipe3ZhciBvPU9iamVjdC5lbnRyaWVzKHQpLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiF5LnRlc3QoXCJcIi5jb25jYXQodFsxXSkpfSkpLGE9T2JqZWN0LmVudHJpZXModCkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIShtLnRlc3QoXCJcIi5jb25jYXQodFsxXSkpfHwheS50ZXN0KFwiXCIuY29uY2F0KHRbMV0pKSYmIWlzTmFOKCt0WzFdKSYmK3RbMV08PTI1NSl9KSk7byYmYSYmKG49ITApLG98fChlPXIuSEVYKX1pZighZXx8bil0aHJvdyBuZXcgRXJyb3Iodik7cmV0dXJuIGV9KHQpfSxXPSgoYz17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3ZhciBlPSh+Zi5pbmRleE9mKHQpP29bdF06dCkubWF0Y2goYi5IRVgpLHI9e3I6TShlWzFdfHxlWzVdKSxnOk0oZVsyXXx8ZVs2XSksYjpNKGVbM118fGVbN10pfSxuPWVbNF18fGVbOF07cmV0dXJuIHZvaWQgMCE9PW4mJihyLmE9TShuKS8yNTUpLHJ9LGNbci5SR0JdPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYi5SR0IpLHI9RChlWzFdfHxlWzVdKSxuPUQoZVsyXXx8ZVs2XSksaT1EKGVbM118fGVbN10pLG89ZVs0XXx8ZVs4XSxhPXtyOk1hdGgubWluKHIsMjU1KSxnOk1hdGgubWluKG4sMjU1KSxiOk1hdGgubWluKGksMjU1KX07cmV0dXJuIHZvaWQgMCE9PW8mJihhLmE9TihvKSksYX0sY1tyLkhTTF09ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaChiLkhTTCkscj14KGVbMV18fGVbNV0pLG49QyhlWzJdfHxlWzZdKSxpPUMoZVszXXx8ZVs3XSksbz1lWzRdfHxlWzhdLGE9WChyLG4saSk7cmV0dXJuIHZvaWQgMCE9PW8mJihhLmE9TihvKSksYX0sY1tyLkNNWUtdPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYi5DTVlLKSxyPVMoZVsxXXx8ZVs2XSksbj1TKGVbMl18fGVbN10pLGk9UyhlWzNdfHxlWzhdKSxvPVMoZVs0XXx8ZVs5XSksYT1lWzVdfHxlWzEwXSx1PVkocixuLGksbyk7cmV0dXJuIHZvaWQgMCE9PWEmJih1LmE9TihhKSksdX0sYyksWj0oKHM9e30pW3IuSEVYXT1mdW5jdGlvbih0KXt2YXIgZT17cjpEKFwiXCIuY29uY2F0KHQucikpLGc6RChcIlwiLmNvbmNhdCh0LmcpKSxiOkQoXCJcIi5jb25jYXQodC5iKSl9O3JldHVybiBIKHQsXCJhXCIpJiYoZS5hPU1hdGgubWluKEQoXCJcIi5jb25jYXQodC5hKSwhMCksMSkpLGV9LHNbci5SR0JdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLkhFWCh0KX0sc1tyLkhTTF09ZnVuY3Rpb24odCl7dmFyIGU9QyhcIlwiLmNvbmNhdCh0LnMpKSxyPUMoXCJcIi5jb25jYXQodC5sKSksbj1YKHgodC5oKSxlLHIpO3JldHVybiBIKHQsXCJhXCIpJiYobi5hPU4odC5hKSksbn0sc1tyLkNNWUtdPWZ1bmN0aW9uKHQpe3ZhciBlPVMoXCJcIi5jb25jYXQodC5jKSkscj1TKFwiXCIuY29uY2F0KHQubSkpLG49UyhcIlwiLmNvbmNhdCh0LnkpKSxpPVMoXCJcIi5jb25jYXQodC5rKSksbz1ZKGUscixuLGkpO3JldHVybiBIKHQsXCJhXCIpJiYoby5hPU4odC5hKSksb30scyksdHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9Sih0KSksXCJzdHJpbmdcIj09dHlwZW9mIHQ/V1tlXSh0KTpaW2VdKHQpfSxldD0oKGQ9e30pW3IuSEVYXT1mdW5jdGlvbih0KXtyZXR1cm57cjpSKHQuciksZzpSKHQuZyksYjpSKHQuYil9fSxkLkhFWEE9ZnVuY3Rpb24odCl7dmFyIGU9ZXQuSEVYKHQpO3JldHVybiBlLmE9SCh0LFwiYVwiKT9SKDI1NSp0LmEpOlwiMHhGRlwiLGV9LGRbci5SR0JdPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEgodCxcImFcIikmJmRlbGV0ZSB0LmEsb3QodCxlKX0sZC5SR0JBPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuYT1IKHQsXCJhXCIpP0codC5hKToxLG90KHQsZSl9LGRbci5IU0xdPWZ1bmN0aW9uKHQsZSl7dmFyIHI9Syh0LnIsdC5nLHQuYik7cmV0dXJuIGRlbGV0ZSByLmEsYXQocixlKX0sZC5IU0xBPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZXQuSFNMKHQsZSk7cmV0dXJuIHIuYT1IKHQsXCJhXCIpP0codC5hLGUpOjEscn0sZFtyLkNNWUtdPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHV0KGoodC5yLHQuZyx0LmIpLGUpfSxkLkNNWUtBPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZXQuQ01ZSyh0LGUpO3JldHVybiByLmE9SCh0LFwiYVwiKT9HKHQuYSxlKToxLHJ9LGQpLHJ0PWZ1bmN0aW9uKGUsbixpLG8pe3ZhciBhPUooZSksdT1cInN0cmluZ1wiPT10eXBlb2YgZSxjPXR0KGUsYSkscz1cInN0cmluZ1wiPT10eXBlb2YgZSYmSChjLFwiYVwiKXx8XCJzdHJpbmdcIiE9dHlwZW9mIGUmJkgoZSxcImFcIiksZD1LKGMucixjLmcsYy5iLGMuYSk7c3x8ZGVsZXRlIGQuYTt2YXIgaD1pP2QubC8obisxKTooMTAwLWQubCkvKG4rMSksbD1BcnJheShuKS5maWxsKG51bGwpLm1hcCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh0KHt9LGQpLHtsOmQubCtoKihyKzEpKigxLTIqK2kpfSl9KSk7c3dpdGNoKGEpe2Nhc2Ugci5IRVg6ZGVmYXVsdDpyZXR1cm4gbC5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByPVgoZS5oLGUucyxlLmwpO3JldHVybiBzJiYoci5hPWUuYSksdT9zP3cuSEVYKG90KHQodCh7fSxyKSx7YTpHKDI1NSpyLmEpfSksbykpOncuSEVYKG90KHIsbykpOnM/ZXQuSEVYQShyKTpldC5IRVgocil9KSk7Y2FzZSByLlJHQjpyZXR1cm4gbC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPVgodC5oLHQucyx0LmwpO3JldHVybiBzJiYoZS5hPXQuYSksdT93LlJHQihvdChlLG8pKTpzP2V0LlJHQkEoZSxvKTpldC5SR0IoZSxvKX0pKTtjYXNlIHIuSFNMOnJldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHU/dy5IU0woYXQoZSxvKSk6cz9ldC5IU0xBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6ZS5hfSksbyk6ZXQuSFNMKFgoZS5oLGUucyxlLmwpLG8pfSkpfX0sbnQ9KChoPXtidWlsZEhhcm1vbnk6ZnVuY3Rpb24odCxlLG4saSl7dmFyIG89Sih0KSxhPXR0KHQsbyksdT1LKGEucixhLmcsYS5iLGEuYSksYz1cInN0cmluZ1wiPT10eXBlb2YgdCYmSChhLFwiYVwiKXx8XCJzdHJpbmdcIiE9dHlwZW9mIHQmJkgodCxcImFcIikscz1cInN0cmluZ1wiPT10eXBlb2YgdDtzd2l0Y2gobyl7Y2FzZSByLkhFWDpkZWZhdWx0OnJldHVybiBjP3RoaXMuSEVYQShhdCh1LDApLGUsbixzKTp0aGlzLkhFWChhdCh1LDApLGUsbixzKTtjYXNlIHIuSFNMOnJldHVybiBjP3RoaXMuSFNMQSh1LGUsbixzLGkpOnRoaXMuSFNMKHUsZSxuLHMsaSk7Y2FzZSByLlJHQjpyZXR1cm4gYz90aGlzLlJHQkEodSxlLG4scyxpKTp0aGlzLlJHQih1LGUsbixzLGkpfX19KVtyLkhFWF09ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIGUodCxyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuP3cuSEVYKFgodC5oLHQucyx0LmwpKTpldC5IRVgoWCh0LmgsdC5zLHQubCkpfSkpfSxoLkhFWEE9ZnVuY3Rpb24oZSxyLG4saSl7cmV0dXJuIHIoZSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBpP3cuSEVYKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6MjU1Kk4oZS5hKX0pKTpldC5IRVhBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6TihlLmEpfSkpfSkpfSxoW3IuUkdCXT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBlKHQscikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbj93LlJHQihvdChYKHQuaCx0LnMsdC5sKSxpKSk6ZXQuUkdCKFgodC5oLHQucyx0LmwpLGkpfSkpfSxoLlJHQkE9ZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gcihlLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGk/dy5SR0Iob3QodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSxvKSk6ZXQuUkdCQSh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pLG8pfSkpfSxoW3IuSFNMXT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBlKHQscikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbj93LkhTTChhdCh7aDp0Lmgsczp0LnMsbDp0Lmx9LGkpKTpldC5IU0woWCh0LmgsdC5zLHQubCksaSl9KSl9LGguSFNMQT1mdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiByKGUsbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaT93LkhTTChhdCh0KHQoe30sZSkse2E6TihlLmEpfSksbykpOmV0LkhTTEEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSxvKX0pKX0saCksaXQ9KChsPXttaXg6ZnVuY3Rpb24oZSxyKXt2YXIgbixvLGEsdSxjLHMsZCxoLGwsZixnLHAsYixGLG0seT1lLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9Sih0KTtyZXR1cm4gdHQodCxlKX0pKSxBPXI9PT1pLlNVQlRSQUNUSVZFP3kubWFwKChmdW5jdGlvbih0KXt2YXIgZSxyLG4saSxvLGEsdSxjLHMsZCxoLGwsZixnLHA9KGU9dC5yLHI9dC5nLG49dC5iLGk9TWF0aC5taW4oZSxyLG4pLG89TWF0aC5taW4oMjU1LWUsMjU1LXIsMjU1LW4pLGE9ZS1pLHU9ci1pLGM9bi1pLHM9TWF0aC5taW4oYSx1KSxkPWEtcyxoPSh1K3MpLzIsbD0oYyt1LXMpLzIsZj1NYXRoLm1heChkLGgsbCkvTWF0aC5tYXgoYSx1LGMpLGc9aXNOYU4oZil8fGY9PT0xLzB8fGY8PTA/MTpmLHtyOmQvZytvLHk6aC9nK28sYjpsL2crb30pO3JldHVybiBIKHQsXCJhXCIpJiYocC5hPXQuYSkscH0pKTpudWxsO2Z1bmN0aW9uIEUoZSl7dmFyIG49cj09PWkuQURESVRJVkU/e3I6MCxnOjAsYjowLGE6MH06e3I6MCx5OjAsYjowLGE6MH07cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLG4pe3ZhciBvPUgobixcImFcIik/bi5hOjEsYT17cjpNYXRoLm1pbihlLnIrbi5yKm8sMjU1KSxiOk1hdGgubWluKGUuYituLmIqbywyNTUpLGE6MS0oMS1vKSooMS1lLmEpfSx1PVwiZ1wiaW4gZT9lLmc6ZS55LGM9XCJnXCJpbiBuP24uZzpuLnk7cmV0dXJuIHQodCh7fSxhKSxyPT09aS5BRERJVElWRT97ZzpNYXRoLm1pbih1K2MqbywyNTUpfTp7eTpNYXRoLm1pbih1K2MqbywyNTUpfSl9KSxuKX1pZihyPT09aS5BRERJVElWRSluPUUoeSk7ZWxzZXt2YXIgdj1FKEEpO289di5yLGE9di55LHU9di5iLGM9TWF0aC5taW4obyxhLHUpLHM9TWF0aC5taW4oMjU1LW8sMjU1LWEsMjU1LXUpLGQ9by1jLGg9YS1jLGw9dS1jLGY9TWF0aC5taW4oaCxsKSxnPWQraC1mLHA9aCtmLGI9MioobC1mKSxGPU1hdGgubWF4KGcscCxiKS9NYXRoLm1heChkLGgsbCksbT1pc05hTihGKXx8Rj09PTEvMHx8Rjw9MD8xOkYsKG49e3I6Zy9tK3MsZzpwL20rcyxiOmIvbStzfSkuYT12LmF9cmV0dXJue3I6RyhuLnIpLGc6RyhuLmcpLGI6RyhuLmIpLGE6ayhuLmEsMCwxKX19fSlbci5IRVhdPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm1peCh0LGUpO3JldHVybiBkZWxldGUgbi5hLHI/dy5IRVgobik6ZXQuSEVYKG4pfSxsLkhFWEE9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubWl4KHQsZSk7cmV0dXJuIG4uYT1yPzI1NSpOKG4uYSk6TihuLmEpLHI/dy5IRVgobik6ZXQuSEVYQShuKX0sbFtyLlJHQl09ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKTtyZXR1cm4gZGVsZXRlIGkuYSxyP3cuUkdCKGkpOmV0LlJHQihpLG4pfSxsLlJHQkE9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKTtyZXR1cm4gcj93LlJHQihpKTpldC5SR0JBKGksbil9LGxbci5IU0xdPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMubWl4KHQsZSksbz1LKGkucixpLmcsaS5iKTtyZXR1cm4gZGVsZXRlIGkuYSxkZWxldGUgby5hLHI/dy5IU0wobyk6ZXQuSFNMKGksbil9LGwuSFNMQT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpLG89SyhpLnIsaS5nLGkuYixpLmEpO3JldHVybiByP3cuSFNMKG8pOmV0LkhTTEEoaSxuKX0sbCksb3Q9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh7cjpHKGUucixyKSxnOkcoZS5nLHIpLGI6RyhlLmIscil9LEgoZSxcImFcIik/e2E6RyhlLmEscil9Ont9KX0sYXQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh7aDpHKGUuaCxyKSxzOkcoZS5zLHIpLGw6RyhlLmwscil9LEgoZSxcImFcIik/e2E6RyhlLmEscil9Ont9KX0sdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57YzpHKHQuYyxlKSxtOkcodC5tLGUpLHk6Ryh0LnksZSksazpHKHQuayxlKX19LGN0PWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2YXIgYT1pKHR0KHQsZSksbik7cmV0dXJuIHI/byhhKTphfSxzdD1mdW5jdGlvbih0LGUscixuLGksbyxhKXtyPDEmJihyPTUpO3ZhciB1PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yLTEsaT0oZS5yLXQucikvbixvPShlLmctdC5nKS9uLGE9KGUuYi10LmIpL24sdT1OKHQuYSksYz0oTihlLmEpLXUpL247cmV0dXJuIEFycmF5KHIpLmZpbGwobnVsbCkubWFwKChmdW5jdGlvbihyLHMpe3JldHVybiAwPT09cz90OnM9PT1uP2U6e3I6Ryh0LnIraSpzKSxnOkcodC5nK28qcyksYjpHKHQuYithKnMpLGE6Ryh1K2Mqcyl9fSkpfSh0dCh0KSx0dChlKSxyKTtyZXR1cm4gdS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPW8odCxpKTtyZXR1cm4gbj9hKGUpOmV9KSl9LGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3ZvaWQgMD09PWUmJihlPTYpLHRoaXMucmdiPXR0KHQpLHRoaXMuX2RlY2ltYWxzPWUsdGhpcy51cGRhdGVIU0woKSx0aGlzLnVwZGF0ZUNNWUsoKX1yZXR1cm4gZS5wcm90b3R5cGUudXBkYXRlUkdCPWZ1bmN0aW9uKCl7dGhpcy5yZ2I9dCh0KHt9LFgodGhpcy5oc2wuaCx0aGlzLmhzbC5zLHRoaXMuaHNsLmwpKSx7YTp0aGlzLmhzbC5hfSl9LGUucHJvdG90eXBlLnVwZGF0ZVJHQkZyb21DTVlLPWZ1bmN0aW9uKCl7dGhpcy5yZ2I9dCh0KHt9LFkodGhpcy5jbXlrLmMsdGhpcy5jbXlrLm0sdGhpcy5jbXlrLnksdGhpcy5jbXlrLmspKSx7YTp0aGlzLnJnYi5hfSl9LGUucHJvdG90eXBlLnVwZGF0ZUhTTD1mdW5jdGlvbigpe3RoaXMuaHNsPUsodGhpcy5yZ2Iucix0aGlzLnJnYi5nLHRoaXMucmdiLmIsdGhpcy5yZ2IuYSl9LGUucHJvdG90eXBlLnVwZGF0ZUNNWUs9ZnVuY3Rpb24oKXt0aGlzLmNteWs9aih0aGlzLnJnYi5yLHRoaXMucmdiLmcsdGhpcy5yZ2IuYil9LGUucHJvdG90eXBlLnVwZGF0ZVJHQkFuZENNWUs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVSR0IoKSx0aGlzLnVwZGF0ZUNNWUsoKSx0aGlzfSxlLnByb3RvdHlwZS51cGRhdGVIU0xBbmRDTVlLPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlSFNMKCksdGhpcy51cGRhdGVDTVlLKCksdGhpc30sZS5wcm90b3R5cGUudXBkYXRlUkdCQW5kSFNMPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUkdCRnJvbUNNWUsoKSx0aGlzLnVwZGF0ZUhTTCgpLHRoaXN9LGUucHJvdG90eXBlLnNldERlY2ltYWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kZWNpbWFscz10LHRoaXN9LGUucHJvdG90eXBlLnNldEg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLmg9eCh0KSx0aGlzLnVwZGF0ZVJHQkFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Uz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wucz1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRMPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhzbC5sPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldFI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmdiLnI9ayh0LDAsMjU1KSx0aGlzLnVwZGF0ZUhTTEFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Rz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZ2IuZz1rKHQsMCwyNTUpLHRoaXMudXBkYXRlSFNMQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRCPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJnYi5iPWsodCwwLDI1NSksdGhpcy51cGRhdGVIU0xBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLmE9dGhpcy5yZ2IuYT1rKHQsMCwxKSx0aGlzfSxlLnByb3RvdHlwZS5zZXRDPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsuYz1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LGUucHJvdG90eXBlLnNldE09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay5tPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sZS5wcm90b3R5cGUuc2V0WT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXlrLnk9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZEhTTCgpfSxlLnByb3RvdHlwZS5zZXRLPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsuaz1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImRlY2ltYWxzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWNpbWFsc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLmgsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiU1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmhzbC5zLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wubCx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMucmdiLnIsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiR1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLnJnYi5nLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5yZ2IuYix0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLmEsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsuYyx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJNXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay5tLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIllcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5jbXlrLnksdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiS1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsuayx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0LkhFWCh0aGlzLnJnYil9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSEVYQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQuSEVYQSh0aGlzLnJnYil9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybntyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQn19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCh0KHt9LHRoaXMuUkdCT2JqZWN0KSx7YTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue2g6dGhpcy5ILHM6dGhpcy5TLGw6dGhpcy5MfX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0KHQoe30sdGhpcy5IU0xPYmplY3QpLHthOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue2M6dGhpcy5DLG06dGhpcy5NLHk6dGhpcy5ZLGs6dGhpcy5LfX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDTVlLQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCh0KHt9LHRoaXMuQ01ZS09iamVjdCkse2E6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSEVYXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkhFWCh7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkJ9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkhFWCh7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkIsYToyNTUqdGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LlJHQih7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkJ9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LlJHQih7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkIsYTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSFNMKHtoOnRoaXMuSCxzOnRoaXMuUyxsOnRoaXMuTH0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTEFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSFNMKHtoOnRoaXMuSCxzOnRoaXMuUyxsOnRoaXMuTCxhOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuQ01ZSyh7Yzp0aGlzLkMsbTp0aGlzLk0seTp0aGlzLlksazp0aGlzLkt9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDTVlLQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5DTVlLKHtjOnRoaXMuQyxtOnRoaXMuTSx5OnRoaXMuWSxrOnRoaXMuSyxhOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUudG9IRVg9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0hMCk7dmFyIHI9Sih0KTtyZXR1cm4gY3QodCxyLGUsMCxldC5IRVgsdy5IRVgpfSxlLnRvSEVYQT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgcj1KKHQpO3JldHVybiBjdCh0LHIsZSwwLGV0LkhFWEEsdy5IRVgpfSxlLnRvUkdCPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5SR0Isdy5SR0IpfSxlLnRvUkdCQT1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuUkdCQSx3LlJHQil9LGUudG9IU0w9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkhTTCx3LkhTTCl9LGUudG9IU0xBPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5IU0xBLHcuSFNMKX0sZS50b0NNWUs9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkNNWUssdy5DTVlLKX0sZS50b0NNWUtBPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5DTVlLQSx3LkNNWUspfSxlLmdldEJsZW5kSEVYPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuSEVYLHcuSEVYKX0sZS5nZXRCbGVuZEhFWEE9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IRVhBLHcuSEVYKX0sZS5nZXRCbGVuZFJHQj1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LlJHQix3LlJHQil9LGUuZ2V0QmxlbmRSR0JBPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuUkdCQSx3LlJHQil9LGUuZ2V0QmxlbmRIU0w9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IU0wsdy5IU0wpfSxlLmdldEJsZW5kSFNMQT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhTTEEsdy5IU0wpfSxlLmdldE1peEhFWD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSxpdC5IRVgodCxlLHIpfSxlLmdldE1peEhFWEE9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksaXQuSEVYQSh0LGUscil9LGUuZ2V0TWl4UkdCPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuUkdCKHQsZSxyLG4pfSxlLmdldE1peFJHQkE9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5SR0JBKHQsZSxyLG4pfSxlLmdldE1peEhTTD1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PW4mJihuPTYpLGl0LkhTTCh0LGUscixuKX0sZS5nZXRNaXhIU0xBPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuSFNMQSh0LGUscixuKX0sZS5nZXRTaGFkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj02KSxydCh0LGUsITAscil9LGUuZ2V0VGludHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj02KSxydCh0LGUsITEscil9LGUuZ2V0SGFybW9ueT1mdW5jdGlvbih0LGUscixvKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bi5DT01QTEVNRU5UQVJZKSx2b2lkIDA9PT1yJiYocj1pLkFERElUSVZFKSx2b2lkIDA9PT1vJiYobz02KSxmdW5jdGlvbih0LGUscixpKXt2YXIgbztyZXR1cm4obz17fSxvW24uQU5BTE9HT1VTXT1udC5idWlsZEhhcm1vbnkoZSxVLGksciksb1tuLkNPTVBMRU1FTlRBUlldPW50LmJ1aWxkSGFybW9ueShlLHEsaSxyKSxvW24uU1BMSVRfQ09NUExFTUVOVEFSWV09bnQuYnVpbGRIYXJtb255KGUsJCxpLHIpLG9bbi5UUklBRElDXT1udC5idWlsZEhhcm1vbnkoZSxfLGksciksb1tuLlRFVFJBRElDXT1udC5idWlsZEhhcm1vbnkoZSxRLGksciksb1tuLlNRVUFSRV09bnQuYnVpbGRIYXJtb255KGUseixpLHIpLG8pW3RdfShlLHQsbyxyKX0sZX0oKTtleHBvcnR7ZHQgYXMgQ29sb3JUcmFuc2xhdG9yLG4gYXMgSGFybW9ueSxpIGFzIE1peH07XG4iLCAiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IENvZGVTdHlsZXJTZXR0aW5ncywgQ29kZVN0eWxlclRoZW1lQ29sb3VycywgQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnMsIENvZGVTdHlsZXJUaGVtZVNldHRpbmdzLCBDb2xvdXIsIExBTkdVQUdFX05BTUVTLCBMQU5HVUFHRV9DT0xPVVJTIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcbmltcG9ydCB7IGlzQ3NzIH0gZnJvbSBcIi4vU2V0dGluZ3NUYWJcIjtcblxuaW50ZXJmYWNlIFRoZW1lU3R5bGUge1xuXHQnYm9yZGVyJz86IHtcblx0XHQnc2l6ZSc6IG51bWJlcjtcblx0XHQnc3R5bGUnOiBzdHJpbmc7XG5cdH0sXG5cdCdleHRyYSc/OiBzdHJpbmc7XG59XG5cbmNvbnN0IFNUWUxFX0lEID0gJ2NvZGUtc3R5bGVyLXN0eWxlcyc7XG5jb25zdCBUSEVNRV9TVFlMRVM6IFJlY29yZDxzdHJpbmcsVGhlbWVTdHlsZT4gPSB7XG5cdCdQcmlzbSc6IHtcblx0XHQnYm9yZGVyJzoge1xuXHRcdFx0J3NpemUnOiAxLFxuXHRcdFx0J3N0eWxlJzogJzFweCBzb2xpZCB2YXIoLS13aW5kb3ctYm9yZGVyLWNvbG9yKScsXG5cdFx0fSxcblx0fSxcblx0J1NoaW1tZXJpbmcgRm9jdXMnOiB7XG5cdFx0J2JvcmRlcic6IHtcblx0XHRcdCdzaXplJzogMSxcblx0XHRcdCdzdHlsZSc6ICd2YXIoLS10aGluLW11dGVkLWJvcmRlciknLFxuXHRcdH0sXG5cdH0sXG5cdCdNaW5pbWFsJzoge1xuXHRcdCdleHRyYSc6IGBcblx0XHRcdC5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202LmlzLXJlYWRhYmxlLWxpbmUtd2lkdGggOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHR9XG5cdFx0YCxcblx0fSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0eWxpbmcoc2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncywgYXBwOiBBcHApOiB2b2lkIHtcblx0bGV0IGN1cnJlbnRUaGVtZSA9IGdldEN1cnJlbnRUaGVtZShhcHApO1xuXHRsZXQgc3R5bGVUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTVFlMRV9JRCk7XG5cdGlmICghc3R5bGVUYWcpIHtcblx0XHRzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cdFx0c3R5bGVUYWcuaWQgPSBTVFlMRV9JRDtcblx0XHRkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcblx0fVxuXHRzdHlsZVRhZy5pbm5lclRleHQgPSAoc3R5bGVUaGVtZUNvbG91cnMoc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMpK3N0eWxlVGhlbWVTZXR0aW5ncyhzZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MsY3VycmVudFRoZW1lKStzdHlsZUxhbmd1YWdlQ29sb3VycyhzZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3Msc2V0dGluZ3MucmVkaXJlY3RMYW5ndWFnZXMsY3VycmVudFRoZW1lKSkudHJpbSgpLnJlcGxhY2UoL1xccysvZywnICcpO1xuXHRhZGRUaGVtZVNldHRpbmdzQ2xhc3NlcyhzZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MpO1xufVxuXG5mdW5jdGlvbiBzdHlsZVRoZW1lQ29sb3VycyAodGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKTogc3RyaW5nIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKHRoZW1lQ29sb3Vycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cykucmVkdWNlKChyZXN1bHQ6IHN0cmluZywgYWx0ZXJuYXRpdmVIaWdobGlnaHQ6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiByZXN1bHQgKyBgXG5cdFx0XHRib2R5LmNvZGUtc3R5bGVyIC5jb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkLSR7YWx0ZXJuYXRpdmVIaWdobGlnaHQucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9IHtcblx0XHRcdFx0LS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cjogdmFyKC0tY29kZS1zdHlsZXItJHthbHRlcm5hdGl2ZUhpZ2hsaWdodC5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX0taGlnaGxpZ2h0LWNvbG91cikgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHRgO1xuXHR9LGBcblx0XHRib2R5LmNvZGUtc3R5bGVyLnRoZW1lLWxpZ2h0IHtcblx0XHRcdCR7Z2V0VGhlbWVDb2xvdXJzKHRoZW1lQ29sb3Vycy5saWdodCl9XG5cdFx0fVxuXHRcdGJvZHkuY29kZS1zdHlsZXIudGhlbWUtZGFyayB7XG5cdFx0XHQke2dldFRoZW1lQ29sb3Vycyh0aGVtZUNvbG91cnMuZGFyayl9XG5cdFx0fVxuXHRgKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGhlbWVDb2xvdXJzICh0aGVtZU1vZGVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVNb2RlQ29sb3Vycyk6IHN0cmluZyB7XG5cdHJldHVybiBPYmplY3QuZW50cmllcyh7XG5cdFx0J2NvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuY29kZWJsb2NrLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0J2NvZGVibG9jay10ZXh0LWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuY29kZWJsb2NrLnRleHRDb2xvdXIsXG5cdFx0J2d1dHRlci1iYWNrZ3JvdW5kLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuZ3V0dGVyLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0J2d1dHRlci10ZXh0LWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuZ3V0dGVyLnRleHRDb2xvdXIsXG5cdFx0J2d1dHRlci1hY3RpdmUtdGV4dC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmd1dHRlci5hY3RpdmVUZXh0Q29sb3VyLFxuXHRcdCdoZWFkZXItYmFja2dyb3VuZC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdCdoZWFkZXItdGl0bGUtdGV4dC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhlYWRlci50aXRsZS50ZXh0Q29sb3VyLFxuXHRcdCdoZWFkZXItbGFuZ3VhZ2UtdGFnLWJhY2tncm91bmQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG91cixcblx0XHQnaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRDb2xvdXIsXG5cdFx0J2hlYWRlci1zZXBhcmF0b3ItY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oZWFkZXIubGluZUNvbG91cixcblx0XHQnYWN0aXZlLWNvZGVibG9jay1saW5lLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyLFxuXHRcdCdhY3RpdmUtZWRpdG9yLWxpbmUtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmVDb2xvdXIsXG5cdFx0J2RlZmF1bHQtaGlnaGxpZ2h0LWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGlnaGxpZ2h0cy5kZWZhdWx0Q29sb3VyLFxuXHRcdCdidXR0b24tY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5hZHZhbmNlZC5idXR0b25Db2xvdXIsXG5cdFx0J2J1dHRvbi1hY3RpdmUtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5hZHZhbmNlZC5idXR0b25BY3RpdmVDb2xvdXIsXG5cdFx0J2lubGluZS1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmlubGluZS50ZXh0Q29sb3VyLFxuXHRcdCdpbmxpbmUtY29sb3VyLWFjdGl2ZSc6IHRoZW1lTW9kZUNvbG91cnMuaW5saW5lLmFjdGl2ZVRleHRDb2xvdXIsXG5cdFx0J2lubGluZS1iYWNrZ3JvdW5kLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaW5saW5lLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0J2lubGluZS10aXRsZS1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmlubGluZS50aXRsZVRleHRDb2xvdXIsXG5cdFx0Li4uT2JqZWN0LmVudHJpZXModGhlbWVNb2RlQ29sb3Vycy5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cykucmVkdWNlKChyZXN1bHQ6IFJlY29yZDxzdHJpbmcsQ29sb3VyPixbYWx0ZXJuYXRpdmVIaWdobGlnaHQsY29sb3VyXTogW3N0cmluZyxDb2xvdXJdKTogUmVjb3JkPHN0cmluZyxDb2xvdXI+ID0+IHtcblx0XHRcdHJlc3VsdFtgJHthbHRlcm5hdGl2ZUhpZ2hsaWdodC5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX0taGlnaGxpZ2h0LWNvbG91cmBdID0gY29sb3VyO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LHt9KVxuXHR9KS5yZWR1Y2UoKHJlc3VsdDogc3RyaW5nLCBbY3NzVmFyaWFibGUsY29sb3VyXTogW3N0cmluZyxDb2xvdXJdKTogc3RyaW5nID0+IHtcblx0XHRjb25zdCBzdHlsZUNvbG91ciA9IGlzQ3NzKGNvbG91cik/YHZhcigke2NvbG91cn0pYDpjb2xvdXI7XG5cdFx0cmV0dXJuIHJlc3VsdCArIGAtLWNvZGUtc3R5bGVyLSR7Y3NzVmFyaWFibGV9OiAke3N0eWxlQ29sb3VyfTtgXG5cdH0sYGApXG59XG5cbmZ1bmN0aW9uIHN0eWxlVGhlbWVTZXR0aW5ncyAodGhlbWVTZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MsIGN1cnJlbnRUaGVtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIGBcblx0XHRib2R5LmNvZGUtc3R5bGVyIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0XHRcdC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWJvbGQ6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEJvbGQ/J2JvbGQnOidub3JtYWwnfTtcblx0XHRcdC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWl0YWxpYzogJHt0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0SXRhbGljPydpdGFsaWMnOidub3JtYWwnfTtcblx0XHRcdGZvbnQtZmFtaWx5OiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRGb250IT09Jyc/dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQ6J3ZhcigtLWZvbnQtdGV4dCknfTtcblx0XHR9XG5cdFx0Ym9keS5jb2RlLXN0eWxlciAuY29kZS1zdHlsZXItaGVhZGVyLXRleHQge1xuXHRcdFx0LS1jb2RlLXN0eWxlci1oZWFkZXItdGl0bGUtdGV4dC1ib2xkOiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRCb2xkPydib2xkJzonbm9ybWFsJ307XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWl0YWxpYzogJHt0aGVtZVNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0SXRhbGljPydpdGFsaWMnOidub3JtYWwnfTtcblx0XHRcdGZvbnQtZmFtaWx5OiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRGb250IT09Jyc/dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQ6J3ZhcigtLWZvbnQtdGV4dCknfTtcblx0XHR9XG5cdFx0Ym9keS5jb2RlLXN0eWxlciB7XG5cdFx0XHQtLWJvcmRlci1yYWRpdXM6ICR7dGhlbWVTZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlfXB4O1xuXHRcdFx0LS1sYW5ndWFnZS1pY29uLXNpemU6ICR7dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZX1weDtcblx0XHRcdC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcDogJHt0aGVtZVNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cz90aGVtZVNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3A6JzEwMCUnfTtcblx0XHRcdC0taGVhZGVyLWZvbnQtc2l6ZTogJHt0aGVtZVNldHRpbmdzLmhlYWRlci5mb250U2l6ZX1weDtcblx0XHRcdC0tbGluZS13cmFwcGluZzogJHt0aGVtZVNldHRpbmdzLmNvZGVibG9jay51bndyYXBMaW5lcz8ncHJlJzoncHJlLXdyYXAnfTtcblx0XHRcdC0tY29kZS1zdHlsZXItaW5saW5lLWZvbnQtd2VpZ2h0OiAke3RoZW1lU2V0dGluZ3MuaW5saW5lLmZvbnRXZWlnaHR9MDA7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzOiAke3RoZW1lU2V0dGluZ3MuaW5saW5lLmN1cnZhdHVyZX1weDtcblx0XHRcdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctdmVydGljYWw6ICR7dGhlbWVTZXR0aW5ncy5pbmxpbmUucGFkZGluZ1ZlcnRpY2FsfXB4O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsOiAke3RoZW1lU2V0dGluZ3MuaW5saW5lLnBhZGRpbmdIb3Jpem9udGFsfXB4O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWw6ICR7dGhlbWVTZXR0aW5ncy5pbmxpbmUubWFyZ2luSG9yaXpvbnRhbH1weDtcblx0XHRcdC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWZvbnQtd2VpZ2h0OiAke3RoZW1lU2V0dGluZ3MuaW5saW5lLnRpdGxlRm9udFdlaWdodH0wMDtcblx0XHRcdCR7IXRoZW1lU2V0dGluZ3MuY29kZWJsb2NrLndyYXBMaW5lc0FjdGl2ZT8nJzonLS1saW5lLWFjdGl2ZS13cmFwcGluZzogcHJlLXdyYXA7J31cblx0XHRcdCR7dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXlDb2xvdXI/Jyc6Jy0taWNvbi1maWx0ZXI6IGdyYXlzY2FsZSgxKTsnfVxuXHRcdH1cblx0XHQke1RIRU1FX1NUWUxFUz8uW2N1cnJlbnRUaGVtZV0/LmJvcmRlcj9gXG5cdFx0XHQubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdFx0XHRcdC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcjpgKyAvL0B0cy1leHBlY3QtZXJyb3IgRG9lcyBFeGlzdFxuXHRcdFx0XHRcdFRIRU1FX1NUWUxFU1tjdXJyZW50VGhlbWVdLmJvcmRlci5zdHlsZStgO1xuXHRcdFx0XHQtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgtcGFkZGluZzogY2FsYyh2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKSAtIGArIC8vQHRzLWV4cGVjdC1lcnJvciBEb2VzIEV4aXN0XG5cdFx0XHRcdFx0VEhFTUVfU1RZTEVTW2N1cnJlbnRUaGVtZV0uYm9yZGVyLnNpemUrYHB4KTtcblx0XHRcdFx0LS1jb2xsYXBzZWQtYm90dG9tLWJvcmRlcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdFx0XHR9XG5cdFx0YDonJ31cblx0XHQke1RIRU1FX1NUWUxFUz8uW2N1cnJlbnRUaGVtZV0/LmV4dHJhP1RIRU1FX1NUWUxFU1tjdXJyZW50VGhlbWVdLmV4dHJhOicnfVxuXHRgO1xufVxuXG5mdW5jdGlvbiBzdHlsZUxhbmd1YWdlQ29sb3VycyAodGhlbWVTZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MsIHJlZGlyZWN0TGFuZ3VhZ2VzOiBSZWNvcmQ8c3RyaW5nLHtjb2xvdXI/OiBDb2xvdXIsIGljb24/OiBzdHJpbmd9PiwgY3VycmVudFRoZW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoTEFOR1VBR0VfTkFNRVMpLnJlZHVjZSgocmVzdWx0OiBzdHJpbmcsW2xhbmd1YWdlTmFtZSwgbGFuZ3VhZ2VEaXNwbGF5TmFtZV06IFtzdHJpbmcsc3RyaW5nXSk6IHN0cmluZyA9PiB7XG5cdFx0aWYgKGxhbmd1YWdlRGlzcGxheU5hbWUgaW4gTEFOR1VBR0VfQ09MT1VSUyB8fCAobGFuZ3VhZ2VOYW1lIGluIHJlZGlyZWN0TGFuZ3VhZ2VzICYmICdjb2xvdXInIGluIHJlZGlyZWN0TGFuZ3VhZ2VzW2xhbmd1YWdlTmFtZV0pKSB7XG5cdFx0XHRyZXN1bHQgKz0gYFxuXHRcdFx0XHQubGFuZ3VhZ2UtJHtsYW5ndWFnZU5hbWV9IHtcblx0XHRcdFx0XHQtLWxhbmd1YWdlLWJvcmRlci1jb2xvdXI6ICR7cmVkaXJlY3RMYW5ndWFnZXM/LltsYW5ndWFnZU5hbWVdPy5bJ2NvbG91ciddID8/IExBTkdVQUdFX0NPTE9VUlNbbGFuZ3VhZ2VEaXNwbGF5TmFtZV19O1xuXHRcdFx0XHRcdC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoOiAke3RoZW1lU2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvdXI/dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoOjB9cHg7XG5cdFx0XHRcdH1cblx0XHRcdGA7XG5cdFx0XHRpZiAoVEhFTUVfU1RZTEVTPy5bY3VycmVudFRoZW1lXT8uYm9yZGVyKSB7XG5cdFx0XHRcdHJlc3VsdCArPSBgXG5cdFx0XHRcdFx0Lm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10ubGFuZ3VhZ2UtJHtsYW5ndWFnZU5hbWV9ICB7XG5cdFx0XHRcdFx0XHQtLWxhbmd1YWdlLWJvcmRlci13aWR0aDogJHsgLy9AdHMtZXhwZWN0LWVycm9yIERvZXMgZXhpc3Rcblx0XHRcdFx0XHRcdFx0dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG91cj90aGVtZVNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGgrVEhFTUVfU1RZTEVTW2N1cnJlbnRUaGVtZV0uYm9yZGVyLnNpemU6MFxuXHRcdFx0XHRcdFx0fXB4O1xuXHRcdFx0XHRcdH1gXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sJycpXG59XG5cbmZ1bmN0aW9uIGFkZFRoZW1lU2V0dGluZ3NDbGFzc2VzICh0aGVtZVNldHRpbmdzOiBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncyk6IHZvaWQge1xuXHRpZiAodGhlbWVTZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnNcIik7XG5cdGVsc2Vcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVyc1wiKTtcblxuXHRpZiAodGhlbWVTZXR0aW5ncy5ndXR0ZXIuaGlnaGxpZ2h0KVxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCcpO1xuXHRlbHNlXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1ndXR0ZXItaGlnaGxpZ2h0Jyk7XG5cblx0aWYgKHRoZW1lU2V0dGluZ3MuZ3V0dGVyLmFjdGl2ZUxpbmUpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUnKTtcblx0ZWxzZVxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS1saW5lJyk7XG5cdFxuXHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHRcIixcImNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2tcIixcImNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3JcIilcblx0aWYgKHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lICYmIHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lKSAvLyBJbnNpZGUgYW5kIG91dHNpZGUgb2YgY29kZWJsb2NrcyB3aXRoIGRpZmZlcmVudCBjb2xvdXJzXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0XCIpO1xuXHRlbHNlIGlmICh0aGVtZVNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSAmJiAhdGhlbWVTZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUpIC8vIE9ubHkgb3V0c2lkZSBjb2RlYmxvY2tzXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWVkaXRvclwiKTtcblx0ZWxzZSBpZiAoIXRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lICYmIHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lKSAvLyBPbmx5IGluc2lkZSBjb2RlYmxvY2tzXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWNvZGVibG9ja1wiKTtcblx0XG5cdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzXCIsXCJjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXNcIik7XG5cdGlmICh0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID09PSAnYWx3YXlzJylcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXNcIik7XG5cdGVsc2UgaWYgKHRoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdpZl9oZWFkZXJfc2hvd24nKVxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzXCIpO1xuXG5cdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zXCIsXCJjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXNcIik7XG5cdGlmICh0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSA9PT0gJ2Fsd2F5cycpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzXCIpO1xuXHRlbHNlIGlmICh0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSA9PT0gJ2lmX2hlYWRlcl9zaG93bicpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnNcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVTdHlsZXNBbmRDbGFzc2VzKCk6IHZvaWQge1xuXHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTVFlMRV9JRCk/LnJlbW92ZSgpO1xuXHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXG5cdFx0J2NvZGUtc3R5bGVyJyxcblx0XHRcImNvZGUtc3R5bGVyLXNob3ctbGluZS1udW1iZXJzXCIsXG5cdFx0J2NvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQnLFxuXHRcdCdjb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUnLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXNcIixcblx0XHRcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5c1wiLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnNcIixcblx0XHRcImNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5c1wiLFxuXHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50VGhlbWUoYXBwOiBBcHApOiBzdHJpbmcge1xuXHQvL0B0cy1leHBlY3QtZXJyb3IgVW5kb2N1bWVudGVkIE9ic2lkaWFuIEFQSVxuXHRyZXR1cm4gYXBwLnZhdWx0LmdldENvbmZpZyhcImNzc1RoZW1lXCIpO1xufVxuIiwgImltcG9ydCB7IGVkaXRvckVkaXRvckZpZWxkLCBlZGl0b3JJbmZvRmllbGQsIGVkaXRvckxpdmVQcmV2aWV3RmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IFZpZXdQbHVnaW4sIEVkaXRvclZpZXcsIFZpZXdVcGRhdGUsIERlY29yYXRpb24sIERlY29yYXRpb25TZXQsIFdpZGdldFR5cGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uLCBFZGl0b3JTdGF0ZSwgU3RhdGVGaWVsZCwgU3RhdGVFZmZlY3QsIFN0YXRlRWZmZWN0VHlwZSwgUmFuZ2UsIFJhbmdlU2V0QnVpbGRlciwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgTGluZSwgU2VsZWN0aW9uUmFuZ2UsIEFubm90YXRpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IHN5bnRheFRyZWUsIHRva2VuQ2xhc3NOb2RlUHJvcCwgTGFuZ3VhZ2VTdXBwb3J0IH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBTeW50YXhOb2RlUmVmIH0gZnJvbSBcIkBsZXplci9jb21tb25cIjtcbmltcG9ydCB7IGhpZ2hsaWdodFRyZWUsIGNsYXNzSGlnaGxpZ2h0ZXIgfSBmcm9tIFwiQGxlemVyL2hpZ2hsaWdodFwiO1xuLy8gaW1wb3J0IHsgbGFuZ3VhZ2VzIH0gZnJvbSBcIkBjb2RlbWlycm9yL2xhbmd1YWdlLWRhdGFcIjsgLy9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cbmltcG9ydCB7IENvZGVTdHlsZXJTZXR0aW5ncywgQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ29kZWJsb2NrUGFyYW1ldGVycywgcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzLCB0ZXN0T3BlbmluZ0xpbmUsIGlzRXhjbHVkZWQsIGFycmF5c0VxdWFsLCB0cmltUGFyYW1ldGVyTGluZSwgSW5saW5lQ29kZVBhcmFtZXRlcnMsIHBhcnNlSW5saW5lQ29kZSB9IGZyb20gXCIuL0NvZGVibG9ja1BhcnNpbmdcIjtcbmltcG9ydCB7IGNyZWF0ZUhlYWRlciwgY3JlYXRlSW5saW5lT3BlbmVyLCBnZXRMYW5ndWFnZUljb24sIGdldExpbmVDbGFzcyB9IGZyb20gXCIuL0NvZGVibG9ja0RlY29yYXRpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvZGVibG9ja0NvZGVNaXJyb3JFeHRlbnNpb25zKHNldHRpbmdzOiBDb2RlU3R5bGVyU2V0dGluZ3MsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPikge1xuXHRjb25zdCBjb2RlYmxvY2tMaW5lTnVtYmVyQ2hhcldpZHRoID0gU3RhdGVGaWVsZC5kZWZpbmU8bnVtYmVyPih7XG5cdFx0Y3JlYXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gZ2V0Q2hhcldpZHRoKHN0YXRlLHN0YXRlLmZpZWxkKGVkaXRvckVkaXRvckZpZWxkKS5kZWZhdWx0Q2hhcmFjdGVyV2lkdGgpO1xuXHRcdH0sXG5cdFx0dXBkYXRlKHZhbHVlOiBudW1iZXIsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IG51bWJlciB7XG5cdFx0XHRyZXR1cm4gZ2V0Q2hhcldpZHRoKHRyYW5zYWN0aW9uLnN0YXRlLHZhbHVlKTtcblx0XHR9XG5cdH0pXG5cdGNvbnN0IGNvZGVibG9ja0xpbmVzID0gVmlld1BsdWdpbi5mcm9tQ2xhc3MoXG5cdFx0Y2xhc3MgQ29kZWJsb2NrTGluZXMge1xuXHRcdFx0c2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncztcblx0XHRcdGN1cnJlbnRTZXR0aW5nczoge1xuXHRcdFx0XHRleGNsdWRlZENvZGVibG9ja3M6IHN0cmluZztcblx0XHRcdFx0ZXhjbHVkZWRMYW5ndWFnZXM6IHN0cmluZztcblx0XHRcdFx0Y29sbGFwc2VQbGFjZWhvbGRlcjogc3RyaW5nO1xuXHRcdFx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IEFycmF5PHN0cmluZz47XG5cdFx0XHR9XG5cdFx0XHRkZWNvcmF0aW9uczogRGVjb3JhdGlvblNldDtcblx0XHRcdG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cdFx0XG5cdFx0XHRjb25zdHJ1Y3Rvcih2aWV3OiBFZGl0b3JWaWV3KSB7XG5cdFx0XHRcdHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcblx0XHRcdFx0dGhpcy5jdXJyZW50U2V0dGluZ3MgPSB7XG5cdFx0XHRcdFx0ZXhjbHVkZWRDb2RlYmxvY2tzOiBzZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MsXG5cdFx0XHRcdFx0ZXhjbHVkZWRMYW5ndWFnZXM6IHNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzLFxuXHRcdFx0XHRcdGNvbGxhcHNlUGxhY2Vob2xkZXI6ICcnLFxuXHRcdFx0XHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0czogW10sXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IERlY29yYXRpb24ubm9uZTtcblx0XHRcdFx0dGhpcy5idWlsZERlY29yYXRpb25zKHZpZXcpO1xuXHRcdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7bXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKG11dGF0aW9uLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09IFwiY2xhc3NcIiAmJiAoXG5cdFx0XHRcdFx0XHRcdChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucyhcIkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luXCIpIHx8XG5cdFx0XHRcdFx0XHRcdChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucyhcIkh5cGVyTUQtY29kZWJsb2NrX0h5cGVyTUQtY29kZWJsb2NrLWJnXCIpIHx8XG5cdFx0XHRcdFx0XHRcdChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucyhcIkh5cGVyTUQtY29kZWJsb2NrLWVuZFwiKVxuXHRcdFx0XHRcdFx0KSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmZvcmNlVXBkYXRlKHZpZXcpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodmlldy5jb250ZW50RE9NLCAge1xuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IHRydWUsXG5cdFx0XHRcdFx0Y2hpbGRMaXN0OiB0cnVlLFxuXHRcdFx0XHRcdHN1YnRyZWU6IHRydWUsXG5cdFx0XHRcdFx0YXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJ10sIC8vIE9ubHkgb2JzZXJ2ZSBjaGFuZ2VzIHRvIHRoZSAnY2xhc3MnIGF0dHJpYnV0ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcblx0XHRcdGZvcmNlVXBkYXRlKHZpZXc6IEVkaXRvclZpZXcpIHtcblx0XHRcdFx0dGhpcy5idWlsZERlY29yYXRpb25zKHZpZXcpO1xuXHRcdFx0XHR2aWV3LnJlcXVlc3RNZWFzdXJlKCk7XG5cdFx0XHR9XG5cdFx0XG5cdFx0XHR1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG5cdFx0XHRcdGlmICh1cGRhdGUuZG9jQ2hhbmdlZCB8fCBcblx0XHRcdFx0XHR1cGRhdGUudmlld3BvcnRDaGFuZ2VkIHx8IFxuXHRcdFx0XHRcdHVwZGF0ZS5zdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSAhPT0gdXBkYXRlLnN0YXJ0U3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkgfHxcblx0XHRcdFx0XHR0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2NrcyAhPT0gdGhpcy5jdXJyZW50U2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzIHx8XG5cdFx0XHRcdFx0dGhpcy5zZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlcyAhPT0gdGhpcy5jdXJyZW50U2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMgfHxcblx0XHRcdFx0XHR0aGlzLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlciAhPT0gdGhpcy5jdXJyZW50U2V0dGluZ3MuY29sbGFwc2VQbGFjZWhvbGRlciB8fFxuXHRcdFx0XHRcdCFhcnJheXNFcXVhbChPYmplY3Qua2V5cyh0aGlzLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKSx0aGlzLmN1cnJlbnRTZXR0aW5ncy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHRoaXMuY3VycmVudFNldHRpbmdzID0gc3RydWN0dXJlZENsb25lKHtcblx0XHRcdFx0XHRcdGV4Y2x1ZGVkQ29kZWJsb2NrczogdGhpcy5zZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MsXG5cdFx0XHRcdFx0XHRleGNsdWRlZExhbmd1YWdlczogdGhpcy5zZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlcyxcblx0XHRcdFx0XHRcdGNvbGxhcHNlUGxhY2Vob2xkZXI6IHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyLFxuXHRcdFx0XHRcdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiBPYmplY3Qua2V5cyh0aGlzLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModXBkYXRlLnZpZXcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XG5cdFx0XHRidWlsZERlY29yYXRpb25zKHZpZXc6IEVkaXRvclZpZXcpIHtcblx0XHRcdFx0aWYgKCF2aWV3Py52aXNpYmxlUmFuZ2VzPy5sZW5ndGggfHwgZWRpdGluZ1ZpZXdJZ25vcmUodmlldy5zdGF0ZSkpIHtcblx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuXHRcdFx0XHRjb25zdCBjb2RlYmxvY2tzID0gZmluZFVuZHVwbGljYXRlZENvZGVibG9ja3Modmlldyk7XG5cdFx0XHRcdGZvciAoY29uc3QgY29kZWJsb2NrIG9mIGNvZGVibG9ja3MpIHtcblx0XHRcdFx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycztcblx0XHRcdFx0XHRsZXQgZXhjbHVkZWRDb2RlYmxvY2s6IGJvb2xlYW4gPSBmYWxzZTtcblx0XHRcdFx0XHRsZXQgbGluZU51bWJlcjogbnVtYmVyID0gMDtcblx0XHRcdFx0XHRsZXQgbWF4TGluZU51bTogbnVtYmVyID0gMDtcblx0XHRcdFx0XHRsZXQgbGluZU51bWJlck1hcmdpbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcblx0XHRcdFx0XHRzeW50YXhUcmVlKHZpZXcuc3RhdGUpLml0ZXJhdGUoe2Zyb206IGNvZGVibG9jay5mcm9tLCB0bzogY29kZWJsb2NrLnRvLFxuXHRcdFx0XHRcdFx0ZW50ZXI6IChzeW50YXhOb2RlKT0+e1xuXHRcdFx0XHRcdFx0XHRjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZUF0KHN5bnRheE5vZGUuZnJvbSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGxpbmVUZXh0ID0gdmlldy5zdGF0ZS5zbGljZURvYyhsaW5lLmZyb20sbGluZS50byk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHN0YXJ0TGluZSA9IHN5bnRheE5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stYmVnaW5cIik7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGVuZExpbmUgPSBzeW50YXhOb2RlLnR5cGUubmFtZS5pbmNsdWRlcyhcIkh5cGVyTUQtY29kZWJsb2NrLWVuZFwiKTtcblx0XHRcdFx0XHRcdFx0aWYgKHN0YXJ0TGluZSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMgPSBwYXJzZUNvZGVibG9ja1BhcmFtZXRlcnModHJpbVBhcmFtZXRlckxpbmUobGluZVRleHQpLHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdFx0XHRleGNsdWRlZENvZGVibG9jayA9IGlzRXhjbHVkZWQoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxbdGhpcy5zZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MsdGhpcy5zZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlc10uam9pbignLCcpKSB8fCBjb2RlYmxvY2tQYXJhbWV0ZXJzLmlnbm9yZTtcblx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyID0gMDtcblx0XHRcdFx0XHRcdFx0XHRsZXQgbGluZU51bWJlckNvdW50ID0gbGluZS5udW1iZXIgKyAxO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBzdGFydERlbGltaXRlciA9IHRlc3RPcGVuaW5nTGluZShsaW5lVGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKHN0YXJ0RGVsaW1pdGVyICE9PSB0ZXN0T3BlbmluZ0xpbmUodmlldy5zdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyQ291bnQpLnRleHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyQ291bnQgKz0gMTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0bWF4TGluZU51bSA9IGxpbmVOdW1iZXJDb3VudCAtIGxpbmUubnVtYmVyIC0gMSArIGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChtYXhMaW5lTnVtLnRvU3RyaW5nKCkubGVuZ3RoID4gMilcblx0XHRcdFx0XHRcdFx0XHRcdGxpbmVOdW1iZXJNYXJnaW4gPSBtYXhMaW5lTnVtLnRvU3RyaW5nKCkubGVuZ3RoICogdmlldy5zdGF0ZS5maWVsZChjb2RlYmxvY2tMaW5lTnVtYmVyQ2hhcldpZHRoKTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyTWFyZ2luID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChleGNsdWRlZENvZGVibG9jaylcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdGlmIChzeW50YXhOb2RlLnR5cGUubmFtZS5pbmNsdWRlcyhcIkh5cGVyTUQtY29kZWJsb2NrXCIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0YnVpbGRlci5hZGQoc3ludGF4Tm9kZS5mcm9tLHN5bnRheE5vZGUuZnJvbSxEZWNvcmF0aW9uLmxpbmUoe2F0dHJpYnV0ZXM6IHtzdHlsZTogYC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoOiAke2xpbmVOdW1iZXJNYXJnaW4/bGluZU51bWJlck1hcmdpbisncHgnOidjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpIC0gMTJweCknfWAsIGNsYXNzOiAodGhpcy5zZXR0aW5ncy5zcGVjaWFsTGFuZ3VhZ2VzLnNvbWUocmVnRXhwID0+IG5ldyBSZWdFeHAocmVnRXhwKS50ZXN0KGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UpKXx8c3RhcnRMaW5lfHxlbmRMaW5lPydjb2RlLXN0eWxlci1saW5lJzpnZXRMaW5lQ2xhc3MoY29kZWJsb2NrUGFyYW1ldGVycyxsaW5lTnVtYmVyLGxpbmUudGV4dCkuam9pbignICcpKSsoW1wiXiRcIl0uY29uY2F0KHRoaXMuc2V0dGluZ3Muc3BlY2lhbExhbmd1YWdlcykuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpPycnOmAgbGFuZ3VhZ2UtJHtjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlfWApfX0pKTtcblx0XHRcdFx0XHRcdFx0XHRidWlsZGVyLmFkZChzeW50YXhOb2RlLmZyb20sc3ludGF4Tm9kZS5mcm9tLERlY29yYXRpb24ubGluZSh7fSkpO1xuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKHN5bnRheE5vZGUuZnJvbSxzeW50YXhOb2RlLmZyb20sRGVjb3JhdGlvbi53aWRnZXQoe3dpZGdldDogbmV3IExpbmVOdW1iZXJXaWRnZXQobGluZU51bWJlcixjb2RlYmxvY2tQYXJhbWV0ZXJzLG1heExpbmVOdW0sc3RhcnRMaW5lfHxlbmRMaW5lKX0pKTtcblx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyKys7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSBidWlsZGVyLmZpbmlzaCgpO1xuXHRcdFx0fVxuXHRcdFxuXHRcdFx0ZGVzdHJveSgpIHtcblx0XHRcdFx0dGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdGRlY29yYXRpb25zOiAodmFsdWUpID0+IHZhbHVlLmRlY29yYXRpb25zLFxuXHRcdFx0cHJvdmlkZTogKHBsdWdpbikgPT4gRWRpdG9yVmlldy5hdG9taWNSYW5nZXMub2YoKHZpZXcpPT52aWV3LnN0YXRlLmZpZWxkKGNvZGVibG9ja0NvbGxhcHNlKSB8fCBEZWNvcmF0aW9uLm5vbmUpLFxuXHRcdH1cblx0KTtcblx0Y29uc3QgY29kZWJsb2NrSGVhZGVyID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuXHRcdGNyZWF0ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdHJldHVybiBEZWNvcmF0aW9uLm5vbmU7ICAgIFxuXHRcdH0sXG5cdFx0dXBkYXRlKHZhbHVlOiBEZWNvcmF0aW9uU2V0LCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdGlmIChlZGl0aW5nVmlld0lnbm9yZSh0cmFuc2FjdGlvbi5zdGF0ZSkpXG5cdFx0XHRcdHJldHVybiBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuXHRcdFx0bGV0IGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0XHRsZXQgc3RhcnRMaW5lOiBib29sZWFuID0gdHJ1ZTtcblx0XHRcdGxldCBzdGFydERlbGltaXRlcjogc3RyaW5nID0gJ2BgYCc7XG5cdFx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHRyYW5zYWN0aW9uLnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmUgPSB0cmFuc2FjdGlvbi5zdGF0ZS5kb2MubGluZShpKTtcblx0XHRcdFx0Y29uc3QgbGluZVRleHQgPSBsaW5lLnRleHQudG9TdHJpbmcoKTtcblx0XHRcdFx0bGV0IGN1cnJlbnREZWxpbWl0ZXIgPSB0ZXN0T3BlbmluZ0xpbmUobGluZVRleHQpO1xuXHRcdFx0XHRpZiAoY3VycmVudERlbGltaXRlcikge1xuXHRcdFx0XHRcdGlmIChzdGFydExpbmUpIHtcblx0XHRcdFx0XHRcdHN0YXJ0TGluZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0c3RhcnREZWxpbWl0ZXIgPSBjdXJyZW50RGVsaW1pdGVyO1xuXHRcdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyh0cmltUGFyYW1ldGVyTGluZShsaW5lVGV4dCksc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdGlmICghaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLFtzZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3Msc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXNdLmpvaW4oJywnKSkgJiYgIWNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlKVxuXHRcdFx0XHRcdFx0XHRpZiAoIXNldHRpbmdzLnNwZWNpYWxMYW5ndWFnZXMuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpKVxuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKGxpbmUuZnJvbSxsaW5lLmZyb20sRGVjb3JhdGlvbi53aWRnZXQoe3dpZGdldDogbmV3IEhlYWRlcldpZGdldChjb2RlYmxvY2tQYXJhbWV0ZXJzLHNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncyxsYW5ndWFnZUljb25zKSwgYmxvY2s6IHRydWUsIHNpZGU6IC0xfSkpO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyID09PSBzdGFydERlbGltaXRlcilcblx0XHRcdFx0XHRcdFx0c3RhcnRMaW5lID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBidWlsZGVyLmZpbmlzaCgpO1xuXHRcdH0sXG5cdFx0cHJvdmlkZShmaWVsZDogU3RhdGVGaWVsZDxEZWNvcmF0aW9uU2V0Pik6IEV4dGVuc2lvbiB7XG5cdFx0XHRyZXR1cm4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGZpZWxkKTtcblx0XHR9XG5cdH0pXG5cdGNvbnN0IGNvZGVibG9ja0NvbGxhcHNlID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuXHRcdGNyZWF0ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdGlmIChlZGl0aW5nVmlld0lnbm9yZShzdGF0ZSkpXG5cdFx0XHRcdHJldHVybiBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuXHRcdFx0bGV0IGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0XHRsZXQgY29sbGFwc2VTdGFydDogTGluZSB8IG51bGwgPSBudWxsO1xuXHRcdFx0bGV0IGNvbGxhcHNlRW5kOiBMaW5lIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRsZXQgc3RhcnRMaW5lOiBib29sZWFuID0gdHJ1ZTtcblx0XHRcdGxldCBzdGFydERlbGltaXRlcjogc3RyaW5nID0gJ2BgYCc7XG5cdFx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGxpbmUgPSBzdGF0ZS5kb2MubGluZShpKTtcblx0XHRcdFx0Y29uc3QgbGluZVRleHQgPSBsaW5lLnRleHQudG9TdHJpbmcoKTtcblx0XHRcdFx0bGV0IGN1cnJlbnREZWxpbWl0ZXIgPSB0ZXN0T3BlbmluZ0xpbmUobGluZVRleHQpO1xuXHRcdFx0XHRpZiAoY3VycmVudERlbGltaXRlcikge1xuXHRcdFx0XHRcdGlmIChzdGFydExpbmUpIHtcblx0XHRcdFx0XHRcdHN0YXJ0TGluZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0c3RhcnREZWxpbWl0ZXIgPSBjdXJyZW50RGVsaW1pdGVyO1xuXHRcdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyh0cmltUGFyYW1ldGVyTGluZShsaW5lVGV4dCksc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdGlmICghaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLFtzZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3Msc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXNdLmpvaW4oJywnKSkgJiYgIWNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlICYmIGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkKVxuXHRcdFx0XHRcdFx0XHRpZiAoIXNldHRpbmdzLnNwZWNpYWxMYW5ndWFnZXMuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpKVxuXHRcdFx0XHRcdFx0XHRcdGNvbGxhcHNlU3RhcnQgPSBsaW5lO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyID09PSBzdGFydERlbGltaXRlcikge1xuXHRcdFx0XHRcdFx0XHRzdGFydExpbmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRpZiAoY29sbGFwc2VTdGFydClcblx0XHRcdFx0XHRcdFx0XHRjb2xsYXBzZUVuZCA9IGxpbmU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjb2xsYXBzZVN0YXJ0ICYmIGNvbGxhcHNlRW5kKSB7XG5cdFx0XHRcdFx0YnVpbGRlci5hZGQoY29sbGFwc2VTdGFydC5mcm9tLGNvbGxhcHNlRW5kLnRvLERlY29yYXRpb24ucmVwbGFjZSh7ZWZmZWN0OiBjb2xsYXBzZS5vZihEZWNvcmF0aW9uLnJlcGxhY2Uoe2Jsb2NrOiB0cnVlfSkucmFuZ2UoY29sbGFwc2VTdGFydC5mcm9tLGNvbGxhcHNlRW5kLnRvKSksIGJsb2NrOiB0cnVlLCBpbmNsdXNpdmU6IHRydWV9KSk7XG5cdFx0XHRcdFx0Y29sbGFwc2VTdGFydCA9IG51bGw7XG5cdFx0XHRcdFx0Y29sbGFwc2VFbmQgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYnVpbGRlci5maW5pc2goKTtcblx0XHR9LFxuXHRcdHVwZGF0ZSh2YWx1ZTogRGVjb3JhdGlvblNldCwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogRGVjb3JhdGlvblNldCB7XG5cdFx0XHR2YWx1ZSA9IHZhbHVlLm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKTtcblx0XHRcdGZvciAoY29uc3QgZWZmZWN0IG9mIHRyYW5zYWN0aW9uLmVmZmVjdHMpIHtcblx0XHRcdFx0aWYgKGVmZmVjdC5pcyhjb2xsYXBzZSkpXG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZS51cGRhdGUoe2FkZDogW2VmZmVjdC52YWx1ZV0sIHNvcnQ6IHRydWV9KTtcblx0XHRcdFx0ZWxzZSBpZiAoZWZmZWN0LmlzKHVuY29sbGFwc2UpKVxuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWUudXBkYXRlKHtmaWx0ZXJGcm9tOiBlZmZlY3QudmFsdWUuZmlsdGVyRnJvbSwgZmlsdGVyVG86IGVmZmVjdC52YWx1ZS5maWx0ZXJUbywgZmlsdGVyOiBlZmZlY3QudmFsdWUuZmlsdGVyfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0XHRwcm92aWRlKGZpZWxkOiBTdGF0ZUZpZWxkPERlY29yYXRpb25TZXQ+KTogRXh0ZW5zaW9uIHtcblx0XHRcdHJldHVybiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZmllbGQpO1xuXHRcdH0sXG5cdH0pXG5cdGNvbnN0IHRlbXBvcmFyaWx5VW5jb2xsYXBzZWQgPSBTdGF0ZUZpZWxkLmRlZmluZTxEZWNvcmF0aW9uU2V0Pih7XG5cdFx0Y3JlYXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IERlY29yYXRpb25TZXQge1xuXHRcdFx0cmV0dXJuIERlY29yYXRpb24ubm9uZTtcblx0XHR9LFxuXHRcdHVwZGF0ZSh2YWx1ZTogRGVjb3JhdGlvblNldCwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogRGVjb3JhdGlvblNldCB7XG5cdFx0XHR2YWx1ZSA9IHZhbHVlLm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKTtcblx0XHRcdGNvbnN0IHVuY29sbGFwc2VBbm5vdGF0aW9uID0gdHJhbnNhY3Rpb24uYW5ub3RhdGlvbih0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbik7XG5cdFx0XHRpZiAodW5jb2xsYXBzZUFubm90YXRpb24pIHtcblx0XHRcdFx0aWYgKHVuY29sbGFwc2VBbm5vdGF0aW9uLnVuY29sbGFwc2UpXG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZS51cGRhdGUoe2FkZDogW3VuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZV0sIHNvcnQ6IHRydWV9KTtcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWUudXBkYXRlKHtmaWx0ZXJGcm9tOiB1bmNvbGxhcHNlQW5ub3RhdGlvbi5kZWNvcmF0aW9uUmFuZ2UuZnJvbSwgZmlsdGVyVG86IHVuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZS50bywgZmlsdGVyOiAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCB2YWx1ZTogRGVjb3JhdGlvbik9PiEoZnJvbSA9PT0gdW5jb2xsYXBzZUFubm90YXRpb24uZGVjb3JhdGlvblJhbmdlLmZyb20gJiYgdG8gPT09IHVuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZS50byl9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdH0pXG5cdGNvbnN0IGlubGluZUNvZGVEZWNvcmF0b3IgPSBWaWV3UGx1Z2luLmZyb21DbGFzcyhcblx0XHRjbGFzcyBJbmxpbmVDb2RlRGVjb3JhdGlvbiB7XG5cdFx0XHRkZWNvcmF0aW9uczogRGVjb3JhdGlvblNldDtcblx0XHRcdC8vIGxvYWRlZExhbmd1YWdlczogUmVjb3JkPHN0cmluZyxMYW5ndWFnZVN1cHBvcnQ+OyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblxuXHRcdFx0Y29uc3RydWN0b3IodmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModmlldyk7XG5cdFx0XHRcdC8vIHRoaXMubG9hZGVkTGFuZ3VhZ2VzID0ge307IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0fVxuXG5cdFx0XHR1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG5cdFx0XHRcdGlmICh1cGRhdGUuZG9jQ2hhbmdlZCB8fCB1cGRhdGUudmlld3BvcnRDaGFuZ2VkIHx8IHVwZGF0ZS5zZWxlY3Rpb25TZXQgfHwgdXBkYXRlLnN0YXRlLmZpZWxkKGVkaXRvckxpdmVQcmV2aWV3RmllbGQpIT09dXBkYXRlLnN0YXJ0U3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkpIHtcblx0XHRcdFx0XHRpZiAodXBkYXRlLmRvY0NoYW5nZWQpXG5cdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucy5tYXAodXBkYXRlLmNoYW5nZXMpO1xuXHRcdFx0XHRcdHRoaXMuYnVpbGREZWNvcmF0aW9ucyh1cGRhdGUudmlldyk7XG5cdFx0XHRcdC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0XHQvLyBcdGNvbnN0IHRvSGlnaGxpZ2h0ID0gdGhpcy5idWlsZERlY29yYXRpb25zKHVwZGF0ZS52aWV3KTtcblx0XHRcdFx0Ly8gXHR0b0hpZ2hsaWdodC5mb3JFYWNoKChoaWdobGlnaHRTZXQpPT57XG5cdFx0XHRcdC8vIFx0XHRpZiAoIWhpZ2hsaWdodFNldD8ubGFuZ3VhZ2UpXG5cdFx0XHRcdC8vIFx0XHRcdHJldHVybjtcblx0XHRcdFx0Ly8gXHRcdGlmIChoaWdobGlnaHRTZXQubGFuZ3VhZ2UgaW4gdGhpcy5sb2FkZWRMYW5ndWFnZXMpIHtcblx0XHRcdFx0Ly8gXHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IGxhbmd1YWdlSGlnaGxpZ2h0KGhpZ2hsaWdodFNldCl9KTtcblx0XHRcdFx0Ly8gXHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFx0XHRcdGNvbnN0IGxhbmd1YWdlRGVzY3JpcHRpb24gPSBMYW5ndWFnZURlc2NyaXB0aW9uLm1hdGNoTGFuZ3VhZ2VOYW1lKGxhbmd1YWdlcyxoaWdobGlnaHRTZXQubGFuZ3VhZ2UpO1xuXHRcdFx0XHQvLyBcdFx0XHRpZiAoIWxhbmd1YWdlRGVzY3JpcHRpb24pXG5cdFx0XHRcdC8vIFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHQvLyBcdFx0XHRsYW5ndWFnZURlc2NyaXB0aW9uLmxvYWQoKS50aGVuKChsYW5ndWFnZVN1cHBvcnQpPT57XG5cdFx0XHRcdC8vIFx0XHRcdFx0dGhpcy5sb2FkZWRMYW5ndWFnZXNbaGlnaGxpZ2h0U2V0Lmxhbmd1YWdlXSA9IGxhbmd1YWdlU3VwcG9ydDtcblx0XHRcdFx0Ly8gXHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7fSk7XG5cdFx0XHRcdC8vIFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe2Fubm90YXRpb25zOiBzeW50YXhIaWdobGlnaHREZWNvcmF0aW9ucy5vZihtYXJrRGVjb3JhdGlvbnMpfSlcblx0XHRcdFx0Ly8gXHRcdFx0fSk7XG5cdFx0XHRcdC8vIFx0XHR9XG5cdFx0XHRcdC8vIFx0fSk7XG5cdFx0XHRcdC8vIH0gZWxzZSB7XG5cdFx0XHRcdC8vIFx0dXBkYXRlLnRyYW5zYWN0aW9ucy5mb3JFYWNoKCh0cmFuc2FjdGlvbik9Pntcblx0XHRcdFx0Ly8gXHRcdGNvbnN0IG1hcmtEZWNvcmF0aW9ucyA9IHRyYW5zYWN0aW9uLmFubm90YXRpb24oc3ludGF4SGlnaGxpZ2h0RGVjb3JhdGlvbnMpO1xuXHRcdFx0XHQvLyBcdFx0aWYgKG1hcmtEZWNvcmF0aW9ucylcblx0XHRcdFx0Ly8gXHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IG1hcmtEZWNvcmF0aW9uc30pXG5cdFx0XHRcdC8vIFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnVpbGREZWNvcmF0aW9ucyh2aWV3OiBFZGl0b3JWaWV3KTogdm9pZCB7IC8vQXJyYXk8e3N0YXJ0OiBudW1iZXIsIHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZ30+IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0XHRpZiAoIXZpZXc/LnZpc2libGVSYW5nZXM/Lmxlbmd0aCB8fCBlZGl0aW5nVmlld0lnbm9yZSh2aWV3LnN0YXRlKSkge1xuXHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdC8vIHJldHVybiBbXTsvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBsZXQgdG9IaWdobGlnaHQ6IEFycmF5PHtzdGFydDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmd9PiA9IFtdOyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblx0XHRcdFx0Zm9yIChjb25zdCB7ZnJvbSx0b30gb2Ygdmlldy52aXNpYmxlUmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN5bnRheFRyZWUodmlldy5zdGF0ZSkuaXRlcmF0ZSh7ZnJvbTogZnJvbSwgdG86IHRvLFxuXHRcdFx0XHRcdFx0ZW50ZXI6IChzeW50YXhOb2RlKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBuZXcgU2V0KHN5bnRheE5vZGUubm9kZS50eXBlLnByb3A8c3RyaW5nPih0b2tlbkNsYXNzTm9kZVByb3ApPy5zcGxpdChcIiBcIikpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIShwcm9wZXJ0aWVzLmhhcyhcImlubGluZS1jb2RlXCIpICYmICFwcm9wZXJ0aWVzLmhhcyhcImZvcm1hdHRpbmdcIikpKVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0bGV0IHByZXZpb3VzU2libGluZyA9IHN5bnRheE5vZGUubm9kZS5wcmV2U2libGluZztcblx0XHRcdFx0XHRcdFx0aWYgKCFwcmV2aW91c1NpYmxpbmcpXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRsZXQgZGVsaW1pdGVyU2l6ZSA9IHByZXZpb3VzU2libGluZy50by1wcmV2aW91c1NpYmxpbmcuZnJvbTtcblx0XHRcdFx0XHRcdFx0bGV0IGlubGluZUNvZGVUZXh0ID0gdmlldy5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcoc3ludGF4Tm9kZS5mcm9tLCBzeW50YXhOb2RlLnRvKTtcblx0XHRcdFx0XHRcdFx0bGV0IHtwYXJhbWV0ZXJzLHRleHR9ID0gcGFyc2VJbmxpbmVDb2RlKGlubGluZUNvZGVUZXh0KTtcblx0XHRcdFx0XHRcdFx0bGV0IGVuZE9mUGFyYW1ldGVycyA9IGlubGluZUNvZGVUZXh0Lmxhc3RJbmRleE9mKHRleHQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIXBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodGV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZpZXcuc3RhdGUuc2VsZWN0aW9uLnJhbmdlcy5zb21lKChyYW5nZTogU2VsZWN0aW9uUmFuZ2UpPT5yYW5nZS50byA+PSBzeW50YXhOb2RlLmZyb20tZGVsaW1pdGVyU2l6ZSAmJiByYW5nZS5mcm9tIDw9IHN5bnRheE5vZGUudG8rZGVsaW1pdGVyU2l6ZSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7ZmlsdGVyRnJvbTogc3ludGF4Tm9kZS5mcm9tLCBmaWx0ZXJUbzogc3ludGF4Tm9kZS5mcm9tLCBmaWx0ZXI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIHZhbHVlOiBEZWNvcmF0aW9uKT0+ZmFsc2V9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB2YWx1ZTogRGVjb3JhdGlvbi5yZXBsYWNlKHt9KX1dfSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2aWV3LnN0YXRlLnNlbGVjdGlvbi5yYW5nZXMuc29tZSgocmFuZ2U6IFNlbGVjdGlvblJhbmdlKT0+cmFuZ2UudG8gPj0gc3ludGF4Tm9kZS5mcm9tLWRlbGltaXRlclNpemUgJiYgcmFuZ2UuZnJvbSA8PSBzeW50YXhOb2RlLnRvK2RlbGltaXRlclNpemUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zLmJldHdlZW4oc3ludGF4Tm9kZS5mcm9tLCBzeW50YXhOb2RlLmZyb20sIChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIGRlY29yYXRpb25WYWx1ZTogRGVjb3JhdGlvbik9Pntcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHtmaWx0ZXJGcm9tOiBmcm9tLCBmaWx0ZXJUbzogdG8sIGZpbHRlcjogKGZyb206IG51bWJlciwgdG86IG51bWJlciwgdmFsdWU6IERlY29yYXRpb24pPT5mYWxzZX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucy51cGRhdGUoe2FkZDogW3tmcm9tOiBzeW50YXhOb2RlLmZyb20sIHRvOiBzeW50YXhOb2RlLmZyb20gKyBlbmRPZlBhcmFtZXRlcnMsIHZhbHVlOiBEZWNvcmF0aW9uLm1hcmsoe2NsYXNzOiAnY29kZS1zdHlsZXItaW5saW5lLXBhcmFtZXRlcnMnfSl9XX0pO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZGVjb3JhdGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zLmJldHdlZW4oc3ludGF4Tm9kZS5mcm9tLCBzeW50YXhOb2RlLmZyb20sIChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIGRlY29yYXRpb25WYWx1ZTogRGVjb3JhdGlvbik9Pntcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFkZWNvcmF0aW9uVmFsdWUuc3BlYz8uY2xhc3MpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVjb3JhdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFkZWNvcmF0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB2YWx1ZTogRGVjb3JhdGlvbi5yZXBsYWNlKHt9KX1dfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChwYXJhbWV0ZXJzPy50aXRsZSB8fCAocGFyYW1ldGVycz8uaWNvbiAmJiBnZXRMYW5ndWFnZUljb24ocGFyYW1ldGVycy5sYW5ndWFnZSxsYW5ndWFnZUljb25zKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tLCB2YWx1ZTogRGVjb3JhdGlvbi5yZXBsYWNlKHt3aWRnZXQ6IG5ldyBPcGVuZXJXaWRnZXQocGFyYW1ldGVycyxsYW5ndWFnZUljb25zKX0pfV19KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFzZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodClcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucy51cGRhdGUoe2ZpbHRlckZyb206IHN5bnRheE5vZGUuZnJvbSArIGVuZE9mUGFyYW1ldGVycysxLCBmaWx0ZXJUbzogc3ludGF4Tm9kZS50bywgZmlsdGVyOiAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCBkZWNvcmF0aW9uVmFsdWU6IERlY29yYXRpb24pPT5mYWxzZX0pO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBtb2RlSGlnaGxpZ2h0KHtzdGFydDogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB0ZXh0OiB0ZXh0LCBsYW5ndWFnZTogcGFyYW1ldGVycy5sYW5ndWFnZX0pfSk7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gdG9IaWdobGlnaHQucHVzaCh7c3RhcnQ6IHN5bnRheE5vZGUuZnJvbSArIGVuZE9mUGFyYW1ldGVycywgdGV4dDogdGV4dCwgbGFuZ3VhZ2U6IHBhcmFtZXRlcnMubGFuZ3VhZ2V9KTsgLy9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG5cdFx0XHRcdC8vIHJldHVybiB0b0hpZ2hsaWdodDsgLy9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRkZWNvcmF0aW9uczogKHZhbHVlKSA9PiB2YWx1ZS5kZWNvcmF0aW9ucyxcblx0XHR9XG5cdClcblx0ZnVuY3Rpb24gY3Vyc29ySW50b0NvbGxhcHNlZFRyYW5zYWN0aW9uRmlsdGVyKCkge1xuXHRcdHJldHVybiBFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkZpbHRlci5vZigodHJhbnNhY3Rpb24pID0+IHtcblx0XHRcdGxldCBleHRyYVRyYW5zYWN0aW9uczogQXJyYXk8VHJhbnNhY3Rpb25TcGVjPiA9IFtdO1xuXHRcdFx0bGV0IGNvbGxhcHNlZFJhbmdlU2V0ID0gdHJhbnNhY3Rpb24uc3RhcnRTdGF0ZS5maWVsZChjb2RlYmxvY2tDb2xsYXBzZSxmYWxzZSkgPz8gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0bGV0IHRlbXBvcmFyaWx5VW5jb2xsYXBzZWRSYW5nZVNldCA9IHRyYW5zYWN0aW9uLnN0YXJ0U3RhdGUuZmllbGQodGVtcG9yYXJpbHlVbmNvbGxhcHNlZCxmYWxzZSkgPz8gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0dHJhbnNhY3Rpb24ubmV3U2VsZWN0aW9uLnJhbmdlcy5mb3JFYWNoKChyYW5nZTogU2VsZWN0aW9uUmFuZ2UpPT57XG5cdFx0XHRcdGNvbGxhcHNlZFJhbmdlU2V0Lm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKS5iZXR3ZWVuKHJhbmdlLmZyb20sIHJhbmdlLnRvLCAoY29sbGFwc2VTdGFydEZyb20sIGNvbGxhcHNlRW5kVG8sIGRlY29yYXRpb25WYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGlmIChjb2xsYXBzZVN0YXJ0RnJvbSA8PSByYW5nZS5oZWFkICYmIHJhbmdlLmhlYWQgPD0gY29sbGFwc2VFbmRUbylcblx0XHRcdFx0XHRcdGV4dHJhVHJhbnNhY3Rpb25zLnB1c2goe2VmZmVjdHM6IHVuY29sbGFwc2Uub2Yoe2ZpbHRlcjogKGZyb20sdG8pID0+ICh0byA8PSBjb2xsYXBzZVN0YXJ0RnJvbSB8fCBmcm9tID49IGNvbGxhcHNlRW5kVG8pLCBmaWx0ZXJGcm9tOiBjb2xsYXBzZVN0YXJ0RnJvbSwgZmlsdGVyVG86IGNvbGxhcHNlRW5kVG99KSwgYW5ub3RhdGlvbnM6IHRlbXBvcmFyeVVuY29sbGFwc2VBbm5vdGF0aW9uLm9mKHtkZWNvcmF0aW9uUmFuZ2U6IHtmcm9tOiBjb2xsYXBzZVN0YXJ0RnJvbSwgdG86IGNvbGxhcHNlRW5kVG8sIHZhbHVlOiBkZWNvcmF0aW9uVmFsdWV9LCB1bmNvbGxhcHNlOiB0cnVlfSl9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGZvciAobGV0IGl0ZXIgPSB0ZW1wb3JhcmlseVVuY29sbGFwc2VkUmFuZ2VTZXQubWFwKHRyYW5zYWN0aW9uLmNoYW5nZXMpLml0ZXIoKTsgaXRlci52YWx1ZSAhPT0gbnVsbDsgaXRlci5uZXh0KCkpIHtcblx0XHRcdFx0XHRpZiAoIShpdGVyLmZyb20gPD0gcmFuZ2UuaGVhZCAmJiByYW5nZS5oZWFkIDw9IGl0ZXIudG8pKVxuXHRcdFx0XHRcdFx0ZXh0cmFUcmFuc2FjdGlvbnMucHVzaCh7ZWZmZWN0czogY29sbGFwc2Uub2YoRGVjb3JhdGlvbi5yZXBsYWNlKHtibG9jazogdHJ1ZX0pLnJhbmdlKGl0ZXIuZnJvbSxpdGVyLnRvKSksIGFubm90YXRpb25zOiB0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbi5vZih7ZGVjb3JhdGlvblJhbmdlOiB7ZnJvbTogaXRlci5mcm9tLCB0bzogaXRlci50bywgdmFsdWU6IGl0ZXIudmFsdWV9LCB1bmNvbGxhcHNlOiBmYWxzZX0pfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKGV4dHJhVHJhbnNhY3Rpb25zKVxuXHRcdFx0XHRyZXR1cm4gW3RyYW5zYWN0aW9uLC4uLmV4dHJhVHJhbnNhY3Rpb25zXTtcblx0XHRcdHJldHVybiB0cmFuc2FjdGlvbjtcblx0XHR9KVxuXHR9XG5cblx0Y2xhc3MgTGluZU51bWJlcldpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuXHRcdGxpbmVOdW1iZXI6IG51bWJlcjtcblx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRcdG1heExpbmVOdW06IG51bWJlclxuXHRcdGVtcHR5OiBib29sZWFuO1xuXHRcblx0XHRjb25zdHJ1Y3RvcihsaW5lTnVtYmVyOiBudW1iZXIsIGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIG1heExpbmVOdW06IG51bWJlciwgZW1wdHk6IGJvb2xlYW4pIHtcblx0XHRcdHN1cGVyKCk7XG5cdFx0XHR0aGlzLmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyO1xuXHRcdFx0dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzID0gY29kZWJsb2NrUGFyYW1ldGVycztcblx0XHRcdHRoaXMubWF4TGluZU51bSA9IG1heExpbmVOdW1cblx0XHRcdHRoaXMuZW1wdHkgPSBlbXB0eTtcblx0XHR9XG5cdFxuXHRcdGVxKG90aGVyOiBMaW5lTnVtYmVyV2lkZ2V0KTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5saW5lTnVtYmVyID09PSBvdGhlci5saW5lTnVtYmVyICYmIHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkID09PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQgJiYgdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkID09PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkICYmIHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQgPT09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0ICYmIHRoaXMubWF4TGluZU51bSA9PT0gb3RoZXIubWF4TGluZU51bSAmJiB0aGlzLmVtcHR5ID09PSBvdGhlci5lbXB0eTtcblx0XHR9XG5cdFxuXHRcdHRvRE9NKHZpZXc6IEVkaXRvclZpZXcpOiBIVE1MRWxlbWVudCB7XG5cdFx0XHRsZXQgbGluZU51bWJlckRpc3BsYXkgPSAnJztcblx0XHRcdGlmICghdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQgJiYgdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkKVxuXHRcdFx0XHRsaW5lTnVtYmVyRGlzcGxheSA9ICctaGlkZSdcblx0XHRcdGVsc2UgaWYgKHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkICYmICF0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQpXG5cdFx0XHRcdGxpbmVOdW1iZXJEaXNwbGF5ID0gJy1zcGVjaWZpYydcblx0XHRcdHJldHVybiBjcmVhdGVTcGFuKHthdHRyOiB7c3R5bGU6IHRoaXMubWF4TGluZU51bS50b1N0cmluZygpLmxlbmd0aCA+ICh0aGlzLmxpbmVOdW1iZXIgKyB0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0KS50b1N0cmluZygpLmxlbmd0aD8nd2lkdGg6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci13aWR0aCk7JzonJ30sIGNsczogYGNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJHtsaW5lTnVtYmVyRGlzcGxheX1gLCB0ZXh0OiB0aGlzLmVtcHR5PycnOih0aGlzLmxpbmVOdW1iZXIgKyB0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0KS50b1N0cmluZygpfSk7XG5cdFx0fVxuXHR9XG5cdGNsYXNzIEhlYWRlcldpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0dGhlbWVTZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3M7XG5cdFx0bGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+O1xuXHRcdHZpZXc6IEVkaXRvclZpZXc7XG5cdFx0bXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblx0XG5cdFx0Y29uc3RydWN0b3IoY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgdGhlbWVTZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPikge1xuXHRcdFx0c3VwZXIoKTtcblx0XHRcdHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycyA9IGNvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0XHR0aGlzLnRoZW1lU2V0dGluZ3MgPSB0aGVtZVNldHRpbmdzO1xuXHRcdFx0dGhpcy5sYW5ndWFnZUljb25zID0gbGFuZ3VhZ2VJY29ucztcblx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcblx0XHRcdFx0bXV0YXRpb25zLmZvckVhY2gobXV0YXRpb24gPT4ge1xuXHRcdFx0XHRcdGlmICgobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5oYXNBdHRyaWJ1dGUoJ2RhdGEtY2xpY2tlZCcpKVxuXHRcdFx0XHRcdFx0Y29sbGFwc2VPbkNsaWNrKHRoaXMudmlldywobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KSlcblx0XHRcdFx0fSlcblx0XHRcdH0pOyAgICBcblx0XHR9XG5cdFx0XHRcblx0XHRlcShvdGhlcjogSGVhZGVyV2lkZ2V0KTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgPT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSAmJlxuXHRcdFx0XHR0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgPT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSAmJlxuXHRcdFx0XHR0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkID09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkICYmXG5cdFx0XHRcdHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLnBsYWNlaG9sZGVyID09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5wbGFjZWhvbGRlciAmJlxuXHRcdFx0XHR0aGlzLnRoZW1lU2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIgPT0gb3RoZXIudGhlbWVTZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlciAmJlxuXHRcdFx0XHRnZXRMYW5ndWFnZUljb24odGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLHRoaXMubGFuZ3VhZ2VJY29ucykgPT0gZ2V0TGFuZ3VhZ2VJY29uKG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2Usb3RoZXIubGFuZ3VhZ2VJY29ucylcblx0XHRcdFx0KTtcblx0XHR9XG5cdFx0XHRcblx0XHR0b0RPTSh2aWV3OiBFZGl0b3JWaWV3KTogSFRNTEVsZW1lbnQge1xuXHRcdFx0dGhpcy52aWV3ID0gdmlldztcblx0XHRcdGNvbnN0IGhlYWRlckNvbnRhaW5lciA9IGNyZWF0ZUhlYWRlcih0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMsIHRoaXMudGhlbWVTZXR0aW5ncywgdGhpcy5sYW5ndWFnZUljb25zKTtcblx0XHRcdGlmICh0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UhPT0nJylcblx0XHRcdFx0aGVhZGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoYGxhbmd1YWdlLSR7dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlfWApXG5cdFx0XHRoZWFkZXJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGhhbmRsZU1vdXNlRG93bik7XG5cdFxuXHRcdFx0dGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoaGVhZGVyQ29udGFpbmVyLHtcblx0XHRcdFx0YXR0cmlidXRlczogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGhlYWRlckNvbnRhaW5lcjtcblx0XHR9XG5cdFx0XHRcdFxuXHRcdGRlc3Ryb3koZG9tOiBIVE1MRWxlbWVudCkge1xuXHRcdFx0ZG9tLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtY2xpY2tlZFwiKTtcblx0XHRcdGRvbS5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaGFuZGxlTW91c2VEb3duKTtcblx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cdFx0fVxuXHRcblx0XHRpZ25vcmVFdmVudCgpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2xhc3MgT3BlbmVyV2lkZ2V0IGV4dGVuZHMgV2lkZ2V0VHlwZSB7XG5cdFx0aW5saW5lQ29kZVBhcmFtZXRlcnM6IElubGluZUNvZGVQYXJhbWV0ZXJzO1xuXHRcdGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPjtcblxuXHRcdGNvbnN0cnVjdG9yIChpbmxpbmVDb2RlUGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnMsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPikge1xuXHRcdFx0c3VwZXIoKTtcblx0XHRcdHRoaXMuaW5saW5lQ29kZVBhcmFtZXRlcnMgPSBpbmxpbmVDb2RlUGFyYW1ldGVycztcblx0XHRcdHRoaXMubGFuZ3VhZ2VJY29ucyA9IGxhbmd1YWdlSWNvbnM7XG5cdFx0fVxuXG5cdFx0ZXEob3RoZXI6IE9wZW5lcldpZGdldCk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5pbmxpbmVDb2RlUGFyYW1ldGVycy5sYW5ndWFnZSA9PSBvdGhlci5pbmxpbmVDb2RlUGFyYW1ldGVycy5sYW5ndWFnZSAmJlxuXHRcdFx0XHR0aGlzLmlubGluZUNvZGVQYXJhbWV0ZXJzLnRpdGxlID09IG90aGVyLmlubGluZUNvZGVQYXJhbWV0ZXJzLnRpdGxlICYmXG5cdFx0XHRcdHRoaXMuaW5saW5lQ29kZVBhcmFtZXRlcnMuaWNvbiA9PSBvdGhlci5pbmxpbmVDb2RlUGFyYW1ldGVycy5pY29uICYmXG5cdFx0XHRcdGdldExhbmd1YWdlSWNvbih0aGlzLmlubGluZUNvZGVQYXJhbWV0ZXJzLmxhbmd1YWdlLHRoaXMubGFuZ3VhZ2VJY29ucykgPT0gZ2V0TGFuZ3VhZ2VJY29uKG90aGVyLmlubGluZUNvZGVQYXJhbWV0ZXJzLmxhbmd1YWdlLG90aGVyLmxhbmd1YWdlSWNvbnMpXG5cdFx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dG9ET00odmlldzogRWRpdG9yVmlldyk6IEhUTUxFbGVtZW50IHtcblx0XHRcdHJldHVybiBjcmVhdGVJbmxpbmVPcGVuZXIodGhpcy5pbmxpbmVDb2RlUGFyYW1ldGVycyx0aGlzLmxhbmd1YWdlSWNvbnMsWydjb2RlLXN0eWxlci1pbmxpbmUtb3BlbmVyJywnY20taW5saW5lLWNvZGUnXSk7XG5cdFx0fVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBjb2xsYXBzZU9uQ2xpY2sodmlldzogRWRpdG9yVmlldywgdGFyZ2V0OiBIVE1MRWxlbWVudCkge1xuXHRcdGNvbnN0IHBvc2l0aW9uID0gdmlldy5wb3NBdERPTSh0YXJnZXQpO1xuXHRcdGxldCBmb2xkZWQgPSBmYWxzZTtcblx0XHR2aWV3LnN0YXRlLmZpZWxkKGNvZGVibG9ja0NvbGxhcHNlLGZhbHNlKT8uYmV0d2Vlbihwb3NpdGlvbixwb3NpdGlvbiwoKT0+e1xuXHRcdFx0Zm9sZGVkID0gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdGxldCBjb2xsYXBzZVN0YXJ0OiBMaW5lIHwgbnVsbCA9IG51bGw7XG5cdFx0bGV0IGNvbGxhcHNlRW5kOiBMaW5lIHwgbnVsbCA9IG51bGw7XG5cdFx0bGV0IHN0YXJ0TGluZTogYm9vbGVhbiA9IHRydWU7XG5cdFx0bGV0IHN0YXJ0RGVsaW1pdGVyOiBzdHJpbmcgPSAnYGBgJztcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHZpZXcuc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcblx0XHRcdGNvbnN0IGxpbmUgPSB2aWV3LnN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdFx0Y29uc3QgbGluZVRleHQgPSBsaW5lLnRleHQudG9TdHJpbmcoKTtcblx0XHRcdGxldCBjdXJyZW50RGVsaW1pdGVyID0gdGVzdE9wZW5pbmdMaW5lKGxpbmVUZXh0KTtcblx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyKSB7XG5cdFx0XHRcdGlmIChzdGFydExpbmUpIHtcblx0XHRcdFx0XHRzdGFydERlbGltaXRlciA9IGN1cnJlbnREZWxpbWl0ZXI7XG5cdFx0XHRcdFx0c3RhcnRMaW5lID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKHBvc2l0aW9uID09PSBsaW5lLmZyb20pXG5cdFx0XHRcdFx0XHRjb2xsYXBzZVN0YXJ0ID0gbGluZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpZiAoY3VycmVudERlbGltaXRlciA9PT0gc3RhcnREZWxpbWl0ZXIpIHtcblx0XHRcdFx0XHRcdHN0YXJ0TGluZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRpZiAoY29sbGFwc2VTdGFydClcblx0XHRcdFx0XHRcdFx0Y29sbGFwc2VFbmQgPSBsaW5lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGNvbGxhcHNlU3RhcnQgJiYgY29sbGFwc2VFbmQpIHtcblx0XHRcdFx0aWYgKGZvbGRlZClcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtlZmZlY3RzOiB1bmNvbGxhcHNlLm9mKHtmaWx0ZXI6IChmcm9tLHRvKSA9PiAodG8gPD0gKGNvbGxhcHNlU3RhcnQgYXMgTGluZSkuZnJvbSB8fCBmcm9tID49IChjb2xsYXBzZUVuZCBhcyBMaW5lKS50byksIGZpbHRlckZyb206IGNvbGxhcHNlRW5kLmZyb20sIGZpbHRlclRvOiBjb2xsYXBzZUVuZC50b30pfSk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR2aWV3LmRpc3BhdGNoKHtlZmZlY3RzOiBjb2xsYXBzZS5vZihEZWNvcmF0aW9uLnJlcGxhY2Uoe2Jsb2NrOiB0cnVlfSkucmFuZ2UoY29sbGFwc2VTdGFydC5mcm9tLGNvbGxhcHNlRW5kLnRvKSl9KTtcblx0XHRcdFx0dmlldy5yZXF1ZXN0TWVhc3VyZSgpO1xuXHRcdFx0XHRjb2xsYXBzZVN0YXJ0ID0gbnVsbDtcblx0XHRcdFx0Y29sbGFwc2VFbmQgPSBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLnNldEF0dHJpYnV0ZShcImRhdGEtY2xpY2tlZFwiLFwidHJ1ZVwiKTtcblx0fVxuXG5cdGNvbnN0IGNvbGxhcHNlOiBTdGF0ZUVmZmVjdFR5cGU8UmFuZ2U8RGVjb3JhdGlvbj4+ID0gU3RhdGVFZmZlY3QuZGVmaW5lKCk7XG5cdGNvbnN0IHVuY29sbGFwc2U6IFN0YXRlRWZmZWN0VHlwZTx7ZmlsdGVyOiAoZnJvbTogYW55LCB0bzogYW55KSA9PiBib29sZWFuLCBmaWx0ZXJGcm9tOiBudW1iZXIsIGZpbHRlclRvOiBudW1iZXJ9PiA9IFN0YXRlRWZmZWN0LmRlZmluZSgpO1xuXHRjb25zdCB0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbiA9IEFubm90YXRpb24uZGVmaW5lPHtkZWNvcmF0aW9uUmFuZ2U6IFJhbmdlPERlY29yYXRpb24+LCB1bmNvbGxhcHNlOiBib29sZWFufT4oKTtcblxuXHRyZXR1cm4gW2NvZGVibG9ja0xpbmVOdW1iZXJDaGFyV2lkdGgsY29kZWJsb2NrTGluZXMsY29kZWJsb2NrSGVhZGVyLGNvZGVibG9ja0NvbGxhcHNlLHRlbXBvcmFyaWx5VW5jb2xsYXBzZWQsaW5saW5lQ29kZURlY29yYXRvcixjdXJzb3JJbnRvQ29sbGFwc2VkVHJhbnNhY3Rpb25GaWx0ZXIoKV07XG59XG5cbmZ1bmN0aW9uIGdldENoYXJXaWR0aChzdGF0ZTogRWRpdG9yU3RhdGUsIGRlZmF1bHRfdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG5cdGxldCBjaGFyV2lkdGhzID0gQXJyYXkuZnJvbShzdGF0ZS5maWVsZChlZGl0b3JFZGl0b3JGaWVsZCkuY29udGVudERPTS5xdWVyeVNlbGVjdG9yQWxsKFwiLkh5cGVyTUQtY29kZWJsb2NrLWVuZFwiKSkucmVkdWNlKChyZXN1bHQ6IEFycmF5PG51bWJlcj4sYmVnaW5uaW5nRWxlbWVudDogSFRNTEVsZW1lbnQpOiBBcnJheTxudW1iZXI+ID0+IHtcblx0XHRsZXQgbmV4dEVsZW1lbnQgPSBiZWdpbm5pbmdFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0aWYgKCFuZXh0RWxlbWVudClcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0bGV0IGxpbmVOdW1iZXJFbGVtZW50ID0gbmV4dEVsZW1lbnQucXVlcnlTZWxlY3RvcihcIltjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ11cIikgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0aWYgKCFsaW5lTnVtYmVyRWxlbWVudCB8fCBsaW5lTnVtYmVyRWxlbWVudC5pbm5lclRleHQubGVuZ3RoIDw9IDIpXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdGxldCBjb21wdXRlZFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGxpbmVOdW1iZXJFbGVtZW50LCBudWxsKTtcblx0XHRyZXN1bHQucHVzaCgobGluZU51bWJlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGVzLnBhZGRpbmdMZWZ0KSAtIHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZXMucGFkZGluZ1JpZ2h0KSkgLyBsaW5lTnVtYmVyRWxlbWVudC5pbm5lclRleHQubGVuZ3RoKVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sW10pXG5cdGlmIChjaGFyV2lkdGhzLmxlbmd0aCA9PT0gMClcblx0XHRyZXR1cm4gZGVmYXVsdF92YWx1ZTtcblx0cmV0dXJuIGNoYXJXaWR0aHMucmVkdWNlKChyZXN1bHQsdmFsdWUpPT5yZXN1bHQrdmFsdWUsMCkgLyBjaGFyV2lkdGhzLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gZmluZFVuZHVwbGljYXRlZENvZGVibG9ja3ModmlldzogRWRpdG9yVmlldyk6IEFycmF5PFN5bnRheE5vZGVSZWY+IHtcblx0Y29uc3QgY29kZWJsb2NrcyA9IGZpbmRWaXNpYmxlQ29kZWJsb2Nrcyh2aWV3KTtcblx0Y29uc3QgdW5kdXBsaWNhdGVkQ29kZWJsb2NrczogQXJyYXk8U3ludGF4Tm9kZVJlZj4gPSBbXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb2RlYmxvY2tzLmxlbmd0aDsgaSsrKVxuXHRcdGlmIChpID09PSAwIHx8IGNvZGVibG9ja3NbaV0uZnJvbSAhPT0gY29kZWJsb2Nrc1tpIC0gMV0uZnJvbSlcblx0XHRcdHVuZHVwbGljYXRlZENvZGVibG9ja3MucHVzaChjb2RlYmxvY2tzW2ldKTtcblx0cmV0dXJuIHVuZHVwbGljYXRlZENvZGVibG9ja3M7XG59XG5mdW5jdGlvbiBmaW5kVmlzaWJsZUNvZGVibG9ja3ModmlldzogRWRpdG9yVmlldyk6IEFycmF5PFN5bnRheE5vZGVSZWY+IHtcblx0cmV0dXJuIGZpbmRDb2RlYmxvY2tzKHZpZXcpLmZpbHRlcigoY29kZWJsb2NrKSA9PiB7XG5cdFx0cmV0dXJuIHZpZXcudmlzaWJsZVJhbmdlcy5zb21lKCh2aXNpYmxlUmFuZ2UpID0+IGNvZGVibG9jay5mcm9tIDwgdmlzaWJsZVJhbmdlLnRvICYmIGNvZGVibG9jay50byA+IHZpc2libGVSYW5nZS5mcm9tKVxuXHR9KVxufVxuZnVuY3Rpb24gZmluZENvZGVibG9ja3ModmlldzogRWRpdG9yVmlldyk6IEFycmF5PFN5bnRheE5vZGVSZWY+IHtcblx0Y29uc3QgY29kZWJsb2NrczogQXJyYXk8U3ludGF4Tm9kZVJlZj4gPSBbXTtcblx0c3ludGF4VHJlZSh2aWV3LnN0YXRlKS5pdGVyYXRlKHtcblx0XHRlbnRlcjogKHN5bnRheE5vZGUpID0+IHtcblx0XHRcdGlmIChzeW50YXhOb2RlLnR5cGUubmFtZS5pbmNsdWRlcyhcIkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luXCIpIHx8IHN5bnRheE5vZGUudHlwZS5uYW1lID09PSBcIkh5cGVyTUQtY29kZWJsb2NrX0h5cGVyTUQtY29kZWJsb2NrLWJnXCIgfHwgc3ludGF4Tm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1lbmRcIikpXG5cdFx0XHRcdGNvZGVibG9ja3MucHVzaChzeW50YXhOb2RlKTtcblx0XHR9XG5cdH0pXG5cdHJldHVybiBjb2RlYmxvY2tzO1xufVxuXG5mdW5jdGlvbiBsYW5ndWFnZUhpZ2hsaWdodCh7c3RhcnQsdGV4dCxsYW5ndWFnZX06IHtzdGFydDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmd9LGxvYWRlZExhbmd1YWdlczogUmVjb3JkPHN0cmluZyxMYW5ndWFnZVN1cHBvcnQ+KTogQXJyYXk8UmFuZ2U8RGVjb3JhdGlvbj4+IHtcblx0Ly9OT1RFOiBVc2VzIGNvZGVtaXJyb3IgNiBpbXBsZW1lbnRhdGlvbiB3aGljaCBPYnNpZGlhbiBkb2VzIG5vdCBjdXJyZW50bHkgdXNlXG5cdGxldCBtYXJrRGVjb3JhdGlvbnM6IEFycmF5PFJhbmdlPERlY29yYXRpb24+PiA9IFtdO1xuXHRjb25zdCB0cmVlID0gbG9hZGVkTGFuZ3VhZ2VzW2xhbmd1YWdlXS5sYW5ndWFnZS5wYXJzZXIucGFyc2UodGV4dCk7XG5cdGhpZ2hsaWdodFRyZWUodHJlZSxjbGFzc0hpZ2hsaWdodGVyLChmcm9tLHRvLHRva2VuKSA9PiB7IC8vdG9kbyAoQG1heXVyYW5rdikgQ2hhbmdlIHRoaXMgaGlnaGxpZ2h0ZXJcblx0XHRpZiAodG9rZW4pXG5cdFx0XHRtYXJrRGVjb3JhdGlvbnMucHVzaCh7ZnJvbTogc3RhcnQrZnJvbSwgdG86IHN0YXJ0K3RvLCB2YWx1ZTogRGVjb3JhdGlvbi5tYXJrKHtjbGFzczogdG9rZW59KX0pO1xuXHR9KTtcblx0cmV0dXJuIG1hcmtEZWNvcmF0aW9ucztcbn1cbmZ1bmN0aW9uIG1vZGVIaWdobGlnaHQgKHtzdGFydCx0ZXh0LGxhbmd1YWdlfToge3N0YXJ0OiBudW1iZXIsIHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZ30pOiBBcnJheTxSYW5nZTxEZWNvcmF0aW9uPj4ge1xuXHQvL05PVEU6IFVzZXMgQ29kZU1pcnJvciA1IGltcGxlbWVudGF0aW9uIHdoaWNoIE9ic2lkaWFuIGN1cnJlbnRseSB1c2VzXG5cdGxldCBtYXJrRGVjb3JhdGlvbnM6IEFycmF5PFJhbmdlPERlY29yYXRpb24+PiA9IFtdO1xuXHQvL0B0cy1leHBlY3QtZXJyb3IgVW5kb2N1bWVudGVkIE9ic2lkaWFuIEFQSVxuXHRjb25zdCBtb2RlID0gd2luZG93LkNvZGVNaXJyb3IuZ2V0TW9kZSh3aW5kb3cuQ29kZU1pcnJvci5kZWZhdWx0cyx3aW5kb3cuQ29kZU1pcnJvci5maW5kTW9kZUJ5TmFtZShsYW5ndWFnZSk/Lm1pbWUpOyAvLyBBbHRlcm5hdGl2ZXM6IGB0ZXh0L3gtJHtwYXJhbWV0ZXJzLmxhbmd1YWdlfWAsIHdpbmRvdy5Db2RlTWlycm9yLmZpbmRNb2RlQnlOYW1lKCdqcycpLm1pbWVcblx0bGV0IHN0YXRlID0gd2luZG93LkNvZGVNaXJyb3Iuc3RhcnRTdGF0ZShtb2RlKTtcblx0aWYgKG1vZGU/LnRva2VuKSB7XG5cdFx0bGV0IHN0cmVhbSA9IG5ldyB3aW5kb3cuQ29kZU1pcnJvci5TdHJpbmdTdHJlYW0odGV4dCk7XG5cdFx0d2hpbGUgKCFzdHJlYW0uZW9sKCkpIHtcblx0XHRcdGxldCBzdHlsZSA9IG1vZGUudG9rZW4oc3RyZWFtLHN0YXRlKTtcblx0XHRcdGlmIChzdHlsZSlcblx0XHRcdFx0bWFya0RlY29yYXRpb25zLnB1c2goe2Zyb206IHN0YXJ0K3N0cmVhbS5zdGFydCwgdG86IHN0YXJ0K3N0cmVhbS5wb3MsIHZhbHVlOiBEZWNvcmF0aW9uLm1hcmsoe2NsYXNzOiBgY20tJHtzdHlsZX1gfSl9KVxuXHRcdFx0c3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcztcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1hcmtEZWNvcmF0aW9ucztcbn1cblxuZnVuY3Rpb24gZWRpdGluZ1ZpZXdJZ25vcmUoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiB7XG5cdGlmICghc3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkpXG5cdFx0cmV0dXJuIHRydWU7XG5cdGNvbnN0IGZpbGVQYXRoID0gc3RhdGUuZmllbGQoZWRpdG9ySW5mb0ZpZWxkKT8uZmlsZT8ucGF0aDtcblx0aWYgKHR5cGVvZiBmaWxlUGF0aCAhPT0gJ3VuZGVmaW5lZCcpXG5cdFx0cmV0dXJuIHRoaXMuYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUoZmlsZVBhdGgpPy5mcm9udG1hdHRlcj8uWydjb2RlLXN0eWxlci1pZ25vcmUnXSA9PT0gdHJ1ZTtcblx0cmV0dXJuIGZhbHNlO1xufVxuIiwgImltcG9ydCB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCBDb2RlU3R5bGVyUGx1Z2luIGZyb20gXCIuL21haW5cIjtcbmltcG9ydCB7IENvZGVTdHlsZXJUaGVtZSB9IGZyb20gXCIuL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWJsb2NrUGFyYW1ldGVycyB7XG5cdGxhbmd1YWdlOiBzdHJpbmc7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdGZvbGQ6IHtcblx0XHRlbmFibGVkOiBib29sZWFuO1xuXHRcdHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdH1cblx0bGluZU51bWJlcnM6IHtcblx0XHRhbHdheXNFbmFibGVkOiBib29sZWFuO1xuXHRcdGFsd2F5c0Rpc2FibGVkOiBib29sZWFuO1xuXHRcdG9mZnNldDogbnVtYmVyO1xuXHR9LFxuXHRsaW5lVW53cmFwOiB7XG5cdFx0YWx3YXlzRW5hYmxlZDogYm9vbGVhbjtcblx0XHRhbHdheXNEaXNhYmxlZDogYm9vbGVhbjtcblx0XHRhY3RpdmVXcmFwOiBib29sZWFuO1xuXHR9LFxuXHRoaWdobGlnaHRzOiB7XG5cdFx0ZGVmYXVsdDogSGlnaGxpZ2h0cztcblx0XHRhbHRlcm5hdGl2ZTogUmVjb3JkPHN0cmluZyxIaWdobGlnaHRzPlxuXHR9LFxuXHRpZ25vcmU6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElubGluZUNvZGVQYXJhbWV0ZXJzIHtcblx0bGFuZ3VhZ2U6IHN0cmluZztcblx0dGl0bGU6IHN0cmluZztcblx0aWNvbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRzIHtcblx0bGluZU51bWJlcnM6IEFycmF5PG51bWJlcj47XG5cdHBsYWluVGV4dDogQXJyYXk8c3RyaW5nPjtcblx0cmVndWxhckV4cHJlc3Npb25zOiBBcnJheTxSZWdFeHA+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VDb2RlYmxvY2tTb3VyY2UoY29kZVNlY3Rpb246IEFycmF5PHN0cmluZz4sIHNvdXJjZVBhdGg6IHN0cmluZywgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTx7Y29kZWJsb2Nrc1BhcmFtZXRlcnM6IEFycmF5PENvZGVibG9ja1BhcmFtZXRlcnM+LCBuZXN0ZWQ6IGJvb2xlYW59PiB7XG5cdC8vQHRzLWV4cGVjdC1lcnJvciBVbmRvY3VtZW50ZWQgT2JzaWRpYW4gQVBJXG5cdGNvbnN0IHBsdWdpbnM6IFJlY29yZDxzdHJpbmcsYW55PiA9IHBsdWdpbi5hcHAucGx1Z2lucy5wbHVnaW5zO1xuXHRjb25zdCBhZG1vbml0aW9uczogYm9vbGVhbiA9ICdvYnNpZGlhbi1hZG1vbml0aW9uJyBpbiBwbHVnaW5zO1xuXHRsZXQgY29kZWJsb2NrczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBbXTtcblx0bGV0IGNvZGVibG9ja3NQYXJhbWV0ZXJzOiBBcnJheTxDb2RlYmxvY2tQYXJhbWV0ZXJzPiA9IFtdO1xuXHRmdW5jdGlvbiBwYXJzZUNvZGVibG9ja1NlY3Rpb24oY29kZVNlY3Rpb246IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvZGVTZWN0aW9uLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IG9wZW5pbmdDb2RlYmxvY2tMaW5lID0gZ2V0T3BlbmluZ0xpbmUoY29kZVNlY3Rpb24pO1xuXHRcdGlmICghb3BlbmluZ0NvZGVibG9ja0xpbmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBvcGVuRGVsaW1pdGVyID0gL15cXHMqKD86PlxccyopKigoPzpgYGArfH5+fispKS4qJC8uZXhlYyhvcGVuaW5nQ29kZWJsb2NrTGluZSk/LlsxXTtcblx0XHRpZiAoIW9wZW5EZWxpbWl0ZXIpXG4gICAgICAgICAgICByZXR1cm47XG5cdFx0bGV0IG9wZW5EZWxpbWl0ZXJJbmRleCA9IGNvZGVTZWN0aW9uLmluZGV4T2Yob3BlbmluZ0NvZGVibG9ja0xpbmUpO1xuXHRcdGxldCBjbG9zZURlbGltaXRlckluZGV4ID0gY29kZVNlY3Rpb24uc2xpY2Uob3BlbkRlbGltaXRlckluZGV4KzEpLmZpbmRJbmRleCgobGluZSk9PmxpbmUuaW5kZXhPZihvcGVuRGVsaW1pdGVyIGFzIHN0cmluZykhPT0tMSk7XG5cdFx0aWYgKCFhZG1vbml0aW9ucyB8fCAhL15cXHMqKD86PlxccyopKig/OmBgYCt8fn5+KykgKmFkLS4qJC8udGVzdChvcGVuaW5nQ29kZWJsb2NrTGluZSkpXG4gICAgICAgICAgICBjb2RlYmxvY2tzLnB1c2goY29kZVNlY3Rpb24uc2xpY2UoMCxvcGVuRGVsaW1pdGVySW5kZXgrMitjbG9zZURlbGltaXRlckluZGV4KSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcGFyc2VDb2RlYmxvY2tTZWN0aW9uKGNvZGVTZWN0aW9uLnNsaWNlKG9wZW5EZWxpbWl0ZXJJbmRleCsxLG9wZW5EZWxpbWl0ZXJJbmRleCsxK2Nsb3NlRGVsaW1pdGVySW5kZXgpKTtcbiAgICAgICAgXG5cdFx0cGFyc2VDb2RlYmxvY2tTZWN0aW9uKGNvZGVTZWN0aW9uLnNsaWNlKG9wZW5EZWxpbWl0ZXJJbmRleCsxK2Nsb3NlRGVsaW1pdGVySW5kZXgrMSkpO1xuXHR9XG5cdHBhcnNlQ29kZWJsb2NrU2VjdGlvbihjb2RlU2VjdGlvbik7XG5cdGZvciAobGV0IGNvZGVibG9ja0xpbmVzIG9mIGNvZGVibG9ja3MpIHtcblx0XHRsZXQgcGFyYW1ldGVyTGluZSA9IGdldFBhcmFtZXRlckxpbmUoY29kZWJsb2NrTGluZXMpO1xuXHRcdGlmICghcGFyYW1ldGVyTGluZSlcblx0XHRcdGNvbnRpbnVlO1xuXHRcdGxldCBjb2RlYmxvY2tQYXJhbWV0ZXJzID0gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzKHBhcmFtZXRlckxpbmUscGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcblx0XHRpZiAoaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLHBsdWdpbi5zZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MpKVxuXHRcdFx0Y29udGludWU7XG5cdFx0XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IGF3YWl0IHBsdWdpbkFkanVzdFBhcmFtZXRlcnMoY29kZWJsb2NrUGFyYW1ldGVycyxwbHVnaW5zLGNvZGVibG9ja0xpbmVzLHNvdXJjZVBhdGgpO1xuXHRcdGNvZGVibG9ja3NQYXJhbWV0ZXJzLnB1c2goY29kZWJsb2NrUGFyYW1ldGVycyk7XG5cdH1cblx0cmV0dXJuIHtjb2RlYmxvY2tzUGFyYW1ldGVyczogY29kZWJsb2Nrc1BhcmFtZXRlcnMsIG5lc3RlZDogY29kZWJsb2Nrc1swXT8hYXJyYXlzRXF1YWwoY29kZVNlY3Rpb24sY29kZWJsb2Nrc1swXSk6dHJ1ZX1cbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUlubGluZUNvZGUoY29kZVRleHQ6IHN0cmluZyk6IHtwYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycyB8IG51bGwsIHRleHQ6IHN0cmluZ30ge1xuXHRcblx0bGV0IG1hdGNoID0gL14oe30gPyk/eyhbXn1dKil9ID8oLiopJC8uZXhlYyhjb2RlVGV4dCk7XG5cdFxuXHRpZiAoIW1hdGNoPy5bMV0gJiYgIShtYXRjaD8uWzJdICYmIG1hdGNoPy5bM10pKVxuXHRcdHJldHVybiB7cGFyYW1ldGVyczogbnVsbCwgdGV4dDogJyd9O1xuXHRlbHNlIGlmIChtYXRjaD8uWzFdKVxuXHRcdHJldHVybiB7cGFyYW1ldGVyczogbnVsbCwgdGV4dDogbWF0Y2hbMF0uc3Vic3RyaW5nKG1hdGNoWzFdLmxlbmd0aCl9O1xuXHRlbHNlXG5cdFx0cmV0dXJuIHtwYXJhbWV0ZXJzOiBwYXJzZUlubGluZUNvZGVQYXJhbWV0ZXJzKG1hdGNoWzJdKSwgdGV4dDogbWF0Y2hbM119O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzKHBhcmFtZXRlckxpbmU6IHN0cmluZywgdGhlbWU6IENvZGVTdHlsZXJUaGVtZSk6IENvZGVibG9ja1BhcmFtZXRlcnMge1xuXHRsZXQgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycyA9IHtcblx0XHRsYW5ndWFnZTogJycsXG5cdFx0dGl0bGU6ICcnLFxuXHRcdGZvbGQ6IHtcblx0XHRcdGVuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0cGxhY2Vob2xkZXI6ICcnLFxuXHRcdH0sXG5cdFx0bGluZU51bWJlcnM6IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWx3YXlzRGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0b2Zmc2V0OiAwLFxuXHRcdH0sXG5cdFx0bGluZVVud3JhcDoge1xuXHRcdFx0YWx3YXlzRW5hYmxlZDogZmFsc2UsXG5cdFx0XHRhbHdheXNEaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRhY3RpdmVXcmFwOiBmYWxzZSxcblx0XHR9LFxuXHRcdGhpZ2hsaWdodHM6IHtcblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0bGluZU51bWJlcnM6IFtdLFxuXHRcdFx0XHRwbGFpblRleHQ6IFtdLFxuXHRcdFx0XHRyZWd1bGFyRXhwcmVzc2lvbnM6IFtdLFxuXHRcdFx0fSxcblx0XHRcdGFsdGVybmF0aXZlOiB7fSxcblx0XHR9LFxuXHRcdGlnbm9yZTogZmFsc2UsXG5cdH1cblx0aWYgKHBhcmFtZXRlckxpbmUuc3RhcnRzV2l0aCgnYGBgJykpIHtcblx0XHRwYXJhbWV0ZXJMaW5lID0gcGFyYW1ldGVyTGluZS5yZXBsYWNlKC9eYGBgKyg/PVteYF18JCkvLCcnKTtcblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJMaW5lLnN0YXJ0c1dpdGgoJ35+ficpKSB7XG5cdFx0cGFyYW1ldGVyTGluZSA9IHBhcmFtZXRlckxpbmUucmVwbGFjZSgvXn5+fisoPz1bXn5dfCQpLywnJyk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvZGVibG9ja1BhcmFtZXRlcnM7XG5cdH1cblx0bGV0IGxhbmd1YWdlQnJlYWsgPSBwYXJhbWV0ZXJMaW5lLmluZGV4T2YoJyAnKTtcblx0Y29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9IHBhcmFtZXRlckxpbmUuc2xpY2UoMCxsYW5ndWFnZUJyZWFrICE9PSAtMT9sYW5ndWFnZUJyZWFrOnBhcmFtZXRlckxpbmUubGVuZ3RoKS50b0xvd2VyQ2FzZSgpO1xuXHRpZiAobGFuZ3VhZ2VCcmVhayA9PT0gLTEpXG5cdFx0cmV0dXJuIGNvZGVibG9ja1BhcmFtZXRlcnM7XG5cdGNvbnN0IHBhcmFtZXRlclN0cmluZ3MgPSBwYXJhbWV0ZXJMaW5lLnNsaWNlKGxhbmd1YWdlQnJlYWsrMSkubWF0Y2goLyg/OlteXFxzXCInXSt8XCJbXlwiXSpcInwnW14nXSonKSsvZyk7XG5cdGlmICghcGFyYW1ldGVyU3RyaW5ncylcblx0XHRyZXR1cm4gY29kZWJsb2NrUGFyYW1ldGVycztcblx0cGFyYW1ldGVyU3RyaW5ncy5mb3JFYWNoKChwYXJhbWV0ZXJTdHJpbmcpID0+IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVyU3RyaW5nKHBhcmFtZXRlclN0cmluZyxjb2RlYmxvY2tQYXJhbWV0ZXJzLHRoZW1lKSk7XG5cdHJldHVybiBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBsdWdpbkFkanVzdFBhcmFtZXRlcnMoY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgcGx1Z2luczogUmVjb3JkPHN0cmluZyxhbnk+LCBjb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPiwgc291cmNlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxDb2RlYmxvY2tQYXJhbWV0ZXJzPiB7XG5cdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlID09PSAncHJldmlldycpIHtcblx0XHRpZiAoJ29ic2lkaWFuLWNvZGUtcHJldmlldycgaW4gcGx1Z2lucykge1xuXHRcdFx0bGV0IGNvZGVQcmV2aWV3UGFyYW1zID0gYXdhaXQgcGx1Z2luc1snb2JzaWRpYW4tY29kZS1wcmV2aWV3J10uY29kZShjb2RlYmxvY2tMaW5lcy5zbGljZSgxLC0xKS5qb2luKCdcXG4nKSxzb3VyY2VQYXRoKTtcblx0XHRcdGlmICghY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNEaXNhYmxlZCAmJiAhY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgY29kZVByZXZpZXdQYXJhbXMuc3RhcnQgPT09ICdudW1iZXInKVxuXHRcdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0ID0gY29kZVByZXZpZXdQYXJhbXMuc3RhcnQgLSAxO1xuXHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQgPSBjb2RlUHJldmlld1BhcmFtcy5saW5lTnVtYmVyO1xuXHRcdFx0fVxuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQubGluZU51bWJlcnMgPSBbLi4ubmV3IFNldChjb2RlYmxvY2tQYXJhbWV0ZXJzLmhpZ2hsaWdodHMuZGVmYXVsdC5saW5lTnVtYmVycy5jb25jYXQoQXJyYXkuZnJvbShwbHVnaW5zWydvYnNpZGlhbi1jb2RlLXByZXZpZXcnXS5hbmFseXplSGlnaExpZ2h0TGluZXMoY29kZVByZXZpZXdQYXJhbXMubGluZXMsY29kZVByZXZpZXdQYXJhbXMuaGlnaGxpZ2h0KSwoW251bSxfXTogW251bWJlcixudW1iZXJdKT0+KG51bSkpKSldO1xuXHRcdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgPT09ICcnKVxuXHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlID0gY29kZVByZXZpZXdQYXJhbXMuZmlsZVBhdGguc3BsaXQoJ1xcXFwnKS5wb3AoKS5zcGxpdCgnLycpLnBvcCgpO1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9IGNvZGVQcmV2aWV3UGFyYW1zLmxhbmd1YWdlO1xuXHRcdH1cblx0fSBlbHNlIGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlID09PSAnaW5jbHVkZScpIHtcblx0XHRpZiAoJ2ZpbGUtaW5jbHVkZScgaW4gcGx1Z2lucykge1xuXHRcdFx0Y29uc3QgZmlsZUluY2x1ZGVMYW5ndWFnZSA9IGNvZGVibG9ja0xpbmVzWzBdLm1hdGNoKC9pbmNsdWRlKD86WzpcXHNdKyg/PGxhbmc+XFx3KykpPy8pPy5ncm91cHM/Lmxhbmc7XG5cdFx0XHRpZiAodHlwZW9mIGZpbGVJbmNsdWRlTGFuZ3VhZ2UgIT09ICd1bmRlZmluZWQnKVxuXHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlID0gZmlsZUluY2x1ZGVMYW5ndWFnZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGNvZGVibG9ja1BhcmFtZXRlcnNcbn1cbmZ1bmN0aW9uIHBhcnNlSW5saW5lQ29kZVBhcmFtZXRlcnMocGFyYW1ldGVyTGluZTogc3RyaW5nKTogSW5saW5lQ29kZVBhcmFtZXRlcnMge1xuXHRsZXQgaW5saW5lQ29kZVBhcmFtZXRlcnM6IElubGluZUNvZGVQYXJhbWV0ZXJzID0ge1xuXHRcdGxhbmd1YWdlOiAnJyxcblx0XHR0aXRsZTogJycsXG5cdFx0aWNvbjogZmFsc2UsXG5cdH1cblx0bGV0IGxhbmd1YWdlQnJlYWsgPSBwYXJhbWV0ZXJMaW5lLmluZGV4T2YoJyAnKTtcblx0aW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2UgPSBwYXJhbWV0ZXJMaW5lLnNsaWNlKDAsbGFuZ3VhZ2VCcmVhayAhPT0gLTE/bGFuZ3VhZ2VCcmVhazpwYXJhbWV0ZXJMaW5lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcblx0aWYgKGxhbmd1YWdlQnJlYWsgPT09IC0xKVxuXHRcdHJldHVybiBpbmxpbmVDb2RlUGFyYW1ldGVycztcblx0Y29uc3QgcGFyYW1ldGVyU3RyaW5ncyA9IHBhcmFtZXRlckxpbmUuc2xpY2UobGFuZ3VhZ2VCcmVhaysxKS5tYXRjaCgvKD86W15cXHNcIiddK3xcIlteXCJdKlwifCdbXiddKicpKy9nKTtcblx0aWYgKCFwYXJhbWV0ZXJTdHJpbmdzKVxuXHRcdHJldHVybiBpbmxpbmVDb2RlUGFyYW1ldGVycztcblx0cGFyYW1ldGVyU3RyaW5ncy5mb3JFYWNoKChwYXJhbWV0ZXJTdHJpbmcpID0+IHBhcnNlSW5saW5lQ29kZVBhcmFtZXRlclN0cmluZyhwYXJhbWV0ZXJTdHJpbmcsaW5saW5lQ29kZVBhcmFtZXRlcnMpKTtcblx0cmV0dXJuIGlubGluZUNvZGVQYXJhbWV0ZXJzO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNvZGVibG9ja1BhcmFtZXRlclN0cmluZyhwYXJhbWV0ZXJTdHJpbmc6IHN0cmluZywgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgdGhlbWU6IENvZGVTdHlsZXJUaGVtZSk6IHZvaWQge1xuXHRpZiAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ3RpdGxlOicpKSB7XG5cdFx0bGV0IHRpdGxlTWF0Y2ggPSAvKFtcIiddPykoW15cXDFdKylcXDEvLmV4ZWMocGFyYW1ldGVyU3RyaW5nLnNsaWNlKCd0aXRsZTonLmxlbmd0aCkpO1xuXHRcdGlmICh0aXRsZU1hdGNoKVxuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSA9IHRpdGxlTWF0Y2hbMl0udHJpbSgpO1xuXHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCdmb2xkOicpKSB7XG5cdFx0bGV0IGZvbGRQbGFjZWhvbGRlck1hdGNoID0gLyhbXCInXT8pKFteXFwxXSspXFwxLy5leGVjKHBhcmFtZXRlclN0cmluZy5zbGljZSgnZm9sZDonLmxlbmd0aCkpO1xuXHRcdGlmIChmb2xkUGxhY2Vob2xkZXJNYXRjaCkge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLnBsYWNlaG9sZGVyID0gZm9sZFBsYWNlaG9sZGVyTWF0Y2hbMl0udHJpbSgpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICdmb2xkJykge1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkID0gdHJ1ZTtcblx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQucGxhY2Vob2xkZXIgPSAnJztcblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICdpZ25vcmUnKSB7XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5pZ25vcmUgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCdsbjonKSkge1xuXHRcdHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlclN0cmluZy5zbGljZSgnbG46Jy5sZW5ndGgpXG5cdFx0aWYgKC9eXFxkKyQvLnRlc3QocGFyYW1ldGVyU3RyaW5nKSkge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkID0gdHJ1ZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0ID0gcGFyc2VJbnQocGFyYW1ldGVyU3RyaW5nKS0xO1xuXHRcdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkID0gdHJ1ZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0ID0gMDtcblx0XHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSB7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQgPSBmYWxzZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQgPSAwO1xuXHRcdH1cblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcuc3RhcnRzV2l0aCgndW53cmFwOicpKSB7XG5cdFx0cGFyYW1ldGVyU3RyaW5nID0gcGFyYW1ldGVyU3RyaW5nLnNsaWNlKCd1bndyYXA6Jy5sZW5ndGgpXG5cdFx0aWYgKHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAnaW5hY3RpdmUnKSB7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAuYWx3YXlzRW5hYmxlZCA9IHRydWU7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAuYWx3YXlzRGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hY3RpdmVXcmFwID0gdHJ1ZTtcblx0XHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hbHdheXNFbmFibGVkID0gdHJ1ZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hbHdheXNEaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwLmFjdGl2ZVdyYXAgPSBmYWxzZTtcblx0XHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSB7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAuYWx3YXlzRW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwLmFsd2F5c0Rpc2FibGVkID0gdHJ1ZTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hY3RpdmVXcmFwID0gZmFsc2U7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGxldCBoaWdobGlnaHRNYXRjaCA9IC9eKFxcdyspOiguKykkLy5leGVjKHBhcmFtZXRlclN0cmluZyk7XG5cdFx0aWYgKGhpZ2hsaWdodE1hdGNoKSB7XG5cdFx0XHRsZXQgaGlnaGxpZ2h0cyA9IHBhcnNlSGlnaGxpZ2h0ZWRMaW5lcyhoaWdobGlnaHRNYXRjaFsyXSk7XG5cdFx0XHRpZiAoaGlnaGxpZ2h0TWF0Y2hbMV0gPT09ICdobCcpXG5cdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5kZWZhdWx0ID0gaGlnaGxpZ2h0cztcblx0XHRcdGVsc2Vcblx0XHRcdFx0aWYgKGhpZ2hsaWdodE1hdGNoWzFdIGluIHRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpXG5cdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmFsdGVybmF0aXZlW2hpZ2hsaWdodE1hdGNoWzFdXSA9IGhpZ2hsaWdodHM7XG5cdFx0fVxuXHR9XG59XG5mdW5jdGlvbiBwYXJzZUhpZ2hsaWdodGVkTGluZXMoaGlnaGxpZ2h0ZWRMaW5lc1N0cmluZzogc3RyaW5nKTogSGlnaGxpZ2h0cyB7XG5cdGNvbnN0IGhpZ2hsaWdodFJ1bGVzID0gaGlnaGxpZ2h0ZWRMaW5lc1N0cmluZy5zcGxpdCgnLCcpO1xuXHRsZXQgbGluZU51bWJlcnM6IFNldDxudW1iZXI+ID0gbmV3IFNldCgpO1xuXHRsZXQgcGxhaW5UZXh0OiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblx0bGV0IHJlZ3VsYXJFeHByZXNzaW9uczogU2V0PFJlZ0V4cD4gPSBuZXcgU2V0KCk7XG5cdGhpZ2hsaWdodFJ1bGVzLmZvckVhY2goaGlnaGxpZ2h0UnVsZSA9PiB7XG5cdFx0aWYgKC9cXGQrLVxcZCsvLnRlc3QoaGlnaGxpZ2h0UnVsZSkpIHsgLy8gTnVtYmVyIFJhbmdlXG5cdFx0XHRjb25zdCBbc3RhcnQsZW5kXSA9IGhpZ2hsaWdodFJ1bGUuc3BsaXQoJy0nKS5tYXAobnVtID0+IHBhcnNlSW50KG51bSkpO1xuXHRcdFx0aWYgKHN0YXJ0ICYmIGVuZCAmJiBzdGFydCA8PSBlbmQpXG5cdFx0XHRcdEFycmF5LmZyb20oe2xlbmd0aDplbmQtc3RhcnQrMX0sIChfLG51bSkgPT4gbnVtICsgc3RhcnQpLmZvckVhY2gobGluZU51bWJlciA9PiBsaW5lTnVtYmVycy5hZGQobGluZU51bWJlcikpO1xuXHRcdH0gZWxzZSBpZiAoL15cXC8oLiopXFwvJC8udGVzdChoaWdobGlnaHRSdWxlKSkgeyAvLyBSZWdleFxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmVndWxhckV4cHJlc3Npb25zLmFkZChuZXcgUmVnRXhwKGhpZ2hsaWdodFJ1bGUucmVwbGFjZSgvXlxcLyguKilcXC8kLyxcIiQxXCIpKSk7XG5cdFx0XHR9IGNhdGNoIHsgfVxuXHRcdH0gZWxzZSBpZiAoL1wiLipcIi8udGVzdChoaWdobGlnaHRSdWxlKSkgeyAvLyBQbGFpbiBUZXh0XG5cdFx0XHRwbGFpblRleHQuYWRkKGhpZ2hsaWdodFJ1bGUuc3Vic3RyaW5nKDEsaGlnaGxpZ2h0UnVsZS5sZW5ndGgtMSkpO1xuXHRcdH0gZWxzZSBpZiAoLycuKicvLnRlc3QoaGlnaGxpZ2h0UnVsZSkpIHsgLy8gUGxhaW4gVGV4dFxuXHRcdFx0cGxhaW5UZXh0LmFkZChoaWdobGlnaHRSdWxlLnN1YnN0cmluZygxLGhpZ2hsaWdodFJ1bGUubGVuZ3RoLTEpKTtcblx0XHR9IGVsc2UgaWYgKC9cXEQvLnRlc3QoaGlnaGxpZ2h0UnVsZSkpIHsgLy8gUGxhaW4gVGV4dFxuXHRcdFx0cGxhaW5UZXh0LmFkZChoaWdobGlnaHRSdWxlKTtcblx0XHR9IGVsc2UgaWYgKC9cXGQrLy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIFBsYWluIE51bWJlclxuXHRcdFx0bGluZU51bWJlcnMuYWRkKHBhcnNlSW50KGhpZ2hsaWdodFJ1bGUpKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4ge1xuXHRcdGxpbmVOdW1iZXJzOiBbLi4ubGluZU51bWJlcnNdLFxuXHRcdHBsYWluVGV4dDogWy4uLnBsYWluVGV4dF0sXG5cdFx0cmVndWxhckV4cHJlc3Npb25zOiBbLi4ucmVndWxhckV4cHJlc3Npb25zXSxcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0V4Y2x1ZGVkKGxhbmd1YWdlOiBzdHJpbmcsIGV4Y2x1ZGVkTGFuZ3VhZ2VzU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIHBhcnNlUmVnZXhFeGNsdWRlZExhbmd1YWdlcyhleGNsdWRlZExhbmd1YWdlc1N0cmluZykuc29tZShyZWdleEV4Y2x1ZGVkTGFuZ3VhZ2UgPT4ge1xuXHRcdGlmIChyZWdleEV4Y2x1ZGVkTGFuZ3VhZ2UudGVzdChsYW5ndWFnZSkpXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0fSk7XG59XG5mdW5jdGlvbiBwYXJzZVJlZ2V4RXhjbHVkZWRMYW5ndWFnZXMoZXhjbHVkZWRMYW5ndWFnZXNTdHJpbmc6IHN0cmluZyk6IEFycmF5PFJlZ0V4cD4ge1xuXHRyZXR1cm4gZXhjbHVkZWRMYW5ndWFnZXNTdHJpbmcuc3BsaXQoXCIsXCIpLm1hcChyZWdleExhbmd1YWdlID0+IG5ldyBSZWdFeHAoYF4ke3JlZ2V4TGFuZ3VhZ2UudHJpbSgpLnJlcGxhY2UoL1xcKi9nLCcuKycpfSRgLCdpJykpXG59XG5mdW5jdGlvbiBwYXJzZUlubGluZUNvZGVQYXJhbWV0ZXJTdHJpbmcocGFyYW1ldGVyU3RyaW5nOiBzdHJpbmcsIGlubGluZUNvZGVQYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycyk6IHZvaWQge1xuXHRpZiAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ3RpdGxlOicpKSB7XG5cdFx0bGV0IHRpdGxlTWF0Y2ggPSAvKFtcIiddPykoW15cXDFdKylcXDEvLmV4ZWMocGFyYW1ldGVyU3RyaW5nLnNsaWNlKCd0aXRsZTonLmxlbmd0aCkpO1xuXHRcdGlmICh0aXRsZU1hdGNoKVxuXHRcdFx0aW5saW5lQ29kZVBhcmFtZXRlcnMudGl0bGUgPSB0aXRsZU1hdGNoWzJdLnRyaW0oKTtcblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICdpY29uJyB8fCAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ2ljb246JykgJiYgcGFyYW1ldGVyU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdpY29uOnRydWUnKSkge1xuXHRcdGlubGluZUNvZGVQYXJhbWV0ZXJzLmljb24gPSB0cnVlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbWV0ZXJMaW5lKGNvZGVibG9ja0xpbmVzOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IG9wZW5pbmdDb2RlYmxvY2tMaW5lID0gZ2V0T3BlbmluZ0xpbmUoY29kZWJsb2NrTGluZXMpO1xuXHRpZiAob3BlbmluZ0NvZGVibG9ja0xpbmUgJiYgKG9wZW5pbmdDb2RlYmxvY2tMaW5lICE9PSBjb2RlYmxvY2tMaW5lc1swXSB8fCAvPlxccyooPzpgfH4pLy50ZXN0KG9wZW5pbmdDb2RlYmxvY2tMaW5lKSkpXG5cdFx0b3BlbmluZ0NvZGVibG9ja0xpbmUgPSBjbGVhblBhcmFtZXRlckxpbmUob3BlbmluZ0NvZGVibG9ja0xpbmUpO1xuXHRyZXR1cm4gb3BlbmluZ0NvZGVibG9ja0xpbmVcbn1cbmZ1bmN0aW9uIGdldE9wZW5pbmdMaW5lKGNvZGVibG9ja0xpbmVzOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGNvZGVibG9ja0xpbmVzLmZpbmQoKGxpbmU6IHN0cmluZyk9PkJvb2xlYW4odGVzdE9wZW5pbmdMaW5lKGxpbmUpKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdGVzdE9wZW5pbmdMaW5lKGNvZGVibG9ja0xpbmU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGxldCBsaW5lTWF0Y2ggPSAvXihcXHMqKD86PlxccyopKikoYGBgK3x+fn4rKS8uZXhlYyhjb2RlYmxvY2tMaW5lKTtcblx0aWYgKCFsaW5lTWF0Y2gpXG5cdFx0cmV0dXJuICcnO1xuXHRpZiAoY29kZWJsb2NrTGluZS5pbmRleE9mKGxpbmVNYXRjaFsyXSxsaW5lTWF0Y2hbMV0ubGVuZ3RoK2xpbmVNYXRjaFsyXS5sZW5ndGgrMSk9PT0tMSlcblx0XHRyZXR1cm4gbGluZU1hdGNoWzJdO1xuXHRyZXR1cm4gJyc7XG59XG5mdW5jdGlvbiBjbGVhblBhcmFtZXRlckxpbmUocGFyYW1ldGVyTGluZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHRyaW1QYXJhbWV0ZXJMaW5lKHBhcmFtZXRlckxpbmUpLnJlcGxhY2UoL14oPzo+XFxzKikqKGBgYCt8fn5+KykvLCckMScpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyaW1QYXJhbWV0ZXJMaW5lKHBhcmFtZXRlckxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBwYXJhbWV0ZXJMaW5lLnRyaW0oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpbGVDb250ZW50TGluZXMoc291cmNlUGF0aDogc3RyaW5nLCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pOiBQcm9taXNlPEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ+IHtcblx0Y29uc3QgZmlsZSA9IHBsdWdpbi5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHNvdXJjZVBhdGgpO1xuXHRpZiAoIWZpbGUpIHtcblx0XHRjb25zb2xlLmVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtzb3VyY2VQYXRofWApO1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IHBsdWdpbi5hcHAudmF1bHQuY2FjaGVkUmVhZCg8VEZpbGU+IGZpbGUpLmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdGNvbnNvbGUuZXJyb3IoYEVycm9yIHJlYWRpbmcgZmlsZTogJHtlcnJvci5tZXNzYWdlfWApO1xuXHRcdHJldHVybiAnJztcblx0fSk7XG5cdGlmICghZmlsZUNvbnRlbnQpXG5cdFx0cmV0dXJuO1xuXHRyZXR1cm4gZmlsZUNvbnRlbnQuc3BsaXQoL1xcbi9nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5c0VxdWFsKGFycmF5MTogQXJyYXk8YW55PixhcnJheTI6IEFycmF5PGFueT4pOiBib29sZWFuIHtcblx0cmV0dXJuIGFycmF5MS5sZW5ndGggPT09IGFycmF5Mi5sZW5ndGggJiYgYXJyYXkxLmV2ZXJ5KChlbCkgPT4gYXJyYXkyLmluY2x1ZGVzKGVsKSk7XG59XG4iLCAiaW1wb3J0IHsgTEFOR1VBR0VfTkFNRVMsIENvZGVTdHlsZXJUaGVtZVNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcbmltcG9ydCB7IENvZGVibG9ja1BhcmFtZXRlcnMsIEhpZ2hsaWdodHMsIElubGluZUNvZGVQYXJhbWV0ZXJzIH0gZnJvbSBcIi4vQ29kZWJsb2NrUGFyc2luZ1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSGVhZGVyKGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIHRoZW1lU2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzLCBsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4pOiBIVE1MRWxlbWVudCB7XG5cdGNvbnN0IGhlYWRlckNvbnRhaW5lciA9IGNyZWF0ZURpdih7Y2xzOiBgY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciR7KGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgIT09ICcnKT8nLXNwZWNpZmljJzonJ31gfSk7XG5cdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlICE9PSAnJyl7XG5cdFx0Y29uc3QgaWNvblVSTCA9IGdldExhbmd1YWdlSWNvbihjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLGxhbmd1YWdlSWNvbnMpXG5cdFx0aWYgKGljb25VUkwgIT09IG51bGwpXG5cdFx0XHRoZWFkZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlSW1hZ2VXcmFwcGVyKGljb25VUkwsY3JlYXRlRGl2KCkpKTtcblx0XHRoZWFkZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRGl2KHtjbHM6IGBjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLSR7Y29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZX1gLCB0ZXh0OiBnZXRMYW5ndWFnZVRhZyhjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlKX0pKTtcblx0fVxuXHRcblx0bGV0IGhlYWRlclRleHQgPSAnJztcblx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgIT09ICcnKVxuXHRcdGhlYWRlclRleHQgPSBjb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlO1xuXHRlbHNlIGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQuZW5hYmxlZClcblx0XHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLnBsYWNlaG9sZGVyIT09JycpXG5cdFx0XHRoZWFkZXJUZXh0ID0gY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLnBsYWNlaG9sZGVyO1xuXHRcdGVsc2Vcblx0XHRcdGhlYWRlclRleHQgPSB0aGVtZVNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyIT09Jyc/dGhlbWVTZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlcjonQ29sbGFwc2VkIENvZGUnO1xuXHRoZWFkZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRGl2KHtjbHM6IFwiY29kZS1zdHlsZXItaGVhZGVyLXRleHRcIiwgdGV4dDogaGVhZGVyVGV4dH0pKTsgICBcblxuXHRyZXR1cm4gaGVhZGVyQ29udGFpbmVyO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUlubGluZU9wZW5lcihpbmxpbmVDb2RlUGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnMsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPiwgY29udGFpbmVyQ2xhc3NlczogQXJyYXk8c3RyaW5nPiA9IFsnY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciddKTogSFRNTEVsZW1lbnQge1xuXHRjb25zdCBvcGVuZXJDb250YWluZXIgPSBjcmVhdGVTcGFuKHtjbHM6IGNvbnRhaW5lckNsYXNzZXMuam9pbignICcpfSk7XG5cdGlmIChpbmxpbmVDb2RlUGFyYW1ldGVycy5pY29uKSB7XG5cdFx0Y29uc3QgaWNvblVSTCA9IGdldExhbmd1YWdlSWNvbihpbmxpbmVDb2RlUGFyYW1ldGVycy5sYW5ndWFnZSxsYW5ndWFnZUljb25zKTtcblx0XHRpZiAoaWNvblVSTCAhPT0gbnVsbClcblx0XHRcdG9wZW5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVJbWFnZVdyYXBwZXIoaWNvblVSTCxjcmVhdGVTcGFuKCksYGNvZGUtc3R5bGVyLWlubGluZS1pY29uYCkpO1xuXHR9XG5cdGlmIChpbmxpbmVDb2RlUGFyYW1ldGVycy50aXRsZSlcblx0XHRvcGVuZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbih7Y2xzOiBgY29kZS1zdHlsZXItaW5saW5lLXRpdGxlYCwgdGV4dDogaW5saW5lQ29kZVBhcmFtZXRlcnMudGl0bGV9KSk7XG5cdHJldHVybiBvcGVuZXJDb250YWluZXI7XG59XG5mdW5jdGlvbiBjcmVhdGVJbWFnZVdyYXBwZXIoaWNvblVSTDogc3RyaW5nLCBpbWFnZVdyYXBwZXI6IEhUTUxFbGVtZW50LCBpbWdDbGFzczogc3RyaW5nID0gXCJjb2RlLXN0eWxlci1pY29uXCIpOiBIVE1MRWxlbWVudCB7XG5cdGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5cdGltZy5jbGFzc0xpc3QuYWRkKGltZ0NsYXNzKTtcblx0aW1nLnNyYyA9IGljb25VUkw7XG5cdGltYWdlV3JhcHBlci5hcHBlbmRDaGlsZChpbWcpO1xuXHRyZXR1cm4gaW1hZ2VXcmFwcGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VJY29uKGxhbmd1YWdlOiBzdHJpbmcsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPikge1xuXHRsYW5ndWFnZSA9IGdldExhbmd1YWdlVGFnKGxhbmd1YWdlKTtcblx0aWYgKGxhbmd1YWdlIGluIGxhbmd1YWdlSWNvbnMpXG5cdFx0cmV0dXJuIGxhbmd1YWdlSWNvbnNbbGFuZ3VhZ2VdO1xuXHRyZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldExhbmd1YWdlVGFnKGxhbmd1YWdlOiBzdHJpbmcpIHtcblx0aWYgKGxhbmd1YWdlIGluIExBTkdVQUdFX05BTUVTKVxuXHRcdHJldHVybiBMQU5HVUFHRV9OQU1FU1tsYW5ndWFnZV07XG5cdGVsc2UgaWYgKGxhbmd1YWdlICE9PSAnJylcblx0XHRyZXR1cm4gbGFuZ3VhZ2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBsYW5ndWFnZS5zbGljZSgxKTtcblx0cmV0dXJuIFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lQ2xhc3MoY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgbGluZU51bWJlcjogbnVtYmVyLCBsaW5lOiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+IHtcblx0bGV0IGNsYXNzTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQubGluZU51bWJlcnMuaW5jbHVkZXMobGluZU51bWJlcitjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCkgfHwgY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQucGxhaW5UZXh0LnNvbWUodGV4dCA9PiBsaW5lLmluZGV4T2YodGV4dCkgPiAtMSkgfHwgY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQucmVndWxhckV4cHJlc3Npb25zLnNvbWUocmVnRXhwID0+IHJlZ0V4cC50ZXN0KGxpbmUpKSlcblx0XHRjbGFzc0xpc3QucHVzaCgnY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZCcpO1xuXHRPYmplY3QuZW50cmllcyhjb2RlYmxvY2tQYXJhbWV0ZXJzLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmUpLmZvckVhY2goKFthbHRlcm5hdGl2ZUhpZ2hsaWdodCxoaWdobGlnaHRlZExpbmVzXTogW3N0cmluZyxIaWdobGlnaHRzXSkgPT4ge1xuXHRcdGlmIChoaWdobGlnaHRlZExpbmVzLmxpbmVOdW1iZXJzLmluY2x1ZGVzKGxpbmVOdW1iZXIrY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQpIHx8IGhpZ2hsaWdodGVkTGluZXMucGxhaW5UZXh0LnNvbWUodGV4dCA9PiBsaW5lLmluZGV4T2YodGV4dCkgPiAtMSkgfHwgaGlnaGxpZ2h0ZWRMaW5lcy5yZWd1bGFyRXhwcmVzc2lvbnMuc29tZShyZWdFeHAgPT4gcmVnRXhwLnRlc3QobGluZSkpKVxuXHRcdFx0Y2xhc3NMaXN0LnB1c2goYGNvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQtJHthbHRlcm5hdGl2ZUhpZ2hsaWdodC5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX1gKTtcblx0fSlcblx0aWYgKGNsYXNzTGlzdC5sZW5ndGggPT09IDApXG5cdFx0Y2xhc3NMaXN0ID0gWydjb2RlLXN0eWxlci1saW5lJ11cblx0cmV0dXJuIGNsYXNzTGlzdDtcbn1cbiIsICJpbXBvcnQgeyBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiwgQ2FjaGVkTWV0YWRhdGEsIHNhbml0aXplSFRNTFRvRG9tLCBGcm9udE1hdHRlckNhY2hlLCBNYXJrZG93blJlbmRlcmVyLCBDb21wb25lbnQgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7dW5pZmllZH0gZnJvbSBcInVuaWZpZWRcIjtcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tIFwicmVtYXJrLXBhcnNlXCI7XG5pbXBvcnQge3Zpc2l0fSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiO1xuXG5pbXBvcnQgQ29kZVN0eWxlclBsdWdpbiBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBQUklNQVJZX0RFTEFZLCBTRUNPTkRBUllfREVMQVkgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ29kZWJsb2NrUGFyYW1ldGVycywgZ2V0RmlsZUNvbnRlbnRMaW5lcywgaXNFeGNsdWRlZCwgcGFyc2VDb2RlYmxvY2tTb3VyY2UsIHBhcnNlSW5saW5lQ29kZSB9IGZyb20gXCIuL0NvZGVibG9ja1BhcnNpbmdcIjtcbmltcG9ydCB7IGNyZWF0ZUhlYWRlciwgY3JlYXRlSW5saW5lT3BlbmVyLCBnZXRMaW5lQ2xhc3MgfSBmcm9tIFwiLi9Db2RlYmxvY2tEZWNvcmF0aW5nXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB7c291cmNlUGF0aCxnZXRTZWN0aW9uSW5mbyxmcm9udG1hdHRlcn06IHtzb3VyY2VQYXRoOiBzdHJpbmcsIGdldFNlY3Rpb25JbmZvOiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uIHwgbnVsbCwgZnJvbnRtYXR0ZXI6IEZyb250TWF0dGVyQ2FjaGUgfCB1bmRlZmluZWR9LCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4sIGVkaXRpbmdFbWJlZHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRjb25zdCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKHNvdXJjZVBhdGgpO1xuXHRpZiAoIXNvdXJjZVBhdGggfHwgIWVsZW1lbnQgfHwgKGZyb250bWF0dGVyID8/IGNhY2hlPy5mcm9udG1hdHRlcik/LlsnY29kZS1zdHlsZXItaWdub3JlJ10gPT09IHRydWUpXG5cdFx0cmV0dXJuO1xuXG5cdGF3YWl0IHNsZWVwKDUwKTtcblx0bGV0IGNvZGVibG9ja1ByZUVsZW1lbnRzOiBBcnJheTxIVE1MRWxlbWVudD47XG5cdGVkaXRpbmdFbWJlZHMgPSBlZGl0aW5nRW1iZWRzIHx8IEJvb2xlYW4oZWxlbWVudC5tYXRjaFBhcmVudChcIi5jbS1lbWJlZC1ibG9ja1wiKSk7XG5cdGNvbnN0IHNwZWNpZmljID0gIWVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi52aWV3LWNvbnRlbnQgPiAqXCIpO1xuXHRjb25zdCBwcmludGluZyA9IEJvb2xlYW4oZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiZGl2LnByaW50ID4gKlwiKSk7XG5cdGlmIChwcmludGluZyAmJiAhcGx1Z2luLnNldHRpbmdzLmRlY29yYXRlUHJpbnQpXG5cdFx0cmV0dXJuO1xuXG5cdGlmICghZWRpdGluZ0VtYmVkcyAmJiAhc3BlY2lmaWMpXG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudHMgPSBBcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hcmtkb3duLXJlYWRpbmctdmlldyBwcmU6bm90KC5mcm9udG1hdHRlciknKSk7XG5cdGVsc2UgaWYgKCFlZGl0aW5nRW1iZWRzICYmIHNwZWNpZmljKVxuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZTpub3QoLmZyb250bWF0dGVyKScpKTtcblx0ZWxzZSBpZiAoZWRpdGluZ0VtYmVkcyAmJiAhc3BlY2lmaWMpXG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudHMgPSBBcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hcmtkb3duLXNvdXJjZS12aWV3IC5jbS1lbWJlZC1ibG9jayBwcmU6bm90KC5mcm9udG1hdHRlciknKSk7XG5cdGVsc2Vcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50cyA9IFtdO1xuXHRpZiAoY29kZWJsb2NrUHJlRWxlbWVudHMubGVuZ3RoID09PSAwICYmICEoZWRpdGluZ0VtYmVkcyAmJiBzcGVjaWZpYykpXG5cdFx0cmV0dXJuO1xuXG5cdGlmICghZWRpdGluZ0VtYmVkcyAmJiAhcHJpbnRpbmcpIHtcblx0XHRjb25zdCByZWFkaW5nVmlld1BhcmVudCA9IGVsZW1lbnQubWF0Y2hQYXJlbnQoJy52aWV3LWNvbnRlbnQgPiAubWFya2Rvd24tcmVhZGluZy12aWV3ID4gLm1hcmtkb3duLXByZXZpZXctdmlldyA+IC5tYXJrZG93bi1wcmV2aWV3LXNlY3Rpb24nKTtcblx0XHRpZiAocmVhZGluZ1ZpZXdQYXJlbnQpXG5cdFx0XHRwbHVnaW4ucmVhZGluZ1N0eWxpbmdNdXRhdGlvbk9ic2VydmVyLm9ic2VydmUocmVhZGluZ1ZpZXdQYXJlbnQse1xuXHRcdFx0XHRjaGlsZExpc3Q6IHRydWUsXG5cdFx0XHRcdGF0dHJpYnV0ZXM6IGZhbHNlLFxuXHRcdFx0XHRjaGFyYWN0ZXJEYXRhOiBmYWxzZSxcblx0XHRcdFx0c3VidHJlZTogZmFsc2UsXG5cdFx0XHR9KVxuXHR9XG5cdGNvbnN0IGNvZGVibG9ja1NlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiB8IG51bGw9IGdldFNlY3Rpb25JbmZvKGNvZGVibG9ja1ByZUVsZW1lbnRzWzBdKTtcblx0aWYgKGNvZGVibG9ja1NlY3Rpb25JbmZvICYmIHNwZWNpZmljICYmICFlZGl0aW5nRW1iZWRzKVxuXHRcdHJlbmRlclNwZWNpZmljUmVhZGluZ1NlY3Rpb24oY29kZWJsb2NrUHJlRWxlbWVudHMsc291cmNlUGF0aCxjb2RlYmxvY2tTZWN0aW9uSW5mbyxwbHVnaW4pO1xuXHRlbHNlIGlmIChzcGVjaWZpYyAmJiAhcHJpbnRpbmcpIHtcblx0XHRpZiAoISghZWRpdGluZ0VtYmVkcyAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImFkbW9uaXRpb24tY29udGVudFwiKSkpIHtcblx0XHRcdGxldCBjb250ZW50RWwgPSBlbGVtZW50Lm1hdGNoUGFyZW50KCcudmlldy1jb250ZW50JykgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRhd2FpdCByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGNvbnRlbnRFbD9jb250ZW50RWw6KGVsZW1lbnQubWF0Y2hQYXJlbnQoJ2Rpdi5wcmludCcpIGFzIEhUTUxFbGVtZW50KSx7c291cmNlUGF0aCxnZXRTZWN0aW9uSW5mbyxmcm9udG1hdHRlcn0scGx1Z2luLGVkaXRpbmdFbWJlZHMpOyAvLyBSZS1yZW5kZXIgd2hvbGUgZG9jdW1lbnRcblx0XHR9XG5cdH1cblx0ZWxzZVxuXHRcdHJlbmRlckRvY3VtZW50KGNvZGVibG9ja1ByZUVsZW1lbnRzLHNvdXJjZVBhdGgsY2FjaGUsZWRpdGluZ0VtYmVkcyxwcmludGluZyxwbHVnaW4pO1xufVxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyU3BlY2lmaWNSZWFkaW5nU2VjdGlvbihjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+LCBzb3VyY2VQYXRoOiBzdHJpbmcsIGNvZGVibG9ja1NlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGNvZGVibG9ja3NQYXJhbWV0ZXJzID0gKGF3YWl0IHBhcnNlQ29kZWJsb2NrU291cmNlKEFycmF5LmZyb20oe2xlbmd0aDogY29kZWJsb2NrU2VjdGlvbkluZm8ubGluZUVuZC1jb2RlYmxvY2tTZWN0aW9uSW5mby5saW5lU3RhcnQrMX0sIChfLG51bSkgPT4gbnVtICsgY29kZWJsb2NrU2VjdGlvbkluZm8ubGluZVN0YXJ0KS5tYXAoKGxpbmVOdW1iZXIpPT5jb2RlYmxvY2tTZWN0aW9uSW5mby50ZXh0LnNwbGl0KCdcXG4nKVtsaW5lTnVtYmVyXSksc291cmNlUGF0aCxwbHVnaW4pKS5jb2RlYmxvY2tzUGFyYW1ldGVycztcblx0aWYgKGNvZGVibG9ja1ByZUVsZW1lbnRzLmxlbmd0aCAhPT0gY29kZWJsb2Nrc1BhcmFtZXRlcnMubGVuZ3RoKVxuXHRcdHJldHVybjtcblx0Zm9yIChsZXQgW2tleSxjb2RlYmxvY2tQcmVFbGVtZW50XSBvZiBjb2RlYmxvY2tQcmVFbGVtZW50cy5lbnRyaWVzKCkpIHtcblx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzW2tleV07XG5cdFx0bGV0IGNvZGVibG9ja0NvZGVFbGVtZW50ID0gY29kZWJsb2NrUHJlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdwcmUgPiBjb2RlJyk7XG5cdFx0aWYgKCFjb2RlYmxvY2tDb2RlRWxlbWVudClcblx0XHRcdHJldHVybjtcblx0XHRpZiAoQXJyYXkuZnJvbShjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IC9ebGFuZ3VhZ2UtXFxTKy8udGVzdChjbGFzc05hbWUpKSlcblx0XHRcdHdoaWxlKCFjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJpcy1sb2FkZWRcIikpXG5cdFx0XHRcdGF3YWl0IHNsZWVwKDIpO1xuXHRcdGlmIChpc0V4Y2x1ZGVkKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UscGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzKSB8fCBjb2RlYmxvY2tQYXJhbWV0ZXJzLmlnbm9yZSlcblx0XHRcdGNvbnRpbnVlO1xuXHRcdGF3YWl0IHJlbWFrZUNvZGVibG9jayhjb2RlYmxvY2tDb2RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMsdHJ1ZSxwbHVnaW4pO1xuXHR9XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXJEb2N1bWVudChjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+LCBzb3VyY2VQYXRoOiBzdHJpbmcsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwsIGVkaXRpbmdFbWJlZHM6IGJvb2xlYW4sIHByaW50aW5nOiBib29sZWFuLCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pIHtcblx0Y29uc3QgZmlsZUNvbnRlbnRMaW5lcyA9IGF3YWl0IGdldEZpbGVDb250ZW50TGluZXMoc291cmNlUGF0aCxwbHVnaW4pO1xuXHRpZiAoIWZpbGVDb250ZW50TGluZXMpXG5cdFx0cmV0dXJuO1xuXHRsZXQgY29kZWJsb2Nrc1BhcmFtZXRlcnM6IEFycmF5PENvZGVibG9ja1BhcmFtZXRlcnM+ID0gW107XG5cblx0aWYgKHR5cGVvZiBjYWNoZT8uc2VjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGNhY2hlLnNlY3Rpb25zKSB7XG5cdFx0XHRpZiAoIWVkaXRpbmdFbWJlZHMgfHwgc2VjdGlvbi50eXBlID09PSAnY29kZScgfHwgc2VjdGlvbi50eXBlID09PSAnY2FsbG91dCcpIHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkQ29kZWJsb2Nrc1BhcmFtZXRlcnMgPSBhd2FpdCBwYXJzZUNvZGVibG9ja1NvdXJjZShmaWxlQ29udGVudExpbmVzLnNsaWNlKHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZSxzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lKzEpLHNvdXJjZVBhdGgscGx1Z2luKTtcblx0XHRcdFx0aWYgKCFlZGl0aW5nRW1iZWRzIHx8IHBhcnNlZENvZGVibG9ja3NQYXJhbWV0ZXJzLm5lc3RlZClcblx0XHRcdFx0XHRjb2RlYmxvY2tzUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzLmNvbmNhdChwYXJzZWRDb2RlYmxvY2tzUGFyYW1ldGVycy5jb2RlYmxvY2tzUGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGNvbnNvbGUuZXJyb3IoYE1ldGFkYXRhIGNhY2hlIG5vdCBmb3VuZCBmb3IgZmlsZTogJHtzb3VyY2VQYXRofWApO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoY29kZWJsb2NrUHJlRWxlbWVudHMubGVuZ3RoICE9PSBjb2RlYmxvY2tzUGFyYW1ldGVycy5sZW5ndGgpXG5cdFx0cmV0dXJuO1xuXHR0cnkge1xuXHRcdGZvciAobGV0IFtrZXksY29kZWJsb2NrUHJlRWxlbWVudF0gb2YgQXJyYXkuZnJvbShjb2RlYmxvY2tQcmVFbGVtZW50cykuZW50cmllcygpKSB7XG5cdFx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzW2tleV07XG5cdFx0XHRsZXQgY29kZWJsb2NrQ29kZUVsZW1lbnQ6IEhUTUxQcmVFbGVtZW50IHwgbnVsbCA9IGNvZGVibG9ja1ByZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInByZSA+IGNvZGVcIik7XG5cdFx0XHRpZiAoIWNvZGVibG9ja0NvZGVFbGVtZW50KVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRpZiAoQXJyYXkuZnJvbShjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IC9ebGFuZ3VhZ2UtXFxTKy8udGVzdChjbGFzc05hbWUpKSlcblx0XHRcdFx0d2hpbGUoIWNvZGVibG9ja0NvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcblx0XHRcdFx0XHRhd2FpdCBzbGVlcCgyKTtcblx0XHRcdGlmIChjb2RlYmxvY2tDb2RlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiY29kZSBbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ11cIikpXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0aWYgKGlzRXhjbHVkZWQoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxwbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMpIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlKVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdGF3YWl0IHJlbWFrZUNvZGVibG9jayhjb2RlYmxvY2tDb2RlRWxlbWVudCxjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMsIXByaW50aW5nLHBsdWdpbik7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGNvbnNvbGUuZXJyb3IoYEVycm9yIHJlbmRlcmluZyBkb2N1bWVudDogJHtlcnJvci5tZXNzYWdlfWApO1xuXHRcdHJldHVybjtcblx0fVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZGluZ1ZpZXdJbmxpbmVEZWNvcmF0aW5nUG9zdFByb2Nlc3NvcihlbGVtZW50OiBIVE1MRWxlbWVudCwge3NvdXJjZVBhdGgsZ2V0U2VjdGlvbkluZm8sZnJvbnRtYXR0ZXJ9OiB7c291cmNlUGF0aDogc3RyaW5nLCBnZXRTZWN0aW9uSW5mbzogKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiB8IG51bGwsIGZyb250bWF0dGVyOiBGcm9udE1hdHRlckNhY2hlIHwgdW5kZWZpbmVkfSwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKSB7XG5cdGlmICghc291cmNlUGF0aCB8fCAhZWxlbWVudCB8fCAhcGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0KVxuXHRcdHJldHVybjtcblx0Zm9yIChsZXQgaW5saW5lQ29kZUVsZW1lbnQgb2YgQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJzpub3QocHJlKSA+IGNvZGUnKSkpIHtcblx0XHRpZiAoaW5saW5lQ29kZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjb2RlLXN0eWxlci1oaWdobGlnaHRlZCcpIHx8IGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnY29kZS1zdHlsZXItaGlnaGxpZ2h0LWlnbm9yZScpKVxuXHRcdFx0cmV0dXJuO1xuXHRcdGxldCB0ZW1wUmVuZGVyQ29udGFpbmVyID0gY3JlYXRlRGl2KCk7XG5cdFx0bGV0IHJlbmRlcmVkQ29kZUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcblx0XHRsZXQgaW5saW5lQ29kZVRleHQgPSAoaW5saW5lQ29kZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcblx0XHRsZXQge3BhcmFtZXRlcnMsdGV4dH0gPSBwYXJzZUlubGluZUNvZGUoaW5saW5lQ29kZVRleHQpO1xuXHRcdGlmICghcGFyYW1ldGVycykge1xuXHRcdFx0aWYgKCF0ZXh0KVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKCdgJy5yZXBlYXQoMjApK3RleHQrJ2AnLnJlcGVhdCgyMCksdGVtcFJlbmRlckNvbnRhaW5lciwnJyxuZXcgQ29tcG9uZW50KCkpO1xuXHRcdFx0cmVuZGVyZWRDb2RlRWxlbWVudCA9IHRlbXBSZW5kZXJDb250YWluZXIucXVlcnlTZWxlY3RvcignY29kZScpO1xuXHRcdFx0aWYgKCFyZW5kZXJlZENvZGVFbGVtZW50KVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRpbmxpbmVDb2RlRWxlbWVudC5pbm5lckhUTUwgPSByZW5kZXJlZENvZGVFbGVtZW50LmlubmVySFRNTDtcblx0XHRcdGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodC1pZ25vcmUnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihbJ2BgYCcscGFyYW1ldGVycy5sYW5ndWFnZSwnXFxuJyx0ZXh0LCdcXG4nLCdgYGAnXS5qb2luKCcnKSx0ZW1wUmVuZGVyQ29udGFpbmVyLCcnLG5ldyBDb21wb25lbnQoKSk7XG5cdFx0XHRyZW5kZXJlZENvZGVFbGVtZW50ID0gdGVtcFJlbmRlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwcmUgPiBjb2RlJyk7XG5cdFx0XHRpZiAoIXJlbmRlcmVkQ29kZUVsZW1lbnQpXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdHdoaWxlKCFyZW5kZXJlZENvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcblx0XHRcdFx0YXdhaXQgc2xlZXAoMik7XG5cdFx0XHRpbmxpbmVDb2RlRWxlbWVudC5pbm5lckhUTUwgPSByZW5kZXJlZENvZGVFbGVtZW50LmlubmVySFRNTDtcblx0XHRcdGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodGVkJyk7XG5cdFx0XHRpbmxpbmVDb2RlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJwYXJhbWV0ZXJzXCIsaW5saW5lQ29kZVRleHQuc3Vic3RyaW5nKDAsaW5saW5lQ29kZVRleHQubGFzdEluZGV4T2YodGV4dCkpKTtcblx0XHRcdGlmIChwYXJhbWV0ZXJzLmljb24gfHwgcGFyYW1ldGVycy50aXRsZSlcblx0XHRcdFx0aW5saW5lQ29kZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNyZWF0ZUlubGluZU9wZW5lcihwYXJhbWV0ZXJzLHBsdWdpbi5sYW5ndWFnZUljb25zKSxpbmxpbmVDb2RlRWxlbWVudC5jaGlsZE5vZGVzWzBdKTtcblx0XHR9XG5cdH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVtYWtlQ29kZWJsb2NrKGNvZGVibG9ja0NvZGVFbGVtZW50OiBIVE1MRWxlbWVudCwgY29kZWJsb2NrUHJlRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIGR5bmFtaWM6IGJvb2xlYW4sIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbikge1xuXHQvLyBBZGQgRXhlY3V0ZSBDb2RlIE9ic2VydmVyXG5cdGlmIChkeW5hbWljKSB7XG5cdFx0cGx1Z2luLmV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGNvZGVibG9ja1ByZUVsZW1lbnQse1xuXHRcdFx0Y2hpbGRMaXN0OiB0cnVlLFxuXHRcdFx0c3VidHJlZTogdHJ1ZSxcblx0XHRcdGF0dHJpYnV0ZXM6IHRydWUsXG5cdFx0XHRjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuXHRcdH0pO1xuXHR9XG5cblx0Ly8gQWRkIFBhcmVudCBDbGFzc2VzXG5cdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgY29kZS1zdHlsZXItcHJlYCk7XG5cdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlKVxuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgbGFuZ3VhZ2UtJHtjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlfWApO1xuXHRpZiAoY29kZWJsb2NrUHJlRWxlbWVudC5wYXJlbnRFbGVtZW50KVxuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKGBjb2RlLXN0eWxlci1wcmUtcGFyZW50YCk7XG5cblx0Ly8gQ3JlYXRlIEhlYWRlclxuXHRjb25zdCBoZWFkZXJDb250YWluZXIgPSBjcmVhdGVIZWFkZXIoY29kZWJsb2NrUGFyYW1ldGVycywgcGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncyxwbHVnaW4ubGFuZ3VhZ2VJY29ucyk7XG5cdGNvZGVibG9ja1ByZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhlYWRlckNvbnRhaW5lcixjb2RlYmxvY2tQcmVFbGVtZW50LmNoaWxkTm9kZXNbMF0pO1xuXHRcblx0aWYgKGR5bmFtaWMpIHtcblx0XHQvLyBBZGQgbGlzdGVuZXIgZm9yIGhlYWRlciBjb2xsYXBzaW5nIG9uIGNsaWNrXG5cdFx0aGVhZGVyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKT0+e1xuXHRcdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFwiY29kZS1zdHlsZXItY29sbGFwc2VkXCIpXG5cdFx0XHRpZiAoY29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0KVxuXHRcdFx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSAnJztcblx0XHRcdGVsc2Vcblx0XHRcdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gJ3ZhcigtLXRydWUtaGVpZ2h0KSc7XG5cdFx0XHRjb25zdCBleGVjdXRlQ29kZU91dHB1dCA9IChjb2RlYmxvY2tQcmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ByZSA+IGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCcpIGFzIEhUTUxFbGVtZW50KTtcblx0XHRcdGlmIChleGVjdXRlQ29kZU91dHB1dCAmJiBleGVjdXRlQ29kZU91dHB1dC5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpIHtcblx0XHRcdFx0aWYgKGV4ZWN1dGVDb2RlT3V0cHV0LnN0eWxlLm1heEhlaWdodClcblx0XHRcdFx0XHRleGVjdXRlQ29kZU91dHB1dC5zdHlsZS5tYXhIZWlnaHQgPSAnJztcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdGV4ZWN1dGVDb2RlT3V0cHV0LnN0eWxlLm1heEhlaWdodCA9ICd2YXIoLS10cnVlLWhlaWdodCknO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gTGluZSBXcmFwcGluZyBDbGFzc2VzXG5cdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hbHdheXNFbmFibGVkKSB7XG5cdFx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saW5lLXdyYXBwaW5nJywncHJlJyk7XG5cdFx0XHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwLmFjdGl2ZVdyYXApXG5cdFx0XHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpbmUtYWN0aXZlLXdyYXBwaW5nJywncHJlLXdyYXAnKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGluZS1hY3RpdmUtd3JhcHBpbmcnLCdwcmUnKTtcblx0XHR9IGVsc2UgaWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hbHdheXNEaXNhYmxlZClcblx0XHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpbmUtd3JhcHBpbmcnLCdwcmUtd3JhcCcpO1xuXG5cdFx0Ly8gSGVpZ2h0IFNldHRpbmcgKGZvciBjb2xsYXBzZSBhbmltYXRpb24pIC0gRGVsYXkgdG8gcmV0dXJuIGNvcnJlY3QgaGVpZ2h0XG5cdFx0c2V0VGltZW91dCgoKT0+e3NldENvbGxhcHNlU3R5bGluZyhjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja0NvZGVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkKX0sUFJJTUFSWV9ERUxBWSk7XG5cdH0gZWxzZSBpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQpXG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItY29sbGFwc2VkXCIpO1xuXHRcblx0Ly8gSWdub3JlIHN0eWxlZCBsaW5lc1xuXHRpZiAoY29kZWJsb2NrQ29kZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcImNvZGUgW2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddXCIpKVxuXHRcdHJldHVybjtcblxuXHQvLyBBZGQgbGluZSBudW1iZXJzXG5cdGxldCB0cmVlID0gdW5pZmllZCgpLnVzZShyZW1hcmtQYXJzZSkucGFyc2UoY29kZWJsb2NrQ29kZUVsZW1lbnQuaW5uZXJIVE1MLnJlcGxhY2UoL1xcbi9nLCc8YnI+JykpO1xuXHRsZXQgc3RhY2s6IEFycmF5PHN0cmluZz4gPSBbXTtcblx0bGV0IGNvZGVibG9ja0hUTUw6IHN0cmluZyA9ICcnO1xuXHRjb2RlYmxvY2tDb2RlRWxlbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuXHR2aXNpdCh0cmVlLChub2RlKT0+e1xuXHRcdGlmIChub2RlLnR5cGUgPT09ICdodG1sJyB8fCBub2RlLnR5cGUgPT09ICd0ZXh0Jykge1xuXHRcdFx0aWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwnICYmIG5vZGUudmFsdWUgIT09ICc8YnI+Jykge1xuXHRcdFx0XHRpZiAobm9kZS52YWx1ZS5zdGFydHNXaXRoKCc8c3BhbicpKVxuXHRcdFx0XHRcdHN0YWNrLnB1c2gobm9kZS52YWx1ZSk7XG5cdFx0XHRcdGVsc2UgaWYgKG5vZGUudmFsdWUuc3RhcnRzV2l0aCgnPC9zcGFuJykpXG5cdFx0XHRcdFx0c3RhY2sucG9wKCk7XG5cdFx0XHR9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwnICYmIG5vZGUudmFsdWUgPT09ICc8YnI+Jylcblx0XHRcdFx0bm9kZS52YWx1ZSA9ICc8L3NwYW4+Jy5yZXBlYXQoc3RhY2subGVuZ3RoKSsnPGJyPicrc3RhY2suam9pbignJyk7XG5cdFx0XHRjb2RlYmxvY2tIVE1MICs9IG5vZGUudmFsdWU7XG5cdFx0fVxuXHR9KTtcblx0bGV0IGNvZGVibG9ja0xpbmVzID0gY29kZWJsb2NrSFRNTC5zcGxpdCgnPGJyPicpO1xuXHRjb2RlYmxvY2tMaW5lcy5mb3JFYWNoKChsaW5lLGluZGV4KSA9PiB7XG5cdFx0aWYgKGluZGV4ID09PSBjb2RlYmxvY2tMaW5lcy5sZW5ndGgtMSlcblx0XHRcdHJldHVybjtcblx0XHRjb25zdCBsaW5lTnVtYmVyID0gaW5kZXggKyAxO1xuXHRcdGNvbnN0IGxpbmVXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0XHRnZXRMaW5lQ2xhc3MoY29kZWJsb2NrUGFyYW1ldGVycyxsaW5lTnVtYmVyLGxpbmUpLmZvckVhY2goKGxpbmVDbGFzcykgPT4ge1xuXHRcdFx0bGluZVdyYXBwZXIuY2xhc3NMaXN0LmFkZChsaW5lQ2xhc3MpO1xuXHRcdH0pO1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LmFwcGVuZENoaWxkKGxpbmVXcmFwcGVyKTtcblx0XHRsZXQgbGluZU51bWJlckRpc3BsYXkgPSAnJztcblx0XHRpZiAoIWNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCAmJiBjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkKVxuXHRcdFx0bGluZU51bWJlckRpc3BsYXkgPSAnLWhpZGUnO1xuXHRcdGVsc2UgaWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCAmJiAhY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNEaXNhYmxlZClcblx0XHRcdGxpbmVOdW1iZXJEaXNwbGF5ID0gJy1zcGVjaWZpYyc7XG5cdFx0bGluZVdyYXBwZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRGl2KHtjbHM6IGBjb2RlLXN0eWxlci1saW5lLW51bWJlciR7bGluZU51bWJlckRpc3BsYXl9YCwgdGV4dDogKGxpbmVOdW1iZXIrY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQpLnRvU3RyaW5nKCl9KSk7XG5cdFx0bGluZVdyYXBwZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRGl2KHtjbHM6IGBjb2RlLXN0eWxlci1saW5lLXRleHRgLCB0ZXh0OiBzYW5pdGl6ZUhUTUxUb0RvbShsaW5lICE9PSBcIlwiID8gbGluZSA6IFwiPGJyPlwiKX0pKTtcblx0fSk7XG5cdGNvbnNvbGUubG9nKGNvZGVibG9ja0NvZGVFbGVtZW50LmlubmVySFRNTClcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW1lYXN1cmVSZWFkaW5nVmlldyhlbGVtZW50OiBIVE1MRWxlbWVudCwgcHJpbWFyeV9kZWxheTogbnVtYmVyID0gUFJJTUFSWV9ERUxBWSk6IHZvaWQge1xuXHRjb25zdCBjb2RlYmxvY2tQcmVFbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlOm5vdCguZnJvbnRtYXR0ZXIpJyk7XG5cdGNvZGVibG9ja1ByZUVsZW1lbnRzLmZvckVhY2goKGNvZGVibG9ja1ByZUVsZW1lbnQ6IEhUTUxFbGVtZW50KT0+e1xuXHRcdGxldCBjb2RlYmxvY2tDb2RlRWxlbWVudCA9IGNvZGVibG9ja1ByZUVsZW1lbnQucXVlcnlTZWxlY3RvcigncHJlID4gY29kZScpIGFzIEhUTUxFbGVtZW50O1xuXHRcdGlmICghY29kZWJsb2NrQ29kZUVsZW1lbnQpXG5cdFx0XHRyZXR1cm47XG5cdFx0c2V0VGltZW91dCgoKT0+e3NldENvbGxhcHNlU3R5bGluZyhjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja0NvZGVFbGVtZW50LGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjb2RlLXN0eWxlci1jb2xsYXBzZWQnKSl9LHByaW1hcnlfZGVsYXkpO1xuXHR9KVxufVxuZnVuY3Rpb24gc2V0Q29sbGFwc2VTdHlsaW5nKGNvZGVibG9ja1ByZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb2RlYmxvY2tDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQsIGZvbGQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdHJ1ZS1oZWlnaHQnLGBjYWxjKCR7Y29kZWJsb2NrQ29kZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0fXB4ICsgMiAqIHZhcigtLWNvZGUtcGFkZGluZylgKTtcblx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gJ3ZhcigtLXRydWUtaGVpZ2h0KSc7XG5cdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLndoaXRlU3BhY2UgPSAndmFyKC0tbGluZS13cmFwcGluZyknO1xuXHRpZiAoZm9sZCkge1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNvZGUtc3R5bGVyLWNvbGxhcHNlZFwiKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSAnJztcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzdHJveVJlYWRpbmdNb2RlRWxlbWVudHMoKTogdm9pZCB7XG5cdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuY29kZS1zdHlsZXItcHJlLXBhcmVudFwiKS5mb3JFYWNoKGNvZGVibG9ja1ByZVBhcmVudCA9PiB7XG5cdFx0Y29kZWJsb2NrUHJlUGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLXByZS1wYXJlbnQnKTtcblx0fSk7XG5cdFtcblx0XHQuLi5BcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJwcmUuY29kZS1zdHlsZXItcHJlIGRpdltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXVwiKSksXG5cdFx0Li4uQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwicHJlLmNvZGUtc3R5bGVyLXByZSBkaXZbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddXCIpKSxcblx0XHQuLi5BcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6bm90KHByZSkgPiBjb2RlIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lclwiKSksXG5cdF0uZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQucmVtb3ZlKCkpO1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwicHJlLmNvZGUtc3R5bGVyLXByZVwiKS5mb3JFYWNoKChjb2RlYmxvY2tQcmVFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItcHJlJyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1jb2xsYXBzZWQnKTtcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXRydWUtaGVpZ2h0Jyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1saW5lLW51bWJlci1tYXJnaW4nKTtcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXgtaGVpZ2h0Jyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnd2hpdGUtc3BhY2UnKTtcblx0fSk7XG5cdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSA+IGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCcpLmZvckVhY2goKGV4ZWN1dGVDb2RlT3V0cHV0OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdGV4ZWN1dGVDb2RlT3V0cHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2V4ZWN1dGUtY29kZS1vdXRwdXQnKTtcblx0XHRleGVjdXRlQ29kZU91dHB1dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS10cnVlLWhlaWdodCcpO1xuXHRcdGV4ZWN1dGVDb2RlT3V0cHV0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXgtaGVpZ2h0Jyk7XG5cdH0pO1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgPiBjb2RlOm50aC1vZi10eXBlKDEpJykuZm9yRWFjaCgoY29kZWJsb2NrQ29kZUVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tdHJ1ZS1oZWlnaHQnKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1saW5lLXdyYXBwaW5nJyk7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tbGluZS1hY3RpdmUtd3JhcHBpbmcnKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpO1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCd3aGl0ZS1zcGFjZScpO1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LmlubmVySFRNTCA9IEFycmF5LmZyb20oY29kZWJsb2NrQ29kZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnY29kZSA+IFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdJykpLnJlZHVjZSgocmVjb25zdHJ1Y3RlZENvZGVibG9ja0xpbmVzOiBBcnJheTxzdHJpbmc+LCBjb2RlYmxvY2tMaW5lOiBIVE1MRWxlbWVudCk6IEFycmF5PHN0cmluZz4gPT4ge1xuXHRcdFx0Y29uc3QgY29kZWJsb2NrTGluZVRleHQgPSAoY29kZWJsb2NrTGluZS5maXJzdENoaWxkIGFzIEhUTUxFbGVtZW50KTtcblx0XHRcdGlmIChjb2RlYmxvY2tMaW5lVGV4dClcblx0XHRcdFx0cmVjb25zdHJ1Y3RlZENvZGVibG9ja0xpbmVzLnB1c2goY29kZWJsb2NrTGluZVRleHQuaW5uZXJIVE1MKTtcblx0XHRcdHJldHVybiByZWNvbnN0cnVjdGVkQ29kZWJsb2NrTGluZXNcblx0XHR9LFtdKS5qb2luKCdcXG4nKSsnXFxuJztcblx0fSk7XG5cdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6bm90KHByZSkgPiBjb2RlXCIpLmZvckVhY2goKGlubGluZUNvZGVFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodGVkJyk7XG5cdFx0aW5saW5lQ29kZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItaGlnaGxpZ2h0LWlnbm9yZScpO1xuXHRcdGlubGluZUNvZGVFbGVtZW50LmlubmVyVGV4dCA9IGlubGluZUNvZGVFbGVtZW50LmdldEF0dHJpYnV0ZShcInBhcmFtZXRlcnNcIikgKyBpbmxpbmVDb2RlRWxlbWVudC5pbm5lclRleHQ7XG5cdH0pO1xufVxuXG5leHBvcnQgY29uc3QgcmVhZGluZ1N0eWxpbmdNdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuXHRtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XG5cdFx0aWYgKG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoICE9PSAwKVxuXHRcdFx0bXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKChhZGRlZE5vZGU6IEhUTUxFbGVtZW50KT0+cmVtZWFzdXJlUmVhZGluZ1ZpZXcoYWRkZWROb2RlKSlcblx0fSk7XG59KTtcbmV4cG9ydCBjb25zdCBleGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG5cdG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbjogTXV0YXRpb25SZWNvcmQpID0+IHtcblx0XHRpZiAobXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gXCJzdHlsZVwiICYmIChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT09ICdDT0RFJyAmJiAobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ2V4ZWN1dGUtY29kZS1vdXRwdXQnKSkgeyAvLyBDaGFuZ2Ugc3R5bGUgb2YgZXhlY3V0ZSBjb2RlIG91dHB1dFxuXHRcdFx0Y29uc3QgZXhlY3V0ZUNvZGVPdXRwdXQgPSBtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRpZiAoZXhlY3V0ZUNvZGVPdXRwdXQucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjb2RlLXN0eWxlci1jb2xsYXBzZWQnKSlcblx0XHRcdFx0ZXhlY3V0ZUNvZGVPdXRwdXQuc3R5bGUubWF4SGVpZ2h0ID0gJyc7XG5cdFx0fSBlbHNlIGlmIChtdXRhdGlvbi50eXBlID09PSBcImNoaWxkTGlzdFwiICYmIChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT09ICdDT0RFJyAmJiAobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ2V4ZWN1dGUtY29kZS1vdXRwdXQnKSkgeyAvLyBDaGFuZ2UgY2hpbGRyZW4gb2YgZXhlY3V0ZSBjb2RlIG91dHB1dFxuXHRcdFx0Y29uc3QgZXhlY3V0ZUNvZGVPdXRwdXQgPSBtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdGV4ZWN1dGVDb2RlT3V0cHV0LnN0eWxlLnNldFByb3BlcnR5KCctLXRydWUtaGVpZ2h0JyxgY2FsYygke2V4ZWN1dGVDb2RlT3V0cHV0LnNjcm9sbEhlaWdodH1weCArIDMuNSAqIHZhcigtLWNvZGUtcGFkZGluZykgKyB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKWApO1xuXHRcdFx0fSxQUklNQVJZX0RFTEFZKVxuXHRcdH0gZWxzZSBpZiAobXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gXCJzdHlsZVwiICYmIChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT09ICdJTlBVVCcgJiYgKG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudD8udGFnTmFtZSA9PT0gJ0NPREUnKSB7IC8vIENoYW5nZSBzdHlsZSBvZiBleGVjdXRlIGNvZGUgb3V0cHV0IGlucHV0IGJveFxuXHRcdFx0Y29uc3QgZXhlY3V0ZUNvZGVPdXRwdXQgPSBtdXRhdGlvbi50YXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblx0XHRcdGlmIChleGVjdXRlQ29kZU91dHB1dCkge1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0ZXhlY3V0ZUNvZGVPdXRwdXQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdHJ1ZS1oZWlnaHQnLGBjYWxjKCR7ZXhlY3V0ZUNvZGVPdXRwdXQuc2Nyb2xsSGVpZ2h0fXB4ICsgMy41ICogdmFyKC0tY29kZS1wYWRkaW5nKSArIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpYCk7XG5cdFx0XHRcdH0sU0VDT05EQVJZX0RFTEFZKVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAobXV0YXRpb24udHlwZSA9PT0gXCJjaGlsZExpc3RcIiAmJiAobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS50YWdOYW1lID09PSAnUFJFJykgeyAvLyBBZGQgZXhlY3V0ZSBjb2RlIG91dHB1dFxuXHRcdFx0Y29uc3QgZXhlY3V0ZUNvZGVPdXRwdXQgPSAobXV0YXRpb24udGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCdwcmUgPiBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQnKSBhcyBIVE1MRWxlbWVudDtcblx0XHRcdGlmIChleGVjdXRlQ29kZU91dHB1dCkge1xuXHRcdFx0XHRleGVjdXRlQ29kZU91dHB1dC5jbGFzc0xpc3QuYWRkKCdleGVjdXRlLWNvZGUtb3V0cHV0Jyk7XG5cdFx0XHRcdGlmICghZXhlY3V0ZUNvZGVPdXRwdXQuc3R5bGUubWF4SGVpZ2h0KSB7XG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0ZXhlY3V0ZUNvZGVPdXRwdXQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdHJ1ZS1oZWlnaHQnLGBjYWxjKCR7ZXhlY3V0ZUNvZGVPdXRwdXQuc2Nyb2xsSGVpZ2h0fXB4ICsgMy41ICogdmFyKC0tY29kZS1wYWRkaW5nKSArIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpYCk7XG5cdFx0XHRcdFx0XHRleGVjdXRlQ29kZU91dHB1dC5zdHlsZS5tYXhIZWlnaHQgPSAndmFyKC0tdHJ1ZS1oZWlnaHQpJztcblx0XHRcdFx0XHRcdGV4ZWN1dGVDb2RlT3V0cHV0LnN0eWxlLndoaXRlU3BhY2UgPSAndmFyKC0tbGluZS13cmFwcGluZyknO1xuXHRcdFx0XHRcdH0sUFJJTUFSWV9ERUxBWSlcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59KTtcbiIsICIvKipcbiAqIFRocm93IGEgZ2l2ZW4gZXJyb3IuXG4gKlxuICogQHBhcmFtIHtFcnJvcnxudWxsfHVuZGVmaW5lZH0gW2Vycm9yXVxuICogICBNYXliZSBlcnJvci5cbiAqIEByZXR1cm5zIHthc3NlcnRzIGVycm9yIGlzIG51bGx8dW5kZWZpbmVkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFpbChlcnJvcikge1xuICBpZiAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3ZmaWxlJykuVkZpbGVDb21wYXRpYmxlfSBWRmlsZUNvbXBhdGlibGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3ZmaWxlJykuVkZpbGVWYWx1ZX0gVkZpbGVWYWx1ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5Qcm9jZXNzb3J9IFByb2Nlc3NvclxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5QbHVnaW59IFBsdWdpblxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5QcmVzZXR9IFByZXNldFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5QbHVnZ2FibGV9IFBsdWdnYWJsZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5QbHVnZ2FibGVMaXN0fSBQbHVnZ2FibGVMaXN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlRyYW5zZm9ybWVyfSBUcmFuc2Zvcm1lclxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5QYXJzZXJ9IFBhcnNlclxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5Db21waWxlcn0gQ29tcGlsZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUnVuQ2FsbGJhY2t9IFJ1bkNhbGxiYWNrXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlByb2Nlc3NDYWxsYmFja30gUHJvY2Vzc0NhbGxiYWNrXG4gKlxuICogQHR5cGVkZWYgQ29udGV4dFxuICogQHByb3BlcnR5IHtOb2RlfSB0cmVlXG4gKiBAcHJvcGVydHkge1ZGaWxlfSBmaWxlXG4gKi9cblxuaW1wb3J0IHtiYWlsfSBmcm9tICdiYWlsJ1xuaW1wb3J0IGlzQnVmZmVyIGZyb20gJ2lzLWJ1ZmZlcidcbmltcG9ydCBleHRlbmQgZnJvbSAnZXh0ZW5kJ1xuaW1wb3J0IGlzUGxhaW5PYmogZnJvbSAnaXMtcGxhaW4tb2JqJ1xuaW1wb3J0IHt0cm91Z2h9IGZyb20gJ3Ryb3VnaCdcbmltcG9ydCB7VkZpbGV9IGZyb20gJ3ZmaWxlJ1xuXG4vLyBFeHBvc2UgYSBmcm96ZW4gcHJvY2Vzc29yLlxuZXhwb3J0IGNvbnN0IHVuaWZpZWQgPSBiYXNlKCkuZnJlZXplKClcblxuY29uc3Qgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLy8gRnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBmaXJzdCBwcm9jZXNzb3IuXG4vKipcbiAqIEByZXR1cm5zIHtQcm9jZXNzb3J9XG4gKi9cbmZ1bmN0aW9uIGJhc2UoKSB7XG4gIGNvbnN0IHRyYW5zZm9ybWVycyA9IHRyb3VnaCgpXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydhdHRhY2hlcnMnXX0gKi9cbiAgY29uc3QgYXR0YWNoZXJzID0gW11cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi9cbiAgbGV0IG5hbWVzcGFjZSA9IHt9XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbnx1bmRlZmluZWR9ICovXG4gIGxldCBmcm96ZW5cbiAgbGV0IGZyZWV6ZUluZGV4ID0gLTFcblxuICAvLyBEYXRhIG1hbmFnZW1lbnQuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IG92ZXJsb2FkcyBhcmUgaGFuZGxlZC5cbiAgcHJvY2Vzc29yLmRhdGEgPSBkYXRhXG4gIHByb2Nlc3Nvci5QYXJzZXIgPSB1bmRlZmluZWRcbiAgcHJvY2Vzc29yLkNvbXBpbGVyID0gdW5kZWZpbmVkXG5cbiAgLy8gTG9jay5cbiAgcHJvY2Vzc29yLmZyZWV6ZSA9IGZyZWV6ZVxuXG4gIC8vIFBsdWdpbnMuXG4gIHByb2Nlc3Nvci5hdHRhY2hlcnMgPSBhdHRhY2hlcnNcbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogb3ZlcmxvYWRzIGFyZSBoYW5kbGVkLlxuICBwcm9jZXNzb3IudXNlID0gdXNlXG5cbiAgLy8gQVBJLlxuICBwcm9jZXNzb3IucGFyc2UgPSBwYXJzZVxuICBwcm9jZXNzb3Iuc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IG92ZXJsb2FkcyBhcmUgaGFuZGxlZC5cbiAgcHJvY2Vzc29yLnJ1biA9IHJ1blxuICBwcm9jZXNzb3IucnVuU3luYyA9IHJ1blN5bmNcbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogb3ZlcmxvYWRzIGFyZSBoYW5kbGVkLlxuICBwcm9jZXNzb3IucHJvY2VzcyA9IHByb2Nlc3NcbiAgcHJvY2Vzc29yLnByb2Nlc3NTeW5jID0gcHJvY2Vzc1N5bmNcblxuICAvLyBFeHBvc2UuXG4gIHJldHVybiBwcm9jZXNzb3JcblxuICAvLyBDcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IgaW4gdGhlIGN1cnJlbnQgc2NvcGUuXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yfSAqL1xuICBmdW5jdGlvbiBwcm9jZXNzb3IoKSB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSBiYXNlKClcbiAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICBkZXN0aW5hdGlvbi51c2UoLi4uYXR0YWNoZXJzW2luZGV4XSlcbiAgICB9XG5cbiAgICBkZXN0aW5hdGlvbi5kYXRhKGV4dGVuZCh0cnVlLCB7fSwgbmFtZXNwYWNlKSlcblxuICAgIHJldHVybiBkZXN0aW5hdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlY29yZDxzdHJpbmcsIHVua25vd24+fSBba2V5XVxuICAgKiBAcGFyYW0ge3Vua25vd259IFt2YWx1ZV1cbiAgICogQHJldHVybnMge3Vua25vd259XG4gICAqL1xuICBmdW5jdGlvbiBkYXRhKGtleSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFNldCBga2V5YC5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGFzc2VydFVuZnJvemVuKCdkYXRhJywgZnJvemVuKVxuICAgICAgICBuYW1lc3BhY2Vba2V5XSA9IHZhbHVlXG4gICAgICAgIHJldHVybiBwcm9jZXNzb3JcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IGBrZXlgLlxuICAgICAgcmV0dXJuIChvd24uY2FsbChuYW1lc3BhY2UsIGtleSkgJiYgbmFtZXNwYWNlW2tleV0pIHx8IG51bGxcbiAgICB9XG5cbiAgICAvLyBTZXQgc3BhY2UuXG4gICAgaWYgKGtleSkge1xuICAgICAgYXNzZXJ0VW5mcm96ZW4oJ2RhdGEnLCBmcm96ZW4pXG4gICAgICBuYW1lc3BhY2UgPSBrZXlcbiAgICAgIHJldHVybiBwcm9jZXNzb3JcbiAgICB9XG5cbiAgICAvLyBHZXQgc3BhY2UuXG4gICAgcmV0dXJuIG5hbWVzcGFjZVxuICB9XG5cbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ2ZyZWV6ZSddfSAqL1xuICBmdW5jdGlvbiBmcmVlemUoKSB7XG4gICAgaWYgKGZyb3plbikge1xuICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgIH1cblxuICAgIHdoaWxlICgrK2ZyZWV6ZUluZGV4IDwgYXR0YWNoZXJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgW2F0dGFjaGVyLCAuLi5vcHRpb25zXSA9IGF0dGFjaGVyc1tmcmVlemVJbmRleF1cblxuICAgICAgaWYgKG9wdGlvbnNbMF0gPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zWzBdID09PSB0cnVlKSB7XG4gICAgICAgIG9wdGlvbnNbMF0gPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgLyoqIEB0eXBlIHtUcmFuc2Zvcm1lcnx2b2lkfSAqL1xuICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBhdHRhY2hlci5jYWxsKHByb2Nlc3NvciwgLi4ub3B0aW9ucylcblxuICAgICAgaWYgKHR5cGVvZiB0cmFuc2Zvcm1lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0cmFuc2Zvcm1lcnMudXNlKHRyYW5zZm9ybWVyKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZyb3plbiA9IHRydWVcbiAgICBmcmVlemVJbmRleCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvclxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UGx1Z2dhYmxlfG51bGx8dW5kZWZpbmVkfSBbdmFsdWVdXG4gICAqIEBwYXJhbSB7Li4udW5rbm93bn0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7UHJvY2Vzc29yfVxuICAgKi9cbiAgZnVuY3Rpb24gdXNlKHZhbHVlLCAuLi5vcHRpb25zKSB7XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPnx1bmRlZmluZWR9ICovXG4gICAgbGV0IHNldHRpbmdzXG5cbiAgICBhc3NlcnRVbmZyb3plbigndXNlJywgZnJvemVuKVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEVtcHR5LlxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhZGRQbHVnaW4odmFsdWUsIC4uLm9wdGlvbnMpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgYWRkTGlzdCh2YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYCcgKyB2YWx1ZSArICdgJylcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3MpIHtcbiAgICAgIG5hbWVzcGFjZS5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24obmFtZXNwYWNlLnNldHRpbmdzIHx8IHt9LCBzZXR0aW5ncylcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ltcG9ydCgnLi4nKS5QbHVnZ2FibGU8dW5rbm93bltdPn0gdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYWRkUGx1Z2luKHZhbHVlKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IFtwbHVnaW4sIC4uLm9wdGlvbnNdID0gdmFsdWVcbiAgICAgICAgICBhZGRQbHVnaW4ocGx1Z2luLCAuLi5vcHRpb25zKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZFByZXNldCh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdXNhYmxlIHZhbHVlLCBub3QgYCcgKyB2YWx1ZSArICdgJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1ByZXNldH0gcmVzdWx0XG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkUHJlc2V0KHJlc3VsdCkge1xuICAgICAgYWRkTGlzdChyZXN1bHQucGx1Z2lucylcblxuICAgICAgaWYgKHJlc3VsdC5zZXR0aW5ncykge1xuICAgICAgICBzZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oc2V0dGluZ3MgfHwge30sIHJlc3VsdC5zZXR0aW5ncylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1BsdWdnYWJsZUxpc3R8bnVsbHx1bmRlZmluZWR9IFtwbHVnaW5zXVxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFkZExpc3QocGx1Z2lucykge1xuICAgICAgbGV0IGluZGV4ID0gLTFcblxuICAgICAgaWYgKHBsdWdpbnMgPT09IG51bGwgfHwgcGx1Z2lucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIEVtcHR5LlxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBsdWdpbnMpKSB7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgcGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB0aGluZyA9IHBsdWdpbnNbaW5kZXhdXG4gICAgICAgICAgYWRkKHRoaW5nKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIGxpc3Qgb2YgcGx1Z2lucywgbm90IGAnICsgcGx1Z2lucyArICdgJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1BsdWdpbn0gcGx1Z2luXG4gICAgICogQHBhcmFtIHsuLi51bmtub3dufSBbdmFsdWVdXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkUGx1Z2luKHBsdWdpbiwgdmFsdWUpIHtcbiAgICAgIGxldCBpbmRleCA9IC0xXG4gICAgICAvKiogQHR5cGUge1Byb2Nlc3NvclsnYXR0YWNoZXJzJ11bbnVtYmVyXXx1bmRlZmluZWR9ICovXG4gICAgICBsZXQgZW50cnlcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChhdHRhY2hlcnNbaW5kZXhdWzBdID09PSBwbHVnaW4pIHtcbiAgICAgICAgICBlbnRyeSA9IGF0dGFjaGVyc1tpbmRleF1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoaXNQbGFpbk9iaihlbnRyeVsxXSkgJiYgaXNQbGFpbk9iaih2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZSA9IGV4dGVuZCh0cnVlLCBlbnRyeVsxXSwgdmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICBlbnRyeVsxXSA9IHZhbHVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBmaW5lLlxuICAgICAgICBhdHRhY2hlcnMucHVzaChbLi4uYXJndW1lbnRzXSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQHR5cGUge1Byb2Nlc3NvclsncGFyc2UnXX0gKi9cbiAgZnVuY3Rpb24gcGFyc2UoZG9jKSB7XG4gICAgcHJvY2Vzc29yLmZyZWV6ZSgpXG4gICAgY29uc3QgZmlsZSA9IHZmaWxlKGRvYylcbiAgICBjb25zdCBQYXJzZXIgPSBwcm9jZXNzb3IuUGFyc2VyXG4gICAgYXNzZXJ0UGFyc2VyKCdwYXJzZScsIFBhcnNlcilcblxuICAgIGlmIChuZXdhYmxlKFBhcnNlciwgJ3BhcnNlJykpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBuZXdhYmxlYCBjaGVja3MgdGhpcy5cbiAgICAgIHJldHVybiBuZXcgUGFyc2VyKFN0cmluZyhmaWxlKSwgZmlsZSkucGFyc2UoKVxuICAgIH1cblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBuZXdhYmxlYCBjaGVja3MgdGhpcy5cbiAgICByZXR1cm4gUGFyc2VyKFN0cmluZyhmaWxlKSwgZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gIH1cblxuICAvKiogQHR5cGUge1Byb2Nlc3Nvclsnc3RyaW5naWZ5J119ICovXG4gIGZ1bmN0aW9uIHN0cmluZ2lmeShub2RlLCBkb2MpIHtcbiAgICBwcm9jZXNzb3IuZnJlZXplKClcbiAgICBjb25zdCBmaWxlID0gdmZpbGUoZG9jKVxuICAgIGNvbnN0IENvbXBpbGVyID0gcHJvY2Vzc29yLkNvbXBpbGVyXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3N0cmluZ2lmeScsIENvbXBpbGVyKVxuICAgIGFzc2VydE5vZGUobm9kZSlcblxuICAgIGlmIChuZXdhYmxlKENvbXBpbGVyLCAnY29tcGlsZScpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgbmV3YWJsZWAgY2hlY2tzIHRoaXMuXG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVyKG5vZGUsIGZpbGUpLmNvbXBpbGUoKVxuICAgIH1cblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBuZXdhYmxlYCBjaGVja3MgdGhpcy5cbiAgICByZXR1cm4gQ29tcGlsZXIobm9kZSwgZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAqIEBwYXJhbSB7VkZpbGVDb21wYXRpYmxlfFJ1bkNhbGxiYWNrfSBbZG9jXVxuICAgKiBAcGFyYW0ge1J1bkNhbGxiYWNrfSBbY2FsbGJhY2tdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE5vZGU+fHZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBydW4obm9kZSwgZG9jLCBjYWxsYmFjaykge1xuICAgIGFzc2VydE5vZGUobm9kZSlcbiAgICBwcm9jZXNzb3IuZnJlZXplKClcblxuICAgIGlmICghY2FsbGJhY2sgJiYgdHlwZW9mIGRvYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBkb2NcbiAgICAgIGRvYyA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShleGVjdXRvcilcbiAgICB9XG5cbiAgICBleGVjdXRvcihudWxsLCBjYWxsYmFjaylcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVsbHwoKG5vZGU6IE5vZGUpID0+IHZvaWQpfSByZXNvbHZlXG4gICAgICogQHBhcmFtIHsoZXJyb3I6IEVycm9yKSA9PiB2b2lkfSByZWplY3RcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBkb2NgIGNhblx1MjAxOXQgYmUgYSBjYWxsYmFjayBhbnltb3JlLCB3ZSBjaGVja2VkLlxuICAgICAgdHJhbnNmb3JtZXJzLnJ1bihub2RlLCB2ZmlsZShkb2MpLCBkb25lKVxuXG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSB7RXJyb3J8bnVsbH0gZXJyb3JcbiAgICAgICAqIEBwYXJhbSB7Tm9kZX0gdHJlZVxuICAgICAgICogQHBhcmFtIHtWRmlsZX0gZmlsZVxuICAgICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyb3IsIHRyZWUsIGZpbGUpIHtcbiAgICAgICAgdHJlZSA9IHRyZWUgfHwgbm9kZVxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgIHJlc29sdmUodHJlZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgY2FsbGJhY2tgIGlzIGRlZmluZWQgaWYgYHJlc29sdmVgIGlzIG5vdC5cbiAgICAgICAgICBjYWxsYmFjayhudWxsLCB0cmVlLCBmaWxlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ3J1blN5bmMnXX0gKi9cbiAgZnVuY3Rpb24gcnVuU3luYyhub2RlLCBmaWxlKSB7XG4gICAgLyoqIEB0eXBlIHtOb2RlfHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgcmVzdWx0XG4gICAgLyoqIEB0eXBlIHtib29sZWFufHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgY29tcGxldGVcblxuICAgIHByb2Nlc3Nvci5ydW4obm9kZSwgZmlsZSwgZG9uZSlcblxuICAgIGFzc2VydERvbmUoJ3J1blN5bmMnLCAncnVuJywgY29tcGxldGUpXG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB3ZSBlaXRoZXIgYmFpbGVkIG9uIGFuIGVycm9yIG9yIGhhdmUgYSB0cmVlLlxuICAgIHJldHVybiByZXN1bHRcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7RXJyb3J8bnVsbH0gW2Vycm9yXVxuICAgICAqIEBwYXJhbSB7Tm9kZX0gW3RyZWVdXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZG9uZShlcnJvciwgdHJlZSkge1xuICAgICAgYmFpbChlcnJvcilcbiAgICAgIHJlc3VsdCA9IHRyZWVcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1ZGaWxlQ29tcGF0aWJsZX0gZG9jXG4gICAqIEBwYXJhbSB7UHJvY2Vzc0NhbGxiYWNrfSBbY2FsbGJhY2tdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZGaWxlPnx1bmRlZmluZWR9XG4gICAqL1xuICBmdW5jdGlvbiBwcm9jZXNzKGRvYywgY2FsbGJhY2spIHtcbiAgICBwcm9jZXNzb3IuZnJlZXplKClcbiAgICBhc3NlcnRQYXJzZXIoJ3Byb2Nlc3MnLCBwcm9jZXNzb3IuUGFyc2VyKVxuICAgIGFzc2VydENvbXBpbGVyKCdwcm9jZXNzJywgcHJvY2Vzc29yLkNvbXBpbGVyKVxuXG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGV4ZWN1dG9yKVxuICAgIH1cblxuICAgIGV4ZWN1dG9yKG51bGwsIGNhbGxiYWNrKVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudWxsfCgoZmlsZTogVkZpbGUpID0+IHZvaWQpfSByZXNvbHZlXG4gICAgICogQHBhcmFtIHsoZXJyb3I/OiBFcnJvcnxudWxsfHVuZGVmaW5lZCkgPT4gdm9pZH0gcmVqZWN0XG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBjb25zdCBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgICBwcm9jZXNzb3IucnVuKHByb2Nlc3Nvci5wYXJzZShmaWxlKSwgZmlsZSwgKGVycm9yLCB0cmVlLCBmaWxlKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciB8fCAhdHJlZSB8fCAhZmlsZSkge1xuICAgICAgICAgIGRvbmUoZXJyb3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLyoqIEB0eXBlIHt1bmtub3dufSAqL1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3Nvci5zdHJpbmdpZnkodHJlZSwgZmlsZSlcblxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEVtcHR5LlxuICAgICAgICAgIH0gZWxzZSBpZiAobG9va3NMaWtlQVZGaWxlVmFsdWUocmVzdWx0KSkge1xuICAgICAgICAgICAgZmlsZS52YWx1ZSA9IHJlc3VsdFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlLnJlc3VsdCA9IHJlc3VsdFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUoZXJyb3IsIGZpbGUpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtFcnJvcnxudWxsfHVuZGVmaW5lZH0gW2Vycm9yXVxuICAgICAgICogQHBhcmFtIHtWRmlsZXx1bmRlZmluZWR9IFtmaWxlXVxuICAgICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyb3IsIGZpbGUpIHtcbiAgICAgICAgaWYgKGVycm9yIHx8ICFmaWxlKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKGZpbGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYGNhbGxiYWNrYCBpcyBkZWZpbmVkIGlmIGByZXNvbHZlYCBpcyBub3QuXG4gICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydwcm9jZXNzU3luYyddfSAqL1xuICBmdW5jdGlvbiBwcm9jZXNzU3luYyhkb2MpIHtcbiAgICAvKiogQHR5cGUge2Jvb2xlYW58dW5kZWZpbmVkfSAqL1xuICAgIGxldCBjb21wbGV0ZVxuXG4gICAgcHJvY2Vzc29yLmZyZWV6ZSgpXG4gICAgYXNzZXJ0UGFyc2VyKCdwcm9jZXNzU3luYycsIHByb2Nlc3Nvci5QYXJzZXIpXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3NTeW5jJywgcHJvY2Vzc29yLkNvbXBpbGVyKVxuXG4gICAgY29uc3QgZmlsZSA9IHZmaWxlKGRvYylcblxuICAgIHByb2Nlc3Nvci5wcm9jZXNzKGZpbGUsIGRvbmUpXG5cbiAgICBhc3NlcnREb25lKCdwcm9jZXNzU3luYycsICdwcm9jZXNzJywgY29tcGxldGUpXG5cbiAgICByZXR1cm4gZmlsZVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtFcnJvcnxudWxsfHVuZGVmaW5lZH0gW2Vycm9yXVxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRvbmUoZXJyb3IpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZVxuICAgICAgYmFpbChlcnJvcilcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgdmFsdWVgIGlzIGEgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBuZXdhYmxlKHZhbHVlLCBuYW1lKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmXG4gICAgLy8gUHJvdG90eXBlcyBkbyBleGlzdC5cbiAgICAvLyB0eXBlLWNvdmVyYWdlOmlnbm9yZS1uZXh0LWxpbmVcbiAgICB2YWx1ZS5wcm90b3R5cGUgJiZcbiAgICAvLyBBIGZ1bmN0aW9uIHdpdGgga2V5cyBpbiBpdHMgcHJvdG90eXBlIGlzIHByb2JhYmx5IGEgY29uc3RydWN0b3IuXG4gICAgLy8gQ2xhc3Nlc1x1MjAxOSBwcm90b3R5cGUgbWV0aG9kcyBhcmUgbm90IGVudW1lcmFibGUsIHNvIHdlIGNoZWNrIGlmIHNvbWUgdmFsdWVcbiAgICAvLyBleGlzdHMgaW4gdGhlIHByb3RvdHlwZS5cbiAgICAvLyB0eXBlLWNvdmVyYWdlOmlnbm9yZS1uZXh0LWxpbmVcbiAgICAoa2V5cyh2YWx1ZS5wcm90b3R5cGUpIHx8IG5hbWUgaW4gdmFsdWUucHJvdG90eXBlKVxuICApXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3Qgd2l0aCBrZXlzLlxuICpcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24ga2V5cyh2YWx1ZSkge1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgbGV0IGtleVxuXG4gIGZvciAoa2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKG93bi5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIEFzc2VydCBhIHBhcnNlciBpcyBhdmFpbGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIFBhcnNlcn1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UGFyc2VyKG5hbWUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgYCcgKyBuYW1lICsgJ2Agd2l0aG91dCBgUGFyc2VyYCcpXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgYSBjb21waWxlciBpcyBhdmFpbGFibGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIENvbXBpbGVyfVxuICovXG5mdW5jdGlvbiBhc3NlcnRDb21waWxlcihuYW1lLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGAnICsgbmFtZSArICdgIHdpdGhvdXQgYENvbXBpbGVyYCcpXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhlIHByb2Nlc3NvciBpcyBub3QgZnJvemVuLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3Vua25vd259IGZyb3plblxuICogQHJldHVybnMge2Fzc2VydHMgZnJvemVuIGlzIGZhbHNlfVxuICovXG5mdW5jdGlvbiBhc3NlcnRVbmZyb3plbihuYW1lLCBmcm96ZW4pIHtcbiAgaWYgKGZyb3plbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgY2FsbCBgJyArXG4gICAgICAgIG5hbWUgK1xuICAgICAgICAnYCBvbiBhIGZyb3plbiBwcm9jZXNzb3IuXFxuQ3JlYXRlIGEgbmV3IHByb2Nlc3NvciBmaXJzdCwgYnkgY2FsbGluZyBpdDogdXNlIGBwcm9jZXNzb3IoKWAgaW5zdGVhZCBvZiBgcHJvY2Vzc29yYC4nXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IGBub2RlYCBpcyBhIHVuaXN0IG5vZGUuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBub2RlXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBub2RlIGlzIE5vZGV9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vZGUobm9kZSkge1xuICAvLyBgaXNQbGFpbk9iamAgdW5mb3J0dW5hdGVseSB1c2VzIGBhbnlgIGluc3RlYWQgb2YgYHVua25vd25gLlxuICAvLyB0eXBlLWNvdmVyYWdlOmlnbm9yZS1uZXh0LWxpbmVcbiAgaWYgKCFpc1BsYWluT2JqKG5vZGUpIHx8IHR5cGVvZiBub2RlLnR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbm9kZSwgZ290IGAnICsgbm9kZSArICdgJylcbiAgICAvLyBGaW5lLlxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgYGNvbXBsZXRlYCBpcyBgdHJ1ZWAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBhc3luY05hbWVcbiAqIEBwYXJhbSB7dW5rbm93bn0gY29tcGxldGVcbiAqIEByZXR1cm5zIHthc3NlcnRzIGNvbXBsZXRlIGlzIHRydWV9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydERvbmUobmFtZSwgYXN5bmNOYW1lLCBjb21wbGV0ZSkge1xuICBpZiAoIWNvbXBsZXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2AnICsgbmFtZSArICdgIGZpbmlzaGVkIGFzeW5jLiBVc2UgYCcgKyBhc3luY05hbWUgKyAnYCBpbnN0ZWFkJ1xuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7VkZpbGVDb21wYXRpYmxlfSBbdmFsdWVdXG4gKiBAcmV0dXJucyB7VkZpbGV9XG4gKi9cbmZ1bmN0aW9uIHZmaWxlKHZhbHVlKSB7XG4gIHJldHVybiBsb29rc0xpa2VBVkZpbGUodmFsdWUpID8gdmFsdWUgOiBuZXcgVkZpbGUodmFsdWUpXG59XG5cbi8qKlxuICogQHBhcmFtIHtWRmlsZUNvbXBhdGlibGV9IFt2YWx1ZV1cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBWRmlsZX1cbiAqL1xuZnVuY3Rpb24gbG9va3NMaWtlQVZGaWxlKHZhbHVlKSB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIHZhbHVlICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAnbWVzc2FnZScgaW4gdmFsdWUgJiZcbiAgICAgICdtZXNzYWdlcycgaW4gdmFsdWVcbiAgKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gW3ZhbHVlXVxuICogQHJldHVybnMge3ZhbHVlIGlzIFZGaWxlVmFsdWV9XG4gKi9cbmZ1bmN0aW9uIGxvb2tzTGlrZUFWRmlsZVZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IGlzQnVmZmVyKHZhbHVlKVxufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuXHRyZXR1cm4gKHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSkgPT09IG51bGwpICYmICEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbHVlKSAmJiAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWx1ZSk7XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7KGVycm9yPzogRXJyb3J8bnVsbHx1bmRlZmluZWQsIC4uLm91dHB1dDogQXJyYXk8YW55PikgPT4gdm9pZH0gQ2FsbGJhY2tcbiAqIEB0eXBlZGVmIHsoLi4uaW5wdXQ6IEFycmF5PGFueT4pID0+IGFueX0gTWlkZGxld2FyZVxuICpcbiAqIEB0eXBlZGVmIHsoLi4uaW5wdXQ6IEFycmF5PGFueT4pID0+IHZvaWR9IFJ1blxuICogICBDYWxsIGFsbCBtaWRkbGV3YXJlLlxuICogQHR5cGVkZWYgeyhmbjogTWlkZGxld2FyZSkgPT4gUGlwZWxpbmV9IFVzZVxuICogICBBZGQgYGZuYCAobWlkZGxld2FyZSkgdG8gdGhlIGxpc3QuXG4gKiBAdHlwZWRlZiB7e3J1bjogUnVuLCB1c2U6IFVzZX19IFBpcGVsaW5lXG4gKiAgIE1pZGRsZXdhcmUuXG4gKi9cblxuLyoqXG4gKiBDcmVhdGUgbmV3IG1pZGRsZXdhcmUuXG4gKlxuICogQHJldHVybnMge1BpcGVsaW5lfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJvdWdoKCkge1xuICAvKiogQHR5cGUge0FycmF5PE1pZGRsZXdhcmU+fSAqL1xuICBjb25zdCBmbnMgPSBbXVxuICAvKiogQHR5cGUge1BpcGVsaW5lfSAqL1xuICBjb25zdCBwaXBlbGluZSA9IHtydW4sIHVzZX1cblxuICByZXR1cm4gcGlwZWxpbmVcblxuICAvKiogQHR5cGUge1J1bn0gKi9cbiAgZnVuY3Rpb24gcnVuKC4uLnZhbHVlcykge1xuICAgIGxldCBtaWRkbGV3YXJlSW5kZXggPSAtMVxuICAgIC8qKiBAdHlwZSB7Q2FsbGJhY2t9ICovXG4gICAgY29uc3QgY2FsbGJhY2sgPSB2YWx1ZXMucG9wKClcblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGZ1bmN0aW9uIGFzIGxhc3QgYXJndW1lbnQsIG5vdCAnICsgY2FsbGJhY2spXG4gICAgfVxuXG4gICAgbmV4dChudWxsLCAuLi52YWx1ZXMpXG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGhlIG5leHQgYGZuYCwgb3Igd2VcdTIwMTlyZSBkb25lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFcnJvcnxudWxsfHVuZGVmaW5lZH0gZXJyb3JcbiAgICAgKiBAcGFyYW0ge0FycmF5PGFueT59IG91dHB1dFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5leHQoZXJyb3IsIC4uLm91dHB1dCkge1xuICAgICAgY29uc3QgZm4gPSBmbnNbKyttaWRkbGV3YXJlSW5kZXhdXG4gICAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDb3B5IG5vbi1udWxsaXNoIGlucHV0IGludG8gdmFsdWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvdXRwdXRbaW5kZXhdID09PSBudWxsIHx8IG91dHB1dFtpbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG91dHB1dFtpbmRleF0gPSB2YWx1ZXNbaW5kZXhdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2F2ZSB0aGUgbmV3bHkgY3JlYXRlZCBgb3V0cHV0YCBmb3IgdGhlIG5leHQgY2FsbC5cbiAgICAgIHZhbHVlcyA9IG91dHB1dFxuXG4gICAgICAvLyBOZXh0IG9yIGRvbmUuXG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgd3JhcChmbiwgbmV4dCkoLi4ub3V0cHV0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgLi4ub3V0cHV0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7VXNlfSAqL1xuICBmdW5jdGlvbiB1c2UobWlkZGVsd2FyZSkge1xuICAgIGlmICh0eXBlb2YgbWlkZGVsd2FyZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ0V4cGVjdGVkIGBtaWRkZWx3YXJlYCB0byBiZSBhIGZ1bmN0aW9uLCBub3QgJyArIG1pZGRlbHdhcmVcbiAgICAgIClcbiAgICB9XG5cbiAgICBmbnMucHVzaChtaWRkZWx3YXJlKVxuICAgIHJldHVybiBwaXBlbGluZVxuICB9XG59XG5cbi8qKlxuICogV3JhcCBgbWlkZGxld2FyZWAuXG4gKiBDYW4gYmUgc3luYyBvciBhc3luYzsgcmV0dXJuIGEgcHJvbWlzZSwgcmVjZWl2ZSBhIGNhbGxiYWNrLCBvciByZXR1cm4gbmV3XG4gKiB2YWx1ZXMgYW5kIGVycm9ycy5cbiAqXG4gKiBAcGFyYW0ge01pZGRsZXdhcmV9IG1pZGRsZXdhcmVcbiAqIEBwYXJhbSB7Q2FsbGJhY2t9IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cmFwKG1pZGRsZXdhcmUsIGNhbGxiYWNrKSB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGNhbGxlZFxuXG4gIHJldHVybiB3cmFwcGVkXG5cbiAgLyoqXG4gICAqIENhbGwgYG1pZGRsZXdhcmVgLlxuICAgKiBAdGhpcyB7YW55fVxuICAgKiBAcGFyYW0ge0FycmF5PGFueT59IHBhcmFtZXRlcnNcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiB3cmFwcGVkKC4uLnBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBmbkV4cGVjdHNDYWxsYmFjayA9IG1pZGRsZXdhcmUubGVuZ3RoID4gcGFyYW1ldGVycy5sZW5ndGhcbiAgICAvKiogQHR5cGUge2FueX0gKi9cbiAgICBsZXQgcmVzdWx0XG5cbiAgICBpZiAoZm5FeHBlY3RzQ2FsbGJhY2spIHtcbiAgICAgIHBhcmFtZXRlcnMucHVzaChkb25lKVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBtaWRkbGV3YXJlLmFwcGx5KHRoaXMsIHBhcmFtZXRlcnMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGV4Y2VwdGlvbiA9IC8qKiBAdHlwZSB7RXJyb3J9ICovIChlcnJvcilcblxuICAgICAgLy8gV2VsbCwgdGhpcyBpcyBxdWl0ZSB0aGUgcGlja2xlLlxuICAgICAgLy8gYG1pZGRsZXdhcmVgIHJlY2VpdmVkIGEgY2FsbGJhY2sgYW5kIGNhbGxlZCBpdCBzeW5jaHJvbm91c2x5LCBidXQgdGhhdFxuICAgICAgLy8gdGhyZXcgYW4gZXJyb3IuXG4gICAgICAvLyBUaGUgb25seSB0aGluZyBsZWZ0IHRvIGRvIGlzIHRvIHRocm93IHRoZSB0aGluZyBpbnN0ZWFkLlxuICAgICAgaWYgKGZuRXhwZWN0c0NhbGxiYWNrICYmIGNhbGxlZCkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb25cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvbmUoZXhjZXB0aW9uKVxuICAgIH1cblxuICAgIGlmICghZm5FeHBlY3RzQ2FsbGJhY2spIHtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJlc3VsdC50aGVuKHRoZW4sIGRvbmUpXG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGRvbmUocmVzdWx0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhlbihyZXN1bHQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgYGNhbGxiYWNrYCwgb25seSBvbmNlLlxuICAgKiBAdHlwZSB7Q2FsbGJhY2t9XG4gICAqL1xuICBmdW5jdGlvbiBkb25lKGVycm9yLCAuLi5vdXRwdXQpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0gdHJ1ZVxuICAgICAgY2FsbGJhY2soZXJyb3IsIC4uLm91dHB1dClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBgZG9uZWAgd2l0aCBvbmUgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBbdmFsdWVdXG4gICAqL1xuICBmdW5jdGlvbiB0aGVuKHZhbHVlKSB7XG4gICAgZG9uZShudWxsLCB2YWx1ZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvc2l0aW9ufSBQb3NpdGlvblxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb2ludH0gUG9pbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vbWludXJsLnNoYXJlZC5qcycpLlVSTH0gVVJMXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9pbmRleC5qcycpLkRhdGF9IERhdGFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2luZGV4LmpzJykuVmFsdWV9IFZhbHVlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7dHlwZTogc3RyaW5nLCBwb3NpdGlvbj86IFBvc2l0aW9uIHwgdW5kZWZpbmVkfX0gTm9kZUxpa2VcbiAqXG4gKiBAdHlwZWRlZiB7J2FzY2lpJyB8ICd1dGY4JyB8ICd1dGYtOCcgfCAndXRmMTZsZScgfCAndWNzMicgfCAndWNzLTInIHwgJ2Jhc2U2NCcgfCAnYmFzZTY0dXJsJyB8ICdsYXRpbjEnIHwgJ2JpbmFyeScgfCAnaGV4J30gQnVmZmVyRW5jb2RpbmdcbiAqICAgRW5jb2RpbmdzIHN1cHBvcnRlZCBieSB0aGUgYnVmZmVyIGNsYXNzLlxuICpcbiAqICAgVGhpcyBpcyBhIGNvcHkgb2YgdGhlIHR5cGVzIGZyb20gTm9kZSwgY29waWVkIHRvIHByZXZlbnQgTm9kZSBnbG9iYWxzIGZyb21cbiAqICAgYmVpbmcgbmVlZGVkLlxuICogICBDb3BpZWQgZnJvbTogPGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL2Jsb2IvOTBhNGVjOC90eXBlcy9ub2RlL2J1ZmZlci5kLnRzI0wxNzA+XG4gKlxuICogQHR5cGVkZWYge09wdGlvbnMgfCBVUkwgfCBWYWx1ZSB8IFZGaWxlfSBDb21wYXRpYmxlXG4gKiAgIFRoaW5ncyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICpcbiAqIEB0eXBlZGVmIFZGaWxlQ29yZU9wdGlvbnNcbiAqICAgU2V0IG11bHRpcGxlIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7VmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkfSBbdmFsdWVdXG4gKiAgIFNldCBgdmFsdWVgLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbY3dkXVxuICogICBTZXQgYGN3ZGAuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz4gfCBudWxsIHwgdW5kZWZpbmVkfSBbaGlzdG9yeV1cbiAqICAgU2V0IGBoaXN0b3J5YC5cbiAqIEBwcm9wZXJ0eSB7VVJMIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BhdGhdXG4gKiAgIFNldCBgcGF0aGAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtiYXNlbmFtZV1cbiAqICAgU2V0IGBiYXNlbmFtZWAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtzdGVtXVxuICogICBTZXQgYHN0ZW1gLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbZXh0bmFtZV1cbiAqICAgU2V0IGBleHRuYW1lYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2Rpcm5hbWVdXG4gKiAgIFNldCBgZGlybmFtZWAuXG4gKiBAcHJvcGVydHkge0RhdGEgfCBudWxsIHwgdW5kZWZpbmVkfSBbZGF0YV1cbiAqICAgU2V0IGBkYXRhYC5cbiAqXG4gKiBAdHlwZWRlZiBNYXBcbiAqICAgUmF3IHNvdXJjZSBtYXAuXG4gKlxuICogICBTZWU6XG4gKiAgIDxodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2Jsb2IvNTg4MTlmMC9zb3VyY2UtbWFwLmQudHMjTDE1LUwyMz4uXG4gKiBAcHJvcGVydHkge251bWJlcn0gdmVyc2lvblxuICogICBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBzb3VyY2VzXG4gKiAgIEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gbmFtZXNcbiAqICAgQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVyZW5jZWQgYnkgaW5kaXZpZHVhbCBtYXBwaW5ncy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBbc291cmNlUm9vdF1cbiAqICAgVGhlIFVSTCByb290IGZyb20gd2hpY2ggYWxsIHNvdXJjZXMgYXJlIHJlbGF0aXZlLlxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkfSBbc291cmNlc0NvbnRlbnRdXG4gKiAgIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFwcGluZ3NcbiAqICAgQSBzdHJpbmcgb2YgYmFzZTY0IFZMUXMgd2hpY2ggY29udGFpbiB0aGUgYWN0dWFsIG1hcHBpbmdzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZpbGVcbiAqICAgVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogQHR5cGVkZWYge3tba2V5OiBzdHJpbmddOiB1bmtub3dufSAmIFZGaWxlQ29yZU9wdGlvbnN9IE9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqXG4gKiAgIEEgYnVuY2ggb2Yga2V5cyB0aGF0IHdpbGwgYmUgc2hhbGxvdyBjb3BpZWQgb3ZlciB0byB0aGUgbmV3IGZpbGUuXG4gKlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBSZXBvcnRlclNldHRpbmdzXG4gKiAgIENvbmZpZ3VyYXRpb24gZm9yIHJlcG9ydGVycy5cbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7UmVwb3J0ZXJTZXR0aW5nc30gU2V0dGluZ3NcbiAqICAgT3B0aW9ucyB0eXBlLlxuICogQGNhbGxiYWNrIFJlcG9ydGVyXG4gKiAgIFR5cGUgZm9yIGEgcmVwb3J0ZXIuXG4gKiBAcGFyYW0ge0FycmF5PFZGaWxlPn0gZmlsZXNcbiAqICAgRmlsZXMgdG8gcmVwb3J0LlxuICogQHBhcmFtIHtTZXR0aW5nc30gb3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgUmVwb3J0LlxuICovXG5cbmltcG9ydCBidWZmZXJMaWtlIGZyb20gJ2lzLWJ1ZmZlcidcbmltcG9ydCB7VkZpbGVNZXNzYWdlfSBmcm9tICd2ZmlsZS1tZXNzYWdlJ1xuaW1wb3J0IHtwYXRofSBmcm9tICcuL21pbnBhdGguanMnXG5pbXBvcnQge3Byb2N9IGZyb20gJy4vbWlucHJvYy5qcydcbmltcG9ydCB7dXJsVG9QYXRoLCBpc1VybH0gZnJvbSAnLi9taW51cmwuanMnXG5cbi8qKlxuICogT3JkZXIgb2Ygc2V0dGluZyAobGVhc3Qgc3BlY2lmaWMgdG8gbW9zdCksIHdlIG5lZWQgdGhpcyBiZWNhdXNlIG90aGVyd2lzZVxuICogYHtzdGVtOiAnYScsIHBhdGg6ICd+L2IuanMnfWAgd291bGQgdGhyb3csIGFzIGEgcGF0aCBpcyBuZWVkZWQgYmVmb3JlIGFcbiAqIHN0ZW0gY2FuIGJlIHNldC5cbiAqXG4gKiBAdHlwZSB7QXJyYXk8J2Jhc2VuYW1lJyB8ICdkaXJuYW1lJyB8ICdleHRuYW1lJyB8ICdoaXN0b3J5JyB8ICdwYXRoJyB8ICdzdGVtJz59XG4gKi9cbmNvbnN0IG9yZGVyID0gWydoaXN0b3J5JywgJ3BhdGgnLCAnYmFzZW5hbWUnLCAnc3RlbScsICdleHRuYW1lJywgJ2Rpcm5hbWUnXVxuXG5leHBvcnQgY2xhc3MgVkZpbGUge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHZpcnR1YWwgZmlsZS5cbiAgICpcbiAgICogYG9wdGlvbnNgIGlzIHRyZWF0ZWQgYXM6XG4gICAqXG4gICAqICogICBgc3RyaW5nYCBvciBgQnVmZmVyYCBcdTIwMTQgYHt2YWx1ZTogb3B0aW9uc31gXG4gICAqICogICBgVVJMYCBcdTIwMTQgYHtwYXRoOiBvcHRpb25zfWBcbiAgICogKiAgIGBWRmlsZWAgXHUyMDE0IHNoYWxsb3cgY29waWVzIGl0cyBkYXRhIG92ZXIgdG8gdGhlIG5ldyBmaWxlXG4gICAqICogICBgb2JqZWN0YCBcdTIwMTQgYWxsIGZpZWxkcyBhcmUgc2hhbGxvdyBjb3BpZWQgb3ZlciB0byB0aGUgbmV3IGZpbGVcbiAgICpcbiAgICogUGF0aCByZWxhdGVkIGZpZWxkcyBhcmUgc2V0IGluIHRoZSBmb2xsb3dpbmcgb3JkZXIgKGxlYXN0IHNwZWNpZmljIHRvXG4gICAqIG1vc3Qgc3BlY2lmaWMpOiBgaGlzdG9yeWAsIGBwYXRoYCwgYGJhc2VuYW1lYCwgYHN0ZW1gLCBgZXh0bmFtZWAsXG4gICAqIGBkaXJuYW1lYC5cbiAgICpcbiAgICogWW91IGNhbm5vdCBzZXQgYGRpcm5hbWVgIG9yIGBleHRuYW1lYCB3aXRob3V0IHNldHRpbmcgZWl0aGVyIGBoaXN0b3J5YCxcbiAgICogYHBhdGhgLCBgYmFzZW5hbWVgLCBvciBgc3RlbWAgdG9vLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBhdGlibGUgfCBudWxsIHwgdW5kZWZpbmVkfSBbdmFsdWVdXG4gICAqICAgRmlsZSB2YWx1ZS5cbiAgICogQHJldHVybnNcbiAgICogICBOZXcgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSkge1xuICAgIC8qKiBAdHlwZSB7T3B0aW9ucyB8IFZGaWxlfSAqL1xuICAgIGxldCBvcHRpb25zXG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICBvcHRpb25zID0ge31cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgYnVmZmVyKHZhbHVlKSkge1xuICAgICAgb3B0aW9ucyA9IHt2YWx1ZX1cbiAgICB9IGVsc2UgaWYgKGlzVXJsKHZhbHVlKSkge1xuICAgICAgb3B0aW9ucyA9IHtwYXRoOiB2YWx1ZX1cbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucyA9IHZhbHVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGxhY2UgdG8gc3RvcmUgY3VzdG9tIGluZm9ybWF0aW9uIChkZWZhdWx0OiBge31gKS5cbiAgICAgKlxuICAgICAqIEl0XHUyMDE5cyBPSyB0byBzdG9yZSBjdXN0b20gZGF0YSBkaXJlY3RseSBvbiB0aGUgZmlsZSBidXQgbW92aW5nIGl0IHRvXG4gICAgICogYGRhdGFgIGlzIHJlY29tbWVuZGVkLlxuICAgICAqXG4gICAgICogQHR5cGUge0RhdGF9XG4gICAgICovXG4gICAgdGhpcy5kYXRhID0ge31cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLlxuICAgICAqXG4gICAgICogQHR5cGUge0FycmF5PFZGaWxlTWVzc2FnZT59XG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlcyA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGZpbGVwYXRocyB0aGUgZmlsZSBtb3ZlZCBiZXR3ZWVuLlxuICAgICAqXG4gICAgICogVGhlIGZpcnN0IGlzIHRoZSBvcmlnaW5hbCBwYXRoIGFuZCB0aGUgbGFzdCBpcyB0aGUgY3VycmVudCBwYXRoLlxuICAgICAqXG4gICAgICogQHR5cGUge0FycmF5PHN0cmluZz59XG4gICAgICovXG4gICAgdGhpcy5oaXN0b3J5ID0gW11cblxuICAgIC8qKlxuICAgICAqIEJhc2Ugb2YgYHBhdGhgIChkZWZhdWx0OiBgcHJvY2Vzcy5jd2QoKWAgb3IgYCcvJ2AgaW4gYnJvd3NlcnMpLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLmN3ZCA9IHByb2MuY3dkKClcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICAgIC8qKlxuICAgICAqIFJhdyB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtWYWx1ZX1cbiAgICAgKi9cbiAgICB0aGlzLnZhbHVlXG5cbiAgICAvLyBUaGUgYmVsb3cgYXJlIG5vbi1zdGFuZGFyZCwgdGhleSBhcmUgXHUyMDFDd2VsbC1rbm93blx1MjAxRC5cbiAgICAvLyBBcyBpbiwgdXNlZCBpbiBzZXZlcmFsIHRvb2xzLlxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBhIGZpbGUgd2FzIHNhdmVkIHRvIGRpc2suXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVzZWQgYnkgdmZpbGUgcmVwb3J0ZXJzLlxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5zdG9yZWRcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSwgbm9uLXN0cmluZywgY29tcGlsZWQsIHJlcHJlc2VudGF0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB1c2VkIGJ5IHVuaWZpZWQgdG8gc3RvcmUgbm9uLXN0cmluZyByZXN1bHRzLlxuICAgICAqIE9uZSBleGFtcGxlIGlzIHdoZW4gdHVybmluZyBtYXJrZG93biBpbnRvIFJlYWN0IG5vZGVzLlxuICAgICAqXG4gICAgICogQHR5cGUge3Vua25vd259XG4gICAgICovXG4gICAgdGhpcy5yZXN1bHRcblxuICAgIC8qKlxuICAgICAqIFNvdXJjZSBtYXAuXG4gICAgICpcbiAgICAgKiBUaGlzIHR5cGUgaXMgZXF1aXZhbGVudCB0byB0aGUgYFJhd1NvdXJjZU1hcGAgdHlwZSBmcm9tIHRoZSBgc291cmNlLW1hcGBcbiAgICAgKiBtb2R1bGUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7TWFwIHwgbnVsbCB8IHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICB0aGlzLm1hcFxuICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG5cbiAgICAvLyBTZXQgcGF0aCByZWxhdGVkIHByb3BlcnRpZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuXG4gICAgbGV0IGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgb3JkZXIubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwcm9wID0gb3JkZXJbaW5kZXhdXG5cbiAgICAgIC8vIE5vdGU6IHdlIHNwZWNpZmljYWxseSB1c2UgYGluYCBpbnN0ZWFkIG9mIGBoYXNPd25Qcm9wZXJ0eWAgdG8gYWNjZXB0XG4gICAgICAvLyBgdmZpbGVgcyB0b28uXG4gICAgICBpZiAoXG4gICAgICAgIHByb3AgaW4gb3B0aW9ucyAmJlxuICAgICAgICBvcHRpb25zW3Byb3BdICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgb3B0aW9uc1twcm9wXSAhPT0gbnVsbFxuICAgICAgKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFRTIGRvZXNuXHUyMDE5dCB1bmRlcnN0YW5kIGJhc2ljIHJlYWxpdHkuXG4gICAgICAgIHRoaXNbcHJvcF0gPSBwcm9wID09PSAnaGlzdG9yeScgPyBbLi4ub3B0aW9uc1twcm9wXV0gOiBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gICAgbGV0IHByb3BcblxuICAgIC8vIFNldCBub24tcGF0aCByZWxhdGVkIHByb3BlcnRpZXMuXG4gICAgZm9yIChwcm9wIGluIG9wdGlvbnMpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGZpbmUgdG8gc2V0IG90aGVyIHRoaW5ncy5cbiAgICAgIGlmICghb3JkZXIuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogZmluZSB0byBzZXQgb3RoZXIgdGhpbmdzLlxuICAgICAgICB0aGlzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgcGF0aCAoZXhhbXBsZTogYCd+L2luZGV4Lm1pbi5qcydgKS5cbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGdldCBwYXRoKCkge1xuICAgIHJldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDFdXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmdWxsIHBhdGggKGV4YW1wbGU6IGAnfi9pbmRleC5taW4uanMnYCkuXG4gICAqXG4gICAqIENhbm5vdCBiZSBudWxsaWZpZWQuXG4gICAqIFlvdSBjYW4gc2V0IGEgZmlsZSBVUkwgKGEgYFVSTGAgb2JqZWN0IHdpdGggYSBgZmlsZTpgIHByb3RvY29sKSB3aGljaCB3aWxsXG4gICAqIGJlIHR1cm5lZCBpbnRvIGEgcGF0aCB3aXRoIGB1cmwuZmlsZVVSTFRvUGF0aGAuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVVJMfSBwYXRoXG4gICAqL1xuICBzZXQgcGF0aChwYXRoKSB7XG4gICAgaWYgKGlzVXJsKHBhdGgpKSB7XG4gICAgICBwYXRoID0gdXJsVG9QYXRoKHBhdGgpXG4gICAgfVxuXG4gICAgYXNzZXJ0Tm9uRW1wdHkocGF0aCwgJ3BhdGgnKVxuXG4gICAgaWYgKHRoaXMucGF0aCAhPT0gcGF0aCkge1xuICAgICAgdGhpcy5oaXN0b3J5LnB1c2gocGF0aClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwYXJlbnQgcGF0aCAoZXhhbXBsZTogYCd+J2ApLlxuICAgKi9cbiAgZ2V0IGRpcm5hbWUoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5kaXJuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBhcmVudCBwYXRoIChleGFtcGxlOiBgJ34nYCkuXG4gICAqXG4gICAqIENhbm5vdCBiZSBzZXQgaWYgdGhlcmVcdTIwMTlzIG5vIGBwYXRoYCB5ZXQuXG4gICAqL1xuICBzZXQgZGlybmFtZShkaXJuYW1lKSB7XG4gICAgYXNzZXJ0UGF0aCh0aGlzLmJhc2VuYW1lLCAnZGlybmFtZScpXG4gICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKGRpcm5hbWUgfHwgJycsIHRoaXMuYmFzZW5hbWUpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiYXNlbmFtZSAoaW5jbHVkaW5nIGV4dG5hbWUpIChleGFtcGxlOiBgJ2luZGV4Lm1pbi5qcydgKS5cbiAgICovXG4gIGdldCBiYXNlbmFtZSgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYmFzZW5hbWUgKGluY2x1ZGluZyBleHRuYW1lKSAoYCdpbmRleC5taW4uanMnYCkuXG4gICAqXG4gICAqIENhbm5vdCBjb250YWluIHBhdGggc2VwYXJhdG9ycyAoYCcvJ2Agb24gdW5peCwgbWFjT1MsIGFuZCBicm93c2VycywgYCdcXCdgXG4gICAqIG9uIHdpbmRvd3MpLlxuICAgKiBDYW5ub3QgYmUgbnVsbGlmaWVkICh1c2UgYGZpbGUucGF0aCA9IGZpbGUuZGlybmFtZWAgaW5zdGVhZCkuXG4gICAqL1xuICBzZXQgYmFzZW5hbWUoYmFzZW5hbWUpIHtcbiAgICBhc3NlcnROb25FbXB0eShiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgICBhc3NlcnRQYXJ0KGJhc2VuYW1lLCAnYmFzZW5hbWUnKVxuICAgIHRoaXMucGF0aCA9IHBhdGguam9pbih0aGlzLmRpcm5hbWUgfHwgJycsIGJhc2VuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXh0bmFtZSAoaW5jbHVkaW5nIGRvdCkgKGV4YW1wbGU6IGAnLmpzJ2ApLlxuICAgKi9cbiAgZ2V0IGV4dG5hbWUoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5leHRuYW1lKHRoaXMucGF0aCkgOiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGV4dG5hbWUgKGluY2x1ZGluZyBkb3QpIChleGFtcGxlOiBgJy5qcydgKS5cbiAgICpcbiAgICogQ2Fubm90IGNvbnRhaW4gcGF0aCBzZXBhcmF0b3JzIChgJy8nYCBvbiB1bml4LCBtYWNPUywgYW5kIGJyb3dzZXJzLCBgJ1xcJ2BcbiAgICogb24gd2luZG93cykuXG4gICAqIENhbm5vdCBiZSBzZXQgaWYgdGhlcmVcdTIwMTlzIG5vIGBwYXRoYCB5ZXQuXG4gICAqL1xuICBzZXQgZXh0bmFtZShleHRuYW1lKSB7XG4gICAgYXNzZXJ0UGFydChleHRuYW1lLCAnZXh0bmFtZScpXG4gICAgYXNzZXJ0UGF0aCh0aGlzLmRpcm5hbWUsICdleHRuYW1lJylcblxuICAgIGlmIChleHRuYW1lKSB7XG4gICAgICBpZiAoZXh0bmFtZS5jaGFyQ29kZUF0KDApICE9PSA0NiAvKiBgLmAgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZXh0bmFtZWAgbXVzdCBzdGFydCB3aXRoIGAuYCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChleHRuYW1lLmluY2x1ZGVzKCcuJywgMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZXh0bmFtZWAgY2Fubm90IGNvbnRhaW4gbXVsdGlwbGUgZG90cycpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSwgdGhpcy5zdGVtICsgKGV4dG5hbWUgfHwgJycpKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RlbSAoYmFzZW5hbWUgdy9vIGV4dG5hbWUpIChleGFtcGxlOiBgJ2luZGV4Lm1pbidgKS5cbiAgICovXG4gIGdldCBzdGVtKCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJ1xuICAgICAgPyBwYXRoLmJhc2VuYW1lKHRoaXMucGF0aCwgdGhpcy5leHRuYW1lKVxuICAgICAgOiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0ZW0gKGJhc2VuYW1lIHcvbyBleHRuYW1lKSAoZXhhbXBsZTogYCdpbmRleC5taW4nYCkuXG4gICAqXG4gICAqIENhbm5vdCBjb250YWluIHBhdGggc2VwYXJhdG9ycyAoYCcvJ2Agb24gdW5peCwgbWFjT1MsIGFuZCBicm93c2VycywgYCdcXCdgXG4gICAqIG9uIHdpbmRvd3MpLlxuICAgKiBDYW5ub3QgYmUgbnVsbGlmaWVkICh1c2UgYGZpbGUucGF0aCA9IGZpbGUuZGlybmFtZWAgaW5zdGVhZCkuXG4gICAqL1xuICBzZXQgc3RlbShzdGVtKSB7XG4gICAgYXNzZXJ0Tm9uRW1wdHkoc3RlbSwgJ3N0ZW0nKVxuICAgIGFzc2VydFBhcnQoc3RlbSwgJ3N0ZW0nKVxuICAgIHRoaXMucGF0aCA9IHBhdGguam9pbih0aGlzLmRpcm5hbWUgfHwgJycsIHN0ZW0gKyAodGhpcy5leHRuYW1lIHx8ICcnKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhlIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyRW5jb2RpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbZW5jb2Rpbmc9J3V0ZjgnXVxuICAgKiAgIENoYXJhY3RlciBlbmNvZGluZyB0byB1bmRlcnN0YW5kIGB2YWx1ZWAgYXMgd2hlbiBpdFx1MjAxOXMgYSBgQnVmZmVyYFxuICAgKiAgIChkZWZhdWx0OiBgJ3V0ZjgnYCkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqICAgU2VyaWFsaXplZCBmaWxlLlxuICAgKi9cbiAgdG9TdHJpbmcoZW5jb2RpbmcpIHtcbiAgICByZXR1cm4gKHRoaXMudmFsdWUgfHwgJycpLnRvU3RyaW5nKGVuY29kaW5nIHx8IHVuZGVmaW5lZClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB3YXJuaW5nIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLlxuICAgKlxuICAgKiBJdHMgYGZhdGFsYCBpcyBzZXQgdG8gYGZhbHNlYCBhbmQgYGZpbGVgIGlzIHNldCB0byB0aGUgY3VycmVudCBmaWxlIHBhdGguXG4gICAqIEl0cyBhZGRlZCB0byBgZmlsZS5tZXNzYWdlc2AuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgRXJyb3IgfCBWRmlsZU1lc3NhZ2V9IHJlYXNvblxuICAgKiAgIFJlYXNvbiBmb3IgbWVzc2FnZSwgdXNlcyB0aGUgc3RhY2sgYW5kIG1lc3NhZ2Ugb2YgdGhlIGVycm9yIGlmIGdpdmVuLlxuICAgKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9pbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGxhY2VdXG4gICAqICAgUGxhY2UgaW4gZmlsZSB3aGVyZSB0aGUgbWVzc2FnZSBvY2N1cnJlZC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3JpZ2luXVxuICAgKiAgIFBsYWNlIGluIGNvZGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb3JpZ2luYXRlcyAoZXhhbXBsZTpcbiAgICogICBgJ215LXBhY2thZ2U6bXktcnVsZSdgIG9yIGAnbXktcnVsZSdgKS5cbiAgICogQHJldHVybnMge1ZGaWxlTWVzc2FnZX1cbiAgICogICBNZXNzYWdlLlxuICAgKi9cbiAgbWVzc2FnZShyZWFzb24sIHBsYWNlLCBvcmlnaW4pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IFZGaWxlTWVzc2FnZShyZWFzb24sIHBsYWNlLCBvcmlnaW4pXG5cbiAgICBpZiAodGhpcy5wYXRoKSB7XG4gICAgICBtZXNzYWdlLm5hbWUgPSB0aGlzLnBhdGggKyAnOicgKyBtZXNzYWdlLm5hbWVcbiAgICAgIG1lc3NhZ2UuZmlsZSA9IHRoaXMucGF0aFxuICAgIH1cblxuICAgIG1lc3NhZ2UuZmF0YWwgPSBmYWxzZVxuXG4gICAgdGhpcy5tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpXG5cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbmZvIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLlxuICAgKlxuICAgKiBJdHMgYGZhdGFsYCBpcyBzZXQgdG8gYG51bGxgIGFuZCBgZmlsZWAgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGZpbGUgcGF0aC5cbiAgICogSXRzIGFkZGVkIHRvIGBmaWxlLm1lc3NhZ2VzYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvciB8IFZGaWxlTWVzc2FnZX0gcmVhc29uXG4gICAqICAgUmVhc29uIGZvciBtZXNzYWdlLCB1c2VzIHRoZSBzdGFjayBhbmQgbWVzc2FnZSBvZiB0aGUgZXJyb3IgaWYgZ2l2ZW4uXG4gICAqIEBwYXJhbSB7Tm9kZSB8IE5vZGVMaWtlIHwgUG9zaXRpb24gfCBQb2ludCB8IG51bGwgfCB1bmRlZmluZWR9IFtwbGFjZV1cbiAgICogICBQbGFjZSBpbiBmaWxlIHdoZXJlIHRoZSBtZXNzYWdlIG9jY3VycmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcmlnaW5dXG4gICAqICAgUGxhY2UgaW4gY29kZSB3aGVyZSB0aGUgbWVzc2FnZSBvcmlnaW5hdGVzIChleGFtcGxlOlxuICAgKiAgIGAnbXktcGFja2FnZTpteS1ydWxlJ2Agb3IgYCdteS1ydWxlJ2ApLlxuICAgKiBAcmV0dXJucyB7VkZpbGVNZXNzYWdlfVxuICAgKiAgIE1lc3NhZ2UuXG4gICAqL1xuICBpbmZvKHJlYXNvbiwgcGxhY2UsIG9yaWdpbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2UocmVhc29uLCBwbGFjZSwgb3JpZ2luKVxuXG4gICAgbWVzc2FnZS5mYXRhbCA9IG51bGxcblxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZmF0YWwgZXJyb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLlxuICAgKlxuICAgKiBJdHMgYGZhdGFsYCBpcyBzZXQgdG8gYHRydWVgIGFuZCBgZmlsZWAgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGZpbGUgcGF0aC5cbiAgICogSXRzIGFkZGVkIHRvIGBmaWxlLm1lc3NhZ2VzYC5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGEgZmF0YWwgZXJyb3IgbWVhbnMgdGhhdCBhIGZpbGUgaXMgbm8gbG9uZ2VyIHByb2Nlc3NhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEVycm9yIHwgVkZpbGVNZXNzYWdlfSByZWFzb25cbiAgICogICBSZWFzb24gZm9yIG1lc3NhZ2UsIHVzZXMgdGhlIHN0YWNrIGFuZCBtZXNzYWdlIG9mIHRoZSBlcnJvciBpZiBnaXZlbi5cbiAgICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvaW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BsYWNlXVxuICAgKiAgIFBsYWNlIGluIGZpbGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29yaWdpbl1cbiAgICogICBQbGFjZSBpbiBjb2RlIHdoZXJlIHRoZSBtZXNzYWdlIG9yaWdpbmF0ZXMgKGV4YW1wbGU6XG4gICAqICAgYCdteS1wYWNrYWdlOm15LXJ1bGUnYCBvciBgJ215LXJ1bGUnYCkuXG4gICAqIEByZXR1cm5zIHtuZXZlcn1cbiAgICogICBNZXNzYWdlLlxuICAgKiBAdGhyb3dzIHtWRmlsZU1lc3NhZ2V9XG4gICAqICAgTWVzc2FnZS5cbiAgICovXG4gIGZhaWwocmVhc29uLCBwbGFjZSwgb3JpZ2luKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubWVzc2FnZShyZWFzb24sIHBsYWNlLCBvcmlnaW4pXG5cbiAgICBtZXNzYWdlLmZhdGFsID0gdHJ1ZVxuXG4gICAgdGhyb3cgbWVzc2FnZVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgYHBhcnRgIGlzIG5vdCBhIHBhdGggKGFzIGluLCBkb2VzIG5vdCBjb250YWluIGBwYXRoLnNlcGApLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gcGFydFxuICogICBGaWxlIHBhdGggcGFydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiAgIFBhcnQgbmFtZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQYXJ0KHBhcnQsIG5hbWUpIHtcbiAgaWYgKHBhcnQgJiYgcGFydC5pbmNsdWRlcyhwYXRoLnNlcCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGEgcGF0aDogZGlkIG5vdCBleHBlY3QgYCcgKyBwYXRoLnNlcCArICdgJ1xuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IGBwYXJ0YCBpcyBub3QgZW1wdHkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHBhcnRcbiAqICAgVGhpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogICBQYXJ0IG5hbWUuXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBwYXJ0IGlzIHN0cmluZ31cbiAqICAgTm90aGluZy5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHkocGFydCwgbmFtZSkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBlbXB0eScpXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgYHBhdGhgIGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGF0aFxuICogICBQYXRoLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqICAgRGVwZW5kZW5jeSBuYW1lLlxuICogQHJldHVybnMge2Fzc2VydHMgcGF0aCBpcyBzdHJpbmd9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFBhdGgocGF0aCwgbmFtZSkge1xuICBpZiAoIXBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldHRpbmcgYCcgKyBuYW1lICsgJ2AgcmVxdWlyZXMgYHBhdGhgIHRvIGJlIHNldCB0b28nKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogICB0aGluZy5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBCdWZmZXJ9XG4gKiAgIFdoZXRoZXIgYHZhbHVlYCBpcyBhIE5vZGUuanMgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBidWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIGJ1ZmZlckxpa2UodmFsdWUpXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvc2l0aW9ufSBQb3NpdGlvblxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgTm9kZUxpa2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlXG4gKiBAcHJvcGVydHkge1Bvc2l0aW9uTGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IFtwb3NpdGlvbl1cbiAqXG4gKiBAdHlwZWRlZiBQb3NpdGlvbkxpa2VcbiAqIEBwcm9wZXJ0eSB7UG9pbnRMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3N0YXJ0XVxuICogQHByb3BlcnR5IHtQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbZW5kXVxuICpcbiAqIEB0eXBlZGVmIFBvaW50TGlrZVxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSBbbGluZV1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2NvbHVtbl1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29mZnNldF1cbiAqL1xuXG4vKipcbiAqIFNlcmlhbGl6ZSB0aGUgcG9zaXRpb25hbCBpbmZvIG9mIGEgcG9pbnQsIHBvc2l0aW9uIChzdGFydCBhbmQgZW5kIHBvaW50cyksXG4gKiBvciBub2RlLlxuICpcbiAqIEBwYXJhbSB7Tm9kZSB8IE5vZGVMaWtlIHwgUG9zaXRpb24gfCBQb3NpdGlvbkxpa2UgfCBQb2ludCB8IFBvaW50TGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IFt2YWx1ZV1cbiAqICAgTm9kZSwgcG9zaXRpb24sIG9yIHBvaW50LlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgUHJldHR5IHByaW50ZWQgcG9zaXRpb25hbCBpbmZvIG9mIGEgbm9kZSAoYHN0cmluZ2ApLlxuICpcbiAqICAgSW4gdGhlIGZvcm1hdCBvZiBhIHJhbmdlIGBsczpjcy1sZTpjZWAgKHdoZW4gZ2l2ZW4gYG5vZGVgIG9yIGBwb3NpdGlvbmApXG4gKiAgIG9yIGEgcG9pbnQgYGw6Y2AgKHdoZW4gZ2l2ZW4gYHBvaW50YCksIHdoZXJlIGBsYCBzdGFuZHMgZm9yIGxpbmUsIGBjYCBmb3JcbiAqICAgY29sdW1uLCBgc2AgZm9yIGBzdGFydGAsIGFuZCBgZWAgZm9yIGVuZC5cbiAqICAgQW4gZW1wdHkgc3RyaW5nIChgJydgKSBpcyByZXR1cm5lZCBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgbmVpdGhlciBgbm9kZWAsXG4gKiAgIGBwb3NpdGlvbmAsIG5vciBgcG9pbnRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5UG9zaXRpb24odmFsdWUpIHtcbiAgLy8gTm90aGluZy5cbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBOb2RlLlxuICBpZiAoJ3Bvc2l0aW9uJyBpbiB2YWx1ZSB8fCAndHlwZScgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gcG9zaXRpb24odmFsdWUucG9zaXRpb24pXG4gIH1cblxuICAvLyBQb3NpdGlvbi5cbiAgaWYgKCdzdGFydCcgaW4gdmFsdWUgfHwgJ2VuZCcgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gcG9zaXRpb24odmFsdWUpXG4gIH1cblxuICAvLyBQb2ludC5cbiAgaWYgKCdsaW5lJyBpbiB2YWx1ZSB8fCAnY29sdW1uJyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiBwb2ludCh2YWx1ZSlcbiAgfVxuXG4gIC8vID9cbiAgcmV0dXJuICcnXG59XG5cbi8qKlxuICogQHBhcmFtIHtQb2ludCB8IFBvaW50TGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IHBvaW50XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBwb2ludChwb2ludCkge1xuICByZXR1cm4gaW5kZXgocG9pbnQgJiYgcG9pbnQubGluZSkgKyAnOicgKyBpbmRleChwb2ludCAmJiBwb2ludC5jb2x1bW4pXG59XG5cbi8qKlxuICogQHBhcmFtIHtQb3NpdGlvbiB8IFBvc2l0aW9uTGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IHBvc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcG9zaXRpb24ocG9zKSB7XG4gIHJldHVybiBwb2ludChwb3MgJiYgcG9zLnN0YXJ0KSArICctJyArIHBvaW50KHBvcyAmJiBwb3MuZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGluZGV4KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiAxXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9zaXRpb259IFBvc2l0aW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge29iamVjdCAmIHt0eXBlOiBzdHJpbmcsIHBvc2l0aW9uPzogUG9zaXRpb24gfCB1bmRlZmluZWR9fSBOb2RlTGlrZVxuICovXG5cbmltcG9ydCB7c3RyaW5naWZ5UG9zaXRpb259IGZyb20gJ3VuaXN0LXV0aWwtc3RyaW5naWZ5LXBvc2l0aW9uJ1xuXG4vKipcbiAqIE1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBWRmlsZU1lc3NhZ2UgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBtZXNzYWdlIGZvciBgcmVhc29uYCBhdCBgcGxhY2VgIGZyb20gYG9yaWdpbmAuXG4gICAqXG4gICAqIFdoZW4gYW4gZXJyb3IgaXMgcGFzc2VkIGluIGFzIGByZWFzb25gLCB0aGUgYHN0YWNrYCBpcyBjb3BpZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgRXJyb3IgfCBWRmlsZU1lc3NhZ2V9IHJlYXNvblxuICAgKiAgIFJlYXNvbiBmb3IgbWVzc2FnZSwgdXNlcyB0aGUgc3RhY2sgYW5kIG1lc3NhZ2Ugb2YgdGhlIGVycm9yIGlmIGdpdmVuLlxuICAgKlxuICAgKiAgID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB5b3Ugc2hvdWxkIHVzZSBtYXJrZG93bi5cbiAgICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvaW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BsYWNlXVxuICAgKiAgIFBsYWNlIGluIGZpbGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29yaWdpbl1cbiAgICogICBQbGFjZSBpbiBjb2RlIHdoZXJlIHRoZSBtZXNzYWdlIG9yaWdpbmF0ZXMgKGV4YW1wbGU6XG4gICAqICAgYCdteS1wYWNrYWdlOm15LXJ1bGUnYCBvciBgJ215LXJ1bGUnYCkuXG4gICAqIEByZXR1cm5zXG4gICAqICAgSW5zdGFuY2Ugb2YgYFZGaWxlTWVzc2FnZWAuXG4gICAqL1xuICAvLyBUbyBkbzogbmV4dCBtYWpvcjogZXhwb3NlIGB1bmRlZmluZWRgIGV2ZXJ5d2hlcmUgaW5zdGVhZCBvZiBgbnVsbGAuXG4gIGNvbnN0cnVjdG9yKHJlYXNvbiwgcGxhY2UsIG9yaWdpbikge1xuICAgIC8qKiBAdHlwZSB7W3N0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGxdfSAqL1xuICAgIGNvbnN0IHBhcnRzID0gW251bGwsIG51bGxdXG4gICAgLyoqIEB0eXBlIHtQb3NpdGlvbn0gKi9cbiAgICBsZXQgcG9zaXRpb24gPSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB3ZSBhbHdheXMgZm9sbG93cyB0aGUgc3RydWN0dXJlIG9mIGBwb3NpdGlvbmAuXG4gICAgICBzdGFydDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbH0sXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBcIlxuICAgICAgZW5kOiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsfVxuICAgIH1cblxuICAgIHN1cGVyKClcblxuICAgIGlmICh0eXBlb2YgcGxhY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvcmlnaW4gPSBwbGFjZVxuICAgICAgcGxhY2UgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9yaWdpbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gb3JpZ2luLmluZGV4T2YoJzonKVxuXG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIHBhcnRzWzFdID0gb3JpZ2luXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0c1swXSA9IG9yaWdpbi5zbGljZSgwLCBpbmRleClcbiAgICAgICAgcGFydHNbMV0gPSBvcmlnaW4uc2xpY2UoaW5kZXggKyAxKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwbGFjZSkge1xuICAgICAgLy8gTm9kZS5cbiAgICAgIGlmICgndHlwZScgaW4gcGxhY2UgfHwgJ3Bvc2l0aW9uJyBpbiBwbGFjZSkge1xuICAgICAgICBpZiAocGxhY2UucG9zaXRpb24pIHtcbiAgICAgICAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogZGVlcCBjbG9uZS5cbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBsb29rcyBsaWtlIGEgcG9zaXRpb24uXG4gICAgICAgICAgcG9zaXRpb24gPSBwbGFjZS5wb3NpdGlvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBQb3NpdGlvbi5cbiAgICAgIGVsc2UgaWYgKCdzdGFydCcgaW4gcGxhY2UgfHwgJ2VuZCcgaW4gcGxhY2UpIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbG9va3MgbGlrZSBhIHBvc2l0aW9uLlxuICAgICAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogZGVlcCBjbG9uZS5cbiAgICAgICAgcG9zaXRpb24gPSBwbGFjZVxuICAgICAgfVxuICAgICAgLy8gUG9pbnQuXG4gICAgICBlbHNlIGlmICgnbGluZScgaW4gcGxhY2UgfHwgJ2NvbHVtbicgaW4gcGxhY2UpIHtcbiAgICAgICAgLy8gVG8gZG86IG5leHQgbWFqb3I6IGRlZXAgY2xvbmUuXG4gICAgICAgIHBvc2l0aW9uLnN0YXJ0ID0gcGxhY2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaWVsZHMgZnJvbSBgRXJyb3JgLlxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZWQgcG9zaXRpb25hbCBpbmZvIG9mIGVycm9yLlxuICAgICAqXG4gICAgICogT24gbm9ybWFsIGVycm9ycywgdGhpcyB3b3VsZCBiZSBzb21ldGhpbmcgbGlrZSBgUGFyc2VFcnJvcmAsIGJ1aXQgaW5cbiAgICAgKiBgVkZpbGVgIG1lc3NhZ2VzIHdlIHVzZSB0aGlzIHNwYWNlIHRvIHNob3cgd2hlcmUgYW4gZXJyb3IgaGFwcGVuZWQuXG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gc3RyaW5naWZ5UG9zaXRpb24ocGxhY2UpIHx8ICcxOjEnXG5cbiAgICAvKipcbiAgICAgKiBSZWFzb24gZm9yIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubWVzc2FnZSA9IHR5cGVvZiByZWFzb24gPT09ICdvYmplY3QnID8gcmVhc29uLm1lc3NhZ2UgOiByZWFzb25cblxuICAgIC8qKlxuICAgICAqIFN0YWNrIG9mIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVzZWQgYnkgbm9ybWFsIGVycm9ycyB0byBzaG93IHdoZXJlIHNvbWV0aGluZyBoYXBwZW5lZCBpblxuICAgICAqIHByb2dyYW1taW5nIGNvZGUsIGlycmVsZXZhbnQgZm9yIGBWRmlsZWAgbWVzc2FnZXMsXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuc3RhY2sgPSAnJ1xuXG4gICAgaWYgKHR5cGVvZiByZWFzb24gPT09ICdvYmplY3QnICYmIHJlYXNvbi5zdGFjaykge1xuICAgICAgdGhpcy5zdGFjayA9IHJlYXNvbi5zdGFja1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYXNvbiBmb3IgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB5b3Ugc2hvdWxkIHVzZSBtYXJrZG93bi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5yZWFzb24gPSB0aGlzLm1lc3NhZ2VcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICAgIC8qKlxuICAgICAqIFN0YXRlIG9mIHByb2JsZW0uXG4gICAgICpcbiAgICAgKiAqIGB0cnVlYCBcdTIwMTQgbWFya3MgYXNzb2NpYXRlZCBmaWxlIGFzIG5vIGxvbmdlciBwcm9jZXNzYWJsZSAoZXJyb3IpXG4gICAgICogKiBgZmFsc2VgIFx1MjAxNCBuZWNlc3NpdGF0ZXMgYSAocG90ZW50aWFsKSBjaGFuZ2UgKHdhcm5pbmcpXG4gICAgICogKiBgbnVsbCB8IHVuZGVmaW5lZGAgXHUyMDE0IGZvciB0aGluZ3MgdGhhdCBtaWdodCBub3QgbmVlZCBjaGFuZ2luZyAoaW5mbylcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICB0aGlzLmZhdGFsXG5cbiAgICAvKipcbiAgICAgKiBTdGFydGluZyBsaW5lIG9mIGVycm9yLlxuICAgICAqXG4gICAgICogQHR5cGUge251bWJlciB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5saW5lID0gcG9zaXRpb24uc3RhcnQubGluZVxuXG4gICAgLyoqXG4gICAgICogU3RhcnRpbmcgY29sdW1uIG9mIGVycm9yLlxuICAgICAqXG4gICAgICogQHR5cGUge251bWJlciB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5jb2x1bW4gPSBwb3NpdGlvbi5zdGFydC5jb2x1bW5cblxuICAgIC8qKlxuICAgICAqIEZ1bGwgdW5pc3QgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7UG9zaXRpb24gfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvblxuXG4gICAgLyoqXG4gICAgICogTmFtZXNwYWNlIG9mIG1lc3NhZ2UgKGV4YW1wbGU6IGAnbXktcGFja2FnZSdgKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmcgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMuc291cmNlID0gcGFydHNbMF1cblxuICAgIC8qKlxuICAgICAqIENhdGVnb3J5IG9mIG1lc3NhZ2UgKGV4YW1wbGU6IGAnbXktcnVsZSdgKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmcgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMucnVsZUlkID0gcGFydHNbMV1cblxuICAgIC8qKlxuICAgICAqIFBhdGggb2YgYSBmaWxlICh1c2VkIHRocm91Z2hvdXQgdGhlIGBWRmlsZWAgZWNvc3lzdGVtKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmcgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMuZmlsZVxuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIFx1MjAxQ3dlbGwga25vd25cdTIwMUQuXG4gICAgLy8gTm90IHN0YW5kYXJkLlxuICAgIC8vIEZlZWwgZnJlZSB0byBhZGQgb3RoZXIgbm9uLXN0YW5kYXJkIGZpZWxkcyB0byB5b3VyIG1lc3NhZ2VzLlxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSB0aGUgc291cmNlIHZhbHVlIHRoYXRcdTIwMTlzIGJlaW5nIHJlcG9ydGVkLCB3aGljaCBpcyBkZWVtZWRcbiAgICAgKiBpbmNvcnJlY3QuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLmFjdHVhbFxuXG4gICAgLyoqXG4gICAgICogU3VnZ2VzdCBhY2NlcHRhYmxlIHZhbHVlcyB0aGF0IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYGFjdHVhbGAuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7QXJyYXk8c3RyaW5nPiB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5leHBlY3RlZFxuXG4gICAgLyoqXG4gICAgICogTGluayB0byBkb2NzIGZvciB0aGUgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB0aGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgVVJMIHRoYXQgY2FuIGJlIHBhc3NlZCBhcyBgeGBcbiAgICAgKiA+IHRvIGBuZXcgVVJMKHgpYC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmcgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMudXJsXG5cbiAgICAvKipcbiAgICAgKiBMb25nIGZvcm0gZGVzY3JpcHRpb24gb2YgdGhlIG1lc3NhZ2UgKHlvdSBzaG91bGQgdXNlIG1hcmtkb3duKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmcgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMubm90ZVxuICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gIH1cbn1cblxuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5maWxlID0gJydcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUubmFtZSA9ICcnXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLnJlYXNvbiA9ICcnXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLm1lc3NhZ2UgPSAnJ1xuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5zdGFjayA9ICcnXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLmZhdGFsID0gbnVsbFxuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5jb2x1bW4gPSBudWxsXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLmxpbmUgPSBudWxsXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLnNvdXJjZSA9IG51bGxcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUucnVsZUlkID0gbnVsbFxuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5wb3NpdGlvbiA9IG51bGxcbiIsICIvLyBBIGRlcml2YXRpdmUgd29yayBiYXNlZCBvbjpcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnk+LlxuLy8gV2hpY2ggaXMgbGljZW5zZWQ6XG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTMgSmFtZXMgSGFsbGlkYXlcbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mXG4vLyB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluXG4vLyB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvXG4vLyB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZlxuLy8gdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLFxuLy8gc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTXG4vLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1Jcbi8vIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUlxuLy8gSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU5cbi8vIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBBIGRlcml2YXRpdmUgd29yayBiYXNlZCBvbjpcbi8vXG4vLyBQYXJ0cyBvZiB0aGF0IGFyZSBleHRyYWN0ZWQgZnJvbSBOb2RlXHUyMDE5cyBpbnRlcm5hbCBgcGF0aGAgbW9kdWxlOlxuLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL21hc3Rlci9saWIvcGF0aC5qcz4uXG4vLyBXaGljaCBpcyBsaWNlbnNlZDpcbi8vXG4vLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuZXhwb3J0IGNvbnN0IHBhdGggPSB7YmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHNlcDogJy8nfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtZGVwdGgsIGNvbXBsZXhpdHkgKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJhc2VuYW1lIGZyb20gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiAgIEZpbGUgcGF0aC5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBbZXh0XVxuICogICBFeHRlbnNpb24gdG8gc3RyaXAuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBTdGVtIG9yIGJhc2VuYW1lLlxuICovXG5mdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgaWYgKGV4dCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJylcbiAgfVxuXG4gIGFzc2VydFBhdGgocGF0aClcbiAgbGV0IHN0YXJ0ID0gMFxuICBsZXQgZW5kID0gLTFcbiAgbGV0IGluZGV4ID0gcGF0aC5sZW5ndGhcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgc2Vlbk5vblNsYXNoXG5cbiAgaWYgKGV4dCA9PT0gdW5kZWZpbmVkIHx8IGV4dC5sZW5ndGggPT09IDAgfHwgZXh0Lmxlbmd0aCA+IHBhdGgubGVuZ3RoKSB7XG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaW5kZXgpID09PSA0NyAvKiBgL2AgKi8pIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93LlxuICAgICAgICBpZiAoc2Vlbk5vblNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAvLyBwYXRoIGNvbXBvbmVudC5cbiAgICAgICAgc2Vlbk5vblNsYXNoID0gdHJ1ZVxuICAgICAgICBlbmQgPSBpbmRleCArIDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW5kIDwgMCA/ICcnIDogcGF0aC5zbGljZShzdGFydCwgZW5kKVxuICB9XG5cbiAgaWYgKGV4dCA9PT0gcGF0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgbGV0IGZpcnN0Tm9uU2xhc2hFbmQgPSAtMVxuICBsZXQgZXh0SW5kZXggPSBleHQubGVuZ3RoIC0gMVxuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgaWYgKHBhdGguY2hhckNvZGVBdChpbmRleCkgPT09IDQ3IC8qIGAvYCAqLykge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vdy5cbiAgICAgIGlmIChzZWVuTm9uU2xhc2gpIHtcbiAgICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPCAwKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCByZW1lbWJlciB0aGlzIGluZGV4IGluIGNhc2VcbiAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nLlxuICAgICAgICBzZWVuTm9uU2xhc2ggPSB0cnVlXG4gICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpbmRleCArIDFcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dEluZGV4ID4gLTEpIHtcbiAgICAgICAgLy8gVHJ5IHRvIG1hdGNoIHRoZSBleHBsaWNpdCBleHRlbnNpb24uXG4gICAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaW5kZXgpID09PSBleHQuY2hhckNvZGVBdChleHRJbmRleC0tKSkge1xuICAgICAgICAgIGlmIChleHRJbmRleCA8IDApIHtcbiAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgZW5kID0gaW5kZXhcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRXh0ZW5zaW9uIGRvZXMgbm90IG1hdGNoLCBzbyBvdXIgcmVzdWx0IGlzIHRoZSBlbnRpcmUgcGF0aFxuICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgIGV4dEluZGV4ID0gLTFcbiAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmRcbiAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kID0gcGF0aC5sZW5ndGhcbiAgfVxuXG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpXG59XG5cbi8qKlxuICogR2V0IHRoZSBkaXJuYW1lIGZyb20gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiAgIEZpbGUgcGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEZpbGUgcGF0aC5cbiAqL1xuZnVuY3Rpb24gZGlybmFtZShwYXRoKSB7XG4gIGFzc2VydFBhdGgocGF0aClcblxuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJy4nXG4gIH1cblxuICBsZXQgZW5kID0gLTFcbiAgbGV0IGluZGV4ID0gcGF0aC5sZW5ndGhcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgdW5tYXRjaGVkU2xhc2hcblxuICAvLyBQcmVmaXggYC0tYCBpcyBpbXBvcnRhbnQgdG8gbm90IHJ1biBvbiBgMGAuXG4gIHdoaWxlICgtLWluZGV4KSB7XG4gICAgaWYgKHBhdGguY2hhckNvZGVBdChpbmRleCkgPT09IDQ3IC8qIGAvYCAqLykge1xuICAgICAgaWYgKHVubWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIGVuZCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghdW5tYXRjaGVkU2xhc2gpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yXG4gICAgICB1bm1hdGNoZWRTbGFzaCA9IHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZW5kIDwgMFxuICAgID8gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKiBgL2AgKi9cbiAgICAgID8gJy8nXG4gICAgICA6ICcuJ1xuICAgIDogZW5kID09PSAxICYmIHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyogYC9gICovXG4gICAgPyAnLy8nXG4gICAgOiBwYXRoLnNsaWNlKDAsIGVuZClcbn1cblxuLyoqXG4gKiBHZXQgYW4gZXh0bmFtZSBmcm9tIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogICBGaWxlIHBhdGguXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBFeHRuYW1lLlxuICovXG5mdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgYXNzZXJ0UGF0aChwYXRoKVxuXG4gIGxldCBpbmRleCA9IHBhdGgubGVuZ3RoXG5cbiAgbGV0IGVuZCA9IC0xXG4gIGxldCBzdGFydFBhcnQgPSAwXG4gIGxldCBzdGFydERvdCA9IC0xXG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmQuXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDBcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgdW5tYXRjaGVkU2xhc2hcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaW5kZXgpXG5cbiAgICBpZiAoY29kZSA9PT0gNDcgLyogYC9gICovKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93LlxuICAgICAgaWYgKHVubWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGluZGV4ICsgMVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb24uXG4gICAgICB1bm1hdGNoZWRTbGFzaCA9IHRydWVcbiAgICAgIGVuZCA9IGluZGV4ICsgMVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSA0NiAvKiBgLmAgKi8pIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvbi5cbiAgICAgIGlmIChzdGFydERvdCA8IDApIHtcbiAgICAgICAgc3RhcnREb3QgPSBpbmRleFxuICAgICAgfSBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkge1xuICAgICAgICBwcmVEb3RTdGF0ZSA9IDFcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ID4gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvbi5cbiAgICAgIHByZURvdFN0YXRlID0gLTFcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPCAwIHx8XG4gICAgZW5kIDwgMCB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90LlxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgYC4uYC5cbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZClcbn1cblxuLyoqXG4gKiBKb2luIHNlZ21lbnRzIGZyb20gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gc2VnbWVudHNcbiAqICAgUGF0aCBzZWdtZW50cy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEZpbGUgcGF0aC5cbiAqL1xuZnVuY3Rpb24gam9pbiguLi5zZWdtZW50cykge1xuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGpvaW5lZFxuXG4gIHdoaWxlICgrK2luZGV4IDwgc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgYXNzZXJ0UGF0aChzZWdtZW50c1tpbmRleF0pXG5cbiAgICBpZiAoc2VnbWVudHNbaW5kZXhdKSB7XG4gICAgICBqb2luZWQgPVxuICAgICAgICBqb2luZWQgPT09IHVuZGVmaW5lZCA/IHNlZ21lbnRzW2luZGV4XSA6IGpvaW5lZCArICcvJyArIHNlZ21lbnRzW2luZGV4XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqb2luZWQgPT09IHVuZGVmaW5lZCA/ICcuJyA6IG5vcm1hbGl6ZShqb2luZWQpXG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgYmFzaWMgZmlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiAgIEZpbGUgcGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEZpbGUgcGF0aC5cbiAqL1xuLy8gTm90ZTogYG5vcm1hbGl6ZWAgaXMgbm90IGV4cG9zZWQgYXMgYHBhdGgubm9ybWFsaXplYCwgc28gc29tZSBjb2RlIGlzXG4vLyBtYW51YWxseSByZW1vdmVkIGZyb20gaXQuXG5mdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICBhc3NlcnRQYXRoKHBhdGgpXG5cbiAgY29uc3QgYWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qIGAvYCAqL1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMuXG4gIGxldCB2YWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhwYXRoLCAhYWJzb2x1dGUpXG5cbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhYWJzb2x1dGUpIHtcbiAgICB2YWx1ZSA9ICcuJ1xuICB9XG5cbiAgaWYgKHZhbHVlLmxlbmd0aCA+IDAgJiYgcGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3IC8qIC8gKi8pIHtcbiAgICB2YWx1ZSArPSAnLydcbiAgfVxuXG4gIHJldHVybiBhYnNvbHV0ZSA/ICcvJyArIHZhbHVlIDogdmFsdWVcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGAuYCBhbmQgYC4uYCBlbGVtZW50cyBpbiBhIHBhdGggd2l0aCBkaXJlY3RvcnkgbmFtZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqICAgRmlsZSBwYXRoLlxuICogQHBhcmFtIHtib29sZWFufSBhbGxvd0Fib3ZlUm9vdFxuICogICBXaGV0aGVyIGAuLmAgY2FuIG1vdmUgYWJvdmUgcm9vdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEZpbGUgcGF0aC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nKHBhdGgsIGFsbG93QWJvdmVSb290KSB7XG4gIGxldCByZXN1bHQgPSAnJ1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwXG4gIGxldCBsYXN0U2xhc2ggPSAtMVxuICBsZXQgZG90cyA9IDBcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBjb2RlXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgbGFzdFNsYXNoSW5kZXhcblxuICB3aGlsZSAoKytpbmRleCA8PSBwYXRoLmxlbmd0aCkge1xuICAgIGlmIChpbmRleCA8IHBhdGgubGVuZ3RoKSB7XG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGluZGV4KVxuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gNDcgLyogYC9gICovKSB7XG4gICAgICBicmVha1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlID0gNDcgLyogYC9gICovXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qIGAvYCAqLykge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaW5kZXggLSAxIHx8IGRvdHMgPT09IDEpIHtcbiAgICAgICAgLy8gRW1wdHkuXG4gICAgICB9IGVsc2UgaWYgKGxhc3RTbGFzaCAhPT0gaW5kZXggLSAxICYmIGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3VsdC5sZW5ndGggPCAyIHx8XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHxcbiAgICAgICAgICByZXN1bHQuY2hhckNvZGVBdChyZXN1bHQubGVuZ3RoIC0gMSkgIT09IDQ2IC8qIGAuYCAqLyB8fFxuICAgICAgICAgIHJlc3VsdC5jaGFyQ29kZUF0KHJlc3VsdC5sZW5ndGggLSAyKSAhPT0gNDYgLyogYC5gICovXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgbGFzdFNsYXNoSW5kZXggPSByZXN1bHQubGFzdEluZGV4T2YoJy8nKVxuXG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggIT09IHJlc3VsdC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAnJ1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMFxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZSgwLCBsYXN0U2xhc2hJbmRleClcbiAgICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IHJlc3VsdC5sZW5ndGggLSAxIC0gcmVzdWx0Lmxhc3RJbmRleE9mKCcvJylcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGxhc3RTbGFzaCA9IGluZGV4XG4gICAgICAgICAgICAgIGRvdHMgPSAwXG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gJydcbiAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMFxuICAgICAgICAgICAgbGFzdFNsYXNoID0gaW5kZXhcbiAgICAgICAgICAgIGRvdHMgPSAwXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5sZW5ndGggPiAwID8gcmVzdWx0ICsgJy8uLicgOiAnLi4nXG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlc3VsdCArPSAnLycgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGluZGV4KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IGluZGV4IC0gbGFzdFNsYXNoIC0gMVxuICAgICAgfVxuXG4gICAgICBsYXN0U2xhc2ggPSBpbmRleFxuICAgICAgZG90cyA9IDBcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ2IC8qIGAuYCAqLyAmJiBkb3RzID4gLTEpIHtcbiAgICAgIGRvdHMrK1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3RzID0gLTFcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogTWFrZSBzdXJlIGBwYXRoYCBpcyBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogICBGaWxlIHBhdGguXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBwYXRoIGlzIHN0cmluZ31cbiAqICAgTm90aGluZy5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJyArIEpTT04uc3RyaW5naWZ5KHBhdGgpXG4gICAgKVxuICB9XG59XG5cbi8qIGVzbGludC1lbmFibGUgbWF4LWRlcHRoLCBjb21wbGV4aXR5ICovXG4iLCAiLy8gU29tZXdoYXQgYmFzZWQgb246XG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL2RlZnVuY3R6b21iaWUvbm9kZS1wcm9jZXNzL2Jsb2IvbWFzdGVyL2Jyb3dzZXIuanM+LlxuLy8gQnV0IEkgZG9uXHUyMDE5dCB0aGluayBvbmUgdGlueSBsaW5lIG9mIGNvZGUgY2FuIGJlIGNvcHlyaWdodGVkLiBcdUQ4M0RcdURFMDVcbmV4cG9ydCBjb25zdCBwcm9jID0ge2N3ZH1cblxuZnVuY3Rpb24gY3dkKCkge1xuICByZXR1cm4gJy8nXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiBVUkxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBoYXNoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaG9zdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhvc3RuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaHJlZlxuICogQHByb3BlcnR5IHtzdHJpbmd9IG9yaWdpblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhc3N3b3JkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGF0aG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwb3J0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvdG9jb2xcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWFyY2hcbiAqIEBwcm9wZXJ0eSB7YW55fSBzZWFyY2hQYXJhbXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB1c2VybmFtZVxuICogQHByb3BlcnR5IHsoKSA9PiBzdHJpbmd9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkgeygpID0+IHN0cmluZ30gdG9KU09OXG4gKi9cblxuLyoqXG4gKiBDaGVjayBpZiBgZmlsZVVybE9yUGF0aGAgbG9va3MgbGlrZSBhIFVSTC5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IGZpbGVVcmxPclBhdGhcbiAqICAgRmlsZSBwYXRoIG9yIFVSTC5cbiAqIEByZXR1cm5zIHtmaWxlVXJsT3JQYXRoIGlzIFVSTH1cbiAqICAgV2hldGhlciBpdFx1MjAxOXMgYSBVUkwuXG4gKi9cbi8vIEZyb206IDxodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9mY2Y4YmE0L2xpYi9pbnRlcm5hbC91cmwuanMjTDE1MDE+XG5leHBvcnQgZnVuY3Rpb24gaXNVcmwoZmlsZVVybE9yUGF0aCkge1xuICByZXR1cm4gKFxuICAgIGZpbGVVcmxPclBhdGggIT09IG51bGwgJiZcbiAgICB0eXBlb2YgZmlsZVVybE9yUGF0aCA9PT0gJ29iamVjdCcgJiZcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBpbmRleGFibGUuXG4gICAgZmlsZVVybE9yUGF0aC5ocmVmICYmXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogaW5kZXhhYmxlLlxuICAgIGZpbGVVcmxPclBhdGgub3JpZ2luXG4gIClcbn1cbiIsICIvLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG5pbXBvcnQge2lzVXJsfSBmcm9tICcuL21pbnVybC5zaGFyZWQuanMnXG5cbi8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2ZjZjhiYTQvbGliL2ludGVybmFsL3VybC5qcz5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZyB8IFVSTH0gcGF0aFxuICogICBGaWxlIFVSTC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEZpbGUgVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXJsVG9QYXRoKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykge1xuICAgIHBhdGggPSBuZXcgVVJMKHBhdGgpXG4gIH0gZWxzZSBpZiAoIWlzVXJsKHBhdGgpKSB7XG4gICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInBhdGhcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIFVSTC4gUmVjZWl2ZWQgYCcgK1xuICAgICAgICBwYXRoICtcbiAgICAgICAgJ2AnXG4gICAgKVxuICAgIGVycm9yLmNvZGUgPSAnRVJSX0lOVkFMSURfQVJHX1RZUEUnXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIGlmIChwYXRoLnByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgVHlwZUVycm9yKCdUaGUgVVJMIG11c3QgYmUgb2Ygc2NoZW1lIGZpbGUnKVxuICAgIGVycm9yLmNvZGUgPSAnRVJSX0lOVkFMSURfVVJMX1NDSEVNRSdcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgcmV0dXJuIGdldFBhdGhGcm9tVVJMUG9zaXgocGF0aClcbn1cblxuLyoqXG4gKiBHZXQgYSBwYXRoIGZyb20gYSBQT1NJWCBVUkwuXG4gKlxuICogQHBhcmFtIHtVUkx9IHVybFxuICogICBVUkwuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBGaWxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGdldFBhdGhGcm9tVVJMUG9zaXgodXJsKSB7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09ICcnKSB7XG4gICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgJ0ZpbGUgVVJMIGhvc3QgbXVzdCBiZSBcImxvY2FsaG9zdFwiIG9yIGVtcHR5IG9uIGRhcndpbidcbiAgICApXG4gICAgZXJyb3IuY29kZSA9ICdFUlJfSU5WQUxJRF9GSUxFX1VSTF9IT1NUJ1xuICAgIHRocm93IGVycm9yXG4gIH1cblxuICBjb25zdCBwYXRobmFtZSA9IHVybC5wYXRobmFtZVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgcGF0aG5hbWUubGVuZ3RoKSB7XG4gICAgaWYgKFxuICAgICAgcGF0aG5hbWUuY2hhckNvZGVBdChpbmRleCkgPT09IDM3IC8qIGAlYCAqLyAmJlxuICAgICAgcGF0aG5hbWUuY2hhckNvZGVBdChpbmRleCArIDEpID09PSA1MCAvKiBgMmAgKi9cbiAgICApIHtcbiAgICAgIGNvbnN0IHRoaXJkID0gcGF0aG5hbWUuY2hhckNvZGVBdChpbmRleCArIDIpXG4gICAgICBpZiAodGhpcmQgPT09IDcwIC8qIGBGYCAqLyB8fCB0aGlyZCA9PT0gMTAyIC8qIGBmYCAqLykge1xuICAgICAgICAvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi9cbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICdGaWxlIFVSTCBwYXRoIG11c3Qgbm90IGluY2x1ZGUgZW5jb2RlZCAvIGNoYXJhY3RlcnMnXG4gICAgICAgIClcbiAgICAgICAgZXJyb3IuY29kZSA9ICdFUlJfSU5WQUxJRF9GSUxFX1VSTF9QQVRIJ1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocGF0aG5hbWUpXG59XG5cbmV4cG9ydCB7aXNVcmx9IGZyb20gJy4vbWludXJsLnNoYXJlZC5qcydcbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUm9vdHxpbXBvcnQoJ21kYXN0JykuQ29udGVudH0gTm9kZVxuICpcbiAqIEB0eXBlZGVmIE9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbiAob3B0aW9uYWwpLlxuICogQHByb3BlcnR5IHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2luY2x1ZGVJbWFnZUFsdD10cnVlXVxuICogICBXaGV0aGVyIHRvIHVzZSBgYWx0YCBmb3IgYGltYWdlYHMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbaW5jbHVkZUh0bWw9dHJ1ZV1cbiAqICAgV2hldGhlciB0byB1c2UgYHZhbHVlYCBvZiBIVE1MLlxuICovXG5cbi8qKiBAdHlwZSB7T3B0aW9uc30gKi9cbmNvbnN0IGVtcHR5T3B0aW9ucyA9IHt9XG5cbi8qKlxuICogR2V0IHRoZSB0ZXh0IGNvbnRlbnQgb2YgYSBub2RlIG9yIGxpc3Qgb2Ygbm9kZXMuXG4gKlxuICogUHJlZmVycyB0aGUgbm9kZVx1MjAxOXMgcGxhaW4tdGV4dCBmaWVsZHMsIG90aGVyd2lzZSBzZXJpYWxpemVzIGl0cyBjaGlsZHJlbixcbiAqIGFuZCBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gYXJyYXksIHNlcmlhbGl6ZSB0aGUgbm9kZXMgaW4gaXQuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogICBUaGluZyB0byBzZXJpYWxpemUsIHR5cGljYWxseSBgTm9kZWAuXG4gKiBAcGFyYW0ge09wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3B0aW9uc11cbiAqICAgQ29uZmlndXJhdGlvbiAob3B0aW9uYWwpLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgU2VyaWFsaXplZCBgdmFsdWVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zIHx8IGVtcHR5T3B0aW9uc1xuICBjb25zdCBpbmNsdWRlSW1hZ2VBbHQgPVxuICAgIHR5cGVvZiBzZXR0aW5ncy5pbmNsdWRlSW1hZ2VBbHQgPT09ICdib29sZWFuJ1xuICAgICAgPyBzZXR0aW5ncy5pbmNsdWRlSW1hZ2VBbHRcbiAgICAgIDogdHJ1ZVxuICBjb25zdCBpbmNsdWRlSHRtbCA9XG4gICAgdHlwZW9mIHNldHRpbmdzLmluY2x1ZGVIdG1sID09PSAnYm9vbGVhbicgPyBzZXR0aW5ncy5pbmNsdWRlSHRtbCA6IHRydWVcblxuICByZXR1cm4gb25lKHZhbHVlLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKVxufVxuXG4vKipcbiAqIE9uZSBub2RlIG9yIHNldmVyYWwgbm9kZXMuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogICBUaGluZyB0byBzZXJpYWxpemUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVJbWFnZUFsdFxuICogICBJbmNsdWRlIGltYWdlIGBhbHRgcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUh0bWxcbiAqICAgSW5jbHVkZSBIVE1MLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgU2VyaWFsaXplZCBub2RlLlxuICovXG5mdW5jdGlvbiBvbmUodmFsdWUsIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpIHtcbiAgaWYgKG5vZGUodmFsdWUpKSB7XG4gICAgaWYgKCd2YWx1ZScgaW4gdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50eXBlID09PSAnaHRtbCcgJiYgIWluY2x1ZGVIdG1sID8gJycgOiB2YWx1ZS52YWx1ZVxuICAgIH1cblxuICAgIGlmIChpbmNsdWRlSW1hZ2VBbHQgJiYgJ2FsdCcgaW4gdmFsdWUgJiYgdmFsdWUuYWx0KSB7XG4gICAgICByZXR1cm4gdmFsdWUuYWx0XG4gICAgfVxuXG4gICAgaWYgKCdjaGlsZHJlbicgaW4gdmFsdWUpIHtcbiAgICAgIHJldHVybiBhbGwodmFsdWUuY2hpbGRyZW4sIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpXG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGFsbCh2YWx1ZSwgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbClcbiAgfVxuXG4gIHJldHVybiAnJ1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSBhIGxpc3Qgb2Ygbm9kZXMuXG4gKlxuICogQHBhcmFtIHtBcnJheTx1bmtub3duPn0gdmFsdWVzXG4gKiAgIFRoaW5nIHRvIHNlcmlhbGl6ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUltYWdlQWx0XG4gKiAgIEluY2x1ZGUgaW1hZ2UgYGFsdGBzLlxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlSHRtbFxuICogICBJbmNsdWRlIEhUTUwuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBTZXJpYWxpemVkIG5vZGVzLlxuICovXG5mdW5jdGlvbiBhbGwodmFsdWVzLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKSB7XG4gIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi9cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gb25lKHZhbHVlc1tpbmRleF0sIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYHZhbHVlYCBsb29rcyBsaWtlIGEgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiAgIFRoaW5nLlxuICogQHJldHVybnMge3ZhbHVlIGlzIE5vZGV9XG4gKiAgIFdoZXRoZXIgYHZhbHVlYCBpcyBhIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIG5vZGUodmFsdWUpIHtcbiAgcmV0dXJuIEJvb2xlYW4odmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jylcbn1cbiIsICIvKipcbiAqIExpa2UgYEFycmF5I3NwbGljZWAsIGJ1dCBzbWFydGVyIGZvciBnaWFudCBhcnJheXMuXG4gKlxuICogYEFycmF5I3NwbGljZWAgdGFrZXMgYWxsIGl0ZW1zIHRvIGJlIGluc2VydGVkIGFzIGluZGl2aWR1YWwgYXJndW1lbnQgd2hpY2hcbiAqIGNhdXNlcyBhIHN0YWNrIG92ZXJmbG93IGluIFY4IHdoZW4gdHJ5aW5nIHRvIGluc2VydCAxMDBrIGl0ZW1zIGZvciBpbnN0YW5jZS5cbiAqXG4gKiBPdGhlcndpc2UsIHRoaXMgZG9lcyBub3QgcmV0dXJuIHRoZSByZW1vdmVkIGl0ZW1zLCBhbmQgdGFrZXMgYGl0ZW1zYCBhcyBhblxuICogYXJyYXkgaW5zdGVhZCBvZiByZXN0IHBhcmFtZXRlcnMuXG4gKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBUXG4gKiAgIEl0ZW0gdHlwZS5cbiAqIEBwYXJhbSB7QXJyYXk8VD59IGxpc3RcbiAqICAgTGlzdCB0byBvcGVyYXRlIG9uLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0XG4gKiAgIEluZGV4IHRvIHJlbW92ZS9pbnNlcnQgYXQgKGNhbiBiZSBuZWdhdGl2ZSkuXG4gKiBAcGFyYW0ge251bWJlcn0gcmVtb3ZlXG4gKiAgIE51bWJlciBvZiBpdGVtcyB0byByZW1vdmUuXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBpdGVtc1xuICogICBJdGVtcyB0byBpbmplY3QgaW50byBgbGlzdGAuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqICAgTm90aGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShsaXN0LCBzdGFydCwgcmVtb3ZlLCBpdGVtcykge1xuICBjb25zdCBlbmQgPSBsaXN0Lmxlbmd0aFxuICBsZXQgY2h1bmtTdGFydCA9IDBcbiAgLyoqIEB0eXBlIHtBcnJheTx1bmtub3duPn0gKi9cbiAgbGV0IHBhcmFtZXRlcnNcblxuICAvLyBNYWtlIHN0YXJ0IGJldHdlZW4gemVybyBhbmQgYGVuZGAgKGluY2x1ZGVkKS5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gLXN0YXJ0ID4gZW5kID8gMCA6IGVuZCArIHN0YXJ0XG4gIH0gZWxzZSB7XG4gICAgc3RhcnQgPSBzdGFydCA+IGVuZCA/IGVuZCA6IHN0YXJ0XG4gIH1cbiAgcmVtb3ZlID0gcmVtb3ZlID4gMCA/IHJlbW92ZSA6IDBcblxuICAvLyBObyBuZWVkIHRvIGNodW5rIHRoZSBpdGVtcyBpZiB0aGVyZVx1MjAxOXMgb25seSBhIGNvdXBsZSAoMTBrKSBpdGVtcy5cbiAgaWYgKGl0ZW1zLmxlbmd0aCA8IDEwMDAwKSB7XG4gICAgcGFyYW1ldGVycyA9IEFycmF5LmZyb20oaXRlbXMpXG4gICAgcGFyYW1ldGVycy51bnNoaWZ0KHN0YXJ0LCByZW1vdmUpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBIdXNoLCBpdFx1MjAxOXMgZmluZS5cbiAgICBsaXN0LnNwbGljZSguLi5wYXJhbWV0ZXJzKVxuICB9IGVsc2Uge1xuICAgIC8vIERlbGV0ZSBgcmVtb3ZlYCBpdGVtcyBzdGFydGluZyBmcm9tIGBzdGFydGBcbiAgICBpZiAocmVtb3ZlKSBsaXN0LnNwbGljZShzdGFydCwgcmVtb3ZlKVxuXG4gICAgLy8gSW5zZXJ0IHRoZSBpdGVtcyBpbiBjaHVua3MgdG8gbm90IGNhdXNlIHN0YWNrIG92ZXJmbG93cy5cbiAgICB3aGlsZSAoY2h1bmtTdGFydCA8IGl0ZW1zLmxlbmd0aCkge1xuICAgICAgcGFyYW1ldGVycyA9IGl0ZW1zLnNsaWNlKGNodW5rU3RhcnQsIGNodW5rU3RhcnQgKyAxMDAwMClcbiAgICAgIHBhcmFtZXRlcnMudW5zaGlmdChzdGFydCwgMClcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSHVzaCwgaXRcdTIwMTlzIGZpbmUuXG4gICAgICBsaXN0LnNwbGljZSguLi5wYXJhbWV0ZXJzKVxuICAgICAgY2h1bmtTdGFydCArPSAxMDAwMFxuICAgICAgc3RhcnQgKz0gMTAwMDBcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBlbmQgYGl0ZW1zYCAoYW4gYXJyYXkpIGF0IHRoZSBlbmQgb2YgYGxpc3RgIChhbm90aGVyIGFycmF5KS5cbiAqIFdoZW4gYGxpc3RgIHdhcyBlbXB0eSwgcmV0dXJucyBgaXRlbXNgIGluc3RlYWQuXG4gKlxuICogVGhpcyBwcmV2ZW50cyBhIHBvdGVudGlhbGx5IGV4cGVuc2l2ZSBvcGVyYXRpb24gd2hlbiBgbGlzdGAgaXMgZW1wdHksXG4gKiBhbmQgYWRkcyBpdGVtcyBpbiBiYXRjaGVzIHRvIHByZXZlbnQgVjggZnJvbSBoYW5naW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gVFxuICogICBJdGVtIHR5cGUuXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBsaXN0XG4gKiAgIExpc3QgdG8gb3BlcmF0ZSBvbi5cbiAqIEBwYXJhbSB7QXJyYXk8VD59IGl0ZW1zXG4gKiAgIEl0ZW1zIHRvIGFkZCB0byBgbGlzdGAuXG4gKiBAcmV0dXJucyB7QXJyYXk8VD59XG4gKiAgIEVpdGhlciBgbGlzdGAgb3IgYGl0ZW1zYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1c2gobGlzdCwgaXRlbXMpIHtcbiAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xuICAgIHNwbGljZShsaXN0LCBsaXN0Lmxlbmd0aCwgMCwgaXRlbXMpXG4gICAgcmV0dXJuIGxpc3RcbiAgfVxuICByZXR1cm4gaXRlbXNcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXh0ZW5zaW9ufSBFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSGFuZGxlc30gSGFuZGxlc1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5IdG1sRXh0ZW5zaW9ufSBIdG1sRXh0ZW5zaW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLk5vcm1hbGl6ZWRFeHRlbnNpb259IE5vcm1hbGl6ZWRFeHRlbnNpb25cbiAqL1xuXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcblxuY29uc3QgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgc3ludGF4IGV4dGVuc2lvbnMgaW50byBvbmUuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFeHRlbnNpb24+fSBleHRlbnNpb25zXG4gKiAgIExpc3Qgb2Ygc3ludGF4IGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplZEV4dGVuc2lvbn1cbiAqICAgQSBzaW5nbGUgY29tYmluZWQgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUV4dGVuc2lvbnMoZXh0ZW5zaW9ucykge1xuICAvKiogQHR5cGUge05vcm1hbGl6ZWRFeHRlbnNpb259ICovXG4gIGNvbnN0IGFsbCA9IHt9XG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBleHRlbnNpb25zLmxlbmd0aCkge1xuICAgIHN5bnRheEV4dGVuc2lvbihhbGwsIGV4dGVuc2lvbnNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGFsbFxufVxuXG4vKipcbiAqIE1lcmdlIGBleHRlbnNpb25gIGludG8gYGFsbGAuXG4gKlxuICogQHBhcmFtIHtOb3JtYWxpemVkRXh0ZW5zaW9ufSBhbGxcbiAqICAgRXh0ZW5zaW9uIHRvIG1lcmdlIGludG8uXG4gKiBAcGFyYW0ge0V4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBzeW50YXhFeHRlbnNpb24oYWxsLCBleHRlbnNpb24pIHtcbiAgLyoqIEB0eXBlIHtrZXlvZiBFeHRlbnNpb259ICovXG4gIGxldCBob29rXG5cbiAgZm9yIChob29rIGluIGV4dGVuc2lvbikge1xuICAgIGNvbnN0IG1heWJlID0gaGFzT3duUHJvcGVydHkuY2FsbChhbGwsIGhvb2spID8gYWxsW2hvb2tdIDogdW5kZWZpbmVkXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi9cbiAgICBjb25zdCBsZWZ0ID0gbWF5YmUgfHwgKGFsbFtob29rXSA9IHt9KVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWR9ICovXG4gICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25baG9va11cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgY29kZVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBmb3IgKGNvZGUgaW4gcmlnaHQpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKGxlZnQsIGNvZGUpKSBsZWZ0W2NvZGVdID0gW11cbiAgICAgICAgY29uc3QgdmFsdWUgPSByaWdodFtjb2RlXVxuICAgICAgICBjb25zdHJ1Y3RzKFxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhIGxpc3QuXG4gICAgICAgICAgbGVmdFtjb2RlXSxcbiAgICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPyBbdmFsdWVdIDogW11cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIGBsaXN0YCBpbnRvIGBleGlzdGluZ2AgKGJvdGggbGlzdHMgb2YgY29uc3RydWN0cykuXG4gKiBNdXRhdGVzIGBleGlzdGluZ2AuXG4gKlxuICogQHBhcmFtIHtBcnJheTx1bmtub3duPn0gZXhpc3RpbmdcbiAqIEBwYXJhbSB7QXJyYXk8dW5rbm93bj59IGxpc3RcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RzKGV4aXN0aW5nLCBsaXN0KSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7QXJyYXk8dW5rbm93bj59ICovXG4gIGNvbnN0IGJlZm9yZSA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsaXN0Lmxlbmd0aCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhbiBvYmplY3QuXG4gICAgOyhsaXN0W2luZGV4XS5hZGQgPT09ICdhZnRlcicgPyBleGlzdGluZyA6IGJlZm9yZSkucHVzaChsaXN0W2luZGV4XSlcbiAgfVxuXG4gIHNwbGljZShleGlzdGluZywgMCwgMCwgYmVmb3JlKVxufVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgSFRNTCBleHRlbnNpb25zIGludG8gb25lLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8SHRtbEV4dGVuc2lvbj59IGh0bWxFeHRlbnNpb25zXG4gKiAgIExpc3Qgb2YgSFRNTCBleHRlbnNpb25zLlxuICogQHJldHVybnMge0h0bWxFeHRlbnNpb259XG4gKiAgIEEgc2luZ2xlIGNvbWJpbmVkIEhUTUwgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUh0bWxFeHRlbnNpb25zKGh0bWxFeHRlbnNpb25zKSB7XG4gIC8qKiBAdHlwZSB7SHRtbEV4dGVuc2lvbn0gKi9cbiAgY29uc3QgaGFuZGxlcnMgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgaHRtbEV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgaHRtbEV4dGVuc2lvbihoYW5kbGVycywgaHRtbEV4dGVuc2lvbnNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZXJzXG59XG5cbi8qKlxuICogTWVyZ2UgYGV4dGVuc2lvbmAgaW50byBgYWxsYC5cbiAqXG4gKiBAcGFyYW0ge0h0bWxFeHRlbnNpb259IGFsbFxuICogICBFeHRlbnNpb24gdG8gbWVyZ2UgaW50by5cbiAqIEBwYXJhbSB7SHRtbEV4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBodG1sRXh0ZW5zaW9uKGFsbCwgZXh0ZW5zaW9uKSB7XG4gIC8qKiBAdHlwZSB7a2V5b2YgSHRtbEV4dGVuc2lvbn0gKi9cbiAgbGV0IGhvb2tcblxuICBmb3IgKGhvb2sgaW4gZXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgbWF5YmUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFsbCwgaG9vaykgPyBhbGxbaG9va10gOiB1bmRlZmluZWRcbiAgICBjb25zdCBsZWZ0ID0gbWF5YmUgfHwgKGFsbFtob29rXSA9IHt9KVxuICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2hvb2tdXG4gICAgLyoqIEB0eXBlIHtrZXlvZiBIYW5kbGVzfSAqL1xuICAgIGxldCB0eXBlXG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGZvciAodHlwZSBpbiByaWdodCkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFzc3VtZSBkb2N1bWVudCB2cyByZWd1bGFyIGhhbmRsZXIgYXJlIG1hbmFnZWQgY29ycmVjdGx5LlxuICAgICAgICBsZWZ0W3R5cGVdID0gcmlnaHRbdHlwZV1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsICIvLyBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgYnkgYHNjcmlwdC9gLlxuLy9cbi8vIENvbW1vbk1hcmsgaGFuZGxlcyBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpIG1hcmtlcnMgYmFzZWQgb24gd2hhdCBjb21lc1xuLy8gYmVmb3JlIG9yIGFmdGVyIHRoZW0uXG4vLyBPbmUgc3VjaCBkaWZmZXJlbmNlIGlzIGlmIHRob3NlIGNoYXJhY3RlcnMgYXJlIFVuaWNvZGUgcHVuY3R1YXRpb24uXG4vLyBUaGlzIHNjcmlwdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgVW5pY29kZSBkYXRhLlxuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgYSB1bmljb2RlIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvblJlZ2V4ID1cbiAgL1shLVxcLzotQFxcWy1gXFx7LX5cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUQtXFx1MDYxRlxcdTA2NkEtXFx1MDY2RFxcdTA2RDRcXHUwNzAwLVxcdTA3MERcXHUwN0Y3LVxcdTA3RjlcXHUwODMwLVxcdTA4M0VcXHUwODVFXFx1MDk2NFxcdTA5NjVcXHUwOTcwXFx1MDlGRFxcdTBBNzZcXHUwQUYwXFx1MEM3N1xcdTBDODRcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RVxcdTE2OUJcXHUxNjlDXFx1MTZFQi1cXHUxNkVEXFx1MTczNVxcdTE3MzZcXHUxN0Q0LVxcdTE3RDZcXHUxN0Q4LVxcdTE3REFcXHUxODAwLVxcdTE4MEFcXHUxOTQ0XFx1MTk0NVxcdTFBMUVcXHUxQTFGXFx1MUFBMC1cXHUxQUE2XFx1MUFBOC1cXHUxQUFEXFx1MUI1QS1cXHUxQjYwXFx1MUI3RFxcdTFCN0VcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTRGXFx1MkU1Mi1cXHUyRTVEXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV0vXG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqL1xuXG5pbXBvcnQge3VuaWNvZGVQdW5jdHVhdGlvblJlZ2V4fSBmcm9tICcuL2xpYi91bmljb2RlLXB1bmN0dWF0aW9uLXJlZ2V4LmpzJ1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYWxwaGEgKGBhYCB0aHJvdWdoIGB6YCxcbiAqIGNhc2UgaW5zZW5zaXRpdmUpLlxuICpcbiAqIEFuICoqQVNDSUkgYWxwaGEqKiBpcyBhbiBBU0NJSSB1cHBlciBhbHBoYSBvciBBU0NJSSBsb3dlciBhbHBoYS5cbiAqXG4gKiBBbiAqKkFTQ0lJIHVwcGVyIGFscGhhKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNDEgKGBBYClcbiAqIHRvIFUrMDA1QSAoYFpgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGxvd2VyIGFscGhhKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNjEgKGBhYClcbiAqIHRvIFUrMDA3QSAoYHpgKS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgYXNjaWlBbHBoYSA9IHJlZ2V4Q2hlY2soL1tBLVphLXpdLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGFscGhhbnVtZXJpYyAoYGFgXG4gKiB0aHJvdWdoIGB6YCwgY2FzZSBpbnNlbnNpdGl2ZSwgb3IgYDBgIHRocm91Z2ggYDlgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGFscGhhbnVtZXJpYyoqIGlzIGFuIEFTQ0lJIGRpZ2l0IChzZWUgYGFzY2lpRGlnaXRgKSBvciBBU0NJSSBhbHBoYVxuICogKHNlZSBgYXNjaWlBbHBoYWApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUFscGhhbnVtZXJpYyA9IHJlZ2V4Q2hlY2soL1tcXGRBLVphLXpdLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGF0ZXh0LlxuICpcbiAqIGF0ZXh0IGlzIGFuIEFTQ0lJIGFscGhhbnVtZXJpYyAoc2VlIGBhc2NpaUFscGhhbnVtZXJpY2ApLCBvciBhIGNoYXJhY3RlciBpblxuICogdGhlIGluY2x1c2l2ZSByYW5nZXMgVSswMDIzIE5VTUJFUiBTSUdOIChgI2ApIHRvIFUrMDAyNyBBUE9TVFJPUEhFIChgJ2ApLFxuICogVSswMDJBIEFTVEVSSVNLIChgKmApLCBVKzAwMkIgUExVUyBTSUdOIChgK2ApLCBVKzAwMkQgREFTSCAoYC1gKSwgVSswMDJGXG4gKiBTTEFTSCAoYC9gKSwgVSswMDNEIEVRVUFMUyBUTyAoYD1gKSwgVSswMDNGIFFVRVNUSU9OIE1BUksgKGA/YCksIFUrMDA1RVxuICogQ0FSRVQgKGBeYCkgdG8gVSswMDYwIEdSQVZFIEFDQ0VOVCAoYGAgYCBgYCksIG9yIFUrMDA3QiBMRUZUIENVUkxZIEJSQUNFXG4gKiAoYHtgKSB0byBVKzAwN0UgVElMREUgKGB+YCkuXG4gKlxuICogU2VlOlxuICogKipcXFtSRkM1MzIyXSoqOlxuICogW0ludGVybmV0IE1lc3NhZ2UgRm9ybWF0XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTMyMikuXG4gKiBQLiBSZXNuaWNrLlxuICogSUVURi5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgYXNjaWlBdGV4dCA9IHJlZ2V4Q2hlY2soL1sjLScqK1xcLS05PT9BLVpeLX5dLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgY2hhcmFjdGVyIGNvZGUgaXMgYW4gQVNDSUkgY29udHJvbCBjaGFyYWN0ZXIuXG4gKlxuICogQW4gKipBU0NJSSBjb250cm9sKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwMDAgTlVMTCAoTlVMKVxuICogdG8gVSswMDFGIChVUyksIG9yIFUrMDA3RiAoREVMKS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc2NpaUNvbnRyb2woY29kZSkge1xuICByZXR1cm4gKFxuICAgIC8vIFNwZWNpYWwgd2hpdGVzcGFjZSBjb2RlcyAod2hpY2ggaGF2ZSBuZWdhdGl2ZSB2YWx1ZXMpLCBDMCBhbmQgQ29udHJvbFxuICAgIC8vIGNoYXJhY3RlciBERUxcbiAgICBjb2RlICE9PSBudWxsICYmIChjb2RlIDwgMzIgfHwgY29kZSA9PT0gMTI3KVxuICApXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBkaWdpdCAoYDBgIHRocm91Z2ggYDlgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGRpZ2l0KiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwMzAgKGAwYCkgdG9cbiAqIFUrMDAzOSAoYDlgKS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgYXNjaWlEaWdpdCA9IHJlZ2V4Q2hlY2soL1xcZC8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBoZXggZGlnaXQgKGBhYCB0aHJvdWdoXG4gKiBgZmAsIGNhc2UgaW5zZW5zaXRpdmUsIG9yIGAwYCB0aHJvdWdoIGA5YCkuXG4gKlxuICogQW4gKipBU0NJSSBoZXggZGlnaXQqKiBpcyBhbiBBU0NJSSBkaWdpdCAoc2VlIGBhc2NpaURpZ2l0YCksIEFTQ0lJIHVwcGVyIGhleFxuICogZGlnaXQsIG9yIGFuIEFTQ0lJIGxvd2VyIGhleCBkaWdpdC5cbiAqXG4gKiBBbiAqKkFTQ0lJIHVwcGVyIGhleCBkaWdpdCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDQxXG4gKiAoYEFgKSB0byBVKzAwNDYgKGBGYCkuXG4gKlxuICogQW4gKipBU0NJSSBsb3dlciBoZXggZGlnaXQqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA2MVxuICogKGBhYCkgdG8gVSswMDY2IChgZmApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUhleERpZ2l0ID0gcmVnZXhDaGVjaygvW1xcZEEtRmEtZl0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgQVNDSUkgcHVuY3R1YXRpb24uXG4gKlxuICogQW4gKipBU0NJSSBwdW5jdHVhdGlvbioqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2VzIFUrMDAyMVxuICogRVhDTEFNQVRJT04gTUFSSyAoYCFgKSB0byBVKzAwMkYgU0xBU0ggKGAvYCksIFUrMDAzQSBDT0xPTiAoYDpgKSB0byBVKzAwNDAgQVRcbiAqIFNJR04gKGBAYCksIFUrMDA1QiBMRUZUIFNRVUFSRSBCUkFDS0VUIChgW2ApIHRvIFUrMDA2MCBHUkFWRSBBQ0NFTlRcbiAqIChgYCBgIGBgKSwgb3IgVSswMDdCIExFRlQgQ1VSTFkgQlJBQ0UgKGB7YCkgdG8gVSswMDdFIFRJTERFIChgfmApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaVB1bmN0dWF0aW9uID0gcmVnZXhDaGVjaygvWyEtLzotQFstYHstfl0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhIG1hcmtkb3duIGxpbmUgZW5kaW5nLlxuICpcbiAqIEEgKiptYXJrZG93biBsaW5lIGVuZGluZyoqIGlzIHRoZSB2aXJ0dWFsIGNoYXJhY3RlcnMgTS0wMDAzIENBUlJJQUdFIFJFVFVSTlxuICogTElORSBGRUVEIChDUkxGKSwgTS0wMDA0IExJTkUgRkVFRCAoTEYpIGFuZCBNLTAwMDUgQ0FSUklBR0UgUkVUVVJOIChDUikuXG4gKlxuICogSW4gbWljcm9tYXJrLCB0aGUgYWN0dWFsIGNoYXJhY3RlciBVKzAwMEEgTElORSBGRUVEIChMRikgYW5kIFUrMDAwRCBDQVJSSUFHRVxuICogUkVUVVJOIChDUikgYXJlIHJlcGxhY2VkIGJ5IHRoZXNlIHZpcnR1YWwgY2hhcmFjdGVycyBkZXBlbmRpbmcgb24gd2hldGhlclxuICogdGhleSBvY2N1cnJlZCB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkge1xuICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiBjb2RlIDwgLTJcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgY2hhcmFjdGVyIGNvZGUgaXMgYSBtYXJrZG93biBsaW5lIGVuZGluZyAoc2VlXG4gKiBgbWFya2Rvd25MaW5lRW5kaW5nYCkgb3IgbWFya2Rvd24gc3BhY2UgKHNlZSBgbWFya2Rvd25TcGFjZWApLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkge1xuICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiAoY29kZSA8IDAgfHwgY29kZSA9PT0gMzIpXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gc3BhY2UuXG4gKlxuICogQSAqKm1hcmtkb3duIHNwYWNlKiogaXMgdGhlIGNvbmNyZXRlIGNoYXJhY3RlciBVKzAwMjAgU1BBQ0UgKFNQKSBhbmQgdGhlXG4gKiB2aXJ0dWFsIGNoYXJhY3RlcnMgTS0wMDAxIFZJUlRVQUwgU1BBQ0UgKFZTKSBhbmQgTS0wMDAyIEhPUklaT05UQUwgVEFCIChIVCkuXG4gKlxuICogSW4gbWljcm9tYXJrLCB0aGUgYWN0dWFsIGNoYXJhY3RlciBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKSBpc1xuICogcmVwbGFjZWQgYnkgb25lIE0tMDAwMiBIT1JJWk9OVEFMIFRBQiAoSFQpIGFuZCBiZXR3ZWVuIDAgYW5kIDMgTS0wMDAxIFZJUlRVQUxcbiAqIFNQQUNFIChWUykgY2hhcmFjdGVycywgZGVwZW5kaW5nIG9uIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIHRhYiBvY2N1cnJlZC5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93blNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPT09IC0yIHx8IGNvZGUgPT09IC0xIHx8IGNvZGUgPT09IDMyXG59XG5cbi8vIFNpemUgbm90ZTogcmVtb3ZpbmcgQVNDSUkgZnJvbSB0aGUgcmVnZXggYW5kIHVzaW5nIGBhc2NpaVB1bmN0dWF0aW9uYCBoZXJlXG4vLyBJbiBmYWN0IGFkZHMgdG8gdGhlIGJ1bmRsZSBzaXplLlxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIFVuaWNvZGUgcHVuY3R1YXRpb24uXG4gKlxuICogQSAqKlVuaWNvZGUgcHVuY3R1YXRpb24qKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgVW5pY29kZSBgUGNgIChQdW5jdHVhdGlvbixcbiAqIENvbm5lY3RvciksIGBQZGAgKFB1bmN0dWF0aW9uLCBEYXNoKSwgYFBlYCAoUHVuY3R1YXRpb24sIENsb3NlKSwgYFBmYFxuICogKFB1bmN0dWF0aW9uLCBGaW5hbCBxdW90ZSksIGBQaWAgKFB1bmN0dWF0aW9uLCBJbml0aWFsIHF1b3RlKSwgYFBvYFxuICogKFB1bmN0dWF0aW9uLCBPdGhlciksIG9yIGBQc2AgKFB1bmN0dWF0aW9uLCBPcGVuKSBjYXRlZ29yaWVzLCBvciBhbiBBU0NJSVxuICogcHVuY3R1YXRpb24gKHNlZSBgYXNjaWlQdW5jdHVhdGlvbmApLlxuICpcbiAqIFNlZTpcbiAqICoqXFxbVU5JQ09ERV0qKjpcbiAqIFtUaGUgVW5pY29kZSBTdGFuZGFyZF0oaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvKS5cbiAqIFVuaWNvZGUgQ29uc29ydGl1bS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgdW5pY29kZVB1bmN0dWF0aW9uID0gcmVnZXhDaGVjayh1bmljb2RlUHVuY3R1YXRpb25SZWdleClcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIFVuaWNvZGUgd2hpdGVzcGFjZS5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBkb2VzIGhhbmRsZSBtaWNyb21hcmsgc3BlY2lmaWMgbWFya2Rvd24gd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLlxuICogU2VlIGBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlYCB0byBjaGVjayB0aGF0LlxuICpcbiAqIEEgKipVbmljb2RlIHdoaXRlc3BhY2UqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgVW5pY29kZSBgWnNgIChTZXBhcmF0b3IsXG4gKiBTcGFjZSkgY2F0ZWdvcnksIG9yIFUrMDAwOSBDSEFSQUNURVIgVEFCVUxBVElPTiAoSFQpLCBVKzAwMEEgTElORSBGRUVEIChMRiksXG4gKiBVKzAwMEMgKEZGKSwgb3IgVSswMDBEIENBUlJJQUdFIFJFVFVSTiAoQ1IpICgqKlxcW1VOSUNPREVdKiopLlxuICpcbiAqIFNlZTpcbiAqICoqXFxbVU5JQ09ERV0qKjpcbiAqIFtUaGUgVW5pY29kZSBTdGFuZGFyZF0oaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvKS5cbiAqIFVuaWNvZGUgQ29uc29ydGl1bS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgdW5pY29kZVdoaXRlc3BhY2UgPSByZWdleENoZWNrKC9cXHMvKVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvZGUgY2hlY2sgZnJvbSBhIHJlZ2V4LlxuICpcbiAqIEBwYXJhbSB7UmVnRXhwfSByZWdleFxuICogQHJldHVybnMgeyhjb2RlOiBDb2RlKSA9PiBib29sZWFufVxuICovXG5mdW5jdGlvbiByZWdleENoZWNrKHJlZ2V4KSB7XG4gIHJldHVybiBjaGVja1xuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGEgY29kZSBtYXRjaGVzIHRoZSBib3VuZCByZWdleC5cbiAgICpcbiAgICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gICAqICAgQ2hhcmFjdGVyIGNvZGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiAgIFdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIG1hdGNoZXMgdGhlIGJvdW5kIHJlZ2V4LlxuICAgKi9cbiAgZnVuY3Rpb24gY2hlY2soY29kZSkge1xuICAgIHJldHVybiBjb2RlICE9PSBudWxsICYmIHJlZ2V4LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlblR5cGV9IFRva2VuVHlwZVxuICovXG5cbmltcG9ydCB7bWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuXG4vLyBUbyBkbzogaW1wbGVtZW50IGBzcGFjZU9yVGFiYCwgYHNwYWNlT3JUYWJNaW5NYXhgLCBgc3BhY2VPclRhYldpdGhPcHRpb25zYC5cblxuLyoqXG4gKiBQYXJzZSBzcGFjZXMgYW5kIHRhYnMuXG4gKlxuICogVGhlcmUgaXMgbm8gYG5va2AgcGFyYW1ldGVyOlxuICpcbiAqICogICBzcGFjZXMgaW4gbWFya2Rvd24gYXJlIG9mdGVuIG9wdGlvbmFsLCBpbiB3aGljaCBjYXNlIHRoaXMgZmFjdG9yeSBjYW4gYmVcbiAqICAgICB1c2VkIGFuZCBgb2tgIHdpbGwgYmUgc3dpdGNoZWQgdG8gd2hldGhlciBzcGFjZXMgd2VyZSBmb3VuZCBvciBub3RcbiAqICogICBvbmUgbGluZSBlbmRpbmcgb3Igc3BhY2UgY2FuIGJlIGRldGVjdGVkIHdpdGggYG1hcmtkb3duU3BhY2UoY29kZSlgIHJpZ2h0XG4gKiAgICAgYmVmb3JlIHVzaW5nIGBmYWN0b3J5U3BhY2VgXG4gKlxuICogIyMjIyMjIEV4YW1wbGVzXG4gKlxuICogV2hlcmUgYFx1MjQwOWAgcmVwcmVzZW50cyBhIHRhYiAocGx1cyBob3cgbXVjaCBpdCBleHBhbmRzKSBhbmQgYFx1MjQyMGAgcmVwcmVzZW50cyBhXG4gKiBzaW5nbGUgc3BhY2UuXG4gKlxuICogYGBgbWFya2Rvd25cbiAqIFx1MjQwOVxuICogXHUyNDIwXHUyNDIwXHUyNDIwXHUyNDIwXG4gKiBcdTI0MDlcdTI0MjBcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHR5cGVcbiAqICAgVHlwZSAoYCcgXFx0J2ApLlxuICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IFttYXg9SW5maW5pdHldXG4gKiAgIE1heCAoZXhjbHVzaXZlKS5cbiAqIEByZXR1cm5zXG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIG9rLCB0eXBlLCBtYXgpIHtcbiAgY29uc3QgbGltaXQgPSBtYXggPyBtYXggLSAxIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG4gIGxldCBzaXplID0gMFxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICAgIHJldHVybiBwcmVmaXgoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBwcmVmaXgoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpICYmIHNpemUrKyA8IGxpbWl0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBwcmVmaXhcbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsaXplcn0gSW5pdGlhbGl6ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0luaXRpYWxDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY29udGVudCA9IHtcbiAgdG9rZW5pemU6IGluaXRpYWxpemVDb250ZW50XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtJbml0aWFsaXplcn1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbnRlbnQoZWZmZWN0cykge1xuICBjb25zdCBjb250ZW50U3RhcnQgPSBlZmZlY3RzLmF0dGVtcHQoXG4gICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5jb250ZW50SW5pdGlhbCxcbiAgICBhZnRlckNvbnRlbnRTdGFydENvbnN0cnVjdCxcbiAgICBwYXJhZ3JhcGhJbml0aWFsXG4gIClcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHByZXZpb3VzXG4gIHJldHVybiBjb250ZW50U3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlckNvbnRlbnRTdGFydENvbnN0cnVjdChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBjb250ZW50U3RhcnQsICdsaW5lUHJlZml4JylcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHBhcmFncmFwaEluaXRpYWwoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ3BhcmFncmFwaCcpXG4gICAgcmV0dXJuIGxpbmVTdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gbGluZVN0YXJ0KGNvZGUpIHtcbiAgICBjb25zdCB0b2tlbiA9IGVmZmVjdHMuZW50ZXIoJ2NodW5rVGV4dCcsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCcsXG4gICAgICBwcmV2aW91c1xuICAgIH0pXG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cy5uZXh0ID0gdG9rZW5cbiAgICB9XG4gICAgcHJldmlvdXMgPSB0b2tlblxuICAgIHJldHVybiBkYXRhKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBkYXRhKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1RleHQnKVxuICAgICAgZWZmZWN0cy5leGl0KCdwYXJhZ3JhcGgnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rVGV4dCcpXG4gICAgICByZXR1cm4gbGluZVN0YXJ0XG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnRhaW5lclN0YXRlfSBDb250YWluZXJTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxpemVyfSBJbml0aWFsaXplclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Qb2ludH0gUG9pbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1tDb25zdHJ1Y3QsIENvbnRhaW5lclN0YXRlXX0gU3RhY2tJdGVtXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7c3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGRvY3VtZW50ID0ge1xuICB0b2tlbml6ZTogaW5pdGlhbGl6ZURvY3VtZW50XG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgY29udGFpbmVyQ29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVDb250YWluZXJcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge0luaXRpYWxpemVyfVxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplRG9jdW1lbnQoZWZmZWN0cykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICAvKiogQHR5cGUge0FycmF5PFN0YWNrSXRlbT59ICovXG4gIGNvbnN0IHN0YWNrID0gW11cbiAgbGV0IGNvbnRpbnVlZCA9IDBcbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHQgfCB1bmRlZmluZWR9ICovXG4gIGxldCBjaGlsZEZsb3dcbiAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNoaWxkVG9rZW5cbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBsaW5lU3RhcnRPZmZzZXRcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIEZpcnN0IHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgb3BlbiBibG9ja3MsIHN0YXJ0aW5nIHdpdGggdGhlIHJvb3RcbiAgICAvLyBkb2N1bWVudCwgYW5kIGRlc2NlbmRpbmcgdGhyb3VnaCBsYXN0IGNoaWxkcmVuIGRvd24gdG8gdGhlIGxhc3Qgb3BlblxuICAgIC8vIGJsb2NrLlxuICAgIC8vIEVhY2ggYmxvY2sgaW1wb3NlcyBhIGNvbmRpdGlvbiB0aGF0IHRoZSBsaW5lIG11c3Qgc2F0aXNmeSBpZiB0aGUgYmxvY2sgaXNcbiAgICAvLyB0byByZW1haW4gb3Blbi5cbiAgICAvLyBGb3IgZXhhbXBsZSwgYSBibG9jayBxdW90ZSByZXF1aXJlcyBhIGA+YCBjaGFyYWN0ZXIuXG4gICAgLy8gQSBwYXJhZ3JhcGggcmVxdWlyZXMgYSBub24tYmxhbmsgbGluZS5cbiAgICAvLyBJbiB0aGlzIHBoYXNlIHdlIG1heSBtYXRjaCBhbGwgb3IganVzdCBzb21lIG9mIHRoZSBvcGVuIGJsb2Nrcy5cbiAgICAvLyBCdXQgd2UgY2Fubm90IGNsb3NlIHVubWF0Y2hlZCBibG9ja3MgeWV0LCBiZWNhdXNlIHdlIG1heSBoYXZlIGEgbGF6eVxuICAgIC8vIGNvbnRpbnVhdGlvbiBsaW5lLlxuICAgIGlmIChjb250aW51ZWQgPCBzdGFjay5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBzdGFja1tjb250aW51ZWRdXG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0gaXRlbVsxXVxuICAgICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgICAgaXRlbVswXS5jb250aW51YXRpb24sXG4gICAgICAgIGRvY3VtZW50Q29udGludWUsXG4gICAgICAgIGNoZWNrTmV3Q29udGFpbmVyc1xuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIC8vIERvbmUuXG4gICAgcmV0dXJuIGNoZWNrTmV3Q29udGFpbmVycyhjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZG9jdW1lbnRDb250aW51ZShjb2RlKSB7XG4gICAgY29udGludWVkKytcblxuICAgIC8vIE5vdGU6IHRoaXMgZmllbGQgaXMgY2FsbGVkIGBfY2xvc2VGbG93YCBidXQgaXQgYWxzbyBjbG9zZXMgY29udGFpbmVycy5cbiAgICAvLyBQZXJoYXBzIGEgZ29vZCBpZGVhIHRvIHJlbmFtZSBpdCBidXQgaXRcdTIwMTlzIGFscmVhZHkgdXNlZCBpbiB0aGUgd2lsZCBieVxuICAgIC8vIGV4dGVuc2lvbnMuXG4gICAgaWYgKHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdykge1xuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG4gICAgICBpZiAoY2hpbGRGbG93KSB7XG4gICAgICAgIGNsb3NlRmxvdygpXG4gICAgICB9XG5cbiAgICAgIC8vIE5vdGU6IHRoaXMgYWxnb3JpdGhtIGZvciBtb3ZpbmcgZXZlbnRzIGFyb3VuZCBpcyBzaW1pbGFyIHRvIHRoZVxuICAgICAgLy8gYWxnb3JpdGhtIHdoZW4gZGVhbGluZyB3aXRoIGxhenkgbGluZXMgaW4gYHdyaXRlVG9DaGlsZGAuXG4gICAgICBjb25zdCBpbmRleEJlZm9yZUV4aXRzID0gc2VsZi5ldmVudHMubGVuZ3RoXG4gICAgICBsZXQgaW5kZXhCZWZvcmVGbG93ID0gaW5kZXhCZWZvcmVFeGl0c1xuICAgICAgLyoqIEB0eXBlIHtQb2ludCB8IHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCBwb2ludFxuXG4gICAgICAvLyBGaW5kIHRoZSBmbG93IGNodW5rLlxuICAgICAgd2hpbGUgKGluZGV4QmVmb3JlRmxvdy0tKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzZWxmLmV2ZW50c1tpbmRleEJlZm9yZUZsb3ddWzBdID09PSAnZXhpdCcgJiZcbiAgICAgICAgICBzZWxmLmV2ZW50c1tpbmRleEJlZm9yZUZsb3ddWzFdLnR5cGUgPT09ICdjaHVua0Zsb3cnXG4gICAgICAgICkge1xuICAgICAgICAgIHBvaW50ID0gc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS5lbmRcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBleGl0Q29udGFpbmVycyhjb250aW51ZWQpXG5cbiAgICAgIC8vIEZpeCBwb3NpdGlvbnMuXG4gICAgICBsZXQgaW5kZXggPSBpbmRleEJlZm9yZUV4aXRzXG4gICAgICB3aGlsZSAoaW5kZXggPCBzZWxmLmV2ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhdWzFdLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIHBvaW50KVxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG5cbiAgICAgIC8vIEluamVjdCB0aGUgZXhpdHMgZWFybGllciAodGhleVx1MjAxOXJlIHN0aWxsIGFsc28gYXQgdGhlIGVuZCkuXG4gICAgICBzcGxpY2UoXG4gICAgICAgIHNlbGYuZXZlbnRzLFxuICAgICAgICBpbmRleEJlZm9yZUZsb3cgKyAxLFxuICAgICAgICAwLFxuICAgICAgICBzZWxmLmV2ZW50cy5zbGljZShpbmRleEJlZm9yZUV4aXRzKVxuICAgICAgKVxuXG4gICAgICAvLyBEaXNjYXJkIHRoZSBkdXBsaWNhdGUgZXhpdHMuXG4gICAgICBzZWxmLmV2ZW50cy5sZW5ndGggPSBpbmRleFxuICAgICAgcmV0dXJuIGNoZWNrTmV3Q29udGFpbmVycyhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gc3RhcnQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGNoZWNrTmV3Q29udGFpbmVycyhjb2RlKSB7XG4gICAgLy8gTmV4dCwgYWZ0ZXIgY29uc3VtaW5nIHRoZSBjb250aW51YXRpb24gbWFya2VycyBmb3IgZXhpc3RpbmcgYmxvY2tzLCB3ZVxuICAgIC8vIGxvb2sgZm9yIG5ldyBibG9jayBzdGFydHMgKGUuZy4gYD5gIGZvciBhIGJsb2NrIHF1b3RlKS5cbiAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSBuZXcgYmxvY2sgc3RhcnQsIHdlIGNsb3NlIGFueSBibG9ja3MgdW5tYXRjaGVkIGluXG4gICAgLy8gc3RlcCAxIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3IGJsb2NrIGFzIGEgY2hpbGQgb2YgdGhlIGxhc3QgbWF0Y2hlZFxuICAgIC8vIGJsb2NrLlxuICAgIGlmIChjb250aW51ZWQgPT09IHN0YWNrLmxlbmd0aCkge1xuICAgICAgLy8gTm8gbmVlZCB0byBgY2hlY2tgIHdoZXRoZXIgdGhlcmVcdTIwMTlzIGEgY29udGFpbmVyLCBvZiBgZXhpdENvbnRhaW5lcnNgXG4gICAgICAvLyB3b3VsZCBiZSBtb290LlxuICAgICAgLy8gV2UgY2FuIGluc3RlYWQgaW1tZWRpYXRlbHkgYGF0dGVtcHRgIHRvIHBhcnNlIG9uZS5cbiAgICAgIGlmICghY2hpbGRGbG93KSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBoYXZlIGNvbmNyZXRlIGNvbnRlbnQsIHN1Y2ggYXMgYmxvY2sgSFRNTCBvciBmZW5jZWQgY29kZSxcbiAgICAgIC8vIHdlIGNhblx1MjAxOXQgaGF2ZSBjb250YWluZXJzIFx1MjAxQ3BpZXJjZVx1MjAxRCBpbnRvIHRoZW0sIHNvIHdlIGNhbiBpbW1lZGlhdGVseVxuICAgICAgLy8gc3RhcnQuXG4gICAgICBpZiAoY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QgJiYgY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QuY29uY3JldGUpIHtcbiAgICAgICAgcmV0dXJuIGZsb3dTdGFydChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBkbyBoYXZlIGZsb3csIGl0IGNvdWxkIHN0aWxsIGJlIGEgYmxhbmsgbGluZSxcbiAgICAgIC8vIGJ1dCB3ZVx1MjAxOWQgYmUgaW50ZXJydXB0aW5nIGl0IHcvIGEgbmV3IGNvbnRhaW5lciBpZiB0aGVyZVx1MjAxOXMgYSBjdXJyZW50XG4gICAgICAvLyBjb25zdHJ1Y3QuXG4gICAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogcmVtb3ZlIGBfZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFja2AgKG5vIGxvbmdlclxuICAgICAgLy8gbmVlZGVkIGluIG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLXRhYmxlQDEuMC42KS5cbiAgICAgIHNlbGYuaW50ZXJydXB0ID0gQm9vbGVhbihcbiAgICAgICAgY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QgJiYgIWNoaWxkRmxvdy5fZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFja1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEgbmV3IGNvbnRhaW5lci5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0ge31cbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIGNvbnRhaW5lckNvbnN0cnVjdCxcbiAgICAgIHRoZXJlSXNBTmV3Q29udGFpbmVyLFxuICAgICAgdGhlcmVJc05vTmV3Q29udGFpbmVyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gdGhlcmVJc0FOZXdDb250YWluZXIoY29kZSkge1xuICAgIGlmIChjaGlsZEZsb3cpIGNsb3NlRmxvdygpXG4gICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gdGhlcmVJc05vTmV3Q29udGFpbmVyKGNvZGUpIHtcbiAgICBzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0gPSBjb250aW51ZWQgIT09IHN0YWNrLmxlbmd0aFxuICAgIGxpbmVTdGFydE9mZnNldCA9IHNlbGYubm93KCkub2Zmc2V0XG4gICAgcmV0dXJuIGZsb3dTdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZG9jdW1lbnRDb250aW51ZWQoY29kZSkge1xuICAgIC8vIFRyeSBuZXcgY29udGFpbmVycy5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0ge31cbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgY29udGFpbmVyQ29uc3RydWN0LFxuICAgICAgY29udGFpbmVyQ29udGludWUsXG4gICAgICBmbG93U3RhcnRcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBjb250YWluZXJDb250aW51ZShjb2RlKSB7XG4gICAgY29udGludWVkKytcbiAgICBzdGFjay5wdXNoKFtzZWxmLmN1cnJlbnRDb25zdHJ1Y3QsIHNlbGYuY29udGFpbmVyU3RhdGVdKVxuICAgIC8vIFRyeSBhbm90aGVyLlxuICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZmxvd1N0YXJ0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKGNoaWxkRmxvdykgY2xvc2VGbG93KClcbiAgICAgIGV4aXRDb250YWluZXJzKDApXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjaGlsZEZsb3cgPSBjaGlsZEZsb3cgfHwgc2VsZi5wYXJzZXIuZmxvdyhzZWxmLm5vdygpKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rRmxvdycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnZmxvdycsXG4gICAgICBwcmV2aW91czogY2hpbGRUb2tlbixcbiAgICAgIF90b2tlbml6ZXI6IGNoaWxkRmxvd1xuICAgIH0pXG4gICAgcmV0dXJuIGZsb3dDb250aW51ZShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZmxvd0NvbnRpbnVlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgd3JpdGVUb0NoaWxkKGVmZmVjdHMuZXhpdCgnY2h1bmtGbG93JyksIHRydWUpXG4gICAgICBleGl0Q29udGFpbmVycygwKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICB3cml0ZVRvQ2hpbGQoZWZmZWN0cy5leGl0KCdjaHVua0Zsb3cnKSlcbiAgICAgIC8vIEdldCByZWFkeSBmb3IgdGhlIG5leHQgbGluZS5cbiAgICAgIGNvbnRpbnVlZCA9IDBcbiAgICAgIHNlbGYuaW50ZXJydXB0ID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gc3RhcnRcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGZsb3dDb250aW51ZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gW2VvZl1cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiB3cml0ZVRvQ2hpbGQodG9rZW4sIGVvZikge1xuICAgIGNvbnN0IHN0cmVhbSA9IHNlbGYuc2xpY2VTdHJlYW0odG9rZW4pXG4gICAgaWYgKGVvZikgc3RyZWFtLnB1c2gobnVsbClcbiAgICB0b2tlbi5wcmV2aW91cyA9IGNoaWxkVG9rZW5cbiAgICBpZiAoY2hpbGRUb2tlbikgY2hpbGRUb2tlbi5uZXh0ID0gdG9rZW5cbiAgICBjaGlsZFRva2VuID0gdG9rZW5cbiAgICBjaGlsZEZsb3cuZGVmaW5lU2tpcCh0b2tlbi5zdGFydClcbiAgICBjaGlsZEZsb3cud3JpdGUoc3RyZWFtKVxuXG4gICAgLy8gQWxyaWdodCwgc28gd2UganVzdCBhZGRlZCBhIGxhenkgbGluZTpcbiAgICAvL1xuICAgIC8vIGBgYG1hcmtkb3duXG4gICAgLy8gPiBhXG4gICAgLy8gYi5cbiAgICAvL1xuICAgIC8vIE9yOlxuICAgIC8vXG4gICAgLy8gPiB+fn5jXG4gICAgLy8gZFxuICAgIC8vXG4gICAgLy8gT3I6XG4gICAgLy9cbiAgICAvLyA+IHwgZSB8XG4gICAgLy8gZlxuICAgIC8vIGBgYFxuICAgIC8vXG4gICAgLy8gVGhlIGNvbnN0cnVjdCBpbiB0aGUgc2Vjb25kIGV4YW1wbGUgKGZlbmNlZCBjb2RlKSBkb2VzIG5vdCBhY2NlcHQgbGF6eVxuICAgIC8vIGxpbmVzLCBzbyBpdCBtYXJrZWQgaXRzZWxmIGFzIGRvbmUgYXQgdGhlIGVuZCBvZiBpdHMgZmlyc3QgbGluZSwgYW5kXG4gICAgLy8gdGhlbiB0aGUgY29udGVudCBjb25zdHJ1Y3QgcGFyc2VzIGBkYC5cbiAgICAvLyBNb3N0IGNvbnN0cnVjdHMgaW4gbWFya2Rvd24gbWF0Y2ggb24gdGhlIGZpcnN0IGxpbmU6IGlmIHRoZSBmaXJzdCBsaW5lXG4gICAgLy8gZm9ybXMgYSBjb25zdHJ1Y3QsIGEgbm9uLWxhenkgbGluZSBjYW5cdTIwMTl0IFx1MjAxQ3VubWFrZVx1MjAxRCBpdC5cbiAgICAvL1xuICAgIC8vIFRoZSBjb25zdHJ1Y3QgaW4gdGhlIHRoaXJkIGV4YW1wbGUgaXMgcG90ZW50aWFsbHkgYSBHRk0gdGFibGUsIGFuZFxuICAgIC8vIHRob3NlIGFyZSAqd2VpcmQqLlxuICAgIC8vIEl0ICpjb3VsZCogYmUgYSB0YWJsZSwgZnJvbSB0aGUgZmlyc3QgbGluZSwgaWYgdGhlIGZvbGxvd2luZyBsaW5lXG4gICAgLy8gbWF0Y2hlcyBhIGNvbmRpdGlvbi5cbiAgICAvLyBJbiB0aGlzIGNhc2UsIHRoYXQgc2Vjb25kIGxpbmUgaXMgbGF6eSwgd2hpY2ggXHUyMDFDdW5tYWtlc1x1MjAxRCB0aGUgZmlyc3QgbGluZVxuICAgIC8vIGFuZCB0dXJucyB0aGUgd2hvbGUgaW50byBvbmUgY29udGVudCBibG9jay5cbiAgICAvL1xuICAgIC8vIFdlXHUyMDE5dmUgbm93IHBhcnNlZCB0aGUgbm9uLWxhenkgYW5kIHRoZSBsYXp5IGxpbmUsIGFuZCBjYW4gZmlndXJlIG91dFxuICAgIC8vIHdoZXRoZXIgdGhlIGxhenkgbGluZSBzdGFydGVkIGEgbmV3IGZsb3cgYmxvY2suXG4gICAgLy8gSWYgaXQgZGlkLCB3ZSBleGl0IHRoZSBjdXJyZW50IGNvbnRhaW5lcnMgYmV0d2VlbiB0aGUgdHdvIGZsb3cgYmxvY2tzLlxuICAgIGlmIChzZWxmLnBhcnNlci5sYXp5W3Rva2VuLnN0YXJ0LmxpbmVdKSB7XG4gICAgICBsZXQgaW5kZXggPSBjaGlsZEZsb3cuZXZlbnRzLmxlbmd0aFxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIC8vIFRoZSB0b2tlbiBzdGFydHMgYmVmb3JlIHRoZSBsaW5lIGVuZGluZ1x1MjAyNlxuICAgICAgICAgIGNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCA8IGxpbmVTdGFydE9mZnNldCAmJlxuICAgICAgICAgIC8vIFx1MjAyNmFuZCBlaXRoZXIgaXMgbm90IGVuZGVkIHlldFx1MjAyNlxuICAgICAgICAgICghY2hpbGRGbG93LmV2ZW50c1tpbmRleF1bMV0uZW5kIHx8XG4gICAgICAgICAgICAvLyBcdTIwMjZvciBlbmRzIGFmdGVyIGl0LlxuICAgICAgICAgICAgY2hpbGRGbG93LmV2ZW50c1tpbmRleF1bMV0uZW5kLm9mZnNldCA+IGxpbmVTdGFydE9mZnNldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gRXhpdDogdGhlcmVcdTIwMTlzIHN0aWxsIHNvbWV0aGluZyBvcGVuLCB3aGljaCBtZWFucyBpdFx1MjAxOXMgYSBsYXp5IGxpbmVcbiAgICAgICAgICAvLyBwYXJ0IG9mIHNvbWV0aGluZy5cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBOb3RlOiB0aGlzIGFsZ29yaXRobSBmb3IgbW92aW5nIGV2ZW50cyBhcm91bmQgaXMgc2ltaWxhciB0byB0aGVcbiAgICAgIC8vIGFsZ29yaXRobSB3aGVuIGNsb3NpbmcgZmxvdyBpbiBgZG9jdW1lbnRDb250aW51ZWAuXG4gICAgICBjb25zdCBpbmRleEJlZm9yZUV4aXRzID0gc2VsZi5ldmVudHMubGVuZ3RoXG4gICAgICBsZXQgaW5kZXhCZWZvcmVGbG93ID0gaW5kZXhCZWZvcmVFeGl0c1xuICAgICAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHNlZW5cbiAgICAgIC8qKiBAdHlwZSB7UG9pbnQgfCB1bmRlZmluZWR9ICovXG4gICAgICBsZXQgcG9pbnRcblxuICAgICAgLy8gRmluZCB0aGUgcHJldmlvdXMgY2h1bmsgKHRoZSBvbmUgYmVmb3JlIHRoZSBsYXp5IGxpbmUpLlxuICAgICAgd2hpbGUgKGluZGV4QmVmb3JlRmxvdy0tKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzZWxmLmV2ZW50c1tpbmRleEJlZm9yZUZsb3ddWzBdID09PSAnZXhpdCcgJiZcbiAgICAgICAgICBzZWxmLmV2ZW50c1tpbmRleEJlZm9yZUZsb3ddWzFdLnR5cGUgPT09ICdjaHVua0Zsb3cnXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChzZWVuKSB7XG4gICAgICAgICAgICBwb2ludCA9IHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMV0uZW5kXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWVuID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBleGl0Q29udGFpbmVycyhjb250aW51ZWQpXG5cbiAgICAgIC8vIEZpeCBwb3NpdGlvbnMuXG4gICAgICBpbmRleCA9IGluZGV4QmVmb3JlRXhpdHNcbiAgICAgIHdoaWxlIChpbmRleCA8IHNlbGYuZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgLy8gSW5qZWN0IHRoZSBleGl0cyBlYXJsaWVyICh0aGV5XHUyMDE5cmUgc3RpbGwgYWxzbyBhdCB0aGUgZW5kKS5cbiAgICAgIHNwbGljZShcbiAgICAgICAgc2VsZi5ldmVudHMsXG4gICAgICAgIGluZGV4QmVmb3JlRmxvdyArIDEsXG4gICAgICAgIDAsXG4gICAgICAgIHNlbGYuZXZlbnRzLnNsaWNlKGluZGV4QmVmb3JlRXhpdHMpXG4gICAgICApXG5cbiAgICAgIC8vIERpc2NhcmQgdGhlIGR1cGxpY2F0ZSBleGl0cy5cbiAgICAgIHNlbGYuZXZlbnRzLmxlbmd0aCA9IGluZGV4XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gZXhpdENvbnRhaW5lcnMoc2l6ZSkge1xuICAgIGxldCBpbmRleCA9IHN0YWNrLmxlbmd0aFxuXG4gICAgLy8gRXhpdCBvcGVuIGNvbnRhaW5lcnMuXG4gICAgd2hpbGUgKGluZGV4LS0gPiBzaXplKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrW2luZGV4XVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IGVudHJ5WzFdXG4gICAgICBlbnRyeVswXS5leGl0LmNhbGwoc2VsZiwgZWZmZWN0cylcbiAgICB9XG4gICAgc3RhY2subGVuZ3RoID0gc2l6ZVxuICB9XG4gIGZ1bmN0aW9uIGNsb3NlRmxvdygpIHtcbiAgICBjaGlsZEZsb3cud3JpdGUoW251bGxdKVxuICAgIGNoaWxkVG9rZW4gPSB1bmRlZmluZWRcbiAgICBjaGlsZEZsb3cgPSB1bmRlZmluZWRcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cgPSB1bmRlZmluZWRcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvbnRhaW5lcihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICBlZmZlY3RzLFxuICAgIGVmZmVjdHMuYXR0ZW1wdCh0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmRvY3VtZW50LCBvaywgbm9rKSxcbiAgICAnbGluZVByZWZpeCcsXG4gICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpID8gdW5kZWZpbmVkIDogNFxuICApXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqL1xuXG5pbXBvcnQge1xuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICB1bmljb2RlUHVuY3R1YXRpb24sXG4gIHVuaWNvZGVXaGl0ZXNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKlxuICogQ2xhc3NpZnkgd2hldGhlciBhIGNvZGUgcmVwcmVzZW50cyB3aGl0ZXNwYWNlLCBwdW5jdHVhdGlvbiwgb3Igc29tZXRoaW5nXG4gKiBlbHNlLlxuICpcbiAqIFVzZWQgZm9yIGF0dGVudGlvbiAoZW1waGFzaXMsIHN0cm9uZyksIHdob3NlIHNlcXVlbmNlcyBjYW4gb3BlbiBvciBjbG9zZVxuICogYmFzZWQgb24gdGhlIGNsYXNzIG9mIHN1cnJvdW5kaW5nIGNoYXJhY3RlcnMuXG4gKlxuICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGVvZiAoYG51bGxgKSBpcyBzZWVuIGFzIHdoaXRlc3BhY2UuXG4gKlxuICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJucyB7dHlwZW9mIGNvbnN0YW50cy5jaGFyYWN0ZXJHcm91cFdoaXRlc3BhY2UgfCB0eXBlb2YgY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwUHVuY3R1YXRpb24gfCB1bmRlZmluZWR9XG4gKiAgIEdyb3VwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlDaGFyYWN0ZXIoY29kZSkge1xuICBpZiAoXG4gICAgY29kZSA9PT0gbnVsbCB8fFxuICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkgfHxcbiAgICB1bmljb2RlV2hpdGVzcGFjZShjb2RlKVxuICApIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGlmICh1bmljb2RlUHVuY3R1YXRpb24oY29kZSkpIHtcbiAgICByZXR1cm4gMlxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG4vKipcbiAqIENhbGwgYWxsIGByZXNvbHZlQWxsYHMuXG4gKlxuICogQHBhcmFtIHtBcnJheTx7cmVzb2x2ZUFsbD86IFJlc29sdmVyIHwgdW5kZWZpbmVkfT59IGNvbnN0cnVjdHNcbiAqICAgTGlzdCBvZiBjb25zdHJ1Y3RzLCBvcHRpb25hbGx5IHdpdGggYHJlc29sdmVBbGxgcy5cbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqICAgTGlzdCBvZiBldmVudHMuXG4gKiBAcGFyYW0ge1Rva2VuaXplQ29udGV4dH0gY29udGV4dFxuICogICBDb250ZXh0IHVzZWQgYnkgYHRva2VuaXplYC5cbiAqIEByZXR1cm5zIHtBcnJheTxFdmVudD59XG4gKiAgIENoYW5nZWQgZXZlbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFsbChjb25zdHJ1Y3RzLCBldmVudHMsIGNvbnRleHQpIHtcbiAgLyoqIEB0eXBlIHtBcnJheTxSZXNvbHZlcj59ICovXG4gIGNvbnN0IGNhbGxlZCA9IFtdXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBjb25zdHJ1Y3RzLmxlbmd0aCkge1xuICAgIGNvbnN0IHJlc29sdmUgPSBjb25zdHJ1Y3RzW2luZGV4XS5yZXNvbHZlQWxsXG5cbiAgICBpZiAocmVzb2x2ZSAmJiAhY2FsbGVkLmluY2x1ZGVzKHJlc29sdmUpKSB7XG4gICAgICBldmVudHMgPSByZXNvbHZlKGV2ZW50cywgY29udGV4dClcbiAgICAgIGNhbGxlZC5wdXNoKHJlc29sdmUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV2ZW50c1xufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Qb2ludH0gUG9pbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7Y2xhc3NpZnlDaGFyYWN0ZXJ9IGZyb20gJ21pY3JvbWFyay11dGlsLWNsYXNzaWZ5LWNoYXJhY3RlcidcbmltcG9ydCB7cmVzb2x2ZUFsbH0gZnJvbSAnbWljcm9tYXJrLXV0aWwtcmVzb2x2ZS1hbGwnXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBhdHRlbnRpb24gPSB7XG4gIG5hbWU6ICdhdHRlbnRpb24nLFxuICB0b2tlbml6ZTogdG9rZW5pemVBdHRlbnRpb24sXG4gIHJlc29sdmVBbGw6IHJlc29sdmVBbGxBdHRlbnRpb25cbn1cblxuLyoqXG4gKiBUYWtlIGFsbCBldmVudHMgYW5kIHJlc29sdmUgYXR0ZW50aW9uIHRvIGVtcGhhc2lzIG9yIHN0cm9uZy5cbiAqXG4gKiBAdHlwZSB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBbGxBdHRlbnRpb24oZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgb3BlblxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgZ3JvdXBcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHRleHRcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IG9wZW5pbmdTZXF1ZW5jZVxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgY2xvc2luZ1NlcXVlbmNlXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgdXNlXG4gIC8qKiBAdHlwZSB7QXJyYXk8RXZlbnQ+fSAqL1xuICBsZXQgbmV4dEV2ZW50c1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IG9mZnNldFxuXG4gIC8vIFdhbGsgdGhyb3VnaCBhbGwgZXZlbnRzLlxuICAvL1xuICAvLyBOb3RlOiBwZXJmb3JtYW5jZSBvZiB0aGlzIGlzIGZpbmUgb24gYW4gbWIgb2Ygbm9ybWFsIG1hcmtkb3duLCBidXQgaXRcdTIwMTlzXG4gIC8vIGEgYm90dGxlbmVjayBmb3IgbWFsaWNpb3VzIHN0dWZmLlxuICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICAvLyBGaW5kIGEgdG9rZW4gdGhhdCBjYW4gY2xvc2UuXG4gICAgaWYgKFxuICAgICAgZXZlbnRzW2luZGV4XVswXSA9PT0gJ2VudGVyJyAmJlxuICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnYXR0ZW50aW9uU2VxdWVuY2UnICYmXG4gICAgICBldmVudHNbaW5kZXhdWzFdLl9jbG9zZVxuICAgICkge1xuICAgICAgb3BlbiA9IGluZGV4XG5cbiAgICAgIC8vIE5vdyB3YWxrIGJhY2sgdG8gZmluZCBhbiBvcGVuZXIuXG4gICAgICB3aGlsZSAob3Blbi0tKSB7XG4gICAgICAgIC8vIEZpbmQgYSB0b2tlbiB0aGF0IGNhbiBvcGVuIHRoZSBjbG9zZXIuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudHNbb3Blbl1bMF0gPT09ICdleGl0JyAmJlxuICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS50eXBlID09PSAnYXR0ZW50aW9uU2VxdWVuY2UnICYmXG4gICAgICAgICAgZXZlbnRzW29wZW5dWzFdLl9vcGVuICYmXG4gICAgICAgICAgLy8gSWYgdGhlIG1hcmtlcnMgYXJlIHRoZSBzYW1lOlxuICAgICAgICAgIGNvbnRleHQuc2xpY2VTZXJpYWxpemUoZXZlbnRzW29wZW5dWzFdKS5jaGFyQ29kZUF0KDApID09PVxuICAgICAgICAgICAgY29udGV4dC5zbGljZVNlcmlhbGl6ZShldmVudHNbaW5kZXhdWzFdKS5jaGFyQ29kZUF0KDApXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIElmIHRoZSBvcGVuaW5nIGNhbiBjbG9zZSBvciB0aGUgY2xvc2luZyBjYW4gb3BlbixcbiAgICAgICAgICAvLyBhbmQgdGhlIGNsb3NlIHNpemUgKmlzIG5vdCogYSBtdWx0aXBsZSBvZiB0aHJlZSxcbiAgICAgICAgICAvLyBidXQgdGhlIHN1bSBvZiB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBzaXplICppcyogbXVsdGlwbGUgb2YgdGhyZWUsXG4gICAgICAgICAgLy8gdGhlbiBkb25cdTIwMTl0IG1hdGNoLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChldmVudHNbb3Blbl1bMV0uX2Nsb3NlIHx8IGV2ZW50c1tpbmRleF1bMV0uX29wZW4pICYmXG4gICAgICAgICAgICAoZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0IC0gZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQpICUgMyAmJlxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgKGV2ZW50c1tvcGVuXVsxXS5lbmQub2Zmc2V0IC1cbiAgICAgICAgICAgICAgICBldmVudHNbb3Blbl1bMV0uc3RhcnQub2Zmc2V0ICtcbiAgICAgICAgICAgICAgICBldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgLVxuICAgICAgICAgICAgICAgIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQub2Zmc2V0KSAlXG4gICAgICAgICAgICAgIDNcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTnVtYmVyIG9mIG1hcmtlcnMgdG8gdXNlIGZyb20gdGhlIHNlcXVlbmNlLlxuICAgICAgICAgIHVzZSA9XG4gICAgICAgICAgICBldmVudHNbb3Blbl1bMV0uZW5kLm9mZnNldCAtIGV2ZW50c1tvcGVuXVsxXS5zdGFydC5vZmZzZXQgPiAxICYmXG4gICAgICAgICAgICBldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCA+IDFcbiAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgIDogMVxuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW5dWzFdLmVuZClcbiAgICAgICAgICBjb25zdCBlbmQgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbaW5kZXhdWzFdLnN0YXJ0KVxuICAgICAgICAgIG1vdmVQb2ludChzdGFydCwgLXVzZSlcbiAgICAgICAgICBtb3ZlUG9pbnQoZW5kLCB1c2UpXG4gICAgICAgICAgb3BlbmluZ1NlcXVlbmNlID0ge1xuICAgICAgICAgICAgdHlwZTogdXNlID4gMSA/ICdzdHJvbmdTZXF1ZW5jZScgOiAnZW1waGFzaXNTZXF1ZW5jZScsXG4gICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW5dWzFdLmVuZClcbiAgICAgICAgICB9XG4gICAgICAgICAgY2xvc2luZ1NlcXVlbmNlID0ge1xuICAgICAgICAgICAgdHlwZTogdXNlID4gMSA/ICdzdHJvbmdTZXF1ZW5jZScgOiAnZW1waGFzaXNTZXF1ZW5jZScsXG4gICAgICAgICAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2luZGV4XVsxXS5zdGFydCksXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB9XG4gICAgICAgICAgdGV4dCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyAnc3Ryb25nVGV4dCcgOiAnZW1waGFzaXNUZXh0JyxcbiAgICAgICAgICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uZW5kKSxcbiAgICAgICAgICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2luZGV4XVsxXS5zdGFydClcbiAgICAgICAgICB9XG4gICAgICAgICAgZ3JvdXAgPSB7XG4gICAgICAgICAgICB0eXBlOiB1c2UgPiAxID8gJ3N0cm9uZycgOiAnZW1waGFzaXMnLFxuICAgICAgICAgICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIG9wZW5pbmdTZXF1ZW5jZS5zdGFydCksXG4gICAgICAgICAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGNsb3NpbmdTZXF1ZW5jZS5lbmQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBvcGVuaW5nU2VxdWVuY2Uuc3RhcnQpXG4gICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5zdGFydCA9IE9iamVjdC5hc3NpZ24oe30sIGNsb3NpbmdTZXF1ZW5jZS5lbmQpXG4gICAgICAgICAgbmV4dEV2ZW50cyA9IFtdXG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbW9yZSBtYXJrZXJzIGluIHRoZSBvcGVuaW5nLCBhZGQgdGhlbSBiZWZvcmUuXG4gICAgICAgICAgaWYgKGV2ZW50c1tvcGVuXVsxXS5lbmQub2Zmc2V0IC0gZXZlbnRzW29wZW5dWzFdLnN0YXJ0Lm9mZnNldCkge1xuICAgICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2gobmV4dEV2ZW50cywgW1xuICAgICAgICAgICAgICBbJ2VudGVyJywgZXZlbnRzW29wZW5dWzFdLCBjb250ZXh0XSxcbiAgICAgICAgICAgICAgWydleGl0JywgZXZlbnRzW29wZW5dWzFdLCBjb250ZXh0XVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBPcGVuaW5nLlxuICAgICAgICAgIG5leHRFdmVudHMgPSBwdXNoKG5leHRFdmVudHMsIFtcbiAgICAgICAgICAgIFsnZW50ZXInLCBncm91cCwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2VudGVyJywgb3BlbmluZ1NlcXVlbmNlLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZXhpdCcsIG9wZW5pbmdTZXF1ZW5jZSwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2VudGVyJywgdGV4dCwgY29udGV4dF1cbiAgICAgICAgICBdKVxuXG4gICAgICAgICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgICAgICAgIC8vIEJldHdlZW4uXG4gICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2goXG4gICAgICAgICAgICBuZXh0RXZlbnRzLFxuICAgICAgICAgICAgcmVzb2x2ZUFsbChcbiAgICAgICAgICAgICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwsXG4gICAgICAgICAgICAgIGV2ZW50cy5zbGljZShvcGVuICsgMSwgaW5kZXgpLFxuICAgICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gQ2xvc2luZy5cbiAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChuZXh0RXZlbnRzLCBbXG4gICAgICAgICAgICBbJ2V4aXQnLCB0ZXh0LCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZW50ZXInLCBjbG9zaW5nU2VxdWVuY2UsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0JywgY2xvc2luZ1NlcXVlbmNlLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZXhpdCcsIGdyb3VwLCBjb250ZXh0XVxuICAgICAgICAgIF0pXG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbW9yZSBtYXJrZXJzIGluIHRoZSBjbG9zaW5nLCBhZGQgdGhlbSBhZnRlci5cbiAgICAgICAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0IC0gZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDJcbiAgICAgICAgICAgIG5leHRFdmVudHMgPSBwdXNoKG5leHRFdmVudHMsIFtcbiAgICAgICAgICAgICAgWydlbnRlcicsIGV2ZW50c1tpbmRleF1bMV0sIGNvbnRleHRdLFxuICAgICAgICAgICAgICBbJ2V4aXQnLCBldmVudHNbaW5kZXhdWzFdLCBjb250ZXh0XVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMFxuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UoZXZlbnRzLCBvcGVuIC0gMSwgaW5kZXggLSBvcGVuICsgMywgbmV4dEV2ZW50cylcbiAgICAgICAgICBpbmRleCA9IG9wZW4gKyBuZXh0RXZlbnRzLmxlbmd0aCAtIG9mZnNldCAtIDJcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIHJlbWFpbmluZyBzZXF1ZW5jZXMuXG4gIGluZGV4ID0gLTFcbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2F0dGVudGlvblNlcXVlbmNlJykge1xuICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID0gJ2RhdGEnXG4gICAgfVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVBdHRlbnRpb24oZWZmZWN0cywgb2spIHtcbiAgY29uc3QgYXR0ZW50aW9uTWFya2VycyA9IHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuYXR0ZW50aW9uTWFya2Vycy5udWxsXG4gIGNvbnN0IHByZXZpb3VzID0gdGhpcy5wcmV2aW91c1xuICBjb25zdCBiZWZvcmUgPSBjbGFzc2lmeUNoYXJhY3RlcihwcmV2aW91cylcblxuICAvKiogQHR5cGUge05vbk51bGxhYmxlPENvZGU+fSAqL1xuICBsZXQgbWFya2VyXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBCZWZvcmUgYSBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgbWFya2VyID0gY29kZVxuICAgIGVmZmVjdHMuZW50ZXIoJ2F0dGVudGlvblNlcXVlbmNlJylcbiAgICByZXR1cm4gaW5zaWRlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYSBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqXG4gICAqICAgICBeXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnNpZGVcbiAgICB9XG4gICAgY29uc3QgdG9rZW4gPSBlZmZlY3RzLmV4aXQoJ2F0dGVudGlvblNlcXVlbmNlJylcblxuICAgIC8vIFRvIGRvOiBuZXh0IG1ham9yOiBtb3ZlIHRoaXMgdG8gcmVzb2x2ZXIsIGp1c3QgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIGNvbnN0IGFmdGVyID0gY2xhc3NpZnlDaGFyYWN0ZXIoY29kZSlcblxuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICBjb25zdCBvcGVuID1cbiAgICAgICFhZnRlciB8fCAoYWZ0ZXIgPT09IDIgJiYgYmVmb3JlKSB8fCBhdHRlbnRpb25NYXJrZXJzLmluY2x1ZGVzKGNvZGUpXG4gICAgY29uc3QgY2xvc2UgPVxuICAgICAgIWJlZm9yZSB8fCAoYmVmb3JlID09PSAyICYmIGFmdGVyKSB8fCBhdHRlbnRpb25NYXJrZXJzLmluY2x1ZGVzKHByZXZpb3VzKVxuICAgIHRva2VuLl9vcGVuID0gQm9vbGVhbihtYXJrZXIgPT09IDQyID8gb3BlbiA6IG9wZW4gJiYgKGJlZm9yZSB8fCAhY2xvc2UpKVxuICAgIHRva2VuLl9jbG9zZSA9IEJvb2xlYW4obWFya2VyID09PSA0MiA/IGNsb3NlIDogY2xvc2UgJiYgKGFmdGVyIHx8ICFvcGVuKSlcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIE1vdmUgYSBwb2ludCBhIGJpdC5cbiAqXG4gKiBOb3RlOiBgbW92ZWAgb25seSB3b3JrcyBpbnNpZGUgbGluZXMhIEl0XHUyMDE5cyBub3QgcG9zc2libGUgdG8gbW92ZSBwYXN0IG90aGVyXG4gKiBjaHVua3MgKHJlcGxhY2VtZW50IGNoYXJhY3RlcnMsIHRhYnMsIG9yIGxpbmUgZW5kaW5ncykuXG4gKlxuICogQHBhcmFtIHtQb2ludH0gcG9pbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBtb3ZlUG9pbnQocG9pbnQsIG9mZnNldCkge1xuICBwb2ludC5jb2x1bW4gKz0gb2Zmc2V0XG4gIHBvaW50Lm9mZnNldCArPSBvZmZzZXRcbiAgcG9pbnQuX2J1ZmZlckluZGV4ICs9IG9mZnNldFxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge1xuICBhc2NpaUFscGhhLFxuICBhc2NpaUFscGhhbnVtZXJpYyxcbiAgYXNjaWlBdGV4dCxcbiAgYXNjaWlDb250cm9sXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGF1dG9saW5rID0ge1xuICBuYW1lOiAnYXV0b2xpbmsnLFxuICB0b2tlbml6ZTogdG9rZW5pemVBdXRvbGlua1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUF1dG9saW5rKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgbGV0IHNpemUgPSAwXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBhbiBhdXRvbGluay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgXlxuICAgKiA+IHwgYTx1c2VyQGV4YW1wbGUuY29tPmJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignYXV0b2xpbmsnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2F1dG9saW5rTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rTWFya2VyJylcbiAgICBlZmZlY3RzLmVudGVyKCdhdXRvbGlua1Byb3RvY29sJylcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8YCwgYXQgcHJvdG9jb2wgb3IgYXRleHQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPGh0dHBzOi8vZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICBeXG4gICAqID4gfCBhPHVzZXJAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gc2NoZW1lT3JFbWFpbEF0ZXh0XG4gICAgfVxuICAgIHJldHVybiBlbWFpbEF0ZXh0KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc2Vjb25kIGJ5dGUgb2YgcHJvdG9jb2wgb3IgYXRleHQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPGh0dHBzOi8vZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYTx1c2VyQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNjaGVtZU9yRW1haWxBdGV4dChjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljIGFuZCBgK2AsIGAtYCwgYW5kIGAuYC5cbiAgICBpZiAoY29kZSA9PT0gNDMgfHwgY29kZSA9PT0gNDUgfHwgY29kZSA9PT0gNDYgfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIC8vIENvdW50IHRoZSBwcmV2aW91cyBhbHBoYWJldGljYWwgZnJvbSBgb3BlbmAgdG9vLlxuICAgICAgc2l6ZSA9IDFcbiAgICAgIHJldHVybiBzY2hlbWVJbnNpZGVPckVtYWlsQXRleHQoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIGVtYWlsQXRleHQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhbWJpZ3VvdXMgcHJvdG9jb2wgb3IgYXRleHQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPGh0dHBzOi8vZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYTx1c2VyQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNjaGVtZUluc2lkZU9yRW1haWxBdGV4dChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDU4KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUgPSAwXG4gICAgICByZXR1cm4gdXJsSW5zaWRlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljIGFuZCBgK2AsIGAtYCwgYW5kIGAuYC5cbiAgICBpZiAoXG4gICAgICAoY29kZSA9PT0gNDMgfHwgY29kZSA9PT0gNDUgfHwgY29kZSA9PT0gNDYgfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpICYmXG4gICAgICBzaXplKysgPCAzMlxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gc2NoZW1lSW5zaWRlT3JFbWFpbEF0ZXh0XG4gICAgfVxuICAgIHNpemUgPSAwXG4gICAgcmV0dXJuIGVtYWlsQXRleHQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBwcm90b2NvbCwgaW4gVVJMLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdXJsSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmtQcm90b2NvbCcpXG4gICAgICBlZmZlY3RzLmVudGVyKCdhdXRvbGlua01hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmtNYXJrZXInKVxuICAgICAgZWZmZWN0cy5leGl0KCdhdXRvbGluaycpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBjb250cm9sLCBzcGFjZSwgb3IgYDxgLlxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDMyIHx8IGNvZGUgPT09IDYwIHx8IGFzY2lpQ29udHJvbChjb2RlKSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gdXJsSW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogSW4gZW1haWwgYXRleHQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPHVzZXIubmFtZUBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbWFpbEF0ZXh0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGVtYWlsQXRTaWduT3JEb3RcbiAgICB9XG4gICAgaWYgKGFzY2lpQXRleHQoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGVtYWlsQXRleHRcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCBhZnRlciBhdC1zaWduIG9yIGRvdC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8dXNlci5uYW1lQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgICAgIF4gICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxBdFNpZ25PckRvdChjb2RlKSB7XG4gICAgcmV0dXJuIGFzY2lpQWxwaGFudW1lcmljKGNvZGUpID8gZW1haWxMYWJlbChjb2RlKSA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCB3aGVyZSBgLmAgYW5kIGA+YCBhcmUgYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8dXNlci5uYW1lQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxMYWJlbChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ2KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUgPSAwXG4gICAgICByZXR1cm4gZW1haWxBdFNpZ25PckRvdFxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIC8vIEV4aXQsIHRoZW4gY2hhbmdlIHRoZSB0b2tlbiB0eXBlLlxuICAgICAgZWZmZWN0cy5leGl0KCdhdXRvbGlua1Byb3RvY29sJykudHlwZSA9ICdhdXRvbGlua0VtYWlsJ1xuICAgICAgZWZmZWN0cy5lbnRlcignYXV0b2xpbmtNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rTWFya2VyJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmsnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIHJldHVybiBlbWFpbFZhbHVlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gbGFiZWwsIHdoZXJlIGAuYCBhbmQgYD5gIGFyZSAqbm90KiBhbGxvd2VkLlxuICAgKlxuICAgKiBUaG91Z2gsIHRoaXMgaXMgYWxzbyB1c2VkIGluIGBlbWFpbExhYmVsYCB0byBwYXJzZSBvdGhlciB2YWx1ZXMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPHVzZXIubmFtZUBleC1hbXBsZS5jb20+YlxuICAgKiAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxWYWx1ZShjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljIG9yIGAtYC5cbiAgICBpZiAoKGNvZGUgPT09IDQ1IHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSAmJiBzaXplKysgPCA2Mykge1xuICAgICAgY29uc3QgbmV4dCA9IGNvZGUgPT09IDQ1ID8gZW1haWxWYWx1ZSA6IGVtYWlsTGFiZWxcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIG5leHRcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBibGFua0xpbmUgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUJsYW5rTGluZSxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsYW5rTGluZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBibGFuayBsaW5lLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogYFx1MjQyMGAgcmVwcmVzZW50cyBhIHNwYWNlIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFx1MjQyMFx1MjQyMFx1MjQwQVxuICAgKiAgICAgXlxuICAgKiA+IHwgXHUyNDBBXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyLCAnbGluZVByZWZpeCcpKGNvZGUpXG4gICAgICA6IGFmdGVyKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgZW9mL2VvbCwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGBcdTI0MjBgIHJlcHJlc2VudHMgYSBzcGFjZSBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcdTI0MjBcdTI0MjBcdTI0MEFcbiAgICogICAgICAgXlxuICAgKiA+IHwgXHUyNDBBXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpID8gb2soY29kZSkgOiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FeGl0ZXJ9IEV4aXRlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGJsb2NrUXVvdGUgPSB7XG4gIG5hbWU6ICdibG9ja1F1b3RlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQmxvY2tRdW90ZVN0YXJ0LFxuICBjb250aW51YXRpb246IHtcbiAgICB0b2tlbml6ZTogdG9rZW5pemVCbG9ja1F1b3RlQ29udGludWF0aW9uXG4gIH0sXG4gIGV4aXRcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVCbG9ja1F1b3RlU3RhcnQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgYmxvY2sgcXVvdGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA+IGFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gc2VsZi5jb250YWluZXJTdGF0ZVxuICAgICAgaWYgKCFzdGF0ZS5vcGVuKSB7XG4gICAgICAgIGVmZmVjdHMuZW50ZXIoJ2Jsb2NrUXVvdGUnLCB7XG4gICAgICAgICAgX2NvbnRhaW5lcjogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICBzdGF0ZS5vcGVuID0gdHJ1ZVxuICAgICAgfVxuICAgICAgZWZmZWN0cy5lbnRlcignYmxvY2tRdW90ZVByZWZpeCcpXG4gICAgICBlZmZlY3RzLmVudGVyKCdibG9ja1F1b3RlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdibG9ja1F1b3RlTWFya2VyJylcbiAgICAgIHJldHVybiBhZnRlclxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYD5gLCBiZWZvcmUgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ID4gYVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2Jsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnYmxvY2tRdW90ZVByZWZpeCcpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KCdibG9ja1F1b3RlUHJlZml4JylcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIFN0YXJ0IG9mIGJsb2NrIHF1b3RlIGNvbnRpbnVhdGlvbi5cbiAqXG4gKiBgYGBtYXJrZG93blxuICogICB8ID4gYVxuICogPiB8ID4gYlxuICogICAgIF5cbiAqIGBgYFxuICpcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsb2NrUXVvdGVDb250aW51YXRpb24oZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gY29udFN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGJsb2NrIHF1b3RlIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogQWxzbyB1c2VkIHRvIHBhcnNlIHRoZSBmaXJzdCBibG9jayBxdW90ZSBvcGVuaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgPiBhXG4gICAqID4gfCA+IGJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRTdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgIGNvbnRCZWZvcmUsXG4gICAgICAgICdsaW5lUHJlZml4JyxcbiAgICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IDRcbiAgICAgICkoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRCZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBgPmAsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIEFsc28gdXNlZCB0byBwYXJzZSB0aGUgZmlyc3QgYmxvY2sgcXVvdGUgb3BlbmluZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ID4gYVxuICAgKiA+IHwgPiBiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250QmVmb3JlKGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGJsb2NrUXVvdGUsIG9rLCBub2spKGNvZGUpXG4gIH1cbn1cblxuLyoqIEB0eXBlIHtFeGl0ZXJ9ICovXG5mdW5jdGlvbiBleGl0KGVmZmVjdHMpIHtcbiAgZWZmZWN0cy5leGl0KCdibG9ja1F1b3RlJylcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHthc2NpaVB1bmN0dWF0aW9ufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjaGFyYWN0ZXJFc2NhcGUgPSB7XG4gIG5hbWU6ICdjaGFyYWN0ZXJFc2NhcGUnLFxuICB0b2tlbml6ZTogdG9rZW5pemVDaGFyYWN0ZXJFc2NhcGVcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDaGFyYWN0ZXJFc2NhcGUoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY2hhcmFjdGVyIGVzY2FwZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFcXCpiXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlckVzY2FwZScpXG4gICAgZWZmZWN0cy5lbnRlcignZXNjYXBlTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2VzY2FwZU1hcmtlcicpXG4gICAgcmV0dXJuIGluc2lkZVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBcXGAsIGF0IHB1bmN0dWF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYVxcKmJcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBwdW5jdHVhdGlvbi5cbiAgICBpZiAoYXNjaWlQdW5jdHVhdGlvbihjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyRXNjYXBlVmFsdWUnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlckVzY2FwZVZhbHVlJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyRXNjYXBlJylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIiAvPlxuXG4vKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2knKVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ3xmYWxzZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKHZhbHVlKSB7XG4gIGNvbnN0IGNoYXJhY3RlclJlZmVyZW5jZSA9ICcmJyArIHZhbHVlICsgJzsnXG4gIGVsZW1lbnQuaW5uZXJIVE1MID0gY2hhcmFjdGVyUmVmZXJlbmNlXG4gIGNvbnN0IGNoYXIgPSBlbGVtZW50LnRleHRDb250ZW50XG5cbiAgLy8gU29tZSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBkbyBub3QgcmVxdWlyZSB0aGUgY2xvc2luZyBzZW1pY29sb25cbiAgLy8gKGAmbm90YCwgZm9yIGluc3RhbmNlKSwgd2hpY2ggbGVhZHMgdG8gc2l0dWF0aW9ucyB3aGVyZSBwYXJzaW5nIHRoZSBhc3N1bWVkXG4gIC8vIG5hbWVkIHJlZmVyZW5jZSBvZiBgJm5vdGl0O2Agd2lsbCByZXN1bHQgaW4gdGhlIHN0cmluZyBgXHUwMEFDaXQ7YC5cbiAgLy8gV2hlbiB3ZSBlbmNvdW50ZXIgYSB0cmFpbGluZyBzZW1pY29sb24gYWZ0ZXIgcGFyc2luZywgYW5kIHRoZSBjaGFyYWN0ZXJcbiAgLy8gcmVmZXJlbmNlIHRvIGRlY29kZSB3YXMgbm90IGEgc2VtaWNvbG9uIChgJnNlbWk7YCksIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGVcbiAgLy8gbWF0Y2hpbmcgd2FzIG5vdCBjb21wbGV0ZS5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVHlwZVNjcmlwdCBpcyB3cm9uZyB0aGF0IGB0ZXh0Q29udGVudGAgb24gZWxlbWVudHMgY2FuXG4gIC8vIHlpZWxkIGBudWxsYC5cbiAgaWYgKGNoYXIuY2hhckNvZGVBdChjaGFyLmxlbmd0aCAtIDEpID09PSA1OSAvKiBgO2AgKi8gJiYgdmFsdWUgIT09ICdzZW1pJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gSWYgdGhlIGRlY29kZWQgc3RyaW5nIGlzIGVxdWFsIHRvIHRoZSBpbnB1dCwgdGhlIGNoYXJhY3RlciByZWZlcmVuY2Ugd2FzXG4gIC8vIG5vdCB2YWxpZC5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVHlwZVNjcmlwdCBpcyB3cm9uZyB0aGF0IGB0ZXh0Q29udGVudGAgb24gZWxlbWVudHMgY2FuXG4gIC8vIHlpZWxkIGBudWxsYC5cbiAgcmV0dXJuIGNoYXIgPT09IGNoYXJhY3RlclJlZmVyZW5jZSA/IGZhbHNlIDogY2hhclxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJ1xuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIGFzY2lpRGlnaXQsXG4gIGFzY2lpSGV4RGlnaXRcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY2hhcmFjdGVyUmVmZXJlbmNlID0ge1xuICBuYW1lOiAnY2hhcmFjdGVyUmVmZXJlbmNlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQ2hhcmFjdGVyUmVmZXJlbmNlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ2hhcmFjdGVyUmVmZXJlbmNlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgbGV0IHNpemUgPSAwXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgbWF4XG4gIC8qKiBAdHlwZSB7KGNvZGU6IENvZGUpID0+IGJvb2xlYW59ICovXG4gIGxldCB0ZXN0XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBjaGFyYWN0ZXIgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSZhbXA7YlxuICAgKiAgICAgIF5cbiAgICogPiB8IGEmIzEyMztiXG4gICAqICAgICAgXlxuICAgKiA+IHwgYSYjeDk7YlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2UnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXInKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYCZgLCBhdCBgI2AgZm9yIG51bWVyaWMgcmVmZXJlbmNlcyBvciBhbHBoYW51bWVyaWMgZm9yIG5hbWVkXG4gICAqIHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhJmFtcDtiXG4gICAqICAgICAgIF5cbiAgICogPiB8IGEmIzEyMztiXG4gICAqICAgICAgIF5cbiAgICogPiB8IGEmI3g5O2JcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDM1KSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljJylcbiAgICAgIHJldHVybiBudW1lcmljXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZVZhbHVlJylcbiAgICBtYXggPSAzMVxuICAgIHRlc3QgPSBhc2NpaUFscGhhbnVtZXJpY1xuICAgIHJldHVybiB2YWx1ZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAjYCwgYXQgYHhgIGZvciBoZXhhZGVjaW1hbHMgb3IgZGlnaXQgZm9yIGRlY2ltYWxzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSYjMTIzO2JcbiAgICogICAgICAgIF5cbiAgICogPiB8IGEmI3g5O2JcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG51bWVyaWMoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA4OCB8fCBjb2RlID09PSAxMjApIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCcpXG4gICAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZScpXG4gICAgICBtYXggPSA2XG4gICAgICB0ZXN0ID0gYXNjaWlIZXhEaWdpdFxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZVZhbHVlJylcbiAgICBtYXggPSA3XG4gICAgdGVzdCA9IGFzY2lpRGlnaXRcbiAgICByZXR1cm4gdmFsdWUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBtYXJrZXJzIChgJiN4YCwgYCYjYCwgb3IgYCZgKSwgaW4gdmFsdWUsIGJlZm9yZSBgO2AuXG4gICAqXG4gICAqIFRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlIGtpbmQgZGVmaW5lcyB3aGF0IGFuZCBob3cgbWFueSBjaGFyYWN0ZXJzIGFyZVxuICAgKiBhbGxvd2VkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSZhbXA7YlxuICAgKiAgICAgICBeXl5cbiAgICogPiB8IGEmIzEyMztiXG4gICAqICAgICAgICBeXl5cbiAgICogPiB8IGEmI3g5O2JcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB2YWx1ZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDU5ICYmIHNpemUpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZScpXG4gICAgICBpZiAoXG4gICAgICAgIHRlc3QgPT09IGFzY2lpQWxwaGFudW1lcmljICYmXG4gICAgICAgICFkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShzZWxmLnNsaWNlU2VyaWFsaXplKHRva2VuKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGRvOiBgbWFya2Rvd24tcnNgIHVzZXMgYSBkaWZmZXJlbnQgbmFtZTpcbiAgICAgIC8vIGBDaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJTZW1pYC5cbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyUmVmZXJlbmNlJylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICBpZiAodGVzdChjb2RlKSAmJiBzaXplKysgPCBtYXgpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IG5vbkxhenlDb250aW51YXRpb24gPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb24sXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY29kZUZlbmNlZCA9IHtcbiAgbmFtZTogJ2NvZGVGZW5jZWQnLFxuICB0b2tlbml6ZTogdG9rZW5pemVDb2RlRmVuY2VkLFxuICBjb25jcmV0ZTogdHJ1ZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvZGVGZW5jZWQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICAvKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbiAgY29uc3QgY2xvc2VTdGFydCA9IHtcbiAgICB0b2tlbml6ZTogdG9rZW5pemVDbG9zZVN0YXJ0LFxuICAgIHBhcnRpYWw6IHRydWVcbiAgfVxuICBsZXQgaW5pdGlhbFByZWZpeCA9IDBcbiAgbGV0IHNpemVPcGVuID0gMFxuICAvKiogQHR5cGUge05vbk51bGxhYmxlPENvZGU+fSAqL1xuICBsZXQgbWFya2VyXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBjb2RlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogcGFyc2Ugd2hpdGVzcGFjZSBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgcmV0dXJuIGJlZm9yZVNlcXVlbmNlT3Blbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgZmVuY2UsIGFmdGVyIHByZWZpeCwgYXQgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qc1xuICAgKiAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlU2VxdWVuY2VPcGVuKGNvZGUpIHtcbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgICBpbml0aWFsUHJlZml4ID1cbiAgICAgIHRhaWwgJiYgdGFpbFsxXS50eXBlID09PSAnbGluZVByZWZpeCdcbiAgICAgICAgPyB0YWlsWzJdLnNsaWNlU2VyaWFsaXplKHRhaWxbMV0sIHRydWUpLmxlbmd0aFxuICAgICAgICA6IDBcbiAgICBtYXJrZXIgPSBjb2RlXG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZCcpXG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZEZlbmNlJylcbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZScpXG4gICAgcmV0dXJuIHNlcXVlbmNlT3Blbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgZmVuY2Ugc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qc1xuICAgKiAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgc2l6ZU9wZW4rK1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gc2VxdWVuY2VPcGVuXG4gICAgfVxuICAgIGlmIChzaXplT3BlbiA8IDMpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZScpXG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGluZm9CZWZvcmUsICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICAgIDogaW5mb0JlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgZmVuY2UsIGFmdGVyIHRoZSBzZXF1ZW5jZSAoYW5kIG9wdGlvbmFsIHdoaXRlc3BhY2UpLCBiZWZvcmUgaW5mby5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbmZvQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlJylcbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdFxuICAgICAgICA/IG9rKGNvZGUpXG4gICAgICAgIDogZWZmZWN0cy5jaGVjayhub25MYXp5Q29udGludWF0aW9uLCBhdE5vbkxhenlCcmVhaywgYWZ0ZXIpKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWRGZW5jZUluZm8nKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rU3RyaW5nJywge1xuICAgICAgY29udGVudFR5cGU6ICdzdHJpbmcnXG4gICAgfSlcbiAgICByZXR1cm4gaW5mbyhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGluZm8uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qc1xuICAgKiAgICAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5mbyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlSW5mbycpXG4gICAgICByZXR1cm4gaW5mb0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZUluZm8nKVxuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBtZXRhQmVmb3JlLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5NiAmJiBjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGluZm9cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlLCBhZnRlciBpbmZvIGFuZCB3aGl0ZXNwYWNlLCBiZWZvcmUgbWV0YS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzIGV2YWxcbiAgICogICAgICAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG1ldGFCZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGluZm9CZWZvcmUoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZEZlbmNlTWV0YScpXG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtTdHJpbmcnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3N0cmluZydcbiAgICB9KVxuICAgIHJldHVybiBtZXRhKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gbWV0YS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzIGV2YWxcbiAgICogICAgICAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG1ldGEoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZU1ldGEnKVxuICAgICAgcmV0dXJuIGluZm9CZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDk2ICYmIGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gbWV0YVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGVvbC9lb2YgaW4gY29kZSwgYmVmb3JlIGEgbm9uLWxhenkgY2xvc2luZyBmZW5jZSBvciBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgICAgICAgXlxuICAgKiA+IHwgYWxlcnQoMSlcbiAgICogICAgICAgICAgICAgXlxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdE5vbkxhenlCcmVhayhjb2RlKSB7XG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChjbG9zZVN0YXJ0LCBhZnRlciwgY29udGVudEJlZm9yZSkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgY29kZSBjb250ZW50LCBub3QgYSBjbG9zaW5nIGZlbmNlLCBhdCBlb2wuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCB+fn5qc1xuICAgKiA+IHwgYWxlcnQoMSlcbiAgICogICAgICAgICAgICAgXlxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50QmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBjb250ZW50U3RhcnRcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgY29kZSBjb250ZW50LCBub3QgYSBjbG9zaW5nIGZlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICBeXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRTdGFydChjb2RlKSB7XG4gICAgcmV0dXJuIGluaXRpYWxQcmVmaXggPiAwICYmIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKFxuICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgYmVmb3JlQ29udGVudENodW5rLFxuICAgICAgICAgICdsaW5lUHJlZml4JyxcbiAgICAgICAgICBpbml0aWFsUHJlZml4ICsgMVxuICAgICAgICApKGNvZGUpXG4gICAgICA6IGJlZm9yZUNvbnRlbnRDaHVuayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBjb2RlIGNvbnRlbnQsIGFmdGVyIG9wdGlvbmFsIHByZWZpeC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IH5+fmpzXG4gICAqID4gfCBhbGVydCgxKVxuICAgKiAgICAgXlxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmVDb250ZW50Q2h1bmsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuY2hlY2sobm9uTGF6eUNvbnRpbnVhdGlvbiwgYXROb25MYXp5QnJlYWssIGFmdGVyKShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmxvd1ZhbHVlJylcbiAgICByZXR1cm4gY29udGVudENodW5rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29kZSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICBeXl5eXl5eXlxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50Q2h1bmsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmxvd1ZhbHVlJylcbiAgICAgIHJldHVybiBiZWZvcmVDb250ZW50Q2h1bmsoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbnRlbnRDaHVua1xuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGNvZGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCB+fn5qc1xuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogPiB8IH5+flxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZCcpXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAgICogQHR5cGUge1Rva2VuaXplcn1cbiAgICovXG4gIGZ1bmN0aW9uIHRva2VuaXplQ2xvc2VTdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gICAgbGV0IHNpemUgPSAwXG4gICAgcmV0dXJuIHN0YXJ0QmVmb3JlXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0QmVmb3JlKGNvZGUpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgcmV0dXJuIHN0YXJ0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVmb3JlIGNsb3NpbmcgZmVuY2UsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICAgIC8vIFRvIGRvOiBgZW50ZXJgIGhlcmUgb3IgaW4gbmV4dCBzdGF0ZT9cbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWRGZW5jZScpXG4gICAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgICA/IGZhY3RvcnlTcGFjZShcbiAgICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgICBiZWZvcmVTZXF1ZW5jZUNsb3NlLFxuICAgICAgICAgICAgJ2xpbmVQcmVmaXgnLFxuICAgICAgICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogNFxuICAgICAgICAgICkoY29kZSlcbiAgICAgICAgOiBiZWZvcmVTZXF1ZW5jZUNsb3NlKGNvZGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW4gY2xvc2luZyBmZW5jZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZVNlcXVlbmNlQ2xvc2UoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZScpXG4gICAgICAgIHJldHVybiBzZXF1ZW5jZUNsb3NlKGNvZGUpXG4gICAgICB9XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW4gY2xvc2luZyBmZW5jZSBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIGBgYG1hcmtkb3duXG4gICAgICogICB8IH5+fmpzXG4gICAgICogICB8IGFsZXJ0KDEpXG4gICAgICogPiB8IH5+flxuICAgICAqICAgICBeXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2VxdWVuY2VDbG9zZShjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICAgIHNpemUrK1xuICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgcmV0dXJuIHNlcXVlbmNlQ2xvc2VcbiAgICAgIH1cbiAgICAgIGlmIChzaXplID49IHNpemVPcGVuKSB7XG4gICAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UnKVxuICAgICAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIHNlcXVlbmNlQ2xvc2VBZnRlciwgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgICAgICAgIDogc2VxdWVuY2VDbG9zZUFmdGVyKGNvZGUpXG4gICAgICB9XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWZ0ZXIgY2xvc2luZyBmZW5jZSBzZXF1ZW5jZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICAgKlxuICAgICAqIGBgYG1hcmtkb3duXG4gICAgICogICB8IH5+fmpzXG4gICAgICogICB8IGFsZXJ0KDEpXG4gICAgICogPiB8IH5+flxuICAgICAqICAgICAgICBeXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2VxdWVuY2VDbG9zZUFmdGVyKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZScpXG4gICAgICAgIHJldHVybiBvayhjb2RlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb24oZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGxpbmVTdGFydFxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxpbmVTdGFydChjb2RlKSB7XG4gICAgcmV0dXJuIHNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSA/IG5vayhjb2RlKSA6IG9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNvZGVJbmRlbnRlZCA9IHtcbiAgbmFtZTogJ2NvZGVJbmRlbnRlZCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNvZGVJbmRlbnRlZFxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGZ1cnRoZXJTdGFydCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplRnVydGhlclN0YXJ0LFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29kZUluZGVudGVkKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGNvZGUgKGluZGVudGVkKS5cbiAgICpcbiAgICogPiAqKlBhcnNpbmcgbm90ZSoqOiBpdCBpcyBub3QgbmVlZGVkIHRvIGNoZWNrIGlmIHRoaXMgZmlyc3QgbGluZSBpcyBhXG4gICAqID4gZmlsbGVkIGxpbmUgKHRoYXQgaXQgaGFzIGEgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyKSwgYmVjYXVzZSBibGFuayBsaW5lc1xuICAgKiA+IGFyZSBwYXJzZWQgYWxyZWFkeSwgc28gd2UgbmV2ZXIgcnVuIGludG8gdGhhdC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogbWFudWFsbHkgY2hlY2sgaWYgaW50ZXJydXB0aW5nIGxpa2UgYG1hcmtkb3duLXJzYC5cblxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVJbmRlbnRlZCcpXG4gICAgLy8gVG8gZG86IHVzZSBhbiBpbXByb3ZlZCBgc3BhY2Vfb3JfdGFiYCBmdW5jdGlvbiBsaWtlIGBtYXJrZG93bi1yc2AsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gZHJvcCB0aGUgbmV4dCBzdGF0ZS5cbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyUHJlZml4LCAnbGluZVByZWZpeCcsIDQgKyAxKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IHN0YXJ0LCBhZnRlciAxIG9yIDQgc3BhY2VzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgICByZXR1cm4gdGFpbCAmJlxuICAgICAgdGFpbFsxXS50eXBlID09PSAnbGluZVByZWZpeCcgJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID49IDRcbiAgICAgID8gYXRCcmVhayhjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBhIGJyZWFrLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgICAgIF4gIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gYWZ0ZXIoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChmdXJ0aGVyU3RhcnQsIGF0QnJlYWssIGFmdGVyKShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmxvd1ZhbHVlJylcbiAgICByZXR1cm4gaW5zaWRlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29kZSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgICAgIF5eXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGbG93VmFsdWUnKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGluc2lkZVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIGVmZmVjdHMuZXhpdCgnY29kZUluZGVudGVkJylcbiAgICAvLyBUbyBkbzogYWxsb3cgaW50ZXJydXB0aW5nIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAvLyBGZWVsIGZyZWUgdG8gaW50ZXJydXB0LlxuICAgIC8vIHRva2VuaXplci5pbnRlcnJ1cHQgPSBmYWxzZVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplRnVydGhlclN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIGZ1cnRoZXJTdGFydFxuXG4gIC8qKlxuICAgKiBBdCBlb2wsIHRyeWluZyB0byBwYXJzZSBhbm90aGVyIGluZGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCAgICAgYmJiXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBmdXJ0aGVyU3RhcnQoY29kZSkge1xuICAgIC8vIFRvIGRvOiBpbXByb3ZlIGBsYXp5YCAvIGBwaWVyY2VgIGhhbmRsaW5nLlxuICAgIC8vIElmIHRoaXMgaXMgYSBsYXp5IGxpbmUsIGl0IGNhblx1MjAxOXQgYmUgY29kZS5cbiAgICBpZiAoc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgcmV0dXJuIGZ1cnRoZXJTdGFydFxuICAgIH1cblxuICAgIC8vIFRvIGRvOiB0aGUgY29kZSBoZXJlIGluIGBtaWNyb21hcmstanNgIGlzIGEgYml0IGRpZmZlcmVudCBmcm9tXG4gICAgLy8gYG1hcmtkb3duLXJzYCBiZWNhdXNlIHRoZXJlIGl0IGNhbiBhdHRlbXB0IHNwYWNlcy5cbiAgICAvLyBXZSBjYW5cdTIwMTl0IHlldC5cbiAgICAvL1xuICAgIC8vIFRvIGRvOiB1c2UgYW4gaW1wcm92ZWQgYHNwYWNlX29yX3RhYmAgZnVuY3Rpb24gbGlrZSBgbWFya2Rvd24tcnNgLFxuICAgIC8vIHNvIHRoYXQgd2UgY2FuIGRyb3AgdGhlIG5leHQgc3RhdGUuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlclByZWZpeCwgJ2xpbmVQcmVmaXgnLCA0ICsgMSkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCwgYWZ0ZXIgMSBvciA0IHNwYWNlcy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnICYmXG4gICAgICB0YWlsWzJdLnNsaWNlU2VyaWFsaXplKHRhaWxbMV0sIHRydWUpLmxlbmd0aCA+PSA0XG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKVxuICAgICAgPyBmdXJ0aGVyU3RhcnQoY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUHJldmlvdXN9IFByZXZpb3VzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNvZGVUZXh0ID0ge1xuICBuYW1lOiAnY29kZVRleHQnLFxuICB0b2tlbml6ZTogdG9rZW5pemVDb2RlVGV4dCxcbiAgcmVzb2x2ZTogcmVzb2x2ZUNvZGVUZXh0LFxuICBwcmV2aW91c1xufVxuXG4vLyBUbyBkbzogbmV4dCBtYWpvcjogZG9uXHUyMDE5dCByZXNvbHZlLCBsaWtlIGBtYXJrZG93bi1yc2AuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvZGVUZXh0KGV2ZW50cykge1xuICBsZXQgdGFpbEV4aXRJbmRleCA9IGV2ZW50cy5sZW5ndGggLSA0XG4gIGxldCBoZWFkRW50ZXJJbmRleCA9IDNcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGVudGVyXG5cbiAgLy8gSWYgd2Ugc3RhcnQgYW5kIGVuZCB3aXRoIGFuIEVPTCBvciBhIHNwYWNlLlxuICBpZiAoXG4gICAgKGV2ZW50c1toZWFkRW50ZXJJbmRleF1bMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmcnIHx8XG4gICAgICBldmVudHNbaGVhZEVudGVySW5kZXhdWzFdLnR5cGUgPT09ICdzcGFjZScpICYmXG4gICAgKGV2ZW50c1t0YWlsRXhpdEluZGV4XVsxXS50eXBlID09PSAnbGluZUVuZGluZycgfHxcbiAgICAgIGV2ZW50c1t0YWlsRXhpdEluZGV4XVsxXS50eXBlID09PSAnc3BhY2UnKVxuICApIHtcbiAgICBpbmRleCA9IGhlYWRFbnRlckluZGV4XG5cbiAgICAvLyBBbmQgd2UgaGF2ZSBkYXRhLlxuICAgIHdoaWxlICgrK2luZGV4IDwgdGFpbEV4aXRJbmRleCkge1xuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2NvZGVUZXh0RGF0YScpIHtcbiAgICAgICAgLy8gVGhlbiB3ZSBoYXZlIHBhZGRpbmcuXG4gICAgICAgIGV2ZW50c1toZWFkRW50ZXJJbmRleF1bMV0udHlwZSA9ICdjb2RlVGV4dFBhZGRpbmcnXG4gICAgICAgIGV2ZW50c1t0YWlsRXhpdEluZGV4XVsxXS50eXBlID0gJ2NvZGVUZXh0UGFkZGluZydcbiAgICAgICAgaGVhZEVudGVySW5kZXggKz0gMlxuICAgICAgICB0YWlsRXhpdEluZGV4IC09IDJcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNZXJnZSBhZGphY2VudCBzcGFjZXMgYW5kIGRhdGEuXG4gIGluZGV4ID0gaGVhZEVudGVySW5kZXggLSAxXG4gIHRhaWxFeGl0SW5kZXgrK1xuICB3aGlsZSAoKytpbmRleCA8PSB0YWlsRXhpdEluZGV4KSB7XG4gICAgaWYgKGVudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpbmRleCAhPT0gdGFpbEV4aXRJbmRleCAmJiBldmVudHNbaW5kZXhdWzFdLnR5cGUgIT09ICdsaW5lRW5kaW5nJykge1xuICAgICAgICBlbnRlciA9IGluZGV4XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGluZGV4ID09PSB0YWlsRXhpdEluZGV4IHx8XG4gICAgICBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nJ1xuICAgICkge1xuICAgICAgZXZlbnRzW2VudGVyXVsxXS50eXBlID0gJ2NvZGVUZXh0RGF0YSdcbiAgICAgIGlmIChpbmRleCAhPT0gZW50ZXIgKyAyKSB7XG4gICAgICAgIGV2ZW50c1tlbnRlcl1bMV0uZW5kID0gZXZlbnRzW2luZGV4IC0gMV1bMV0uZW5kXG4gICAgICAgIGV2ZW50cy5zcGxpY2UoZW50ZXIgKyAyLCBpbmRleCAtIGVudGVyIC0gMilcbiAgICAgICAgdGFpbEV4aXRJbmRleCAtPSBpbmRleCAtIGVudGVyIC0gMlxuICAgICAgICBpbmRleCA9IGVudGVyICsgMlxuICAgICAgfVxuICAgICAgZW50ZXIgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7UHJldmlvdXN9XG4gKi9cbmZ1bmN0aW9uIHByZXZpb3VzKGNvZGUpIHtcbiAgLy8gSWYgdGhlcmUgaXMgYSBwcmV2aW91cyBjb2RlLCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhIHRhaWwuXG4gIHJldHVybiAoXG4gICAgY29kZSAhPT0gOTYgfHxcbiAgICB0aGlzLmV2ZW50c1t0aGlzLmV2ZW50cy5sZW5ndGggLSAxXVsxXS50eXBlID09PSAnY2hhcmFjdGVyRXNjYXBlJ1xuICApXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29kZVRleHQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBsZXQgc2l6ZU9wZW4gPSAwXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgc2l6ZVxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgdG9rZW5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGNvZGUgKHRleHQpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICBeXG4gICAqID4gfCBcXGBhYFxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlVGV4dCcpXG4gICAgZWZmZWN0cy5lbnRlcignY29kZVRleHRTZXF1ZW5jZScpXG4gICAgcmV0dXJuIHNlcXVlbmNlT3Blbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDk2KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemVPcGVuKytcbiAgICAgIHJldHVybiBzZXF1ZW5jZU9wZW5cbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KCdjb2RlVGV4dFNlcXVlbmNlJylcbiAgICByZXR1cm4gYmV0d2Vlbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJldHdlZW4gc29tZXRoaW5nIGFuZCBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGBhYFxuICAgKiAgICAgIF5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZXR3ZWVuKGNvZGUpIHtcbiAgICAvLyBFT0YuXG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogZG9uXHUyMDE5dCBkbyBzcGFjZXMgaW4gcmVzb2x2ZSwgYnV0IHdoZW4gY29tcGlsaW5nLFxuICAgIC8vIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAvLyBUYWJzIGRvblx1MjAxOXQgd29yaywgYW5kIHZpcnR1YWwgc3BhY2VzIGRvblx1MjAxOXQgbWFrZSBzZW5zZS5cbiAgICBpZiAoY29kZSA9PT0gMzIpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ3NwYWNlJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdzcGFjZScpXG4gICAgICByZXR1cm4gYmV0d2VlblxuICAgIH1cblxuICAgIC8vIENsb3NpbmcgZmVuY2U/IENvdWxkIGFsc28gYmUgZGF0YS5cbiAgICBpZiAoY29kZSA9PT0gOTYpIHtcbiAgICAgIHRva2VuID0gZWZmZWN0cy5lbnRlcignY29kZVRleHRTZXF1ZW5jZScpXG4gICAgICBzaXplID0gMFxuICAgICAgcmV0dXJuIHNlcXVlbmNlQ2xvc2UoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICByZXR1cm4gYmV0d2VlblxuICAgIH1cblxuICAgIC8vIERhdGEuXG4gICAgZWZmZWN0cy5lbnRlcignY29kZVRleHREYXRhJylcbiAgICByZXR1cm4gZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRhdGEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkYXRhKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSAzMiB8fFxuICAgICAgY29kZSA9PT0gOTYgfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlVGV4dERhdGEnKVxuICAgICAgcmV0dXJuIGJldHdlZW4oY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjbG9zaW5nIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlQ2xvc2UoY29kZSkge1xuICAgIC8vIE1vcmUuXG4gICAgaWYgKGNvZGUgPT09IDk2KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUrK1xuICAgICAgcmV0dXJuIHNlcXVlbmNlQ2xvc2VcbiAgICB9XG5cbiAgICAvLyBEb25lIVxuICAgIGlmIChzaXplID09PSBzaXplT3Blbikge1xuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlVGV4dFNlcXVlbmNlJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZVRleHQnKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gTW9yZSBvciBsZXNzIGFjY2VudHM6IG1hcmsgYXMgZGF0YS5cbiAgICB0b2tlbi50eXBlID0gJ2NvZGVUZXh0RGF0YSdcbiAgICByZXR1cm4gZGF0YShjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNodW5rfSBDaHVua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKi9cblxuaW1wb3J0IHtzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG4vKipcbiAqIFRva2VuaXplIHN1YmNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICogICBMaXN0IG9mIGV2ZW50cy5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIHN1YnRva2VucyB3ZXJlIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VidG9rZW5pemUoZXZlbnRzKSB7XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gKi9cbiAgY29uc3QganVtcHMgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge0V2ZW50fSAqL1xuICBsZXQgZXZlbnRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBsaW5lSW5kZXhcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBvdGhlckluZGV4XG4gIC8qKiBAdHlwZSB7RXZlbnR9ICovXG4gIGxldCBvdGhlckV2ZW50XG4gIC8qKiBAdHlwZSB7QXJyYXk8RXZlbnQ+fSAqL1xuICBsZXQgcGFyYW1ldGVyc1xuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IHN1YmV2ZW50c1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBtb3JlXG4gIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgIHdoaWxlIChpbmRleCBpbiBqdW1wcykge1xuICAgICAgaW5kZXggPSBqdW1wc1tpbmRleF1cbiAgICB9XG4gICAgZXZlbnQgPSBldmVudHNbaW5kZXhdXG5cbiAgICAvLyBBZGQgYSBob29rIGZvciB0aGUgR0ZNIHRhc2tsaXN0IGV4dGVuc2lvbiwgd2hpY2ggbmVlZHMgdG8ga25vdyBpZiB0ZXh0XG4gICAgLy8gaXMgaW4gdGhlIGZpcnN0IGNvbnRlbnQgb2YgYSBsaXN0IGl0ZW0uXG4gICAgaWYgKFxuICAgICAgaW5kZXggJiZcbiAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdjaHVua0Zsb3cnICYmXG4gICAgICBldmVudHNbaW5kZXggLSAxXVsxXS50eXBlID09PSAnbGlzdEl0ZW1QcmVmaXgnXG4gICAgKSB7XG4gICAgICBzdWJldmVudHMgPSBldmVudFsxXS5fdG9rZW5pemVyLmV2ZW50c1xuICAgICAgb3RoZXJJbmRleCA9IDBcbiAgICAgIGlmIChcbiAgICAgICAgb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGggJiZcbiAgICAgICAgc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nQmxhbmsnXG4gICAgICApIHtcbiAgICAgICAgb3RoZXJJbmRleCArPSAyXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIG90aGVySW5kZXggPCBzdWJldmVudHMubGVuZ3RoICYmXG4gICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSAnY29udGVudCdcbiAgICAgICkge1xuICAgICAgICB3aGlsZSAoKytvdGhlckluZGV4IDwgc3ViZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChzdWJldmVudHNbb3RoZXJJbmRleF1bMV0udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09ICdjaHVua1RleHQnKSB7XG4gICAgICAgICAgICBzdWJldmVudHNbb3RoZXJJbmRleF1bMV0uX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtID0gdHJ1ZVxuICAgICAgICAgICAgb3RoZXJJbmRleCsrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW50ZXIuXG4gICAgaWYgKGV2ZW50WzBdID09PSAnZW50ZXInKSB7XG4gICAgICBpZiAoZXZlbnRbMV0uY29udGVudFR5cGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihqdW1wcywgc3ViY29udGVudChldmVudHMsIGluZGV4KSlcbiAgICAgICAgaW5kZXggPSBqdW1wc1tpbmRleF1cbiAgICAgICAgbW9yZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXhpdC5cbiAgICBlbHNlIGlmIChldmVudFsxXS5fY29udGFpbmVyKSB7XG4gICAgICBvdGhlckluZGV4ID0gaW5kZXhcbiAgICAgIGxpbmVJbmRleCA9IHVuZGVmaW5lZFxuICAgICAgd2hpbGUgKG90aGVySW5kZXgtLSkge1xuICAgICAgICBvdGhlckV2ZW50ID0gZXZlbnRzW290aGVySW5kZXhdXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nJyB8fFxuICAgICAgICAgIG90aGVyRXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmdCbGFuaydcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKG90aGVyRXZlbnRbMF0gPT09ICdlbnRlcicpIHtcbiAgICAgICAgICAgIGlmIChsaW5lSW5kZXgpIHtcbiAgICAgICAgICAgICAgZXZlbnRzW2xpbmVJbmRleF1bMV0udHlwZSA9ICdsaW5lRW5kaW5nQmxhbmsnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPSAnbGluZUVuZGluZydcbiAgICAgICAgICAgIGxpbmVJbmRleCA9IG90aGVySW5kZXhcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxpbmVJbmRleCkge1xuICAgICAgICAvLyBGaXggcG9zaXRpb24uXG4gICAgICAgIGV2ZW50WzFdLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tsaW5lSW5kZXhdWzFdLnN0YXJ0KVxuXG4gICAgICAgIC8vIFN3aXRjaCBjb250YWluZXIgZXhpdCB3LyBsaW5lIGVuZGluZ3MuXG4gICAgICAgIHBhcmFtZXRlcnMgPSBldmVudHMuc2xpY2UobGluZUluZGV4LCBpbmRleClcbiAgICAgICAgcGFyYW1ldGVycy51bnNoaWZ0KGV2ZW50KVxuICAgICAgICBzcGxpY2UoZXZlbnRzLCBsaW5lSW5kZXgsIGluZGV4IC0gbGluZUluZGV4ICsgMSwgcGFyYW1ldGVycylcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuICFtb3JlXG59XG5cbi8qKlxuICogVG9rZW5pemUgZW1iZWRkZWQgdG9rZW5zLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBldmVudEluZGV4XG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn1cbiAqL1xuZnVuY3Rpb24gc3ViY29udGVudChldmVudHMsIGV2ZW50SW5kZXgpIHtcbiAgY29uc3QgdG9rZW4gPSBldmVudHNbZXZlbnRJbmRleF1bMV1cbiAgY29uc3QgY29udGV4dCA9IGV2ZW50c1tldmVudEluZGV4XVsyXVxuICBsZXQgc3RhcnRQb3NpdGlvbiA9IGV2ZW50SW5kZXggLSAxXG4gIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi9cbiAgY29uc3Qgc3RhcnRQb3NpdGlvbnMgPSBbXVxuICBjb25zdCB0b2tlbml6ZXIgPVxuICAgIHRva2VuLl90b2tlbml6ZXIgfHwgY29udGV4dC5wYXJzZXJbdG9rZW4uY29udGVudFR5cGVdKHRva2VuLnN0YXJ0KVxuICBjb25zdCBjaGlsZEV2ZW50cyA9IHRva2VuaXplci5ldmVudHNcbiAgLyoqIEB0eXBlIHtBcnJheTxbbnVtYmVyLCBudW1iZXJdPn0gKi9cbiAgY29uc3QganVtcHMgPSBbXVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGdhcHMgPSB7fVxuICAvKiogQHR5cGUge0FycmF5PENodW5rPn0gKi9cbiAgbGV0IHN0cmVhbVxuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgcHJldmlvdXNcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGN1cnJlbnQgPSB0b2tlblxuICBsZXQgYWRqdXN0ID0gMFxuICBsZXQgc3RhcnQgPSAwXG4gIGNvbnN0IGJyZWFrcyA9IFtzdGFydF1cblxuICAvLyBMb29wIGZvcndhcmQgdGhyb3VnaCB0aGUgbGlua2VkIHRva2VucyB0byBwYXNzIHRoZW0gaW4gb3JkZXIgdG8gdGhlXG4gIC8vIHN1YnRva2VuaXplci5cbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAvLyBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgZm9yIHRoaXMgdG9rZW4uXG4gICAgd2hpbGUgKGV2ZW50c1srK3N0YXJ0UG9zaXRpb25dWzFdICE9PSBjdXJyZW50KSB7XG4gICAgICAvLyBFbXB0eS5cbiAgICB9XG4gICAgc3RhcnRQb3NpdGlvbnMucHVzaChzdGFydFBvc2l0aW9uKVxuICAgIGlmICghY3VycmVudC5fdG9rZW5pemVyKSB7XG4gICAgICBzdHJlYW0gPSBjb250ZXh0LnNsaWNlU3RyZWFtKGN1cnJlbnQpXG4gICAgICBpZiAoIWN1cnJlbnQubmV4dCkge1xuICAgICAgICBzdHJlYW0ucHVzaChudWxsKVxuICAgICAgfVxuICAgICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHRva2VuaXplci5kZWZpbmVTa2lwKGN1cnJlbnQuc3RhcnQpXG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0pIHtcbiAgICAgICAgdG9rZW5pemVyLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB0cnVlXG4gICAgICB9XG4gICAgICB0b2tlbml6ZXIud3JpdGUoc3RyZWFtKVxuICAgICAgaWYgKGN1cnJlbnQuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtKSB7XG4gICAgICAgIHRva2VuaXplci5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5yYXZlbCB0aGUgbmV4dCB0b2tlbi5cbiAgICBwcmV2aW91cyA9IGN1cnJlbnRcbiAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0XG4gIH1cblxuICAvLyBOb3csIGxvb3AgYmFjayB0aHJvdWdoIGFsbCBldmVudHMgKGFuZCBsaW5rZWQgdG9rZW5zKSwgdG8gZmlndXJlIG91dCB3aGljaFxuICAvLyBwYXJ0cyBiZWxvbmcgd2hlcmUuXG4gIGN1cnJlbnQgPSB0b2tlblxuICB3aGlsZSAoKytpbmRleCA8IGNoaWxkRXZlbnRzLmxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIC8vIEZpbmQgYSB2b2lkIHRva2VuIHRoYXQgaW5jbHVkZXMgYSBicmVhay5cbiAgICAgIGNoaWxkRXZlbnRzW2luZGV4XVswXSA9PT0gJ2V4aXQnICYmXG4gICAgICBjaGlsZEV2ZW50c1tpbmRleCAtIDFdWzBdID09PSAnZW50ZXInICYmXG4gICAgICBjaGlsZEV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gY2hpbGRFdmVudHNbaW5kZXggLSAxXVsxXS50eXBlICYmXG4gICAgICBjaGlsZEV2ZW50c1tpbmRleF1bMV0uc3RhcnQubGluZSAhPT0gY2hpbGRFdmVudHNbaW5kZXhdWzFdLmVuZC5saW5lXG4gICAgKSB7XG4gICAgICBzdGFydCA9IGluZGV4ICsgMVxuICAgICAgYnJlYWtzLnB1c2goc3RhcnQpXG4gICAgICAvLyBIZWxwIEdDLlxuICAgICAgY3VycmVudC5fdG9rZW5pemVyID0gdW5kZWZpbmVkXG4gICAgICBjdXJyZW50LnByZXZpb3VzID0gdW5kZWZpbmVkXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscCBHQy5cbiAgdG9rZW5pemVyLmV2ZW50cyA9IFtdXG5cbiAgLy8gSWYgdGhlcmVcdTIwMTlzIG9uZSBtb3JlIHRva2VuICh3aGljaCBpcyB0aGUgY2FzZXMgZm9yIGxpbmVzIHRoYXQgZW5kIGluIGFuXG4gIC8vIEVPRiksIHRoYXRcdTIwMTlzIHBlcmZlY3Q6IHRoZSBsYXN0IHBvaW50IHdlIGZvdW5kIHN0YXJ0cyBpdC5cbiAgLy8gSWYgdGhlcmUgaXNuXHUyMDE5dCB0aGVuIG1ha2Ugc3VyZSBhbnkgcmVtYWluaW5nIGNvbnRlbnQgaXMgYWRkZWQgdG8gaXQuXG4gIGlmIChjdXJyZW50KSB7XG4gICAgLy8gSGVscCBHQy5cbiAgICBjdXJyZW50Ll90b2tlbml6ZXIgPSB1bmRlZmluZWRcbiAgICBjdXJyZW50LnByZXZpb3VzID0gdW5kZWZpbmVkXG4gIH0gZWxzZSB7XG4gICAgYnJlYWtzLnBvcCgpXG4gIH1cblxuICAvLyBOb3cgc3BsaWNlIHRoZSBldmVudHMgZnJvbSB0aGUgc3VidG9rZW5pemVyIGludG8gdGhlIGN1cnJlbnQgZXZlbnRzLFxuICAvLyBtb3ZpbmcgYmFjayB0byBmcm9udCBzbyB0aGF0IHNwbGljZSBpbmRpY2VzIGFyZW5cdTIwMTl0IGFmZmVjdGVkLlxuICBpbmRleCA9IGJyZWFrcy5sZW5ndGhcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICBjb25zdCBzbGljZSA9IGNoaWxkRXZlbnRzLnNsaWNlKGJyZWFrc1tpbmRleF0sIGJyZWFrc1tpbmRleCArIDFdKVxuICAgIGNvbnN0IHN0YXJ0ID0gc3RhcnRQb3NpdGlvbnMucG9wKClcbiAgICBqdW1wcy51bnNoaWZ0KFtzdGFydCwgc3RhcnQgKyBzbGljZS5sZW5ndGggLSAxXSlcbiAgICBzcGxpY2UoZXZlbnRzLCBzdGFydCwgMiwgc2xpY2UpXG4gIH1cbiAgaW5kZXggPSAtMVxuICB3aGlsZSAoKytpbmRleCA8IGp1bXBzLmxlbmd0aCkge1xuICAgIGdhcHNbYWRqdXN0ICsganVtcHNbaW5kZXhdWzBdXSA9IGFkanVzdCArIGp1bXBzW2luZGV4XVsxXVxuICAgIGFkanVzdCArPSBqdW1wc1tpbmRleF1bMV0gLSBqdW1wc1tpbmRleF1bMF0gLSAxXG4gIH1cbiAgcmV0dXJuIGdhcHNcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtzdWJ0b2tlbml6ZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3VidG9rZW5pemUnXG4vKipcbiAqIE5vIG5hbWUgYmVjYXVzZSBpdCBtdXN0IG5vdCBiZSB0dXJuZWQgb2ZmLlxuICogQHR5cGUge0NvbnN0cnVjdH1cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnRlbnQgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUNvbnRlbnQsXG4gIHJlc29sdmU6IHJlc29sdmVDb250ZW50XG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgY29udGludWF0aW9uQ29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVDb250aW51YXRpb24sXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqXG4gKiBDb250ZW50IGlzIHRyYW5zcGFyZW50OiBpdFx1MjAxOXMgcGFyc2VkIHJpZ2h0IG5vdy4gVGhhdCB3YXksIGRlZmluaXRpb25zIGFyZSBhbHNvXG4gKiBwYXJzZWQgcmlnaHQgbm93OiBiZWZvcmUgdGV4dCBpbiBwYXJhZ3JhcGhzIChzcGVjaWZpY2FsbHksIG1lZGlhKSBhcmUgcGFyc2VkLlxuICpcbiAqIEB0eXBlIHtSZXNvbHZlcn1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvbnRlbnQoZXZlbnRzKSB7XG4gIHN1YnRva2VuaXplKGV2ZW50cylcbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvbnRlbnQoZWZmZWN0cywgb2spIHtcbiAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHByZXZpb3VzXG4gIHJldHVybiBjaHVua1N0YXJ0XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBhIGNvbnRlbnQgY2h1bmsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYmNcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNodW5rU3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2NvbnRlbnQnKVxuICAgIHByZXZpb3VzID0gZWZmZWN0cy5lbnRlcignY2h1bmtDb250ZW50Jywge1xuICAgICAgY29udGVudFR5cGU6ICdjb250ZW50J1xuICAgIH0pXG4gICAgcmV0dXJuIGNodW5rSW5zaWRlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYSBjb250ZW50IGNodW5rLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYWJjXG4gICAqICAgICBeXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNodW5rSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRFbmQoY29kZSlcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogaW4gYG1hcmtkb3duLXJzYCwgZWFjaCBsaW5lIGlzIHBhcnNlZCBvbiBpdHMgb3duLCBhbmQgZXZlcnl0aGluZ1xuICAgIC8vIGlzIHN0aXRjaGVkIHRvZ2V0aGVyIHJlc29sdmluZy5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgICAgY29udGludWF0aW9uQ29uc3RydWN0LFxuICAgICAgICBjb250ZW50Q29udGludWUsXG4gICAgICAgIGNvbnRlbnRFbmRcbiAgICAgICkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBEYXRhLlxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjaHVua0luc2lkZVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRFbmQoY29kZSkge1xuICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtDb250ZW50JylcbiAgICBlZmZlY3RzLmV4aXQoJ2NvbnRlbnQnKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRDb250aW51ZShjb2RlKSB7XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdjaHVua0NvbnRlbnQnKVxuICAgIHByZXZpb3VzLm5leHQgPSBlZmZlY3RzLmVudGVyKCdjaHVua0NvbnRlbnQnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ2NvbnRlbnQnLFxuICAgICAgcHJldmlvdXNcbiAgICB9KVxuICAgIHByZXZpb3VzID0gcHJldmlvdXMubmV4dFxuICAgIHJldHVybiBjaHVua0luc2lkZVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29udGludWF0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0TG9va2FoZWFkXG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0TG9va2FoZWFkKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQoJ2NodW5rQ29udGVudCcpXG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIHByZWZpeGVkLCAnbGluZVByZWZpeCcpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcHJlZml4ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgICBpZiAoXG4gICAgICAhc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpICYmXG4gICAgICB0YWlsICYmXG4gICAgICB0YWlsWzFdLnR5cGUgPT09ICdsaW5lUHJlZml4JyAmJlxuICAgICAgdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGggPj0gNFxuICAgICkge1xuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBlZmZlY3RzLmludGVycnVwdChzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmZsb3csIG5vaywgb2spKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge1xuICBhc2NpaUNvbnRyb2wsXG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIG1hcmtkb3duTGluZUVuZGluZ1xufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKipcbiAqIFBhcnNlIGRlc3RpbmF0aW9ucy5cbiAqXG4gKiAjIyMjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGBtYXJrZG93blxuICogPGE+XG4gKiA8YVxcPmI+XG4gKiA8YSBiPlxuICogPGEpPlxuICogYVxuICogYVxcKWJcbiAqIGEoYiljXG4gKiBhKGIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgZm9yIHdob2xlIChgPGE+YCBvciBgYmApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IGxpdGVyYWxUeXBlXG4gKiAgIFR5cGUgd2hlbiBlbmNsb3NlZCAoYDxhPmApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IGxpdGVyYWxNYXJrZXJUeXBlXG4gKiAgIFR5cGUgZm9yIGVuY2xvc2luZyAoYDxgIGFuZCBgPmApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHJhd1R5cGVcbiAqICAgVHlwZSB3aGVuIG5vdCBlbmNsb3NlZCAoYGJgKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBzdHJpbmdUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSB2YWx1ZSAoYGFgIG9yIGBiYCkuXG4gKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gW21heD1JbmZpbml0eV1cbiAqICAgRGVwdGggb2YgbmVzdGVkIHBhcmVucyAoaW5jbHVzaXZlKS5cbiAqIEByZXR1cm5zIHtTdGF0ZX1cbiAqICAgU3RhcnQgc3RhdGUuXG4gKi8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5RGVzdGluYXRpb24oXG4gIGVmZmVjdHMsXG4gIG9rLFxuICBub2ssXG4gIHR5cGUsXG4gIGxpdGVyYWxUeXBlLFxuICBsaXRlcmFsTWFya2VyVHlwZSxcbiAgcmF3VHlwZSxcbiAgc3RyaW5nVHlwZSxcbiAgbWF4XG4pIHtcbiAgY29uc3QgbGltaXQgPSBtYXggfHwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG4gIGxldCBiYWxhbmNlID0gMFxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YWE+XG4gICAqICAgICBeXG4gICAqID4gfCBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2MCkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgICAgZWZmZWN0cy5lbnRlcihsaXRlcmFsVHlwZSlcbiAgICAgIGVmZmVjdHMuZW50ZXIobGl0ZXJhbE1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIHJldHVybiBlbmNsb3NlZEJlZm9yZVxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGNvbnRyb2wsIHNwYWNlLCBjbG9zaW5nIHBhcmVuLlxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDMyIHx8IGNvZGUgPT09IDQxIHx8IGFzY2lpQ29udHJvbChjb2RlKSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgZWZmZWN0cy5lbnRlcihyYXdUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIoc3RyaW5nVHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua1N0cmluZycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnc3RyaW5nJ1xuICAgIH0pXG4gICAgcmV0dXJuIHJhdyhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8YCwgYXQgYW4gZW5jbG9zZWQgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YWE+XG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW5jbG9zZWRCZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5lbnRlcihsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KGxpdGVyYWxNYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KGxpdGVyYWxUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rU3RyaW5nJywge1xuICAgICAgY29udGVudFR5cGU6ICdzdHJpbmcnXG4gICAgfSlcbiAgICByZXR1cm4gZW5jbG9zZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBlbmNsb3NlZCBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmNsb3NlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIGVmZmVjdHMuZXhpdChzdHJpbmdUeXBlKVxuICAgICAgcmV0dXJuIGVuY2xvc2VkQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDYwIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gOTIgPyBlbmNsb3NlZEVzY2FwZSA6IGVuY2xvc2VkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhXFwqYT5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkRXNjYXBlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjAgfHwgY29kZSA9PT0gNjIgfHwgY29kZSA9PT0gOTIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGVuY2xvc2VkXG4gICAgfVxuICAgIHJldHVybiBlbmNsb3NlZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJhdyBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByYXcoY29kZSkge1xuICAgIGlmIChcbiAgICAgICFiYWxhbmNlICYmXG4gICAgICAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSA0MSB8fCBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdChyYXdUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgaWYgKGJhbGFuY2UgPCBsaW1pdCAmJiBjb2RlID09PSA0MCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBiYWxhbmNlKytcbiAgICAgIHJldHVybiByYXdcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQxKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJhbGFuY2UtLVxuICAgICAgcmV0dXJuIHJhd1xuICAgIH1cblxuICAgIC8vIEFTQ0lJIGNvbnRyb2wgKGJ1dCAqbm90KiBgXFwwYCkgYW5kIHNwYWNlIGFuZCBgKGAuXG4gICAgLy8gTm90ZTogaW4gYG1hcmtkb3duLXJzYCwgYFxcMGAgZXhpc3RzIGluIGNvZGVzLCBpbiBgbWljcm9tYXJrLWpzYCBpdFxuICAgIC8vIGRvZXNuXHUyMDE5dC5cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSAzMiB8fCBjb2RlID09PSA0MCB8fCBhc2NpaUNvbnRyb2woY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvZGUgPT09IDkyID8gcmF3RXNjYXBlIDogcmF3XG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgc3BlY2lhbCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFwqYVxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByYXdFc2NhcGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0MCB8fCBjb2RlID09PSA0MSB8fCBjb2RlID09PSA5Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gcmF3XG4gICAgfVxuICAgIHJldHVybiByYXcoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlblR5cGV9IFRva2VuVHlwZVxuICovXG5cbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKipcbiAqIFBhcnNlIGxhYmVscy5cbiAqXG4gKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogbGFiZWxzIGluIG1hcmtkb3duIGFyZSBjYXBwZWQgYXQgOTk5IGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZy5cbiAqXG4gKiAjIyMjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGBtYXJrZG93blxuICogW2FdXG4gKiBbYVxuICogYl1cbiAqIFthXFxdYl1cbiAqIGBgYFxuICpcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiAgIFRva2VuaXplIGNvbnRleHQuXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgb2YgdGhlIHdob2xlIGxhYmVsIChgW2FdYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbWFya2VyVHlwZVxuICogICBUeXBlIGZvciB0aGUgbWFya2VycyAoYFtgIGFuZCBgXWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIGlkZW50aWZpZXIgKGBhYCkuXG4gKiBAcmV0dXJucyB7U3RhdGV9XG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeUxhYmVsKGVmZmVjdHMsIG9rLCBub2ssIHR5cGUsIG1hcmtlclR5cGUsIHN0cmluZ1R5cGUpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgbGV0IHNpemUgPSAwXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IHNlZW5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgIGVmZmVjdHMuZW50ZXIobWFya2VyVHlwZSlcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQobWFya2VyVHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKHN0cmluZ1R5cGUpXG4gICAgcmV0dXJuIGF0QnJlYWtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgYXQgc29tZXRoaW5nLCBiZWZvcmUgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBzaXplID4gOTk5IHx8XG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSA5MSB8fFxuICAgICAgKGNvZGUgPT09IDkzICYmICFzZWVuKSB8fFxuICAgICAgLy8gVG8gZG86IHJlbW92ZSBpbiB0aGUgZnV0dXJlIG9uY2Ugd2VcdTIwMTl2ZSBzd2l0Y2hlZCBmcm9tXG4gICAgICAvLyBgbWljcm9tYXJrLWV4dGVuc2lvbi1mb290bm90ZWAgdG8gYG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLWZvb3Rub3RlYCxcbiAgICAgIC8vIHdoaWNoIGRvZXNuXHUyMDE5dCBuZWVkIHRoaXMuXG4gICAgICAvLyBIaWRkZW4gZm9vdG5vdGVzIGhvb2suXG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgICAoY29kZSA9PT0gOTQgJiZcbiAgICAgICAgIXNpemUgJiZcbiAgICAgICAgJ19oaWRkZW5Gb290bm90ZVN1cHBvcnQnIGluIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5leGl0KHN0cmluZ1R5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogaW5kZW50PyBMaW5rIGNodW5rcyBhbmQgRU9McyB0b2dldGhlcj9cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHJldHVybiBhdEJyZWFrXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rU3RyaW5nJywge1xuICAgICAgY29udGVudFR5cGU6ICdzdHJpbmcnXG4gICAgfSlcbiAgICByZXR1cm4gbGFiZWxJbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgaW4gdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSA5MSB8fFxuICAgICAgY29kZSA9PT0gOTMgfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB8fFxuICAgICAgc2l6ZSsrID4gOTk5XG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGlmICghc2Vlbikgc2VlbiA9ICFtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgcmV0dXJuIGNvZGUgPT09IDkyID8gbGFiZWxFc2NhcGUgOiBsYWJlbEluc2lkZVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBcXGAsIGF0IGEgc3BlY2lhbCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYVxcKmFdXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEVzY2FwZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDkxIHx8IGNvZGUgPT09IDkyIHx8IGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUrK1xuICAgICAgcmV0dXJuIGxhYmVsSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBsYWJlbEluc2lkZShjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqXG4gKiBQYXJzZSB0aXRsZXMuXG4gKlxuICogIyMjIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgbWFya2Rvd25cbiAqIFwiYVwiXG4gKiAnYidcbiAqIChjKVxuICogXCJhXG4gKiBiXCJcbiAqICdhXG4gKiAgICAgYidcbiAqIChhXFwpYilcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHBhcmFtIHtTdGF0ZX0gbm9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gdW5zdWNjZXNzZnVsLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHR5cGVcbiAqICAgVHlwZSBvZiB0aGUgd2hvbGUgdGl0bGUgKGBcImFcImAsIGAnYidgLCBgKGMpYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbWFya2VyVHlwZVxuICogICBUeXBlIGZvciB0aGUgbWFya2VycyAoYFwiYCwgYCdgLCBgKGAsIGFuZCBgKWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIHZhbHVlIChgYWApLlxuICogQHJldHVybnMge1N0YXRlfVxuICogICBTdGFydCBzdGF0ZS5cbiAqLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlUaXRsZShlZmZlY3RzLCBvaywgbm9rLCB0eXBlLCBtYXJrZXJUeXBlLCBzdHJpbmdUeXBlKSB7XG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT59ICovXG4gIGxldCBtYXJrZXJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIHRpdGxlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXCJhXCJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzQgfHwgY29kZSA9PT0gMzkgfHwgY29kZSA9PT0gNDApIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICAgIGVmZmVjdHMuZW50ZXIobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KG1hcmtlclR5cGUpXG4gICAgICBtYXJrZXIgPSBjb2RlID09PSA0MCA/IDQxIDogY29kZVxuICAgICAgcmV0dXJuIGJlZ2luXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcGVuaW5nIG1hcmtlci5cbiAgICpcbiAgICogVGhpcyBpcyBhbHNvIHVzZWQgYXQgdGhlIGNsb3NpbmcgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXCJhXCJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWdpbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoc3RyaW5nVHlwZSlcbiAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IHNvbWV0aGluZywgYmVmb3JlIHNvbWV0aGluZyBlbHNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXCJhXCJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIHJldHVybiBiZWdpbihtYXJrZXIpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gTm90ZTogYmxhbmsgbGluZXMgY2FuXHUyMDE5dCBleGlzdCBpbiBjb250ZW50LlxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIC8vIFRvIGRvOiB1c2UgYHNwYWNlX29yX3RhYl9lb2xfd2l0aF9vcHRpb25zYCwgY29ubmVjdC5cbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhdEJyZWFrLCAnbGluZVByZWZpeCcpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rU3RyaW5nJywge1xuICAgICAgY29udGVudFR5cGU6ICdzdHJpbmcnXG4gICAgfSlcbiAgICByZXR1cm4gaW5zaWRlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyIHx8IGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb2RlID09PSA5MiA/IGVzY2FwZSA6IGluc2lkZVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBcXGAsIGF0IGEgc3BlY2lhbCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcImFcXCpiXCJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIgfHwgY29kZSA9PT0gOTIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqXG4gKiBQYXJzZSBzcGFjZXMgYW5kIHRhYnMuXG4gKlxuICogVGhlcmUgaXMgbm8gYG5va2AgcGFyYW1ldGVyOlxuICpcbiAqICogICBsaW5lIGVuZGluZ3Mgb3Igc3BhY2VzIGluIG1hcmtkb3duIGFyZSBvZnRlbiBvcHRpb25hbCwgaW4gd2hpY2ggY2FzZSB0aGlzXG4gKiAgICAgZmFjdG9yeSBjYW4gYmUgdXNlZCBhbmQgYG9rYCB3aWxsIGJlIHN3aXRjaGVkIHRvIHdoZXRoZXIgc3BhY2VzIHdlcmUgZm91bmRcbiAqICAgICBvciBub3RcbiAqICogICBvbmUgbGluZSBlbmRpbmcgb3Igc3BhY2UgY2FuIGJlIGRldGVjdGVkIHdpdGhcbiAqICAgICBgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKWAgcmlnaHQgYmVmb3JlIHVzaW5nIGBmYWN0b3J5V2hpdGVzcGFjZWBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEByZXR1cm5zXG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgb2spIHtcbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgc2VlblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICBzZWVuID0gdHJ1ZVxuICAgICAgcmV0dXJuIHN0YXJ0XG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgICBlZmZlY3RzLFxuICAgICAgICBzdGFydCxcbiAgICAgICAgc2VlbiA/ICdsaW5lUHJlZml4JyA6ICdsaW5lU3VmZml4J1xuICAgICAgKShjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogTm9ybWFsaXplIGFuIGlkZW50aWZpZXIgKGFzIGZvdW5kIGluIHJlZmVyZW5jZXMsIGRlZmluaXRpb25zKS5cbiAqXG4gKiBDb2xsYXBzZXMgbWFya2Rvd24gd2hpdGVzcGFjZSwgdHJpbSwgYW5kIHRoZW4gbG93ZXItIGFuZCB1cHBlcmNhc2UuXG4gKlxuICogU29tZSBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIFx1MjAxQ3VwcGVyY2FzZVx1MjAxRCwgc3VjaCBhcyBVKzAzRjQgKGBcdTAzRjRgKSwgYnV0IGlmIHRoZWlyXG4gKiBsb3dlcmNhc2UgY291bnRlcnBhcnQgKFUrMDNCOCAoYFx1MDNCOGApKSBpcyB1cHBlcmNhc2VkIHdpbGwgcmVzdWx0IGluIGEgZGlmZmVyZW50XG4gKiB1cHBlcmNhc2UgY2hhcmFjdGVyIChVKzAzOTggKGBcdTAzOThgKSkuXG4gKiBTbywgdG8gZ2V0IGEgY2Fub25pY2FsIGZvcm0sIHdlIHBlcmZvcm0gYm90aCBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAqXG4gKiBVc2luZyB1cHBlcmNhc2UgbGFzdCBtYWtlcyBzdXJlIGtleXMgd2lsbCBuZXZlciBpbnRlcmFjdCB3aXRoIGRlZmF1bHRcbiAqIHByb3RvdHlwYWwgdmFsdWVzIChzdWNoIGFzIGBjb25zdHJ1Y3RvcmApOiBub3RoaW5nIGluIHRoZSBwcm90b3R5cGUgb2ZcbiAqIGBPYmplY3RgIGlzIHVwcGVyY2FzZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqICAgSWRlbnRpZmllciB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBOb3JtYWxpemVkIGlkZW50aWZpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJZGVudGlmaWVyKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWVcbiAgICAgIC8vIENvbGxhcHNlIG1hcmtkb3duIHdoaXRlc3BhY2UuXG4gICAgICAucmVwbGFjZSgvW1xcdFxcblxcciBdKy9nLCAnICcpXG4gICAgICAvLyBUcmltLlxuICAgICAgLnJlcGxhY2UoL14gfCAkL2csICcnKVxuICAgICAgLy8gU29tZSBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIFx1MjAxQ3VwcGVyY2FzZVx1MjAxRCwgYnV0IGlmIHRoZWlyIGxvd2VyY2FzZVxuICAgICAgLy8gY291bnRlcnBhcnQgaXMgdXBwZXJjYXNlZCB3aWxsIHJlc3VsdCBpbiBhIGRpZmZlcmVudCB1cHBlcmNhc2VcbiAgICAgIC8vIGNoYXJhY3Rlci5cbiAgICAgIC8vIEhlbmNlLCB0byBnZXQgdGhhdCBmb3JtLCB3ZSBwZXJmb3JtIGJvdGggbG93ZXItIGFuZCB1cHBlcmNhc2UuXG4gICAgICAvLyBVcHBlciBjYXNlIG1ha2VzIHN1cmUga2V5cyB3aWxsIG5vdCBpbnRlcmFjdCB3aXRoIGRlZmF1bHQgcHJvdG90eXBhbFxuICAgICAgLy8gbWV0aG9kczogbm8gbWV0aG9kIGlzIHVwcGVyY2FzZS5cbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAudG9VcHBlckNhc2UoKVxuICApXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeURlc3RpbmF0aW9ufSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1kZXN0aW5hdGlvbidcbmltcG9ydCB7ZmFjdG9yeUxhYmVsfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1sYWJlbCdcbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7ZmFjdG9yeVRpdGxlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS10aXRsZSdcbmltcG9ydCB7ZmFjdG9yeVdoaXRlc3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UnXG5pbXBvcnQge1xuICBtYXJrZG93bkxpbmVFbmRpbmcsXG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIG1hcmtkb3duU3BhY2Vcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtub3JtYWxpemVJZGVudGlmaWVyfSBmcm9tICdtaWNyb21hcmstdXRpbC1ub3JtYWxpemUtaWRlbnRpZmllcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGRlZmluaXRpb24gPSB7XG4gIG5hbWU6ICdkZWZpbml0aW9uJyxcbiAgdG9rZW5pemU6IHRva2VuaXplRGVmaW5pdGlvblxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IHRpdGxlQmVmb3JlID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVUaXRsZUJlZm9yZSxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZURlZmluaXRpb24oZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgbGV0IGlkZW50aWZpZXJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IHN0YXJ0IG9mIGEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgcGFyYWdyYXBocyAoYnV0IGRvIGZvbGxvdyBkZWZpbml0aW9ucykuXG4gICAgLy8gVG8gZG86IGRvIGBpbnRlcnJ1cHRgIHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgIC8vIFRvIGRvOiBwYXJzZSB3aGl0ZXNwYWNlIHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgIGVmZmVjdHMuZW50ZXIoJ2RlZmluaXRpb24nKVxuICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBgW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgLy8gVG8gZG86IHBhcnNlIHdoaXRlc3BhY2UgdGhlIHdheSBgbWFya2Rvd24tcnNgIGRvZXMuXG5cbiAgICByZXR1cm4gZmFjdG9yeUxhYmVsLmNhbGwoXG4gICAgICBzZWxmLFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGxhYmVsQWZ0ZXIsXG4gICAgICAvLyBOb3RlOiB3ZSBkb25cdTIwMTl0IG5lZWQgdG8gcmVzZXQgdGhlIHdheSBgbWFya2Rvd24tcnNgIGRvZXMuXG4gICAgICBub2ssXG4gICAgICAnZGVmaW5pdGlvbkxhYmVsJyxcbiAgICAgICdkZWZpbml0aW9uTGFiZWxNYXJrZXInLFxuICAgICAgJ2RlZmluaXRpb25MYWJlbFN0cmluZydcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgbGFiZWwuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsQWZ0ZXIoY29kZSkge1xuICAgIGlkZW50aWZpZXIgPSBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgc2VsZi5zbGljZVNlcmlhbGl6ZShzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVsxXSkuc2xpY2UoMSwgLTEpXG4gICAgKVxuICAgIGlmIChjb2RlID09PSA1OCkge1xuICAgICAgZWZmZWN0cy5lbnRlcignZGVmaW5pdGlvbk1hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnZGVmaW5pdGlvbk1hcmtlcicpXG4gICAgICByZXR1cm4gbWFya2VyQWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG1hcmtlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG1hcmtlckFmdGVyKGNvZGUpIHtcbiAgICAvLyBOb3RlOiB3aGl0ZXNwYWNlIGlzIG9wdGlvbmFsLlxuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIGRlc3RpbmF0aW9uQmVmb3JlKShjb2RlKVxuICAgICAgOiBkZXN0aW5hdGlvbkJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkZXN0aW5hdGlvbkJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIGZhY3RvcnlEZXN0aW5hdGlvbihcbiAgICAgIGVmZmVjdHMsXG4gICAgICBkZXN0aW5hdGlvbkFmdGVyLFxuICAgICAgLy8gTm90ZTogd2UgZG9uXHUyMDE5dCBuZWVkIHRvIHJlc2V0IHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgICAgbm9rLFxuICAgICAgJ2RlZmluaXRpb25EZXN0aW5hdGlvbicsXG4gICAgICAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbCcsXG4gICAgICAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcicsXG4gICAgICAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3JyxcbiAgICAgICdkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmcnXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkZXN0aW5hdGlvbkFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KHRpdGxlQmVmb3JlLCBhZnRlciwgYWZ0ZXIpKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYlxuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlcldoaXRlc3BhY2UsICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICAgIDogYWZ0ZXJXaGl0ZXNwYWNlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZGVmaW5pdGlvbiwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYlxuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXJXaGl0ZXNwYWNlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnZGVmaW5pdGlvbicpXG5cbiAgICAgIC8vIE5vdGU6IHdlIGRvblx1MjAxOXQgY2FyZSBhYm91dCB1bmlxdWVuZXNzLlxuICAgICAgLy8gSXRcdTIwMTlzIGxpa2VseSB0aGF0IHRoYXQgZG9lc25cdTIwMTl0IGhhcHBlbiB2ZXJ5IGZyZXF1ZW50bHkuXG4gICAgICAvLyBJdCBpcyBtb3JlIGxpa2VseSB0aGF0IGl0IHdhc3RlcyBwcmVjaW91cyB0aW1lLlxuICAgICAgc2VsZi5wYXJzZXIuZGVmaW5lZC5wdXNoKGlkZW50aWZpZXIpXG5cbiAgICAgIC8vIFRvIGRvOiBgbWFya2Rvd24tcnNgIGludGVycnVwdC5cbiAgICAgIC8vIC8vIFlvdVx1MjAxOWQgYmUgaW50ZXJydXB0aW5nLlxuICAgICAgLy8gdG9rZW5pemVyLmludGVycnVwdCA9IHRydWVcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVUaXRsZUJlZm9yZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiB0aXRsZUJlZm9yZVxuXG4gIC8qKlxuICAgKiBBZnRlciBkZXN0aW5hdGlvbiwgYXQgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYlxuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0aXRsZUJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgYmVmb3JlTWFya2VyKShjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IFthXTogYlxuICAgKiA+IHwgXCJjXCJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZU1hcmtlcihjb2RlKSB7XG4gICAgcmV0dXJuIGZhY3RvcnlUaXRsZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICB0aXRsZUFmdGVyLFxuICAgICAgbm9rLFxuICAgICAgJ2RlZmluaXRpb25UaXRsZScsXG4gICAgICAnZGVmaW5pdGlvblRpdGxlTWFya2VyJyxcbiAgICAgICdkZWZpbml0aW9uVGl0bGVTdHJpbmcnXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRpdGxlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGl0bGVBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIHRpdGxlQWZ0ZXJPcHRpb25hbFdoaXRlc3BhY2UsICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICAgIDogdGl0bGVBZnRlck9wdGlvbmFsV2hpdGVzcGFjZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRpdGxlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGl0bGVBZnRlck9wdGlvbmFsV2hpdGVzcGFjZShjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpID8gb2soY29kZSkgOiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaGFyZEJyZWFrRXNjYXBlID0ge1xuICBuYW1lOiAnaGFyZEJyZWFrRXNjYXBlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplSGFyZEJyZWFrRXNjYXBlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplSGFyZEJyZWFrRXNjYXBlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGEgaGFyZCBicmVhayAoZXNjYXBlKS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFcXFxuICAgKiAgICAgIF5cbiAgICogICB8IGJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdoYXJkQnJlYWtFc2NhcGUnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBhZnRlclxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBcXGAsIGF0IGVvbC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFcXFxuICAgKiAgICAgICBeXG4gICAqICAgfCBiXG4gICAqIGBgYFxuICAgKlxuICAgKiAgQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnaGFyZEJyZWFrRXNjYXBlJylcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge1xuICBtYXJrZG93bkxpbmVFbmRpbmcsXG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIG1hcmtkb3duU3BhY2Vcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBoZWFkaW5nQXR4ID0ge1xuICBuYW1lOiAnaGVhZGluZ0F0eCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUhlYWRpbmdBdHgsXG4gIHJlc29sdmU6IHJlc29sdmVIZWFkaW5nQXR4XG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlSGVhZGluZ0F0eChldmVudHMsIGNvbnRleHQpIHtcbiAgbGV0IGNvbnRlbnRFbmQgPSBldmVudHMubGVuZ3RoIC0gMlxuICBsZXQgY29udGVudFN0YXJ0ID0gM1xuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgY29udGVudFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgdGV4dFxuXG4gIC8vIFByZWZpeCB3aGl0ZXNwYWNlLCBwYXJ0IG9mIHRoZSBvcGVuaW5nLlxuICBpZiAoZXZlbnRzW2NvbnRlbnRTdGFydF1bMV0udHlwZSA9PT0gJ3doaXRlc3BhY2UnKSB7XG4gICAgY29udGVudFN0YXJ0ICs9IDJcbiAgfVxuXG4gIC8vIFN1ZmZpeCB3aGl0ZXNwYWNlLCBwYXJ0IG9mIHRoZSBjbG9zaW5nLlxuICBpZiAoXG4gICAgY29udGVudEVuZCAtIDIgPiBjb250ZW50U3RhcnQgJiZcbiAgICBldmVudHNbY29udGVudEVuZF1bMV0udHlwZSA9PT0gJ3doaXRlc3BhY2UnXG4gICkge1xuICAgIGNvbnRlbnRFbmQgLT0gMlxuICB9XG4gIGlmIChcbiAgICBldmVudHNbY29udGVudEVuZF1bMV0udHlwZSA9PT0gJ2F0eEhlYWRpbmdTZXF1ZW5jZScgJiZcbiAgICAoY29udGVudFN0YXJ0ID09PSBjb250ZW50RW5kIC0gMSB8fFxuICAgICAgKGNvbnRlbnRFbmQgLSA0ID4gY29udGVudFN0YXJ0ICYmXG4gICAgICAgIGV2ZW50c1tjb250ZW50RW5kIC0gMl1bMV0udHlwZSA9PT0gJ3doaXRlc3BhY2UnKSlcbiAgKSB7XG4gICAgY29udGVudEVuZCAtPSBjb250ZW50U3RhcnQgKyAxID09PSBjb250ZW50RW5kID8gMiA6IDRcbiAgfVxuICBpZiAoY29udGVudEVuZCA+IGNvbnRlbnRTdGFydCkge1xuICAgIGNvbnRlbnQgPSB7XG4gICAgICB0eXBlOiAnYXR4SGVhZGluZ1RleHQnLFxuICAgICAgc3RhcnQ6IGV2ZW50c1tjb250ZW50U3RhcnRdWzFdLnN0YXJ0LFxuICAgICAgZW5kOiBldmVudHNbY29udGVudEVuZF1bMV0uZW5kXG4gICAgfVxuICAgIHRleHQgPSB7XG4gICAgICB0eXBlOiAnY2h1bmtUZXh0JyxcbiAgICAgIHN0YXJ0OiBldmVudHNbY29udGVudFN0YXJ0XVsxXS5zdGFydCxcbiAgICAgIGVuZDogZXZlbnRzW2NvbnRlbnRFbmRdWzFdLmVuZCxcbiAgICAgIGNvbnRlbnRUeXBlOiAndGV4dCdcbiAgICB9XG4gICAgc3BsaWNlKGV2ZW50cywgY29udGVudFN0YXJ0LCBjb250ZW50RW5kIC0gY29udGVudFN0YXJ0ICsgMSwgW1xuICAgICAgWydlbnRlcicsIGNvbnRlbnQsIGNvbnRleHRdLFxuICAgICAgWydlbnRlcicsIHRleHQsIGNvbnRleHRdLFxuICAgICAgWydleGl0JywgdGV4dCwgY29udGV4dF0sXG4gICAgICBbJ2V4aXQnLCBjb250ZW50LCBjb250ZXh0XVxuICAgIF0pXG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUhlYWRpbmdBdHgoZWZmZWN0cywgb2ssIG5vaykge1xuICBsZXQgc2l6ZSA9IDBcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGEgaGVhZGluZyAoYXR4KS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IHBhcnNlIGluZGVudCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgZWZmZWN0cy5lbnRlcignYXR4SGVhZGluZycpXG4gICAgcmV0dXJuIGJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IGAjYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2F0eEhlYWRpbmdTZXF1ZW5jZScpXG4gICAgcmV0dXJuIHNlcXVlbmNlT3Blbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VPcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzUgJiYgc2l6ZSsrIDwgNikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gc2VxdWVuY2VPcGVuXG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIGF0IGxlYXN0IG9uZSBgI2AuXG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdhdHhIZWFkaW5nU2VxdWVuY2UnKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHNvbWV0aGluZywgYmVmb3JlIHNvbWV0aGluZyBlbHNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDM1KSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdhdHhIZWFkaW5nU2VxdWVuY2UnKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlRnVydGhlcihjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXR4SGVhZGluZycpXG4gICAgICAvLyBUbyBkbzogaW50ZXJydXB0IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAgIC8vIC8vIEZlZWwgZnJlZSB0byBpbnRlcnJ1cHQuXG4gICAgICAvLyB0b2tlbml6ZXIuaW50ZXJydXB0ID0gZmFsc2VcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhdEJyZWFrLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gVG8gZG86IGdlbmVyYXRlIGBkYXRhYCB0b2tlbnMsIGFkZCB0aGUgYHRleHRgIHRva2VuIGxhdGVyLlxuICAgIC8vIE5lZWRzIGVkaXQgbWFwLCBzZWU6IGBtYXJrZG93bi5yc2AuXG4gICAgZWZmZWN0cy5lbnRlcignYXR4SGVhZGluZ1RleHQnKVxuICAgIHJldHVybiBkYXRhKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZnVydGhlciBzZXF1ZW5jZSAoYWZ0ZXIgd2hpdGVzcGFjZSkuXG4gICAqXG4gICAqIENvdWxkIGJlIG5vcm1hbCBcdTIwMUN2aXNpYmxlXHUyMDFEIGhhc2hlcyBpbiB0aGUgaGVhZGluZyBvciBhIGZpbmFsIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWEgIyNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlRnVydGhlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDM1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBzZXF1ZW5jZUZ1cnRoZXJcbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KCdhdHhIZWFkaW5nU2VxdWVuY2UnKVxuICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkYXRhKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSAzNSB8fCBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2F0eEhlYWRpbmdUZXh0JylcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBkYXRhXG4gIH1cbn1cbiIsICIvKipcbiAqIExpc3Qgb2YgbG93ZXJjYXNlIEhUTUwgXHUyMDFDYmxvY2tcdTIwMUQgdGFnIG5hbWVzLlxuICpcbiAqIFRoZSBsaXN0LCB3aGVuIHBhcnNpbmcgSFRNTCAoZmxvdyksIHJlc3VsdHMgaW4gbW9yZSByZWxheGVkIHJ1bGVzIChjb25kaXRpb25cbiAqIDYpLlxuICogQmVjYXVzZSB0aGV5IGFyZSBrbm93biBibG9ja3MsIHRoZSBIVE1MLWxpa2Ugc3ludGF4IGRvZXNuXHUyMDE5dCBoYXZlIHRvIGJlXG4gKiBzdHJpY3RseSBwYXJzZWQuXG4gKiBGb3IgdGFnIG5hbWVzIG5vdCBpbiB0aGlzIGxpc3QsIGEgbW9yZSBzdHJpY3QgYWxnb3JpdGhtIChjb25kaXRpb24gNykgaXMgdXNlZFxuICogdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIEhUTUwtbGlrZSBzeW50YXggaXMgc2VlbiBhcyBIVE1MIChmbG93KSBvciBub3QuXG4gKlxuICogVGhpcyBpcyBjb3BpZWQgZnJvbTpcbiAqIDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jaHRtbC1ibG9ja3M+LlxuICpcbiAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBgc2VhcmNoYCB3YXMgYWRkZWQgaW4gYENvbW1vbk1hcmtAMC4zMWAuXG4gKi9cbmV4cG9ydCBjb25zdCBodG1sQmxvY2tOYW1lcyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3NlYXJjaCcsXG4gICdzZWN0aW9uJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dXG5cbi8qKlxuICogTGlzdCBvZiBsb3dlcmNhc2UgSFRNTCBcdTIwMUNyYXdcdTIwMUQgdGFnIG5hbWVzLlxuICpcbiAqIFRoZSBsaXN0LCB3aGVuIHBhcnNpbmcgSFRNTCAoZmxvdyksIHJlc3VsdHMgaW4gSFRNTCB0aGF0IGNhbiBpbmNsdWRlIGxpbmVzXG4gKiB3aXRob3V0IGV4aXRpbmcsIHVudGlsIGEgY2xvc2luZyB0YWcgYWxzbyBpbiB0aGlzIGxpc3QgaXMgZm91bmQgKGNvbmRpdGlvblxuICogMSkuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgY29waWVkIGZyb206XG4gKiA8aHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMzAvI2h0bWwtYmxvY2tzPi5cbiAqXG4gKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogYHRleHRhcmVhYCB3YXMgYWRkZWQgaW4gYENvbW1vbk1hcmtAMC4zMGAuXG4gKi9cbmV4cG9ydCBjb25zdCBodG1sUmF3TmFtZXMgPSBbJ3ByZScsICdzY3JpcHQnLCAnc3R5bGUnLCAndGV4dGFyZWEnXVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge1xuICBhc2NpaUFscGhhLFxuICBhc2NpaUFscGhhbnVtZXJpYyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93blNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7aHRtbEJsb2NrTmFtZXMsIGh0bWxSYXdOYW1lc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtaHRtbC10YWctbmFtZSdcbmltcG9ydCB7YmxhbmtMaW5lfSBmcm9tICcuL2JsYW5rLWxpbmUuanMnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGh0bWxGbG93ID0ge1xuICBuYW1lOiAnaHRtbEZsb3cnLFxuICB0b2tlbml6ZTogdG9rZW5pemVIdG1sRmxvdyxcbiAgcmVzb2x2ZVRvOiByZXNvbHZlVG9IdG1sRmxvdyxcbiAgY29uY3JldGU6IHRydWVcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBibGFua0xpbmVCZWZvcmUgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUJsYW5rTGluZUJlZm9yZSxcbiAgcGFydGlhbDogdHJ1ZVxufVxuY29uc3Qgbm9uTGF6eUNvbnRpbnVhdGlvblN0YXJ0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVOb25MYXp5Q29udGludWF0aW9uU3RhcnQsXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbmZ1bmN0aW9uIHJlc29sdmVUb0h0bWxGbG93KGV2ZW50cykge1xuICBsZXQgaW5kZXggPSBldmVudHMubGVuZ3RoXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiYgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnaHRtbEZsb3cnKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICBpZiAoaW5kZXggPiAxICYmIGV2ZW50c1tpbmRleCAtIDJdWzFdLnR5cGUgPT09ICdsaW5lUHJlZml4Jykge1xuICAgIC8vIEFkZCB0aGUgcHJlZml4IHN0YXJ0IHRvIHRoZSBIVE1MIHRva2VuLlxuICAgIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQgPSBldmVudHNbaW5kZXggLSAyXVsxXS5zdGFydFxuICAgIC8vIEFkZCB0aGUgcHJlZml4IHN0YXJ0IHRvIHRoZSBIVE1MIGxpbmUgdG9rZW4uXG4gICAgZXZlbnRzW2luZGV4ICsgMV1bMV0uc3RhcnQgPSBldmVudHNbaW5kZXggLSAyXVsxXS5zdGFydFxuICAgIC8vIFJlbW92ZSB0aGUgbGluZSBwcmVmaXguXG4gICAgZXZlbnRzLnNwbGljZShpbmRleCAtIDIsIDIpXG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUh0bWxGbG93KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBtYXJrZXJcbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgY2xvc2luZ1RhZ1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgbGV0IGJ1ZmZlclxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGluZGV4XG4gIC8qKiBAdHlwZSB7Q29kZX0gKi9cbiAgbGV0IG1hcmtlckJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIEhUTUwgKGZsb3cpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYDxgLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignaHRtbEZsb3cnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2h0bWxGbG93RGF0YScpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IHRhZyBuYW1lIG9yIG90aGVyIHN0dWZmLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgICBeXG4gICAqID4gfCA8IWRvY3R5cGU+XG4gICAqICAgICAgXlxuICAgKiA+IHwgPCEtLXh4eC0tPlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzMykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGVjbGFyYXRpb25PcGVuXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0Nykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBjbG9zaW5nVGFnID0gdHJ1ZVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlU3RhcnRcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IDNcbiAgICAgIC8vIFRvIGRvOlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgLy8gVG8gZG86IHVzZSBgbWFya2Rvd24tcnNgIHN0eWxlIGludGVycnVwdC5cbiAgICAgIC8vIFdoaWxlIHdlXHUyMDE5cmUgaW4gYW4gaW5zdHJ1Y3Rpb24gaW5zdGVhZCBvZiBhIGRlY2xhcmF0aW9uLCB3ZVx1MjAxOXJlIG9uIGEgYD9gXG4gICAgICAvLyByaWdodCBub3csIHNvIHdlIGRvIG5lZWQgdG8gc2VhcmNoIGZvciBgPmAsIHNpbWlsYXIgdG8gZGVjbGFyYXRpb25zLlxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhYmV0aWNhbC5cbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBub3QgbnVsbC5cbiAgICAgIGJ1ZmZlciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgIHJldHVybiB0YWdOYW1lXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFgLCBhdCBkZWNsYXJhdGlvbiwgY29tbWVudCwgb3IgQ0RBVEEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IWRvY3R5cGU+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgXlxuICAgKiA+IHwgPCFbQ0RBVEFbPiY8XV0+XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IDJcbiAgICAgIHJldHVybiBjb21tZW50T3Blbkluc2lkZVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTEpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gNVxuICAgICAgaW5kZXggPSAwXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsLlxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IDRcbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCEtYCwgaW5zaWRlIGEgY29tbWVudCwgYXQgYW5vdGhlciBgLWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50T3Blbkluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFbYCwgaW5zaWRlIENEQVRBLCBleHBlY3RpbmcgYENEQVRBW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgIF5eXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICdDREFUQVsnXG4gICAgaWYgKGNvZGUgPT09IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgrKykpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgaWYgKGluZGV4ID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvblxuICAgICAgfVxuICAgICAgcmV0dXJuIGNkYXRhT3Blbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwvYCwgaW4gY2xvc2luZyB0YWcsIGF0IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPC94PlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdDbG9zZVN0YXJ0KGNvZGUpIHtcbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBub3QgbnVsbC5cbiAgICAgIGJ1ZmZlciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgIHJldHVybiB0YWdOYW1lXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYj5cbiAgICogICAgICBeXlxuICAgKiA+IHwgPC9hYj5cbiAgICogICAgICAgXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ05hbWUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDQ3IHx8XG4gICAgICBjb2RlID09PSA2MiB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgY29uc3Qgc2xhc2ggPSBjb2RlID09PSA0N1xuICAgICAgY29uc3QgbmFtZSA9IGJ1ZmZlci50b0xvd2VyQ2FzZSgpXG4gICAgICBpZiAoIXNsYXNoICYmICFjbG9zaW5nVGFnICYmIGh0bWxSYXdOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICBtYXJrZXIgPSAxXG4gICAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2soY29kZSkgOiBjb250aW51YXRpb24oY29kZSlcbiAgICAgIH1cbiAgICAgIGlmIChodG1sQmxvY2tOYW1lcy5pbmNsdWRlcyhidWZmZXIudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgbWFya2VyID0gNlxuICAgICAgICBpZiAoc2xhc2gpIHtcbiAgICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgICByZXR1cm4gYmFzaWNTZWxmQ2xvc2luZ1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayhjb2RlKSA6IGNvbnRpbnVhdGlvbihjb2RlKVxuICAgICAgfVxuICAgICAgbWFya2VyID0gN1xuICAgICAgLy8gRG8gbm90IHN1cHBvcnQgY29tcGxldGUgSFRNTCB3aGVuIGludGVycnVwdGluZy5cbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCAmJiAhc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdXG4gICAgICAgID8gbm9rKGNvZGUpXG4gICAgICAgIDogY2xvc2luZ1RhZ1xuICAgICAgICA/IGNvbXBsZXRlQ2xvc2luZ1RhZ0FmdGVyKGNvZGUpXG4gICAgICAgIDogY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGAtYC5cbiAgICBpZiAoY29kZSA9PT0gNDUgfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgYnVmZmVyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgIHJldHVybiB0YWdOYW1lXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjbG9zaW5nIHNsYXNoIG9mIGEgYmFzaWMgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8ZGl2Lz5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmFzaWNTZWxmQ2xvc2luZyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvblxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgY2xvc2luZyBzbGFzaCBvZiBhIGNvbXBsZXRlIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHgvPlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVDbG9zaW5nVGFnQWZ0ZXIoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUNsb3NpbmdUYWdBZnRlclxuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBhbiBhdHRyaWJ1dGUgbmFtZS5cbiAgICpcbiAgICogQXQgZmlyc3QsIHRoaXMgc3RhdGUgaXMgdXNlZCBhZnRlciBhIGNvbXBsZXRlIHRhZyBuYW1lLCBhZnRlciB3aGl0ZXNwYWNlLFxuICAgKiB3aGVyZSBpdCBleHBlY3RzIG9wdGlvbmFsIGF0dHJpYnV0ZXMgb3IgdGhlIGVuZCBvZiB0aGUgdGFnLlxuICAgKiBJdCBpcyBhbHNvIHJldXNlZCBhZnRlciBhdHRyaWJ1dGVzLCB3aGVuIGV4cGVjdGluZyBtb3JlIG9wdGlvbmFsXG4gICAqIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSAvPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgOmI+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8YSBfYj5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDxhIGI+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8YSA+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0Nykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVFbmRcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYDpgIGFuZCBgX2AuXG4gICAgaWYgKGNvZGUgPT09IDU4IHx8IGNvZGUgPT09IDk1IHx8IGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlXG4gICAgfVxuICAgIHJldHVybiBjb21wbGV0ZUVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGF0dHJpYnV0ZSBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgOmI+XG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgPGEgX2I+XG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgPGEgYj5cbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWUoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAsIGAuYCwgYDpgLCBhbmQgYF9gLlxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IDQ1IHx8XG4gICAgICBjb2RlID09PSA0NiB8fFxuICAgICAgY29kZSA9PT0gNTggfHxcbiAgICAgIGNvZGUgPT09IDk1IHx8XG4gICAgICBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lXG4gICAgfVxuICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGF0dHJpYnV0ZSBuYW1lLCBhdCBhbiBvcHRpb25hbCBpbml0aWFsaXplciwgdGhlIGVuZCBvZiB0aGUgdGFnLCBvclxuICAgKiB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj5cbiAgICogICAgICAgICBeXG4gICAqID4gfCA8YSBiPWM+XG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2MSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lQWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSB1bnF1b3RlZCwgZG91YmxlIHF1b3RlZCwgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUsIGFsbG93aW5nXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPWM+XG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVCZWZvcmUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDYwIHx8XG4gICAgICBjb2RlID09PSA2MSB8fFxuICAgICAgY29kZSA9PT0gNjIgfHxcbiAgICAgIGNvZGUgPT09IDk2XG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSAzNCB8fCBjb2RlID09PSAzOSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXJCID0gY29kZVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCA8YSBiPSdjJz5cbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXJCKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlckIgPSBudWxsXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZEFmdGVyXG4gICAgfVxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSAzNCB8fFxuICAgICAgY29kZSA9PT0gMzkgfHxcbiAgICAgIGNvZGUgPT09IDQ3IHx8XG4gICAgICBjb2RlID09PSA2MCB8fFxuICAgICAgY29kZSA9PT0gNjEgfHxcbiAgICAgIGNvZGUgPT09IDYyIHx8XG4gICAgICBjb2RlID09PSA5NiB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBkb3VibGUgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUsIGJlZm9yZSB3aGl0ZXNwYWNlIG9yIHRoZVxuICAgKiBlbmQgb2YgdGhlIHRhZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZEFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDcgfHwgY29kZSA9PT0gNjIgfHwgbWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9mIGEgY29tcGxldGUgdGFnIHdoZXJlIG9ubHkgYW4gYD5gIGlzIGFsbG93ZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPVwiY1wiPlxuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUVuZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUFmdGVyXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPmAgaW4gYSBjb21wbGV0ZSB0YWcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eD5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiBvZiBhbnkgSFRNTCBraW5kLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCEtLXh4eC0tPlxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSAmJiBtYXJrZXIgPT09IDIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkNvbW1lbnRJbnNpZGVcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYwICYmIG1hcmtlciA9PT0gMSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3VGFnT3BlblxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjIgJiYgbWFya2VyID09PSA0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25DbG9zZVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjMgJiYgbWFya2VyID09PSAzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTMgJiYgbWFya2VyID09PSA1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25DZGF0YUluc2lkZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpICYmIChtYXJrZXIgPT09IDYgfHwgbWFya2VyID09PSA3KSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdodG1sRmxvd0RhdGEnKVxuICAgICAgcmV0dXJuIGVmZmVjdHMuY2hlY2soXG4gICAgICAgIGJsYW5rTGluZUJlZm9yZSxcbiAgICAgICAgY29udGludWF0aW9uQWZ0ZXIsXG4gICAgICAgIGNvbnRpbnVhdGlvblN0YXJ0XG4gICAgICApKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdodG1sRmxvd0RhdGEnKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb250aW51YXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24sIGF0IGVvbC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4PlxuICAgKiAgICAgICAgXlxuICAgKiAgIHwgYXNkXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25TdGFydChjb2RlKSB7XG4gICAgcmV0dXJuIGVmZmVjdHMuY2hlY2soXG4gICAgICBub25MYXp5Q29udGludWF0aW9uU3RhcnQsXG4gICAgICBjb250aW51YXRpb25TdGFydE5vbkxhenksXG4gICAgICBjb250aW51YXRpb25BZnRlclxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24sIGF0IGVvbCwgYmVmb3JlIG5vbi1sYXp5IGNvbnRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eD5cbiAgICogICAgICAgIF5cbiAgICogICB8IGFzZFxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uU3RhcnROb25MYXp5KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBjb250aW51YXRpb25CZWZvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24sIGJlZm9yZSBub24tbGF6eSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgPHg+XG4gICAqID4gfCBhc2RcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkJlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gY29udGludWF0aW9uU3RhcnQoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignaHRtbEZsb3dEYXRhJylcbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29tbWVudCBjb250aW51YXRpb24sIGFmdGVyIG9uZSBgLWAsIGV4cGVjdGluZyBhbm90aGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCEtLXh4eC0tPlxuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25Db21tZW50SW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgY29udGludWF0aW9uLCBhZnRlciBgPGAsIGF0IGAvYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxzY3JpcHQ+Y29uc29sZS5sb2coMSk8L3NjcmlwdD5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uUmF3VGFnT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJ1ZmZlciA9ICcnXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3RW5kVGFnXG4gICAgfVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgY29udGludWF0aW9uLCBhZnRlciBgPC9gLCBpbiBhIHJhdyB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxzY3JpcHQ+Y29uc29sZS5sb2coMSk8L3NjcmlwdD5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uUmF3RW5kVGFnKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBidWZmZXIudG9Mb3dlckNhc2UoKVxuICAgICAgaWYgKGh0bWxSYXdOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkNsb3NlXG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gICAgfVxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpICYmIGJ1ZmZlci5sZW5ndGggPCA4KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG5vdCBudWxsLlxuICAgICAgYnVmZmVyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25SYXdFbmRUYWdcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNkYXRhIGNvbnRpbnVhdGlvbiwgYWZ0ZXIgYF1gLCBleHBlY3RpbmcgYF0+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhW0NEQVRBWz4mPF1dPlxuICAgKiAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNkYXRhSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkZWNsYXJhdGlvbiBvciBpbnN0cnVjdGlvbiBjb250aW51YXRpb24sIGF0IGA+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS0+XG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgPD8+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhcT5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDwhLS1hYi0tPlxuICAgKiAgICAgICAgICAgICBeXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICB9XG5cbiAgICAvLyBNb3JlIGRhc2hlcy5cbiAgICBpZiAoY29kZSA9PT0gNDUgJiYgbWFya2VyID09PSAyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2xvc2VkIGNvbnRpbnVhdGlvbjogZXZlcnl0aGluZyB3ZSBnZXQgdW50aWwgdGhlIGVvbC9lb2YgaXMgcGFydCBvZiBpdC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhZG9jdHlwZT5cbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25DbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2h0bWxGbG93RGF0YScpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQWZ0ZXIoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbkNsb3NlXG4gIH1cblxuICAvKipcbiAgICogRG9uZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhZG9jdHlwZT5cbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25BZnRlcihjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KCdodG1sRmxvdycpXG4gICAgLy8gLy8gRmVlbCBmcmVlIHRvIGludGVycnVwdC5cbiAgICAvLyB0b2tlbml6ZXIuaW50ZXJydXB0ID0gZmFsc2VcbiAgICAvLyAvLyBObyBsb25nZXIgY29uY3JldGUuXG4gICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gZmFsc2VcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBBdCBlb2wsIGJlZm9yZSBjb250aW51YXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqIGBgYGpzXG4gICAqICAgICAgICAgICAgXlxuICAgKiAgIHwgYlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgcmV0dXJuIGFmdGVyXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ICogYGBganNcbiAgICogPiB8IGJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdID8gbm9rKGNvZGUpIDogb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsYW5rTGluZUJlZm9yZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBCZWZvcmUgZW9sLCBleHBlY3RpbmcgYmxhbmsgbGluZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxkaXY+XG4gICAqICAgICAgICAgIF5cbiAgICogICB8XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGJsYW5rTGluZSwgb2ssIG5vaylcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7XG4gIGFzY2lpQWxwaGEsXG4gIGFzY2lpQWxwaGFudW1lcmljLFxuICBtYXJrZG93bkxpbmVFbmRpbmcsXG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIG1hcmtkb3duU3BhY2Vcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaHRtbFRleHQgPSB7XG4gIG5hbWU6ICdodG1sVGV4dCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUh0bWxUZXh0XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplSHRtbFRleHQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICAvKiogQHR5cGUge05vbk51bGxhYmxlPENvZGU+IHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgbWFya2VyXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgaW5kZXhcbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgbGV0IHJldHVyblN0YXRlXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBIVE1MICh0ZXh0KS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGI+IGNcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2h0bWxUZXh0JylcbiAgICBlZmZlY3RzLmVudGVyKCdodG1sVGV4dERhdGEnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCB0YWcgbmFtZSBvciBvdGhlciBzdHVmZi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGI+IGNcbiAgICogICAgICAgIF5cbiAgICogPiB8IGEgPCFkb2N0eXBlPiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzMykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGVjbGFyYXRpb25PcGVuXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0Nykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnQ2xvc2VTdGFydFxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc3RydWN0aW9uXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsLlxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFgLCBhdCBkZWNsYXJhdGlvbiwgY29tbWVudCwgb3IgQ0RBVEEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhZG9jdHlwZT4gY1xuICAgKiAgICAgICAgIF5cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgIF5cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkZWNsYXJhdGlvbk9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudE9wZW5JbnNpZGVcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDkxKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGluZGV4ID0gMFxuICAgICAgcmV0dXJuIGNkYXRhT3Blbkluc2lkZVxuICAgIH1cbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGVjbGFyYXRpb25cbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGEgY29tbWVudCwgYWZ0ZXIgYDwhLWAsIGF0IGFub3RoZXIgYC1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbW1lbnRFbmRcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbW1lbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudENsb3NlXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gY29tbWVudFxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbW1lbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LCBhZnRlciBgLWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudENsb3NlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbW1lbnRFbmRcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1lbnQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LCBhZnRlciBgLS1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50RW5kKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gNjJcbiAgICAgID8gZW5kKGNvZGUpXG4gICAgICA6IGNvZGUgPT09IDQ1XG4gICAgICA/IGNvbW1lbnRDbG9zZShjb2RlKVxuICAgICAgOiBjb21tZW50KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhW2AsIGluIENEQVRBLCBleHBlY3RpbmcgYENEQVRBW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBiXG4gICAqICAgICAgICAgIF5eXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICdDREFUQVsnXG4gICAgaWYgKGNvZGUgPT09IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgrKykpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluZGV4ID09PSB2YWx1ZS5sZW5ndGggPyBjZGF0YSA6IGNkYXRhT3Blbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gQ0RBVEEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBiXG4gICAqICAgICAgICAgICAgICAgIF5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGEoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY2RhdGFDbG9zZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGNkYXRhXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY2RhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQSwgYWZ0ZXIgYF1gLCBhdCBhbm90aGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhQ2xvc2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY2RhdGFFbmRcbiAgICB9XG4gICAgcmV0dXJuIGNkYXRhKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gQ0RBVEEsIGFmdGVyIGBdXWAsIGF0IGA+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YUVuZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICByZXR1cm4gZW5kKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY2RhdGFFbmRcbiAgICB9XG4gICAgcmV0dXJuIGNkYXRhKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZGVjbGFyYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhYj4gY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkZWNsYXJhdGlvbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gNjIpIHtcbiAgICAgIHJldHVybiBlbmQoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSBkZWNsYXJhdGlvblxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGRlY2xhcmF0aW9uXG4gIH1cblxuICAvKipcbiAgICogSW4gaW5zdHJ1Y3Rpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDw/Yj8+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnN0cnVjdGlvbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnN0cnVjdGlvbkNsb3NlXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gaW5zdHJ1Y3Rpb25cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBpbnN0cnVjdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGluc3RydWN0aW9uLCBhZnRlciBgP2AsIGF0IGA+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPD9iPz4gY1xuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zdHJ1Y3Rpb25DbG9zZShjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPT09IDYyID8gZW5kKGNvZGUpIDogaW5zdHJ1Y3Rpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPC9gLCBpbiBjbG9zaW5nIHRhZywgYXQgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwvYj4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ0Nsb3NlU3RhcnQoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhYmV0aWNhbC5cbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnQ2xvc2VcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L3hgLCBpbiBhIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2UoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IDQ1IHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdDbG9zZVxuICAgIH1cbiAgICByZXR1cm4gdGFnQ2xvc2VCZXR3ZWVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2xvc2luZyB0YWcsIGFmdGVyIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2VCZXR3ZWVuKGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IHRhZ0Nsb3NlQmV0d2VlblxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlQmV0d2VlblxuICAgIH1cbiAgICByZXR1cm4gZW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDx4YCwgaW4gb3BlbmluZyB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGI+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLlxuICAgIGlmIChjb2RlID09PSA0NSB8fCBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlblxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDcgfHwgY29kZSA9PT0gNjIgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIHRhZywgYWZ0ZXIgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkJldHdlZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0Nykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW5kXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsIGFuZCBgOmAgYW5kIGBfYC5cbiAgICBpZiAoY29kZSA9PT0gNTggfHwgY29kZSA9PT0gOTUgfHwgYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZU5hbWVcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQmV0d2VlblxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuXG4gICAgfVxuICAgIHJldHVybiBlbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhdHRyaWJ1dGUgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz4gZFxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlTmFtZShjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsIGFuZCBgLWAsIGAuYCwgYDpgLCBhbmQgYF9gLlxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IDQ1IHx8XG4gICAgICBjb2RlID09PSA0NiB8fFxuICAgICAgY29kZSA9PT0gNTggfHxcbiAgICAgIGNvZGUgPT09IDk1IHx8XG4gICAgICBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZU5hbWVcbiAgICB9XG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBhdHRyaWJ1dGUgbmFtZSwgYmVmb3JlIGluaXRpYWxpemVyLCB0aGUgZW5kIG9mIHRoZSB0YWcsIG9yXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM+IGRcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2MSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnT3BlbkF0dHJpYnV0ZU5hbWVBZnRlclxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIHVucXVvdGVkLCBkb3VibGUgcXVvdGVkLCBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYWxsb3dpbmdcbiAgICogd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1kPiBlXG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSA2MCB8fFxuICAgICAgY29kZSA9PT0gNjEgfHxcbiAgICAgIGNvZGUgPT09IDYyIHx8XG4gICAgICBjb2RlID09PSA5NlxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gMzQgfHwgY29kZSA9PT0gMzkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gY29kZVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkb3VibGUgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZEFmdGVyXG4gICAgfVxuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogSW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPWQ+IGVcbiAgICogICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVVbnF1b3RlZChjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gMzQgfHxcbiAgICAgIGNvZGUgPT09IDM5IHx8XG4gICAgICBjb2RlID09PSA2MCB8fFxuICAgICAgY29kZSA9PT0gNjEgfHxcbiAgICAgIGNvZGUgPT09IDk2XG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0NyB8fCBjb2RlID09PSA2MiB8fCBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gdGFnT3BlbkJldHdlZW4oY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZG91YmxlIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLCBiZWZvcmUgd2hpdGVzcGFjZSBvciB0aGUgZW5kXG4gICAqIG9mIHRoZSB0YWcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ3IHx8IGNvZGUgPT09IDYyIHx8IG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiB0YWdPcGVuQmV0d2Vlbihjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9mIGEgdGFnIHdoZXJlIG9ubHkgYW4gYD5gIGlzIGFsbG93ZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2h0bWxUZXh0RGF0YScpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2h0bWxUZXh0JylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgZW9sLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogd2UgY2FuXHUyMDE5dCBoYXZlIGJsYW5rIGxpbmVzIGluIHRleHQsIHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXRcbiAgICogPiBlbXB0eSB0b2tlbnMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhLS1hXG4gICAqICAgICAgICAgICAgXlxuICAgKiAgIHwgYi0tPlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZUVuZGluZ0JlZm9yZShjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KCdodG1sVGV4dERhdGEnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGxpbmVFbmRpbmdBZnRlclxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGVvbCwgYXQgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHdlIGNhblx1MjAxOXQgaGF2ZSBibGFuayBsaW5lcyBpbiB0ZXh0LCBzbyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0XG4gICAqID4gZW1wdHkgdG9rZW5zLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYSA8IS0tYVxuICAgKiA+IHwgYi0tPlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZUVuZGluZ0FmdGVyKGNvZGUpIHtcbiAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKFxuICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgbGluZUVuZGluZ0FmdGVyUHJlZml4LFxuICAgICAgICAgICdsaW5lUHJlZml4JyxcbiAgICAgICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IDRcbiAgICAgICAgKShjb2RlKVxuICAgICAgOiBsaW5lRW5kaW5nQWZ0ZXJQcmVmaXgoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBlb2wsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB3ZSBjYW5cdTIwMTl0IGhhdmUgYmxhbmsgbGluZXMgaW4gdGV4dCwgc28gbm8gbmVlZCB0byB3b3JyeSBhYm91dFxuICAgKiA+IGVtcHR5IHRva2Vucy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGEgPCEtLWFcbiAgICogPiB8IGItLT5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxpbmVFbmRpbmdBZnRlclByZWZpeChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignaHRtbFRleHREYXRhJylcbiAgICByZXR1cm4gcmV0dXJuU3RhdGUoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlEZXN0aW5hdGlvbn0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktZGVzdGluYXRpb24nXG5pbXBvcnQge2ZhY3RvcnlMYWJlbH0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktbGFiZWwnXG5pbXBvcnQge2ZhY3RvcnlUaXRsZX0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktdGl0bGUnXG5pbXBvcnQge2ZhY3RvcnlXaGl0ZXNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS13aGl0ZXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7bm9ybWFsaXplSWRlbnRpZmllcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtbm9ybWFsaXplLWlkZW50aWZpZXInXG5pbXBvcnQge3Jlc29sdmVBbGx9IGZyb20gJ21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxFbmQgPSB7XG4gIG5hbWU6ICdsYWJlbEVuZCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsRW5kLFxuICByZXNvbHZlVG86IHJlc29sdmVUb0xhYmVsRW5kLFxuICByZXNvbHZlQWxsOiByZXNvbHZlQWxsTGFiZWxFbmRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZXNvdXJjZUNvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplUmVzb3VyY2Vcbn1cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgcmVmZXJlbmNlRnVsbENvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplUmVmZXJlbmNlRnVsbFxufVxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZWZlcmVuY2VDb2xsYXBzZWRDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZVJlZmVyZW5jZUNvbGxhcHNlZFxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFsbExhYmVsRW5kKGV2ZW50cykge1xuICBsZXQgaW5kZXggPSAtMVxuICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICBjb25zdCB0b2tlbiA9IGV2ZW50c1tpbmRleF1bMV1cbiAgICBpZiAoXG4gICAgICB0b2tlbi50eXBlID09PSAnbGFiZWxJbWFnZScgfHxcbiAgICAgIHRva2VuLnR5cGUgPT09ICdsYWJlbExpbmsnIHx8XG4gICAgICB0b2tlbi50eXBlID09PSAnbGFiZWxFbmQnXG4gICAgKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlIG1hcmtlci5cbiAgICAgIGV2ZW50cy5zcGxpY2UoaW5kZXggKyAxLCB0b2tlbi50eXBlID09PSAnbGFiZWxJbWFnZScgPyA0IDogMilcbiAgICAgIHRva2VuLnR5cGUgPSAnZGF0YSdcbiAgICAgIGluZGV4KytcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZVRvTGFiZWxFbmQoZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBpbmRleCA9IGV2ZW50cy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IDBcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHRva2VuXG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgb3BlblxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNsb3NlXG4gIC8qKiBAdHlwZSB7QXJyYXk8RXZlbnQ+fSAqL1xuICBsZXQgbWVkaWFcblxuICAvLyBGaW5kIGFuIG9wZW5pbmcuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdG9rZW4gPSBldmVudHNbaW5kZXhdWzFdXG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIC8vIElmIHdlIHNlZSBhbm90aGVyIGxpbmssIG9yIGluYWN0aXZlIGxpbmsgbGFiZWwsIHdlXHUyMDE5dmUgYmVlbiBoZXJlIGJlZm9yZS5cbiAgICAgIGlmIChcbiAgICAgICAgdG9rZW4udHlwZSA9PT0gJ2xpbmsnIHx8XG4gICAgICAgICh0b2tlbi50eXBlID09PSAnbGFiZWxMaW5rJyAmJiB0b2tlbi5faW5hY3RpdmUpXG4gICAgICApIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgLy8gTWFyayBvdGhlciBsaW5rIG9wZW5pbmdzIGFzIGluYWN0aXZlLCBhcyB3ZSBjYW5cdTIwMTl0IGhhdmUgbGlua3MgaW5cbiAgICAgIC8vIGxpbmtzLlxuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiYgdG9rZW4udHlwZSA9PT0gJ2xhYmVsTGluaycpIHtcbiAgICAgICAgdG9rZW4uX2luYWN0aXZlID0gdHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2xvc2UpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnRzW2luZGV4XVswXSA9PT0gJ2VudGVyJyAmJlxuICAgICAgICAodG9rZW4udHlwZSA9PT0gJ2xhYmVsSW1hZ2UnIHx8IHRva2VuLnR5cGUgPT09ICdsYWJlbExpbmsnKSAmJlxuICAgICAgICAhdG9rZW4uX2JhbGFuY2VkXG4gICAgICApIHtcbiAgICAgICAgb3BlbiA9IGluZGV4XG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSAnbGFiZWxMaW5rJykge1xuICAgICAgICAgIG9mZnNldCA9IDJcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b2tlbi50eXBlID09PSAnbGFiZWxFbmQnKSB7XG4gICAgICBjbG9zZSA9IGluZGV4XG4gICAgfVxuICB9XG4gIGNvbnN0IGdyb3VwID0ge1xuICAgIHR5cGU6IGV2ZW50c1tvcGVuXVsxXS50eXBlID09PSAnbGFiZWxMaW5rJyA/ICdsaW5rJyA6ICdpbWFnZScsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdWzFdLmVuZClcbiAgfVxuICBjb25zdCBsYWJlbCA9IHtcbiAgICB0eXBlOiAnbGFiZWwnLFxuICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uc3RhcnQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2Nsb3NlXVsxXS5lbmQpXG4gIH1cbiAgY29uc3QgdGV4dCA9IHtcbiAgICB0eXBlOiAnbGFiZWxUZXh0JyxcbiAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW4gKyBvZmZzZXQgKyAyXVsxXS5lbmQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2Nsb3NlIC0gMl1bMV0uc3RhcnQpXG4gIH1cbiAgbWVkaWEgPSBbXG4gICAgWydlbnRlcicsIGdyb3VwLCBjb250ZXh0XSxcbiAgICBbJ2VudGVyJywgbGFiZWwsIGNvbnRleHRdXG4gIF1cblxuICAvLyBPcGVuaW5nIG1hcmtlci5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBldmVudHMuc2xpY2Uob3BlbiArIDEsIG9wZW4gKyBvZmZzZXQgKyAzKSlcblxuICAvLyBUZXh0IG9wZW4uXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgW1snZW50ZXInLCB0ZXh0LCBjb250ZXh0XV0pXG5cbiAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAvLyBCZXR3ZWVuLlxuICBtZWRpYSA9IHB1c2goXG4gICAgbWVkaWEsXG4gICAgcmVzb2x2ZUFsbChcbiAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLFxuICAgICAgZXZlbnRzLnNsaWNlKG9wZW4gKyBvZmZzZXQgKyA0LCBjbG9zZSAtIDMpLFxuICAgICAgY29udGV4dFxuICAgIClcbiAgKVxuXG4gIC8vIFRleHQgY2xvc2UsIG1hcmtlciBjbG9zZSwgbGFiZWwgY2xvc2UuXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgW1xuICAgIFsnZXhpdCcsIHRleHQsIGNvbnRleHRdLFxuICAgIGV2ZW50c1tjbG9zZSAtIDJdLFxuICAgIGV2ZW50c1tjbG9zZSAtIDFdLFxuICAgIFsnZXhpdCcsIGxhYmVsLCBjb250ZXh0XVxuICBdKVxuXG4gIC8vIFJlZmVyZW5jZSwgcmVzb3VyY2UsIG9yIHNvLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIGV2ZW50cy5zbGljZShjbG9zZSArIDEpKVxuXG4gIC8vIE1lZGlhIGNsb3NlLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIFtbJ2V4aXQnLCBncm91cCwgY29udGV4dF1dKVxuICBzcGxpY2UoZXZlbnRzLCBvcGVuLCBldmVudHMubGVuZ3RoLCBtZWRpYSlcbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxhYmVsRW5kKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgbGV0IGluZGV4ID0gc2VsZi5ldmVudHMubGVuZ3RoXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBsYWJlbFN0YXJ0XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGRlZmluZWRcblxuICAvLyBGaW5kIGFuIG9wZW5pbmcuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgaWYgKFxuICAgICAgKHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnbGFiZWxJbWFnZScgfHxcbiAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdsYWJlbExpbmsnKSAmJlxuICAgICAgIXNlbGYuZXZlbnRzW2luZGV4XVsxXS5fYmFsYW5jZWRcbiAgICApIHtcbiAgICAgIGxhYmVsU3RhcnQgPSBzZWxmLmV2ZW50c1tpbmRleF1bMV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBsYWJlbCBlbmQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICBeXG4gICAqID4gfCBbYV1bYl0gY1xuICAgKiAgICAgICBeXG4gICAqID4gfCBbYV1bXSBiXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gSWYgdGhlcmUgaXMgbm90IGFuIG9rYXkgb3BlbmluZy5cbiAgICBpZiAoIWxhYmVsU3RhcnQpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29ycmVzcG9uZGluZyBsYWJlbCAobGluaykgc3RhcnQgaXMgbWFya2VkIGFzIGluYWN0aXZlLFxuICAgIC8vIGl0IG1lYW5zIHdlXHUyMDE5ZCBiZSB3cmFwcGluZyBhIGxpbmssIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vIGBgYG1hcmtkb3duXG4gICAgLy8gPiB8IGEgW2IgW2NdKGQpIGVdKGYpIGcuXG4gICAgLy8gICAgICAgICAgICAgICAgICBeXG4gICAgLy8gYGBgXG4gICAgLy9cbiAgICAvLyBXZSBjYW5cdTIwMTl0IGhhdmUgdGhhdCwgc28gaXRcdTIwMTlzIGp1c3QgYmFsYW5jZWQgYnJhY2tldHMuXG4gICAgaWYgKGxhYmVsU3RhcnQuX2luYWN0aXZlKSB7XG4gICAgICByZXR1cm4gbGFiZWxFbmROb2soY29kZSlcbiAgICB9XG4gICAgZGVmaW5lZCA9IHNlbGYucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoXG4gICAgICBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHtcbiAgICAgICAgICBzdGFydDogbGFiZWxTdGFydC5lbmQsXG4gICAgICAgICAgZW5kOiBzZWxmLm5vdygpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsRW5kJylcbiAgICBlZmZlY3RzLmVudGVyKCdsYWJlbE1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsYWJlbE1hcmtlcicpXG4gICAgZWZmZWN0cy5leGl0KCdsYWJlbEVuZCcpXG4gICAgcmV0dXJuIGFmdGVyXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYF1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdW2JdIGNcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdW10gYlxuICAgKiAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gTm90ZTogYG1hcmtkb3duLXJzYCBhbHNvIHBhcnNlcyBHRk0gZm9vdG5vdGVzIGhlcmUsIHdoaWNoIGZvciB1cyBpcyBpblxuICAgIC8vIGFuIGV4dGVuc2lvbi5cblxuICAgIC8vIFJlc291cmNlIChgW2FzZF0oZmdoKWApP1xuICAgIGlmIChjb2RlID09PSA0MCkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3QsXG4gICAgICAgIGxhYmVsRW5kT2ssXG4gICAgICAgIGRlZmluZWQgPyBsYWJlbEVuZE9rIDogbGFiZWxFbmROb2tcbiAgICAgICkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBGdWxsIChgW2FzZF1bZmdoXWApIG9yIGNvbGxhcHNlZCAoYFthc2RdW11gKSByZWZlcmVuY2U/XG4gICAgaWYgKGNvZGUgPT09IDkxKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICByZWZlcmVuY2VGdWxsQ29uc3RydWN0LFxuICAgICAgICBsYWJlbEVuZE9rLFxuICAgICAgICBkZWZpbmVkID8gcmVmZXJlbmNlTm90RnVsbCA6IGxhYmVsRW5kTm9rXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gU2hvcnRjdXQgKGBbYXNkXWApIHJlZmVyZW5jZT9cbiAgICByZXR1cm4gZGVmaW5lZCA/IGxhYmVsRW5kT2soY29kZSkgOiBsYWJlbEVuZE5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBdYCwgYXQgYFtgLCBidXQgbm90IGF0IGEgZnVsbCByZWZlcmVuY2UuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB3ZSBvbmx5IGdldCBoZXJlIGlmIHRoZSBsYWJlbCBpcyBkZWZpbmVkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW10gYlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZU5vdEZ1bGwoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICByZWZlcmVuY2VDb2xsYXBzZWRDb25zdHJ1Y3QsXG4gICAgICBsYWJlbEVuZE9rLFxuICAgICAgbGFiZWxFbmROb2tcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogRG9uZSwgd2UgZm91bmQgc29tZXRoaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV1bXSBiXG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEVuZE9rKGNvZGUpIHtcbiAgICAvLyBOb3RlOiBgbWFya2Rvd24tcnNgIGRvZXMgYSBidW5jaCBvZiBzdHVmZiBoZXJlLlxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIERvbmUsIGl0XHUyMDE5cyBub3RoaW5nLlxuICAgKlxuICAgKiBUaGVyZSB3YXMgYW4gb2theSBvcGVuaW5nLCBidXQgd2UgZGlkblx1MjAxOXQgbWF0Y2ggYW55dGhpbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV1bYiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFbmROb2soY29kZSkge1xuICAgIGxhYmVsU3RhcnQuX2JhbGFuY2VkID0gdHJ1ZVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVJlc291cmNlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHJlc291cmNlU3RhcnRcblxuICAvKipcbiAgICogQXQgYSByZXNvdXJjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZVN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdyZXNvdXJjZScpXG4gICAgZWZmZWN0cy5lbnRlcigncmVzb3VyY2VNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgncmVzb3VyY2VNYXJrZXInKVxuICAgIHJldHVybiByZXNvdXJjZUJlZm9yZVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlc291cmNlLCBhZnRlciBgKGAsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlQmVmb3JlKGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCByZXNvdXJjZU9wZW4pKGNvZGUpXG4gICAgICA6IHJlc291cmNlT3Blbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlc291cmNlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBgKWAgb3IgYSBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VPcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDEpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZUVuZChjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gZmFjdG9yeURlc3RpbmF0aW9uKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIHJlc291cmNlRGVzdGluYXRpb25BZnRlcixcbiAgICAgIHJlc291cmNlRGVzdGluYXRpb25NaXNzaW5nLFxuICAgICAgJ3Jlc291cmNlRGVzdGluYXRpb24nLFxuICAgICAgJ3Jlc291cmNlRGVzdGluYXRpb25MaXRlcmFsJyxcbiAgICAgICdyZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcicsXG4gICAgICAncmVzb3VyY2VEZXN0aW5hdGlvblJhdycsXG4gICAgICAncmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZycsXG4gICAgICAzMlxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgZGVzdGluYXRpb24sIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZURlc3RpbmF0aW9uQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIHJlc291cmNlQmV0d2VlbikoY29kZSlcbiAgICAgIDogcmVzb3VyY2VFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBpbnZhbGlkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKDw8KSBiXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VEZXN0aW5hdGlvbk1pc3NpbmcoY29kZSkge1xuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgZGVzdGluYXRpb24gYW5kIHdoaXRlc3BhY2UsIGF0IGAoYCBvciB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiICkgY1xuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VCZXR3ZWVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzQgfHwgY29kZSA9PT0gMzkgfHwgY29kZSA9PT0gNDApIHtcbiAgICAgIHJldHVybiBmYWN0b3J5VGl0bGUoXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgIHJlc291cmNlVGl0bGVBZnRlcixcbiAgICAgICAgbm9rLFxuICAgICAgICAncmVzb3VyY2VUaXRsZScsXG4gICAgICAgICdyZXNvdXJjZVRpdGxlTWFya2VyJyxcbiAgICAgICAgJ3Jlc291cmNlVGl0bGVTdHJpbmcnXG4gICAgICApKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZUVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlc291cmNlLCBhZnRlciB0aXRsZSwgYXQgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiIFwiY1wiKSBkXG4gICAqICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZVRpdGxlQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIHJlc291cmNlRW5kKShjb2RlKVxuICAgICAgOiByZXNvdXJjZUVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlc291cmNlLCBhdCBgKWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgZFxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZUVuZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQxKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdyZXNvdXJjZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgncmVzb3VyY2VNYXJrZXInKVxuICAgICAgZWZmZWN0cy5leGl0KCdyZXNvdXJjZScpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplUmVmZXJlbmNlRnVsbChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiByZWZlcmVuY2VGdWxsXG5cbiAgLyoqXG4gICAqIEluIGEgcmVmZXJlbmNlIChmdWxsKSwgYXQgdGhlIGBbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiXSBkXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZWZlcmVuY2VGdWxsKGNvZGUpIHtcbiAgICByZXR1cm4gZmFjdG9yeUxhYmVsLmNhbGwoXG4gICAgICBzZWxmLFxuICAgICAgZWZmZWN0cyxcbiAgICAgIHJlZmVyZW5jZUZ1bGxBZnRlcixcbiAgICAgIHJlZmVyZW5jZUZ1bGxNaXNzaW5nLFxuICAgICAgJ3JlZmVyZW5jZScsXG4gICAgICAncmVmZXJlbmNlTWFya2VyJyxcbiAgICAgICdyZWZlcmVuY2VTdHJpbmcnXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGEgcmVmZXJlbmNlIChmdWxsKSwgYWZ0ZXIgYF1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW2JdIGRcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVmZXJlbmNlRnVsbEFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcyhcbiAgICAgIG5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1bMV0pLnNsaWNlKDEsIC0xKVxuICAgICAgKVxuICAgIClcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVmZXJlbmNlIChmdWxsKSB0aGF0IHdhcyBtaXNzaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW2IgZFxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVmZXJlbmNlRnVsbE1pc3NpbmcoY29kZSkge1xuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVJlZmVyZW5jZUNvbGxhcHNlZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiByZWZlcmVuY2VDb2xsYXBzZWRTdGFydFxuXG4gIC8qKlxuICAgKiBJbiByZWZlcmVuY2UgKGNvbGxhcHNlZCksIGF0IGBbYC5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlIGxhYmVsIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bXSBkXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZWZlcmVuY2VDb2xsYXBzZWRTdGFydChjb2RlKSB7XG4gICAgLy8gV2Ugb25seSBhdHRlbXB0IGEgY29sbGFwc2VkIGxhYmVsIGlmIHRoZXJlXHUyMDE5cyBhIGBbYC5cblxuICAgIGVmZmVjdHMuZW50ZXIoJ3JlZmVyZW5jZScpXG4gICAgZWZmZWN0cy5lbnRlcigncmVmZXJlbmNlTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ3JlZmVyZW5jZU1hcmtlcicpXG4gICAgcmV0dXJuIHJlZmVyZW5jZUNvbGxhcHNlZE9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZWZlcmVuY2UgKGNvbGxhcHNlZCksIGF0IGBdYC5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlIGxhYmVsIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bXSBkXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUNvbGxhcHNlZE9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5lbnRlcigncmVmZXJlbmNlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdyZWZlcmVuY2VNYXJrZXInKVxuICAgICAgZWZmZWN0cy5leGl0KCdyZWZlcmVuY2UnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2xhYmVsRW5kfSBmcm9tICcuL2xhYmVsLWVuZC5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxTdGFydEltYWdlID0ge1xuICBuYW1lOiAnbGFiZWxTdGFydEltYWdlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplTGFiZWxTdGFydEltYWdlLFxuICByZXNvbHZlQWxsOiBsYWJlbEVuZC5yZXNvbHZlQWxsXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGFiZWxTdGFydEltYWdlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIChpbWFnZSkgc3RhcnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhICFbYl0gY1xuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGFiZWxJbWFnZScpXG4gICAgZWZmZWN0cy5lbnRlcignbGFiZWxJbWFnZU1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsYWJlbEltYWdlTWFya2VyJylcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAhYCwgYXQgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSAhW2JdIGNcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA5MSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGFiZWxNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsTWFya2VyJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxJbWFnZScpXG4gICAgICByZXR1cm4gYWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAhW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhICFbYl0gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIFRoaXMgaXMgbmVlZGVkIGluIGJlY2F1c2UsIHdoZW4gR0ZNIGZvb3Rub3RlcyBhcmUgZW5hYmxlZCwgaW1hZ2VzIG5ldmVyXG4gICAqIGZvcm0gd2hlbiBzdGFydGVkIHdpdGggYSBgXmAuXG4gICAqIEluc3RlYWQsIGxpbmtzIGZvcm06XG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICFbXmFdKGIpXG4gICAqXG4gICAqICFbXmFdW2JdXG4gICAqXG4gICAqIFtiXTogY1xuICAgKiBgYGBcbiAgICpcbiAgICogYGBgaHRtbFxuICAgKiA8cD4hPGEgaHJlZj1cXFwiYlxcXCI+XmE8L2E+PC9wPlxuICAgKiA8cD4hPGEgaHJlZj1cXFwiY1xcXCI+XmE8L2E+PC9wPlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIC8vIFRvIGRvOiB1c2UgYSBuZXcgZmllbGQgdG8gZG8gdGhpcywgdGhpcyBpcyBzdGlsbCBuZWVkZWQgZm9yXG4gICAgLy8gYG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLWZvb3Rub3RlYCwgYnV0IHRoZSBgbGFiZWwtc3RhcnQtbGlua2BcbiAgICAvLyBiZWhhdmlvciBpc25cdTIwMTl0LlxuICAgIC8vIEhpZGRlbiBmb290bm90ZXMgaG9vay5cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgcmV0dXJuIGNvZGUgPT09IDk0ICYmICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzXG4gICAgICA/IG5vayhjb2RlKVxuICAgICAgOiBvayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7bGFiZWxFbmR9IGZyb20gJy4vbGFiZWwtZW5kLmpzJ1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBsYWJlbFN0YXJ0TGluayA9IHtcbiAgbmFtZTogJ2xhYmVsU3RhcnRMaW5rJyxcbiAgdG9rZW5pemU6IHRva2VuaXplTGFiZWxTdGFydExpbmssXG4gIHJlc29sdmVBbGw6IGxhYmVsRW5kLnJlc29sdmVBbGxcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMYWJlbFN0YXJ0TGluayhlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBsYWJlbCAobGluaykgc3RhcnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIFtiXSBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsYWJlbExpbmsnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsTWFya2VyJylcbiAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsTGluaycpXG4gICAgcmV0dXJuIGFmdGVyXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gVG8gZG86IHRoaXMgaXNuXHUyMDE5dCBuZWVkZWQgaW4gYG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLWZvb3Rub3RlYCxcbiAgICAvLyByZW1vdmUuXG4gICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICByZXR1cm4gY29kZSA9PT0gOTQgJiYgJ19oaWRkZW5Gb290bm90ZVN1cHBvcnQnIGluIHNlbGYucGFyc2VyLmNvbnN0cnVjdHNcbiAgICAgID8gbm9rKGNvZGUpXG4gICAgICA6IG9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxpbmVFbmRpbmcgPSB7XG4gIG5hbWU6ICdsaW5lRW5kaW5nJyxcbiAgdG9rZW5pemU6IHRva2VuaXplTGluZUVuZGluZ1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpbmVFbmRpbmcoZWZmZWN0cywgb2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBvaywgJ2xpbmVQcmVmaXgnKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IHRoZW1hdGljQnJlYWsgPSB7XG4gIG5hbWU6ICd0aGVtYXRpY0JyZWFrJyxcbiAgdG9rZW5pemU6IHRva2VuaXplVGhlbWF0aWNCcmVha1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVRoZW1hdGljQnJlYWsoZWZmZWN0cywgb2ssIG5vaykge1xuICBsZXQgc2l6ZSA9IDBcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgdGhlbWF0aWMgYnJlYWsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCd0aGVtYXRpY0JyZWFrJylcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKioqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIG1hcmtlciA9IGNvZGVcbiAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHNvbWV0aGluZywgYmVmb3JlIHNvbWV0aGluZyBlbHNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKioqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCd0aGVtYXRpY0JyZWFrU2VxdWVuY2UnKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlKGNvZGUpXG4gICAgfVxuICAgIGlmIChzaXplID49IDMgJiYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCd0aGVtYXRpY0JyZWFrJylcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUrK1xuICAgICAgcmV0dXJuIHNlcXVlbmNlXG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCgndGhlbWF0aWNCcmVha1NlcXVlbmNlJylcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYXRCcmVhaywgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgICAgOiBhdEJyZWFrKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db250YWluZXJTdGF0ZX0gQ29udGFpbmVyU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXhpdGVyfSBFeGl0ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHthc2NpaURpZ2l0LCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2JsYW5rTGluZX0gZnJvbSAnLi9ibGFuay1saW5lLmpzJ1xuaW1wb3J0IHt0aGVtYXRpY0JyZWFrfSBmcm9tICcuL3RoZW1hdGljLWJyZWFrLmpzJ1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBsaXN0ID0ge1xuICBuYW1lOiAnbGlzdCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxpc3RTdGFydCxcbiAgY29udGludWF0aW9uOiB7XG4gICAgdG9rZW5pemU6IHRva2VuaXplTGlzdENvbnRpbnVhdGlvblxuICB9LFxuICBleGl0OiB0b2tlbml6ZUxpc3RFbmRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2VDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGluZGVudENvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplSW5kZW50LFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8vIFRvIGRvOiBgbWFya2Rvd24tcnNgIHBhcnNlcyBsaXN0IGl0ZW1zIG9uIHRoZWlyIG93biBhbmQgbGF0ZXIgc3RpdGNoZXMgdGhlbVxuLy8gdG9nZXRoZXIuXG5cbi8qKlxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGlzdFN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gIGxldCBpbml0aWFsU2l6ZSA9XG4gICAgdGFpbCAmJiB0YWlsWzFdLnR5cGUgPT09ICdsaW5lUHJlZml4J1xuICAgICAgPyB0YWlsWzJdLnNsaWNlU2VyaWFsaXplKHRhaWxbMV0sIHRydWUpLmxlbmd0aFxuICAgICAgOiAwXG4gIGxldCBzaXplID0gMFxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgY29uc3Qga2luZCA9XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnR5cGUgfHxcbiAgICAgIChjb2RlID09PSA0MiB8fCBjb2RlID09PSA0MyB8fCBjb2RlID09PSA0NVxuICAgICAgICA/ICdsaXN0VW5vcmRlcmVkJ1xuICAgICAgICA6ICdsaXN0T3JkZXJlZCcpXG4gICAgaWYgKFxuICAgICAga2luZCA9PT0gJ2xpc3RVbm9yZGVyZWQnXG4gICAgICAgID8gIXNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyIHx8IGNvZGUgPT09IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyXG4gICAgICAgIDogYXNjaWlEaWdpdChjb2RlKVxuICAgICkge1xuICAgICAgaWYgKCFzZWxmLmNvbnRhaW5lclN0YXRlLnR5cGUpIHtcbiAgICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS50eXBlID0ga2luZFxuICAgICAgICBlZmZlY3RzLmVudGVyKGtpbmQsIHtcbiAgICAgICAgICBfY29udGFpbmVyOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZiAoa2luZCA9PT0gJ2xpc3RVbm9yZGVyZWQnKSB7XG4gICAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpc3RJdGVtUHJlZml4JylcbiAgICAgICAgcmV0dXJuIGNvZGUgPT09IDQyIHx8IGNvZGUgPT09IDQ1XG4gICAgICAgICAgPyBlZmZlY3RzLmNoZWNrKHRoZW1hdGljQnJlYWssIG5vaywgYXRNYXJrZXIpKGNvZGUpXG4gICAgICAgICAgOiBhdE1hcmtlcihjb2RlKVxuICAgICAgfVxuICAgICAgaWYgKCFzZWxmLmludGVycnVwdCB8fCBjb2RlID09PSA0OSkge1xuICAgICAgICBlZmZlY3RzLmVudGVyKCdsaXN0SXRlbVByZWZpeCcpXG4gICAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpc3RJdGVtVmFsdWUnKVxuICAgICAgICByZXR1cm4gaW5zaWRlKGNvZGUpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGluc2lkZShjb2RlKSB7XG4gICAgaWYgKGFzY2lpRGlnaXQoY29kZSkgJiYgKytzaXplIDwgMTApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIXNlbGYuaW50ZXJydXB0IHx8IHNpemUgPCAyKSAmJlxuICAgICAgKHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyXG4gICAgICAgID8gY29kZSA9PT0gc2VsZi5jb250YWluZXJTdGF0ZS5tYXJrZXJcbiAgICAgICAgOiBjb2RlID09PSA0MSB8fCBjb2RlID09PSA0NilcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGlzdEl0ZW1WYWx1ZScpXG4gICAgICByZXR1cm4gYXRNYXJrZXIoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICoqL1xuICBmdW5jdGlvbiBhdE1hcmtlcihjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGlzdEl0ZW1NYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGlzdEl0ZW1NYXJrZXInKVxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyID0gc2VsZi5jb250YWluZXJTdGF0ZS5tYXJrZXIgfHwgY29kZVxuICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgYmxhbmtMaW5lLFxuICAgICAgLy8gQ2FuXHUyMDE5dCBiZSBlbXB0eSB3aGVuIGludGVycnVwdGluZy5cbiAgICAgIHNlbGYuaW50ZXJydXB0ID8gbm9rIDogb25CbGFuayxcbiAgICAgIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgICAgbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlQ29uc3RydWN0LFxuICAgICAgICBlbmRPZlByZWZpeCxcbiAgICAgICAgb3RoZXJQcmVmaXhcbiAgICAgIClcbiAgICApXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBvbkJsYW5rKGNvZGUpIHtcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUgPSB0cnVlXG4gICAgaW5pdGlhbFNpemUrK1xuICAgIHJldHVybiBlbmRPZlByZWZpeChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gb3RoZXJQcmVmaXgoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpc3RJdGVtUHJlZml4V2hpdGVzcGFjZScpXG4gICAgICByZXR1cm4gZW5kT2ZQcmVmaXhcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZW5kT2ZQcmVmaXgoY29kZSkge1xuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuc2l6ZSA9XG4gICAgICBpbml0aWFsU2l6ZSArXG4gICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKGVmZmVjdHMuZXhpdCgnbGlzdEl0ZW1QcmVmaXgnKSwgdHJ1ZSkubGVuZ3RoXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0Q29udGludWF0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG4gIHJldHVybiBlZmZlY3RzLmNoZWNrKGJsYW5rTGluZSwgb25CbGFuaywgbm90QmxhbmspXG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gb25CbGFuayhjb2RlKSB7XG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyA9XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzIHx8XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmVcblxuICAgIC8vIFdlIGhhdmUgYSBibGFuayBsaW5lLlxuICAgIC8vIFN0aWxsLCB0cnkgdG8gY29uc3VtZSBhdCBtb3N0IHRoZSBpdGVtcyBzaXplLlxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgICBlZmZlY3RzLFxuICAgICAgb2ssXG4gICAgICAnbGlzdEl0ZW1JbmRlbnQnLFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplICsgMVxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG5vdEJsYW5rKGNvZGUpIHtcbiAgICBpZiAoc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyB8fCAhbWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyA9IHVuZGVmaW5lZFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gbm90SW5DdXJyZW50SXRlbShjb2RlKVxuICAgIH1cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzID0gdW5kZWZpbmVkXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChpbmRlbnRDb25zdHJ1Y3QsIG9rLCBub3RJbkN1cnJlbnRJdGVtKShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gbm90SW5DdXJyZW50SXRlbShjb2RlKSB7XG4gICAgLy8gV2hpbGUgd2UgZG8gY29udGludWUsIHdlIHNpZ25hbCB0aGF0IHRoZSBmbG93IHNob3VsZCBiZSBjbG9zZWQuXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdHJ1ZVxuICAgIC8vIEFzIHdlXHUyMDE5cmUgY2xvc2luZyBmbG93LCB3ZVx1MjAxOXJlIG5vIGxvbmdlciBpbnRlcnJ1cHRpbmcuXG4gICAgc2VsZi5pbnRlcnJ1cHQgPSB1bmRlZmluZWRcbiAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICBlZmZlY3RzLmF0dGVtcHQobGlzdCwgb2ssIG5vayksXG4gICAgICAnbGluZVByZWZpeCcsXG4gICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiA0XG4gICAgKShjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplSW5kZW50KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICBlZmZlY3RzLFxuICAgIGFmdGVyUHJlZml4LFxuICAgICdsaXN0SXRlbUluZGVudCcsXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplICsgMVxuICApXG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYWZ0ZXJQcmVmaXgoY29kZSkge1xuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB0YWlsICYmXG4gICAgICB0YWlsWzFdLnR5cGUgPT09ICdsaXN0SXRlbUluZGVudCcgJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemVcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7RXhpdGVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0RW5kKGVmZmVjdHMpIHtcbiAgZWZmZWN0cy5leGl0KHRoaXMuY29udGFpbmVyU3RhdGUudHlwZSlcbn1cblxuLyoqXG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuXG4gIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICBlZmZlY3RzLFxuICAgIGFmdGVyUHJlZml4LFxuICAgICdsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UnLFxuICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogNCArIDFcbiAgKVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgICByZXR1cm4gIW1hcmtkb3duU3BhY2UoY29kZSkgJiZcbiAgICAgIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gJ2xpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSdcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IHNldGV4dFVuZGVybGluZSA9IHtcbiAgbmFtZTogJ3NldGV4dFVuZGVybGluZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZVNldGV4dFVuZGVybGluZSxcbiAgcmVzb2x2ZVRvOiByZXNvbHZlVG9TZXRleHRVbmRlcmxpbmVcbn1cblxuLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbmZ1bmN0aW9uIHJlc29sdmVUb1NldGV4dFVuZGVybGluZShldmVudHMsIGNvbnRleHQpIHtcbiAgLy8gVG8gZG86IHJlc29sdmUgbGlrZSBgbWFya2Rvd24tcnNgLlxuICBsZXQgaW5kZXggPSBldmVudHMubGVuZ3RoXG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY29udGVudFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHRleHRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBkZWZpbml0aW9uXG5cbiAgLy8gRmluZCB0aGUgb3BlbmluZyBvZiB0aGUgY29udGVudC5cbiAgLy8gSXRcdTIwMTlsbCBhbHdheXMgZXhpc3Q6IHdlIGRvblx1MjAxOXQgdG9rZW5pemUgaWYgaXQgaXNuXHUyMDE5dCB0aGVyZS5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICBpZiAoZXZlbnRzW2luZGV4XVswXSA9PT0gJ2VudGVyJykge1xuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgIGNvbnRlbnQgPSBpbmRleFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAgICAgdGV4dCA9IGluZGV4XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXRcbiAgICBlbHNlIHtcbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbnRlbnQgZW5kIChpZiBuZWVkZWQgd2VcdTIwMTlsbCBhZGQgaXQgbGF0ZXIpXG4gICAgICAgIGV2ZW50cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICB9XG4gICAgICBpZiAoIWRlZmluaXRpb24gJiYgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnZGVmaW5pdGlvbicpIHtcbiAgICAgICAgZGVmaW5pdGlvbiA9IGluZGV4XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IGhlYWRpbmcgPSB7XG4gICAgdHlwZTogJ3NldGV4dEhlYWRpbmcnLFxuICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbdGV4dF1bMV0uc3RhcnQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAxXVsxXS5lbmQpXG4gIH1cblxuICAvLyBDaGFuZ2UgdGhlIHBhcmFncmFwaCB0byBzZXRleHQgaGVhZGluZyB0ZXh0LlxuICBldmVudHNbdGV4dF1bMV0udHlwZSA9ICdzZXRleHRIZWFkaW5nVGV4dCdcblxuICAvLyBJZiB3ZSBoYXZlIGRlZmluaXRpb25zIGluIHRoZSBjb250ZW50LCB3ZVx1MjAxOWxsIGtlZXAgb24gaGF2aW5nIGNvbnRlbnQsXG4gIC8vIGJ1dCB3ZSBuZWVkIG1vdmUgaXQuXG4gIGlmIChkZWZpbml0aW9uKSB7XG4gICAgZXZlbnRzLnNwbGljZSh0ZXh0LCAwLCBbJ2VudGVyJywgaGVhZGluZywgY29udGV4dF0pXG4gICAgZXZlbnRzLnNwbGljZShkZWZpbml0aW9uICsgMSwgMCwgWydleGl0JywgZXZlbnRzW2NvbnRlbnRdWzFdLCBjb250ZXh0XSlcbiAgICBldmVudHNbY29udGVudF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2RlZmluaXRpb25dWzFdLmVuZClcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbY29udGVudF1bMV0gPSBoZWFkaW5nXG4gIH1cblxuICAvLyBBZGQgdGhlIGhlYWRpbmcgZXhpdCBhdCB0aGUgZW5kLlxuICBldmVudHMucHVzaChbJ2V4aXQnLCBoZWFkaW5nLCBjb250ZXh0XSlcbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVNldGV4dFVuZGVybGluZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT59ICovXG4gIGxldCBtYXJrZXJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IHN0YXJ0IG9mIGhlYWRpbmcgKHNldGV4dCkgdW5kZXJsaW5lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgbGV0IGluZGV4ID0gc2VsZi5ldmVudHMubGVuZ3RoXG4gICAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBwYXJhZ3JhcGhcbiAgICAvLyBGaW5kIGFuIG9wZW5pbmcuXG4gICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgIC8vIFNraXAgZW50ZXIvZXhpdCBvZiBsaW5lIGVuZGluZywgbGluZSBwcmVmaXgsIGFuZCBjb250ZW50LlxuICAgICAgLy8gV2UgY2FuIG5vdyBlaXRoZXIgaGF2ZSBhIGRlZmluaXRpb24gb3IgYSBwYXJhZ3JhcGguXG4gICAgICBpZiAoXG4gICAgICAgIHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSAnbGluZUVuZGluZycgJiZcbiAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhdWzFdLnR5cGUgIT09ICdsaW5lUHJlZml4JyAmJlxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gJ2NvbnRlbnQnXG4gICAgICApIHtcbiAgICAgICAgcGFyYWdyYXBoID0gc2VsZi5ldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdwYXJhZ3JhcGgnXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVG8gZG86IGhhbmRsZSBsYXp5L3BpZXJjZSBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgLy8gVG8gZG86IHBhcnNlIGluZGVudCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgaWYgKCFzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0gJiYgKHNlbGYuaW50ZXJydXB0IHx8IHBhcmFncmFwaCkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ3NldGV4dEhlYWRpbmdMaW5lJylcbiAgICAgIG1hcmtlciA9IGNvZGVcbiAgICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IGAtYCBvciBgPWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhYVxuICAgKiA+IHwgPT1cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignc2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZScpXG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQoJ3NldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UnKVxuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlciwgJ2xpbmVTdWZmaXgnKShjb2RlKVxuICAgICAgOiBhZnRlcihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHNlcXVlbmNlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnc2V0ZXh0SGVhZGluZ0xpbmUnKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxpemVyfSBJbml0aWFsaXplclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2JsYW5rTGluZSwgY29udGVudH0gZnJvbSAnbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyaydcbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0luaXRpYWxDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgZmxvdyA9IHtcbiAgdG9rZW5pemU6IGluaXRpYWxpemVGbG93XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtJbml0aWFsaXplcn1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUZsb3coZWZmZWN0cykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBjb25zdCBpbml0aWFsID0gZWZmZWN0cy5hdHRlbXB0KFxuICAgIC8vIFRyeSB0byBwYXJzZSBhIGJsYW5rIGxpbmUuXG4gICAgYmxhbmtMaW5lLFxuICAgIGF0QmxhbmtFbmRpbmcsXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGluaXRpYWwgZmxvdyAoZXNzZW50aWFsbHksIG9ubHkgY29kZSkuXG4gICAgZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5mbG93SW5pdGlhbCxcbiAgICAgIGFmdGVyQ29uc3RydWN0LFxuICAgICAgZmFjdG9yeVNwYWNlKFxuICAgICAgICBlZmZlY3RzLFxuICAgICAgICBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5mbG93LFxuICAgICAgICAgIGFmdGVyQ29uc3RydWN0LFxuICAgICAgICAgIGVmZmVjdHMuYXR0ZW1wdChjb250ZW50LCBhZnRlckNvbnN0cnVjdClcbiAgICAgICAgKSxcbiAgICAgICAgJ2xpbmVQcmVmaXgnXG4gICAgICApXG4gICAgKVxuICApXG4gIHJldHVybiBpbml0aWFsXG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYXRCbGFua0VuZGluZyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmdCbGFuaycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nQmxhbmsnKVxuICAgIHNlbGYuY3VycmVudENvbnN0cnVjdCA9IHVuZGVmaW5lZFxuICAgIHJldHVybiBpbml0aWFsXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlckNvbnN0cnVjdChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgc2VsZi5jdXJyZW50Q29uc3RydWN0ID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGluaXRpYWxcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZXIgPSB7XG4gIHJlc29sdmVBbGw6IGNyZWF0ZVJlc29sdmVyKClcbn1cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSBpbml0aWFsaXplRmFjdG9yeSgnc3RyaW5nJylcbmV4cG9ydCBjb25zdCB0ZXh0ID0gaW5pdGlhbGl6ZUZhY3RvcnkoJ3RleHQnKVxuXG4vKipcbiAqIEBwYXJhbSB7J3N0cmluZycgfCAndGV4dCd9IGZpZWxkXG4gKiBAcmV0dXJucyB7SW5pdGlhbENvbnN0cnVjdH1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUZhY3RvcnkoZmllbGQpIHtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbml6ZTogaW5pdGlhbGl6ZVRleHQsXG4gICAgcmVzb2x2ZUFsbDogY3JlYXRlUmVzb2x2ZXIoXG4gICAgICBmaWVsZCA9PT0gJ3RleHQnID8gcmVzb2x2ZUFsbExpbmVTdWZmaXhlcyA6IHVuZGVmaW5lZFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICAgKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBpbml0aWFsaXplVGV4dChlZmZlY3RzKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgICBjb25zdCBjb25zdHJ1Y3RzID0gdGhpcy5wYXJzZXIuY29uc3RydWN0c1tmaWVsZF1cbiAgICBjb25zdCB0ZXh0ID0gZWZmZWN0cy5hdHRlbXB0KGNvbnN0cnVjdHMsIHN0YXJ0LCBub3RUZXh0KVxuICAgIHJldHVybiBzdGFydFxuXG4gICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKSA/IHRleHQoY29kZSkgOiBub3RUZXh0KGNvZGUpXG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICBmdW5jdGlvbiBub3RUZXh0KGNvZGUpIHtcbiAgICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2RhdGEnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGF0YVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgZnVuY3Rpb24gZGF0YShjb2RlKSB7XG4gICAgICBpZiAoYXRCcmVhayhjb2RlKSkge1xuICAgICAgICBlZmZlY3RzLmV4aXQoJ2RhdGEnKVxuICAgICAgICByZXR1cm4gdGV4dChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBEYXRhLlxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGF0YVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpc3QgPSBjb25zdHJ1Y3RzW2NvZGVdXG4gICAgICBsZXQgaW5kZXggPSAtMVxuICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IGxpc3RbaW5kZXhdXG4gICAgICAgICAgaWYgKCFpdGVtLnByZXZpb3VzIHx8IGl0ZW0ucHJldmlvdXMuY2FsbChzZWxmLCBzZWxmLnByZXZpb3VzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVzb2x2ZXIgfCB1bmRlZmluZWR9IFtleHRyYVJlc29sdmVyXVxuICogQHJldHVybnMge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlcihleHRyYVJlc29sdmVyKSB7XG4gIHJldHVybiByZXNvbHZlQWxsVGV4dFxuXG4gIC8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG4gIGZ1bmN0aW9uIHJlc29sdmVBbGxUZXh0KGV2ZW50cywgY29udGV4dCkge1xuICAgIGxldCBpbmRleCA9IC0xXG4gICAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGVudGVyXG5cbiAgICAvLyBBIHJhdGhlciBib3JpbmcgY29tcHV0YXRpb24gKHRvIG1lcmdlIGFkamFjZW50IGBkYXRhYCBldmVudHMpIHdoaWNoXG4gICAgLy8gaW1wcm92ZXMgbW0gcGVyZm9ybWFuY2UgYnkgMjklLlxuICAgIHdoaWxlICgrK2luZGV4IDw9IGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIGlmIChlbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChldmVudHNbaW5kZXhdICYmIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgZW50ZXIgPSBpbmRleFxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghZXZlbnRzW2luZGV4XSB8fCBldmVudHNbaW5kZXhdWzFdLnR5cGUgIT09ICdkYXRhJykge1xuICAgICAgICAvLyBEb25cdTIwMTl0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGlzIG9uZSBkYXRhIHRva2VuLlxuICAgICAgICBpZiAoaW5kZXggIT09IGVudGVyICsgMikge1xuICAgICAgICAgIGV2ZW50c1tlbnRlcl1bMV0uZW5kID0gZXZlbnRzW2luZGV4IC0gMV1bMV0uZW5kXG4gICAgICAgICAgZXZlbnRzLnNwbGljZShlbnRlciArIDIsIGluZGV4IC0gZW50ZXIgLSAyKVxuICAgICAgICAgIGluZGV4ID0gZW50ZXIgKyAyXG4gICAgICAgIH1cbiAgICAgICAgZW50ZXIgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhUmVzb2x2ZXIgPyBleHRyYVJlc29sdmVyKGV2ZW50cywgY29udGV4dCkgOiBldmVudHNcbiAgfVxufVxuXG4vKipcbiAqIEEgcmF0aGVyIHVnbHkgc2V0IG9mIGluc3RydWN0aW9ucyB3aGljaCBhZ2FpbiBsb29rcyBhdCBjaHVua3MgaW4gdGhlIGlucHV0XG4gKiBzdHJlYW0uXG4gKiBUaGUgcmVhc29uIHRvIGRvIHRoaXMgaGVyZSBpcyB0aGF0IGl0IGlzICptdWNoKiBmYXN0ZXIgdG8gcGFyc2UgaW4gcmV2ZXJzZS5cbiAqIEFuZCB0aGF0IHdlIGNhblx1MjAxOXQgaG9vayBpbnRvIGBudWxsYCB0byBzcGxpdCB0aGUgbGluZSBzdWZmaXggYmVmb3JlIGFuIEVPRi5cbiAqIFRvIGRvOiBmaWd1cmUgb3V0IGlmIHdlIGNhbiBtYWtlIHRoaXMgaW50byBhIGNsZWFuIHV0aWxpdHksIG9yIGV2ZW4gaW4gY29yZS5cbiAqIEFzIGl0IHdpbGwgYmUgdXNlZnVsIGZvciBHRk1zIGxpdGVyYWwgYXV0b2xpbmsgZXh0ZW5zaW9uIChhbmQgbWF5YmUgZXZlblxuICogdGFibGVzPylcbiAqXG4gKiBAdHlwZSB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBbGxMaW5lU3VmZml4ZXMoZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBldmVudEluZGV4ID0gMCAvLyBTa2lwIGZpcnN0LlxuXG4gIHdoaWxlICgrK2V2ZW50SW5kZXggPD0gZXZlbnRzLmxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIChldmVudEluZGV4ID09PSBldmVudHMubGVuZ3RoIHx8XG4gICAgICAgIGV2ZW50c1tldmVudEluZGV4XVsxXS50eXBlID09PSAnbGluZUVuZGluZycpICYmXG4gICAgICBldmVudHNbZXZlbnRJbmRleCAtIDFdWzFdLnR5cGUgPT09ICdkYXRhJ1xuICAgICkge1xuICAgICAgY29uc3QgZGF0YSA9IGV2ZW50c1tldmVudEluZGV4IC0gMV1bMV1cbiAgICAgIGNvbnN0IGNodW5rcyA9IGNvbnRleHQuc2xpY2VTdHJlYW0oZGF0YSlcbiAgICAgIGxldCBpbmRleCA9IGNodW5rcy5sZW5ndGhcbiAgICAgIGxldCBidWZmZXJJbmRleCA9IC0xXG4gICAgICBsZXQgc2l6ZSA9IDBcbiAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCB0YWJzXG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICBjb25zdCBjaHVuayA9IGNodW5rc1tpbmRleF1cbiAgICAgICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBidWZmZXJJbmRleCA9IGNodW5rLmxlbmd0aFxuICAgICAgICAgIHdoaWxlIChjaHVuay5jaGFyQ29kZUF0KGJ1ZmZlckluZGV4IC0gMSkgPT09IDMyKSB7XG4gICAgICAgICAgICBzaXplKytcbiAgICAgICAgICAgIGJ1ZmZlckluZGV4LS1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGJ1ZmZlckluZGV4KSBicmVha1xuICAgICAgICAgIGJ1ZmZlckluZGV4ID0gLTFcbiAgICAgICAgfVxuICAgICAgICAvLyBOdW1iZXJcbiAgICAgICAgZWxzZSBpZiAoY2h1bmsgPT09IC0yKSB7XG4gICAgICAgICAgdGFicyA9IHRydWVcbiAgICAgICAgICBzaXplKytcbiAgICAgICAgfSBlbHNlIGlmIChjaHVuayA9PT0gLTEpIHtcbiAgICAgICAgICAvLyBFbXB0eVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlcGxhY2VtZW50IGNoYXJhY3RlciwgZXhpdC5cbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB7XG4gICAgICAgICAgdHlwZTpcbiAgICAgICAgICAgIGV2ZW50SW5kZXggPT09IGV2ZW50cy5sZW5ndGggfHwgdGFicyB8fCBzaXplIDwgMlxuICAgICAgICAgICAgICA/ICdsaW5lU3VmZml4J1xuICAgICAgICAgICAgICA6ICdoYXJkQnJlYWtUcmFpbGluZycsXG4gICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgIGxpbmU6IGRhdGEuZW5kLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGRhdGEuZW5kLmNvbHVtbiAtIHNpemUsXG4gICAgICAgICAgICBvZmZzZXQ6IGRhdGEuZW5kLm9mZnNldCAtIHNpemUsXG4gICAgICAgICAgICBfaW5kZXg6IGRhdGEuc3RhcnQuX2luZGV4ICsgaW5kZXgsXG4gICAgICAgICAgICBfYnVmZmVySW5kZXg6IGluZGV4XG4gICAgICAgICAgICAgID8gYnVmZmVySW5kZXhcbiAgICAgICAgICAgICAgOiBkYXRhLnN0YXJ0Ll9idWZmZXJJbmRleCArIGJ1ZmZlckluZGV4XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGRhdGEuZW5kKVxuICAgICAgICB9XG4gICAgICAgIGRhdGEuZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgdG9rZW4uc3RhcnQpXG4gICAgICAgIGlmIChkYXRhLnN0YXJ0Lm9mZnNldCA9PT0gZGF0YS5lbmQub2Zmc2V0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCB0b2tlbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldmVudHMuc3BsaWNlKFxuICAgICAgICAgICAgZXZlbnRJbmRleCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBbJ2VudGVyJywgdG9rZW4sIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0JywgdG9rZW4sIGNvbnRleHRdXG4gICAgICAgICAgKVxuICAgICAgICAgIGV2ZW50SW5kZXggKz0gMlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBldmVudEluZGV4KytcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5DaHVua30gQ2h1bmtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3RSZWNvcmR9IENvbnN0cnVjdFJlY29yZFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUGFyc2VDb250ZXh0fSBQYXJzZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBSZXN0b3JlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqXG4gKiBAdHlwZWRlZiBJbmZvXG4gKiBAcHJvcGVydHkge1Jlc3RvcmV9IHJlc3RvcmVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmcm9tXG4gKlxuICogQGNhbGxiYWNrIFJldHVybkhhbmRsZVxuICogICBIYW5kbGUgYSBzdWNjZXNzZnVsIHJ1bi5cbiAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAqIEBwYXJhbSB7SW5mb30gaW5mb1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cblxuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7cHVzaCwgc3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuaW1wb3J0IHtyZXNvbHZlQWxsfSBmcm9tICdtaWNyb21hcmstdXRpbC1yZXNvbHZlLWFsbCdcbi8qKlxuICogQ3JlYXRlIGEgdG9rZW5pemVyLlxuICogVG9rZW5pemVycyBkZWFsIHdpdGggb25lIHR5cGUgb2YgZGF0YSAoZS5nLiwgY29udGFpbmVycywgZmxvdywgdGV4dCkuXG4gKiBUaGUgcGFyc2VyIGlzIHRoZSBvYmplY3QgZGVhbGluZyB3aXRoIGl0IGFsbC5cbiAqIGBpbml0aWFsaXplYCB3b3JrcyBsaWtlIG90aGVyIGNvbnN0cnVjdHMsIGV4Y2VwdCB0aGF0IG9ubHkgaXRzIGB0b2tlbml6ZWBcbiAqIGZ1bmN0aW9uIGlzIHVzZWQsIGluIHdoaWNoIGNhc2UgaXQgZG9lc25cdTIwMTl0IHJlY2VpdmUgYW4gYG9rYCBvciBgbm9rYC5cbiAqIGBmcm9tYCBjYW4gYmUgZ2l2ZW4gdG8gc2V0IHRoZSBwb2ludCBiZWZvcmUgdGhlIGZpcnN0IGNoYXJhY3RlciwgYWx0aG91Z2hcbiAqIHdoZW4gZnVydGhlciBsaW5lcyBhcmUgaW5kZW50ZWQsIHRoZXkgbXVzdCBiZSBzZXQgd2l0aCBgZGVmaW5lU2tpcGAuXG4gKlxuICogQHBhcmFtIHtQYXJzZUNvbnRleHR9IHBhcnNlclxuICogQHBhcmFtIHtJbml0aWFsQ29uc3RydWN0fSBpbml0aWFsaXplXG4gKiBAcGFyYW0ge09taXQ8UG9pbnQsICdfYnVmZmVySW5kZXgnIHwgJ19pbmRleCc+IHwgdW5kZWZpbmVkfSBbZnJvbV1cbiAqIEByZXR1cm5zIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb2tlbml6ZXIocGFyc2VyLCBpbml0aWFsaXplLCBmcm9tKSB7XG4gIC8qKiBAdHlwZSB7UG9pbnR9ICovXG4gIGxldCBwb2ludCA9IE9iamVjdC5hc3NpZ24oXG4gICAgZnJvbVxuICAgICAgPyBPYmplY3QuYXNzaWduKHt9LCBmcm9tKVxuICAgICAgOiB7XG4gICAgICAgICAgbGluZTogMSxcbiAgICAgICAgICBjb2x1bW46IDEsXG4gICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgIH0sXG4gICAge1xuICAgICAgX2luZGV4OiAwLFxuICAgICAgX2J1ZmZlckluZGV4OiAtMVxuICAgIH1cbiAgKVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGNvbHVtblN0YXJ0ID0ge31cbiAgLyoqIEB0eXBlIHtBcnJheTxDb25zdHJ1Y3Q+fSAqL1xuICBjb25zdCByZXNvbHZlQWxsQ29uc3RydWN0cyA9IFtdXG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgY2h1bmtzID0gW11cbiAgLyoqIEB0eXBlIHtBcnJheTxUb2tlbj59ICovXG4gIGxldCBzdGFjayA9IFtdXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvbnN1bWVkID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBUb29scyB1c2VkIGZvciB0b2tlbml6aW5nLlxuICAgKlxuICAgKiBAdHlwZSB7RWZmZWN0c31cbiAgICovXG4gIGNvbnN0IGVmZmVjdHMgPSB7XG4gICAgY29uc3VtZSxcbiAgICBlbnRlcixcbiAgICBleGl0LFxuICAgIGF0dGVtcHQ6IGNvbnN0cnVjdEZhY3Rvcnkob25zdWNjZXNzZnVsY29uc3RydWN0KSxcbiAgICBjaGVjazogY29uc3RydWN0RmFjdG9yeShvbnN1Y2Nlc3NmdWxjaGVjayksXG4gICAgaW50ZXJydXB0OiBjb25zdHJ1Y3RGYWN0b3J5KG9uc3VjY2Vzc2Z1bGNoZWNrLCB7XG4gICAgICBpbnRlcnJ1cHQ6IHRydWVcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRlIGFuZCB0b29scyBmb3IgcmVzb2x2aW5nIGFuZCBzZXJpYWxpemluZy5cbiAgICpcbiAgICogQHR5cGUge1Rva2VuaXplQ29udGV4dH1cbiAgICovXG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgcHJldmlvdXM6IG51bGwsXG4gICAgY29kZTogbnVsbCxcbiAgICBjb250YWluZXJTdGF0ZToge30sXG4gICAgZXZlbnRzOiBbXSxcbiAgICBwYXJzZXIsXG4gICAgc2xpY2VTdHJlYW0sXG4gICAgc2xpY2VTZXJpYWxpemUsXG4gICAgbm93LFxuICAgIGRlZmluZVNraXAsXG4gICAgd3JpdGVcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZSB8IHZvaWR9XG4gICAqL1xuICBsZXQgc3RhdGUgPSBpbml0aWFsaXplLnRva2VuaXplLmNhbGwoY29udGV4dCwgZWZmZWN0cylcblxuICAvKipcbiAgICogVHJhY2sgd2hpY2ggY2hhcmFjdGVyIHdlIGV4cGVjdCB0byBiZSBjb25zdW1lZCwgdG8gY2F0Y2ggYnVncy5cbiAgICpcbiAgICogQHR5cGUge0NvZGV9XG4gICAqL1xuICBsZXQgZXhwZWN0ZWRDb2RlXG4gIGlmIChpbml0aWFsaXplLnJlc29sdmVBbGwpIHtcbiAgICByZXNvbHZlQWxsQ29uc3RydWN0cy5wdXNoKGluaXRpYWxpemUpXG4gIH1cbiAgcmV0dXJuIGNvbnRleHRcblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnd3JpdGUnXX0gKi9cbiAgZnVuY3Rpb24gd3JpdGUoc2xpY2UpIHtcbiAgICBjaHVua3MgPSBwdXNoKGNodW5rcywgc2xpY2UpXG4gICAgbWFpbigpXG5cbiAgICAvLyBFeGl0IGlmIHdlXHUyMDE5cmUgbm90IGRvbmUsIHJlc29sdmUgbWlnaHQgY2hhbmdlIHN0dWZmLlxuICAgIGlmIChjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgYWRkUmVzdWx0KGluaXRpYWxpemUsIDApXG5cbiAgICAvLyBPdGhlcndpc2UsIHJlc29sdmUsIGFuZCBleGl0LlxuICAgIGNvbnRleHQuZXZlbnRzID0gcmVzb2x2ZUFsbChyZXNvbHZlQWxsQ29uc3RydWN0cywgY29udGV4dC5ldmVudHMsIGNvbnRleHQpXG4gICAgcmV0dXJuIGNvbnRleHQuZXZlbnRzXG4gIH1cblxuICAvL1xuICAvLyBUb29scy5cbiAgLy9cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnc2xpY2VTZXJpYWxpemUnXX0gKi9cbiAgZnVuY3Rpb24gc2xpY2VTZXJpYWxpemUodG9rZW4sIGV4cGFuZFRhYnMpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplQ2h1bmtzKHNsaWNlU3RyZWFtKHRva2VuKSwgZXhwYW5kVGFicylcbiAgfVxuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0WydzbGljZVN0cmVhbSddfSAqL1xuICBmdW5jdGlvbiBzbGljZVN0cmVhbSh0b2tlbikge1xuICAgIHJldHVybiBzbGljZUNodW5rcyhjaHVua3MsIHRva2VuKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ25vdyddfSAqL1xuICBmdW5jdGlvbiBub3coKSB7XG4gICAgLy8gVGhpcyBpcyBhIGhvdCBwYXRoLCBzbyB3ZSBjbG9uZSBtYW51YWxseSBpbnN0ZWFkIG9mIGBPYmplY3QuYXNzaWduKHt9LCBwb2ludClgXG4gICAgY29uc3Qge2xpbmUsIGNvbHVtbiwgb2Zmc2V0LCBfaW5kZXgsIF9idWZmZXJJbmRleH0gPSBwb2ludFxuICAgIHJldHVybiB7XG4gICAgICBsaW5lLFxuICAgICAgY29sdW1uLFxuICAgICAgb2Zmc2V0LFxuICAgICAgX2luZGV4LFxuICAgICAgX2J1ZmZlckluZGV4XG4gICAgfVxuICB9XG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ2RlZmluZVNraXAnXX0gKi9cbiAgZnVuY3Rpb24gZGVmaW5lU2tpcCh2YWx1ZSkge1xuICAgIGNvbHVtblN0YXJ0W3ZhbHVlLmxpbmVdID0gdmFsdWUuY29sdW1uXG4gICAgYWNjb3VudEZvclBvdGVudGlhbFNraXAoKVxuICB9XG5cbiAgLy9cbiAgLy8gU3RhdGUgbWFuYWdlbWVudC5cbiAgLy9cblxuICAvKipcbiAgICogTWFpbiBsb29wIChub3RlIHRoYXQgYF9pbmRleGAgYW5kIGBfYnVmZmVySW5kZXhgIGluIGBwb2ludGAgYXJlIG1vZGlmaWVkIGJ5XG4gICAqIGBjb25zdW1lYCkuXG4gICAqIEhlcmUgaXMgd2hlcmUgd2Ugd2FsayB0aHJvdWdoIHRoZSBjaHVua3MsIHdoaWNoIGVpdGhlciBpbmNsdWRlIHN0cmluZ3Mgb2ZcbiAgICogc2V2ZXJhbCBjaGFyYWN0ZXJzLCBvciBudW1lcmljYWwgY2hhcmFjdGVyIGNvZGVzLlxuICAgKiBUaGUgcmVhc29uIHRvIGRvIHRoaXMgaW4gYSBsb29wIGluc3RlYWQgb2YgYSBjYWxsIGlzIHNvIHRoZSBzdGFjayBjYW5cbiAgICogZHJhaW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gbWFpbigpIHtcbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgY2h1bmtJbmRleFxuICAgIHdoaWxlIChwb2ludC5faW5kZXggPCBjaHVua3MubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjaHVuayA9IGNodW5rc1twb2ludC5faW5kZXhdXG5cbiAgICAgIC8vIElmIHdlXHUyMDE5cmUgaW4gYSBidWZmZXIgY2h1bmssIGxvb3AgdGhyb3VnaCBpdC5cbiAgICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNodW5rSW5kZXggPSBwb2ludC5faW5kZXhcbiAgICAgICAgaWYgKHBvaW50Ll9idWZmZXJJbmRleCA8IDApIHtcbiAgICAgICAgICBwb2ludC5fYnVmZmVySW5kZXggPSAwXG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgIHBvaW50Ll9pbmRleCA9PT0gY2h1bmtJbmRleCAmJlxuICAgICAgICAgIHBvaW50Ll9idWZmZXJJbmRleCA8IGNodW5rLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBnbyhjaHVuay5jaGFyQ29kZUF0KHBvaW50Ll9idWZmZXJJbmRleCkpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdvKGNodW5rKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFsIHdpdGggb25lIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGdvKGNvZGUpIHtcbiAgICBjb25zdW1lZCA9IHVuZGVmaW5lZFxuICAgIGV4cGVjdGVkQ29kZSA9IGNvZGVcbiAgICBzdGF0ZSA9IHN0YXRlKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge0VmZmVjdHNbJ2NvbnN1bWUnXX0gKi9cbiAgZnVuY3Rpb24gY29uc3VtZShjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcG9pbnQubGluZSsrXG4gICAgICBwb2ludC5jb2x1bW4gPSAxXG4gICAgICBwb2ludC5vZmZzZXQgKz0gY29kZSA9PT0gLTMgPyAyIDogMVxuICAgICAgYWNjb3VudEZvclBvdGVudGlhbFNraXAoKVxuICAgIH0gZWxzZSBpZiAoY29kZSAhPT0gLTEpIHtcbiAgICAgIHBvaW50LmNvbHVtbisrXG4gICAgICBwb2ludC5vZmZzZXQrK1xuICAgIH1cblxuICAgIC8vIE5vdCBpbiBhIHN0cmluZyBjaHVuay5cbiAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4IDwgMCkge1xuICAgICAgcG9pbnQuX2luZGV4KytcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnQuX2J1ZmZlckluZGV4KytcblxuICAgICAgLy8gQXQgZW5kIG9mIHN0cmluZyBjaHVuay5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUG9pbnRzIHcvIG5vbi1uZWdhdGl2ZSBgX2J1ZmZlckluZGV4YCByZWZlcmVuY2VcbiAgICAgIC8vIHN0cmluZ3MuXG4gICAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4ID09PSBjaHVua3NbcG9pbnQuX2luZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4ID0gLTFcbiAgICAgICAgcG9pbnQuX2luZGV4KytcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBvc2UgdGhlIHByZXZpb3VzIGNoYXJhY3Rlci5cbiAgICBjb250ZXh0LnByZXZpb3VzID0gY29kZVxuXG4gICAgLy8gTWFyayBhcyBjb25zdW1lZC5cbiAgICBjb25zdW1lZCA9IHRydWVcbiAgfVxuXG4gIC8qKiBAdHlwZSB7RWZmZWN0c1snZW50ZXInXX0gKi9cbiAgZnVuY3Rpb24gZW50ZXIodHlwZSwgZmllbGRzKSB7XG4gICAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFBhdGNoIGluc3RlYWQgb2YgYXNzaWduIHJlcXVpcmVkIGZpZWxkcyB0byBoZWxwIEdDLlxuICAgIGNvbnN0IHRva2VuID0gZmllbGRzIHx8IHt9XG4gICAgdG9rZW4udHlwZSA9IHR5cGVcbiAgICB0b2tlbi5zdGFydCA9IG5vdygpXG4gICAgY29udGV4dC5ldmVudHMucHVzaChbJ2VudGVyJywgdG9rZW4sIGNvbnRleHRdKVxuICAgIHN0YWNrLnB1c2godG9rZW4pXG4gICAgcmV0dXJuIHRva2VuXG4gIH1cblxuICAvKiogQHR5cGUge0VmZmVjdHNbJ2V4aXQnXX0gKi9cbiAgZnVuY3Rpb24gZXhpdCh0eXBlKSB7XG4gICAgY29uc3QgdG9rZW4gPSBzdGFjay5wb3AoKVxuICAgIHRva2VuLmVuZCA9IG5vdygpXG4gICAgY29udGV4dC5ldmVudHMucHVzaChbJ2V4aXQnLCB0b2tlbiwgY29udGV4dF0pXG4gICAgcmV0dXJuIHRva2VuXG4gIH1cblxuICAvKipcbiAgICogVXNlIHJlc3VsdHMuXG4gICAqXG4gICAqIEB0eXBlIHtSZXR1cm5IYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbnN1Y2Nlc3NmdWxjb25zdHJ1Y3QoY29uc3RydWN0LCBpbmZvKSB7XG4gICAgYWRkUmVzdWx0KGNvbnN0cnVjdCwgaW5mby5mcm9tKVxuICB9XG5cbiAgLyoqXG4gICAqIERpc2NhcmQgcmVzdWx0cy5cbiAgICpcbiAgICogQHR5cGUge1JldHVybkhhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uc3VjY2Vzc2Z1bGNoZWNrKF8sIGluZm8pIHtcbiAgICBpbmZvLnJlc3RvcmUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgdG8gYXR0ZW1wdC9jaGVjay9pbnRlcnJ1cHQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmV0dXJuSGFuZGxlfSBvbnJldHVyblxuICAgKiBAcGFyYW0ge3tpbnRlcnJ1cHQ/OiBib29sZWFuIHwgdW5kZWZpbmVkfSB8IHVuZGVmaW5lZH0gW2ZpZWxkc11cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnN0cnVjdEZhY3Rvcnkob25yZXR1cm4sIGZpZWxkcykge1xuICAgIHJldHVybiBob29rXG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgZWl0aGVyIGFuIG9iamVjdCBtYXBwaW5nIGNvZGVzIHRvIGNvbnN0cnVjdHMsIGEgbGlzdCBvZlxuICAgICAqIGNvbnN0cnVjdHMsIG9yIGEgc2luZ2xlIGNvbnN0cnVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXk8Q29uc3RydWN0PiB8IENvbnN0cnVjdCB8IENvbnN0cnVjdFJlY29yZH0gY29uc3RydWN0c1xuICAgICAqIEBwYXJhbSB7U3RhdGV9IHJldHVyblN0YXRlXG4gICAgICogQHBhcmFtIHtTdGF0ZSB8IHVuZGVmaW5lZH0gW2JvZ3VzU3RhdGVdXG4gICAgICogQHJldHVybnMge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhvb2soY29uc3RydWN0cywgcmV0dXJuU3RhdGUsIGJvZ3VzU3RhdGUpIHtcbiAgICAgIC8qKiBAdHlwZSB7QXJyYXk8Q29uc3RydWN0Pn0gKi9cbiAgICAgIGxldCBsaXN0T2ZDb25zdHJ1Y3RzXG4gICAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICAgIGxldCBjb25zdHJ1Y3RJbmRleFxuICAgICAgLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG4gICAgICBsZXQgY3VycmVudENvbnN0cnVjdFxuICAgICAgLyoqIEB0eXBlIHtJbmZvfSAqL1xuICAgICAgbGV0IGluZm9cbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbnN0cnVjdHMpIC8qIGM4IGlnbm9yZSBuZXh0IDEgKi9cbiAgICAgICAgPyBoYW5kbGVMaXN0T2ZDb25zdHJ1Y3RzKGNvbnN0cnVjdHMpXG4gICAgICAgIDogJ3Rva2VuaXplJyBpbiBjb25zdHJ1Y3RzXG4gICAgICAgID8gLy8gQHRzLWV4cGVjdC1lcnJvciBMb29rcyBsaWtlIGEgY29uc3RydWN0LlxuICAgICAgICAgIGhhbmRsZUxpc3RPZkNvbnN0cnVjdHMoW2NvbnN0cnVjdHNdKVxuICAgICAgICA6IGhhbmRsZU1hcE9mQ29uc3RydWN0cyhjb25zdHJ1Y3RzKVxuXG4gICAgICAvKipcbiAgICAgICAqIEhhbmRsZSBhIGxpc3Qgb2YgY29uc3RydWN0LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Q29uc3RydWN0UmVjb3JkfSBtYXBcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlTWFwT2ZDb25zdHJ1Y3RzKG1hcCkge1xuICAgICAgICByZXR1cm4gc3RhcnRcblxuICAgICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgICAgICAgY29uc3QgZGVmID0gY29kZSAhPT0gbnVsbCAmJiBtYXBbY29kZV1cbiAgICAgICAgICBjb25zdCBhbGwgPSBjb2RlICE9PSBudWxsICYmIG1hcC5udWxsXG4gICAgICAgICAgY29uc3QgbGlzdCA9IFtcbiAgICAgICAgICAgIC8vIFRvIGRvOiBhZGQgbW9yZSBleHRlbnNpb24gdGVzdHMuXG4gICAgICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAyICovXG4gICAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShkZWYpID8gZGVmIDogZGVmID8gW2RlZl0gOiBbXSksXG4gICAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShhbGwpID8gYWxsIDogYWxsID8gW2FsbF0gOiBbXSlcbiAgICAgICAgICBdXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUxpc3RPZkNvbnN0cnVjdHMobGlzdCkoY29kZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEhhbmRsZSBhIGxpc3Qgb2YgY29uc3RydWN0LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7QXJyYXk8Q29uc3RydWN0Pn0gbGlzdFxuICAgICAgICogQHJldHVybnMge1N0YXRlfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBoYW5kbGVMaXN0T2ZDb25zdHJ1Y3RzKGxpc3QpIHtcbiAgICAgICAgbGlzdE9mQ29uc3RydWN0cyA9IGxpc3RcbiAgICAgICAgY29uc3RydWN0SW5kZXggPSAwXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBib2d1c1N0YXRlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnN0cnVjdChsaXN0W2NvbnN0cnVjdEluZGV4XSlcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBzaW5nbGUgY29uc3RydWN0LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlQ29uc3RydWN0KGNvbnN0cnVjdCkge1xuICAgICAgICByZXR1cm4gc3RhcnRcblxuICAgICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgICAgICAgLy8gVG8gZG86IG5vdCBuZWVkZWQgdG8gc3RvcmUgaWYgdGhlcmUgaXMgbm8gYm9ndXMgc3RhdGUsIHByb2JhYmx5P1xuICAgICAgICAgIC8vIEN1cnJlbnRseSBkb2Vzblx1MjAxOXQgd29yayBiZWNhdXNlIGBpbnNwZWN0YCBpbiBkb2N1bWVudCBkb2VzIGEgY2hlY2tcbiAgICAgICAgICAvLyB3L28gYSBib2d1cywgd2hpY2ggZG9lc25cdTIwMTl0IG1ha2Ugc2Vuc2UuIEJ1dCBpdCBkb2VzIHNlZW0gdG8gaGVscCBwZXJmXG4gICAgICAgICAgLy8gYnkgbm90IHN0b3JpbmcuXG4gICAgICAgICAgaW5mbyA9IHN0b3JlKClcbiAgICAgICAgICBjdXJyZW50Q29uc3RydWN0ID0gY29uc3RydWN0XG4gICAgICAgICAgaWYgKCFjb25zdHJ1Y3QucGFydGlhbCkge1xuICAgICAgICAgICAgY29udGV4dC5jdXJyZW50Q29uc3RydWN0ID0gY29uc3RydWN0XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbnN0cnVjdC5uYW1lICYmXG4gICAgICAgICAgICBjb250ZXh0LnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcyhjb25zdHJ1Y3QubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBub2soY29kZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC50b2tlbml6ZS5jYWxsKFxuICAgICAgICAgICAgLy8gSWYgd2UgZG8gaGF2ZSBmaWVsZHMsIGNyZWF0ZSBhbiBvYmplY3Qgdy8gYGNvbnRleHRgIGFzIGl0c1xuICAgICAgICAgICAgLy8gcHJvdG90eXBlLlxuICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3MgYSBcdTIwMUNsaXZlIGJpbmRpbmdcdTIwMUQsIHdoaWNoIGlzIG5lZWRlZCBmb3IgYGludGVycnVwdGAuXG4gICAgICAgICAgICBmaWVsZHMgPyBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoY29udGV4dCksIGZpZWxkcykgOiBjb250ZXh0LFxuICAgICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICAgIG9rLFxuICAgICAgICAgICAgbm9rXG4gICAgICAgICAgKShjb2RlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICBmdW5jdGlvbiBvayhjb2RlKSB7XG4gICAgICAgIGNvbnN1bWVkID0gdHJ1ZVxuICAgICAgICBvbnJldHVybihjdXJyZW50Q29uc3RydWN0LCBpbmZvKVxuICAgICAgICByZXR1cm4gcmV0dXJuU3RhdGVcbiAgICAgIH1cblxuICAgICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICAgIGZ1bmN0aW9uIG5vayhjb2RlKSB7XG4gICAgICAgIGNvbnN1bWVkID0gdHJ1ZVxuICAgICAgICBpbmZvLnJlc3RvcmUoKVxuICAgICAgICBpZiAoKytjb25zdHJ1Y3RJbmRleCA8IGxpc3RPZkNvbnN0cnVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnN0cnVjdChsaXN0T2ZDb25zdHJ1Y3RzW2NvbnN0cnVjdEluZGV4XSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm9ndXNTdGF0ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdH0gY29uc3RydWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gYWRkUmVzdWx0KGNvbnN0cnVjdCwgZnJvbSkge1xuICAgIGlmIChjb25zdHJ1Y3QucmVzb2x2ZUFsbCAmJiAhcmVzb2x2ZUFsbENvbnN0cnVjdHMuaW5jbHVkZXMoY29uc3RydWN0KSkge1xuICAgICAgcmVzb2x2ZUFsbENvbnN0cnVjdHMucHVzaChjb25zdHJ1Y3QpXG4gICAgfVxuICAgIGlmIChjb25zdHJ1Y3QucmVzb2x2ZSkge1xuICAgICAgc3BsaWNlKFxuICAgICAgICBjb250ZXh0LmV2ZW50cyxcbiAgICAgICAgZnJvbSxcbiAgICAgICAgY29udGV4dC5ldmVudHMubGVuZ3RoIC0gZnJvbSxcbiAgICAgICAgY29uc3RydWN0LnJlc29sdmUoY29udGV4dC5ldmVudHMuc2xpY2UoZnJvbSksIGNvbnRleHQpXG4gICAgICApXG4gICAgfVxuICAgIGlmIChjb25zdHJ1Y3QucmVzb2x2ZVRvKSB7XG4gICAgICBjb250ZXh0LmV2ZW50cyA9IGNvbnN0cnVjdC5yZXNvbHZlVG8oY29udGV4dC5ldmVudHMsIGNvbnRleHQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7SW5mb31cbiAgICovXG4gIGZ1bmN0aW9uIHN0b3JlKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBub3coKVxuICAgIGNvbnN0IHN0YXJ0UHJldmlvdXMgPSBjb250ZXh0LnByZXZpb3VzXG4gICAgY29uc3Qgc3RhcnRDdXJyZW50Q29uc3RydWN0ID0gY29udGV4dC5jdXJyZW50Q29uc3RydWN0XG4gICAgY29uc3Qgc3RhcnRFdmVudHNJbmRleCA9IGNvbnRleHQuZXZlbnRzLmxlbmd0aFxuICAgIGNvbnN0IHN0YXJ0U3RhY2sgPSBBcnJheS5mcm9tKHN0YWNrKVxuICAgIHJldHVybiB7XG4gICAgICByZXN0b3JlLFxuICAgICAgZnJvbTogc3RhcnRFdmVudHNJbmRleFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc3RvcmUgc3RhdGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0b3JlKCkge1xuICAgICAgcG9pbnQgPSBzdGFydFBvaW50XG4gICAgICBjb250ZXh0LnByZXZpb3VzID0gc3RhcnRQcmV2aW91c1xuICAgICAgY29udGV4dC5jdXJyZW50Q29uc3RydWN0ID0gc3RhcnRDdXJyZW50Q29uc3RydWN0XG4gICAgICBjb250ZXh0LmV2ZW50cy5sZW5ndGggPSBzdGFydEV2ZW50c0luZGV4XG4gICAgICBzdGFjayA9IHN0YXJ0U3RhY2tcbiAgICAgIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0aGUgY3VycmVudCBwb2ludCBhIGJpdCBmb3J3YXJkIGluIHRoZSBsaW5lIHdoZW4gaXRcdTIwMTlzIG9uIGEgY29sdW1uXG4gICAqIHNraXAuXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gYWNjb3VudEZvclBvdGVudGlhbFNraXAoKSB7XG4gICAgaWYgKHBvaW50LmxpbmUgaW4gY29sdW1uU3RhcnQgJiYgcG9pbnQuY29sdW1uIDwgMikge1xuICAgICAgcG9pbnQuY29sdW1uID0gY29sdW1uU3RhcnRbcG9pbnQubGluZV1cbiAgICAgIHBvaW50Lm9mZnNldCArPSBjb2x1bW5TdGFydFtwb2ludC5saW5lXSAtIDFcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNodW5rcyBmcm9tIGEgc2xpY2Ugb2YgY2h1bmtzIGluIHRoZSByYW5nZSBvZiBhIHRva2VuLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8Q2h1bms+fSBjaHVua3NcbiAqIEBwYXJhbSB7UGljazxUb2tlbiwgJ2VuZCcgfCAnc3RhcnQnPn0gdG9rZW5cbiAqIEByZXR1cm5zIHtBcnJheTxDaHVuaz59XG4gKi9cbmZ1bmN0aW9uIHNsaWNlQ2h1bmtzKGNodW5rcywgdG9rZW4pIHtcbiAgY29uc3Qgc3RhcnRJbmRleCA9IHRva2VuLnN0YXJ0Ll9pbmRleFxuICBjb25zdCBzdGFydEJ1ZmZlckluZGV4ID0gdG9rZW4uc3RhcnQuX2J1ZmZlckluZGV4XG4gIGNvbnN0IGVuZEluZGV4ID0gdG9rZW4uZW5kLl9pbmRleFxuICBjb25zdCBlbmRCdWZmZXJJbmRleCA9IHRva2VuLmVuZC5fYnVmZmVySW5kZXhcbiAgLyoqIEB0eXBlIHtBcnJheTxDaHVuaz59ICovXG4gIGxldCB2aWV3XG4gIGlmIChzdGFydEluZGV4ID09PSBlbmRJbmRleCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYF9idWZmZXJJbmRleGAgaXMgdXNlZCBvbiBzdHJpbmcgY2h1bmtzLlxuICAgIHZpZXcgPSBbY2h1bmtzW3N0YXJ0SW5kZXhdLnNsaWNlKHN0YXJ0QnVmZmVySW5kZXgsIGVuZEJ1ZmZlckluZGV4KV1cbiAgfSBlbHNlIHtcbiAgICB2aWV3ID0gY2h1bmtzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuICAgIGlmIChzdGFydEJ1ZmZlckluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGhlYWQgPSB2aWV3WzBdXG4gICAgICBpZiAodHlwZW9mIGhlYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZpZXdbMF0gPSBoZWFkLnNsaWNlKHN0YXJ0QnVmZmVySW5kZXgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2aWV3LnNoaWZ0KClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZEJ1ZmZlckluZGV4ID4gMCkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgX2J1ZmZlckluZGV4YCBpcyB1c2VkIG9uIHN0cmluZyBjaHVua3MuXG4gICAgICB2aWV3LnB1c2goY2h1bmtzW2VuZEluZGV4XS5zbGljZSgwLCBlbmRCdWZmZXJJbmRleCkpXG4gICAgfVxuICB9XG4gIHJldHVybiB2aWV3XG59XG5cbi8qKlxuICogR2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBzbGljZSBvZiBjaHVua3MuXG4gKlxuICogQHBhcmFtIHtBcnJheTxDaHVuaz59IGNodW5rc1xuICogQHBhcmFtIHtib29sZWFuIHwgdW5kZWZpbmVkfSBbZXhwYW5kVGFicz1mYWxzZV1cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHNlcmlhbGl6ZUNodW5rcyhjaHVua3MsIGV4cGFuZFRhYnMpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqL1xuICBjb25zdCByZXN1bHQgPSBbXVxuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBhdFRhYlxuICB3aGlsZSAoKytpbmRleCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICBjb25zdCBjaHVuayA9IGNodW5rc1tpbmRleF1cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgdmFsdWVcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBjaHVua1xuICAgIH0gZWxzZVxuICAgICAgc3dpdGNoIChjaHVuaykge1xuICAgICAgICBjYXNlIC01OiB7XG4gICAgICAgICAgdmFsdWUgPSAnXFxyJ1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAtNDoge1xuICAgICAgICAgIHZhbHVlID0gJ1xcbidcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgLTM6IHtcbiAgICAgICAgICB2YWx1ZSA9ICdcXHInICsgJ1xcbidcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgLTI6IHtcbiAgICAgICAgICB2YWx1ZSA9IGV4cGFuZFRhYnMgPyAnICcgOiAnXFx0J1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAtMToge1xuICAgICAgICAgIGlmICghZXhwYW5kVGFicyAmJiBhdFRhYikgY29udGludWVcbiAgICAgICAgICB2YWx1ZSA9ICcgJ1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHJlcGxhY2VtZW50IGNoYXJhY3Rlci5cbiAgICAgICAgICB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2h1bmspXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBhdFRhYiA9IGNodW5rID09PSAtMlxuICAgIHJlc3VsdC5wdXNoKHZhbHVlKVxuICB9XG4gIHJldHVybiByZXN1bHQuam9pbignJylcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXh0ZW5zaW9ufSBFeHRlbnNpb25cbiAqL1xuXG5pbXBvcnQge1xuICBhdHRlbnRpb24sXG4gIGF1dG9saW5rLFxuICBibG9ja1F1b3RlLFxuICBjaGFyYWN0ZXJFc2NhcGUsXG4gIGNoYXJhY3RlclJlZmVyZW5jZSxcbiAgY29kZUZlbmNlZCxcbiAgY29kZUluZGVudGVkLFxuICBjb2RlVGV4dCxcbiAgZGVmaW5pdGlvbixcbiAgaGFyZEJyZWFrRXNjYXBlLFxuICBoZWFkaW5nQXR4LFxuICBodG1sRmxvdyxcbiAgaHRtbFRleHQsXG4gIGxhYmVsRW5kLFxuICBsYWJlbFN0YXJ0SW1hZ2UsXG4gIGxhYmVsU3RhcnRMaW5rLFxuICBsaW5lRW5kaW5nLFxuICBsaXN0LFxuICBzZXRleHRVbmRlcmxpbmUsXG4gIHRoZW1hdGljQnJlYWtcbn0gZnJvbSAnbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyaydcbmltcG9ydCB7cmVzb2x2ZXIgYXMgcmVzb2x2ZVRleHR9IGZyb20gJy4vaW5pdGlhbGl6ZS90ZXh0LmpzJ1xuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydkb2N1bWVudCddfSAqL1xuZXhwb3J0IGNvbnN0IGRvY3VtZW50ID0ge1xuICBbNDJdOiBsaXN0LFxuICBbNDNdOiBsaXN0LFxuICBbNDVdOiBsaXN0LFxuICBbNDhdOiBsaXN0LFxuICBbNDldOiBsaXN0LFxuICBbNTBdOiBsaXN0LFxuICBbNTFdOiBsaXN0LFxuICBbNTJdOiBsaXN0LFxuICBbNTNdOiBsaXN0LFxuICBbNTRdOiBsaXN0LFxuICBbNTVdOiBsaXN0LFxuICBbNTZdOiBsaXN0LFxuICBbNTddOiBsaXN0LFxuICBbNjJdOiBibG9ja1F1b3RlXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2NvbnRlbnRJbml0aWFsJ119ICovXG5leHBvcnQgY29uc3QgY29udGVudEluaXRpYWwgPSB7XG4gIFs5MV06IGRlZmluaXRpb25cbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnZmxvd0luaXRpYWwnXX0gKi9cbmV4cG9ydCBjb25zdCBmbG93SW5pdGlhbCA9IHtcbiAgWy0yXTogY29kZUluZGVudGVkLFxuICBbLTFdOiBjb2RlSW5kZW50ZWQsXG4gIFszMl06IGNvZGVJbmRlbnRlZFxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydmbG93J119ICovXG5leHBvcnQgY29uc3QgZmxvdyA9IHtcbiAgWzM1XTogaGVhZGluZ0F0eCxcbiAgWzQyXTogdGhlbWF0aWNCcmVhayxcbiAgWzQ1XTogW3NldGV4dFVuZGVybGluZSwgdGhlbWF0aWNCcmVha10sXG4gIFs2MF06IGh0bWxGbG93LFxuICBbNjFdOiBzZXRleHRVbmRlcmxpbmUsXG4gIFs5NV06IHRoZW1hdGljQnJlYWssXG4gIFs5Nl06IGNvZGVGZW5jZWQsXG4gIFsxMjZdOiBjb2RlRmVuY2VkXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ3N0cmluZyddfSAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZyA9IHtcbiAgWzM4XTogY2hhcmFjdGVyUmVmZXJlbmNlLFxuICBbOTJdOiBjaGFyYWN0ZXJFc2NhcGVcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsndGV4dCddfSAqL1xuZXhwb3J0IGNvbnN0IHRleHQgPSB7XG4gIFstNV06IGxpbmVFbmRpbmcsXG4gIFstNF06IGxpbmVFbmRpbmcsXG4gIFstM106IGxpbmVFbmRpbmcsXG4gIFszM106IGxhYmVsU3RhcnRJbWFnZSxcbiAgWzM4XTogY2hhcmFjdGVyUmVmZXJlbmNlLFxuICBbNDJdOiBhdHRlbnRpb24sXG4gIFs2MF06IFthdXRvbGluaywgaHRtbFRleHRdLFxuICBbOTFdOiBsYWJlbFN0YXJ0TGluayxcbiAgWzkyXTogW2hhcmRCcmVha0VzY2FwZSwgY2hhcmFjdGVyRXNjYXBlXSxcbiAgWzkzXTogbGFiZWxFbmQsXG4gIFs5NV06IGF0dGVudGlvbixcbiAgWzk2XTogY29kZVRleHRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnaW5zaWRlU3BhbiddfSAqL1xuZXhwb3J0IGNvbnN0IGluc2lkZVNwYW4gPSB7XG4gIG51bGw6IFthdHRlbnRpb24sIHJlc29sdmVUZXh0XVxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydhdHRlbnRpb25NYXJrZXJzJ119ICovXG5leHBvcnQgY29uc3QgYXR0ZW50aW9uTWFya2VycyA9IHtcbiAgbnVsbDogWzQyLCA5NV1cbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnZGlzYWJsZSddfSAqL1xuZXhwb3J0IGNvbnN0IGRpc2FibGUgPSB7XG4gIG51bGw6IFtdXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNyZWF0ZX0gQ3JlYXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkZ1bGxOb3JtYWxpemVkRXh0ZW5zaW9ufSBGdWxsTm9ybWFsaXplZEV4dGVuc2lvblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBhcnNlQ29udGV4dH0gUGFyc2VDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBhcnNlT3B0aW9uc30gUGFyc2VPcHRpb25zXG4gKi9cblxuaW1wb3J0IHtjb21iaW5lRXh0ZW5zaW9uc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY29tYmluZS1leHRlbnNpb25zJ1xuaW1wb3J0IHtjb250ZW50fSBmcm9tICcuL2luaXRpYWxpemUvY29udGVudC5qcydcbmltcG9ydCB7ZG9jdW1lbnR9IGZyb20gJy4vaW5pdGlhbGl6ZS9kb2N1bWVudC5qcydcbmltcG9ydCB7Zmxvd30gZnJvbSAnLi9pbml0aWFsaXplL2Zsb3cuanMnXG5pbXBvcnQge3RleHQsIHN0cmluZ30gZnJvbSAnLi9pbml0aWFsaXplL3RleHQuanMnXG5pbXBvcnQge2NyZWF0ZVRva2VuaXplcn0gZnJvbSAnLi9jcmVhdGUtdG9rZW5pemVyLmpzJ1xuaW1wb3J0ICogYXMgZGVmYXVsdENvbnN0cnVjdHMgZnJvbSAnLi9jb25zdHJ1Y3RzLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7UGFyc2VPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29wdGlvbnNdXG4gKiBAcmV0dXJucyB7UGFyc2VDb250ZXh0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucykge1xuICBjb25zdCBzZXR0aW5ncyA9IG9wdGlvbnMgfHwge31cbiAgY29uc3QgY29uc3RydWN0cyA9XG4gICAgLyoqIEB0eXBlIHtGdWxsTm9ybWFsaXplZEV4dGVuc2lvbn0gKi9cbiAgICBjb21iaW5lRXh0ZW5zaW9ucyhbZGVmYXVsdENvbnN0cnVjdHMsIC4uLihzZXR0aW5ncy5leHRlbnNpb25zIHx8IFtdKV0pXG5cbiAgLyoqIEB0eXBlIHtQYXJzZUNvbnRleHR9ICovXG4gIGNvbnN0IHBhcnNlciA9IHtcbiAgICBkZWZpbmVkOiBbXSxcbiAgICBsYXp5OiB7fSxcbiAgICBjb25zdHJ1Y3RzLFxuICAgIGNvbnRlbnQ6IGNyZWF0ZShjb250ZW50KSxcbiAgICBkb2N1bWVudDogY3JlYXRlKGRvY3VtZW50KSxcbiAgICBmbG93OiBjcmVhdGUoZmxvdyksXG4gICAgc3RyaW5nOiBjcmVhdGUoc3RyaW5nKSxcbiAgICB0ZXh0OiBjcmVhdGUodGV4dClcbiAgfVxuICByZXR1cm4gcGFyc2VyXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SW5pdGlhbENvbnN0cnVjdH0gaW5pdGlhbFxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlKGluaXRpYWwpIHtcbiAgICByZXR1cm4gY3JlYXRvclxuICAgIC8qKiBAdHlwZSB7Q3JlYXRlfSAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0b3IoZnJvbSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuaXplcihwYXJzZXIsIGluaXRpYWwsIGZyb20pXG4gICAgfVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNodW5rfSBDaHVua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVuY29kaW5nfSBFbmNvZGluZ1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5WYWx1ZX0gVmFsdWVcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBQcmVwcm9jZXNzb3JcbiAqIEBwYXJhbSB7VmFsdWV9IHZhbHVlXG4gKiBAcGFyYW0ge0VuY29kaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuY29kaW5nXVxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuZD1mYWxzZV1cbiAqIEByZXR1cm5zIHtBcnJheTxDaHVuaz59XG4gKi9cblxuY29uc3Qgc2VhcmNoID0gL1tcXDBcXHRcXG5cXHJdL2dcblxuLyoqXG4gKiBAcmV0dXJucyB7UHJlcHJvY2Vzc29yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcygpIHtcbiAgbGV0IGNvbHVtbiA9IDFcbiAgbGV0IGJ1ZmZlciA9ICcnXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHN0YXJ0ID0gdHJ1ZVxuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBhdENhcnJpYWdlUmV0dXJuXG4gIHJldHVybiBwcmVwcm9jZXNzb3JcblxuICAvKiogQHR5cGUge1ByZXByb2Nlc3Nvcn0gKi9cbiAgZnVuY3Rpb24gcHJlcHJvY2Vzc29yKHZhbHVlLCBlbmNvZGluZywgZW5kKSB7XG4gICAgLyoqIEB0eXBlIHtBcnJheTxDaHVuaz59ICovXG4gICAgY29uc3QgY2h1bmtzID0gW11cbiAgICAvKiogQHR5cGUge1JlZ0V4cE1hdGNoQXJyYXkgfCBudWxsfSAqL1xuICAgIGxldCBtYXRjaFxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBuZXh0XG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgbGV0IHN0YXJ0UG9zaXRpb25cbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgZW5kUG9zaXRpb25cbiAgICAvKiogQHR5cGUge0NvZGV9ICovXG4gICAgbGV0IGNvZGVcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYEJ1ZmZlcmAgZG9lcyBhbGxvdyBhbiBlbmNvZGluZy5cbiAgICB2YWx1ZSA9IGJ1ZmZlciArIHZhbHVlLnRvU3RyaW5nKGVuY29kaW5nKVxuICAgIHN0YXJ0UG9zaXRpb24gPSAwXG4gICAgYnVmZmVyID0gJydcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIC8vIFRvIGRvOiBgbWFya2Rvd24tcnNgIGFjdHVhbGx5IHBhcnNlcyBCT01zIChieXRlIG9yZGVyIG1hcmspLlxuICAgICAgaWYgKHZhbHVlLmNoYXJDb2RlQXQoMCkgPT09IDY1Mjc5KSB7XG4gICAgICAgIHN0YXJ0UG9zaXRpb24rK1xuICAgICAgfVxuICAgICAgc3RhcnQgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgd2hpbGUgKHN0YXJ0UG9zaXRpb24gPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHNlYXJjaC5sYXN0SW5kZXggPSBzdGFydFBvc2l0aW9uXG4gICAgICBtYXRjaCA9IHNlYXJjaC5leGVjKHZhbHVlKVxuICAgICAgZW5kUG9zaXRpb24gPVxuICAgICAgICBtYXRjaCAmJiBtYXRjaC5pbmRleCAhPT0gdW5kZWZpbmVkID8gbWF0Y2guaW5kZXggOiB2YWx1ZS5sZW5ndGhcbiAgICAgIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KGVuZFBvc2l0aW9uKVxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBidWZmZXIgPSB2YWx1ZS5zbGljZShzdGFydFBvc2l0aW9uKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKGNvZGUgPT09IDEwICYmIHN0YXJ0UG9zaXRpb24gPT09IGVuZFBvc2l0aW9uICYmIGF0Q2FycmlhZ2VSZXR1cm4pIHtcbiAgICAgICAgY2h1bmtzLnB1c2goLTMpXG4gICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB1bmRlZmluZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhdENhcnJpYWdlUmV0dXJuKSB7XG4gICAgICAgICAgY2h1bmtzLnB1c2goLTUpXG4gICAgICAgICAgYXRDYXJyaWFnZVJldHVybiA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydFBvc2l0aW9uIDwgZW5kUG9zaXRpb24pIHtcbiAgICAgICAgICBjaHVua3MucHVzaCh2YWx1ZS5zbGljZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikpXG4gICAgICAgICAgY29sdW1uICs9IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvblxuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgIGNhc2UgMDoge1xuICAgICAgICAgICAgY2h1bmtzLnB1c2goNjU1MzMpXG4gICAgICAgICAgICBjb2x1bW4rK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSA5OiB7XG4gICAgICAgICAgICBuZXh0ID0gTWF0aC5jZWlsKGNvbHVtbiAvIDQpICogNFxuICAgICAgICAgICAgY2h1bmtzLnB1c2goLTIpXG4gICAgICAgICAgICB3aGlsZSAoY29sdW1uKysgPCBuZXh0KSBjaHVua3MucHVzaCgtMSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgMTA6IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKC00KVxuICAgICAgICAgICAgY29sdW1uID0gMVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgYXRDYXJyaWFnZVJldHVybiA9IHRydWVcbiAgICAgICAgICAgIGNvbHVtbiA9IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YXJ0UG9zaXRpb24gPSBlbmRQb3NpdGlvbiArIDFcbiAgICB9XG4gICAgaWYgKGVuZCkge1xuICAgICAgaWYgKGF0Q2FycmlhZ2VSZXR1cm4pIGNodW5rcy5wdXNoKC01KVxuICAgICAgaWYgKGJ1ZmZlcikgY2h1bmtzLnB1c2goYnVmZmVyKVxuICAgICAgY2h1bmtzLnB1c2gobnVsbClcbiAgICB9XG4gICAgcmV0dXJuIGNodW5rc1xuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICovXG5cbmltcG9ydCB7c3VidG9rZW5pemV9IGZyb20gJ21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplJ1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqIEByZXR1cm5zIHtBcnJheTxFdmVudD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0cHJvY2VzcyhldmVudHMpIHtcbiAgd2hpbGUgKCFzdWJ0b2tlbml6ZShldmVudHMpKSB7XG4gICAgLy8gRW1wdHlcbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG4iLCAiLyoqXG4gKiBUdXJuIHRoZSBudW1iZXIgKGluIHN0cmluZyBmb3JtIGFzIGVpdGhlciBoZXhhLSBvciBwbGFpbiBkZWNpbWFsKSBjb21pbmcgZnJvbVxuICogYSBudW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2UgaW50byBhIGNoYXJhY3Rlci5cbiAqXG4gKiBTb3J0IG9mIGxpa2UgYFN0cmluZy5mcm9tQ2hhckNvZGUoTnVtYmVyLnBhcnNlSW50KHZhbHVlLCBiYXNlKSlgLCBidXQgbWFrZXNcbiAqIG5vbi1jaGFyYWN0ZXJzIGFuZCBjb250cm9sIGNoYXJhY3RlcnMgc2FmZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqICAgVmFsdWUgdG8gZGVjb2RlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJhc2VcbiAqICAgTnVtZXJpYyBiYXNlLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgQ2hhcmFjdGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSh2YWx1ZSwgYmFzZSkge1xuICBjb25zdCBjb2RlID0gTnVtYmVyLnBhcnNlSW50KHZhbHVlLCBiYXNlKVxuICBpZiAoXG4gICAgLy8gQzAgZXhjZXB0IGZvciBIVCwgTEYsIEZGLCBDUiwgc3BhY2UuXG4gICAgY29kZSA8IDkgfHxcbiAgICBjb2RlID09PSAxMSB8fFxuICAgIChjb2RlID4gMTMgJiYgY29kZSA8IDMyKSB8fFxuICAgIC8vIENvbnRyb2wgY2hhcmFjdGVyIChERUwpIG9mIEMwLCBhbmQgQzEgY29udHJvbHMuXG4gICAgKGNvZGUgPiAxMjYgJiYgY29kZSA8IDE2MCkgfHxcbiAgICAvLyBMb25lIGhpZ2ggc3Vycm9nYXRlcyBhbmQgbG93IHN1cnJvZ2F0ZXMuXG4gICAgKGNvZGUgPiA1NTI5NSAmJiBjb2RlIDwgNTczNDQpIHx8XG4gICAgLy8gTm9uY2hhcmFjdGVycy5cbiAgICAoY29kZSA+IDY0OTc1ICYmIGNvZGUgPCA2NTAwOCkgLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqLyB8fFxuICAgIChjb2RlICYgNjU1MzUpID09PSA2NTUzNSB8fFxuICAgIChjb2RlICYgNjU1MzUpID09PSA2NTUzNCAvKiBlc2xpbnQtZW5hYmxlIG5vLWJpdHdpc2UgKi8gfHxcbiAgICAvLyBPdXQgb2YgcmFuZ2VcbiAgICBjb2RlID4gMTExNDExMVxuICApIHtcbiAgICByZXR1cm4gJ1xcdUZGRkQnXG4gIH1cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbn1cbiIsICJpbXBvcnQge2RlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdkZWNvZGUtbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7ZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmNvbnN0IGNoYXJhY3RlckVzY2FwZU9yUmVmZXJlbmNlID1cbiAgL1xcXFwoWyEtLzotQFstYHstfl0pfCYoIyg/OlxcZHsxLDd9fHhbXFxkYS1mXXsxLDZ9KXxbXFxkYS16XXsxLDMxfSk7L2dpXG5cbi8qKlxuICogRGVjb2RlIG1hcmtkb3duIHN0cmluZ3MgKHdoaWNoIG9jY3VyIGluIHBsYWNlcyBzdWNoIGFzIGZlbmNlZCBjb2RlIGluZm9cbiAqIHN0cmluZ3MsIGRlc3RpbmF0aW9ucywgbGFiZWxzLCBhbmQgdGl0bGVzKS5cbiAqXG4gKiBUaGUgXHUyMDFDc3RyaW5nXHUyMDFEIGNvbnRlbnQgdHlwZSBhbGxvd3MgY2hhcmFjdGVyIGVzY2FwZXMgYW5kIC1yZWZlcmVuY2VzLlxuICogVGhpcyBkZWNvZGVzIHRob3NlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogICBWYWx1ZSB0byBkZWNvZGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBEZWNvZGVkIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKGNoYXJhY3RlckVzY2FwZU9yUmVmZXJlbmNlLCBkZWNvZGUpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9ICQwXG4gKiBAcGFyYW0ge3N0cmluZ30gJDFcbiAqIEBwYXJhbSB7c3RyaW5nfSAkMlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZGVjb2RlKCQwLCAkMSwgJDIpIHtcbiAgaWYgKCQxKSB7XG4gICAgLy8gRXNjYXBlLlxuICAgIHJldHVybiAkMVxuICB9XG5cbiAgLy8gUmVmZXJlbmNlLlxuICBjb25zdCBoZWFkID0gJDIuY2hhckNvZGVBdCgwKVxuICBpZiAoaGVhZCA9PT0gMzUpIHtcbiAgICBjb25zdCBoZWFkID0gJDIuY2hhckNvZGVBdCgxKVxuICAgIGNvbnN0IGhleCA9IGhlYWQgPT09IDEyMCB8fCBoZWFkID09PSA4OFxuICAgIHJldHVybiBkZWNvZGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKCQyLnNsaWNlKGhleCA/IDIgOiAxKSwgaGV4ID8gMTYgOiAxMClcbiAgfVxuICByZXR1cm4gZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoJDIpIHx8ICQwXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVuY29kaW5nfSBFbmNvZGluZ1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUGFyc2VPcHRpb25zfSBQYXJzZU9wdGlvbnNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlZhbHVlfSBWYWx1ZVxuICpcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUGFyZW50fSBVbmlzdFBhcmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb2ludH0gUG9pbnRcbiAqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlBocmFzaW5nQ29udGVudH0gUGhyYXNpbmdDb250ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlN0YXRpY1BocmFzaW5nQ29udGVudH0gU3RhdGljUGhyYXNpbmdDb250ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkNvbnRlbnR9IENvbnRlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuQnJlYWt9IEJyZWFrXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkJsb2NrcXVvdGV9IEJsb2NrcXVvdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5EZWZpbml0aW9ufSBEZWZpbml0aW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkVtcGhhc2lzfSBFbXBoYXNpc1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5IZWFkaW5nfSBIZWFkaW5nXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkhUTUx9IEhUTUxcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSW1hZ2V9IEltYWdlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkltYWdlUmVmZXJlbmNlfSBJbWFnZVJlZmVyZW5jZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5JbmxpbmVDb2RlfSBJbmxpbmVDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkxpbmt9IExpbmtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuTGlua1JlZmVyZW5jZX0gTGlua1JlZmVyZW5jZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5MaXN0fSBMaXN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkxpc3RJdGVtfSBMaXN0SXRlbVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5QYXJhZ3JhcGh9IFBhcmFncmFwaFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5Sb290fSBSb290XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlN0cm9uZ30gU3Ryb25nXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlRleHR9IFRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuVGhlbWF0aWNCcmVha30gVGhlbWF0aWNCcmVha1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5SZWZlcmVuY2VUeXBlfSBSZWZlcmVuY2VUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9pbmRleC5qcycpLkNvbXBpbGVEYXRhfSBDb21waWxlRGF0YVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1Jvb3QgfCBDb250ZW50fSBOb2RlXG4gKiBAdHlwZWRlZiB7RXh0cmFjdDxOb2RlLCBVbmlzdFBhcmVudD59IFBhcmVudFxuICpcbiAqIEB0eXBlZGVmIHtPbWl0PFVuaXN0UGFyZW50LCAndHlwZScgfCAnY2hpbGRyZW4nPiAmIHt0eXBlOiAnZnJhZ21lbnQnLCBjaGlsZHJlbjogQXJyYXk8UGhyYXNpbmdDb250ZW50Pn19IEZyYWdtZW50XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgVHJhbnNmb3JtXG4gKiAgIEV4dHJhIHRyYW5zZm9ybSwgdG8gY2hhbmdlIHRoZSBBU1QgYWZ0ZXJ3YXJkcy5cbiAqIEBwYXJhbSB7Um9vdH0gdHJlZVxuICogICBUcmVlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtSb290IHwgdW5kZWZpbmVkIHwgbnVsbCB8IHZvaWR9XG4gKiAgIE5ldyB0cmVlIG9yIG5vdGhpbmcgKGluIHdoaWNoIGNhc2UgdGhlIGN1cnJlbnQgdHJlZSBpcyB1c2VkKS5cbiAqXG4gKiBAY2FsbGJhY2sgSGFuZGxlXG4gKiAgIEhhbmRsZSBhIHRva2VuLlxuICogQHBhcmFtIHtDb21waWxlQ29udGV4dH0gdGhpc1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAqICAgQ3VycmVudCB0b2tlbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICpcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBIYW5kbGU+fSBIYW5kbGVzXG4gKiAgIFRva2VuIHR5cGVzIG1hcHBpbmcgdG8gaGFuZGxlc1xuICpcbiAqIEBjYWxsYmFjayBPbkVudGVyRXJyb3JcbiAqICAgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBgcmlnaHRgIHRva2VuIGlzIG9wZW4sIGJ1dCBpdCBpcyBjbG9zZWQgKGJ5IHRoZVxuICogICBgbGVmdGAgdG9rZW4pIG9yIGJlY2F1c2Ugd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC5cbiAqIEBwYXJhbSB7T21pdDxDb21waWxlQ29udGV4dCwgJ3NsaWNlU2VyaWFsaXplJz59IHRoaXNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7VG9rZW4gfCB1bmRlZmluZWR9IGxlZnRcbiAqICAgTGVmdCB0b2tlbi5cbiAqIEBwYXJhbSB7VG9rZW59IHJpZ2h0XG4gKiAgIFJpZ2h0IHRva2VuLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKlxuICogQGNhbGxiYWNrIE9uRXhpdEVycm9yXG4gKiAgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgYHJpZ2h0YCB0b2tlbiBpcyBvcGVuIGJ1dCBpdCBpcyBjbG9zZWQgYnlcbiAqICAgZXhpdGluZyB0aGUgYGxlZnRgIHRva2VuLlxuICogQHBhcmFtIHtPbWl0PENvbXBpbGVDb250ZXh0LCAnc2xpY2VTZXJpYWxpemUnPn0gdGhpc1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtUb2tlbn0gbGVmdFxuICogICBMZWZ0IHRva2VuLlxuICogQHBhcmFtIHtUb2tlbn0gcmlnaHRcbiAqICAgUmlnaHQgdG9rZW4uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqICAgTm90aGluZy5cbiAqXG4gKiBAdHlwZWRlZiB7W1Rva2VuLCBPbkVudGVyRXJyb3IgfCB1bmRlZmluZWRdfSBUb2tlblR1cGxlXG4gKiAgIE9wZW4gdG9rZW4gb24gdGhlIHN0YWNrLCB3aXRoIGFuIG9wdGlvbmFsIGVycm9yIGhhbmRsZXIgZm9yIHdoZW5cbiAqICAgdGhhdCB0b2tlbiBpc25cdTIwMTl0IGNsb3NlZCBwcm9wZXJseS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIENvbmZpZ1xuICogICBDb25maWd1cmF0aW9uLlxuICpcbiAqICAgV2UgaGF2ZSBvdXIgZGVmYXVsdHMsIGJ1dCBleHRlbnNpb25zIHdpbGwgYWRkIG1vcmUuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz59IGNhbkNvbnRhaW5Fb2xzXG4gKiAgIFRva2VuIHR5cGVzIHdoZXJlIGxpbmUgZW5kaW5ncyBhcmUgdXNlZC5cbiAqIEBwcm9wZXJ0eSB7SGFuZGxlc30gZW50ZXJcbiAqICAgT3BlbmluZyBoYW5kbGVzLlxuICogQHByb3BlcnR5IHtIYW5kbGVzfSBleGl0XG4gKiAgIENsb3NpbmcgaGFuZGxlcy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8VHJhbnNmb3JtPn0gdHJhbnNmb3Jtc1xuICogICBUcmVlIHRyYW5zZm9ybXMuXG4gKlxuICogQHR5cGVkZWYge1BhcnRpYWw8Q29uZmlnPn0gRXh0ZW5zaW9uXG4gKiAgIENoYW5nZSBob3cgbWFya2Rvd24gdG9rZW5zIGZyb20gbWljcm9tYXJrIGFyZSB0dXJuZWQgaW50byBtZGFzdC5cbiAqXG4gKiBAdHlwZWRlZiBDb21waWxlQ29udGV4dFxuICogICBtZGFzdCBjb21waWxlciBjb250ZXh0LlxuICogQHByb3BlcnR5IHtBcnJheTxOb2RlIHwgRnJhZ21lbnQ+fSBzdGFja1xuICogICBTdGFjayBvZiBub2Rlcy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8VG9rZW5UdXBsZT59IHRva2VuU3RhY2tcbiAqICAgU3RhY2sgb2YgdG9rZW5zLlxuICogQHByb3BlcnR5IHs8S2V5IGV4dGVuZHMga2V5b2YgQ29tcGlsZURhdGE+KGtleTogS2V5KSA9PiBDb21waWxlRGF0YVtLZXldfSBnZXREYXRhXG4gKiAgIEdldCBkYXRhIGZyb20gdGhlIGtleS92YWx1ZSBzdG9yZS5cbiAqIEBwcm9wZXJ0eSB7PEtleSBleHRlbmRzIGtleW9mIENvbXBpbGVEYXRhPihrZXk6IEtleSwgdmFsdWU/OiBDb21waWxlRGF0YVtLZXldKSA9PiB2b2lkfSBzZXREYXRhXG4gKiAgIFNldCBkYXRhIGludG8gdGhlIGtleS92YWx1ZSBzdG9yZS5cbiAqIEBwcm9wZXJ0eSB7KHRoaXM6IENvbXBpbGVDb250ZXh0KSA9PiB2b2lkfSBidWZmZXJcbiAqICAgQ2FwdHVyZSBzb21lIG9mIHRoZSBvdXRwdXQgZGF0YS5cbiAqIEBwcm9wZXJ0eSB7KHRoaXM6IENvbXBpbGVDb250ZXh0KSA9PiBzdHJpbmd9IHJlc3VtZVxuICogICBTdG9wIGNhcHR1cmluZyBhbmQgYWNjZXNzIHRoZSBvdXRwdXQgZGF0YS5cbiAqIEBwcm9wZXJ0eSB7PEtpbmQgZXh0ZW5kcyBOb2RlPih0aGlzOiBDb21waWxlQ29udGV4dCwgbm9kZTogS2luZCwgdG9rZW46IFRva2VuLCBvbkVycm9yPzogT25FbnRlckVycm9yKSA9PiBLaW5kfSBlbnRlclxuICogICBFbnRlciBhIHRva2VuLlxuICogQHByb3BlcnR5IHsodGhpczogQ29tcGlsZUNvbnRleHQsIHRva2VuOiBUb2tlbiwgb25FcnJvcj86IE9uRXhpdEVycm9yKSA9PiBOb2RlfSBleGl0XG4gKiAgIEV4aXQgYSB0b2tlbi5cbiAqIEBwcm9wZXJ0eSB7VG9rZW5pemVDb250ZXh0WydzbGljZVNlcmlhbGl6ZSddfSBzbGljZVNlcmlhbGl6ZVxuICogICBHZXQgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHRva2VuLlxuICogQHByb3BlcnR5IHtDb25maWd9IGNvbmZpZ1xuICogICBDb25maWd1cmF0aW9uLlxuICpcbiAqIEB0eXBlZGVmIEZyb21NYXJrZG93bk9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbiBmb3IgaG93IHRvIGJ1aWxkIG1kYXN0LlxuICogQHByb3BlcnR5IHtBcnJheTxFeHRlbnNpb24gfCBBcnJheTxFeHRlbnNpb24+PiB8IG51bGwgfCB1bmRlZmluZWR9IFttZGFzdEV4dGVuc2lvbnNdXG4gKiAgIEV4dGVuc2lvbnMgZm9yIHRoaXMgdXRpbGl0eSB0byBjaGFuZ2UgaG93IHRva2VucyBhcmUgdHVybmVkIGludG8gYSB0cmVlLlxuICpcbiAqIEB0eXBlZGVmIHtQYXJzZU9wdGlvbnMgJiBGcm9tTWFya2Rvd25PcHRpb25zfSBPcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKi9cblxuLy8gVG8gZG86IG1pY3JvbWFyazogY3JlYXRlIGEgcmVnaXN0cnkgb2YgdG9rZW5zP1xuLy8gVG8gZG86IG5leHQgbWFqb3I6IGRvblx1MjAxOXQgcmV0dXJuIGdpdmVuIGBOb2RlYCBmcm9tIGBlbnRlcmAuXG4vLyBUbyBkbzogbmV4dCBtYWpvcjogcmVtb3ZlIHNldHRlci9nZXR0ZXIuXG5cbmltcG9ydCB7dG9TdHJpbmd9IGZyb20gJ21kYXN0LXV0aWwtdG8tc3RyaW5nJ1xuaW1wb3J0IHtwYXJzZX0gZnJvbSAnbWljcm9tYXJrL2xpYi9wYXJzZS5qcydcbmltcG9ydCB7cHJlcHJvY2Vzc30gZnJvbSAnbWljcm9tYXJrL2xpYi9wcmVwcm9jZXNzLmpzJ1xuaW1wb3J0IHtwb3N0cHJvY2Vzc30gZnJvbSAnbWljcm9tYXJrL2xpYi9wb3N0cHJvY2Vzcy5qcydcbmltcG9ydCB7ZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7ZGVjb2RlU3RyaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1kZWNvZGUtc3RyaW5nJ1xuaW1wb3J0IHtub3JtYWxpemVJZGVudGlmaWVyfSBmcm9tICdtaWNyb21hcmstdXRpbC1ub3JtYWxpemUtaWRlbnRpZmllcidcbmltcG9ydCB7ZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJ1xuaW1wb3J0IHtzdHJpbmdpZnlQb3NpdGlvbn0gZnJvbSAndW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24nXG5jb25zdCBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vKipcbiAqIEBwYXJhbSB2YWx1ZVxuICogICBNYXJrZG93biB0byBwYXJzZS5cbiAqIEBwYXJhbSBlbmNvZGluZ1xuICogICBDaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIHdoZW4gYHZhbHVlYCBpcyBgQnVmZmVyYC5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJuc1xuICogICBtZGFzdCB0cmVlLlxuICovXG5leHBvcnQgY29uc3QgZnJvbU1hcmtkb3duID1cbiAgLyoqXG4gICAqIEB0eXBlIHsoXG4gICAqICAgKCh2YWx1ZTogVmFsdWUsIGVuY29kaW5nOiBFbmNvZGluZywgb3B0aW9ucz86IE9wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiBSb290KSAmXG4gICAqICAgKCh2YWx1ZTogVmFsdWUsIG9wdGlvbnM/OiBPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gUm9vdClcbiAgICogKX1cbiAgICovXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VmFsdWV9IHZhbHVlXG4gICAqIEBwYXJhbSB7RW5jb2RpbmcgfCBPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuY29kaW5nXVxuICAgKiBAcGFyYW0ge09wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3B0aW9uc11cbiAgICogQHJldHVybnMge1Jvb3R9XG4gICAqL1xuICBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMgPSBlbmNvZGluZ1xuICAgICAgZW5jb2RpbmcgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVyKG9wdGlvbnMpKFxuICAgICAgcG9zdHByb2Nlc3MoXG4gICAgICAgIHBhcnNlKG9wdGlvbnMpLmRvY3VtZW50KCkud3JpdGUocHJlcHJvY2VzcygpKHZhbHVlLCBlbmNvZGluZywgdHJ1ZSkpXG4gICAgICApXG4gICAgKVxuICB9XG5cbi8qKlxuICogTm90ZSB0aGlzIGNvbXBpbGVyIG9ubHkgdW5kZXJzdGFuZCBjb21wbGV0ZSBidWZmZXJpbmcsIG5vdCBzdHJlYW1pbmcuXG4gKlxuICogQHBhcmFtIHtPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29wdGlvbnNdXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVyKG9wdGlvbnMpIHtcbiAgLyoqIEB0eXBlIHtDb25maWd9ICovXG4gIGNvbnN0IGNvbmZpZyA9IHtcbiAgICB0cmFuc2Zvcm1zOiBbXSxcbiAgICBjYW5Db250YWluRW9sczogWydlbXBoYXNpcycsICdmcmFnbWVudCcsICdoZWFkaW5nJywgJ3BhcmFncmFwaCcsICdzdHJvbmcnXSxcbiAgICBlbnRlcjoge1xuICAgICAgYXV0b2xpbms6IG9wZW5lcihsaW5rKSxcbiAgICAgIGF1dG9saW5rUHJvdG9jb2w6IG9uZW50ZXJkYXRhLFxuICAgICAgYXV0b2xpbmtFbWFpbDogb25lbnRlcmRhdGEsXG4gICAgICBhdHhIZWFkaW5nOiBvcGVuZXIoaGVhZGluZyksXG4gICAgICBibG9ja1F1b3RlOiBvcGVuZXIoYmxvY2tRdW90ZSksXG4gICAgICBjaGFyYWN0ZXJFc2NhcGU6IG9uZW50ZXJkYXRhLFxuICAgICAgY2hhcmFjdGVyUmVmZXJlbmNlOiBvbmVudGVyZGF0YSxcbiAgICAgIGNvZGVGZW5jZWQ6IG9wZW5lcihjb2RlRmxvdyksXG4gICAgICBjb2RlRmVuY2VkRmVuY2VJbmZvOiBidWZmZXIsXG4gICAgICBjb2RlRmVuY2VkRmVuY2VNZXRhOiBidWZmZXIsXG4gICAgICBjb2RlSW5kZW50ZWQ6IG9wZW5lcihjb2RlRmxvdywgYnVmZmVyKSxcbiAgICAgIGNvZGVUZXh0OiBvcGVuZXIoY29kZVRleHQsIGJ1ZmZlciksXG4gICAgICBjb2RlVGV4dERhdGE6IG9uZW50ZXJkYXRhLFxuICAgICAgZGF0YTogb25lbnRlcmRhdGEsXG4gICAgICBjb2RlRmxvd1ZhbHVlOiBvbmVudGVyZGF0YSxcbiAgICAgIGRlZmluaXRpb246IG9wZW5lcihkZWZpbml0aW9uKSxcbiAgICAgIGRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZzogYnVmZmVyLFxuICAgICAgZGVmaW5pdGlvbkxhYmVsU3RyaW5nOiBidWZmZXIsXG4gICAgICBkZWZpbml0aW9uVGl0bGVTdHJpbmc6IGJ1ZmZlcixcbiAgICAgIGVtcGhhc2lzOiBvcGVuZXIoZW1waGFzaXMpLFxuICAgICAgaGFyZEJyZWFrRXNjYXBlOiBvcGVuZXIoaGFyZEJyZWFrKSxcbiAgICAgIGhhcmRCcmVha1RyYWlsaW5nOiBvcGVuZXIoaGFyZEJyZWFrKSxcbiAgICAgIGh0bWxGbG93OiBvcGVuZXIoaHRtbCwgYnVmZmVyKSxcbiAgICAgIGh0bWxGbG93RGF0YTogb25lbnRlcmRhdGEsXG4gICAgICBodG1sVGV4dDogb3BlbmVyKGh0bWwsIGJ1ZmZlciksXG4gICAgICBodG1sVGV4dERhdGE6IG9uZW50ZXJkYXRhLFxuICAgICAgaW1hZ2U6IG9wZW5lcihpbWFnZSksXG4gICAgICBsYWJlbDogYnVmZmVyLFxuICAgICAgbGluazogb3BlbmVyKGxpbmspLFxuICAgICAgbGlzdEl0ZW06IG9wZW5lcihsaXN0SXRlbSksXG4gICAgICBsaXN0SXRlbVZhbHVlOiBvbmVudGVybGlzdGl0ZW12YWx1ZSxcbiAgICAgIGxpc3RPcmRlcmVkOiBvcGVuZXIobGlzdCwgb25lbnRlcmxpc3RvcmRlcmVkKSxcbiAgICAgIGxpc3RVbm9yZGVyZWQ6IG9wZW5lcihsaXN0KSxcbiAgICAgIHBhcmFncmFwaDogb3BlbmVyKHBhcmFncmFwaCksXG4gICAgICByZWZlcmVuY2U6IG9uZW50ZXJyZWZlcmVuY2UsXG4gICAgICByZWZlcmVuY2VTdHJpbmc6IGJ1ZmZlcixcbiAgICAgIHJlc291cmNlRGVzdGluYXRpb25TdHJpbmc6IGJ1ZmZlcixcbiAgICAgIHJlc291cmNlVGl0bGVTdHJpbmc6IGJ1ZmZlcixcbiAgICAgIHNldGV4dEhlYWRpbmc6IG9wZW5lcihoZWFkaW5nKSxcbiAgICAgIHN0cm9uZzogb3BlbmVyKHN0cm9uZyksXG4gICAgICB0aGVtYXRpY0JyZWFrOiBvcGVuZXIodGhlbWF0aWNCcmVhaylcbiAgICB9LFxuICAgIGV4aXQ6IHtcbiAgICAgIGF0eEhlYWRpbmc6IGNsb3NlcigpLFxuICAgICAgYXR4SGVhZGluZ1NlcXVlbmNlOiBvbmV4aXRhdHhoZWFkaW5nc2VxdWVuY2UsXG4gICAgICBhdXRvbGluazogY2xvc2VyKCksXG4gICAgICBhdXRvbGlua0VtYWlsOiBvbmV4aXRhdXRvbGlua2VtYWlsLFxuICAgICAgYXV0b2xpbmtQcm90b2NvbDogb25leGl0YXV0b2xpbmtwcm90b2NvbCxcbiAgICAgIGJsb2NrUXVvdGU6IGNsb3NlcigpLFxuICAgICAgY2hhcmFjdGVyRXNjYXBlVmFsdWU6IG9uZXhpdGRhdGEsXG4gICAgICBjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbDogb25leGl0Y2hhcmFjdGVycmVmZXJlbmNlbWFya2VyLFxuICAgICAgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYzogb25leGl0Y2hhcmFjdGVycmVmZXJlbmNlbWFya2VyLFxuICAgICAgY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWU6IG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZXZhbHVlLFxuICAgICAgY29kZUZlbmNlZDogY2xvc2VyKG9uZXhpdGNvZGVmZW5jZWQpLFxuICAgICAgY29kZUZlbmNlZEZlbmNlOiBvbmV4aXRjb2RlZmVuY2VkZmVuY2UsXG4gICAgICBjb2RlRmVuY2VkRmVuY2VJbmZvOiBvbmV4aXRjb2RlZmVuY2VkZmVuY2VpbmZvLFxuICAgICAgY29kZUZlbmNlZEZlbmNlTWV0YTogb25leGl0Y29kZWZlbmNlZGZlbmNlbWV0YSxcbiAgICAgIGNvZGVGbG93VmFsdWU6IG9uZXhpdGRhdGEsXG4gICAgICBjb2RlSW5kZW50ZWQ6IGNsb3NlcihvbmV4aXRjb2RlaW5kZW50ZWQpLFxuICAgICAgY29kZVRleHQ6IGNsb3NlcihvbmV4aXRjb2RldGV4dCksXG4gICAgICBjb2RlVGV4dERhdGE6IG9uZXhpdGRhdGEsXG4gICAgICBkYXRhOiBvbmV4aXRkYXRhLFxuICAgICAgZGVmaW5pdGlvbjogY2xvc2VyKCksXG4gICAgICBkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6IG9uZXhpdGRlZmluaXRpb25kZXN0aW5hdGlvbnN0cmluZyxcbiAgICAgIGRlZmluaXRpb25MYWJlbFN0cmluZzogb25leGl0ZGVmaW5pdGlvbmxhYmVsc3RyaW5nLFxuICAgICAgZGVmaW5pdGlvblRpdGxlU3RyaW5nOiBvbmV4aXRkZWZpbml0aW9udGl0bGVzdHJpbmcsXG4gICAgICBlbXBoYXNpczogY2xvc2VyKCksXG4gICAgICBoYXJkQnJlYWtFc2NhcGU6IGNsb3NlcihvbmV4aXRoYXJkYnJlYWspLFxuICAgICAgaGFyZEJyZWFrVHJhaWxpbmc6IGNsb3NlcihvbmV4aXRoYXJkYnJlYWspLFxuICAgICAgaHRtbEZsb3c6IGNsb3NlcihvbmV4aXRodG1sZmxvdyksXG4gICAgICBodG1sRmxvd0RhdGE6IG9uZXhpdGRhdGEsXG4gICAgICBodG1sVGV4dDogY2xvc2VyKG9uZXhpdGh0bWx0ZXh0KSxcbiAgICAgIGh0bWxUZXh0RGF0YTogb25leGl0ZGF0YSxcbiAgICAgIGltYWdlOiBjbG9zZXIob25leGl0aW1hZ2UpLFxuICAgICAgbGFiZWw6IG9uZXhpdGxhYmVsLFxuICAgICAgbGFiZWxUZXh0OiBvbmV4aXRsYWJlbHRleHQsXG4gICAgICBsaW5lRW5kaW5nOiBvbmV4aXRsaW5lZW5kaW5nLFxuICAgICAgbGluazogY2xvc2VyKG9uZXhpdGxpbmspLFxuICAgICAgbGlzdEl0ZW06IGNsb3NlcigpLFxuICAgICAgbGlzdE9yZGVyZWQ6IGNsb3NlcigpLFxuICAgICAgbGlzdFVub3JkZXJlZDogY2xvc2VyKCksXG4gICAgICBwYXJhZ3JhcGg6IGNsb3NlcigpLFxuICAgICAgcmVmZXJlbmNlU3RyaW5nOiBvbmV4aXRyZWZlcmVuY2VzdHJpbmcsXG4gICAgICByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOiBvbmV4aXRyZXNvdXJjZWRlc3RpbmF0aW9uc3RyaW5nLFxuICAgICAgcmVzb3VyY2VUaXRsZVN0cmluZzogb25leGl0cmVzb3VyY2V0aXRsZXN0cmluZyxcbiAgICAgIHJlc291cmNlOiBvbmV4aXRyZXNvdXJjZSxcbiAgICAgIHNldGV4dEhlYWRpbmc6IGNsb3NlcihvbmV4aXRzZXRleHRoZWFkaW5nKSxcbiAgICAgIHNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2U6IG9uZXhpdHNldGV4dGhlYWRpbmdsaW5lc2VxdWVuY2UsXG4gICAgICBzZXRleHRIZWFkaW5nVGV4dDogb25leGl0c2V0ZXh0aGVhZGluZ3RleHQsXG4gICAgICBzdHJvbmc6IGNsb3NlcigpLFxuICAgICAgdGhlbWF0aWNCcmVhazogY2xvc2VyKClcbiAgICB9XG4gIH1cbiAgY29uZmlndXJlKGNvbmZpZywgKG9wdGlvbnMgfHwge30pLm1kYXN0RXh0ZW5zaW9ucyB8fCBbXSlcblxuICAvKiogQHR5cGUge0NvbXBpbGVEYXRhfSAqL1xuICBjb25zdCBkYXRhID0ge31cbiAgcmV0dXJuIGNvbXBpbGVcblxuICAvKipcbiAgICogVHVybiBtaWNyb21hcmsgZXZlbnRzIGludG8gYW4gbWRhc3QgdHJlZS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICAgKiAgIEV2ZW50cy5cbiAgICogQHJldHVybnMge1Jvb3R9XG4gICAqICAgbWRhc3QgdHJlZS5cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBpbGUoZXZlbnRzKSB7XG4gICAgLyoqIEB0eXBlIHtSb290fSAqL1xuICAgIGxldCB0cmVlID0ge1xuICAgICAgdHlwZTogJ3Jvb3QnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICAgIC8qKiBAdHlwZSB7T21pdDxDb21waWxlQ29udGV4dCwgJ3NsaWNlU2VyaWFsaXplJz59ICovXG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIHN0YWNrOiBbdHJlZV0sXG4gICAgICB0b2tlblN0YWNrOiBbXSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGVudGVyLFxuICAgICAgZXhpdCxcbiAgICAgIGJ1ZmZlcixcbiAgICAgIHJlc3VtZSxcbiAgICAgIHNldERhdGEsXG4gICAgICBnZXREYXRhXG4gICAgfVxuICAgIC8qKiBAdHlwZSB7QXJyYXk8bnVtYmVyPn0gKi9cbiAgICBjb25zdCBsaXN0U3RhY2sgPSBbXVxuICAgIGxldCBpbmRleCA9IC0xXG4gICAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBXZSBwcmVwcm9jZXNzIGxpc3RzIHRvIGFkZCBgbGlzdEl0ZW1gIHRva2VucywgYW5kIHRvIGluZmVyIHdoZXRoZXJcbiAgICAgIC8vIGl0ZW1zIHRoZSBsaXN0IGl0c2VsZiBhcmUgc3ByZWFkIG91dC5cbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnbGlzdE9yZGVyZWQnIHx8XG4gICAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2xpc3RVbm9yZGVyZWQnXG4gICAgICApIHtcbiAgICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicpIHtcbiAgICAgICAgICBsaXN0U3RhY2sucHVzaChpbmRleClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YWlsID0gbGlzdFN0YWNrLnBvcCgpXG4gICAgICAgICAgaW5kZXggPSBwcmVwYXJlTGlzdChldmVudHMsIHRhaWwsIGluZGV4KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGluZGV4ID0gLTFcbiAgICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSBjb25maWdbZXZlbnRzW2luZGV4XVswXV1cbiAgICAgIGlmIChvd24uY2FsbChoYW5kbGVyLCBldmVudHNbaW5kZXhdWzFdLnR5cGUpKSB7XG4gICAgICAgIGhhbmRsZXJbZXZlbnRzW2luZGV4XVsxXS50eXBlXS5jYWxsKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNsaWNlU2VyaWFsaXplOiBldmVudHNbaW5kZXhdWzJdLnNsaWNlU2VyaWFsaXplXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICksXG4gICAgICAgICAgZXZlbnRzW2luZGV4XVsxXVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRva2VucyBzdGlsbCBiZWluZyBvcGVuLlxuICAgIGlmIChjb250ZXh0LnRva2VuU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFpbCA9IGNvbnRleHQudG9rZW5TdGFja1tjb250ZXh0LnRva2VuU3RhY2subGVuZ3RoIC0gMV1cbiAgICAgIGNvbnN0IGhhbmRsZXIgPSB0YWlsWzFdIHx8IGRlZmF1bHRPbkVycm9yXG4gICAgICBoYW5kbGVyLmNhbGwoY29udGV4dCwgdW5kZWZpbmVkLCB0YWlsWzBdKVxuICAgIH1cblxuICAgIC8vIEZpZ3VyZSBvdXQgYHJvb3RgIHBvc2l0aW9uLlxuICAgIHRyZWUucG9zaXRpb24gPSB7XG4gICAgICBzdGFydDogcG9pbnQoXG4gICAgICAgIGV2ZW50cy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBldmVudHNbMF1bMV0uc3RhcnRcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbGluZTogMSxcbiAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICksXG4gICAgICBlbmQ6IHBvaW50KFxuICAgICAgICBldmVudHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAyXVsxXS5lbmRcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgbGluZTogMSxcbiAgICAgICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBDYWxsIHRyYW5zZm9ybXMuXG4gICAgaW5kZXggPSAtMVxuICAgIHdoaWxlICgrK2luZGV4IDwgY29uZmlnLnRyYW5zZm9ybXMubGVuZ3RoKSB7XG4gICAgICB0cmVlID0gY29uZmlnLnRyYW5zZm9ybXNbaW5kZXhdKHRyZWUpIHx8IHRyZWVcbiAgICB9XG4gICAgcmV0dXJuIHRyZWVcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydFxuICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBwcmVwYXJlTGlzdChldmVudHMsIHN0YXJ0LCBsZW5ndGgpIHtcbiAgICBsZXQgaW5kZXggPSBzdGFydCAtIDFcbiAgICBsZXQgY29udGFpbmVyQmFsYW5jZSA9IC0xXG4gICAgbGV0IGxpc3RTcHJlYWQgPSBmYWxzZVxuICAgIC8qKiBAdHlwZSB7VG9rZW4gfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGxpc3RJdGVtXG4gICAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGxpbmVJbmRleFxuICAgIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBmaXJzdEJsYW5rTGluZUluZGV4XG4gICAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBhdE1hcmtlclxuICAgIHdoaWxlICgrK2luZGV4IDw9IGxlbmd0aCkge1xuICAgICAgY29uc3QgZXZlbnQgPSBldmVudHNbaW5kZXhdXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0VW5vcmRlcmVkJyB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdE9yZGVyZWQnIHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdibG9ja1F1b3RlJ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChldmVudFswXSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgIGNvbnRhaW5lckJhbGFuY2UrK1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lckJhbGFuY2UtLVxuICAgICAgICB9XG4gICAgICAgIGF0TWFya2VyID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50WzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nQmxhbmsnKSB7XG4gICAgICAgIGlmIChldmVudFswXSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGxpc3RJdGVtICYmXG4gICAgICAgICAgICAhYXRNYXJrZXIgJiZcbiAgICAgICAgICAgICFjb250YWluZXJCYWxhbmNlICYmXG4gICAgICAgICAgICAhZmlyc3RCbGFua0xpbmVJbmRleFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZmlyc3RCbGFua0xpbmVJbmRleCA9IGluZGV4XG4gICAgICAgICAgfVxuICAgICAgICAgIGF0TWFya2VyID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaW5lUHJlZml4JyB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1WYWx1ZScgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtTWFya2VyJyB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1QcmVmaXgnIHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UnXG4gICAgICApIHtcbiAgICAgICAgLy8gRW1wdHkuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdE1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAoIWNvbnRhaW5lckJhbGFuY2UgJiZcbiAgICAgICAgICBldmVudFswXSA9PT0gJ2VudGVyJyAmJlxuICAgICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbVByZWZpeCcpIHx8XG4gICAgICAgIChjb250YWluZXJCYWxhbmNlID09PSAtMSAmJlxuICAgICAgICAgIGV2ZW50WzBdID09PSAnZXhpdCcgJiZcbiAgICAgICAgICAoZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RVbm9yZGVyZWQnIHx8XG4gICAgICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdE9yZGVyZWQnKSlcbiAgICAgICkge1xuICAgICAgICBpZiAobGlzdEl0ZW0pIHtcbiAgICAgICAgICBsZXQgdGFpbEluZGV4ID0gaW5kZXhcbiAgICAgICAgICBsaW5lSW5kZXggPSB1bmRlZmluZWRcbiAgICAgICAgICB3aGlsZSAodGFpbEluZGV4LS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRhaWxFdmVudCA9IGV2ZW50c1t0YWlsSW5kZXhdXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnbGluZUVuZGluZycgfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nQmxhbmsnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaWYgKHRhaWxFdmVudFswXSA9PT0gJ2V4aXQnKSBjb250aW51ZVxuICAgICAgICAgICAgICBpZiAobGluZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgZXZlbnRzW2xpbmVJbmRleF1bMV0udHlwZSA9ICdsaW5lRW5kaW5nQmxhbmsnXG4gICAgICAgICAgICAgICAgbGlzdFNwcmVhZCA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9ICdsaW5lRW5kaW5nJ1xuICAgICAgICAgICAgICBsaW5lSW5kZXggPSB0YWlsSW5kZXhcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnbGluZVByZWZpeCcgfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdibG9ja1F1b3RlUHJlZml4JyB8fFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2Jsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlJyB8fFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2Jsb2NrUXVvdGVNYXJrZXInIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1JbmRlbnQnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gRW1wdHlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpcnN0QmxhbmtMaW5lSW5kZXggJiZcbiAgICAgICAgICAgICghbGluZUluZGV4IHx8IGZpcnN0QmxhbmtMaW5lSW5kZXggPCBsaW5lSW5kZXgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBsaXN0SXRlbS5fc3ByZWFkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpeCBwb3NpdGlvbi5cbiAgICAgICAgICBsaXN0SXRlbS5lbmQgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBsaW5lSW5kZXggPyBldmVudHNbbGluZUluZGV4XVsxXS5zdGFydCA6IGV2ZW50WzFdLmVuZFxuICAgICAgICAgIClcbiAgICAgICAgICBldmVudHMuc3BsaWNlKGxpbmVJbmRleCB8fCBpbmRleCwgMCwgWydleGl0JywgbGlzdEl0ZW0sIGV2ZW50WzJdXSlcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgbGVuZ3RoKytcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBsaXN0IGl0ZW0uXG4gICAgICAgIGlmIChldmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1QcmVmaXgnKSB7XG4gICAgICAgICAgbGlzdEl0ZW0gPSB7XG4gICAgICAgICAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgICAgICAgICAgX3NwcmVhZDogZmFsc2UsXG4gICAgICAgICAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRbMV0uc3RhcnQpLFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogd2VcdTIwMTlsbCBhZGQgYGVuZGAgaW4gYSBzZWNvbmQuXG4gICAgICAgICAgICBlbmQ6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgbGlzdEl0ZW1gIGlzIG1vc3QgZGVmaW5pdGVseSBkZWZpbmVkLCBUUy4uLlxuICAgICAgICAgIGV2ZW50cy5zcGxpY2UoaW5kZXgsIDAsIFsnZW50ZXInLCBsaXN0SXRlbSwgZXZlbnRbMl1dKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBsZW5ndGgrK1xuICAgICAgICAgIGZpcnN0QmxhbmtMaW5lSW5kZXggPSB1bmRlZmluZWRcbiAgICAgICAgICBhdE1hcmtlciA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBldmVudHNbc3RhcnRdWzFdLl9zcHJlYWQgPSBsaXN0U3ByZWFkXG4gICAgcmV0dXJuIGxlbmd0aFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkYXRhLlxuICAgKlxuICAgKiBAdGVtcGxhdGUge2tleW9mIENvbXBpbGVEYXRhfSBLZXlcbiAgICogICBGaWVsZCB0eXBlLlxuICAgKiBAcGFyYW0ge0tleX0ga2V5XG4gICAqICAgS2V5IG9mIGZpZWxkLlxuICAgKiBAcGFyYW0ge0NvbXBpbGVEYXRhW0tleV19IFt2YWx1ZV1cbiAgICogICBOZXcgdmFsdWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiAgIE5vdGhpbmcuXG4gICAqL1xuICBmdW5jdGlvbiBzZXREYXRhKGtleSwgdmFsdWUpIHtcbiAgICBkYXRhW2tleV0gPSB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkYXRhLlxuICAgKlxuICAgKiBAdGVtcGxhdGUge2tleW9mIENvbXBpbGVEYXRhfSBLZXlcbiAgICogICBGaWVsZCB0eXBlLlxuICAgKiBAcGFyYW0ge0tleX0ga2V5XG4gICAqICAgS2V5IG9mIGZpZWxkLlxuICAgKiBAcmV0dXJucyB7Q29tcGlsZURhdGFbS2V5XX1cbiAgICogICBWYWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGdldERhdGEoa2V5KSB7XG4gICAgcmV0dXJuIGRhdGFba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBvcGVuZXIgaGFuZGxlLlxuICAgKlxuICAgKiBAcGFyYW0geyh0b2tlbjogVG9rZW4pID0+IE5vZGV9IGNyZWF0ZVxuICAgKiAgIENyZWF0ZSBhIG5vZGUuXG4gICAqIEBwYXJhbSB7SGFuZGxlfSBbYW5kXVxuICAgKiAgIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIGFsc28gcnVuLlxuICAgKiBAcmV0dXJucyB7SGFuZGxlfVxuICAgKiAgIEhhbmRsZS5cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW5lcihjcmVhdGUsIGFuZCkge1xuICAgIHJldHVybiBvcGVuXG5cbiAgICAvKipcbiAgICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvcGVuKHRva2VuKSB7XG4gICAgICBlbnRlci5jYWxsKHRoaXMsIGNyZWF0ZSh0b2tlbiksIHRva2VuKVxuICAgICAgaWYgKGFuZCkgYW5kLmNhbGwodGhpcywgdG9rZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBidWZmZXIoKSB7XG4gICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgIHR5cGU6ICdmcmFnbWVudCcsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEB0ZW1wbGF0ZSB7Tm9kZX0gS2luZFxuICAgKiAgIE5vZGUgdHlwZS5cbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiAgIENvbnRleHQuXG4gICAqIEBwYXJhbSB7S2luZH0gbm9kZVxuICAgKiAgIE5vZGUgdG8gZW50ZXIuXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqICAgQ29ycmVzcG9uZGluZyB0b2tlbi5cbiAgICogQHBhcmFtIHtPbkVudGVyRXJyb3IgfCB1bmRlZmluZWR9IFtlcnJvckhhbmRsZXJdXG4gICAqICAgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoaXMgdG9rZW4gaXMgb3BlbiwgYnV0IGl0IGlzIGNsb3NlZCBieSBzb21ldGhpbmcgZWxzZS5cbiAgICogQHJldHVybnMge0tpbmR9XG4gICAqICAgVGhlIGdpdmVuIG5vZGUuXG4gICAqL1xuICBmdW5jdGlvbiBlbnRlcihub2RlLCB0b2tlbiwgZXJyb3JIYW5kbGVyKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogQXNzdW1lIGBOb2RlYCBjYW4gZXhpc3QgYXMgYSBjaGlsZCBvZiBgcGFyZW50YC5cbiAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKVxuICAgIHRoaXMuc3RhY2sucHVzaChub2RlKVxuICAgIHRoaXMudG9rZW5TdGFjay5wdXNoKFt0b2tlbiwgZXJyb3JIYW5kbGVyXSlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgZW5kYCB3aWxsIGJlIHBhdGNoZWQgbGF0ZXIuXG4gICAgbm9kZS5wb3NpdGlvbiA9IHtcbiAgICAgIHN0YXJ0OiBwb2ludCh0b2tlbi5zdGFydClcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjbG9zZXIgaGFuZGxlLlxuICAgKlxuICAgKiBAcGFyYW0ge0hhbmRsZX0gW2FuZF1cbiAgICogICBPcHRpb25hbCBmdW5jdGlvbiB0byBhbHNvIHJ1bi5cbiAgICogQHJldHVybnMge0hhbmRsZX1cbiAgICogICBIYW5kbGUuXG4gICAqL1xuICBmdW5jdGlvbiBjbG9zZXIoYW5kKSB7XG4gICAgcmV0dXJuIGNsb3NlXG5cbiAgICAvKipcbiAgICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9zZSh0b2tlbikge1xuICAgICAgaWYgKGFuZCkgYW5kLmNhbGwodGhpcywgdG9rZW4pXG4gICAgICBleGl0LmNhbGwodGhpcywgdG9rZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogICBDb250ZXh0LlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiAgIENvcnJlc3BvbmRpbmcgdG9rZW4uXG4gICAqIEBwYXJhbSB7T25FeGl0RXJyb3IgfCB1bmRlZmluZWR9IFtvbkV4aXRFcnJvcl1cbiAgICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW5vdGhlciB0b2tlbiBpcyBvcGVuLlxuICAgKiBAcmV0dXJucyB7Tm9kZX1cbiAgICogICBUaGUgY2xvc2VkIG5vZGUuXG4gICAqL1xuICBmdW5jdGlvbiBleGl0KHRva2VuLCBvbkV4aXRFcnJvcikge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrLnBvcCgpXG4gICAgY29uc3Qgb3BlbiA9IHRoaXMudG9rZW5TdGFjay5wb3AoKVxuICAgIGlmICghb3Blbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGNsb3NlIGAnICtcbiAgICAgICAgICB0b2tlbi50eXBlICtcbiAgICAgICAgICAnYCAoJyArXG4gICAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe1xuICAgICAgICAgICAgc3RhcnQ6IHRva2VuLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB0b2tlbi5lbmRcbiAgICAgICAgICB9KSArXG4gICAgICAgICAgJyk6IGl0XHUyMDE5cyBub3Qgb3BlbidcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKG9wZW5bMF0udHlwZSAhPT0gdG9rZW4udHlwZSkge1xuICAgICAgaWYgKG9uRXhpdEVycm9yKSB7XG4gICAgICAgIG9uRXhpdEVycm9yLmNhbGwodGhpcywgdG9rZW4sIG9wZW5bMF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gb3BlblsxXSB8fCBkZWZhdWx0T25FcnJvclxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgdG9rZW4sIG9wZW5bMF0pXG4gICAgICB9XG4gICAgfVxuICAgIG5vZGUucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICAgIHJldHVybiBub2RlXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzdW1lKCkge1xuICAgIHJldHVybiB0b1N0cmluZyh0aGlzLnN0YWNrLnBvcCgpKVxuICB9XG5cbiAgLy9cbiAgLy8gSGFuZGxlcnMuXG4gIC8vXG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZW50ZXJsaXN0b3JkZXJlZCgpIHtcbiAgICBzZXREYXRhKCdleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUnLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZW50ZXJsaXN0aXRlbXZhbHVlKHRva2VuKSB7XG4gICAgaWYgKGdldERhdGEoJ2V4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZScpKSB7XG4gICAgICBjb25zdCBhbmNlc3RvciA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAyXVxuICAgICAgYW5jZXN0b3Iuc3RhcnQgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbiksIDEwKVxuICAgICAgc2V0RGF0YSgnZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlJylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWZlbmNlZGZlbmNlaW5mbygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLmxhbmcgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWZlbmNlZGZlbmNlbWV0YSgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLm1ldGEgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWZlbmNlZGZlbmNlKCkge1xuICAgIC8vIEV4aXQgaWYgdGhpcyBpcyB0aGUgY2xvc2luZyBmZW5jZS5cbiAgICBpZiAoZ2V0RGF0YSgnZmxvd0NvZGVJbnNpZGUnKSkgcmV0dXJuXG4gICAgdGhpcy5idWZmZXIoKVxuICAgIHNldERhdGEoJ2Zsb3dDb2RlSW5zaWRlJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjb2RlZmVuY2VkKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudmFsdWUgPSBkYXRhLnJlcGxhY2UoL14oXFxyP1xcbnxcXHIpfChcXHI/XFxufFxccikkL2csICcnKVxuICAgIHNldERhdGEoJ2Zsb3dDb2RlSW5zaWRlJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjb2RlaW5kZW50ZWQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS52YWx1ZSA9IGRhdGEucmVwbGFjZSgvKFxccj9cXG58XFxyKSQvZywgJycpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0ZGVmaW5pdGlvbmxhYmVsc3RyaW5nKHRva2VuKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUubGFiZWwgPSBsYWJlbFxuICAgIG5vZGUuaWRlbnRpZmllciA9IG5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICAgICkudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGRlZmluaXRpb250aXRsZXN0cmluZygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnRpdGxlID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGRlZmluaXRpb25kZXN0aW5hdGlvbnN0cmluZygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnVybCA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRhdHhoZWFkaW5nc2VxdWVuY2UodG9rZW4pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgaWYgKCFub2RlLmRlcHRoKSB7XG4gICAgICBjb25zdCBkZXB0aCA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pLmxlbmd0aFxuICAgICAgbm9kZS5kZXB0aCA9IGRlcHRoXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdHNldGV4dGhlYWRpbmd0ZXh0KCkge1xuICAgIHNldERhdGEoJ3NldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmcnLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdHNldGV4dGhlYWRpbmdsaW5lc2VxdWVuY2UodG9rZW4pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS5kZXB0aCA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pLmNoYXJDb2RlQXQoMCkgPT09IDYxID8gMSA6IDJcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRzZXRleHRoZWFkaW5nKCkge1xuICAgIHNldERhdGEoJ3NldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmcnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25lbnRlcmRhdGEodG9rZW4pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbGV0IHRhaWwgPSBub2RlLmNoaWxkcmVuW25vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV1cbiAgICBpZiAoIXRhaWwgfHwgdGFpbC50eXBlICE9PSAndGV4dCcpIHtcbiAgICAgIC8vIEFkZCBhIG5ldyB0ZXh0IG5vZGUuXG4gICAgICB0YWlsID0gdGV4dCgpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB3ZVx1MjAxOWxsIGFkZCBgZW5kYCBsYXRlci5cbiAgICAgIHRhaWwucG9zaXRpb24gPSB7XG4gICAgICAgIHN0YXJ0OiBwb2ludCh0b2tlbi5zdGFydClcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEFzc3VtZSBgcGFyZW50YCBhY2NlcHRzIGB0ZXh0YC5cbiAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaCh0YWlsKVxuICAgIH1cbiAgICB0aGlzLnN0YWNrLnB1c2godGFpbClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGRhdGEodG9rZW4pIHtcbiAgICBjb25zdCB0YWlsID0gdGhpcy5zdGFjay5wb3AoKVxuICAgIHRhaWwudmFsdWUgKz0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICB0YWlsLnBvc2l0aW9uLmVuZCA9IHBvaW50KHRva2VuLmVuZClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGxpbmVlbmRpbmcodG9rZW4pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgLy8gSWYgd2VcdTIwMTlyZSBhdCBhIGhhcmQgYnJlYWssIGluY2x1ZGUgdGhlIGxpbmUgZW5kaW5nIGluIHRoZXJlLlxuICAgIGlmIChnZXREYXRhKCdhdEhhcmRCcmVhaycpKSB7XG4gICAgICBjb25zdCB0YWlsID0gY29udGV4dC5jaGlsZHJlbltjb250ZXh0LmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICB0YWlsLnBvc2l0aW9uLmVuZCA9IHBvaW50KHRva2VuLmVuZClcbiAgICAgIHNldERhdGEoJ2F0SGFyZEJyZWFrJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoXG4gICAgICAhZ2V0RGF0YSgnc2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZycpICYmXG4gICAgICBjb25maWcuY2FuQ29udGFpbkVvbHMuaW5jbHVkZXMoY29udGV4dC50eXBlKVxuICAgICkge1xuICAgICAgb25lbnRlcmRhdGEuY2FsbCh0aGlzLCB0b2tlbilcbiAgICAgIG9uZXhpdGRhdGEuY2FsbCh0aGlzLCB0b2tlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRoYXJkYnJlYWsoKSB7XG4gICAgc2V0RGF0YSgnYXRIYXJkQnJlYWsnLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aHRtbGZsb3coKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS52YWx1ZSA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGh0bWx0ZXh0KCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudmFsdWUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRjb2RldGV4dCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnZhbHVlID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0bGluaygpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgLy8gTm90ZTogdGhlcmUgYXJlIGFsc28gYGlkZW50aWZpZXJgIGFuZCBgbGFiZWxgIGZpZWxkcyBvbiB0aGlzIGxpbmsgbm9kZSFcbiAgICAvLyBUaGVzZSBhcmUgdXNlZCAvIGNsZWFuZWQgaGVyZS5cbiAgICAvLyBUbyBkbzogY2xlYW4uXG4gICAgaWYgKGdldERhdGEoJ2luUmVmZXJlbmNlJykpIHtcbiAgICAgIC8qKiBAdHlwZSB7UmVmZXJlbmNlVHlwZX0gKi9cbiAgICAgIGNvbnN0IHJlZmVyZW5jZVR5cGUgPSBnZXREYXRhKCdyZWZlcmVuY2VUeXBlJykgfHwgJ3Nob3J0Y3V0J1xuICAgICAgbm9kZS50eXBlICs9ICdSZWZlcmVuY2UnXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBub2RlLnJlZmVyZW5jZVR5cGUgPSByZWZlcmVuY2VUeXBlXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS51cmxcbiAgICAgIGRlbGV0ZSBub2RlLnRpdGxlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLmlkZW50aWZpZXJcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLmxhYmVsXG4gICAgfVxuICAgIHNldERhdGEoJ3JlZmVyZW5jZVR5cGUnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aW1hZ2UoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIC8vIE5vdGU6IHRoZXJlIGFyZSBhbHNvIGBpZGVudGlmaWVyYCBhbmQgYGxhYmVsYCBmaWVsZHMgb24gdGhpcyBsaW5rIG5vZGUhXG4gICAgLy8gVGhlc2UgYXJlIHVzZWQgLyBjbGVhbmVkIGhlcmUuXG4gICAgLy8gVG8gZG86IGNsZWFuLlxuICAgIGlmIChnZXREYXRhKCdpblJlZmVyZW5jZScpKSB7XG4gICAgICAvKiogQHR5cGUge1JlZmVyZW5jZVR5cGV9ICovXG4gICAgICBjb25zdCByZWZlcmVuY2VUeXBlID0gZ2V0RGF0YSgncmVmZXJlbmNlVHlwZScpIHx8ICdzaG9ydGN1dCdcbiAgICAgIG5vZGUudHlwZSArPSAnUmVmZXJlbmNlJ1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgbm9kZS5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUudXJsXG4gICAgICBkZWxldGUgbm9kZS50aXRsZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS5pZGVudGlmaWVyXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS5sYWJlbFxuICAgIH1cbiAgICBzZXREYXRhKCdyZWZlcmVuY2VUeXBlJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGxhYmVsdGV4dCh0b2tlbikge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gICAgY29uc3QgYW5jZXN0b3IgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMl1cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBzdGFzaCB0aGlzIG9uIHRoZSBub2RlLCBhcyBpdCBtaWdodCBiZWNvbWUgYSByZWZlcmVuY2VcbiAgICAvLyBsYXRlci5cbiAgICBhbmNlc3Rvci5sYWJlbCA9IGRlY29kZVN0cmluZyhzdHJpbmcpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc2FtZSBhcyBhYm92ZS5cbiAgICBhbmNlc3Rvci5pZGVudGlmaWVyID0gbm9ybWFsaXplSWRlbnRpZmllcihzdHJpbmcpLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGxhYmVsKCkge1xuICAgIGNvbnN0IGZyYWdtZW50ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIC8vIEFzc3VtZSBhIHJlZmVyZW5jZS5cbiAgICBzZXREYXRhKCdpblJlZmVyZW5jZScsIHRydWUpXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAvKiogQHR5cGUge0FycmF5PFN0YXRpY1BocmFzaW5nQ29udGVudD59ICovXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBBc3N1bWUgc3RhdGljIHBocmFzaW5nIGNvbnRlbnQuXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGZyYWdtZW50LmNoaWxkcmVuXG4gICAgICBub2RlLmNoaWxkcmVuID0gY2hpbGRyZW5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5hbHQgPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdHJlc291cmNlZGVzdGluYXRpb25zdHJpbmcoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS51cmwgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRyZXNvdXJjZXRpdGxlc3RyaW5nKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudGl0bGUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRyZXNvdXJjZSgpIHtcbiAgICBzZXREYXRhKCdpblJlZmVyZW5jZScpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmVudGVycmVmZXJlbmNlKCkge1xuICAgIHNldERhdGEoJ3JlZmVyZW5jZVR5cGUnLCAnY29sbGFwc2VkJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdHJlZmVyZW5jZXN0cmluZyh0b2tlbikge1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBzdGFzaCB0aGlzIG9uIHRoZSBub2RlLCBhcyBpdCBtaWdodCBiZWNvbWUgYSByZWZlcmVuY2VcbiAgICAvLyBsYXRlci5cbiAgICBub2RlLmxhYmVsID0gbGFiZWxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBzYW1lIGFzIGFib3ZlLlxuICAgIG5vZGUuaWRlbnRpZmllciA9IG5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICAgICkudG9Mb3dlckNhc2UoKVxuICAgIHNldERhdGEoJ3JlZmVyZW5jZVR5cGUnLCAnZnVsbCcpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRjaGFyYWN0ZXJyZWZlcmVuY2VtYXJrZXIodG9rZW4pIHtcbiAgICBzZXREYXRhKCdjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlJywgdG9rZW4udHlwZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjaGFyYWN0ZXJyZWZlcmVuY2V2YWx1ZSh0b2tlbikge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICAgIGNvbnN0IHR5cGUgPSBnZXREYXRhKCdjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlJylcbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgdmFsdWVcbiAgICBpZiAodHlwZSkge1xuICAgICAgdmFsdWUgPSBkZWNvZGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKFxuICAgICAgICBkYXRhLFxuICAgICAgICB0eXBlID09PSAnY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYycgPyAxMCA6IDE2XG4gICAgICApXG4gICAgICBzZXREYXRhKCdjaGFyYWN0ZXJSZWZlcmVuY2VUeXBlJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoZGF0YSlcbiAgICAgIHZhbHVlID0gcmVzdWx0XG4gICAgfVxuICAgIGNvbnN0IHRhaWwgPSB0aGlzLnN0YWNrLnBvcCgpXG4gICAgdGFpbC52YWx1ZSArPSB2YWx1ZVxuICAgIHRhaWwucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGF1dG9saW5rcHJvdG9jb2wodG9rZW4pIHtcbiAgICBvbmV4aXRkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudXJsID0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRhdXRvbGlua2VtYWlsKHRva2VuKSB7XG4gICAgb25leGl0ZGF0YS5jYWxsKHRoaXMsIHRva2VuKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnVybCA9ICdtYWlsdG86JyArIHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gIH1cblxuICAvL1xuICAvLyBDcmVhdGVycy5cbiAgLy9cblxuICAvKiogQHJldHVybnMge0Jsb2NrcXVvdGV9ICovXG4gIGZ1bmN0aW9uIGJsb2NrUXVvdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Q29kZX0gKi9cbiAgZnVuY3Rpb24gY29kZUZsb3coKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgIGxhbmc6IG51bGwsXG4gICAgICBtZXRhOiBudWxsLFxuICAgICAgdmFsdWU6ICcnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtJbmxpbmVDb2RlfSAqL1xuICBmdW5jdGlvbiBjb2RlVGV4dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2lubGluZUNvZGUnLFxuICAgICAgdmFsdWU6ICcnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtEZWZpbml0aW9ufSAqL1xuICBmdW5jdGlvbiBkZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZGVmaW5pdGlvbicsXG4gICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgdGl0bGU6IG51bGwsXG4gICAgICB1cmw6ICcnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtFbXBoYXNpc30gKi9cbiAgZnVuY3Rpb24gZW1waGFzaXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlbXBoYXNpcycsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0hlYWRpbmd9ICovXG4gIGZ1bmN0aW9uIGhlYWRpbmcoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgZGVwdGhgIHdpbGwgYmUgc2V0IGxhdGVyLlxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaGVhZGluZycsXG4gICAgICBkZXB0aDogdW5kZWZpbmVkLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtCcmVha30gKi9cbiAgZnVuY3Rpb24gaGFyZEJyZWFrKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnYnJlYWsnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtIVE1MfSAqL1xuICBmdW5jdGlvbiBodG1sKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaHRtbCcsXG4gICAgICB2YWx1ZTogJydcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0ltYWdlfSAqL1xuICBmdW5jdGlvbiBpbWFnZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgdXJsOiAnJyxcbiAgICAgIGFsdDogbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7TGlua30gKi9cbiAgZnVuY3Rpb24gbGluaygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgdGl0bGU6IG51bGwsXG4gICAgICB1cmw6ICcnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqIEByZXR1cm5zIHtMaXN0fVxuICAgKi9cbiAgZnVuY3Rpb24gbGlzdCh0b2tlbikge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnbGlzdCcsXG4gICAgICBvcmRlcmVkOiB0b2tlbi50eXBlID09PSAnbGlzdE9yZGVyZWQnLFxuICAgICAgc3RhcnQ6IG51bGwsXG4gICAgICBzcHJlYWQ6IHRva2VuLl9zcHJlYWQsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogQHJldHVybnMge0xpc3RJdGVtfVxuICAgKi9cbiAgZnVuY3Rpb24gbGlzdEl0ZW0odG9rZW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2xpc3RJdGVtJyxcbiAgICAgIHNwcmVhZDogdG9rZW4uX3NwcmVhZCxcbiAgICAgIGNoZWNrZWQ6IG51bGwsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge1BhcmFncmFwaH0gKi9cbiAgZnVuY3Rpb24gcGFyYWdyYXBoKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7U3Ryb25nfSAqL1xuICBmdW5jdGlvbiBzdHJvbmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdzdHJvbmcnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtUZXh0fSAqL1xuICBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB2YWx1ZTogJydcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge1RoZW1hdGljQnJlYWt9ICovXG4gIGZ1bmN0aW9uIHRoZW1hdGljQnJlYWsoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICd0aGVtYXRpY0JyZWFrJ1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYSBwb2ludC1saWtlIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7UG9pbnR9IGRcbiAqICAgUG9pbnQtbGlrZSB2YWx1ZS5cbiAqIEByZXR1cm5zIHtQb2ludH1cbiAqICAgdW5pc3QgcG9pbnQuXG4gKi9cbmZ1bmN0aW9uIHBvaW50KGQpIHtcbiAgcmV0dXJuIHtcbiAgICBsaW5lOiBkLmxpbmUsXG4gICAgY29sdW1uOiBkLmNvbHVtbixcbiAgICBvZmZzZXQ6IGQub2Zmc2V0XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbmZpZ30gY29tYmluZWRcbiAqIEBwYXJhbSB7QXJyYXk8RXh0ZW5zaW9uIHwgQXJyYXk8RXh0ZW5zaW9uPj59IGV4dGVuc2lvbnNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBjb25maWd1cmUoY29tYmluZWQsIGV4dGVuc2lvbnMpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgd2hpbGUgKCsraW5kZXggPCBleHRlbnNpb25zLmxlbmd0aCkge1xuICAgIGNvbnN0IHZhbHVlID0gZXh0ZW5zaW9uc1tpbmRleF1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbmZpZ3VyZShjb21iaW5lZCwgdmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4dGVuc2lvbihjb21iaW5lZCwgdmFsdWUpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtDb25maWd9IGNvbWJpbmVkXG4gKiBAcGFyYW0ge0V4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gZXh0ZW5zaW9uKGNvbWJpbmVkLCBleHRlbnNpb24pIHtcbiAgLyoqIEB0eXBlIHtrZXlvZiBFeHRlbnNpb259ICovXG4gIGxldCBrZXlcbiAgZm9yIChrZXkgaW4gZXh0ZW5zaW9uKSB7XG4gICAgaWYgKG93bi5jYWxsKGV4dGVuc2lvbiwga2V5KSkge1xuICAgICAgaWYgKGtleSA9PT0gJ2NhbkNvbnRhaW5Fb2xzJykge1xuICAgICAgICBjb25zdCByaWdodCA9IGV4dGVuc2lvbltrZXldXG4gICAgICAgIGlmIChyaWdodCkge1xuICAgICAgICAgIGNvbWJpbmVkW2tleV0ucHVzaCguLi5yaWdodClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd0cmFuc2Zvcm1zJykge1xuICAgICAgICBjb25zdCByaWdodCA9IGV4dGVuc2lvbltrZXldXG4gICAgICAgIGlmIChyaWdodCkge1xuICAgICAgICAgIGNvbWJpbmVkW2tleV0ucHVzaCguLi5yaWdodClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdlbnRlcicgfHwga2V5ID09PSAnZXhpdCcpIHtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25ba2V5XVxuICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGNvbWJpbmVkW2tleV0sIHJpZ2h0KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKiBAdHlwZSB7T25FbnRlckVycm9yfSAqL1xuZnVuY3Rpb24gZGVmYXVsdE9uRXJyb3IobGVmdCwgcmlnaHQpIHtcbiAgaWYgKGxlZnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGNsb3NlIGAnICtcbiAgICAgICAgbGVmdC50eXBlICtcbiAgICAgICAgJ2AgKCcgK1xuICAgICAgICBzdHJpbmdpZnlQb3NpdGlvbih7XG4gICAgICAgICAgc3RhcnQ6IGxlZnQuc3RhcnQsXG4gICAgICAgICAgZW5kOiBsZWZ0LmVuZFxuICAgICAgICB9KSArXG4gICAgICAgICcpOiBhIGRpZmZlcmVudCB0b2tlbiAoYCcgK1xuICAgICAgICByaWdodC50eXBlICtcbiAgICAgICAgJ2AsICcgK1xuICAgICAgICBzdHJpbmdpZnlQb3NpdGlvbih7XG4gICAgICAgICAgc3RhcnQ6IHJpZ2h0LnN0YXJ0LFxuICAgICAgICAgIGVuZDogcmlnaHQuZW5kXG4gICAgICAgIH0pICtcbiAgICAgICAgJykgaXMgb3BlbidcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBjbG9zZSBkb2N1bWVudCwgYSB0b2tlbiAoYCcgK1xuICAgICAgICByaWdodC50eXBlICtcbiAgICAgICAgJ2AsICcgK1xuICAgICAgICBzdHJpbmdpZnlQb3NpdGlvbih7XG4gICAgICAgICAgc3RhcnQ6IHJpZ2h0LnN0YXJ0LFxuICAgICAgICAgIGVuZDogcmlnaHQuZW5kXG4gICAgICAgIH0pICtcbiAgICAgICAgJykgaXMgc3RpbGwgb3BlbidcbiAgICApXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUm9vdH0gUm9vdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duJykuT3B0aW9uc30gT3B0aW9uc1xuICovXG5cbmltcG9ydCB7ZnJvbU1hcmtkb3dufSBmcm9tICdtZGFzdC11dGlsLWZyb20tbWFya2Rvd24nXG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgndW5pZmllZCcpLlByb2Nlc3Nvcn1cbiAqIEB0eXBlIHtpbXBvcnQoJ3VuaWZpZWQnKS5QbHVnaW48W09wdGlvbnM/XSB8IHZvaWRbXSwgc3RyaW5nLCBSb290Pn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtYXJrUGFyc2Uob3B0aW9ucykge1xuICAvKiogQHR5cGUge2ltcG9ydCgndW5pZmllZCcpLlBhcnNlckZ1bmN0aW9uPFJvb3Q+fSAqL1xuICBjb25zdCBwYXJzZXIgPSAoZG9jKSA9PiB7XG4gICAgLy8gQXNzdW1lIG9wdGlvbnMuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSAvKiogQHR5cGUge09wdGlvbnN9ICovICh0aGlzLmRhdGEoJ3NldHRpbmdzJykpXG5cbiAgICByZXR1cm4gZnJvbU1hcmtkb3duKFxuICAgICAgZG9jLFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgc2V0dGluZ3MsIG9wdGlvbnMsIHtcbiAgICAgICAgLy8gTm90ZTogdGhlc2Ugb3B0aW9ucyBhcmUgbm90IGluIHRoZSByZWFkbWUuXG4gICAgICAgIC8vIFRoZSBnb2FsIGlzIGZvciB0aGVtIHRvIGJlIHNldCBieSBwbHVnaW5zIG9uIGBkYXRhYCBpbnN0ZWFkIG9mIGJlaW5nXG4gICAgICAgIC8vIHBhc3NlZCBieSB1c2Vycy5cbiAgICAgICAgZXh0ZW5zaW9uczogdGhpcy5kYXRhKCdtaWNyb21hcmtFeHRlbnNpb25zJykgfHwgW10sXG4gICAgICAgIG1kYXN0RXh0ZW5zaW9uczogdGhpcy5kYXRhKCdmcm9tTWFya2Rvd25FeHRlbnNpb25zJykgfHwgW11cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgT2JqZWN0LmFzc2lnbih0aGlzLCB7UGFyc2VyOiBwYXJzZXJ9KVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBhcmVudH0gUGFyZW50XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgRm5cbiAqIEB0ZW1wbGF0ZSBGYWxsYmFja1xuICogQHR5cGVkZWYge0ZuIGV4dGVuZHMgKHZhbHVlOiBhbnkpID0+IHZhbHVlIGlzIGluZmVyIFRoaW5nID8gVGhpbmcgOiBGYWxsYmFja30gUHJlZGljYXRlXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgQ2hlY2tcbiAqICAgQ2hlY2sgdGhhdCBhbiBhcmJpdHJhcnkgdmFsdWUgaXMgYSBub2RlLlxuICogQHBhcmFtIHt1bmtub3dufSB0aGlzXG4gKiAgIFRoZSBnaXZlbiBjb250ZXh0LlxuICogQHBhcmFtIHt1bmtub3dufSBbbm9kZV1cbiAqICAgQW55dGhpbmcgKHR5cGljYWxseSBhIG5vZGUpLlxuICogQHBhcmFtIHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSBbaW5kZXhdXG4gKiAgIFRoZSBub2RlXHUyMDE5cyBwb3NpdGlvbiBpbiBpdHMgcGFyZW50LlxuICogQHBhcmFtIHtQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGFyZW50XVxuICogICBUaGUgbm9kZVx1MjAxOXMgcGFyZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgdGhpcyBpcyBhIG5vZGUgYW5kIHBhc3NlcyBhIHRlc3QuXG4gKlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHVua25vd24+IHwgTm9kZX0gUHJvcHNcbiAqICAgT2JqZWN0IHRvIGNoZWNrIGZvciBlcXVpdmFsZW5jZS5cbiAqXG4gKiAgIE5vdGU6IGBOb2RlYCBpcyBpbmNsdWRlZCBhcyBpdCBpcyBjb21tb24gYnV0IGlzIG5vdCBpbmRleGFibGUuXG4gKlxuICogQHR5cGVkZWYge0FycmF5PFByb3BzIHwgVGVzdEZ1bmN0aW9uIHwgc3RyaW5nPiB8IFByb3BzIHwgVGVzdEZ1bmN0aW9uIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gVGVzdFxuICogICBDaGVjayBmb3IgYW4gYXJiaXRyYXJ5IG5vZGUuXG4gKlxuICogQGNhbGxiYWNrIFRlc3RGdW5jdGlvblxuICogICBDaGVjayBpZiBhIG5vZGUgcGFzc2VzIGEgdGVzdC5cbiAqIEBwYXJhbSB7dW5rbm93bn0gdGhpc1xuICogICBUaGUgZ2l2ZW4gY29udGV4dC5cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICogICBBIG5vZGUuXG4gKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gW2luZGV4XVxuICogICBUaGUgbm9kZVx1MjAxOXMgcG9zaXRpb24gaW4gaXRzIHBhcmVudC5cbiAqIEBwYXJhbSB7UGFyZW50IHwgdW5kZWZpbmVkfSBbcGFyZW50XVxuICogICBUaGUgbm9kZVx1MjAxOXMgcGFyZW50LlxuICogQHJldHVybnMge2Jvb2xlYW4gfCB1bmRlZmluZWQgfCB2b2lkfVxuICogICBXaGV0aGVyIHRoaXMgbm9kZSBwYXNzZXMgdGhlIHRlc3QuXG4gKlxuICogICBOb3RlOiBgdm9pZGAgaXMgaW5jbHVkZWQgdW50aWwgVFMgc2VlcyBubyByZXR1cm4gYXMgYHVuZGVmaW5lZGAuXG4gKi9cblxuLyoqXG4gKiBDaGVjayBpZiBgbm9kZWAgaXMgYSBgTm9kZWAgYW5kIHdoZXRoZXIgaXQgcGFzc2VzIHRoZSBnaXZlbiB0ZXN0LlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gbm9kZVxuICogICBUaGluZyB0byBjaGVjaywgdHlwaWNhbGx5IGBOb2RlYC5cbiAqIEBwYXJhbSB7VGVzdH0gdGVzdFxuICogICBBIGNoZWNrIGZvciBhIHNwZWNpZmljIG5vZGUuXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IGluZGV4XG4gKiAgIFRoZSBub2RlXHUyMDE5cyBwb3NpdGlvbiBpbiBpdHMgcGFyZW50LlxuICogQHBhcmFtIHtQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBwYXJlbnRcbiAqICAgVGhlIG5vZGVcdTIwMTlzIHBhcmVudC5cbiAqIEBwYXJhbSB7dW5rbm93bn0gY29udGV4dFxuICogICBDb250ZXh0IG9iamVjdCAoYHRoaXNgKSB0byBwYXNzIHRvIGB0ZXN0YCBmdW5jdGlvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBgbm9kZWAgaXMgYSBub2RlIGFuZCBwYXNzZXMgYSB0ZXN0LlxuICovXG5leHBvcnQgY29uc3QgaXMgPVxuICAvLyBOb3RlOiBvdmVybG9hZHMgaW4gSlNEb2MgY2FuXHUyMDE5dCB5ZXQgdXNlIGRpZmZlcmVudCBgQHRlbXBsYXRlYHMuXG4gIC8qKlxuICAgKiBAdHlwZSB7KFxuICAgKiAgICg8Q29uZGl0aW9uIGV4dGVuZHMgc3RyaW5nPihub2RlOiB1bmtub3duLCB0ZXN0OiBDb25kaXRpb24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSAmIHt0eXBlOiBDb25kaXRpb259KSAmXG4gICAqICAgKDxDb25kaXRpb24gZXh0ZW5kcyBQcm9wcz4obm9kZTogdW5rbm93biwgdGVzdDogQ29uZGl0aW9uLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUgJiBDb25kaXRpb24pICZcbiAgICogICAoPENvbmRpdGlvbiBleHRlbmRzIFRlc3RGdW5jdGlvbj4obm9kZTogdW5rbm93biwgdGVzdDogQ29uZGl0aW9uLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUgJiBQcmVkaWNhdGU8Q29uZGl0aW9uLCBOb2RlPikgJlxuICAgKiAgICgobm9kZT86IG51bGwgfCB1bmRlZmluZWQpID0+IGZhbHNlKSAmXG4gICAqICAgKChub2RlOiB1bmtub3duLCB0ZXN0PzogbnVsbCB8IHVuZGVmaW5lZCwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlKSAmXG4gICAqICAgKChub2RlOiB1bmtub3duLCB0ZXN0PzogVGVzdCwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gYm9vbGVhbilcbiAgICogKX1cbiAgICovXG4gIChcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3Vua25vd259IFtub2RlXVxuICAgICAqIEBwYXJhbSB7VGVzdH0gW3Rlc3RdXG4gICAgICogQHBhcmFtIHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSBbaW5kZXhdXG4gICAgICogQHBhcmFtIHtQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGFyZW50XVxuICAgICAqIEBwYXJhbSB7dW5rbm93bn0gW2NvbnRleHRdXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbiAgICBmdW5jdGlvbiAobm9kZSwgdGVzdCwgaW5kZXgsIHBhcmVudCwgY29udGV4dCkge1xuICAgICAgY29uc3QgY2hlY2sgPSBjb252ZXJ0KHRlc3QpXG5cbiAgICAgIGlmIChcbiAgICAgICAgaW5kZXggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBpbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgIGluZGV4IDwgMCB8fFxuICAgICAgICAgIGluZGV4ID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwb3NpdGl2ZSBmaW5pdGUgaW5kZXgnKVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHBhcmVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHBhcmVudCAhPT0gbnVsbCAmJlxuICAgICAgICAoIWlzKHBhcmVudCkgfHwgIXBhcmVudC5jaGlsZHJlbilcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHBhcmVudCBub2RlJylcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAocGFyZW50ID09PSB1bmRlZmluZWQgfHwgcGFyZW50ID09PSBudWxsKSAhPT1cbiAgICAgICAgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IG51bGwpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBib3RoIHBhcmVudCBhbmQgaW5kZXgnKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbG9va3NMaWtlQU5vZGUobm9kZSlcbiAgICAgICAgPyBjaGVjay5jYWxsKGNvbnRleHQsIG5vZGUsIGluZGV4LCBwYXJlbnQpXG4gICAgICAgIDogZmFsc2VcbiAgICB9XG4gIClcblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBhc3NlcnRpb24gZnJvbSBhIHRlc3QuXG4gKlxuICogVXNlZnVsIGlmIHlvdVx1MjAxOXJlIGdvaW5nIHRvIHRlc3QgbWFueSBub2RlcywgZm9yIGV4YW1wbGUgd2hlbiBjcmVhdGluZyBhXG4gKiB1dGlsaXR5IHdoZXJlIHNvbWV0aGluZyBlbHNlIHBhc3NlcyBhIGNvbXBhdGlibGUgdGVzdC5cbiAqXG4gKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBhIGJpdCBmYXN0ZXIgYmVjYXVzZSBpdCBleHBlY3RzIHZhbGlkIGlucHV0IG9ubHk6XG4gKiBhIGBub2RlYCwgYGluZGV4YCwgYW5kIGBwYXJlbnRgLlxuICpcbiAqIEBwYXJhbSB7VGVzdH0gdGVzdFxuICogICAqICAgd2hlbiBudWxsaXNoLCBjaGVja3MgaWYgYG5vZGVgIGlzIGEgYE5vZGVgLlxuICogICAqICAgd2hlbiBgc3RyaW5nYCwgd29ya3MgbGlrZSBwYXNzaW5nIGAobm9kZSkgPT4gbm9kZS50eXBlID09PSB0ZXN0YC5cbiAqICAgKiAgIHdoZW4gYGZ1bmN0aW9uYCBjaGVja3MgaWYgZnVuY3Rpb24gcGFzc2VkIHRoZSBub2RlIGlzIHRydWUuXG4gKiAgICogICB3aGVuIGBvYmplY3RgLCBjaGVja3MgdGhhdCBhbGwga2V5cyBpbiB0ZXN0IGFyZSBpbiBub2RlLCBhbmQgdGhhdCB0aGV5IGhhdmUgKHN0cmljdGx5KSBlcXVhbCB2YWx1ZXMuXG4gKiAgICogICB3aGVuIGBhcnJheWAsIGNoZWNrcyBpZiBhbnkgb25lIG9mIHRoZSBzdWJ0ZXN0cyBwYXNzLlxuICogQHJldHVybnMge0NoZWNrfVxuICogICBBbiBhc3NlcnRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0ID1cbiAgLy8gTm90ZTogb3ZlcmxvYWRzIGluIEpTRG9jIGNhblx1MjAxOXQgeWV0IHVzZSBkaWZmZXJlbnQgYEB0ZW1wbGF0ZWBzLlxuICAvKipcbiAgICogQHR5cGUgeyhcbiAgICogICAoPENvbmRpdGlvbiBleHRlbmRzIHN0cmluZz4odGVzdDogQ29uZGl0aW9uKSA9PiAobm9kZTogdW5rbm93biwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlICYge3R5cGU6IENvbmRpdGlvbn0pICZcbiAgICogICAoPENvbmRpdGlvbiBleHRlbmRzIFByb3BzPih0ZXN0OiBDb25kaXRpb24pID0+IChub2RlOiB1bmtub3duLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUgJiBDb25kaXRpb24pICZcbiAgICogICAoPENvbmRpdGlvbiBleHRlbmRzIFRlc3RGdW5jdGlvbj4odGVzdDogQ29uZGl0aW9uKSA9PiAobm9kZTogdW5rbm93biwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlICYgUHJlZGljYXRlPENvbmRpdGlvbiwgTm9kZT4pICZcbiAgICogICAoKHRlc3Q/OiBudWxsIHwgdW5kZWZpbmVkKSA9PiAobm9kZT86IHVua25vd24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSkgJlxuICAgKiAgICgodGVzdD86IFRlc3QpID0+IENoZWNrKVxuICAgKiApfVxuICAgKi9cbiAgKFxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7VGVzdH0gW3Rlc3RdXG4gICAgICogQHJldHVybnMge0NoZWNrfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uICh0ZXN0KSB7XG4gICAgICBpZiAodGVzdCA9PT0gbnVsbCB8fCB0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG9rXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGVzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2FzdEZhY3RvcnkodGVzdClcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0ZXN0KSA/IGFueUZhY3RvcnkodGVzdCkgOiBwcm9wc0ZhY3RvcnkodGVzdClcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdHlwZUZhY3RvcnkodGVzdClcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiwgc3RyaW5nLCBvciBvYmplY3QgYXMgdGVzdCcpXG4gICAgfVxuICApXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxQcm9wcyB8IFRlc3RGdW5jdGlvbiB8IHN0cmluZz59IHRlc3RzXG4gKiBAcmV0dXJucyB7Q2hlY2t9XG4gKi9cbmZ1bmN0aW9uIGFueUZhY3RvcnkodGVzdHMpIHtcbiAgLyoqIEB0eXBlIHtBcnJheTxDaGVjaz59ICovXG4gIGNvbnN0IGNoZWNrcyA9IFtdXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCB0ZXN0cy5sZW5ndGgpIHtcbiAgICBjaGVja3NbaW5kZXhdID0gY29udmVydCh0ZXN0c1tpbmRleF0pXG4gIH1cblxuICByZXR1cm4gY2FzdEZhY3RvcnkoYW55KVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7dW5rbm93bn1cbiAgICogQHR5cGUge1Rlc3RGdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGFueSguLi5wYXJhbWV0ZXJzKSB7XG4gICAgbGV0IGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgY2hlY2tzLmxlbmd0aCkge1xuICAgICAgaWYgKGNoZWNrc1tpbmRleF0uYXBwbHkodGhpcywgcGFyYW1ldGVycykpIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyoqXG4gKiBUdXJuIGFuIG9iamVjdCBpbnRvIGEgdGVzdCBmb3IgYSBub2RlIHdpdGggYSBjZXJ0YWluIGZpZWxkcy5cbiAqXG4gKiBAcGFyYW0ge1Byb3BzfSBjaGVja1xuICogQHJldHVybnMge0NoZWNrfVxuICovXG5mdW5jdGlvbiBwcm9wc0ZhY3RvcnkoY2hlY2spIHtcbiAgY29uc3QgY2hlY2tBc1JlY29yZCA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovIChjaGVjaylcblxuICByZXR1cm4gY2FzdEZhY3RvcnkoYWxsKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBmdW5jdGlvbiBhbGwobm9kZSkge1xuICAgIGNvbnN0IG5vZGVBc1JlY29yZCA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovIChcbiAgICAgIC8qKiBAdHlwZSB7dW5rbm93bn0gKi8gKG5vZGUpXG4gICAgKVxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gICAgbGV0IGtleVxuXG4gICAgZm9yIChrZXkgaW4gY2hlY2spIHtcbiAgICAgIGlmIChub2RlQXNSZWNvcmRba2V5XSAhPT0gY2hlY2tBc1JlY29yZFtrZXldKSByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbi8qKlxuICogVHVybiBhIHN0cmluZyBpbnRvIGEgdGVzdCBmb3IgYSBub2RlIHdpdGggYSBjZXJ0YWluIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNoZWNrXG4gKiBAcmV0dXJucyB7Q2hlY2t9XG4gKi9cbmZ1bmN0aW9uIHR5cGVGYWN0b3J5KGNoZWNrKSB7XG4gIHJldHVybiBjYXN0RmFjdG9yeSh0eXBlKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAgICovXG4gIGZ1bmN0aW9uIHR5cGUobm9kZSkge1xuICAgIHJldHVybiBub2RlICYmIG5vZGUudHlwZSA9PT0gY2hlY2tcbiAgfVxufVxuXG4vKipcbiAqIFR1cm4gYSBjdXN0b20gdGVzdCBpbnRvIGEgdGVzdCBmb3IgYSBub2RlIHRoYXQgcGFzc2VzIHRoYXQgdGVzdC5cbiAqXG4gKiBAcGFyYW0ge1Rlc3RGdW5jdGlvbn0gdGVzdEZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7Q2hlY2t9XG4gKi9cbmZ1bmN0aW9uIGNhc3RGYWN0b3J5KHRlc3RGdW5jdGlvbikge1xuICByZXR1cm4gY2hlY2tcblxuICAvKipcbiAgICogQHRoaXMge3Vua25vd259XG4gICAqIEB0eXBlIHtDaGVja31cbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrKHZhbHVlLCBpbmRleCwgcGFyZW50KSB7XG4gICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICBsb29rc0xpa2VBTm9kZSh2YWx1ZSkgJiZcbiAgICAgICAgdGVzdEZ1bmN0aW9uLmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiB1bmRlZmluZWQsXG4gICAgICAgICAgcGFyZW50IHx8IHVuZGVmaW5lZFxuICAgICAgICApXG4gICAgKVxuICB9XG59XG5cbmZ1bmN0aW9uIG9rKCkge1xuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBOb2RlfVxuICovXG5mdW5jdGlvbiBsb29rc0xpa2VBTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAndHlwZScgaW4gdmFsdWVcbn1cbiIsICIvKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3IoZCkge1xuICByZXR1cm4gZFxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBVbmlzdE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUGFyZW50fSBVbmlzdFBhcmVudFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0V4Y2x1ZGU8aW1wb3J0KCd1bmlzdC11dGlsLWlzJykuVGVzdCwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZH0gVGVzdFxuICogICBUZXN0IGZyb20gYHVuaXN0LXV0aWwtaXNgLlxuICpcbiAqICAgTm90ZTogd2UgaGF2ZSByZW1vdmUgYW5kIGFkZCBgdW5kZWZpbmVkYCwgYmVjYXVzZSBvdGhlcndpc2Ugd2hlbiBnZW5lcmF0aW5nXG4gKiAgIGF1dG9tYXRpYyBgLmQudHNgIGZpbGVzLCBUUyB0cmllcyB0byBmbGF0dGVuIHBhdGhzIGZyb20gYSBsb2NhbCBwZXJzcGVjdGl2ZSxcbiAqICAgd2hpY2ggZG9lc25cdTIwMTl0IHdvcmsgd2hlbiBwdWJsaXNoaW5nIG9uIG5wbS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIEZuIGV4dGVuZHMgKHZhbHVlOiBhbnkpID0+IHZhbHVlIGlzIGluZmVyIFRoaW5nXG4gKiAgID8gVGhpbmdcbiAqICAgOiBGYWxsYmFja1xuICogKX0gUHJlZGljYXRlXG4gKiAgIEdldCB0aGUgdmFsdWUgb2YgYSB0eXBlIGd1YXJkIGBGbmAuXG4gKiBAdGVtcGxhdGUgRm5cbiAqICAgVmFsdWU7IHR5cGljYWxseSBmdW5jdGlvbiB0aGF0IGlzIGEgdHlwZSBndWFyZCAoc3VjaCBhcyBgKHgpOiB4IGlzIFlgKS5cbiAqIEB0ZW1wbGF0ZSBGYWxsYmFja1xuICogICBWYWx1ZSB0byB5aWVsZCBpZiBgRm5gIGlzIG5vdCBhIHR5cGUgZ3VhcmQuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBDaGVjayBleHRlbmRzIG51bGwgfCB1bmRlZmluZWQgLy8gTm8gdGVzdC5cbiAqICAgPyBWYWx1ZVxuICogICA6IFZhbHVlIGV4dGVuZHMge3R5cGU6IENoZWNrfSAvLyBTdHJpbmcgKHR5cGUpIHRlc3QuXG4gKiAgID8gVmFsdWVcbiAqICAgOiBWYWx1ZSBleHRlbmRzIENoZWNrIC8vIFBhcnRpYWwgdGVzdC5cbiAqICAgPyBWYWx1ZVxuICogICA6IENoZWNrIGV4dGVuZHMgRnVuY3Rpb24gLy8gRnVuY3Rpb24gdGVzdC5cbiAqICAgPyBQcmVkaWNhdGU8Q2hlY2ssIFZhbHVlPiBleHRlbmRzIFZhbHVlXG4gKiAgICAgPyBQcmVkaWNhdGU8Q2hlY2ssIFZhbHVlPlxuICogICAgIDogbmV2ZXJcbiAqICAgOiBuZXZlciAvLyBTb21lIG90aGVyIHRlc3Q/XG4gKiApfSBNYXRjaGVzT25lXG4gKiAgIENoZWNrIHdoZXRoZXIgYSBub2RlIG1hdGNoZXMgYSBwcmltaXRpdmUgY2hlY2sgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICogQHRlbXBsYXRlIFZhbHVlXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgdW5pc3QgYE5vZGVgLlxuICogQHRlbXBsYXRlIENoZWNrXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdCwgYnV0IG5vdCBhcnJheXMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBDaGVjayBleHRlbmRzIEFycmF5PGFueT5cbiAqICAgPyBNYXRjaGVzT25lPFZhbHVlLCBDaGVja1trZXlvZiBDaGVja10+XG4gKiAgIDogTWF0Y2hlc09uZTxWYWx1ZSwgQ2hlY2s+XG4gKiApfSBNYXRjaGVzXG4gKiAgIENoZWNrIHdoZXRoZXIgYSBub2RlIG1hdGNoZXMgYSBjaGVjayBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gKiBAdGVtcGxhdGUgVmFsdWVcbiAqICAgVmFsdWU7IHR5cGljYWxseSB1bmlzdCBgTm9kZWAuXG4gKiBAdGVtcGxhdGUgQ2hlY2tcbiAqICAgVmFsdWU7IHR5cGljYWxseSBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgezAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgfCA3IHwgOCB8IDkgfCAxMH0gVWludFxuICogICBOdW1iZXI7IGNhcHBlZCByZWFzb25hYmx5LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0kgZXh0ZW5kcyAwID8gMSA6IEkgZXh0ZW5kcyAxID8gMiA6IEkgZXh0ZW5kcyAyID8gMyA6IEkgZXh0ZW5kcyAzID8gNCA6IEkgZXh0ZW5kcyA0ID8gNSA6IEkgZXh0ZW5kcyA1ID8gNiA6IEkgZXh0ZW5kcyA2ID8gNyA6IEkgZXh0ZW5kcyA3ID8gOCA6IEkgZXh0ZW5kcyA4ID8gOSA6IDEwfSBJbmNyZW1lbnRcbiAqICAgSW5jcmVtZW50IGEgbnVtYmVyIGluIHRoZSB0eXBlIHN5c3RlbS5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW0k9MF1cbiAqICAgSW5kZXguXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBOb2RlIGV4dGVuZHMgVW5pc3RQYXJlbnRcbiAqICAgPyBOb2RlIGV4dGVuZHMge2NoaWxkcmVuOiBBcnJheTxpbmZlciBDaGlsZHJlbj59XG4gKiAgICAgPyBDaGlsZCBleHRlbmRzIENoaWxkcmVuID8gTm9kZSA6IG5ldmVyXG4gKiAgICAgOiBuZXZlclxuICogICA6IG5ldmVyXG4gKiApfSBJbnRlcm5hbFBhcmVudFxuICogICBDb2xsZWN0IG5vZGVzIHRoYXQgY2FuIGJlIHBhcmVudHMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBOb2RlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7SW50ZXJuYWxQYXJlbnQ8SW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlPiwgQ2hpbGQ+fSBQYXJlbnRcbiAqICAgQ29sbGVjdCBub2RlcyBpbiBgVHJlZWAgdGhhdCBjYW4gYmUgcGFyZW50cyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIERlcHRoIGV4dGVuZHMgTWF4XG4gKiAgID8gbmV2ZXJcbiAqICAgOlxuICogICAgIHwgSW50ZXJuYWxQYXJlbnQ8Tm9kZSwgQ2hpbGQ+XG4gKiAgICAgfCBJbnRlcm5hbEFuY2VzdG9yPE5vZGUsIEludGVybmFsUGFyZW50PE5vZGUsIENoaWxkPiwgTWF4LCBJbmNyZW1lbnQ8RGVwdGg+PlxuICogKX0gSW50ZXJuYWxBbmNlc3RvclxuICogICBDb2xsZWN0IG5vZGVzIGluIGBUcmVlYCB0aGF0IGNhbiBiZSBhbmNlc3RvcnMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBOb2RlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtNYXg9MTBdXG4gKiAgIE1heDsgc2VhcmNoZXMgdXAgdG8gdGhpcyBkZXB0aC5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW0RlcHRoPTBdXG4gKiAgIEN1cnJlbnQgZGVwdGguXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7SW50ZXJuYWxBbmNlc3RvcjxJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBDaGlsZD59IEFuY2VzdG9yXG4gKiAgIENvbGxlY3Qgbm9kZXMgaW4gYFRyZWVgIHRoYXQgY2FuIGJlIGFuY2VzdG9ycyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIFRyZWUgZXh0ZW5kcyBVbmlzdFBhcmVudFxuICogICAgID8gRGVwdGggZXh0ZW5kcyBNYXhcbiAqICAgICAgID8gVHJlZVxuICogICAgICAgOiBUcmVlIHwgSW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlWydjaGlsZHJlbiddW251bWJlcl0sIE1heCwgSW5jcmVtZW50PERlcHRoPj5cbiAqICAgICA6IFRyZWVcbiAqICl9IEluY2x1c2l2ZURlc2NlbmRhbnRcbiAqICAgQ29sbGVjdCBhbGwgKGluY2x1c2l2ZSkgZGVzY2VuZGFudHMgb2YgYFRyZWVgLlxuICpcbiAqICAgPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBmYXN0ZXN0IHdheSB0b1xuICogICA+IHJlY3Vyc2Ugd2l0aG91dCBhY3R1YWxseSBydW5uaW5nIGludG8gYW4gaW5maW5pdGUgbG9vcCwgd2hpY2ggdGhlXG4gKiAgID4gcHJldmlvdXMgdmVyc2lvbiBkaWQuXG4gKiAgID5cbiAqICAgPiBQcmFjdGljYWxseSwgYSBtYXggb2YgYDJgIGlzIHR5cGljYWxseSBlbm91Z2ggYXNzdW1pbmcgYSBgUm9vdGAgaXNcbiAqICAgPiBwYXNzZWQsIGJ1dCBpdCBkb2Vzblx1MjAxOXQgaW1wcm92ZSBwZXJmb3JtYW5jZS5cbiAqICAgPiBJdCBnZXRzIGhpZ2hlciB3aXRoIGBMaXN0ID4gTGlzdEl0ZW0gPiBUYWJsZSA+IFRhYmxlUm93ID4gVGFibGVDZWxsYC5cbiAqICAgPiBVc2luZyB1cCB0byBgMTBgIGRvZXNuXHUyMDE5dCBodXJ0IG9yIGhlbHAgZWl0aGVyLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgVHJlZSB0eXBlLlxuICogQHRlbXBsYXRlIHtVaW50fSBbTWF4PTEwXVxuICogICBNYXg7IHNlYXJjaGVzIHVwIHRvIHRoaXMgZGVwdGguXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtEZXB0aD0wXVxuICogICBDdXJyZW50IGRlcHRoLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeydza2lwJyB8IGJvb2xlYW59IEFjdGlvblxuICogICBVbmlvbiBvZiB0aGUgYWN0aW9uIHR5cGVzLlxuICpcbiAqIEB0eXBlZGVmIHtudW1iZXJ9IEluZGV4XG4gKiAgIE1vdmUgdG8gdGhlIHNpYmxpbmcgYXQgYGluZGV4YCBuZXh0IChhZnRlciBub2RlIGl0c2VsZiBpcyBjb21wbGV0ZWx5XG4gKiAgIHRyYXZlcnNlZCkuXG4gKlxuICogICBVc2VmdWwgaWYgbXV0YXRpbmcgdGhlIHRyZWUsIHN1Y2ggYXMgcmVtb3ZpbmcgdGhlIG5vZGUgdGhlIHZpc2l0b3IgaXNcbiAqICAgY3VycmVudGx5IG9uLCBvciBhbnkgb2YgaXRzIHByZXZpb3VzIHNpYmxpbmdzLlxuICogICBSZXN1bHRzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgY2hpbGRyZW4ubGVuZ3RoYCBzdG9wXG4gKiAgIHRyYXZlcnNpbmcgdGhlIHBhcmVudC5cbiAqXG4gKiBAdHlwZWRlZiB7WyhBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHwgdm9pZCk/LCAoSW5kZXggfCBudWxsIHwgdW5kZWZpbmVkKT9dfSBBY3Rpb25UdXBsZVxuICogICBMaXN0IHdpdGggb25lIG9yIHR3byB2YWx1ZXMsIHRoZSBmaXJzdCBhbiBhY3Rpb24sIHRoZSBzZWNvbmQgYW4gaW5kZXguXG4gKlxuICogQHR5cGVkZWYge0FjdGlvbiB8IEFjdGlvblR1cGxlIHwgSW5kZXggfCBudWxsIHwgdW5kZWZpbmVkIHwgdm9pZH0gVmlzaXRvclJlc3VsdFxuICogICBBbnkgdmFsdWUgdGhhdCBjYW4gYmUgcmV0dXJuZWQgZnJvbSBhIHZpc2l0b3IuXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgVmlzaXRvclxuICogICBIYW5kbGUgYSBub2RlIChtYXRjaGluZyBgdGVzdGAsIGlmIGdpdmVuKS5cbiAqXG4gKiAgIFZpc2l0b3JzIGFyZSBmcmVlIHRvIHRyYW5zZm9ybSBgbm9kZWAuXG4gKiAgIFRoZXkgY2FuIGFsc28gdHJhbnNmb3JtIHRoZSBwYXJlbnQgb2Ygbm9kZSAodGhlIGxhc3Qgb2YgYGFuY2VzdG9yc2ApLlxuICpcbiAqICAgUmVwbGFjaW5nIGBub2RlYCBpdHNlbGYsIGlmIGBTS0lQYCBpcyBub3QgcmV0dXJuZWQsIHN0aWxsIGNhdXNlcyBpdHNcbiAqICAgZGVzY2VuZGFudHMgdG8gYmUgd2Fsa2VkICh3aGljaCBpcyBhIGJ1ZykuXG4gKlxuICogICBXaGVuIGFkZGluZyBvciByZW1vdmluZyBwcmV2aW91cyBzaWJsaW5ncyBvZiBgbm9kZWAgKG9yIG5leHQgc2libGluZ3MsIGluXG4gKiAgIGNhc2Ugb2YgcmV2ZXJzZSksIHRoZSBgVmlzaXRvcmAgc2hvdWxkIHJldHVybiBhIG5ldyBgSW5kZXhgIHRvIHNwZWNpZnkgdGhlXG4gKiAgIHNpYmxpbmcgdG8gdHJhdmVyc2UgYWZ0ZXIgYG5vZGVgIGlzIHRyYXZlcnNlZC5cbiAqICAgQWRkaW5nIG9yIHJlbW92aW5nIG5leHQgc2libGluZ3Mgb2YgYG5vZGVgIChvciBwcmV2aW91cyBzaWJsaW5ncywgaW4gY2FzZVxuICogICBvZiByZXZlcnNlKSBpcyBoYW5kbGVkIGFzIGV4cGVjdGVkIHdpdGhvdXQgbmVlZGluZyB0byByZXR1cm4gYSBuZXcgYEluZGV4YC5cbiAqXG4gKiAgIFJlbW92aW5nIHRoZSBjaGlsZHJlbiBwcm9wZXJ0eSBvZiBhbiBhbmNlc3RvciBzdGlsbCByZXN1bHRzIGluIHRoZW0gYmVpbmdcbiAqICAgdHJhdmVyc2VkLlxuICogQHBhcmFtIHtWaXNpdGVkfSBub2RlXG4gKiAgIEZvdW5kIG5vZGUuXG4gKiBAcGFyYW0ge0FycmF5PFZpc2l0ZWRQYXJlbnRzPn0gYW5jZXN0b3JzXG4gKiAgIEFuY2VzdG9ycyBvZiBgbm9kZWAuXG4gKiBAcmV0dXJucyB7VmlzaXRvclJlc3VsdH1cbiAqICAgV2hhdCB0byBkbyBuZXh0LlxuICpcbiAqICAgQW4gYEluZGV4YCBpcyB0cmVhdGVkIGFzIGEgdHVwbGUgb2YgYFtDT05USU5VRSwgSW5kZXhdYC5cbiAqICAgQW4gYEFjdGlvbmAgaXMgdHJlYXRlZCBhcyBhIHR1cGxlIG9mIGBbQWN0aW9uXWAuXG4gKlxuICogICBQYXNzaW5nIGEgdHVwbGUgYmFjayBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoZSBgQWN0aW9uYCBpcyBgU0tJUGAuXG4gKiAgIFdoZW4gdGhlIGBBY3Rpb25gIGlzIGBFWElUYCwgdGhhdCBhY3Rpb24gY2FuIGJlIHJldHVybmVkLlxuICogICBXaGVuIHRoZSBgQWN0aW9uYCBpcyBgQ09OVElOVUVgLCBgSW5kZXhgIGNhbiBiZSByZXR1cm5lZC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBbVmlzaXRlZD1VbmlzdE5vZGVdXG4gKiAgIFZpc2l0ZWQgbm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtVbmlzdFBhcmVudH0gW1Zpc2l0ZWRQYXJlbnRzPVVuaXN0UGFyZW50XVxuICogICBBbmNlc3RvciB0eXBlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1Zpc2l0b3I8TWF0Y2hlczxJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBDaGVjaz4sIEFuY2VzdG9yPFRyZWUsIE1hdGNoZXM8SW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlPiwgQ2hlY2s+Pj59IEJ1aWxkVmlzaXRvclxuICogICBCdWlsZCBhIHR5cGVkIGBWaXNpdG9yYCBmdW5jdGlvbiBmcm9tIGEgdHJlZSBhbmQgYSB0ZXN0LlxuICpcbiAqICAgSXQgd2lsbCBpbmZlciB3aGljaCB2YWx1ZXMgYXJlIHBhc3NlZCBhcyBgbm9kZWAgYW5kIHdoaWNoIGFzIGBwYXJlbnRzYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBbVHJlZT1VbmlzdE5vZGVdXG4gKiAgIFRyZWUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VGVzdH0gW0NoZWNrPVRlc3RdXG4gKiAgIFRlc3QgdHlwZS5cbiAqL1xuXG5pbXBvcnQge2NvbnZlcnR9IGZyb20gJ3VuaXN0LXV0aWwtaXMnXG5pbXBvcnQge2NvbG9yfSBmcm9tICd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMvZG8tbm90LXVzZS1jb2xvcidcblxuLyoqIEB0eXBlIHtSZWFkb25seTxBY3Rpb25UdXBsZT59ICovXG5jb25zdCBlbXB0eSA9IFtdXG5cbi8qKlxuICogQ29udGludWUgdHJhdmVyc2luZyBhcyBub3JtYWwuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05USU5VRSA9IHRydWVcblxuLyoqXG4gKiBTdG9wIHRyYXZlcnNpbmcgaW1tZWRpYXRlbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBFWElUID0gZmFsc2VcblxuLyoqXG4gKiBEbyBub3QgdHJhdmVyc2UgdGhpcyBub2RlXHUyMDE5cyBjaGlsZHJlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFNLSVAgPSAnc2tpcCdcblxuLyoqXG4gKiBWaXNpdCBub2Rlcywgd2l0aCBhbmNlc3RyYWwgaW5mb3JtYXRpb24uXG4gKlxuICogVGhpcyBhbGdvcml0aG0gcGVyZm9ybXMgKmRlcHRoLWZpcnN0KiAqdHJlZSB0cmF2ZXJzYWwqIGluICpwcmVvcmRlcipcbiAqICgqKk5MUioqKSBvciBpZiBgcmV2ZXJzZWAgaXMgZ2l2ZW4sIGluICpyZXZlcnNlIHByZW9yZGVyKiAoKipOUkwqKikuXG4gKlxuICogWW91IGNhbiBjaG9vc2UgZm9yIHdoaWNoIG5vZGVzIGB2aXNpdG9yYCBpcyBjYWxsZWQgYnkgcGFzc2luZyBhIGB0ZXN0YC5cbiAqIEZvciBjb21wbGV4IHRlc3RzLCB5b3Ugc2hvdWxkIHRlc3QgeW91cnNlbGYgaW4gYHZpc2l0b3JgLCBhcyBpdCB3aWxsIGJlXG4gKiBmYXN0ZXIgYW5kIHdpbGwgaGF2ZSBpbXByb3ZlZCB0eXBlIGluZm9ybWF0aW9uLlxuICpcbiAqIFdhbGtpbmcgdGhlIHRyZWUgaXMgYW4gaW50ZW5zaXZlIHRhc2suXG4gKiBNYWtlIHVzZSBvZiB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUgdmlzaXRvciB3aGVuIHBvc3NpYmxlLlxuICogSW5zdGVhZCBvZiB3YWxraW5nIGEgdHJlZSBtdWx0aXBsZSB0aW1lcywgd2FsayBpdCBvbmNlLCB1c2UgYHVuaXN0LXV0aWwtaXNgXG4gKiB0byBjaGVjayBpZiBhIG5vZGUgbWF0Y2hlcywgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnQgb3BlcmF0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIGNoYW5nZSB0aGUgdHJlZS5cbiAqIFNlZSBgVmlzaXRvcmAgZm9yIG1vcmUgaW5mby5cbiAqXG4gKiBAb3ZlcmxvYWRcbiAqIEBwYXJhbSB7VHJlZX0gdHJlZVxuICogQHBhcmFtIHtDaGVja30gY2hlY2tcbiAqIEBwYXJhbSB7QnVpbGRWaXNpdG9yPFRyZWUsIENoZWNrPn0gdmlzaXRvclxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3JldmVyc2VdXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICpcbiAqIEBvdmVybG9hZFxuICogQHBhcmFtIHtUcmVlfSB0cmVlXG4gKiBAcGFyYW0ge0J1aWxkVmlzaXRvcjxUcmVlPn0gdmlzaXRvclxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3JldmVyc2VdXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICpcbiAqIEBwYXJhbSB7VW5pc3ROb2RlfSB0cmVlXG4gKiAgIFRyZWUgdG8gdHJhdmVyc2UuXG4gKiBAcGFyYW0ge1Zpc2l0b3IgfCBUZXN0fSB0ZXN0XG4gKiAgIGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3RcbiAqIEBwYXJhbSB7VmlzaXRvciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbdmlzaXRvcl1cbiAqICAgSGFuZGxlIGVhY2ggbm9kZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtyZXZlcnNlXVxuICogICBUcmF2ZXJzZSBpbiByZXZlcnNlIHByZW9yZGVyIChOUkwpIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgcHJlb3JkZXIgKE5MUikuXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICogICBOb3RoaW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIE5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VGVzdH0gQ2hlY2tcbiAqICAgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0UGFyZW50cyh0cmVlLCB0ZXN0LCB2aXNpdG9yLCByZXZlcnNlKSB7XG4gIC8qKiBAdHlwZSB7VGVzdH0gKi9cbiAgbGV0IGNoZWNrXG5cbiAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHZpc2l0b3IgZ2l2ZW4sIHNvIGB2aXNpdG9yYCBpcyB0ZXN0LlxuICAgIHZpc2l0b3IgPSB0ZXN0XG4gIH0gZWxzZSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB2aXNpdG9yIGdpdmVuLCBzbyBgdGVzdGAgaXNuXHUyMDE5dCBhIHZpc2l0b3IuXG4gICAgY2hlY2sgPSB0ZXN0XG4gIH1cblxuICBjb25zdCBpcyA9IGNvbnZlcnQoY2hlY2spXG4gIGNvbnN0IHN0ZXAgPSByZXZlcnNlID8gLTEgOiAxXG5cbiAgZmFjdG9yeSh0cmVlLCB1bmRlZmluZWQsIFtdKSgpXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VW5pc3ROb2RlfSBub2RlXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBpbmRleFxuICAgKiBAcGFyYW0ge0FycmF5PFVuaXN0UGFyZW50Pn0gcGFyZW50c1xuICAgKi9cbiAgZnVuY3Rpb24gZmFjdG9yeShub2RlLCBpbmRleCwgcGFyZW50cykge1xuICAgIGNvbnN0IHZhbHVlID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi8gKFxuICAgICAgbm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgPyBub2RlIDoge31cbiAgICApXG5cbiAgICBpZiAodHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgLy8gYGhhc3RgXG4gICAgICAgIHR5cGVvZiB2YWx1ZS50YWdOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gdmFsdWUudGFnTmFtZVxuICAgICAgICAgIDogLy8gYHhhc3RgXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLm5hbWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyB2YWx1ZS5uYW1lXG4gICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZpc2l0LCAnbmFtZScsIHtcbiAgICAgICAgdmFsdWU6XG4gICAgICAgICAgJ25vZGUgKCcgKyBjb2xvcihub2RlLnR5cGUgKyAobmFtZSA/ICc8JyArIG5hbWUgKyAnPicgOiAnJykpICsgJyknXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB2aXNpdFxuXG4gICAgZnVuY3Rpb24gdmlzaXQoKSB7XG4gICAgICAvKiogQHR5cGUge1JlYWRvbmx5PEFjdGlvblR1cGxlPn0gKi9cbiAgICAgIGxldCByZXN1bHQgPSBlbXB0eVxuICAgICAgLyoqIEB0eXBlIHtSZWFkb25seTxBY3Rpb25UdXBsZT59ICovXG4gICAgICBsZXQgc3VicmVzdWx0XG4gICAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICAgIGxldCBvZmZzZXRcbiAgICAgIC8qKiBAdHlwZSB7QXJyYXk8VW5pc3RQYXJlbnQ+fSAqL1xuICAgICAgbGV0IGdyYW5kcGFyZW50c1xuXG4gICAgICBpZiAoIXRlc3QgfHwgaXMobm9kZSwgaW5kZXgsIHBhcmVudHNbcGFyZW50cy5sZW5ndGggLSAxXSB8fCB1bmRlZmluZWQpKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGB2aXNpdG9yYCBpcyBub3cgYSB2aXNpdG9yLlxuICAgICAgICByZXN1bHQgPSB0b1Jlc3VsdCh2aXNpdG9yKG5vZGUsIHBhcmVudHMpKVxuXG4gICAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCdjaGlsZHJlbicgaW4gbm9kZSAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IG5vZGVBc1BhcmVudCA9IC8qKiBAdHlwZSB7VW5pc3RQYXJlbnR9ICovIChub2RlKVxuXG4gICAgICAgIGlmIChub2RlQXNQYXJlbnQuY2hpbGRyZW4gJiYgcmVzdWx0WzBdICE9PSBTS0lQKSB7XG4gICAgICAgICAgb2Zmc2V0ID0gKHJldmVyc2UgPyBub2RlQXNQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIDogLTEpICsgc3RlcFxuICAgICAgICAgIGdyYW5kcGFyZW50cyA9IHBhcmVudHMuY29uY2F0KG5vZGVBc1BhcmVudClcblxuICAgICAgICAgIHdoaWxlIChvZmZzZXQgPiAtMSAmJiBvZmZzZXQgPCBub2RlQXNQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGVBc1BhcmVudC5jaGlsZHJlbltvZmZzZXRdXG5cbiAgICAgICAgICAgIHN1YnJlc3VsdCA9IGZhY3RvcnkoY2hpbGQsIG9mZnNldCwgZ3JhbmRwYXJlbnRzKSgpXG5cbiAgICAgICAgICAgIGlmIChzdWJyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHN1YnJlc3VsdFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvZmZzZXQgPVxuICAgICAgICAgICAgICB0eXBlb2Ygc3VicmVzdWx0WzFdID09PSAnbnVtYmVyJyA/IHN1YnJlc3VsdFsxXSA6IG9mZnNldCArIHN0ZXBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFR1cm4gYSByZXR1cm4gdmFsdWUgaW50byBhIGNsZWFuIHJlc3VsdC5cbiAqXG4gKiBAcGFyYW0ge1Zpc2l0b3JSZXN1bHR9IHZhbHVlXG4gKiAgIFZhbGlkIHJldHVybiB2YWx1ZXMgZnJvbSB2aXNpdG9ycy5cbiAqIEByZXR1cm5zIHtSZWFkb25seTxBY3Rpb25UdXBsZT59XG4gKiAgIENsZWFuIHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gdG9SZXN1bHQodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgPyBlbXB0eSA6IFt2YWx1ZV1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gVW5pc3ROb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBhcmVudH0gVW5pc3RQYXJlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cycpLlZpc2l0b3JSZXN1bHR9IFZpc2l0b3JSZXN1bHRcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtFeGNsdWRlPGltcG9ydCgndW5pc3QtdXRpbC1pcycpLlRlc3QsIHVuZGVmaW5lZD4gfCB1bmRlZmluZWR9IFRlc3RcbiAqICAgVGVzdCBmcm9tIGB1bmlzdC11dGlsLWlzYC5cbiAqXG4gKiAgIE5vdGU6IHdlIGhhdmUgcmVtb3ZlIGFuZCBhZGQgYHVuZGVmaW5lZGAsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdoZW4gZ2VuZXJhdGluZ1xuICogICBhdXRvbWF0aWMgYC5kLnRzYCBmaWxlcywgVFMgdHJpZXMgdG8gZmxhdHRlbiBwYXRocyBmcm9tIGEgbG9jYWwgcGVyc3BlY3RpdmUsXG4gKiAgIHdoaWNoIGRvZXNuXHUyMDE5dCB3b3JrIHdoZW4gcHVibGlzaGluZyBvbiBucG0uXG4gKi9cblxuLy8gVG8gZG86IHVzZSB0eXBlcyBmcm9tIGB1bmlzdC11dGlsLXZpc2l0LXBhcmVudHNgIHdoZW4gaXRcdTIwMTlzIHJlbGVhc2VkLlxuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIEZuIGV4dGVuZHMgKHZhbHVlOiBhbnkpID0+IHZhbHVlIGlzIGluZmVyIFRoaW5nXG4gKiAgID8gVGhpbmdcbiAqICAgOiBGYWxsYmFja1xuICogKX0gUHJlZGljYXRlXG4gKiAgIEdldCB0aGUgdmFsdWUgb2YgYSB0eXBlIGd1YXJkIGBGbmAuXG4gKiBAdGVtcGxhdGUgRm5cbiAqICAgVmFsdWU7IHR5cGljYWxseSBmdW5jdGlvbiB0aGF0IGlzIGEgdHlwZSBndWFyZCAoc3VjaCBhcyBgKHgpOiB4IGlzIFlgKS5cbiAqIEB0ZW1wbGF0ZSBGYWxsYmFja1xuICogICBWYWx1ZSB0byB5aWVsZCBpZiBgRm5gIGlzIG5vdCBhIHR5cGUgZ3VhcmQuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBDaGVjayBleHRlbmRzIG51bGwgfCB1bmRlZmluZWQgLy8gTm8gdGVzdC5cbiAqICAgPyBWYWx1ZVxuICogICA6IFZhbHVlIGV4dGVuZHMge3R5cGU6IENoZWNrfSAvLyBTdHJpbmcgKHR5cGUpIHRlc3QuXG4gKiAgID8gVmFsdWVcbiAqICAgOiBWYWx1ZSBleHRlbmRzIENoZWNrIC8vIFBhcnRpYWwgdGVzdC5cbiAqICAgPyBWYWx1ZVxuICogICA6IENoZWNrIGV4dGVuZHMgRnVuY3Rpb24gLy8gRnVuY3Rpb24gdGVzdC5cbiAqICAgPyBQcmVkaWNhdGU8Q2hlY2ssIFZhbHVlPiBleHRlbmRzIFZhbHVlXG4gKiAgICAgPyBQcmVkaWNhdGU8Q2hlY2ssIFZhbHVlPlxuICogICAgIDogbmV2ZXJcbiAqICAgOiBuZXZlciAvLyBTb21lIG90aGVyIHRlc3Q/XG4gKiApfSBNYXRjaGVzT25lXG4gKiAgIENoZWNrIHdoZXRoZXIgYSBub2RlIG1hdGNoZXMgYSBwcmltaXRpdmUgY2hlY2sgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICogQHRlbXBsYXRlIFZhbHVlXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgdW5pc3QgYE5vZGVgLlxuICogQHRlbXBsYXRlIENoZWNrXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdCwgYnV0IG5vdCBhcnJheXMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBDaGVjayBleHRlbmRzIEFycmF5PGFueT5cbiAqICAgPyBNYXRjaGVzT25lPFZhbHVlLCBDaGVja1trZXlvZiBDaGVja10+XG4gKiAgIDogTWF0Y2hlc09uZTxWYWx1ZSwgQ2hlY2s+XG4gKiApfSBNYXRjaGVzXG4gKiAgIENoZWNrIHdoZXRoZXIgYSBub2RlIG1hdGNoZXMgYSBjaGVjayBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gKiBAdGVtcGxhdGUgVmFsdWVcbiAqICAgVmFsdWU7IHR5cGljYWxseSB1bmlzdCBgTm9kZWAuXG4gKiBAdGVtcGxhdGUgQ2hlY2tcbiAqICAgVmFsdWU7IHR5cGljYWxseSBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgezAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgfCA3IHwgOCB8IDkgfCAxMH0gVWludFxuICogICBOdW1iZXI7IGNhcHBlZCByZWFzb25hYmx5LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0kgZXh0ZW5kcyAwID8gMSA6IEkgZXh0ZW5kcyAxID8gMiA6IEkgZXh0ZW5kcyAyID8gMyA6IEkgZXh0ZW5kcyAzID8gNCA6IEkgZXh0ZW5kcyA0ID8gNSA6IEkgZXh0ZW5kcyA1ID8gNiA6IEkgZXh0ZW5kcyA2ID8gNyA6IEkgZXh0ZW5kcyA3ID8gOCA6IEkgZXh0ZW5kcyA4ID8gOSA6IDEwfSBJbmNyZW1lbnRcbiAqICAgSW5jcmVtZW50IGEgbnVtYmVyIGluIHRoZSB0eXBlIHN5c3RlbS5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW0k9MF1cbiAqICAgSW5kZXguXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBOb2RlIGV4dGVuZHMgVW5pc3RQYXJlbnRcbiAqICAgPyBOb2RlIGV4dGVuZHMge2NoaWxkcmVuOiBBcnJheTxpbmZlciBDaGlsZHJlbj59XG4gKiAgICAgPyBDaGlsZCBleHRlbmRzIENoaWxkcmVuID8gTm9kZSA6IG5ldmVyXG4gKiAgICAgOiBuZXZlclxuICogICA6IG5ldmVyXG4gKiApfSBJbnRlcm5hbFBhcmVudFxuICogICBDb2xsZWN0IG5vZGVzIHRoYXQgY2FuIGJlIHBhcmVudHMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBOb2RlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7SW50ZXJuYWxQYXJlbnQ8SW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlPiwgQ2hpbGQ+fSBQYXJlbnRcbiAqICAgQ29sbGVjdCBub2RlcyBpbiBgVHJlZWAgdGhhdCBjYW4gYmUgcGFyZW50cyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIERlcHRoIGV4dGVuZHMgTWF4XG4gKiAgID8gbmV2ZXJcbiAqICAgOlxuICogICAgIHwgSW50ZXJuYWxQYXJlbnQ8Tm9kZSwgQ2hpbGQ+XG4gKiAgICAgfCBJbnRlcm5hbEFuY2VzdG9yPE5vZGUsIEludGVybmFsUGFyZW50PE5vZGUsIENoaWxkPiwgTWF4LCBJbmNyZW1lbnQ8RGVwdGg+PlxuICogKX0gSW50ZXJuYWxBbmNlc3RvclxuICogICBDb2xsZWN0IG5vZGVzIGluIGBUcmVlYCB0aGF0IGNhbiBiZSBhbmNlc3RvcnMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBOb2RlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtNYXg9MTBdXG4gKiAgIE1heDsgc2VhcmNoZXMgdXAgdG8gdGhpcyBkZXB0aC5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW0RlcHRoPTBdXG4gKiAgIEN1cnJlbnQgZGVwdGguXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBUcmVlIGV4dGVuZHMgVW5pc3RQYXJlbnRcbiAqICAgICA/IERlcHRoIGV4dGVuZHMgTWF4XG4gKiAgICAgICA/IFRyZWVcbiAqICAgICAgIDogVHJlZSB8IEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZVsnY2hpbGRyZW4nXVtudW1iZXJdLCBNYXgsIEluY3JlbWVudDxEZXB0aD4+XG4gKiAgICAgOiBUcmVlXG4gKiApfSBJbmNsdXNpdmVEZXNjZW5kYW50XG4gKiAgIENvbGxlY3QgYWxsIChpbmNsdXNpdmUpIGRlc2NlbmRhbnRzIG9mIGBUcmVlYC5cbiAqXG4gKiAgID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBzZWVtcyB0byBiZSB0aGUgZmFzdGVzdCB3YXkgdG9cbiAqICAgPiByZWN1cnNlIHdpdGhvdXQgYWN0dWFsbHkgcnVubmluZyBpbnRvIGFuIGluZmluaXRlIGxvb3AsIHdoaWNoIHRoZVxuICogICA+IHByZXZpb3VzIHZlcnNpb24gZGlkLlxuICogICA+XG4gKiAgID4gUHJhY3RpY2FsbHksIGEgbWF4IG9mIGAyYCBpcyB0eXBpY2FsbHkgZW5vdWdoIGFzc3VtaW5nIGEgYFJvb3RgIGlzXG4gKiAgID4gcGFzc2VkLCBidXQgaXQgZG9lc25cdTIwMTl0IGltcHJvdmUgcGVyZm9ybWFuY2UuXG4gKiAgID4gSXQgZ2V0cyBoaWdoZXIgd2l0aCBgTGlzdCA+IExpc3RJdGVtID4gVGFibGUgPiBUYWJsZVJvdyA+IFRhYmxlQ2VsbGAuXG4gKiAgID4gVXNpbmcgdXAgdG8gYDEwYCBkb2Vzblx1MjAxOXQgaHVydCBvciBoZWxwIGVpdGhlci5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIFRyZWUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW01heD0xMF1cbiAqICAgTWF4OyBzZWFyY2hlcyB1cCB0byB0aGlzIGRlcHRoLlxuICogQHRlbXBsYXRlIHtVaW50fSBbRGVwdGg9MF1cbiAqICAgQ3VycmVudCBkZXB0aC5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBWaXNpdG9yXG4gKiAgIEhhbmRsZSBhIG5vZGUgKG1hdGNoaW5nIGB0ZXN0YCwgaWYgZ2l2ZW4pLlxuICpcbiAqICAgVmlzaXRvcnMgYXJlIGZyZWUgdG8gdHJhbnNmb3JtIGBub2RlYC5cbiAqICAgVGhleSBjYW4gYWxzbyB0cmFuc2Zvcm0gYHBhcmVudGAuXG4gKlxuICogICBSZXBsYWNpbmcgYG5vZGVgIGl0c2VsZiwgaWYgYFNLSVBgIGlzIG5vdCByZXR1cm5lZCwgc3RpbGwgY2F1c2VzIGl0c1xuICogICBkZXNjZW5kYW50cyB0byBiZSB3YWxrZWQgKHdoaWNoIGlzIGEgYnVnKS5cbiAqXG4gKiAgIFdoZW4gYWRkaW5nIG9yIHJlbW92aW5nIHByZXZpb3VzIHNpYmxpbmdzIG9mIGBub2RlYCAob3IgbmV4dCBzaWJsaW5ncywgaW5cbiAqICAgY2FzZSBvZiByZXZlcnNlKSwgdGhlIGBWaXNpdG9yYCBzaG91bGQgcmV0dXJuIGEgbmV3IGBJbmRleGAgdG8gc3BlY2lmeSB0aGVcbiAqICAgc2libGluZyB0byB0cmF2ZXJzZSBhZnRlciBgbm9kZWAgaXMgdHJhdmVyc2VkLlxuICogICBBZGRpbmcgb3IgcmVtb3ZpbmcgbmV4dCBzaWJsaW5ncyBvZiBgbm9kZWAgKG9yIHByZXZpb3VzIHNpYmxpbmdzLCBpbiBjYXNlXG4gKiAgIG9mIHJldmVyc2UpIGlzIGhhbmRsZWQgYXMgZXhwZWN0ZWQgd2l0aG91dCBuZWVkaW5nIHRvIHJldHVybiBhIG5ldyBgSW5kZXhgLlxuICpcbiAqICAgUmVtb3ZpbmcgdGhlIGNoaWxkcmVuIHByb3BlcnR5IG9mIGBwYXJlbnRgIHN0aWxsIHJlc3VsdHMgaW4gdGhlbSBiZWluZ1xuICogICB0cmF2ZXJzZWQuXG4gKiBAcGFyYW0ge1Zpc2l0ZWR9IG5vZGVcbiAqICAgRm91bmQgbm9kZS5cbiAqIEBwYXJhbSB7VmlzaXRlZCBleHRlbmRzIFVuaXN0Tm9kZSA/IG51bWJlciB8IHVuZGVmaW5lZCA6IG5ldmVyfSBpbmRleFxuICogICBJbmRleCBvZiBgbm9kZWAgaW4gYHBhcmVudGAuXG4gKiBAcGFyYW0ge0FuY2VzdG9yIGV4dGVuZHMgVW5pc3RQYXJlbnQgPyBBbmNlc3RvciB8IHVuZGVmaW5lZCA6IG5ldmVyfSBwYXJlbnRcbiAqICAgUGFyZW50IG9mIGBub2RlYC5cbiAqIEByZXR1cm5zIHtWaXNpdG9yUmVzdWx0fVxuICogICBXaGF0IHRvIGRvIG5leHQuXG4gKlxuICogICBBbiBgSW5kZXhgIGlzIHRyZWF0ZWQgYXMgYSB0dXBsZSBvZiBgW0NPTlRJTlVFLCBJbmRleF1gLlxuICogICBBbiBgQWN0aW9uYCBpcyB0cmVhdGVkIGFzIGEgdHVwbGUgb2YgYFtBY3Rpb25dYC5cbiAqXG4gKiAgIFBhc3NpbmcgYSB0dXBsZSBiYWNrIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIGBBY3Rpb25gIGlzIGBTS0lQYC5cbiAqICAgV2hlbiB0aGUgYEFjdGlvbmAgaXMgYEVYSVRgLCB0aGF0IGFjdGlvbiBjYW4gYmUgcmV0dXJuZWQuXG4gKiAgIFdoZW4gdGhlIGBBY3Rpb25gIGlzIGBDT05USU5VRWAsIGBJbmRleGAgY2FuIGJlIHJldHVybmVkLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFtWaXNpdGVkPVVuaXN0Tm9kZV1cbiAqICAgVmlzaXRlZCBub2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1VuaXN0UGFyZW50fSBbQW5jZXN0b3I9VW5pc3RQYXJlbnRdXG4gKiAgIEFuY2VzdG9yIHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7VmlzaXRvcjxWaXNpdGVkLCBQYXJlbnQ8QW5jZXN0b3IsIFZpc2l0ZWQ+Pn0gQnVpbGRWaXNpdG9yRnJvbU1hdGNoXG4gKiAgIEJ1aWxkIGEgdHlwZWQgYFZpc2l0b3JgIGZ1bmN0aW9uIGZyb20gYSBub2RlIGFuZCBhbGwgcG9zc2libGUgcGFyZW50cy5cbiAqXG4gKiAgIEl0IHdpbGwgaW5mZXIgd2hpY2ggdmFsdWVzIGFyZSBwYXNzZWQgYXMgYG5vZGVgIGFuZCB3aGljaCBhcyBgcGFyZW50YC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBWaXNpdGVkXG4gKiAgIE5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3RQYXJlbnR9IEFuY2VzdG9yXG4gKiAgIFBhcmVudCB0eXBlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgQnVpbGRWaXNpdG9yRnJvbU1hdGNoPFxuICogICAgIE1hdGNoZXM8RGVzY2VuZGFudCwgQ2hlY2s+LFxuICogICAgIEV4dHJhY3Q8RGVzY2VuZGFudCwgVW5pc3RQYXJlbnQ+XG4gKiAgID5cbiAqICl9IEJ1aWxkVmlzaXRvckZyb21EZXNjZW5kYW50c1xuICogICBCdWlsZCBhIHR5cGVkIGBWaXNpdG9yYCBmdW5jdGlvbiBmcm9tIGEgbGlzdCBvZiBkZXNjZW5kYW50cyBhbmQgYSB0ZXN0LlxuICpcbiAqICAgSXQgd2lsbCBpbmZlciB3aGljaCB2YWx1ZXMgYXJlIHBhc3NlZCBhcyBgbm9kZWAgYW5kIHdoaWNoIGFzIGBwYXJlbnRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IERlc2NlbmRhbnRcbiAqICAgTm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtUZXN0fSBDaGVja1xuICogICBUZXN0IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBCdWlsZFZpc2l0b3JGcm9tRGVzY2VuZGFudHM8XG4gKiAgICAgSW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlPixcbiAqICAgICBDaGVja1xuICogICA+XG4gKiApfSBCdWlsZFZpc2l0b3JcbiAqICAgQnVpbGQgYSB0eXBlZCBgVmlzaXRvcmAgZnVuY3Rpb24gZnJvbSBhIHRyZWUgYW5kIGEgdGVzdC5cbiAqXG4gKiAgIEl0IHdpbGwgaW5mZXIgd2hpY2ggdmFsdWVzIGFyZSBwYXNzZWQgYXMgYG5vZGVgIGFuZCB3aGljaCBhcyBgcGFyZW50YC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBbVHJlZT1VbmlzdE5vZGVdXG4gKiAgIE5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VGVzdH0gW0NoZWNrPVRlc3RdXG4gKiAgIFRlc3QgdHlwZS5cbiAqL1xuXG5pbXBvcnQge3Zpc2l0UGFyZW50c30gZnJvbSAndW5pc3QtdXRpbC12aXNpdC1wYXJlbnRzJ1xuXG5leHBvcnQge0NPTlRJTlVFLCBFWElULCBTS0lQfSBmcm9tICd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnXG5cbi8qKlxuICogVmlzaXQgbm9kZXMuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gcGVyZm9ybXMgKmRlcHRoLWZpcnN0KiAqdHJlZSB0cmF2ZXJzYWwqIGluICpwcmVvcmRlcipcbiAqICgqKk5MUioqKSBvciBpZiBgcmV2ZXJzZWAgaXMgZ2l2ZW4sIGluICpyZXZlcnNlIHByZW9yZGVyKiAoKipOUkwqKikuXG4gKlxuICogWW91IGNhbiBjaG9vc2UgZm9yIHdoaWNoIG5vZGVzIGB2aXNpdG9yYCBpcyBjYWxsZWQgYnkgcGFzc2luZyBhIGB0ZXN0YC5cbiAqIEZvciBjb21wbGV4IHRlc3RzLCB5b3Ugc2hvdWxkIHRlc3QgeW91cnNlbGYgaW4gYHZpc2l0b3JgLCBhcyBpdCB3aWxsIGJlXG4gKiBmYXN0ZXIgYW5kIHdpbGwgaGF2ZSBpbXByb3ZlZCB0eXBlIGluZm9ybWF0aW9uLlxuICpcbiAqIFdhbGtpbmcgdGhlIHRyZWUgaXMgYW4gaW50ZW5zaXZlIHRhc2suXG4gKiBNYWtlIHVzZSBvZiB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUgdmlzaXRvciB3aGVuIHBvc3NpYmxlLlxuICogSW5zdGVhZCBvZiB3YWxraW5nIGEgdHJlZSBtdWx0aXBsZSB0aW1lcywgd2FsayBpdCBvbmNlLCB1c2UgYHVuaXN0LXV0aWwtaXNgXG4gKiB0byBjaGVjayBpZiBhIG5vZGUgbWF0Y2hlcywgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnQgb3BlcmF0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIGNoYW5nZSB0aGUgdHJlZS5cbiAqIFNlZSBgVmlzaXRvcmAgZm9yIG1vcmUgaW5mby5cbiAqXG4gKiBAb3ZlcmxvYWRcbiAqIEBwYXJhbSB7VHJlZX0gdHJlZVxuICogQHBhcmFtIHtDaGVja30gY2hlY2tcbiAqIEBwYXJhbSB7QnVpbGRWaXNpdG9yPFRyZWUsIENoZWNrPn0gdmlzaXRvclxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3JldmVyc2VdXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICpcbiAqIEBvdmVybG9hZFxuICogQHBhcmFtIHtUcmVlfSB0cmVlXG4gKiBAcGFyYW0ge0J1aWxkVmlzaXRvcjxUcmVlPn0gdmlzaXRvclxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3JldmVyc2VdXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICpcbiAqIEBwYXJhbSB7VW5pc3ROb2RlfSB0cmVlXG4gKiAgIFRyZWUgdG8gdHJhdmVyc2UuXG4gKiBAcGFyYW0ge1Zpc2l0b3IgfCBUZXN0fSB0ZXN0T3JWaXNpdG9yXG4gKiAgIGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QgKG9wdGlvbmFsLCBvbWl0IHRvIHBhc3MgYSB2aXNpdG9yKS5cbiAqIEBwYXJhbSB7VmlzaXRvciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbdmlzaXRvck9yUmV2ZXJzZV1cbiAqICAgSGFuZGxlIGVhY2ggbm9kZSAod2hlbiB0ZXN0IGlzIG9taXR0ZWQsIHBhc3MgYHJldmVyc2VgKS5cbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFttYXliZVJldmVyc2U9ZmFsc2VdXG4gKiAgIFRyYXZlcnNlIGluIHJldmVyc2UgcHJlb3JkZXIgKE5STCkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBwcmVvcmRlciAoTkxSKS5cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiAgIE5vdGhpbmcuXG4gKlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgTm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtUZXN0fSBDaGVja1xuICogICBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmlzaXQodHJlZSwgdGVzdE9yVmlzaXRvciwgdmlzaXRvck9yUmV2ZXJzZSwgbWF5YmVSZXZlcnNlKSB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9ICovXG4gIGxldCByZXZlcnNlXG4gIC8qKiBAdHlwZSB7VGVzdH0gKi9cbiAgbGV0IHRlc3RcbiAgLyoqIEB0eXBlIHtWaXNpdG9yfSAqL1xuICBsZXQgdmlzaXRvclxuXG4gIGlmIChcbiAgICB0eXBlb2YgdGVzdE9yVmlzaXRvciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiB2aXNpdG9yT3JSZXZlcnNlICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHRlc3QgPSB1bmRlZmluZWRcbiAgICB2aXNpdG9yID0gdGVzdE9yVmlzaXRvclxuICAgIHJldmVyc2UgPSB2aXNpdG9yT3JSZXZlcnNlXG4gIH0gZWxzZSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYXNzdW1lIHRoZSBvdmVybG9hZCB3aXRoIHRlc3Qgd2FzIGdpdmVuLlxuICAgIHRlc3QgPSB0ZXN0T3JWaXNpdG9yXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYXNzdW1lIHRoZSBvdmVybG9hZCB3aXRoIHRlc3Qgd2FzIGdpdmVuLlxuICAgIHZpc2l0b3IgPSB2aXNpdG9yT3JSZXZlcnNlXG4gICAgcmV2ZXJzZSA9IG1heWJlUmV2ZXJzZVxuICB9XG5cbiAgdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIG92ZXJsb2FkLCByZXZlcnNlKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1VuaXN0Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge0FycmF5PFVuaXN0UGFyZW50Pn0gcGFyZW50c1xuICAgKi9cbiAgZnVuY3Rpb24gb3ZlcmxvYWQobm9kZSwgcGFyZW50cykge1xuICAgIGNvbnN0IHBhcmVudCA9IHBhcmVudHNbcGFyZW50cy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGluZGV4ID0gcGFyZW50ID8gcGFyZW50LmNoaWxkcmVuLmluZGV4T2Yobm9kZSkgOiB1bmRlZmluZWRcbiAgICByZXR1cm4gdmlzaXRvcihub2RlLCBpbmRleCwgcGFyZW50KVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FBQSxTQUEyQ0EsSUFBTUMsSUFBQUE7QUFDMUIsa0JBQUEsT0FBWkMsV0FBMEMsWUFBQSxPQUFYQyxVQUN4Q0EsUUFBT0QsVUFBVUQsR0FBQUEsSUFDUSxjQUFBLE9BQVhHLFVBQXlCQSxPQUFPQyxNQUM5Q0QsT0FBTyxDQUFBLEdBQUlILEVBQUFBLElBQ2UsWUFBQSxPQUFaQyxVQUNkQSxRQUFlLFFBQUlELEdBQUFBLElBRW5CRCxHQUFZLFFBQUlDLEdBQUFBO0lBQUFBLEVBQ2ZLLE1BQU0sV0FBQTtBQUNULGNBQUEsTUFBQTtBQUFBO0FDVEEsWUFBSUMsS0FBc0IsRUNBMUIsR0FBd0IsQ0FBQ0wsSUFBU00sT0FBQUE7QUFDakMsbUJBQVFDLE1BQU9EO0FBQ1hELFlBQUFBLEdBQW9CRyxFQUFFRixJQUFZQyxFQUFBQSxLQUFBQSxDQUFTRixHQUFvQkcsRUFBRVIsSUFBU08sRUFBQUEsS0FDNUVFLE9BQU9DLGVBQWVWLElBQVNPLElBQUssRUFBRUksWUFBQUEsTUFBa0JDLEtBQUtOLEdBQVdDLEVBQUFBLEVBQUFB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QSxFQUNQLFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLE9BQU87QUFBQSxFQUNQLFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLGFBQWE7QUFBQSxFQUNiLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLGlCQUFpQjtBQUFBLEVBQ2pCLFlBQVk7QUFBQSxFQUNaLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLGlCQUFpQjtBQUFBLEVBQ2pCLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLDRCQUE0QjtBQUFBLEVBQzVCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLHFCQUFxQjtBQUFBLEVBQ3JCLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLGlCQUFpQjtBQUFBLEVBQ2pCLE1BQU07QUFBQSxFQUNOLGFBQWE7QUFBQSxFQUNiLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLGFBQWE7QUFBQSxFQUNiLHNCQUFzQjtBQUFBLEVBQ3RCLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFdBQVc7QUFBQSxFQUNYLGVBQWU7QUFBQSxFQUNmLGtCQUFrQjtBQUFBLEVBQ2xCLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULGFBQWE7QUFBQSxFQUNiLFFBQVE7QUFBQSxFQUNSLGVBQWU7QUFBQSxFQUNmLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLHFCQUFxQjtBQUFBLEVBQ3JCLFVBQVU7QUFBQSxFQUNWLGFBQWE7QUFBQSxFQUNiLE9BQU87QUFBQSxFQUNQLFlBQVk7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULG1CQUFtQjtBQUFBLEVBQ25CLGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLGNBQWM7QUFBQSxFQUNkLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLGNBQWM7QUFBQSxFQUNkLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLFNBQVM7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNkLE1BQU07QUFBQSxFQUNOLFdBQVc7QUFBQSxFQUNYLGNBQWM7QUFBQSxFQUNkLFVBQVU7QUFBQSxFQUNWLGNBQWM7QUFBQSxFQUNkLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFBQSxFQUNiLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLEtBQUs7QUFBQSxFQUNMLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLGtCQUFrQjtBQUFBLEVBQ2xCLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLGlCQUFpQjtBQUFBLEVBQ2pCLGNBQWM7QUFBQSxFQUNkLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLGlCQUFpQjtBQUFBLEVBQ2pCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGlCQUFpQjtBQUFBLEVBQ2pCLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLGlCQUFpQjtBQUFBLEVBQ2pCLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFlBQVk7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQSxFQUNOLFdBQVc7QUFBQSxFQUNYLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFDVDtBQUNBLElBQU0seUJBQWtEO0FBQUE7QUFBQSxFQUN2RCxPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixjQUFhO0FBQUEsRUFDYixNQUFLO0FBQUEsRUFDTCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxnQkFBZTtBQUFBLEVBQ2YsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsTUFBSztBQUFBLEVBQ0wsVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sZUFBYztBQUFBLEVBQ2QsT0FBTTtBQUFBLEVBQ04sV0FBVTtBQUFBLEVBQ1YsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsVUFBUztBQUFBLEVBQ1QsV0FBVTtBQUFBLEVBQ1YsVUFBUztBQUFBLEVBQ1QsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsUUFBTztBQUFBLEVBQ1AsVUFBUztBQUFBLEVBQ1QsV0FBVTtBQUFBLEVBQ1YsWUFBVztBQUFBLEVBQ1gsY0FBYTtBQUFBLEVBQ2IsVUFBUztBQUFBLEVBQ1QsWUFBVztBQUFBLEVBQ1gsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsTUFBSztBQUFBLEVBQ0wsU0FBUTtBQUFBLEVBQ1IsU0FBUTtBQUFBLEVBQ1IsU0FBUTtBQUFBLEVBQ1IsVUFBUztBQUFBLEVBQ1QsYUFBWTtBQUFBLEVBQ1osT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sYUFBWTtBQUFBLEVBQ1osZ0JBQWU7QUFBQSxFQUNmLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLEtBQUk7QUFBQSxFQUNKLFVBQVM7QUFBQSxFQUNULE1BQUs7QUFBQSxFQUNMLFVBQVM7QUFBQSxFQUNULE9BQU07QUFBQSxFQUNOLFlBQVc7QUFBQSxFQUNYLE9BQU07QUFBQSxFQUNOLGNBQWE7QUFBQSxFQUNiLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFVBQVM7QUFBQSxFQUNULFdBQVU7QUFBQSxFQUNWLFlBQVc7QUFB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UixPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxZQUFXO0FBQUEsRUFDWCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixjQUFhO0FBQUEsRUFDYixjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixZQUFXO0FBQUEsRUFDWCxZQUFXO0FBQUEsRUFDWCxNQUFLO0FBQUEsRUFDTCxxQkFBb0I7QUFBQSxFQUNwQixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxhQUFZO0FBQUEsRUFDWixPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixZQUFXO0FBQUEsRUFDWCxTQUFRO0FBQUEsRUFDUixXQUFVO0FBQUEsRUFDVixVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixtQkFBa0I7QUFBQSxFQUNsQixjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxZQUFXO0FBQUEsRUFDWCxRQUFPO0FBQUEsRUFDUCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxhQUFZO0FBQUEsRUFDWixPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxjQUFhO0FBQUEsRUFDYixTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixhQUFZO0FBQUEsRUFDWixZQUFXO0FBQUEsRUFDWCxTQUFRO0FBQUEsRUFDUixjQUFhO0FBQUEsRUFDYixNQUFLO0FBQUEsRUFDTCxXQUFVO0FBQUEsRUFDVixjQUFhO0FBQUEsRUFDYixjQUFhO0FBQUEsRUFDYixVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixZQUFXO0FBQUEsRUFDWCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxRQUFPO0FBQUEsRUFDUCxhQUFZO0FBQUEsRUFDWixVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxLQUFJO0FBQUEsRUFDSixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxLQUFJO0FBQUEsRUFDSixVQUFTO0FBQUEsRUFDVCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxPQUFNO0FBQUEsRUFDTixPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixZQUFXO0FBQUEsRUFDWCxPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixZQUFXO0FBQUEsRUFDWCxrQkFBaUI7QUFBQSxFQUNqQixTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxNQUFLO0FBQUEsRUFDTCxRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixVQUFTO0FBQUEsRUFDVCxpQkFBZ0I7QUFBQSxFQUNoQixj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LEVBQ1QsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsVUFBVTtBQUFBLEVBQ1Ysa0JBQWtCO0FBQUEsRUFDbEIsZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sNEJBQTRCO0FBQUEsRUFDNUIsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsZ0NBQWdDO0FBQUEsRUFDaEMsc0JBQXNCO0FBQUEsRUFDdEIsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsZUFBZTtBQUFBLEVBQ2YsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsVUFBVTtBQUFBLEVBQ1Ysb0JBQW9CO0FBQUEsRUFDcEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLEVBQ2QsVUFBVTtBQUFBLEVBQ1YscUJBQXFCO0FBQUEsRUFDckIsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osMkJBQTJCO0FBQUEsRUFDM0IsbUJBQW1CO0FBQUEsRUFDbkIsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIsVUFBVTtBQUFB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QUUsUUFBTSxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLHVCQUFxQixXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLG1CQUFpQixXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsa0JBQWdCLFdBQVVBLEdBQUUsb0JBQWtCLFdBQVVBLEdBQUUsa0JBQWdCLFdBQVVBLEdBQUUsa0JBQWdCLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGFBQVcsV0FB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QUksTUFBSUUsTUFBR0QsTUFBRyxRQUFNLE1BQUdBLE1BQUdELEtBQUUsS0FBR0MsS0FBRUQsS0FBRUMsS0FBRUQsSUFBRUcsS0FBRSxJQUFFRixLQUFFQztBQUFFLFNBQU0sRUFBQyxHQUFFLEVBQUVDLElBQUVELEtBQUdILE1BQUcsTUFBSSxDQUFDLEdBQUUsR0FBRSxFQUFFSSxJQUFFRCxJQUFFSCxFQUFDLEdBQUUsR0FBRSxFQUFFSSxJQUFFRCxJQUFFSCxLQUFFLENBQUMsRUFBQztBQUFDO0FBQXJ3RSxJQUF1d0UsSUFBRSxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBTSxFQUFDLEdBQUUsRUFBRSxPQUFLLElBQUVILE9BQUlHLEtBQUUsSUFBRUEsR0FBRSxHQUFFLEdBQUUsRUFBRSxPQUFLLElBQUVGLE1BQUdFLEVBQUMsR0FBRSxHQUFFLEVBQUUsT0FBSyxJQUFFRCxNQUFHQyxFQUFDLEVBQUM7QUFBQztBQUEzMUUsSUFBNjFFLElBQUUsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLEVBQUFGLE1BQUcsS0FBSUMsTUFBRyxLQUFJQyxNQUFHO0FBQUksTUFBSUMsS0FBRSxJQUFFLEtBQUssSUFBSUgsSUFBRUMsSUFBRUMsRUFBQyxHQUFFRSxLQUFFLElBQUVELElBQUVFLEtBQUVELE9BQUlBLEtBQUVILE1BQUdHLElBQUVFLEtBQUVGLE9BQUlBLEtBQUVGLE1BQUdFO0FBQUUsU0FBTSxFQUFDLEdBQUUsRUFBRSxPQUFLQSxPQUFJQSxLQUFFSixNQUFHSSxHQUFFLEdBQUUsR0FBRSxFQUFFLE1BQUlDLEVBQUMsR0FBRSxHQUFFLEVBQUUsTUFBSUMsRUFBQyxHQUFFLEdBQUUsRUFBRSxNQUFJSCxFQUFDLEVBQUM7QUFBQztBQUExL0UsSUFBNC9FLElBQUUsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGFBQVNBLE9BQUlBLEtBQUUsSUFBR0gsTUFBRyxLQUFJQyxNQUFHLEtBQUlDLE1BQUcsS0FBSUMsS0FBRSxLQUFLLElBQUlBLElBQUUsQ0FBQztBQUFF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QUcsRUFBRSxHQUFHLElBQUUsU0FBU1AsSUFBRTtBQUFDLE1BQUlDLEtBQUUsRUFBQyxHQUFFLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsRUFBRSxHQUFHLE9BQU9BLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxFQUFFLEdBQUcsT0FBT0EsR0FBRSxDQUFDLENBQUMsRUFBQztBQUFFLFNBQU8sRUFBRUEsSUFBRSxHQUFHLE1BQUlDLEdBQUUsSUFBRSxLQUFLLElBQUksRUFBRSxHQUFHLE9BQU9ELEdBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxDQUFDLElBQUdDO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNELElBQUU7QUFBQyxTQUFPLEtBQUssSUFBSUEsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTQSxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFFLEdBQUcsT0FBT0QsR0FBRSxDQUFDLENBQUMsR0FBRUUsS0FBRSxFQUFFLEdBQUcsT0FBT0YsR0FBRSxDQUFDLENBQUMsR0FBRUcsS0FBRSxFQUFFLEVBQUVILEdBQUUsQ0FBQyxHQUFFQyxJQUFFQyxFQUFDO0FBQUUsU0FBTyxFQUFFRixJQUFFLEdBQUcsTUFBSUcsR0FBRSxJQUFFLEVBQUVILEdBQUUsQ0FBQyxJQUFHRztBQUFDLEdBQUUsRUFBRSxFQUFFLElBQUksSUFBRSxTQUFTSCxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFFLEdBQUcsT0FBT0QsR0FBRSxDQUFDLENBQUMsR0FBRUUsS0FBRSxFQUFFLEdBQUcsT0FBT0YsR0FBRSxDQUFDLENBQUMsR0FBRUcsS0FBRSxFQUFFLEdBQUcsT0FBT0gsR0FBRSxDQUFDLENBQUMsR0FBRUksS0FBRSxFQUFFLEdBQUcsT0FBT0osR0FBRSxDQUFDLENBQUMsR0FBRUssS0FBRSxFQUFFSixJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUUsU0FBTyxFQUFFSixJQUFFLEdBQUcsTUFBSUssR0FBRSxJQUFFLEVBQUVMLEdBQUUsQ0FBQyxJQUFHSztBQUFDLEdBQUU7QUFBdnFNLElBQTBxTSxLQUFHLFNBQVNMLElBQUVDLElBQUU7QUFBQyxTQUFPLFdBQVNBLE9BQUlBLEtBQUUsRUFBRUQsRUFBQyxJQUFHLFlBQVUsT0FBT0EsS0FBRSxFQUFFQyxFQUFDLEVBQUVELEVBQUMsSUFBRSxFQUFFQyxFQUFDLEVBQUVELEVBQUM7QUFBQztBQUF6dk0sSUFBMnZNLE9BQUssSUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUUsU0FBU0EsSUFBRTtBQUFDLFNBQU0sRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQztBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNBLElBQUU7QUFBQyxNQUFJQyxLQUFFLEdBQUcsSUFBSUQsRUFBQztBQUFFLFNBQU9DLEdBQUUsSUFBRSxFQUFFRCxJQUFFLEdBQUcsSUFBRSxFQUFFLE1BQUlBLEdBQUUsQ0FBQyxJQUFFLFFBQU9DO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNELElBQUVDLElBQUU7QUFBQyxTQUFPLEVBQUVELElBQUUsR0FBRyxLQUFHLE9BQU9BLEdBQUUsR0FBRSxHQUFHQSxJQUFFQyxFQUFDO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0QsSUFBRUMsSUFBRTtBQUFDLFNBQU9ELEdBQUUsSUFBRSxFQUFFQSxJQUFFLEdBQUcsSUFBRSxFQUFFQSxHQUFFLENBQUMsSUFBRSxHQUFFLEdBQUdBLElBQUVDLEVBQUM7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0QsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsRUFBRUYsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFFLFNBQU8sT0FBT0UsR0FBRSxHQUFFLEdBQUdBLElBQUVELEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxHQUFHLElBQUlGLElBQUVD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QUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsSUFBRSxHQUFHLElBQUksRUFBRUEsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0MsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFNBQU9GLEdBQUVELElBQUVFLEVBQUMsRUFBRSxJQUFLLFNBQVNGLElBQUU7QUFBQyxXQUFPRyxLQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUVILEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxNQUFJLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUVBLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFNBQU9ILEdBQUVELElBQUVFLEVBQUMsRUFBRSxJQUFLLFNBQVNGLElBQUU7QUFBQyxXQUFPRyxLQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUVILEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsR0FBRUksRUFBQyxDQUFDLElBQUUsR0FBRyxJQUFJLEVBQUVKLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsR0FBRUksRUFBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPSCxHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUVILEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUVKLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0wsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFNBQU9ILEdBQUVELElBQUVFLEVBQUMsRUFBRSxJQUFLLFNBQVNGLElBQUU7QUFBQyxXQUFPRyxLQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUMsR0FBRUgsR0FBRSxHQUFFLEdBQUVBLEdBQUUsR0FBRSxHQUFFQSxHQUFFLEVBQUMsR0FBRUksRUFBQyxDQUFDLElBQUUsR0FBRyxJQUFJLEVBQUVKLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsR0FBRUksRUFBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPSCxHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFFSCxFQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRUksRUFBQyxDQUFDLElBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRUksRUFBQztB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QUFLLElBQUksSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssaUJBQWlCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssaUJBQWlCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssaUJBQWlCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssaUJBQWlCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssaUJBQWlCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxLQUFLLElBQUksSUFBRSxFQUFFQSxJQUFFLEdBQUUsQ0FBQyxHQUFFO0FBQUEsRUFBSSxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLEtBQUssSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssZ0JBQWdCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLEtBQUssSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssZ0JBQWdCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLEtBQUssSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssZ0JBQWdCO0FBQUEsRUFBQyxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLEtBQUssSUFBRSxFQUFFQSxJQUFFLEdBQUUsR0FBRyxHQUFFLEtBQUssZ0JBQWdCO0FBQUEsRUFBQyxHQUFFLE9BQU8sZUFBZUMsR0FBRSxXQUFVLFlBQVcsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEtBQUs7QUFBQSxFQUFTLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLElBQUksR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEtBQUssR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEtBQUssR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEtBQUssR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsS0FBSSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEtBQUssR0FBRSxLQUFLLFFBQVE7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsYUFBWSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRyxJQUFJLEtBQUssR0FBRztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxjQUFhLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHLEtBQUssS0FBSyxHQUFHO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGFBQVksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFNLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFLLFNBQVMsR0FBRSxFQUFDLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsYUFBWSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU0sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxjQUFhLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssU0FBUyxHQUFFLEVBQUMsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxjQUFhLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGVBQWMsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSyxVQUFVLEdBQUUsRUFBQyxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLE9BQU0sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsUUFBTyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxNQUFJLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLE9BQU0sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsUUFBTyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxPQUFNLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsUUFBTyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxTQUFRLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFQSxHQUFFLFFBQU0sU0FBU0QsSUFBRUMsSUFBRTtBQUFDLGVBQVNBLE9BQUlBLEtBQUU7QUFBSSxRQUFJQyxLQUFFLEVBQUVGLEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVFLElBQUVELElBQUUsR0FBRSxHQUFHLEtBQUksRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFQSxHQUFFLFNBQU8sU0FBU0QsSUFBRUMsSUFBRTtBQUFDLGVBQVNBLE9BQUlBLEtBQUU7QUFBSSxRQUFJQyxLQUFFLEVBQUVGLEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVFLElBQUVELElBQUUsR0FBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFQSxHQUFFLFFBQU0sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVELEdBQUUsU0FBTyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxRQUFNLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLEtBQUksRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFNBQU8sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVELEdBQUUsU0FBTyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsSUFBSTtBQUFBLEVBQUMsR0FBRUQsR0FBRSxVQUFRLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE9BQU0sRUFBRSxJQUFJO0FBQUEsRUFBQyxHQUFFRCxHQUFFLGNBQVksU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxJQUFHLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBR0osSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRSxHQUFHLEtBQUksRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFSCxHQUFFLGVBQWEsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxJQUFHLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBR0osSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFSCxHQUFFLGNBQVksU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxJQUFHLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBR0osSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRSxHQUFHLEtBQUksRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFSCxHQUFFLGVBQWEsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxJQUFHLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBR0osSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFSCxHQUFFLGNBQVksU0FBU0QsSUFB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QUM3RCxZQUFJLEtBQUssZ0JBQWdCLGlDQUFnQixLQUFLLEtBQUssUUFBUSxNQUFNO0FBQ2hFLGVBQUssS0FBSyxZQUFZLFNBQVMsSUFBSTtBQUFBLE1BQ3JDLENBQUM7QUFBQSxJQUNGLENBQUM7QUFFRCxZQUFRLElBQUksNEJBQTRCO0FBQUEsRUFDekM7QUFBQSxFQUVBLFdBQVc7QUFDVixTQUFLLCtCQUErQixXQUFXO0FBQy9DLFNBQUssNEJBQTRCLFdBQVc7QUFDNUMsMkJBQXVCO0FBQ3ZCLCtCQUEyQjtBQUMzQixlQUFXLE9BQU8sT0FBTyxPQUFPLEtBQUssYUFBYTtBQUNqRCxVQUFJLGdCQUFnQixHQUFHO0FBQ3hCLFlBQVEsSUFBSSw4QkFBOEI7QUFBQSxFQUMzQztBQUFBLEVBRUEsTUFBTSxlQUFlO0FBQ3BCLFNBQUssV0FBVyxPQUFPLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixnQkFBZ0IsR0FBRyxNQUFNLEtBQUssU0FBUyxDQUFDO0FBQUEsRUFDM0Y7QUFBQSxFQUVBLE1BQU0sZUFBZTtBQUNwQixVQUFNLEtBQUssU0FBUyxLQUFLLFFBQVE7QUFDakMsU0FBSyxJQUFJLFVBQVUsY0FBYztBQUNqQyxrQkFBYyxLQUFLLFVBQVMsS0FBSyxHQUFHO0FBQUEsRUFDckM7QUFDRDsiLAogICJuYW1lcyI6IFsicm9vdCIsICJmYWN0b3J5IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImRlZmluZSIsICJhbWQiLCAic2VsZiIsICJfX3dlYnBhY2tfcmVxdWlyZV9fIiwgImRlZmluaXRpb24iLCAia2V5IiwgIm8iLCAiT2JqZWN0IiwgImRlZmluZVByb3BlcnR5IiwgImVudW1lcmFibGUiLCAiZ2V0IiwgIm9iaiIsICJwcm9wIiwgInByb3RvdHlwZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJjYWxsIiwgIlN5bWJvbCIsICJ0b1N0cmluZ1RhZyIsICJ2YWx1ZSIsICJlIiwgInQiLCAiTCIsICJldmVudExpc3RlbmVyIiwgIm1ldGhvZCIsICJlbGVtZW50cyIsICJldmVudHMiLCAiZm4iLCAib3B0aW9ucyIsICJIVE1MQ29sbGVjdGlvbiIsICJOb2RlTGlzdCIsICJBcnJheSIsICJmcm9tIiwgImlzQXJyYXkiLCAiZWwiLCAiZXYiLCAiY2FwdHVyZSIsICJzbGljZSIsICJhcmd1bWVudHMiLCAicCIsICJyIiwgImEiLCAibCIsICJzIiwgImkiLCAiYyIsICJvbiIsICJiaW5kIiwgIm9mZiIsICJjcmVhdGVFbGVtZW50RnJvbVN0cmluZyIsICJodG1sIiwgImRpdiIsICJkb2N1bWVudCIsICJjcmVhdGVFbGVtZW50IiwgImlubmVySFRNTCIsICJ0cmltIiwgImZpcnN0RWxlbWVudENoaWxkIiwgImNyZWF0ZUZyb21UZW1wbGF0ZSIsICJzdHIiLCAicmVtb3ZlQXR0cmlidXRlIiwgIm5hbWUiLCAiZ2V0QXR0cmlidXRlIiwgInJlc29sdmUiLCAiZWxlbWVudCIsICJiYXNlIiwgImNvbiIsICJzdWJ0cmVlIiwgImNoaWxkIiwgImNoaWxkcmVuIiwgImFyciIsICJzdWIiLCAicHVzaCIsICJrZXlzIiwgImxlbmd0aCIsICJldmVudFBhdGgiLCAiZXZ0IiwgInBhdGgiLCAiY29tcG9zZWRQYXRoIiwgInRhcmdldCIsICJwYXJlbnRFbGVtZW50IiwgIndpbmRvdyIsICJyZXNvbHZlRWxlbWVudCIsICJ2YWwiLCAiRWxlbWVudCIsICJzcGxpdCIsICJyZWR1Y2UiLCAicHYiLCAiY3YiLCAiY2kiLCAicXVlcnlTZWxlY3RvciIsICJzaGFkb3dSb290IiwgImFkanVzdGFibGVJbnB1dE51bWJlcnMiLCAibWFwcGVyIiwgInYiLCAiaGFuZGxlU2Nyb2xsIiwgImluYyIsICJOdW1iZXIiLCAic2hpZnRLZXkiLCAiY3RybEtleSIsICJkZWx0YVkiLCAiaW5kZXgiLCAic2VsZWN0aW9uU3RhcnQiLCAicmVwbGFjZSIsICJmb2N1cyIsICJzZXRTZWxlY3Rpb25SYW5nZSIsICJwcmV2ZW50RGVmYXVsdCIsICJkaXNwYXRjaEV2ZW50IiwgIkV2ZW50IiwgInBhc3NpdmUiLCAibWluIiwgIm1heCIsICJmbG9vciIsICJyb3VuZCIsICJNYXRoIiwgImhzdlRvUmdiIiwgImgiLCAiZiIsICJxIiwgIm1vZCIsICJoc3ZUb0hzbCIsICJyZ2JUb0hzdiIsICJnIiwgImIiLCAibWluVmFsIiwgIm1heFZhbCIsICJkZWx0YSIsICJkciIsICJkZyIsICJkYiIsICJjbXlrVG9Ic3YiLCAibSIsICJ5IiwgImsiLCAiaHNsVG9Ic3YiLCAibnMiLCAiaXNOYU4iLCAiaGV4VG9Ic3YiLCAiaGV4IiwgIm1hdGNoIiwgIm1hcCIsICJwYXJzZUludCIsICJwYXJzZVRvSFNWQSIsICJ0b0xvd2VyQ2FzZSIsICJjdHgiLCAiZ2V0Q29udGV4dCIsICJmaWxsU3R5bGUiLCAicmVnZXgiLCAiY215ayIsICJyZ2JhIiwgImhzbGEiLCAiaHN2YSIsICJoZXhhIiwgIm51bWFyaXplIiwgImFycmF5IiwgInRlc3QiLCAidW5kZWZpbmVkIiwgImludmFsaWQiLCAidHlwZSIsICJleGVjIiwgImFscGhhVmFsaWQiLCAidmFsdWVzIiwgImpvaW4iLCAicmF3IiwgInN1YnN0cmluZyIsICJIU1ZhQ29sb3IiLCAib3JpZ2luYWwiLCAibmV4dCIsICJwcmVjaXNpb24iLCAidG9GaXhlZCIsICJ0aGF0IiwgInRvSFNWQSIsICJ0b1N0cmluZyIsICJ0b0hTTEEiLCAidG9SR0JBIiwgInRvQ01ZSyIsICJyZ2IiLCAidG9IRVhBIiwgInBhZFN0YXJ0IiwgImFscGhhIiwgInRvVXBwZXJDYXNlIiwgImNsb25lIiwgImNsYW1wIiwgIk1vdmVhYmxlIiwgIm9wdCIsICJhc3NpZ24iLCAibG9jayIsICJvbmNoYW5nZSIsICJvbnN0b3AiLCAiX2tleWJvYXJkIiwgImFjdGl2ZUVsZW1lbnQiLCAid3JhcHBlciIsICJ1cCIsICJyaWdodCIsICJkb3duIiwgImxlZnQiLCAieG0iLCAieW0iLCAidXBkYXRlIiwgImNhY2hlIiwgIngiLCAic3RhcnRzV2l0aCIsICJfdGFwc3RhcnQiLCAiXyIsICJfdGFwc3RvcCIsICJfdGFwbW92ZSIsICJjYW5jZWxhYmxlIiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJ0b3VjaCIsICJ0b3VjaGVzIiwgImNsaWVudFgiLCAiY2xpZW50WSIsICJ3aWR0aCIsICJ0b3AiLCAiaGVpZ2h0IiwgInN0eWxlIiwgIm9mZnNldFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJjeCIsICJjeSIsICJ0cmlnZ2VyIiwgImRlc3Ryb3kiLCAiU2VsZWN0YWJsZSIsICJjbGFzc05hbWUiLCAib25UYXAiLCAiZm9yRWFjaCIsICJjbGFzc0xpc3QiLCAic3RvcFByb3BhZ2F0aW9uIiwgImRlZmF1bHRzIiwgInZhcmlhbnRGbGlwT3JkZXIiLCAic3RhcnQiLCAibWlkZGxlIiwgImVuZCIsICJwb3NpdGlvbkZsaXBPcmRlciIsICJib3R0b20iLCAicG9zaXRpb24iLCAibWFyZ2luIiwgInJlcG9zaXRpb24iLCAicmVmZXJlbmNlIiwgInBvcHBlciIsICJjb250YWluZXIiLCAiZG9jdW1lbnRFbGVtZW50IiwgIm9yaWdpbmFsTGVmdCIsICJvcmlnaW5hbFRvcCIsICJyZWZCb3giLCAicG9wQm94IiwgInBvc2l0aW9uU3RvcmUiLCAidmFyaWFudFN0b3JlIiwgInZzIiwgInZtIiwgInZlIiwgImhzIiwgImhtIiwgImhlIiwgInBvc0tleSIsICJ2YXJLZXkiLCAicG9zaXRpb25zIiwgInZhcmlhbnRzIiwgInZlcnRpY2FsIiwgInBvc2l0aW9uVmFsIiwgInBvc2l0aW9uS2V5IiwgInZhcmlhbnRLZXkiLCAicG9zaXRpb25TaXplIiwgInZhcmlhbnRTaXplIiwgInBvc2l0aW9uTWF4aW11bSIsICJ2YXJpYW50TWF4aW11bSIsICJwb3NpdGlvbk1pbmltdW0iLCAidmFyaWFudE1pbmltdW0iLCAidmFyaWFudFZhbCIsICJFIiwgIlBpY2tyIiwgImNvbnN0cnVjdG9yIiwgImluaXQiLCAic2F2ZSIsICJoaWRlIiwgInNob3ciLCAiY2xlYXIiLCAiY2hhbmdlIiwgImNoYW5nZXN0b3AiLCAiY2FuY2VsIiwgInN3YXRjaHNlbGVjdCIsICJ0aGlzIiwgIkRFRkFVTFRfT1BUSU9OUyIsICJzd2F0Y2hlcyIsICJjb21wb25lbnRzIiwgInRoZW1lIiwgInNsaWRlcnMiLCAibG9ja09wYWNpdHkiLCAicGFkZGluZyIsICJpbmNsdWRlcyIsICJpbnRlcmFjdGlvbiIsICJwcmV2aWV3IiwgIm9wYWNpdHkiLCAiaHVlIiwgInBhbGV0dGUiLCAiX3ByZUJ1aWxkIiwgIl9idWlsZENvbXBvbmVudHMiLCAiX2JpbmRFdmVudHMiLCAiX2ZpbmFsQnVpbGQiLCAiY29sb3IiLCAiYWRkU3dhdGNoIiwgImJ1dHRvbiIsICJhcHAiLCAiX3Jvb3QiLCAiX25hbm9wb3AiLCAiYmFzZU9wdGlvbnMiLCAiSFRNTEVsZW1lbnQiLCAiW29iamVjdCBPYmplY3RdIiwgIkVycm9yIiwgInNldEF0dHJpYnV0ZSIsICJfdCIsICJfc2V0dXBBbmltYXRpb25GcmFtZSIsICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCAiY2IiLCAic2V0Q29sb3IiLCAiZGVmYXVsdCIsICJfcmVQb3NpdGlvbmluZ1BpY2tlciIsICJkZWZhdWx0UmVwcmVzZW50YXRpb24iLCAiX3JlcHJlc2VudGF0aW9uIiwgInNldENvbG9yUmVwcmVzZW50YXRpb24iLCAic2hvd0Fsd2F5cyIsICJfaW5pdGlhbGl6aW5nQWN0aXZlIiwgIl9lbWl0IiwgImluc3RhbmNlIiwgInVzZUFzQnV0dG9uIiwgImlubGluZSIsICJhcHBDbGFzcyIsICJoaWRkZW4iLCAiaW5wdXQiLCAiaW50IiwgImZpbmQiLCAiYWRkIiwgImNvbnRhaW5zIiwgImFwcGVuZENoaWxkIiwgInJlbW92ZUNoaWxkIiwgInBhcmVudCIsICJuZXh0U2libGluZyIsICJpbnNlcnRCZWZvcmUiLCAicmVtb3ZlIiwgInBhcmVudE5vZGUiLCAicmVwbGFjZUNoaWxkIiwgImRpc2FibGVkIiwgImRpc2FibGUiLCAiY29tcGFyaXNvbiIsICJ0cmFuc2l0aW9uIiwgImxhc3RDb2xvciIsICJpbnN0IiwgImNzIiwgInJlcGVhdCIsICJzbyIsICJzaCIsICJnZXRDb2xvciIsICJfY29sb3IiLCAiX2xhc3RDb2xvciIsICJwaWNrZXIiLCAiY3VycmVudENvbG9yIiwgIl9yZWNhbGMiLCAiX3VwZGF0ZU91dHB1dCIsICJjc3NSR0JhU3RyaW5nIiwgImJhY2tncm91bmQiLCAic2V0UHJvcGVydHkiLCAiX3N3YXRjaENvbG9ycyIsICJzbGlkZXIiLCAiYmFja2dyb3VuZENvbG9yIiwgInNlbGVjdGFibGUiLCAiX2NvbXBvbmVudHMiLCAiZXZlbnRCaW5kaW5ncyIsICJfY2xlYXJDb2xvciIsICJzZXRIU1ZBIiwgImFwcGx5Q29sb3IiLCAicmVzdWx0IiwgInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsICJjayIsICJjbG9zZVdpdGhLZXkiLCAiaXNPcGVuIiwgImNvZGUiLCAic29tZSIsICJhZGp1c3RhYmxlTnVtYmVycyIsICJyYW5nZXMiLCAic3RlcCIsICJyYW5nZSIsICJnZXRDb2xvclJlcHJlc2VudGF0aW9uIiwgIm52IiwgInRvUHJlY2lzaW9uIiwgImF1dG9SZXBvc2l0aW9uIiwgInRpbWVvdXQiLCAiY2xvc2VPblNjcm9sbCIsICJzZXRUaW1lb3V0IiwgInJzIiwgImNsZWFyVGltZW91dCIsICJfZXZlbnRCaW5kaW5ncyIsICJib2R5IiwgImViIiwgImlubmVySGVpZ2h0IiwgImlubmVyV2lkdGgiLCAiZXZlbnRTb3VyY2UiLCAib3V0cHV0UHJlY2lzaW9uIiwgInNpbGVudCIsICJfcGFyc2VMb2NhbENvbG9yIiwgImFscGhhTWFrZXNBQ2hhbmdlIiwgImkxOG4iLCAiSTE4Tl9ERUZBVUxUUyIsICJldmVudCIsICJhcmdzIiwgIl9ldmVudExpc3RlbmVyIiwgImNhbGxCYWNrcyIsICJpbmRleE9mIiwgInNwbGljZSIsICJyZW1vdmVTd2F0Y2giLCAic3dhdGNoQ29sb3IiLCAiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCAiZGVzdHJveUFuZFJlbW92ZSIsICJyZWNhbGMiLCAic3RyaW5nIiwgInV0eXBlIiwgImNsaWNrIiwgImdldFNlbGVjdGVkQ29sb3IiLCAiZ2V0Um9vdCIsICJlbmFibGUiLCAiVkVSU0lPTiIsICJtb2R1bGUiLCAiaXNCdWZmZXIiLCAibW9kdWxlIiwgImlzQXJyYXkiLCAiaXNQbGFpbk9iamVjdCIsICJzZXRQcm9wZXJ0eSIsICJnZXRQcm9wZXJ0eSIsICJleHRlbmQiLCAiaSIsICJpbXBvcnRfb2JzaWRpYW4iLCAidCIsICJlIiwgInIiLCAibiIsICJpIiwgIm8iLCAiYSIsICJ1IiwgImMiLCAicyIsICJkIiwgImgiLCAibCIsICJmIiwgImciLCAicCIsICJiIiwgIkYiLCAibSIsICJ5IiwgIkEiLCAiRSIsICJ2IiwgInRleHQiLCAidmFsdWUiLCAiZSIsICJQaWNrciIsICJpIiwgImltcG9ydF9vYnNpZGlhbiIsICJjb2RlU2VjdGlvbiIsICJjb2RlVGV4dCIsICJfIiwgImUiLCAidGV4dCIsICJpIiwgInZhbHVlIiwgIl9hIiwgInRleHQiLCAiZnJvbSIsICJ0byIsICJlbXB0eSIsICJsYW5ndWFnZUljb25zIiwgInBvc2l0aW9uIiwgInRleHQiLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9pc19idWZmZXIiLCAiaW5kZXgiLCAicG9pbnQiLCAicG9zaXRpb24iLCAiaW5kZXgiLCAicGF0aCIsICJpbmRleCIsICJwYXRoIiwgImluZGV4IiwgImluZGV4IiwgInByb3AiLCAicGF0aCIsICJkaXJuYW1lIiwgImFzc2VydFBhdGgiLCAiYmFzZW5hbWUiLCAiZXh0bmFtZSIsICJidWZmZXJMaWtlIiwgInBhcnNlIiwgImluZGV4IiwgImV4dGVuZCIsICJ2YWx1ZSIsICJvcHRpb25zIiwgIm5vZGUiLCAiZmlsZSIsICJpc0J1ZmZlciIsICJpbmRleCIsICJsaXN0IiwgImFsbCIsICJpbmRleCIsICJleHRlbnNpb24iLCAibGlzdCIsICJvayIsICJwcmV2aW91cyIsICJkb2N1bWVudCIsICJzZWxmIiwgInBvaW50IiwgImluZGV4IiwgIm9rIiwgImNvbnN0cnVjdHMiLCAiaW5kZXgiLCAiaW5kZXgiLCAidGV4dCIsICJvayIsICJhdHRlbnRpb25NYXJrZXJzIiwgInByZXZpb3VzIiwgInBvaW50IiwgIm9rIiwgIm9rIiwgIm9rIiwgInNlbGYiLCAib2siLCAiY2hhcmFjdGVyUmVmZXJlbmNlIiwgIm9rIiwgInNlbGYiLCAib2siLCAic2VsZiIsICJlZmZlY3RzIiwgIm5vayIsICJzdGFydCIsICJvayIsICJzZWxmIiwgImZ1cnRoZXJTdGFydCIsICJpbmRleCIsICJvayIsICJzZWxmIiwgImluZGV4IiwgInByZXZpb3VzIiwgInN0YXJ0IiwgImNvbnRlbnQiLCAib2siLCAicHJldmlvdXMiLCAic2VsZiIsICJvayIsICJvayIsICJzZWxmIiwgIm9rIiwgIm9rIiwgIm9rIiwgInNlbGYiLCAidGl0bGVCZWZvcmUiLCAib2siLCAiY29udGVudCIsICJ0ZXh0IiwgIm9rIiwgImluZGV4IiwgIm9rIiwgInNlbGYiLCAiYnVmZmVyIiwgIm9rIiwgInNlbGYiLCAiaW5kZXgiLCAiaW5kZXgiLCAidGV4dCIsICJvayIsICJzZWxmIiwgIm9rIiwgInNlbGYiLCAib2siLCAic2VsZiIsICJvayIsICJvayIsICJvayIsICJzZWxmIiwgImluZGV4IiwgImNvbnRlbnQiLCAidGV4dCIsICJkZWZpbml0aW9uIiwgIm9rIiwgInNlbGYiLCAic2VsZiIsICJjb250ZW50IiwgInNlbGYiLCAiY29uc3RydWN0cyIsICJ0ZXh0IiwgImxpc3QiLCAiaW5kZXgiLCAicG9pbnQiLCAiZXhpdCIsICJfIiwgImNvbnN0cnVjdHMiLCAiYWxsIiwgImxpc3QiLCAib2siLCAiZnJvbSIsICJpbmRleCIsICJkb2N1bWVudCIsICJmbG93IiwgInN0cmluZyIsICJ0ZXh0IiwgImRvY3VtZW50IiwgImZsb3ciLCAic3RyaW5nIiwgInRleHQiLCAiY29uc3RydWN0cyIsICJkb2N1bWVudCIsICJidWZmZXIiLCAiYmFzZSIsICJoZWFkIiwgIm93biIsICJibG9ja1F1b3RlIiwgImJ1ZmZlciIsICJjb2RlVGV4dCIsICJkZWZpbml0aW9uIiwgImxpc3QiLCAidGhlbWF0aWNCcmVhayIsICJleGl0IiwgImluZGV4IiwgInBvaW50IiwgImxpc3RJdGVtIiwgIm5vZGUiLCAiZGF0YSIsICJ0ZXh0IiwgInN0cmluZyIsICJkIiwgImV4dGVuc2lvbiIsICJpbmRleCIsICJhbGwiLCAibm9kZSIsICJkIiwgImlzIiwgIm5vZGUiLCAiaW5kZXgiLCAidmlzaXQiLCAibm9kZSIsICJpbmRleCIsICJlbGVtZW50IiwgIl8iLCAidGV4dCIsICJub2RlIiwgImluZGV4Il0KfQo= diff --git a/package-lock.json b/package-lock.json index b7e5062..ff1ff2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,10 @@ "@lezer/common": "^1.0.3", "@lezer/highlight": "^1.1.6", "@simonwep/pickr": "^1.8.2", - "colortranslator": "^2.0.0" + "colortranslator": "^2.0.0", + "remark-parse": "^10.0.2", + "unified": "^10.1.2", + "unist-util-visit": "^5.0.0" }, "devDependencies": { "@types/node": "^20.4.0", @@ -965,6 +968,14 @@ "@types/tern": "*" } }, + "node_modules/@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", @@ -977,6 +988,19 @@ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, + "node_modules/@types/mdast": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", + "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, "node_modules/@types/node": { "version": "20.4.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz", @@ -998,6 +1022,11 @@ "@types/estree": "*" } }, + "node_modules/@types/unist": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", + "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.61.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz", @@ -1268,6 +1297,15 @@ "node": ">=8" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1337,6 +1375,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1403,7 +1450,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -1416,6 +1462,18 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1423,6 +1481,22 @@ "dev": true, "peer": true }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1688,6 +1762,11 @@ "node": ">=0.10.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1956,6 +2035,28 @@ "dev": true, "peer": true }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1996,6 +2097,17 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2030,6 +2142,14 @@ "dev": true, "peer": true }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2079,6 +2199,41 @@ "node": ">=10" } }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2088,6 +2243,427 @@ "node": ">= 8" } }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -2123,11 +2699,18 @@ "node": "*" } }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanopop": { "version": "2.3.0", @@ -2325,6 +2908,20 @@ } ] }, + "node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2384,6 +2981,17 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -2494,6 +3102,15 @@ "node": ">=8.0" } }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/tslib": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", @@ -2560,6 +3177,90 @@ "node": ">=14.17" } }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", + "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==" + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2570,6 +3271,51 @@ "punycode": "^2.1.0" } }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", diff --git a/package.json b/package.json index 8d6eb64..a87ef02 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,9 @@ "@lezer/common": "^1.0.3", "@lezer/highlight": "^1.1.6", "@simonwep/pickr": "^1.8.2", - "colortranslator": "^2.0.0" + "colortranslator": "^2.0.0", + "remark-parse": "^10.0.2", + "unified": "^10.1.2", + "unist-util-visit": "^5.0.0" } } diff --git a/src/ReadingView.ts b/src/ReadingView.ts index b527d93..8fb2a31 100644 --- a/src/ReadingView.ts +++ b/src/ReadingView.ts @@ -1,4 +1,7 @@ import { MarkdownSectionInformation, CachedMetadata, sanitizeHTMLToDom, FrontMatterCache, MarkdownRenderer, Component } from "obsidian"; +import {unified} from "unified"; +import remarkParse from "remark-parse"; +import {visit} from "unist-util-visit"; import CodeStylerPlugin from "./main"; import { PRIMARY_DELAY, SECONDARY_DELAY } from "./Settings"; @@ -203,10 +206,23 @@ async function remakeCodeblock(codeblockCodeElement: HTMLElement, codeblockPreEl return; // Add line numbers - let codeblockLines = codeblockCodeElement.innerHTML.split("\n"); - if (codeblockLines.length == 1) - codeblockLines = ['','']; + let tree = unified().use(remarkParse).parse(codeblockCodeElement.innerHTML.replace(/\n/g,'
')); + let stack: Array = []; + let codeblockHTML: string = ''; codeblockCodeElement.innerHTML = ""; + visit(tree,(node)=>{ + if (node.type === 'html' || node.type === 'text') { + if (node.type === 'html' && node.value !== '
') { + if (node.value.startsWith('') + node.value = ''.repeat(stack.length)+'
'+stack.join(''); + codeblockHTML += node.value; + } + }); + let codeblockLines = codeblockHTML.split('
'); codeblockLines.forEach((line,index) => { if (index === codeblockLines.length-1) return; @@ -218,12 +234,13 @@ async function remakeCodeblock(codeblockCodeElement: HTMLElement, codeblockPreEl codeblockCodeElement.appendChild(lineWrapper); let lineNumberDisplay = ''; if (!codeblockParameters.lineNumbers.alwaysEnabled && codeblockParameters.lineNumbers.alwaysDisabled) - lineNumberDisplay = '-hide' + lineNumberDisplay = '-hide'; else if (codeblockParameters.lineNumbers.alwaysEnabled && !codeblockParameters.lineNumbers.alwaysDisabled) - lineNumberDisplay = '-specific' + lineNumberDisplay = '-specific'; lineWrapper.appendChild(createDiv({cls: `code-styler-line-number${lineNumberDisplay}`, text: (lineNumber+codeblockParameters.lineNumbers.offset).toString()})); lineWrapper.appendChild(createDiv({cls: `code-styler-line-text`, text: sanitizeHTMLToDom(line !== "" ? line : "
")})); }); + console.log(codeblockCodeElement.innerHTML) } export function remeasureReadingView(element: HTMLElement, primary_delay: number = PRIMARY_DELAY): void { const codeblockPreElements = element.querySelectorAll('pre:not(.frontmatter)'); diff --git a/styles.css b/styles.css index 66fff5a..ff9d77d 100644 --- a/styles.css +++ b/styles.css @@ -1169,3 +1169,4 @@ body { width: 400px; height: 220px; } +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2Nzcy9jb2RlYmxvY2tzLmNzcyIsICJzcmMvY3NzL2lubGluZUNvZGUuY3NzIiwgInNyYy9jc3MvcGRmRXhwb3J0LmNzcyIsICJzcmMvY3NzL3BpY2tyLmNzcyIsICJzcmMvY3NzL3BsdWdpbkNvbXBhdGliaWxpdHkuY3NzIiwgInNyYy9zdHlsZXMuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiogUHJlIGVsZW1lbnRzICovXG4uY29kZS1zdHlsZXItcHJlLXBhcmVudHtcblx0bWFyZ2luLWJvdHRvbTogMTZweDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRtaW4taGVpZ2h0OiB1bnNldDtcblx0cGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG5cdG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlW2NsYXNzKj0nbGFuZ3VhZ2UtJ10ge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWxhbmd1YWdlLWJvcmRlci1jb2xvdXIpLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCBhdXRvO1xuXHRncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuXHR0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgYm9yZGVyLXRvcCBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHRtYXgtaGVpZ2h0OiAwO1xuXHRvdmVyZmxvdy14OiBzY3JvbGw7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlOm5vdCg6aGFzKCA+IGlucHV0W3N0eWxlKj1cImRpc3BsYXk6IGlubGluZTtcIl0pKTphY3RpdmUge1xuXHQtLWxpbmUtd3JhcHBpbmc6IHZhcigtLWxpbmUtYWN0aXZlLXdyYXBwaW5nKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGNvZGUge1xuXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmU6OmJlZm9yZSxcbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlOjphZnRlciB7XG5cdGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jayBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0bWFyZ2luOiAxZW0gMHB4O1xufVxuXG4vKiogRWRpdGluZyBNb2RlIEJvZHkgKi9cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4ge1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLkh5cGVyTUQtY29kZWJsb2NrLWVuZCB7XG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoW2NsYXNzKj0nY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy0nXSkpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10pICsgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5IeXBlck1ELWNvZGVibG9jay1iZWdpbjpudGgtb2YtdHlwZSgxKSB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCAxMDAlKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tc2l6ZS00LTQpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSwgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSwgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgdmFyKC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcCksIHRyYW5zcGFyZW50IDEwMCUpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRtYXJnaW4tbGVmdDogdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKTtcbn1cblxuLyoqIEhlYWRlciBzdHlsaW5nICovXG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBkaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cykgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgZGl2Omhhcyg+IGltZy5jb2RlLXN0eWxlci1pY29uKSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSksXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGZvbnQtc2l6ZTogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSk7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRoZWlnaHQ6IHZhcigtLWNvbnRhaW5lci1oZWlnaHQpO1xuXHRtaW4taGVpZ2h0OiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCk7XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1oZWFkZXItcGFkZGluZyk7XG5cdG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyAgXG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdHRyYW5zaXRpb246IGJvcmRlci1ib3R0b20gZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0Ym94LXNpemluZzogY29udGVudC1ib3g7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCk7XG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0Ym9yZGVyLXRvcDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdGJvcmRlci1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkgc29saWQgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106bm90KDpoYXMoKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4pKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogdmFyKC0taGVhZGVyLXBhZGRpbmcpO1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy1yaWdodDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKSAwcHggMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLWJhY2tncm91bmQtY29sb3VyKTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1jb2xvdXIpO1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1pdGFsaWMsIG5vcm1hbCk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dHJhbnNpdGlvbjogYm9yZGVyLXJhZGl1cyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBwYWRkaW5nIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG4uY29kZS1zdHlsZXItaGVhZGVyLXRleHQge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwYWRkaW5nLWxlZnQ6IDBweDtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXRleHQtY29sb3VyKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWl0YWxpYywgbm9ybWFsKTtcblx0dHJhbnNpdGlvbjogcGFkZGluZyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIGRpdiA+IGltZy5jb2RlLXN0eWxlci1pY29uKSkgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSk6bm90KFtjbGFzcyo9J2NvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzJ10pIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLVwiXSkpIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG59XG5kaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdHBhZGRpbmctdG9wOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG5cdHRyYW5zaXRpb246IHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbi5jb2RlLXN0eWxlci1pY29uIHtcblx0d2lkdGg6IHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSk7XG5cdGhlaWdodDogdmFyKC0tbGFuZ3VhZ2UtaWNvbi1zaXplKTtcblx0ZmlsdGVyOiB2YXIoLS1sYW5ndWFnZS1pY29uLWZpbHRlcik7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmVzICovXG5wcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQnXSA+IC5jb2RlLXN0eWxlci1saW5lLXRleHQge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyKSAwJSB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAxMDAlKTtcbn1cbi5jb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkIHtcblx0LS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cjogdmFyKC0tY29kZS1zdHlsZXItZGVmYXVsdC1oaWdobGlnaHQtY29sb3VyKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodCAuY20tYWN0aXZlLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3IgLmNtLWFjdGl2ZSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tY29kZS1zdHlsZXItYWN0aXZlLWVkaXRvci1saW5lLWNvbG91ciksIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSxcbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5jbS1hY3RpdmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWNvZGUtc3R5bGVyLWFjdGl2ZS1jb2RlYmxvY2stbGluZS1jb2xvdXIpLCB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSkgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmUgbnVtYmVycyAqL1xuLmNvZGUtc3R5bGVyOm5vdCguY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMpIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5jb2RlLXN0eWxlci1saW5lLW51bWJlci1oaWRlIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCBjYWxjKC0xICogdmFyKC0tY29kZS1wYWRkaW5nKSkgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgPiBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2Omxhc3QtY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IHZhcigtLWNvZGUtcGFkZGluZykgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2Om9ubHktY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IGNhbGMoLTEgKiB2YXIoLS1jb2RlLXBhZGRpbmcpKSB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpLDBweCB2YXIoLS1jb2RlLXBhZGRpbmcpIHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDRweCArIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkpO1xuXHRwYWRkaW5nLXJpZ2h0OiA4cHg7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRtaW4td2lkdGg6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpO1xuXHRmb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9zcGFjZSk7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItdGV4dC1jb2xvdXIpO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2sgLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jayAuY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMge1xuXHRwYWRkaW5nLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGhlaWdodDogMTAwJTtcblx0bWluLXdpZHRoOiBjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpIC0gMTJweCk7XG5cdG92ZXJmbG93LXg6IGF1dG87XG5cdGRpcmVjdGlvbjogcnRsO1xuXHRsZWZ0OiAwO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiAuY29kZS1zdHlsZXItbGluZS1udW1iZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyB7XG5cdHdpZHRoOiB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItd2lkdGgpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Z3JpZC1jb2x1bW46IDE7XG5cdHBvc2l0aW9uOiBzdGlja3k7XG5cdHRvcDogLTFweDtcblx0bGVmdDogMDtcblx0Ym9yZGVyLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pIHNvbGlkIHRyYW5zcGFyZW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBkaXY6bGFzdC1jaGlsZCA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHR3aWR0aDogdW5zZXQ7XG59XG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBwcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkXCJdIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2suY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uY20tYWN0aXZlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10sXG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZFwiXSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbn1cbi5jb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUgLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlcidde1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS10ZXh0LWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIuY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jazpoYXMoLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyKSxcbi5jb2RlLXN0eWxlci5jb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVycyAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrOmhhcyguY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMpIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDEycHggKyB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoKSArIHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1wYWRkaW5nKSkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddOjpiZWZvcmUge1xuXHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qKiBMaW5lIHRleHQgKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2W2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddIHtcblx0ZGlzcGxheTogY29udGVudHMgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWxpbmUtdGV4dCB7XG5cdGZsZXgtYmFzaXM6IDEwMCU7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXBhZGRpbmcpO1xuXHRncmlkLWNvbHVtbjogMjtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSB7IC8qPyBQcmV2ZW50IExpbmUgV3JhcHMgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSA+IC5jbS1obWQtY29kZWJsb2NrIHsgLyo/IFByZXZlbnQgTGluZSBXcmFwcyAqL1xuXHR3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xufVxuXG4vKiogQnV0dG9ucyAqL1xuQGtleWZyYW1lcyBvdXRkZW50IHtcblx0ZnJvbSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG5cdH1cblx0dG8ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG59XG5Aa2V5ZnJhbWVzIGluZGVudCB7XG5cdGZyb20ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLW91dGRlbnQge1xuXHRmcm9tIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLWluZGVudCB7XG5cdGZyb20ge1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG59XG4ubWFya2Rvd24tcmVuZGVyZWQgcHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ge1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHRkaXNwbGF5OiB1bnNldCAhaW1wb3J0YW50O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cikgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogbm9uZTtcblx0Zm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaW50ZXJmYWNlKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0bWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dG9wOiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRtYXJnaW46IGF1dG87XG5cdG1hcmdpbi1yaWdodDogdmFyKC0taGVhZGVyLWJ1dHRvbi1zcGFjaW5nKTtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0d2lkdGg6IDIwcHg7XG5cdGhlaWdodDogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMicgeG1sOnNwYWNlPSdwcmVzZXJ2ZSclM0UlM0NwYXRoIGQ9J00xNiAyMiA2IDEybDEuNC0xLjQgOC42IDguNiA4LjYtOC42TDI2IDEyeicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInIGZpbGw9J25vbmUnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc2IDkgMTIgMTUgMTggOScvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0c2NhbGU6IDAuODtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBlYXNlLW91dCwgdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIHNjYWxlIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4xNCwgMC4zLCAxKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTo6YWZ0ZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpOjphZnRlciB7XG5cdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106aG92ZXI6OmFmdGVyIHtcblx0c2NhbGU6IDE7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgcHJlLmNvZGUtc3R5bGVyLXByZTpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljKSk6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgYnV0dG9uLmNvcHktY29kZS1idXR0b24sXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKTpoYXMoLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIpIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHR0b3A6IGNhbGMoMC41ICogdmFyKC0tZm9udC10ZXh0LXNpemUpICogMC44NzUgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKSAhaW1wb3J0YW50O1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiAxMnB4O1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIHNwYW4uY29kZS1ibG9jay1mbGFpcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4gc3Bhbi5jb2RlLWJsb2NrLWZsYWlyLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiBzcGFuLmNvZGUtYmxvY2stZmxhaXIgeyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdHRvcDogY2FsYygwLjUgKiB2YXIoLS1mb250LXRleHQtc2l6ZSkgKiAwLjg3NSAqIHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCkpICFpbXBvcnRhbnQ7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0b3A6IG1heChjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMSksY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCkgKiAxKSkgIWltcG9ydGFudDtcblx0Ym90dG9tOiB1bnNldCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHR3aWxsLWNoYW5nZTogbWFyZ2luLXJpZ2h0LCBjbGlwLXBhdGg7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOm5vdCg6YWN0aXZlKSxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpub3QoOmFjdGl2ZSksIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjpub3QoOmFjdGl2ZSkge1xuXHRhbmltYXRpb246IGluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjpob3ZlcixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpob3ZlciwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiBvdXRkZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b246YWN0aXZlLFxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWNvZGUtYnV0dG9uOmFjdGl2ZSwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOjpiZWZvcmUsXG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2suY29kZS1zdHlsZXItbGluZSBzcGFuLmNvZGUtYmxvY2stZmxhaXI6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTI4IDEwdjE4SDEwVjEwaDE4bTAtMkgxMGEyIDIgMCAwIDAtMiAydjE4YTIgMiAwIDAgMCAyIDJoMThhMiAyIDAgMCAwIDItMlYxMGEyIDIgMCAwIDAtMi0yWicvJTNFJTNDcGF0aCBkPSdNNCAxOEgyVjRhMiAyIDAgMCAxIDItMmgxNHYySDRaJy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0bWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00yOCAxMHYxOEgxMFYxMGgxOG0wLTJIMTBhMiAyIDAgMCAwLTIgMnYxOGEyIDIgMCAwIDAgMiAyaDE4YTIgMiAwIDAgMCAyLTJWMTBhMiAyIDAgMCAwLTItMlonLyUzRSUzQ3BhdGggZD0nTTQgMThIMlY0YTIgMiAwIDAgMSAyLTJoMTR2Mkg0WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogMXB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRmb250LXNpemU6IDA7XG5cdHRvcDogbWluKGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMS4xIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEuMSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSkgIWltcG9ydGFudDtcblx0cmlnaHQ6IDA7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsaW5lLWhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpciA+ICoge1xuXHR3aWR0aDogMHB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjpiZWZvcmUge1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHR2ZXJ0aWNhbC1hbGlnbjogLTFweDtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcblx0Y29udGVudDogJ0NvcHknO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4uY29kZS1zdHlsZXItbGluZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuIiwgIi8qKiBJbmxpbmUgQ29kZSAqL1xuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUsXG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUge1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWZvbnQtd2VpZ2h0KTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXIpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy12ZXJ0aWNhbCkgdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20tZm9ybWF0dGluZy1jb2RlIHsgLyo/IFN0YW5kYWxvbmUgYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciB+IHNwYW4uY20taW5saW5lLWNvZGU6bm90KC5jbS1mb3JtYXR0aW5nLWNvZGUpIHtcblx0bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAwcHggIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAuY20tcy1vYnNpZGlhbiBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXIsXG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGU6aGFzKCsgc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkpIHsvKj8gRmlyc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGUgKyBzcGFuLmNtLWlubGluZS1jb2RlOm5vdCguY20tZm9ybWF0dGluZy1jb2RlKSB7IC8qPyBJbm5lciBjb2RlIHdpdGggYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkgKyBzcGFuLmNtLWZvcm1hdHRpbmctY29kZSB7Lyo/IExhc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogMHB4IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG59XG5ib2R5LmNvZGUtc3R5bGVyIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciA+IHNwYW4gPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb246bm90KFtjbGFzcyo9XCJlbW9qaVwiXSkge1xuXHRoZWlnaHQ6IGNhbGModmFyKC0tY29kZS1zaXplKSAqIDEuMik7XG5cdG1hcmdpbi1ib3R0b206IDJweCAhaW1wb3J0YW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXIgLmNvZGUtc3R5bGVyLWlubGluZS10aXRsZSB7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtZm9udC13ZWlnaHQpO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIgc3Bhbi5jb2RlLXN0eWxlci1pbmxpbmUtb3BlbmVyIC5jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGU6OmFmdGVyIHtcblx0Y29udGVudDogJ1xcRkY1Qyc7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtY29sb3IpO1xufVxuLmNvZGUtc3R5bGVyIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciBzcGFuOmhhcyggPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb24pIHtcblx0cGFkZGluZy1yaWdodDogOHB4O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUgLmNvZGUtc3R5bGVyLWlubGluZS1wYXJhbWV0ZXJzIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtY29tbWVudCk7XG59XG4iLCAiZGl2LnByaW50IHtcblx0LS1saW5lLXdyYXBwaW5nOiBwcmUtd3JhcCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIGRpdi5wcmludCBwcmUuY29kZS1zdHlsZXItcHJlIGNvZGUge1xuXHRtYXgtaGVpZ2h0OiB1bnNldDtcbn1cbi5jb2RlLXN0eWxlciBkaXYucHJpbnQgcHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgY29kZSB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsICIvKiogUGlja3IgMS44LjIgTUlUIHwgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL3BpY2tyICovXG4ucGlja3Ige3Bvc2l0aW9uOiByZWxhdGl2ZTtvdmVyZmxvdzogdmlzaWJsZTt0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCl9ICAucGlja3IgKiB7Ym94LXNpemluZzogYm9yZGVyLWJveDtvdXRsaW5lOiBub25lO2JvcmRlcjogbm9uZTthcHBlYXJhbmNlOiBub25lOy13ZWJraXQtYXBwZWFyYW5jZTogbm9uZX0gIC5waWNrciAucGNyLWJ1dHRvbiB7cG9zaXRpb246IHJlbGF0aXZlO2hlaWdodDogMmVtO3dpZHRoOiAyZW07cGFkZGluZzogMC41ZW07Y3Vyc29yOiBwb2ludGVyO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtib3JkZXItcmFkaXVzOiAuMTVlbTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUwIDUwXCIgc3Ryb2tlPVwiJTIzNDI0NDVBXCIgc3Ryb2tlLXdpZHRoPVwiNXB4XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjxwYXRoIGQ9XCJNNDUsNDVMNSw1XCI+PC9wYXRoPjxwYXRoIGQ9XCJNNDUsNUw1LDQ1XCI+PC9wYXRoPjwvc3ZnPicpIG5vLXJlcGVhdCBjZW50ZXI7YmFja2dyb3VuZC1zaXplOiAwO3RyYW5zaXRpb246IGFsbCAwLjNzfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjpiZWZvcmUge3otaW5kZXg6IGluaXRpYWx9ICAucGlja3IgLnBjci1idXR0b246OmFmdGVyIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7aGVpZ2h0OiAxMDAlO3dpZHRoOiAxMDAlO3RyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcztiYWNrZ3JvdW5kOiB2YXIoLS1wY3ItY29sb3IpO2JvcmRlci1yYWRpdXM6IC4xNWVtfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyIHtiYWNrZ3JvdW5kLXNpemU6IDcwJX0gIC5waWNrciAucGNyLWJ1dHRvbi5jbGVhcjo6YmVmb3JlIHtvcGFjaXR5OiAwfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHZhcigtLXBjci1jb2xvcil9ICAucGlja3IgLnBjci1idXR0b24uZGlzYWJsZWQge2N1cnNvcjogbm90LWFsbG93ZWR9ICAucGlja3IgKiwgLnBjci1hcHAgKiB7Ym94LXNpemluZzogYm9yZGVyLWJveDtvdXRsaW5lOiBub25lO2JvcmRlcjogbm9uZTthcHBlYXJhbmNlOiBub25lOy13ZWJraXQtYXBwZWFyYW5jZTogbm9uZX0gIC5waWNrciBpbnB1dDpmb2N1cywgLnBpY2tyIGlucHV0LnBjci1hY3RpdmUsIC5waWNrciBidXR0b246Zm9jdXMsIC5waWNrciBidXR0b24ucGNyLWFjdGl2ZSwgLnBjci1hcHAgaW5wdXQ6Zm9jdXMsIC5wY3ItYXBwIGlucHV0LnBjci1hY3RpdmUsIC5wY3ItYXBwIGJ1dHRvbjpmb2N1cywgLnBjci1hcHAgYnV0dG9uLnBjci1hY3RpdmUge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggdmFyKC0tcGNyLWNvbG9yKX0gIC5waWNrciAucGNyLXBhbGV0dGUsIC5waWNrciAucGNyLXNsaWRlciwgLnBjci1hcHAgLnBjci1wYWxldHRlLCAucGNyLWFwcCAucGNyLXNsaWRlciB7dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzfSAgLnBpY2tyIC5wY3ItcGFsZXR0ZTpmb2N1cywgLnBpY2tyIC5wY3Itc2xpZGVyOmZvY3VzLCAucGNyLWFwcCAucGNyLXBhbGV0dGU6Zm9jdXMsIC5wY3ItYXBwIC5wY3Itc2xpZGVyOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSl9ICAucGNyLWFwcCB7cG9zaXRpb246IGZpeGVkO2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjt6LWluZGV4OiAxMDAwMDtib3JkZXItcmFkaXVzOiAwLjFlbTtiYWNrZ3JvdW5kOiAjZmZmO29wYWNpdHk6IDA7dmlzaWJpbGl0eTogaGlkZGVuO3RyYW5zaXRpb246IG9wYWNpdHkgMC4zcywgdmlzaWJpbGl0eSAwcyAwLjNzO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtib3gtc2hhZG93OiAwIDAuMTVlbSAxLjVlbSAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDFlbSAwIHJnYmEoMCwgMCwgMCwgMC4wMyk7bGVmdDogMDt0b3A6IDB9ICAucGNyLWFwcC52aXNpYmxlIHt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7dmlzaWJpbGl0eTogdmlzaWJsZTtvcGFjaXR5OiAxfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7bWFyZ2luLXRvcDogMC43NWVtfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcy5wY3ItbGFzdCB7bWFyZ2luOiAwfSAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzIHtkaXNwbGF5OiBncmlkO2FsaWduLWl0ZW1zOiBjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIDEuNzVlbSl9ICB9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uIHtmb250LXNpemU6IDFlbTtwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IGNhbGMoMS43NWVtIC0gMTBweCk7aGVpZ2h0OiBjYWxjKDEuNzVlbSAtIDEwcHgpO2JvcmRlci1yYWRpdXM6IDAuMTVlbTtjdXJzb3I6IHBvaW50ZXI7bWFyZ2luOiAyLjVweDtmbGV4LXNocmluazogMDtqdXN0aWZ5LXNlbGY6IGNlbnRlcjt0cmFuc2l0aW9uOiBhbGwgMC4xNXM7b3ZlcmZsb3c6IGhpZGRlbjtiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDt6LWluZGV4OiAxfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjo6YmVmb3JlIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogNnB4O2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjo6YWZ0ZXIge2NvbnRlbnQ6ICcnO3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTtib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDUpO2JvcmRlci1yYWRpdXM6IDAuMTVlbTtib3gtc2l6aW5nOiBib3JkZXItYm94fSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDEuMDUpfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjpub3QoLnBjci1hY3RpdmUpIHtib3gtc2hhZG93OiBub25lfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7YWxpZ24taXRlbXM6IGNlbnRlcjttYXJnaW46IDAgLTAuMmVtIDAgLTAuMmVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiA+ICoge21hcmdpbjogMCAwLjJlbX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQge2xldHRlci1zcGFjaW5nOiAwLjA3ZW07Zm9udC1zaXplOiAwLjc1ZW07dGV4dC1hbGlnbjogY2VudGVyO2N1cnNvcjogcG9pbnRlcjtjb2xvcjogIzc1Nzk3ZTtiYWNrZ3JvdW5kOiAjZjFmM2Y0O2JvcmRlci1yYWRpdXM6IC4xNWVtO3RyYW5zaXRpb246IGFsbCAwLjE1cztwYWRkaW5nOiAwLjQ1ZW0gMC41ZW07bWFyZ2luLXRvcDogMC43NWVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiBpbnB1dDpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDAuOTc1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQ6Zm9jdXMge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggcmdiYSg2NiwgMTMzLCAyNDQsIDAuNzUpfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdCB7Y29sb3I6ICM3NTc5N2U7dGV4dC1hbGlnbjogbGVmdDtmbGV4OiAxIDEgOGVtO21pbi13aWR0aDogOGVtO3RyYW5zaXRpb246IGFsbCAwLjJzO2JvcmRlci1yYWRpdXM6IC4xNWVtO2JhY2tncm91bmQ6ICNmMWYzZjQ7Y3Vyc29yOiB0ZXh0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdDo6LW1vei1zZWxlY3Rpb24ge2JhY2tncm91bmQ6ICM0Mjg1ZjQ7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItcmVzdWx0OjpzZWxlY3Rpb24ge2JhY2tncm91bmQ6ICM0Mjg1ZjQ7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItdHlwZS5hY3RpdmUge2NvbG9yOiAjZmZmO2JhY2tncm91bmQ6ICM0Mjg1ZjR9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3Itc2F2ZSwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbCwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyIHtjb2xvcjogI2ZmZjt3aWR0aDogYXV0b30gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXIge2NvbG9yOiAjZmZmfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXNhdmU6aG92ZXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWw6aG92ZXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhcjpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDAuOTI1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlIHtiYWNrZ3JvdW5kOiAjNDI4NWY0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsIHtiYWNrZ3JvdW5kOiAjZjQ0MjUwfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyOmZvY3VzLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoMjQ0LCA2NiwgODAsIDAuNzUpfSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1waWNrZXIge3Bvc2l0aW9uOiBhYnNvbHV0ZTtoZWlnaHQ6IDE4cHg7d2lkdGg6IDE4cHg7Ym9yZGVyOiAycHggc29saWQgI2ZmZjtib3JkZXItcmFkaXVzOiAxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7LW1vei11c2VyLXNlbGVjdDogbm9uZTstbXMtdXNlci1zZWxlY3Q6IG5vbmU7dXNlci1zZWxlY3Q6IG5vbmV9ICAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUsIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IHtwb3NpdGlvbjogcmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy1tcy11c2VyLXNlbGVjdDogbm9uZTt1c2VyLXNlbGVjdDogbm9uZTtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Y3Vyc29yOiBncmFiO2N1cnNvcjogLXdlYmtpdC1ncmFifSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlOmFjdGl2ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyOmFjdGl2ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5OmFjdGl2ZSB7Y3Vyc29yOiBncmFiYmluZztjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmd9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10ge3dpZHRoOiAxNC4yNWVtO21heC13aWR0aDogOTV2d30gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXN3YXRjaGVzIHttYXJnaW4tdG9wOiAuNmVtO3BhZGRpbmc6IDAgLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLWludGVyYWN0aW9uIHtwYWRkaW5nOiAwIC42ZW0gLjZlbSAuNmVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIHtkaXNwbGF5OiBncmlkO2dyaWQtZ2FwOiAuNmVtO2dyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDRmcjtncmlkLXRlbXBsYXRlLXJvd3M6IDVmciBhdXRvIGF1dG87YWxpZ24taXRlbXM6IGNlbnRlcjtoZWlnaHQ6IDEwLjVlbTt3aWR0aDogMTAwJTthbGlnbi1zZWxmOiBmbGV4LXN0YXJ0fSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcHJldmlldyB7Z3JpZC1hcmVhOiAyIC8gMSAvIDQgLyAxO2hlaWdodDogMTAwJTt3aWR0aDogMTAwJTtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7bWFyZ2luLWxlZnQ6IC42ZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wcmV2aWV3IC5wY3ItbGFzdC1jb2xvciB7ZGlzcGxheTogbm9uZX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1jdXJyZW50LWNvbG9yIHtwb3NpdGlvbjogcmVsYXRpdmU7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTt3aWR0aDogMmVtO2hlaWdodDogMmVtO2JvcmRlci1yYWRpdXM6IDUwZW07b3ZlcmZsb3c6IGhpZGRlbn0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1jdXJyZW50LWNvbG9yOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSB7Z3JpZC1hcmVhOiAxIC8gMSAvIDIgLyAzO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTt6LWluZGV4OiAxfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSAucGNyLXBhbGV0dGUge2JvcmRlci1yYWRpdXM6IC4xNWVtO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUgLnBjci1wYWxldHRlOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciB7Z3JpZC1hcmVhOiAyIC8gMiAvIDIgLyAyfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7Z3JpZC1hcmVhOiAzIC8gMiAvIDMgLyAyfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciwgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7aGVpZ2h0OiAwLjVlbTttYXJnaW46IDAgLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1waWNrZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1waWNrZXIge3RvcDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1zbGlkZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1zbGlkZXIge2ZsZXgtZ3JvdzogMTtib3JkZXItcmFkaXVzOiA1MGVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciAucGNyLXNsaWRlciB7YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZWQsICNmZjAsIGxpbWUsIGN5YW4sIGJsdWUsICNmMGYsIHJlZCl9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IC5wY3Itc2xpZGVyIHtiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCBibGFjayksIHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogMTAwJSwgMC4yNWVtfVxuLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbiB7XG5cdHBhZGRpbmc6IDA7XG59XG4iLCAiLyoqIEV4ZWN1dGUgQ29kZSBQbHVnaW4gKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDIuNSAqIHZhcigtLWNvZGUtcGFkZGluZykpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZykpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci10b3A6IHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpIHNvbGlkIHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1zZXBhcmF0b3ItY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCB7XG5cdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpob3ZlciBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQge1xuXHRtYXJnaW4tYm90dG9tOiAwO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQgaW5wdXQuaW50ZXJhY3RpdmUtc3RkaW4ge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW5vcm1hbCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKTtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29kZS1jb21tZW50KTtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IGhyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiB7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAyNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiB7XG5cdHRvcDogNTAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b246OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTcgMjhhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLjQ4Mi0uODc2bDIwIDExYTEgMSAwIDAgMSAwIDEuNzUybC0yMCAxMUExIDEgMCAwIDEgNyAyOFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTcgMjhhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLjQ4Mi0uODc2bDIwIDExYTEgMSAwIDAgMSAwIDEuNzUybC0yMCAxMUExIDEgMCAwIDEgNyAyOFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmVydGljYWwtYWxpZ246IDBweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbi1kaXNhYmxlZCxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1idXR0b24tZGlzYWJsZWQge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b24ge1xuXHRoZWlnaHQ6IDE0cHg7XG5cdG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgMTJweCk7XG5cdHdpbGwtY2hhbmdlOiBtYXJnaW4tcmlnaHQsIGNsaXAtcGF0aDtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbjo6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxNHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xuXHQtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNMTYgNCA2IDE0bDEuNDEgMS40MUwxNSA3LjgzVjI4aDJWNy44M2w3LjU5IDcuNThMMjYgMTQgMTYgNHonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTE2IDQgNiAxNGwxLjQxIDEuNDFMMTUgNy44M1YyOGgyVjcuODNsNy41OSA3LjU4TDI2IDE0IDE2IDR6Jy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdHZlcnRpY2FsLWFsaWduOiAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b246bm90KDphY3RpdmUpIHtcblx0YW5pbWF0aW9uOiByZXZlcnNlLWluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiByZXZlcnNlLW91dGRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvciB7XG5cdGNvbG9yOiBub25lO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xuXHR6LWluZGV4OiAxMDtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yOjpiZWZvcmUge1xuXHRib3gtc2hhZG93OiBub25lO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Igc3ZnIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Igc3ZnOmhvdmVyIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1hY3RpdmUtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yLnZpc2libGUge1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi8qKiBFbWJlZCBDb2RlIFBsdWdpbiAqL1xuLmJsb2NrLWxhbmd1YWdlLXByZXZpZXcgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIHtcblx0d2hpdGUtc3BhY2U6IHVuc2V0O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBzcGFuLmNvZGUtYmxvY2stbGluZV9udW0td3JhcCxcbnByZS5jb2RlLXN0eWxlci1wcmUgZGl2LmNvZGUtYmxvY2staGlnaGxpZ2h0LXdyYXAge1xuXHRkaXNwbGF5OiBub25lO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOjphZnRlciB7XG5cdGNvbnRlbnQ6ICdFZGl0IEJsb2NrJztcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRwYWRkaW5nLWxlZnQ6IDRweDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jazpub3QoOmhvdmVyKSAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbiB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uIHtcblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogY2FsYygyLjIgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblx0LS1kZW50LWRpZmZlcmVuY2U6IDBweDtcblx0LS1wb2x5Z29uLWluOiBwb2x5Z29uKDAgMCwgMThweCAwLCAxOHB4IDM2cHgsIDAgMzZweCk7XG4gICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdHotaW5kZXg6IDEwO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdHRvcDogbWF4KGNhbGMoMC41ICogdmFyKC0tY29udGFpbmVyLWhlaWdodCkgKiAxKSxjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEpKTtcblx0bWFyZ2luOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdHdpbGwtY2hhbmdlOiBtYXJnaW4tcmlnaHQsIGNsaXAtcGF0aDtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0cGFkZGluZzogMDtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQ6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSArIC5lZGl0LWJsb2NrLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpub3QoOmhhcyggcHJlLmNvZGUtc3R5bGVyLXByZSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYykpOm5vdCg6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuZWRpdC1ibG9jay1idXR0b24sXG5ib2R5IC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpoYXMoIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcikgKyAuZWRpdC1ibG9jay1idXR0b24geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDRweDtcblx0dG9wOiBjYWxjKDAuNSAqIHZhcigtLWZvbnQtdGV4dC1zaXplKSAqIDAuODc1ICogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKSk7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2s6aG92ZXIgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b246aG92ZXIge1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiByZXZlcnNlLW91dGRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrOmhvdmVyIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5cbi8qKiBGaWxlIEluY2x1ZGUgUGx1Z2luICovXG5kaXYuYmxvY2stbGFuZ3VhZ2UtaW5jbHVkZSBwcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0bWFyZ2luOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG59XG5kaXYuYmxvY2stbGFuZ3VhZ2UtaW5jbHVkZSBwcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOmhvdmVyIHtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG59XG4iLCAiLyoqIERlZmluZSBDU1MgdmFyaWFibGVzICovXG5AaW1wb3J0IFwiLi9jc3MvY29kZWJsb2Nrcy5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9pbmxpbmVDb2RlLmNzc1wiO1xuQGltcG9ydCBcIi4vY3NzL3BkZkV4cG9ydC5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9waWNrci5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9wbHVnaW5Db21wYXRpYmlsaXR5LmNzc1wiO1xuXG5ib2R5IHtcblx0LyogQ29kZWJsb2NrIEJvZHkgKi9cblx0LS1ib3JkZXItcmFkaXVzOiAxMHB4O1xuXHQtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyOiB0cmFuc3BhcmVudDtcblx0LS1jb2RlLXBhZGRpbmc6IDhweDtcblx0LS1jb250YWluZXItaGVpZ2h0OiBjYWxjKHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSkgKyAyICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpICogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSkpO1xuXHQtLWNvbnRhaW5lci1taW4taGVpZ2h0OiBjYWxjKCh2YXIoLS1oZWFkZXItZm9udC1zaXplKSArIDIgKiB2YXIoLS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZykgKiB2YXIoLS1oZWFkZXItZm9udC1zaXplKSkgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKTtcblx0LS1sYW5ndWFnZS1ib3JkZXItY29sb3VyOiB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpO1xuXHQtLWxhbmd1YWdlLWJvcmRlci13aWR0aDogMHB4O1xuXG5cdC8qIEhlYWRlciAqL1xuXHQtLWhlYWRlci1mb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdC0taGVhZGVyLXBhZGRpbmc6IDBweDtcblx0LS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZzogMC4zO1xuXHQtLWhlYWRlci1zcGFjaW5nOiAxNXB4O1xuXHQtLWhlYWRlci1idXR0b24tc3BhY2luZzogMTRweDtcblx0LS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoOiAycHg7XG5cdC0taGVhZGVyLXNlcGFyYXRvci13aWR0aC1wYWRkaW5nOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0LS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyOiBub25lO1xuXHQtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXHQtLWxhbmd1YWdlLWljb24tc2l6ZTogMjhweDtcblx0LS1sYW5ndWFnZS1pY29uLWZpbHRlcjogbm9uZTtcblxuXHQvKiBMaW5lcyAqL1xuXHQtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3A6IDEwMCU7XG5cblx0LyogTGluZSBOdW1iZXJzICovXG5cdC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb246IDJweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZzogMTZweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItbWluLXdpZHRoOiAzMi42N3B4O1xuXG5cdC8qIExpbmUgVGV4dCAqL1xuXHQtLWxpbmUtd3JhcHBpbmc6IHByZS13cmFwO1xuXHQtLWxpbmUtYWN0aXZlLXdyYXBwaW5nOiB2YXIoLS1saW5lLXdyYXBwaW5nKTtcblxuXHQvKiBCdXR0b25zICovXG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cjogdmFyKC0tdGV4dC1tdXRlZCk7XG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWFjdGl2ZS1jb2xvdXI6IHdoaXRlO1xuXHQtLWR1cmF0aW9uLWJ1dHRvbjogMjQwbXM7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAzMHB4O1xuXHQtLXBvbHlnb24taW46IHBvbHlnb24oMCAwLCAxNnB4IDAsIDE2cHggMzZweCwgMCAzNnB4KTtcblx0LS1wb2x5Z29uLW91dDogcG9seWdvbigwIDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiBjYWxjKDMgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblxuXHQvKiBJbmxpbmUgQ29kZSAqL1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1mb250LXdlaWdodDogNDAwO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzOiA2cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctdmVydGljYWw6IDVweDtcblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsOiA1cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsOiAwcHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWNvbG91cjogdmFyKC0tY29kZS1ub3JtYWwpO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlOiB2YXIoLS1jb2RlLW5vcm1hbCk7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWJhY2tncm91bmQtY29sb3VyOiB2YXIoLS1jb2RlLWJhY2tncm91bmQpO1xufVxuXG4vKiogU2V0dGluZ3MgKi9cbi5zZXR0aW5nLWl0ZW0uY29kZS1zdHlsZXItc3BhY2VkIC5jaGVja2JveC1jb250YWluZXIgKyAucGlja3Ige1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY29kZS1zdHlsZXItZG9uYXRpb24ge1xuXHR3aWR0aDogNzAlO1xuXHRtYXJnaW46IDAgYXV0bztcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNvZGUtc3R5bGVyLXNldHRpbmctdGV4dC1hcmVhIHRleHRhcmVhIHtcblx0d2lkdGg6IDQwMHB4O1xuXHRoZWlnaHQ6IDIyMHB4O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBSUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFBQTtBQUlDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQUE7QUFFRTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBR0Y7QUFBQTtBQUVFO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFHRjtBQUFBO0FBRUU7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBR0Y7QUFBQTtBQUVFO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdGO0FBQ0k7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFSjtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQTJFO0FBQWlRO0FBQUE7QUFDbDhTO0FBQ0M7QUFBQTs7O0FDRkQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDSDtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBSUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7OztBQ3pKRDtBQUVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo= */