(()=>{var __webpack_modules__={58:module=>{eval("/**\n * callbag-reject\n * -----------\n *\n * Callbag operator that rejects all source items that satisfy a predicate function.\n * Works on either pullable or listenable sources.\n *\n * `npm install callbag-reject`\n *\n * Example:\n *\n * const forEach = require('callbag-for-each');\n * const fromIter = require('callbag-from-iter');\n * const pipe = require('callbag-pipe');\n * const reject = require('callbag-reject'); \n * \n * const isEven = n => n % 2 === 0;\n *\n * pipe(\n * fromIter([1, 2, 3, 4]),\n * reject(isEven),\n * forEach(console.log) // 1, 3\n * );\n */\n\nconst reject = r => source => (start, sink) => {\n let ask;\n start === 0 && source(start, (t, d) => {\n if (t === start) {\n ask = d;\n }\n if (t === 1) {\n try {\n r(d) ? ask(t) : sink(t, d);\n } catch (e) {\n sink(2, e);\n }\n return;\n }\n sink(t, d);\n });\n};\n\nmodule.exports = reject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2NhbGxiYWctcmVqZWN0QDEuMC4wL25vZGVfbW9kdWxlcy9jYWxsYmFnLXJlamVjdC9yZWFkbWUuanM/MGQxOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNhbGxiYWctcmVqZWN0XG4gKiAtLS0tLS0tLS0tLVxuICpcbiAqIENhbGxiYWcgb3BlcmF0b3IgdGhhdCByZWplY3RzIGFsbCBzb3VyY2UgaXRlbXMgdGhhdCBzYXRpc2Z5IGEgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICogV29ya3Mgb24gZWl0aGVyIHB1bGxhYmxlIG9yIGxpc3RlbmFibGUgc291cmNlcy5cbiAqXG4gKiBgbnBtIGluc3RhbGwgY2FsbGJhZy1yZWplY3RgXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgY29uc3QgZm9yRWFjaCA9IHJlcXVpcmUoJ2NhbGxiYWctZm9yLWVhY2gnKTtcbiAqICAgICBjb25zdCBmcm9tSXRlciA9IHJlcXVpcmUoJ2NhbGxiYWctZnJvbS1pdGVyJyk7XG4gKiAgICAgY29uc3QgcGlwZSA9IHJlcXVpcmUoJ2NhbGxiYWctcGlwZScpO1xuICogICAgIGNvbnN0IHJlamVjdCA9IHJlcXVpcmUoJ2NhbGxiYWctcmVqZWN0Jyk7IFxuICogXG4gKiAgICAgY29uc3QgaXNFdmVuID0gbiA9PiBuICUgMiA9PT0gMDtcbiAqXG4gKiAgICAgcGlwZShcbiAqICAgICAgIGZyb21JdGVyKFsxLCAyLCAzLCA0XSksXG4gKiAgICAgICByZWplY3QoaXNFdmVuKSxcbiAqICAgICAgIGZvckVhY2goY29uc29sZS5sb2cpIC8vIDEsIDNcbiAqICAgICApO1xuICovXG5cbmNvbnN0IHJlamVjdCA9IHIgPT4gc291cmNlID0+IChzdGFydCwgc2luaykgPT4ge1xuICBsZXQgYXNrO1xuICBzdGFydCA9PT0gMCAmJiBzb3VyY2Uoc3RhcnQsICh0LCBkKSA9PiB7XG4gICAgaWYgKHQgPT09IHN0YXJ0KSB7XG4gICAgICBhc2sgPSBkO1xuICAgIH1cbiAgICBpZiAodCA9PT0gMSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcihkKSA/IGFzayh0KSA6IHNpbmsodCwgZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHNpbmsoMiwgZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNpbmsodCwgZCk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSByZWplY3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58\n")},70:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var src_core_entry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3693);\n/* harmony import */ var src_core_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9061);\n\n\nconst workspace = document.querySelector(".workspace");\nconst registerEvent = (type, fn) => src_core_entry__WEBPACK_IMPORTED_MODULE_0__.plugin.registerDomEvent(workspace, type, (event) => {\n const { target } = event;\n const isAnchor = target instanceof HTMLAnchorElement;\n if (!isAnchor) return;\n const parentMindmap = target.closest("svg.markmap");\n if (!parentMindmap) return;\n const href = target.getAttribute("href");\n if (!href) return;\n const hasProtocol = /^[^#:]*:.*#/.test(href);\n if (hasProtocol) return;\n fn({ event, target, parentMindmap, href });\n});\nregisterEvent("click", ({ event, parentMindmap, href }) => {\n event.preventDefault();\n const { path } = src_core_state__WEBPACK_IMPORTED_MODULE_1__/* .pluginState */ .f.svgs.get(parentMindmap);\n app.workspace.openLinkText(href, path);\n});\nsrc_core_entry__WEBPACK_IMPORTED_MODULE_0__.plugin.registerHoverLinkSource("mindmap-nextgen", {\n display: "Mindmap Nextgen",\n defaultMod: true\n});\nregisterEvent("mouseover", ({ event, target, parentMindmap, href }) => {\n app.workspace.trigger("hover-link", {\n event,\n source: "mindmap-nextgen",\n hoverParent: parentMindmap,\n targetEl: target,\n linktext: href\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJtYXBwaW5ncyI6Ijs7O0FBQXVCO0FBQ0s7QUFHNUIsTUFBTSxZQUFZLFNBQVMsY0FBYyxZQUFxQjtBQUU5RCxNQUFNLGdCQUFnQixDQUFDLE1BQTZCLE9BTWxELGtEQUFNLENBQUMsaUJBQWlCLFdBQVcsTUFBTSxXQUFTO0FBQ2hELFFBQU0sRUFBRSxPQUFPLElBQUk7QUFDbkIsUUFBTSxXQUFXLGtCQUFrQjtBQUNqQyxNQUFJLENBQUMsU0FBVTtBQUNqQixRQUFNLGdCQUFnQixPQUFPLFFBQVEsYUFBc0I7QUFDekQsTUFBSSxDQUFDLGNBQWU7QUFDdEIsUUFBTSxPQUFPLE9BQU8sYUFBYSxNQUFNO0FBQ3JDLE1BQUksQ0FBQyxLQUFNO0FBQ2IsUUFBTSxjQUFjLGNBQWMsS0FBSyxJQUFJO0FBQ3pDLE1BQUksWUFBYTtBQUVuQixLQUFHLEVBQUUsT0FBTyxRQUFRLGVBQWUsS0FBSyxDQUFDO0FBQzNDLENBQUM7QUFFSCxjQUFjLFNBQVMsQ0FBQyxFQUFFLE9BQU8sZUFBZSxLQUFLLE1BQU07QUFDekQsUUFBTSxlQUFlO0FBRXJCLFFBQU0sRUFBRSxLQUFLLElBQUksZ0VBQVcsQ0FBQyxLQUFLLElBQUksYUFBYTtBQUNuRCxNQUFJLFVBQVUsYUFBYSxNQUFNLElBQUk7QUFDdkMsQ0FBQztBQUVELGtEQUFNLENBQUMsd0JBQXdCLG1CQUFtQjtBQUFBLEVBQ2hELFNBQVM7QUFBQSxFQUNULFlBQVk7QUFDZCxDQUFDO0FBRUQsY0FBYyxhQUFhLENBQUMsRUFBRSxPQUFPLFFBQVEsZUFBZSxLQUFLLE1BQU07QUFDckUsTUFBSSxVQUFVLFFBQVEsY0FBYztBQUFBLElBQ2xDO0FBQUEsSUFDQSxRQUFRO0FBQUEsSUFDUixhQUFhO0FBQUEsSUFDYixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL3NyYy9pbnRlcm5hbC1saW5rcy9oYW5kbGUtaW50ZXJuYWwtbGlua3MudHM/Y2ZhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwbHVnaW4gfSBmcm9tICdzcmMvY29yZS9lbnRyeSdcbmltcG9ydCB7IHBsdWdpblN0YXRlIH0gZnJvbSAnc3JjL2NvcmUvc3RhdGUnXG5cblxuY29uc3Qgd29ya3NwYWNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndvcmtzcGFjZScgYXMgJ2RpdicpIVxuXG5jb25zdCByZWdpc3RlckV2ZW50ID0gKHR5cGU6ICdjbGljaycgfCAnbW91c2VvdmVyJywgZm46IChhcmdzOiB7XG4gIGV2ZW50OiBNb3VzZUV2ZW50XG4gIHRhcmdldDogSFRNTEFuY2hvckVsZW1lbnRcbiAgcGFyZW50TWluZG1hcDogU1ZHU1ZHRWxlbWVudFxuICBocmVmOiBzdHJpbmdcbn0pID0+IHZvaWQpID0+XG4gIHBsdWdpbi5yZWdpc3RlckRvbUV2ZW50KHdvcmtzcGFjZSwgdHlwZSwgZXZlbnQgPT4ge1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBldmVudFxuICAgIGNvbnN0IGlzQW5jaG9yID0gdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnRcbiAgICAgIGlmICghaXNBbmNob3IpIHJldHVyblxuICAgIGNvbnN0IHBhcmVudE1pbmRtYXAgPSB0YXJnZXQuY2xvc2VzdCgnc3ZnLm1hcmttYXAnIGFzICdzdmcnKVxuICAgICAgaWYgKCFwYXJlbnRNaW5kbWFwKSByZXR1cm5cbiAgICBjb25zdCBocmVmID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnaHJlZicpXG4gICAgICBpZiAoIWhyZWYpIHJldHVyblxuICAgIGNvbnN0IGhhc1Byb3RvY29sID0gL15bXiM6XSo6LiojLy50ZXN0KGhyZWYpICAvLyBodHRwczovL3JlZ2V4MTAxLmNvbS9yL1JMRzBhNS8xXG4gICAgICBpZiAoaGFzUHJvdG9jb2wpIHJldHVyblxuXG4gICAgZm4oeyBldmVudCwgdGFyZ2V0LCBwYXJlbnRNaW5kbWFwLCBocmVmIH0pXG4gIH0pXG5cbnJlZ2lzdGVyRXZlbnQoJ2NsaWNrJywgKHsgZXZlbnQsIHBhcmVudE1pbmRtYXAsIGhyZWYgfSkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgY29uc3QgeyBwYXRoIH0gPSBwbHVnaW5TdGF0ZS5zdmdzLmdldChwYXJlbnRNaW5kbWFwKSFcbiAgYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQoaHJlZiwgcGF0aClcbn0pXG5cbnBsdWdpbi5yZWdpc3RlckhvdmVyTGlua1NvdXJjZSgnbWluZG1hcC1uZXh0Z2VuJywge1xuICBkaXNwbGF5OiAnTWluZG1hcCBOZXh0Z2VuJyxcbiAgZGVmYXVsdE1vZDogdHJ1ZVxufSlcblxucmVnaXN0ZXJFdmVudCgnbW91c2VvdmVyJywgKHsgZXZlbnQsIHRhcmdldCwgcGFyZW50TWluZG1hcCwgaHJlZiB9KSA9PiB7XG4gIGFwcC53b3Jrc3BhY2UudHJpZ2dlcignaG92ZXItbGluaycsIHtcbiAgICBldmVudCxcbiAgICBzb3VyY2U6ICdtaW5kbWFwLW5leHRnZW4nLFxuICAgIGhvdmVyUGFyZW50OiBwYXJlbnRNaW5kbWFwLFxuICAgIHRhcmdldEVsOiB0YXJnZXQsXG4gICAgbGlua3RleHQ6IGhyZWZcbiAgfSlcbn0pXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///70\n')},130:module=>{eval("/*\nLanguage: STEP Part 21\nContributors: Adam Joseph Cook \nDescription: Syntax highlighter for STEP Part 21 files (ISO 10303-21).\nWebsite: https://en.wikipedia.org/wiki/ISO_10303-21\nCategory: syntax\n*/\n\nfunction step21(hljs) {\n const STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n const STEP21_KEYWORDS = {\n $pattern: STEP21_IDENT_RE,\n keyword: [\n \"HEADER\",\n \"ENDSEC\",\n \"DATA\"\n ]\n };\n const STEP21_START = {\n className: 'meta',\n begin: 'ISO-10303-21;',\n relevance: 10\n };\n const STEP21_CLOSE = {\n className: 'meta',\n begin: 'END-ISO-10303-21;',\n relevance: 10\n };\n\n return {\n name: 'STEP Part 21',\n aliases: [\n 'p21',\n 'step',\n 'stp'\n ],\n case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\n keywords: STEP21_KEYWORDS,\n contains: [\n STEP21_START,\n STEP21_CLOSE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\n hljs.C_NUMBER_MODE,\n hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }),\n {\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: '#',\n end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ]\n };\n}\n\nmodule.exports = step21;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGVBQWU7QUFDM0QsNkNBQTZDLGVBQWU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3N0ZXAyMS5qcz84OTUxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogU1RFUCBQYXJ0IDIxXG5Db250cmlidXRvcnM6IEFkYW0gSm9zZXBoIENvb2sgPGFkYW0uam9zZXBoLmNvb2tAZ21haWwuY29tPlxuRGVzY3JpcHRpb246IFN5bnRheCBoaWdobGlnaHRlciBmb3IgU1RFUCBQYXJ0IDIxIGZpbGVzIChJU08gMTAzMDMtMjEpLlxuV2Vic2l0ZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzEwMzAzLTIxXG5DYXRlZ29yeTogc3ludGF4XG4qL1xuXG5mdW5jdGlvbiBzdGVwMjEoaGxqcykge1xuICBjb25zdCBTVEVQMjFfSURFTlRfUkUgPSAnW0EtWl9dW0EtWjAtOV8uXSonO1xuICBjb25zdCBTVEVQMjFfS0VZV09SRFMgPSB7XG4gICAgJHBhdHRlcm46IFNURVAyMV9JREVOVF9SRSxcbiAgICBrZXl3b3JkOiBbXG4gICAgICBcIkhFQURFUlwiLFxuICAgICAgXCJFTkRTRUNcIixcbiAgICAgIFwiREFUQVwiXG4gICAgXVxuICB9O1xuICBjb25zdCBTVEVQMjFfU1RBUlQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdJU08tMTAzMDMtMjE7JyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG4gIGNvbnN0IFNURVAyMV9DTE9TRSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0VORC1JU08tMTAzMDMtMjE7JyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnU1RFUCBQYXJ0IDIxJyxcbiAgICBhbGlhc2VzOiBbXG4gICAgICAncDIxJyxcbiAgICAgICdzdGVwJyxcbiAgICAgICdzdHAnXG4gICAgXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLCAvLyBTVEVQIDIxIGlzIGNhc2UgaW5zZW5zaXRpdmUgaW4gdGhlb3J5LCBpbiBwcmFjdGljZSBhbGwgbm9uLWNvbW1lbnRzIGFyZSBjYXBpdGFsaXplZC5cbiAgICBrZXl3b3JkczogU1RFUDIxX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBTVEVQMjFfU1RBUlQsXG4gICAgICBTVEVQMjFfQ0xPU0UsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCcvXFxcXCpcXFxcKiEnLCAnXFxcXCovJyksXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7IGlsbGVnYWw6IG51bGwgfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgeyBpbGxlZ2FsOiBudWxsIH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogXCInXCIsXG4gICAgICAgIGVuZDogXCInXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICcjJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFxkKycsXG4gICAgICAgICAgICBpbGxlZ2FsOiAnXFxcXFcnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0ZXAyMTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///130\n")},132:module=>{eval("/*\nLanguage: LLVM IR\nAuthor: Michael Rodler \nDescription: language used as intermediate representation in the LLVM compiler framework\nWebsite: https://llvm.org/docs/LangRef.html\nCategory: assembler\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction llvm(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = /([-a-zA-Z$._][\\w$.-]*)/;\n const TYPE = {\n className: 'type',\n begin: /\\bi\\d+(?=\\s|\\b)/\n };\n const OPERATOR = {\n className: 'operator',\n relevance: 0,\n begin: /=/\n };\n const PUNCTUATION = {\n className: 'punctuation',\n relevance: 0,\n begin: /,/\n };\n const NUMBER = {\n className: 'number',\n variants: [\n { begin: /[su]?0[xX][KMLHR]?[a-fA-F0-9]+/ },\n { begin: /[-+]?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?/ }\n ],\n relevance: 0\n };\n const LABEL = {\n className: 'symbol',\n variants: [ { begin: /^\\s*[a-z]+:/ }, // labels\n ],\n relevance: 0\n };\n const VARIABLE = {\n className: 'variable',\n variants: [\n { begin: regex.concat(/%/, IDENT_RE) },\n { begin: /%\\d+/ },\n { begin: /#\\d+/ },\n ]\n };\n const FUNCTION = {\n className: 'title',\n variants: [\n { begin: regex.concat(/@/, IDENT_RE) },\n { begin: /@\\d+/ },\n { begin: regex.concat(/!/, IDENT_RE) },\n { begin: regex.concat(/!\\d+/, IDENT_RE) },\n // https://llvm.org/docs/LangRef.html#namedmetadatastructure\n // obviously a single digit can also be used in this fashion\n { begin: /!\\d+/ }\n ]\n };\n\n return {\n name: 'LLVM IR',\n // TODO: split into different categories of keywords\n keywords: {\n keyword: 'begin end true false declare define global '\n + 'constant private linker_private internal '\n + 'available_externally linkonce linkonce_odr weak '\n + 'weak_odr appending dllimport dllexport common '\n + 'default hidden protected extern_weak external '\n + 'thread_local zeroinitializer undef null to tail '\n + 'target triple datalayout volatile nuw nsw nnan '\n + 'ninf nsz arcp fast exact inbounds align '\n + 'addrspace section alias module asm sideeffect '\n + 'gc dbg linker_private_weak attributes blockaddress '\n + 'initialexec localdynamic localexec prefix unnamed_addr '\n + 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc '\n + 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device '\n + 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func '\n + 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc '\n + 'cc c signext zeroext inreg sret nounwind '\n + 'noreturn noalias nocapture byval nest readnone '\n + 'readonly inlinehint noinline alwaysinline optsize ssp '\n + 'sspreq noredzone noimplicitfloat naked builtin cold '\n + 'nobuiltin noduplicate nonlazybind optnone returns_twice '\n + 'sanitize_address sanitize_memory sanitize_thread sspstrong '\n + 'uwtable returned type opaque eq ne slt sgt '\n + 'sle sge ult ugt ule uge oeq one olt ogt '\n + 'ole oge ord uno ueq une x acq_rel acquire '\n + 'alignstack atomic catch cleanup filter inteldialect '\n + 'max min monotonic nand personality release seq_cst '\n + 'singlethread umax umin unordered xchg add fadd '\n + 'sub fsub mul fmul udiv sdiv fdiv urem srem '\n + 'frem shl lshr ashr and or xor icmp fcmp '\n + 'phi call trunc zext sext fptrunc fpext uitofp '\n + 'sitofp fptoui fptosi inttoptr ptrtoint bitcast '\n + 'addrspacecast select va_arg ret br switch invoke '\n + 'unwind unreachable indirectbr landingpad resume '\n + 'malloc alloca free load store getelementptr '\n + 'extractelement insertelement shufflevector getresult '\n + 'extractvalue insertvalue atomicrmw cmpxchg fence '\n + 'argmemonly',\n type: 'void half bfloat float double fp128 x86_fp80 ppc_fp128 '\n + 'x86_amx x86_mmx ptr label token metadata opaque'\n },\n contains: [\n TYPE,\n // this matches \"empty comments\"...\n // ...because it's far more likely this is a statement terminator in\n // another language than an actual comment\n hljs.COMMENT(/;\\s*$/, null, { relevance: 0 }),\n hljs.COMMENT(/;/, /$/),\n {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n {\n className: 'char.escape',\n match: /\\\\\\d\\d/\n }\n ]\n },\n FUNCTION,\n PUNCTUATION,\n OPERATOR,\n VARIABLE,\n LABEL,\n NUMBER\n ]\n };\n}\n\nmodule.exports = llvm;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5Q0FBeUM7QUFDakQsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isc0JBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0NBQW9DO0FBQzVDLFFBQVEsZUFBZTtBQUN2QixRQUFRLGVBQWU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0NBQW9DO0FBQzVDLFFBQVEsZUFBZTtBQUN2QixRQUFRLG9DQUFvQztBQUM1QyxRQUFRLHVDQUF1QztBQUMvQztBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixlQUFlLGNBQWM7QUFDbEQscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbGx2bS5qcz81MDRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogTExWTSBJUlxuQXV0aG9yOiBNaWNoYWVsIFJvZGxlciA8Y29udGFjdEBmMHJraS5hdD5cbkRlc2NyaXB0aW9uOiBsYW5ndWFnZSB1c2VkIGFzIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBpbiB0aGUgTExWTSBjb21waWxlciBmcmFtZXdvcmtcbldlYnNpdGU6IGh0dHBzOi8vbGx2bS5vcmcvZG9jcy9MYW5nUmVmLmh0bWxcbkNhdGVnb3J5OiBhc3NlbWJsZXJcbkF1ZGl0OiAyMDIwXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gbGx2bShobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgSURFTlRfUkUgPSAvKFstYS16QS1aJC5fXVtcXHckLi1dKikvO1xuICBjb25zdCBUWVBFID0ge1xuICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgIGJlZ2luOiAvXFxiaVxcZCsoPz1cXHN8XFxiKS9cbiAgfTtcbiAgY29uc3QgT1BFUkFUT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnb3BlcmF0b3InLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBiZWdpbjogLz0vXG4gIH07XG4gIGNvbnN0IFBVTkNUVUFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ3B1bmN0dWF0aW9uJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IC8sL1xuICB9O1xuICBjb25zdCBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1tzdV0/MFt4WF1bS01MSFJdP1thLWZBLUYwLTldKy8gfSxcbiAgICAgIHsgYmVnaW46IC9bLStdP1xcZCsoPzpbLl1cXGQrKT8oPzpbZUVdWy0rXT9cXGQrKD86Wy5dXFxkKyk/KT8vIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIHZhcmlhbnRzOiBbIHsgYmVnaW46IC9eXFxzKlthLXpdKzovIH0sIC8vIGxhYmVsc1xuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogcmVnZXguY29uY2F0KC8lLywgSURFTlRfUkUpIH0sXG4gICAgICB7IGJlZ2luOiAvJVxcZCsvIH0sXG4gICAgICB7IGJlZ2luOiAvI1xcZCsvIH0sXG4gICAgXVxuICB9O1xuICBjb25zdCBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IHJlZ2V4LmNvbmNhdCgvQC8sIElERU5UX1JFKSB9LFxuICAgICAgeyBiZWdpbjogL0BcXGQrLyB9LFxuICAgICAgeyBiZWdpbjogcmVnZXguY29uY2F0KC8hLywgSURFTlRfUkUpIH0sXG4gICAgICB7IGJlZ2luOiByZWdleC5jb25jYXQoLyFcXGQrLywgSURFTlRfUkUpIH0sXG4gICAgICAvLyBodHRwczovL2xsdm0ub3JnL2RvY3MvTGFuZ1JlZi5odG1sI25hbWVkbWV0YWRhdGFzdHJ1Y3R1cmVcbiAgICAgIC8vIG9idmlvdXNseSBhIHNpbmdsZSBkaWdpdCBjYW4gYWxzbyBiZSB1c2VkIGluIHRoaXMgZmFzaGlvblxuICAgICAgeyBiZWdpbjogLyFcXGQrLyB9XG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0xMVk0gSVInLFxuICAgIC8vIFRPRE86IHNwbGl0IGludG8gZGlmZmVyZW50IGNhdGVnb3JpZXMgb2Yga2V5d29yZHNcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2JlZ2luIGVuZCB0cnVlIGZhbHNlIGRlY2xhcmUgZGVmaW5lIGdsb2JhbCAnXG4gICAgICAgICsgJ2NvbnN0YW50IHByaXZhdGUgbGlua2VyX3ByaXZhdGUgaW50ZXJuYWwgJ1xuICAgICAgICArICdhdmFpbGFibGVfZXh0ZXJuYWxseSBsaW5rb25jZSBsaW5rb25jZV9vZHIgd2VhayAnXG4gICAgICAgICsgJ3dlYWtfb2RyIGFwcGVuZGluZyBkbGxpbXBvcnQgZGxsZXhwb3J0IGNvbW1vbiAnXG4gICAgICAgICsgJ2RlZmF1bHQgaGlkZGVuIHByb3RlY3RlZCBleHRlcm5fd2VhayBleHRlcm5hbCAnXG4gICAgICAgICsgJ3RocmVhZF9sb2NhbCB6ZXJvaW5pdGlhbGl6ZXIgdW5kZWYgbnVsbCB0byB0YWlsICdcbiAgICAgICAgKyAndGFyZ2V0IHRyaXBsZSBkYXRhbGF5b3V0IHZvbGF0aWxlIG51dyBuc3cgbm5hbiAnXG4gICAgICAgICsgJ25pbmYgbnN6IGFyY3AgZmFzdCBleGFjdCBpbmJvdW5kcyBhbGlnbiAnXG4gICAgICAgICsgJ2FkZHJzcGFjZSBzZWN0aW9uIGFsaWFzIG1vZHVsZSBhc20gc2lkZWVmZmVjdCAnXG4gICAgICAgICsgJ2djIGRiZyBsaW5rZXJfcHJpdmF0ZV93ZWFrIGF0dHJpYnV0ZXMgYmxvY2thZGRyZXNzICdcbiAgICAgICAgKyAnaW5pdGlhbGV4ZWMgbG9jYWxkeW5hbWljIGxvY2FsZXhlYyBwcmVmaXggdW5uYW1lZF9hZGRyICdcbiAgICAgICAgKyAnY2NjIGZhc3RjYyBjb2xkY2MgeDg2X3N0ZGNhbGxjYyB4ODZfZmFzdGNhbGxjYyAnXG4gICAgICAgICsgJ2FybV9hcGNzY2MgYXJtX2FhcGNzY2MgYXJtX2FhcGNzX3ZmcGNjIHB0eF9kZXZpY2UgJ1xuICAgICAgICArICdwdHhfa2VybmVsIGludGVsX29jbF9iaWNjIG1zcDQzMF9pbnRyY2Mgc3Bpcl9mdW5jICdcbiAgICAgICAgKyAnc3Bpcl9rZXJuZWwgeDg2XzY0X3N5c3ZjYyB4ODZfNjRfd2luNjRjYyB4ODZfdGhpc2NhbGxjYyAnXG4gICAgICAgICsgJ2NjIGMgc2lnbmV4dCB6ZXJvZXh0IGlucmVnIHNyZXQgbm91bndpbmQgJ1xuICAgICAgICArICdub3JldHVybiBub2FsaWFzIG5vY2FwdHVyZSBieXZhbCBuZXN0IHJlYWRub25lICdcbiAgICAgICAgKyAncmVhZG9ubHkgaW5saW5laGludCBub2lubGluZSBhbHdheXNpbmxpbmUgb3B0c2l6ZSBzc3AgJ1xuICAgICAgICArICdzc3ByZXEgbm9yZWR6b25lIG5vaW1wbGljaXRmbG9hdCBuYWtlZCBidWlsdGluIGNvbGQgJ1xuICAgICAgICArICdub2J1aWx0aW4gbm9kdXBsaWNhdGUgbm9ubGF6eWJpbmQgb3B0bm9uZSByZXR1cm5zX3R3aWNlICdcbiAgICAgICAgKyAnc2FuaXRpemVfYWRkcmVzcyBzYW5pdGl6ZV9tZW1vcnkgc2FuaXRpemVfdGhyZWFkIHNzcHN0cm9uZyAnXG4gICAgICAgICsgJ3V3dGFibGUgcmV0dXJuZWQgdHlwZSBvcGFxdWUgZXEgbmUgc2x0IHNndCAnXG4gICAgICAgICsgJ3NsZSBzZ2UgdWx0IHVndCB1bGUgdWdlIG9lcSBvbmUgb2x0IG9ndCAnXG4gICAgICAgICsgJ29sZSBvZ2Ugb3JkIHVubyB1ZXEgdW5lIHggYWNxX3JlbCBhY3F1aXJlICdcbiAgICAgICAgKyAnYWxpZ25zdGFjayBhdG9taWMgY2F0Y2ggY2xlYW51cCBmaWx0ZXIgaW50ZWxkaWFsZWN0ICdcbiAgICAgICAgKyAnbWF4IG1pbiBtb25vdG9uaWMgbmFuZCBwZXJzb25hbGl0eSByZWxlYXNlIHNlcV9jc3QgJ1xuICAgICAgICArICdzaW5nbGV0aHJlYWQgdW1heCB1bWluIHVub3JkZXJlZCB4Y2hnIGFkZCBmYWRkICdcbiAgICAgICAgKyAnc3ViIGZzdWIgbXVsIGZtdWwgdWRpdiBzZGl2IGZkaXYgdXJlbSBzcmVtICdcbiAgICAgICAgKyAnZnJlbSBzaGwgbHNociBhc2hyIGFuZCBvciB4b3IgaWNtcCBmY21wICdcbiAgICAgICAgKyAncGhpIGNhbGwgdHJ1bmMgemV4dCBzZXh0IGZwdHJ1bmMgZnBleHQgdWl0b2ZwICdcbiAgICAgICAgKyAnc2l0b2ZwIGZwdG91aSBmcHRvc2kgaW50dG9wdHIgcHRydG9pbnQgYml0Y2FzdCAnXG4gICAgICAgICsgJ2FkZHJzcGFjZWNhc3Qgc2VsZWN0IHZhX2FyZyByZXQgYnIgc3dpdGNoIGludm9rZSAnXG4gICAgICAgICsgJ3Vud2luZCB1bnJlYWNoYWJsZSBpbmRpcmVjdGJyIGxhbmRpbmdwYWQgcmVzdW1lICdcbiAgICAgICAgKyAnbWFsbG9jIGFsbG9jYSBmcmVlIGxvYWQgc3RvcmUgZ2V0ZWxlbWVudHB0ciAnXG4gICAgICAgICsgJ2V4dHJhY3RlbGVtZW50IGluc2VydGVsZW1lbnQgc2h1ZmZsZXZlY3RvciBnZXRyZXN1bHQgJ1xuICAgICAgICArICdleHRyYWN0dmFsdWUgaW5zZXJ0dmFsdWUgYXRvbWljcm13IGNtcHhjaGcgZmVuY2UgJ1xuICAgICAgICArICdhcmdtZW1vbmx5JyxcbiAgICAgIHR5cGU6ICd2b2lkIGhhbGYgYmZsb2F0IGZsb2F0IGRvdWJsZSBmcDEyOCB4ODZfZnA4MCBwcGNfZnAxMjggJ1xuICAgICAgICArICd4ODZfYW14IHg4Nl9tbXggcHRyIGxhYmVsIHRva2VuIG1ldGFkYXRhIG9wYXF1ZSdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBUWVBFLFxuICAgICAgLy8gdGhpcyBtYXRjaGVzIFwiZW1wdHkgY29tbWVudHNcIi4uLlxuICAgICAgLy8gLi4uYmVjYXVzZSBpdCdzIGZhciBtb3JlIGxpa2VseSB0aGlzIGlzIGEgc3RhdGVtZW50IHRlcm1pbmF0b3IgaW5cbiAgICAgIC8vIGFub3RoZXIgbGFuZ3VhZ2UgdGhhbiBhbiBhY3R1YWwgY29tbWVudFxuICAgICAgaGxqcy5DT01NRU5UKC87XFxzKiQvLCBudWxsLCB7IHJlbGV2YW5jZTogMCB9KSxcbiAgICAgIGhsanMuQ09NTUVOVCgvOy8sIC8kLyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnY2hhci5lc2NhcGUnLFxuICAgICAgICAgICAgbWF0Y2g6IC9cXFxcXFxkXFxkL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgUFVOQ1RVQVRJT04sXG4gICAgICBPUEVSQVRPUixcbiAgICAgIFZBUklBQkxFLFxuICAgICAgTEFCRUwsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGx2bTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///132\n")},140:module=>{eval("/*\nLanguage: RenderMan RIB\nAuthor: Konstantin Evdokimenko \nContributors: Shuen-Huei Guan \nWebsite: https://renderman.pixar.com/resources/RenderMan_20/ribBinding.html\nCategory: graphics\n*/\n\nfunction rib(hljs) {\n return {\n name: 'RenderMan RIB',\n keywords:\n 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis '\n + 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone '\n + 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail '\n + 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format '\n + 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry '\n + 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource '\n + 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte '\n + 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option '\n + 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples '\n + 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection '\n + 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow '\n + 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere '\n + 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd '\n + 'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\n illegal: '{eval('/*\nLanguage: ISBL\nAuthor: Dmitriy Tarasov \nDescription: built-in language DIRECTUM\nCategory: enterprise\n*/\n\nfunction isbl(hljs) {\n // Определение идентификаторов\n const UNDERSCORE_IDENT_RE = "[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*";\n\n // Определение имен функций\n const FUNCTION_NAME_IDENT_RE = "[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*";\n\n // keyword : ключевые слова\n const KEYWORD =\n "and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока "\n + "except exitfor finally foreach все if если in в not не or или try while пока ";\n\n // SYSRES Constants\n const sysres_constants =\n "SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT "\n + "SYSRES_CONST_ACCES_RIGHT_TYPE_FULL "\n + "SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW "\n + "SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW "\n + "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_VIEW "\n + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE "\n + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE "\n + "SYSRES_CONST_ACCESS_TYPE_CHANGE "\n + "SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE "\n + "SYSRES_CONST_ACCESS_TYPE_EXISTS "\n + "SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE "\n + "SYSRES_CONST_ACCESS_TYPE_FULL "\n + "SYSRES_CONST_ACCESS_TYPE_FULL_CODE "\n + "SYSRES_CONST_ACCESS_TYPE_VIEW "\n + "SYSRES_CONST_ACCESS_TYPE_VIEW_CODE "\n + "SYSRES_CONST_ACTION_TYPE_ABORT "\n + "SYSRES_CONST_ACTION_TYPE_ACCEPT "\n + "SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS "\n + "SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT "\n + "SYSRES_CONST_ACTION_TYPE_CHANGE_CARD "\n + "SYSRES_CONST_ACTION_TYPE_CHANGE_KIND "\n + "SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE "\n + "SYSRES_CONST_ACTION_TYPE_CONTINUE "\n + "SYSRES_CONST_ACTION_TYPE_COPY "\n + "SYSRES_CONST_ACTION_TYPE_CREATE "\n + "SYSRES_CONST_ACTION_TYPE_CREATE_VERSION "\n + "SYSRES_CONST_ACTION_TYPE_DELETE "\n + "SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT "\n + "SYSRES_CONST_ACTION_TYPE_DELETE_VERSION "\n + "SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS "\n + "SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS "\n + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE "\n + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD "\n + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD "\n + "SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK "\n + "SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK "\n + "SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK "\n + "SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK "\n + "SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE "\n + "SYSRES_CONST_ACTION_TYPE_LOCK "\n + "SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER "\n + "SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY "\n + "SYSRES_CONST_ACTION_TYPE_MARK_AS_READED "\n + "SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED "\n + "SYSRES_CONST_ACTION_TYPE_MODIFY "\n + "SYSRES_CONST_ACTION_TYPE_MODIFY_CARD "\n + "SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE "\n + "SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION "\n + "SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE "\n + "SYSRES_CONST_ACTION_TYPE_PERFORM "\n + "SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY "\n + "SYSRES_CONST_ACTION_TYPE_RESTART "\n + "SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE "\n + "SYSRES_CONST_ACTION_TYPE_REVISION "\n + "SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL "\n + "SYSRES_CONST_ACTION_TYPE_SIGN "\n + "SYSRES_CONST_ACTION_TYPE_START "\n + "SYSRES_CONST_ACTION_TYPE_UNLOCK "\n + "SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER "\n + "SYSRES_CONST_ACTION_TYPE_VERSION_STATE "\n + "SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY "\n + "SYSRES_CONST_ACTION_TYPE_VIEW "\n + "SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY "\n + "SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY "\n + "SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY "\n + "SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE "\n + "SYSRES_CONST_ADD_REFERENCE_MODE_NAME "\n + "SYSRES_CONST_ADDITION_REQUISITE_CODE "\n + "SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE "\n + "SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME "\n + "SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME "\n + "SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME "\n + "SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE "\n + "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION "\n + "SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS "\n + "SYSRES_CONST_ALL_USERS_GROUP "\n + "SYSRES_CONST_ALL_USERS_GROUP_NAME "\n + "SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME "\n + "SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE "\n + "SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME "\n + "SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_APPROVING_SIGNATURE_NAME "\n + "SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE "\n + "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE "\n + "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE "\n + "SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN "\n + "SYSRES_CONST_ATTACH_TYPE_DOC "\n + "SYSRES_CONST_ATTACH_TYPE_EDOC "\n + "SYSRES_CONST_ATTACH_TYPE_FOLDER "\n + "SYSRES_CONST_ATTACH_TYPE_JOB "\n + "SYSRES_CONST_ATTACH_TYPE_REFERENCE "\n + "SYSRES_CONST_ATTACH_TYPE_TASK "\n + "SYSRES_CONST_AUTH_ENCODED_PASSWORD "\n + "SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE "\n + "SYSRES_CONST_AUTH_NOVELL "\n + "SYSRES_CONST_AUTH_PASSWORD "\n + "SYSRES_CONST_AUTH_PASSWORD_CODE "\n + "SYSRES_CONST_AUTH_WINDOWS "\n + "SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME "\n + "SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE "\n + "SYSRES_CONST_AUTO_ENUM_METHOD_FLAG "\n + "SYSRES_CONST_AUTO_NUMERATION_CODE "\n + "SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG "\n + "SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE "\n + "SYSRES_CONST_AUTOTEXT_USAGE_ALL "\n + "SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE "\n + "SYSRES_CONST_AUTOTEXT_USAGE_SIGN "\n + "SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE "\n + "SYSRES_CONST_AUTOTEXT_USAGE_WORK "\n + "SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE "\n + "SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE "\n + "SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE "\n + "SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE "\n + "SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE "\n + "SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_BTN_PART "\n + "SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE "\n + "SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE "\n + "SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE "\n + "SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT "\n + "SYSRES_CONST_CARD_PART "\n + "SYSRES_CONST_CARD_REFERENCE_MODE_NAME "\n + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE "\n + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE "\n + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE "\n + "SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE "\n + "SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE "\n + "SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE "\n + "SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE "\n + "SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE "\n + "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE "\n + "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT "\n + "SYSRES_CONST_CODE_COMPONENT_TYPE_URL "\n + "SYSRES_CONST_CODE_REQUISITE_ACCESS "\n + "SYSRES_CONST_CODE_REQUISITE_CODE "\n + "SYSRES_CONST_CODE_REQUISITE_COMPONENT "\n + "SYSRES_CONST_CODE_REQUISITE_DESCRIPTION "\n + "SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT "\n + "SYSRES_CONST_CODE_REQUISITE_RECORD "\n + "SYSRES_CONST_COMMENT_REQ_CODE "\n + "SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE "\n + "SYSRES_CONST_COMP_CODE_GRD "\n + "SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS "\n + "SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS "\n + "SYSRES_CONST_COMPONENT_TYPE_DOCS "\n + "SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS "\n + "SYSRES_CONST_COMPONENT_TYPE_EDOCS "\n + "SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE "\n + "SYSRES_CONST_COMPONENT_TYPE_OTHER "\n + "SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES "\n + "SYSRES_CONST_COMPONENT_TYPE_REFERENCES "\n + "SYSRES_CONST_COMPONENT_TYPE_REPORTS "\n + "SYSRES_CONST_COMPONENT_TYPE_SCRIPTS "\n + "SYSRES_CONST_COMPONENT_TYPE_URL "\n + "SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE "\n + "SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_CONST_FIRM_STATUS_COMMON "\n + "SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL "\n + "SYSRES_CONST_CONST_NEGATIVE_VALUE "\n + "SYSRES_CONST_CONST_POSITIVE_VALUE "\n + "SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE "\n + "SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE "\n + "SYSRES_CONST_CONTENTS_REQUISITE_CODE "\n + "SYSRES_CONST_DATA_TYPE_BOOLEAN "\n + "SYSRES_CONST_DATA_TYPE_DATE "\n + "SYSRES_CONST_DATA_TYPE_FLOAT "\n + "SYSRES_CONST_DATA_TYPE_INTEGER "\n + "SYSRES_CONST_DATA_TYPE_PICK "\n + "SYSRES_CONST_DATA_TYPE_REFERENCE "\n + "SYSRES_CONST_DATA_TYPE_STRING "\n + "SYSRES_CONST_DATA_TYPE_TEXT "\n + "SYSRES_CONST_DATA_TYPE_VARIANT "\n + "SYSRES_CONST_DATE_CLOSE_REQ_CODE "\n + "SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR "\n + "SYSRES_CONST_DATE_OPEN_REQ_CODE "\n + "SYSRES_CONST_DATE_REQUISITE "\n + "SYSRES_CONST_DATE_REQUISITE_CODE "\n + "SYSRES_CONST_DATE_REQUISITE_NAME "\n + "SYSRES_CONST_DATE_REQUISITE_TYPE "\n + "SYSRES_CONST_DATE_TYPE_CHAR "\n + "SYSRES_CONST_DATETIME_FORMAT_VALUE "\n + "SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE "\n + "SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE "\n + "SYSRES_CONST_DESCRIPTION_REQUISITE_CODE "\n + "SYSRES_CONST_DET1_PART "\n + "SYSRES_CONST_DET2_PART "\n + "SYSRES_CONST_DET3_PART "\n + "SYSRES_CONST_DET4_PART "\n + "SYSRES_CONST_DET5_PART "\n + "SYSRES_CONST_DET6_PART "\n + "SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE "\n + "SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE "\n + "SYSRES_CONST_DETAIL_REQ_CODE "\n + "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE "\n + "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME "\n + "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE "\n + "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME "\n + "SYSRES_CONST_DOCUMENT_STORAGES_CODE "\n + "SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME "\n + "SYSRES_CONST_DOUBLE_REQUISITE_CODE "\n + "SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE "\n + "SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE "\n + "SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE "\n + "SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE "\n + "SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE "\n + "SYSRES_CONST_EDITORS_REFERENCE_CODE "\n + "SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE "\n + "SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE "\n + "SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE "\n + "SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE "\n + "SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE "\n + "SYSRES_CONST_EDOC_DATE_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_KIND_REFERENCE_CODE "\n + "SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE "\n + "SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE "\n + "SYSRES_CONST_EDOC_NONE_ENCODE_CODE "\n + "SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE "\n + "SYSRES_CONST_EDOC_READONLY_ACCESS_CODE "\n + "SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE "\n + "SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE "\n + "SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE "\n + "SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE "\n + "SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE "\n + "SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE "\n + "SYSRES_CONST_EDOC_WRITE_ACCES_CODE "\n + "SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE "\n + "SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE "\n + "SYSRES_CONST_END_DATE_REQUISITE_CODE "\n + "SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE "\n + "SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE "\n + "SYSRES_CONST_EXIST_CONST "\n + "SYSRES_CONST_EXIST_VALUE "\n + "SYSRES_CONST_EXPORT_LOCK_TYPE_ASK "\n + "SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK "\n + "SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK "\n + "SYSRES_CONST_EXPORT_VERSION_TYPE_ASK "\n + "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST "\n + "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE "\n + "SYSRES_CONST_EXTENSION_REQUISITE_CODE "\n + "SYSRES_CONST_FILTER_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_FILTER_REQUISITE_CODE "\n + "SYSRES_CONST_FILTER_TYPE_COMMON_CODE "\n + "SYSRES_CONST_FILTER_TYPE_COMMON_NAME "\n + "SYSRES_CONST_FILTER_TYPE_USER_CODE "\n + "SYSRES_CONST_FILTER_TYPE_USER_NAME "\n + "SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME "\n + "SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR "\n + "SYSRES_CONST_FLOAT_REQUISITE_TYPE "\n + "SYSRES_CONST_FOLDER_AUTHOR_VALUE "\n + "SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS "\n + "SYSRES_CONST_FOLDER_KIND_COMPONENTS "\n + "SYSRES_CONST_FOLDER_KIND_EDOCS "\n + "SYSRES_CONST_FOLDER_KIND_JOBS "\n + "SYSRES_CONST_FOLDER_KIND_TASKS "\n + "SYSRES_CONST_FOLDER_TYPE_COMMON "\n + "SYSRES_CONST_FOLDER_TYPE_COMPONENT "\n + "SYSRES_CONST_FOLDER_TYPE_FAVORITES "\n + "SYSRES_CONST_FOLDER_TYPE_INBOX "\n + "SYSRES_CONST_FOLDER_TYPE_OUTBOX "\n + "SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH "\n + "SYSRES_CONST_FOLDER_TYPE_SEARCH "\n + "SYSRES_CONST_FOLDER_TYPE_SHORTCUTS "\n + "SYSRES_CONST_FOLDER_TYPE_USER "\n + "SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG "\n + "SYSRES_CONST_FULL_SUBSTITUTE_TYPE "\n + "SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE "\n + "SYSRES_CONST_FUNCTION_CANCEL_RESULT "\n + "SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM "\n + "SYSRES_CONST_FUNCTION_CATEGORY_USER "\n + "SYSRES_CONST_FUNCTION_FAILURE_RESULT "\n + "SYSRES_CONST_FUNCTION_SAVE_RESULT "\n + "SYSRES_CONST_GENERATED_REQUISITE "\n + "SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE "\n + "SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE "\n + "SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME "\n + "SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE "\n + "SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME "\n + "SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE "\n + "SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_GROUP_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE "\n + "SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE "\n + "SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE "\n + "SYSRES_CONST_GROUP_USER_REQUISITE_CODE "\n + "SYSRES_CONST_GROUPS_REFERENCE_CODE "\n + "SYSRES_CONST_GROUPS_REQUISITE_CODE "\n + "SYSRES_CONST_HIDDEN_MODE_NAME "\n + "SYSRES_CONST_HIGH_LVL_REQUISITE_CODE "\n + "SYSRES_CONST_HISTORY_ACTION_CREATE_CODE "\n + "SYSRES_CONST_HISTORY_ACTION_DELETE_CODE "\n + "SYSRES_CONST_HISTORY_ACTION_EDIT_CODE "\n + "SYSRES_CONST_HOUR_CHAR "\n + "SYSRES_CONST_ID_REQUISITE_CODE "\n + "SYSRES_CONST_IDSPS_REQUISITE_CODE "\n + "SYSRES_CONST_IMAGE_MODE_COLOR "\n + "SYSRES_CONST_IMAGE_MODE_GREYSCALE "\n + "SYSRES_CONST_IMAGE_MODE_MONOCHROME "\n + "SYSRES_CONST_IMPORTANCE_HIGH "\n + "SYSRES_CONST_IMPORTANCE_LOW "\n + "SYSRES_CONST_IMPORTANCE_NORMAL "\n + "SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE "\n + "SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE "\n + "SYSRES_CONST_INT_REQUISITE "\n + "SYSRES_CONST_INT_REQUISITE_TYPE "\n + "SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR "\n + "SYSRES_CONST_INTEGER_TYPE_CHAR "\n + "SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE "\n + "SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE "\n + "SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE "\n + "SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE "\n + "SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE "\n + "SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE "\n + "SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE "\n + "SYSRES_CONST_JOB_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_JOB_KIND_CONTROL_JOB "\n + "SYSRES_CONST_JOB_KIND_JOB "\n + "SYSRES_CONST_JOB_KIND_NOTICE "\n + "SYSRES_CONST_JOB_STATE_ABORTED "\n + "SYSRES_CONST_JOB_STATE_COMPLETE "\n + "SYSRES_CONST_JOB_STATE_WORKING "\n + "SYSRES_CONST_KIND_REQUISITE_CODE "\n + "SYSRES_CONST_KIND_REQUISITE_NAME "\n + "SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE "\n + "SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE "\n + "SYSRES_CONST_KOD_INPUT_TYPE "\n + "SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE "\n + "SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE "\n + "SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT "\n + "SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT "\n + "SYSRES_CONST_LINK_OBJECT_KIND_EDOC "\n + "SYSRES_CONST_LINK_OBJECT_KIND_FOLDER "\n + "SYSRES_CONST_LINK_OBJECT_KIND_JOB "\n + "SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE "\n + "SYSRES_CONST_LINK_OBJECT_KIND_TASK "\n + "SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_LIST_REFERENCE_MODE_NAME "\n + "SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE "\n + "SYSRES_CONST_MAIN_VIEW_CODE "\n + "SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG "\n + "SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE "\n + "SYSRES_CONST_MAXIMIZED_MODE_NAME "\n + "SYSRES_CONST_ME_VALUE "\n + "SYSRES_CONST_MESSAGE_ATTENTION_CAPTION "\n + "SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION "\n + "SYSRES_CONST_MESSAGE_ERROR_CAPTION "\n + "SYSRES_CONST_MESSAGE_INFORMATION_CAPTION "\n + "SYSRES_CONST_MINIMIZED_MODE_NAME "\n + "SYSRES_CONST_MINUTE_CHAR "\n + "SYSRES_CONST_MODULE_REQUISITE_CODE "\n + "SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_MONTH_FORMAT_VALUE "\n + "SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE "\n + "SYSRES_CONST_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE "\n + "SYSRES_CONST_NAMEAN_INPUT_TYPE "\n + "SYSRES_CONST_NEGATIVE_PICK_VALUE "\n + "SYSRES_CONST_NEGATIVE_VALUE "\n + "SYSRES_CONST_NO "\n + "SYSRES_CONST_NO_PICK_VALUE "\n + "SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE "\n + "SYSRES_CONST_NO_VALUE "\n + "SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE "\n + "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE "\n + "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE "\n + "SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE "\n + "SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE "\n + "SYSRES_CONST_NORMAL_MODE_NAME "\n + "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE "\n + "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME "\n + "SYSRES_CONST_NOTE_REQUISITE_CODE "\n + "SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_NUM_REQUISITE "\n + "SYSRES_CONST_NUM_STR_REQUISITE_CODE "\n + "SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG "\n + "SYSRES_CONST_NUMERATION_AUTO_STRONG "\n + "SYSRES_CONST_NUMERATION_FROM_DICTONARY "\n + "SYSRES_CONST_NUMERATION_MANUAL "\n + "SYSRES_CONST_NUMERIC_TYPE_CHAR "\n + "SYSRES_CONST_NUMREQ_REQUISITE_CODE "\n + "SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE "\n + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE "\n + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE "\n + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE "\n + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE "\n + "SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX "\n + "SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_ORIGINALREF_REQUISITE_CODE "\n + "SYSRES_CONST_OURFIRM_REF_CODE "\n + "SYSRES_CONST_OURFIRM_REQUISITE_CODE "\n + "SYSRES_CONST_OURFIRM_VAR "\n + "SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE "\n + "SYSRES_CONST_PICK_NEGATIVE_RESULT "\n + "SYSRES_CONST_PICK_POSITIVE_RESULT "\n + "SYSRES_CONST_PICK_REQUISITE "\n + "SYSRES_CONST_PICK_REQUISITE_TYPE "\n + "SYSRES_CONST_PICK_TYPE_CHAR "\n + "SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE "\n + "SYSRES_CONST_PLATFORM_VERSION_COMMENT "\n + "SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE "\n + "SYSRES_CONST_POSITIVE_PICK_VALUE "\n + "SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE "\n + "SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE "\n + "SYSRES_CONST_PRIORITY_REQUISITE_CODE "\n + "SYSRES_CONST_QUALIFIED_TASK_TYPE "\n + "SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE "\n + "SYSRES_CONST_RECSTAT_REQUISITE_CODE "\n + "SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_REF_REQUISITE "\n + "SYSRES_CONST_REF_REQUISITE_TYPE "\n + "SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE "\n + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE "\n + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE "\n + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE "\n + "SYSRES_CONST_REFERENCE_TYPE_CHAR "\n + "SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME "\n + "SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE "\n + "SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE "\n + "SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING "\n + "SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN "\n + "SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY "\n + "SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE "\n + "SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL "\n + "SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE "\n + "SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE "\n + "SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE "\n + "SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE "\n + "SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE "\n + "SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE "\n + "SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE "\n + "SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE "\n + "SYSRES_CONST_REQ_MODE_AVAILABLE_CODE "\n + "SYSRES_CONST_REQ_MODE_EDIT_CODE "\n + "SYSRES_CONST_REQ_MODE_HIDDEN_CODE "\n + "SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE "\n + "SYSRES_CONST_REQ_MODE_VIEW_CODE "\n + "SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE "\n + "SYSRES_CONST_REQ_SECTION_VALUE "\n + "SYSRES_CONST_REQ_TYPE_VALUE "\n + "SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT "\n + "SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL "\n + "SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME "\n + "SYSRES_CONST_REQUISITE_FORMAT_LEFT "\n + "SYSRES_CONST_REQUISITE_FORMAT_RIGHT "\n + "SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT "\n + "SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE "\n + "SYSRES_CONST_REQUISITE_SECTION_ACTIONS "\n + "SYSRES_CONST_REQUISITE_SECTION_BUTTON "\n + "SYSRES_CONST_REQUISITE_SECTION_BUTTONS "\n + "SYSRES_CONST_REQUISITE_SECTION_CARD "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE10 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE11 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE12 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE13 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE14 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE15 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE16 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE17 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE18 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE19 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE2 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE20 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE21 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE22 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE23 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE24 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE3 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE4 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE5 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE6 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE7 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE8 "\n + "SYSRES_CONST_REQUISITE_SECTION_TABLE9 "\n + "SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE "\n + "SYSRES_CONST_RIGHT_ALIGNMENT_CODE "\n + "SYSRES_CONST_ROLES_REFERENCE_CODE "\n + "SYSRES_CONST_ROUTE_STEP_AFTER_RUS "\n + "SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS "\n + "SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS "\n + "SYSRES_CONST_ROUTE_TYPE_COMPLEX "\n + "SYSRES_CONST_ROUTE_TYPE_PARALLEL "\n + "SYSRES_CONST_ROUTE_TYPE_SERIAL "\n + "SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE "\n + "SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE "\n + "SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE "\n + "SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE "\n + "SYSRES_CONST_SEARCHES_COMPONENT_CONTENT "\n + "SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME "\n + "SYSRES_CONST_SEARCHES_EDOC_CONTENT "\n + "SYSRES_CONST_SEARCHES_FOLDER_CONTENT "\n + "SYSRES_CONST_SEARCHES_JOB_CONTENT "\n + "SYSRES_CONST_SEARCHES_REFERENCE_CODE "\n + "SYSRES_CONST_SEARCHES_TASK_CONTENT "\n + "SYSRES_CONST_SECOND_CHAR "\n + "SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_CODE "\n + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE "\n + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE "\n + "SYSRES_CONST_SELECT_REFERENCE_MODE_NAME "\n + "SYSRES_CONST_SELECT_TYPE_SELECTABLE "\n + "SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD "\n + "SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD "\n + "SYSRES_CONST_SELECT_TYPE_UNSLECTABLE "\n + "SYSRES_CONST_SERVER_TYPE_MAIN "\n + "SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE "\n + "SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE "\n + "SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE "\n + "SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE "\n + "SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE "\n + "SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE "\n + "SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE "\n + "SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE "\n + "SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE "\n + "SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE "\n + "SYSRES_CONST_STATE_REQ_NAME "\n + "SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE "\n + "SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE "\n + "SYSRES_CONST_STATE_REQUISITE_CODE "\n + "SYSRES_CONST_STATIC_ROLE_TYPE_CODE "\n + "SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE "\n + "SYSRES_CONST_STATUS_VALUE_AUTOCLEANING "\n + "SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE "\n + "SYSRES_CONST_STATUS_VALUE_COMPLETE "\n + "SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE "\n + "SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE "\n + "SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE "\n + "SYSRES_CONST_STATUS_VALUE_RED_SQUARE "\n + "SYSRES_CONST_STATUS_VALUE_SUSPEND "\n + "SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE "\n + "SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE "\n + "SYSRES_CONST_STORAGE_TYPE_FILE "\n + "SYSRES_CONST_STORAGE_TYPE_SQL_SERVER "\n + "SYSRES_CONST_STR_REQUISITE "\n + "SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE "\n + "SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR "\n + "SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR "\n + "SYSRES_CONST_STRING_REQUISITE_CODE "\n + "SYSRES_CONST_STRING_REQUISITE_TYPE "\n + "SYSRES_CONST_STRING_TYPE_CHAR "\n + "SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE "\n + "SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE "\n + "SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE "\n + "SYSRES_CONST_SYSTEM_VERSION_COMMENT "\n + "SYSRES_CONST_TASK_ACCESS_TYPE_ALL "\n + "SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS "\n + "SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL "\n + "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION "\n + "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD "\n + "SYSRES_CONST_TASK_ENCODE_TYPE_NONE "\n + "SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD "\n + "SYSRES_CONST_TASK_ROUTE_ALL_CONDITION "\n + "SYSRES_CONST_TASK_ROUTE_AND_CONDITION "\n + "SYSRES_CONST_TASK_ROUTE_OR_CONDITION "\n + "SYSRES_CONST_TASK_STATE_ABORTED "\n + "SYSRES_CONST_TASK_STATE_COMPLETE "\n + "SYSRES_CONST_TASK_STATE_CONTINUED "\n + "SYSRES_CONST_TASK_STATE_CONTROL "\n + "SYSRES_CONST_TASK_STATE_INIT "\n + "SYSRES_CONST_TASK_STATE_WORKING "\n + "SYSRES_CONST_TASK_TITLE "\n + "SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE "\n + "SYSRES_CONST_TASK_TYPES_REFERENCE_CODE "\n + "SYSRES_CONST_TEMPLATES_REFERENCE_CODE "\n + "SYSRES_CONST_TEST_DATE_REQUISITE_NAME "\n + "SYSRES_CONST_TEST_DEV_DATABASE_NAME "\n + "SYSRES_CONST_TEST_DEV_SYSTEM_CODE "\n + "SYSRES_CONST_TEST_EDMS_DATABASE_NAME "\n + "SYSRES_CONST_TEST_EDMS_MAIN_CODE "\n + "SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME "\n + "SYSRES_CONST_TEST_EDMS_SECOND_CODE "\n + "SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME "\n + "SYSRES_CONST_TEST_EDMS_SYSTEM_CODE "\n + "SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME "\n + "SYSRES_CONST_TEXT_REQUISITE "\n + "SYSRES_CONST_TEXT_REQUISITE_CODE "\n + "SYSRES_CONST_TEXT_REQUISITE_TYPE "\n + "SYSRES_CONST_TEXT_TYPE_CHAR "\n + "SYSRES_CONST_TYPE_CODE_REQUISITE_CODE "\n + "SYSRES_CONST_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR "\n + "SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE "\n + "SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE "\n + "SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE "\n + "SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE "\n + "SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME "\n + "SYSRES_CONST_USE_ACCESS_TYPE_CODE "\n + "SYSRES_CONST_USE_ACCESS_TYPE_NAME "\n + "SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE "\n + "SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE "\n + "SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE "\n + "SYSRES_CONST_USER_CATEGORY_NORMAL "\n + "SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE "\n + "SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE "\n + "SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE "\n + "SYSRES_CONST_USER_COMMON_CATEGORY "\n + "SYSRES_CONST_USER_COMMON_CATEGORY_CODE "\n + "SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_USER_LOGIN_REQUISITE_CODE "\n + "SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE "\n + "SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE "\n + "SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE "\n + "SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE "\n + "SYSRES_CONST_USER_SERVICE_CATEGORY "\n + "SYSRES_CONST_USER_SERVICE_CATEGORY_CODE "\n + "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE "\n + "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME "\n + "SYSRES_CONST_USER_STATUS_DEVELOPER_CODE "\n + "SYSRES_CONST_USER_STATUS_DEVELOPER_NAME "\n + "SYSRES_CONST_USER_STATUS_DISABLED_CODE "\n + "SYSRES_CONST_USER_STATUS_DISABLED_NAME "\n + "SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE "\n + "SYSRES_CONST_USER_STATUS_USER_CODE "\n + "SYSRES_CONST_USER_STATUS_USER_NAME "\n + "SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED "\n + "SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER "\n + "SYSRES_CONST_USER_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_REFERENCE_CODE "\n + "SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME "\n + "SYSRES_CONST_USERS_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE "\n + "SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME "\n + "SYSRES_CONST_VIEW_DEFAULT_CODE "\n + "SYSRES_CONST_VIEW_DEFAULT_NAME "\n + "SYSRES_CONST_VIEWER_REQUISITE_CODE "\n + "SYSRES_CONST_WAITING_BLOCK_DESCRIPTION "\n + "SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING "\n + "SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING "\n + "SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE "\n + "SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE "\n + "SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE "\n + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE "\n + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE "\n + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS "\n + "SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS "\n + "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD "\n + "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT "\n + "SYSRES_CONST_XML_ENCODING "\n + "SYSRES_CONST_XREC_STAT_REQUISITE_CODE "\n + "SYSRES_CONST_XRECID_FIELD_NAME "\n + "SYSRES_CONST_YES "\n + "SYSRES_CONST_YES_NO_2_REQUISITE_CODE "\n + "SYSRES_CONST_YES_NO_REQUISITE_CODE "\n + "SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE "\n + "SYSRES_CONST_YES_PICK_VALUE "\n + "SYSRES_CONST_YES_VALUE ";\n\n // Base constant\n const base_constants = "CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ";\n\n // Base group name\n const base_group_name_constants =\n "ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME ";\n\n // Decision block properties\n const decision_block_properties_constants =\n "DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY "\n + "DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ";\n\n // File extension\n const file_extension_constants =\n "ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION "\n + "SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION ";\n\n // Job block properties\n const job_block_properties_constants =\n "JOB_BLOCK_ABORT_DEADLINE_PROPERTY "\n + "JOB_BLOCK_AFTER_FINISH_EVENT "\n + "JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT "\n + "JOB_BLOCK_ATTACHMENT_PROPERTY "\n + "JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY "\n + "JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY "\n + "JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT "\n + "JOB_BLOCK_BEFORE_START_EVENT "\n + "JOB_BLOCK_CREATED_JOBS_PROPERTY "\n + "JOB_BLOCK_DEADLINE_PROPERTY "\n + "JOB_BLOCK_EXECUTION_RESULTS_PROPERTY "\n + "JOB_BLOCK_IS_PARALLEL_PROPERTY "\n + "JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY "\n + "JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY "\n + "JOB_BLOCK_JOB_TEXT_PROPERTY "\n + "JOB_BLOCK_NAME_PROPERTY "\n + "JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY "\n + "JOB_BLOCK_PERFORMER_PROPERTY "\n + "JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY "\n + "JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY "\n + "JOB_BLOCK_SUBJECT_PROPERTY ";\n\n // Language code\n const language_code_constants = "ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE ";\n\n // Launching external applications\n const launching_external_applications_constants =\n "smHidden smMaximized smMinimized smNormal wmNo wmYes ";\n\n // Link kind\n const link_kind_constants =\n "COMPONENT_TOKEN_LINK_KIND "\n + "DOCUMENT_LINK_KIND "\n + "EDOCUMENT_LINK_KIND "\n + "FOLDER_LINK_KIND "\n + "JOB_LINK_KIND "\n + "REFERENCE_LINK_KIND "\n + "TASK_LINK_KIND ";\n\n // Lock type\n const lock_type_constants =\n "COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE ";\n\n // Monitor block properties\n const monitor_block_properties_constants =\n "MONITOR_BLOCK_AFTER_FINISH_EVENT "\n + "MONITOR_BLOCK_BEFORE_START_EVENT "\n + "MONITOR_BLOCK_DEADLINE_PROPERTY "\n + "MONITOR_BLOCK_INTERVAL_PROPERTY "\n + "MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY "\n + "MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY "\n + "MONITOR_BLOCK_NAME_PROPERTY "\n + "MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY "\n + "MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY ";\n\n // Notice block properties\n const notice_block_properties_constants =\n "NOTICE_BLOCK_AFTER_FINISH_EVENT "\n + "NOTICE_BLOCK_ATTACHMENT_PROPERTY "\n + "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY "\n + "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY "\n + "NOTICE_BLOCK_BEFORE_START_EVENT "\n + "NOTICE_BLOCK_CREATED_NOTICES_PROPERTY "\n + "NOTICE_BLOCK_DEADLINE_PROPERTY "\n + "NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY "\n + "NOTICE_BLOCK_NAME_PROPERTY "\n + "NOTICE_BLOCK_NOTICE_TEXT_PROPERTY "\n + "NOTICE_BLOCK_PERFORMER_PROPERTY "\n + "NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY "\n + "NOTICE_BLOCK_SUBJECT_PROPERTY ";\n\n // Object events\n const object_events_constants =\n "dseAfterCancel "\n + "dseAfterClose "\n + "dseAfterDelete "\n + "dseAfterDeleteOutOfTransaction "\n + "dseAfterInsert "\n + "dseAfterOpen "\n + "dseAfterScroll "\n + "dseAfterUpdate "\n + "dseAfterUpdateOutOfTransaction "\n + "dseBeforeCancel "\n + "dseBeforeClose "\n + "dseBeforeDelete "\n + "dseBeforeDetailUpdate "\n + "dseBeforeInsert "\n + "dseBeforeOpen "\n + "dseBeforeUpdate "\n + "dseOnAnyRequisiteChange "\n + "dseOnCloseRecord "\n + "dseOnDeleteError "\n + "dseOnOpenRecord "\n + "dseOnPrepareUpdate "\n + "dseOnUpdateError "\n + "dseOnUpdateRatifiedRecord "\n + "dseOnValidDelete "\n + "dseOnValidUpdate "\n + "reOnChange "\n + "reOnChangeValues "\n + "SELECTION_BEGIN_ROUTE_EVENT "\n + "SELECTION_END_ROUTE_EVENT ";\n\n // Object params\n const object_params_constants =\n "CURRENT_PERIOD_IS_REQUIRED "\n + "PREVIOUS_CARD_TYPE_NAME "\n + "SHOW_RECORD_PROPERTIES_FORM ";\n\n // Other\n const other_constants =\n "ACCESS_RIGHTS_SETTING_DIALOG_CODE "\n + "ADMINISTRATOR_USER_CODE "\n + "ANALYTIC_REPORT_TYPE "\n + "asrtHideLocal "\n + "asrtHideRemote "\n + "CALCULATED_ROLE_TYPE_CODE "\n + "COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE "\n + "DCTS_TEST_PROTOCOLS_FOLDER_PATH "\n + "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED "\n + "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER "\n + "E_EDOC_VERSION_ALREDY_SIGNED "\n + "E_EDOC_VERSION_ALREDY_SIGNED_BY_USER "\n + "EDOC_TYPES_CODE_REQUISITE_FIELD_NAME "\n + "EDOCUMENTS_ALIAS_NAME "\n + "FILES_FOLDER_PATH "\n + "FILTER_OPERANDS_DELIMITER "\n + "FILTER_OPERATIONS_DELIMITER "\n + "FORMCARD_NAME "\n + "FORMLIST_NAME "\n + "GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE "\n + "GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE "\n + "INTEGRATED_REPORT_TYPE "\n + "IS_BUILDER_APPLICATION_ROLE "\n + "IS_BUILDER_APPLICATION_ROLE2 "\n + "IS_BUILDER_USERS "\n + "ISBSYSDEV "\n + "LOG_FOLDER_PATH "\n + "mbCancel "\n + "mbNo "\n + "mbNoToAll "\n + "mbOK "\n + "mbYes "\n + "mbYesToAll "\n + "MEMORY_DATASET_DESRIPTIONS_FILENAME "\n + "mrNo "\n + "mrNoToAll "\n + "mrYes "\n + "mrYesToAll "\n + "MULTIPLE_SELECT_DIALOG_CODE "\n + "NONOPERATING_RECORD_FLAG_FEMININE "\n + "NONOPERATING_RECORD_FLAG_MASCULINE "\n + "OPERATING_RECORD_FLAG_FEMININE "\n + "OPERATING_RECORD_FLAG_MASCULINE "\n + "PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE "\n + "PROGRAM_INITIATED_LOOKUP_ACTION "\n + "ratDelete "\n + "ratEdit "\n + "ratInsert "\n + "REPORT_TYPE "\n + "REQUIRED_PICK_VALUES_VARIABLE "\n + "rmCard "\n + "rmList "\n + "SBRTE_PROGID_DEV "\n + "SBRTE_PROGID_RELEASE "\n + "STATIC_ROLE_TYPE_CODE "\n + "SUPPRESS_EMPTY_TEMPLATE_CREATION "\n + "SYSTEM_USER_CODE "\n + "UPDATE_DIALOG_DATASET "\n + "USED_IN_OBJECT_HINT_PARAM "\n + "USER_INITIATED_LOOKUP_ACTION "\n + "USER_NAME_FORMAT "\n + "USER_SELECTION_RESTRICTIONS "\n + "WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH "\n + "ELS_SUBTYPE_CONTROL_NAME "\n + "ELS_FOLDER_KIND_CONTROL_NAME "\n + "REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME ";\n\n // Privileges\n const privileges_constants =\n "PRIVILEGE_COMPONENT_FULL_ACCESS "\n + "PRIVILEGE_DEVELOPMENT_EXPORT "\n + "PRIVILEGE_DEVELOPMENT_IMPORT "\n + "PRIVILEGE_DOCUMENT_DELETE "\n + "PRIVILEGE_ESD "\n + "PRIVILEGE_FOLDER_DELETE "\n + "PRIVILEGE_MANAGE_ACCESS_RIGHTS "\n + "PRIVILEGE_MANAGE_REPLICATION "\n + "PRIVILEGE_MANAGE_SESSION_SERVER "\n + "PRIVILEGE_OBJECT_FULL_ACCESS "\n + "PRIVILEGE_OBJECT_VIEW "\n + "PRIVILEGE_RESERVE_LICENSE "\n + "PRIVILEGE_SYSTEM_CUSTOMIZE "\n + "PRIVILEGE_SYSTEM_DEVELOP "\n + "PRIVILEGE_SYSTEM_INSTALL "\n + "PRIVILEGE_TASK_DELETE "\n + "PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE "\n + "PRIVILEGES_PSEUDOREFERENCE_CODE ";\n\n // Pseudoreference code\n const pseudoreference_code_constants =\n "ACCESS_TYPES_PSEUDOREFERENCE_CODE "\n + "ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE "\n + "ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE "\n + "ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE "\n + "AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE "\n + "COMPONENTS_PSEUDOREFERENCE_CODE "\n + "FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE "\n + "GROUPS_PSEUDOREFERENCE_CODE "\n + "RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE "\n + "REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE "\n + "REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE "\n + "REFTYPES_PSEUDOREFERENCE_CODE "\n + "REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE "\n + "SEND_PROTOCOL_PSEUDOREFERENCE_CODE "\n + "SUBSTITUTES_PSEUDOREFERENCE_CODE "\n + "SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE "\n + "UNITS_PSEUDOREFERENCE_CODE "\n + "USERS_PSEUDOREFERENCE_CODE "\n + "VIEWERS_PSEUDOREFERENCE_CODE ";\n\n // Requisite ISBCertificateType values\n const requisite_ISBCertificateType_values_constants =\n "CERTIFICATE_TYPE_ENCRYPT "\n + "CERTIFICATE_TYPE_SIGN "\n + "CERTIFICATE_TYPE_SIGN_AND_ENCRYPT ";\n\n // Requisite ISBEDocStorageType values\n const requisite_ISBEDocStorageType_values_constants =\n "STORAGE_TYPE_FILE "\n + "STORAGE_TYPE_NAS_CIFS "\n + "STORAGE_TYPE_SAPERION "\n + "STORAGE_TYPE_SQL_SERVER ";\n\n // Requisite CompType2 values\n const requisite_compType2_values_constants =\n "COMPTYPE2_REQUISITE_DOCUMENTS_VALUE "\n + "COMPTYPE2_REQUISITE_TASKS_VALUE "\n + "COMPTYPE2_REQUISITE_FOLDERS_VALUE "\n + "COMPTYPE2_REQUISITE_REFERENCES_VALUE ";\n\n // Requisite name\n const requisite_name_constants =\n "SYSREQ_CODE "\n + "SYSREQ_COMPTYPE2 "\n + "SYSREQ_CONST_AVAILABLE_FOR_WEB "\n + "SYSREQ_CONST_COMMON_CODE "\n + "SYSREQ_CONST_COMMON_VALUE "\n + "SYSREQ_CONST_FIRM_CODE "\n + "SYSREQ_CONST_FIRM_STATUS "\n + "SYSREQ_CONST_FIRM_VALUE "\n + "SYSREQ_CONST_SERVER_STATUS "\n + "SYSREQ_CONTENTS "\n + "SYSREQ_DATE_OPEN "\n + "SYSREQ_DATE_CLOSE "\n + "SYSREQ_DESCRIPTION "\n + "SYSREQ_DESCRIPTION_LOCALIZE_ID "\n + "SYSREQ_DOUBLE "\n + "SYSREQ_EDOC_ACCESS_TYPE "\n + "SYSREQ_EDOC_AUTHOR "\n + "SYSREQ_EDOC_CREATED "\n + "SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE "\n + "SYSREQ_EDOC_EDITOR "\n + "SYSREQ_EDOC_ENCODE_TYPE "\n + "SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME "\n + "SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION "\n + "SYSREQ_EDOC_EXPORT_DATE "\n + "SYSREQ_EDOC_EXPORTER "\n + "SYSREQ_EDOC_KIND "\n + "SYSREQ_EDOC_LIFE_STAGE_NAME "\n + "SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE "\n + "SYSREQ_EDOC_MODIFIED "\n + "SYSREQ_EDOC_NAME "\n + "SYSREQ_EDOC_NOTE "\n + "SYSREQ_EDOC_QUALIFIED_ID "\n + "SYSREQ_EDOC_SESSION_KEY "\n + "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME "\n + "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION "\n + "SYSREQ_EDOC_SIGNATURE_TYPE "\n + "SYSREQ_EDOC_SIGNED "\n + "SYSREQ_EDOC_STORAGE "\n + "SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE "\n + "SYSREQ_EDOC_STORAGES_CHECK_RIGHTS "\n + "SYSREQ_EDOC_STORAGES_COMPUTER_NAME "\n + "SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE "\n + "SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE "\n + "SYSREQ_EDOC_STORAGES_FUNCTION "\n + "SYSREQ_EDOC_STORAGES_INITIALIZED "\n + "SYSREQ_EDOC_STORAGES_LOCAL_PATH "\n + "SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME "\n + "SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT "\n + "SYSREQ_EDOC_STORAGES_SERVER_NAME "\n + "SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME "\n + "SYSREQ_EDOC_STORAGES_TYPE "\n + "SYSREQ_EDOC_TEXT_MODIFIED "\n + "SYSREQ_EDOC_TYPE_ACT_CODE "\n + "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION "\n + "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID "\n + "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE "\n + "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS "\n + "SYSREQ_EDOC_TYPE_ACT_SECTION "\n + "SYSREQ_EDOC_TYPE_ADD_PARAMS "\n + "SYSREQ_EDOC_TYPE_COMMENT "\n + "SYSREQ_EDOC_TYPE_EVENT_TEXT "\n + "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR "\n + "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID "\n + "SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID "\n + "SYSREQ_EDOC_TYPE_NUMERATION_METHOD "\n + "SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE "\n + "SYSREQ_EDOC_TYPE_REQ_CODE "\n + "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION "\n + "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID "\n + "SYSREQ_EDOC_TYPE_REQ_IS_LEADING "\n + "SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED "\n + "SYSREQ_EDOC_TYPE_REQ_NUMBER "\n + "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE "\n + "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS "\n + "SYSREQ_EDOC_TYPE_REQ_ON_SELECT "\n + "SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND "\n + "SYSREQ_EDOC_TYPE_REQ_SECTION "\n + "SYSREQ_EDOC_TYPE_VIEW_CARD "\n + "SYSREQ_EDOC_TYPE_VIEW_CODE "\n + "SYSREQ_EDOC_TYPE_VIEW_COMMENT "\n + "SYSREQ_EDOC_TYPE_VIEW_IS_MAIN "\n + "SYSREQ_EDOC_TYPE_VIEW_NAME "\n + "SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID "\n + "SYSREQ_EDOC_VERSION_AUTHOR "\n + "SYSREQ_EDOC_VERSION_CRC "\n + "SYSREQ_EDOC_VERSION_DATA "\n + "SYSREQ_EDOC_VERSION_EDITOR "\n + "SYSREQ_EDOC_VERSION_EXPORT_DATE "\n + "SYSREQ_EDOC_VERSION_EXPORTER "\n + "SYSREQ_EDOC_VERSION_HIDDEN "\n + "SYSREQ_EDOC_VERSION_LIFE_STAGE "\n + "SYSREQ_EDOC_VERSION_MODIFIED "\n + "SYSREQ_EDOC_VERSION_NOTE "\n + "SYSREQ_EDOC_VERSION_SIGNATURE_TYPE "\n + "SYSREQ_EDOC_VERSION_SIGNED "\n + "SYSREQ_EDOC_VERSION_SIZE "\n + "SYSREQ_EDOC_VERSION_SOURCE "\n + "SYSREQ_EDOC_VERSION_TEXT_MODIFIED "\n + "SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE "\n + "SYSREQ_FOLDER_KIND "\n + "SYSREQ_FUNC_CATEGORY "\n + "SYSREQ_FUNC_COMMENT "\n + "SYSREQ_FUNC_GROUP "\n + "SYSREQ_FUNC_GROUP_COMMENT "\n + "SYSREQ_FUNC_GROUP_NUMBER "\n + "SYSREQ_FUNC_HELP "\n + "SYSREQ_FUNC_PARAM_DEF_VALUE "\n + "SYSREQ_FUNC_PARAM_IDENT "\n + "SYSREQ_FUNC_PARAM_NUMBER "\n + "SYSREQ_FUNC_PARAM_TYPE "\n + "SYSREQ_FUNC_TEXT "\n + "SYSREQ_GROUP_CATEGORY "\n + "SYSREQ_ID "\n + "SYSREQ_LAST_UPDATE "\n + "SYSREQ_LEADER_REFERENCE "\n + "SYSREQ_LINE_NUMBER "\n + "SYSREQ_MAIN_RECORD_ID "\n + "SYSREQ_NAME "\n + "SYSREQ_NAME_LOCALIZE_ID "\n + "SYSREQ_NOTE "\n + "SYSREQ_ORIGINAL_RECORD "\n + "SYSREQ_OUR_FIRM "\n + "SYSREQ_PROFILING_SETTINGS_BATCH_LOGING "\n + "SYSREQ_PROFILING_SETTINGS_BATCH_SIZE "\n + "SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED "\n + "SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED "\n + "SYSREQ_PROFILING_SETTINGS_START_LOGGED "\n + "SYSREQ_RECORD_STATUS "\n + "SYSREQ_REF_REQ_FIELD_NAME "\n + "SYSREQ_REF_REQ_FORMAT "\n + "SYSREQ_REF_REQ_GENERATED "\n + "SYSREQ_REF_REQ_LENGTH "\n + "SYSREQ_REF_REQ_PRECISION "\n + "SYSREQ_REF_REQ_REFERENCE "\n + "SYSREQ_REF_REQ_SECTION "\n + "SYSREQ_REF_REQ_STORED "\n + "SYSREQ_REF_REQ_TOKENS "\n + "SYSREQ_REF_REQ_TYPE "\n + "SYSREQ_REF_REQ_VIEW "\n + "SYSREQ_REF_TYPE_ACT_CODE "\n + "SYSREQ_REF_TYPE_ACT_DESCRIPTION "\n + "SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID "\n + "SYSREQ_REF_TYPE_ACT_ON_EXECUTE "\n + "SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS "\n + "SYSREQ_REF_TYPE_ACT_SECTION "\n + "SYSREQ_REF_TYPE_ADD_PARAMS "\n + "SYSREQ_REF_TYPE_COMMENT "\n + "SYSREQ_REF_TYPE_COMMON_SETTINGS "\n + "SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME "\n + "SYSREQ_REF_TYPE_EVENT_TEXT "\n + "SYSREQ_REF_TYPE_MAIN_LEADING_REF "\n + "SYSREQ_REF_TYPE_NAME_IN_SINGULAR "\n + "SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID "\n + "SYSREQ_REF_TYPE_NAME_LOCALIZE_ID "\n + "SYSREQ_REF_TYPE_NUMERATION_METHOD "\n + "SYSREQ_REF_TYPE_REQ_CODE "\n + "SYSREQ_REF_TYPE_REQ_DESCRIPTION "\n + "SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID "\n + "SYSREQ_REF_TYPE_REQ_IS_CONTROL "\n + "SYSREQ_REF_TYPE_REQ_IS_FILTER "\n + "SYSREQ_REF_TYPE_REQ_IS_LEADING "\n + "SYSREQ_REF_TYPE_REQ_IS_REQUIRED "\n + "SYSREQ_REF_TYPE_REQ_NUMBER "\n + "SYSREQ_REF_TYPE_REQ_ON_CHANGE "\n + "SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS "\n + "SYSREQ_REF_TYPE_REQ_ON_SELECT "\n + "SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND "\n + "SYSREQ_REF_TYPE_REQ_SECTION "\n + "SYSREQ_REF_TYPE_VIEW_CARD "\n + "SYSREQ_REF_TYPE_VIEW_CODE "\n + "SYSREQ_REF_TYPE_VIEW_COMMENT "\n + "SYSREQ_REF_TYPE_VIEW_IS_MAIN "\n + "SYSREQ_REF_TYPE_VIEW_NAME "\n + "SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID "\n + "SYSREQ_REFERENCE_TYPE_ID "\n + "SYSREQ_STATE "\n + "SYSREQ_STATЕ "\n + "SYSREQ_SYSTEM_SETTINGS_VALUE "\n + "SYSREQ_TYPE "\n + "SYSREQ_UNIT "\n + "SYSREQ_UNIT_ID "\n + "SYSREQ_USER_GROUPS_GROUP_FULL_NAME "\n + "SYSREQ_USER_GROUPS_GROUP_NAME "\n + "SYSREQ_USER_GROUPS_GROUP_SERVER_NAME "\n + "SYSREQ_USERS_ACCESS_RIGHTS "\n + "SYSREQ_USERS_AUTHENTICATION "\n + "SYSREQ_USERS_CATEGORY "\n + "SYSREQ_USERS_COMPONENT "\n + "SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC "\n + "SYSREQ_USERS_DOMAIN "\n + "SYSREQ_USERS_FULL_USER_NAME "\n + "SYSREQ_USERS_GROUP "\n + "SYSREQ_USERS_IS_MAIN_SERVER "\n + "SYSREQ_USERS_LOGIN "\n + "SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC "\n + "SYSREQ_USERS_STATUS "\n + "SYSREQ_USERS_USER_CERTIFICATE "\n + "SYSREQ_USERS_USER_CERTIFICATE_INFO "\n + "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME "\n + "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION "\n + "SYSREQ_USERS_USER_CERTIFICATE_STATE "\n + "SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME "\n + "SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT "\n + "SYSREQ_USERS_USER_DEFAULT_CERTIFICATE "\n + "SYSREQ_USERS_USER_DESCRIPTION "\n + "SYSREQ_USERS_USER_GLOBAL_NAME "\n + "SYSREQ_USERS_USER_LOGIN "\n + "SYSREQ_USERS_USER_MAIN_SERVER "\n + "SYSREQ_USERS_USER_TYPE "\n + "SYSREQ_WORK_RULES_FOLDER_ID ";\n\n // Result\n const result_constants = "RESULT_VAR_NAME RESULT_VAR_NAME_ENG ";\n\n // Rule identification\n const rule_identification_constants =\n "AUTO_NUMERATION_RULE_ID "\n + "CANT_CHANGE_ID_REQUISITE_RULE_ID "\n + "CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID "\n + "CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID "\n + "CHECK_CODE_REQUISITE_RULE_ID "\n + "CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID "\n + "CHECK_FILTRATER_CHANGES_RULE_ID "\n + "CHECK_RECORD_INTERVAL_RULE_ID "\n + "CHECK_REFERENCE_INTERVAL_RULE_ID "\n + "CHECK_REQUIRED_DATA_FULLNESS_RULE_ID "\n + "CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID "\n + "MAKE_RECORD_UNRATIFIED_RULE_ID "\n + "RESTORE_AUTO_NUMERATION_RULE_ID "\n + "SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID "\n + "SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID "\n + "SET_IDSPS_VALUE_RULE_ID "\n + "SET_NEXT_CODE_VALUE_RULE_ID "\n + "SET_OURFIRM_BOUNDS_RULE_ID "\n + "SET_OURFIRM_REQUISITE_RULE_ID ";\n\n // Script block properties\n const script_block_properties_constants =\n "SCRIPT_BLOCK_AFTER_FINISH_EVENT "\n + "SCRIPT_BLOCK_BEFORE_START_EVENT "\n + "SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY "\n + "SCRIPT_BLOCK_NAME_PROPERTY "\n + "SCRIPT_BLOCK_SCRIPT_PROPERTY ";\n\n // Subtask block properties\n const subtask_block_properties_constants =\n "SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY "\n + "SUBTASK_BLOCK_AFTER_FINISH_EVENT "\n + "SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT "\n + "SUBTASK_BLOCK_ATTACHMENTS_PROPERTY "\n + "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY "\n + "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY "\n + "SUBTASK_BLOCK_BEFORE_START_EVENT "\n + "SUBTASK_BLOCK_CREATED_TASK_PROPERTY "\n + "SUBTASK_BLOCK_CREATION_EVENT "\n + "SUBTASK_BLOCK_DEADLINE_PROPERTY "\n + "SUBTASK_BLOCK_IMPORTANCE_PROPERTY "\n + "SUBTASK_BLOCK_INITIATOR_PROPERTY "\n + "SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY "\n + "SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY "\n + "SUBTASK_BLOCK_JOBS_TYPE_PROPERTY "\n + "SUBTASK_BLOCK_NAME_PROPERTY "\n + "SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY "\n + "SUBTASK_BLOCK_PERFORMERS_PROPERTY "\n + "SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY "\n + "SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY "\n + "SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY "\n + "SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY "\n + "SUBTASK_BLOCK_START_EVENT "\n + "SUBTASK_BLOCK_STEP_CONTROL_PROPERTY "\n + "SUBTASK_BLOCK_SUBJECT_PROPERTY "\n + "SUBTASK_BLOCK_TASK_CONTROL_PROPERTY "\n + "SUBTASK_BLOCK_TEXT_PROPERTY "\n + "SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY "\n + "SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY "\n + "SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY ";\n\n // System component\n const system_component_constants =\n "SYSCOMP_CONTROL_JOBS "\n + "SYSCOMP_FOLDERS "\n + "SYSCOMP_JOBS "\n + "SYSCOMP_NOTICES "\n + "SYSCOMP_TASKS ";\n\n // System dialogs\n const system_dialogs_constants =\n "SYSDLG_CREATE_EDOCUMENT "\n + "SYSDLG_CREATE_EDOCUMENT_VERSION "\n + "SYSDLG_CURRENT_PERIOD "\n + "SYSDLG_EDIT_FUNCTION_HELP "\n + "SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE "\n + "SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS "\n + "SYSDLG_EXPORT_SINGLE_EDOCUMENT "\n + "SYSDLG_IMPORT_EDOCUMENT "\n + "SYSDLG_MULTIPLE_SELECT "\n + "SYSDLG_SETUP_ACCESS_RIGHTS "\n + "SYSDLG_SETUP_DEFAULT_RIGHTS "\n + "SYSDLG_SETUP_FILTER_CONDITION "\n + "SYSDLG_SETUP_SIGN_RIGHTS "\n + "SYSDLG_SETUP_TASK_OBSERVERS "\n + "SYSDLG_SETUP_TASK_ROUTE "\n + "SYSDLG_SETUP_USERS_LIST "\n + "SYSDLG_SIGN_EDOCUMENT "\n + "SYSDLG_SIGN_MULTIPLE_EDOCUMENTS ";\n\n // System reference names\n const system_reference_names_constants =\n "SYSREF_ACCESS_RIGHTS_TYPES "\n + "SYSREF_ADMINISTRATION_HISTORY "\n + "SYSREF_ALL_AVAILABLE_COMPONENTS "\n + "SYSREF_ALL_AVAILABLE_PRIVILEGES "\n + "SYSREF_ALL_REPLICATING_COMPONENTS "\n + "SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS "\n + "SYSREF_CALENDAR_EVENTS "\n + "SYSREF_COMPONENT_TOKEN_HISTORY "\n + "SYSREF_COMPONENT_TOKENS "\n + "SYSREF_COMPONENTS "\n + "SYSREF_CONSTANTS "\n + "SYSREF_DATA_RECEIVE_PROTOCOL "\n + "SYSREF_DATA_SEND_PROTOCOL "\n + "SYSREF_DIALOGS "\n + "SYSREF_DIALOGS_REQUISITES "\n + "SYSREF_EDITORS "\n + "SYSREF_EDOC_CARDS "\n + "SYSREF_EDOC_TYPES "\n + "SYSREF_EDOCUMENT_CARD_REQUISITES "\n + "SYSREF_EDOCUMENT_CARD_TYPES "\n + "SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE "\n + "SYSREF_EDOCUMENT_CARDS "\n + "SYSREF_EDOCUMENT_HISTORY "\n + "SYSREF_EDOCUMENT_KINDS "\n + "SYSREF_EDOCUMENT_REQUISITES "\n + "SYSREF_EDOCUMENT_SIGNATURES "\n + "SYSREF_EDOCUMENT_TEMPLATES "\n + "SYSREF_EDOCUMENT_TEXT_STORAGES "\n + "SYSREF_EDOCUMENT_VIEWS "\n + "SYSREF_FILTERER_SETUP_CONFLICTS "\n + "SYSREF_FILTRATER_SETTING_CONFLICTS "\n + "SYSREF_FOLDER_HISTORY "\n + "SYSREF_FOLDERS "\n + "SYSREF_FUNCTION_GROUPS "\n + "SYSREF_FUNCTION_PARAMS "\n + "SYSREF_FUNCTIONS "\n + "SYSREF_JOB_HISTORY "\n + "SYSREF_LINKS "\n + "SYSREF_LOCALIZATION_DICTIONARY "\n + "SYSREF_LOCALIZATION_LANGUAGES "\n + "SYSREF_MODULES "\n + "SYSREF_PRIVILEGES "\n + "SYSREF_RECORD_HISTORY "\n + "SYSREF_REFERENCE_REQUISITES "\n + "SYSREF_REFERENCE_TYPE_VIEWS "\n + "SYSREF_REFERENCE_TYPES "\n + "SYSREF_REFERENCES "\n + "SYSREF_REFERENCES_REQUISITES "\n + "SYSREF_REMOTE_SERVERS "\n + "SYSREF_REPLICATION_SESSIONS_LOG "\n + "SYSREF_REPLICATION_SESSIONS_PROTOCOL "\n + "SYSREF_REPORTS "\n + "SYSREF_ROLES "\n + "SYSREF_ROUTE_BLOCK_GROUPS "\n + "SYSREF_ROUTE_BLOCKS "\n + "SYSREF_SCRIPTS "\n + "SYSREF_SEARCHES "\n + "SYSREF_SERVER_EVENTS "\n + "SYSREF_SERVER_EVENTS_HISTORY "\n + "SYSREF_STANDARD_ROUTE_GROUPS "\n + "SYSREF_STANDARD_ROUTES "\n + "SYSREF_STATUSES "\n + "SYSREF_SYSTEM_SETTINGS "\n + "SYSREF_TASK_HISTORY "\n + "SYSREF_TASK_KIND_GROUPS "\n + "SYSREF_TASK_KINDS "\n + "SYSREF_TASK_RIGHTS "\n + "SYSREF_TASK_SIGNATURES "\n + "SYSREF_TASKS "\n + "SYSREF_UNITS "\n + "SYSREF_USER_GROUPS "\n + "SYSREF_USER_GROUPS_REFERENCE "\n + "SYSREF_USER_SUBSTITUTION "\n + "SYSREF_USERS "\n + "SYSREF_USERS_REFERENCE "\n + "SYSREF_VIEWERS "\n + "SYSREF_WORKING_TIME_CALENDARS ";\n\n // Table name\n const table_name_constants =\n "ACCESS_RIGHTS_TABLE_NAME "\n + "EDMS_ACCESS_TABLE_NAME "\n + "EDOC_TYPES_TABLE_NAME ";\n\n // Test\n const test_constants =\n "TEST_DEV_DB_NAME "\n + "TEST_DEV_SYSTEM_CODE "\n + "TEST_EDMS_DB_NAME "\n + "TEST_EDMS_MAIN_CODE "\n + "TEST_EDMS_MAIN_DB_NAME "\n + "TEST_EDMS_SECOND_CODE "\n + "TEST_EDMS_SECOND_DB_NAME "\n + "TEST_EDMS_SYSTEM_CODE "\n + "TEST_ISB5_MAIN_CODE "\n + "TEST_ISB5_SECOND_CODE "\n + "TEST_SQL_SERVER_2005_NAME "\n + "TEST_SQL_SERVER_NAME ";\n\n // Using the dialog windows\n const using_the_dialog_windows_constants =\n "ATTENTION_CAPTION "\n + "cbsCommandLinks "\n + "cbsDefault "\n + "CONFIRMATION_CAPTION "\n + "ERROR_CAPTION "\n + "INFORMATION_CAPTION "\n + "mrCancel "\n + "mrOk ";\n\n // Using the document\n const using_the_document_constants =\n "EDOC_VERSION_ACTIVE_STAGE_CODE "\n + "EDOC_VERSION_DESIGN_STAGE_CODE "\n + "EDOC_VERSION_OBSOLETE_STAGE_CODE ";\n\n // Using the EA and encryption\n const using_the_EA_and_encryption_constants =\n "cpDataEnciphermentEnabled "\n + "cpDigitalSignatureEnabled "\n + "cpID "\n + "cpIssuer "\n + "cpPluginVersion "\n + "cpSerial "\n + "cpSubjectName "\n + "cpSubjSimpleName "\n + "cpValidFromDate "\n + "cpValidToDate ";\n\n // Using the ISBL-editor\n const using_the_ISBL_editor_constants =\n "ISBL_SYNTAX " + "NO_SYNTAX " + "XML_SYNTAX ";\n\n // Wait block properties\n const wait_block_properties_constants =\n "WAIT_BLOCK_AFTER_FINISH_EVENT "\n + "WAIT_BLOCK_BEFORE_START_EVENT "\n + "WAIT_BLOCK_DEADLINE_PROPERTY "\n + "WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY "\n + "WAIT_BLOCK_NAME_PROPERTY "\n + "WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY ";\n\n // SYSRES Common\n const sysres_common_constants =\n "SYSRES_COMMON "\n + "SYSRES_CONST "\n + "SYSRES_MBFUNC "\n + "SYSRES_SBDATA "\n + "SYSRES_SBGUI "\n + "SYSRES_SBINTF "\n + "SYSRES_SBREFDSC "\n + "SYSRES_SQLERRORS "\n + "SYSRES_SYSCOMP ";\n\n // Константы ==> built_in\n const CONSTANTS =\n sysres_constants\n + base_constants\n + base_group_name_constants\n + decision_block_properties_constants\n + file_extension_constants\n + job_block_properties_constants\n + language_code_constants\n + launching_external_applications_constants\n + link_kind_constants\n + lock_type_constants\n + monitor_block_properties_constants\n + notice_block_properties_constants\n + object_events_constants\n + object_params_constants\n + other_constants\n + privileges_constants\n + pseudoreference_code_constants\n + requisite_ISBCertificateType_values_constants\n + requisite_ISBEDocStorageType_values_constants\n + requisite_compType2_values_constants\n + requisite_name_constants\n + result_constants\n + rule_identification_constants\n + script_block_properties_constants\n + subtask_block_properties_constants\n + system_component_constants\n + system_dialogs_constants\n + system_reference_names_constants\n + table_name_constants\n + test_constants\n + using_the_dialog_windows_constants\n + using_the_document_constants\n + using_the_EA_and_encryption_constants\n + using_the_ISBL_editor_constants\n + wait_block_properties_constants\n + sysres_common_constants;\n\n // enum TAccountType\n const TAccountType = "atUser atGroup atRole ";\n\n // enum TActionEnabledMode\n const TActionEnabledMode =\n "aemEnabledAlways "\n + "aemDisabledAlways "\n + "aemEnabledOnBrowse "\n + "aemEnabledOnEdit "\n + "aemDisabledOnBrowseEmpty ";\n\n // enum TAddPosition\n const TAddPosition = "apBegin apEnd ";\n\n // enum TAlignment\n const TAlignment = "alLeft alRight ";\n\n // enum TAreaShowMode\n const TAreaShowMode =\n "asmNever "\n + "asmNoButCustomize "\n + "asmAsLastTime "\n + "asmYesButCustomize "\n + "asmAlways ";\n\n // enum TCertificateInvalidationReason\n const TCertificateInvalidationReason = "cirCommon cirRevoked ";\n\n // enum TCertificateType\n const TCertificateType = "ctSignature ctEncode ctSignatureEncode ";\n\n // enum TCheckListBoxItemState\n const TCheckListBoxItemState = "clbUnchecked clbChecked clbGrayed ";\n\n // enum TCloseOnEsc\n const TCloseOnEsc = "ceISB ceAlways ceNever ";\n\n // enum TCompType\n const TCompType =\n "ctDocument "\n + "ctReference "\n + "ctScript "\n + "ctUnknown "\n + "ctReport "\n + "ctDialog "\n + "ctFunction "\n + "ctFolder "\n + "ctEDocument "\n + "ctTask "\n + "ctJob "\n + "ctNotice "\n + "ctControlJob ";\n\n // enum TConditionFormat\n const TConditionFormat = "cfInternal cfDisplay ";\n\n // enum TConnectionIntent\n const TConnectionIntent = "ciUnspecified ciWrite ciRead ";\n\n // enum TContentKind\n const TContentKind =\n "ckFolder "\n + "ckEDocument "\n + "ckTask "\n + "ckJob "\n + "ckComponentToken "\n + "ckAny "\n + "ckReference "\n + "ckScript "\n + "ckReport "\n + "ckDialog ";\n\n // enum TControlType\n const TControlType =\n "ctISBLEditor "\n + "ctBevel "\n + "ctButton "\n + "ctCheckListBox "\n + "ctComboBox "\n + "ctComboEdit "\n + "ctGrid "\n + "ctDBCheckBox "\n + "ctDBComboBox "\n + "ctDBEdit "\n + "ctDBEllipsis "\n + "ctDBMemo "\n + "ctDBNavigator "\n + "ctDBRadioGroup "\n + "ctDBStatusLabel "\n + "ctEdit "\n + "ctGroupBox "\n + "ctInplaceHint "\n + "ctMemo "\n + "ctPanel "\n + "ctListBox "\n + "ctRadioButton "\n + "ctRichEdit "\n + "ctTabSheet "\n + "ctWebBrowser "\n + "ctImage "\n + "ctHyperLink "\n + "ctLabel "\n + "ctDBMultiEllipsis "\n + "ctRibbon "\n + "ctRichView "\n + "ctInnerPanel "\n + "ctPanelGroup "\n + "ctBitButton ";\n\n // enum TCriterionContentType\n const TCriterionContentType =\n "cctDate "\n + "cctInteger "\n + "cctNumeric "\n + "cctPick "\n + "cctReference "\n + "cctString "\n + "cctText ";\n\n // enum TCultureType\n const TCultureType = "cltInternal cltPrimary cltGUI ";\n\n // enum TDataSetEventType\n const TDataSetEventType =\n "dseBeforeOpen "\n + "dseAfterOpen "\n + "dseBeforeClose "\n + "dseAfterClose "\n + "dseOnValidDelete "\n + "dseBeforeDelete "\n + "dseAfterDelete "\n + "dseAfterDeleteOutOfTransaction "\n + "dseOnDeleteError "\n + "dseBeforeInsert "\n + "dseAfterInsert "\n + "dseOnValidUpdate "\n + "dseBeforeUpdate "\n + "dseOnUpdateRatifiedRecord "\n + "dseAfterUpdate "\n + "dseAfterUpdateOutOfTransaction "\n + "dseOnUpdateError "\n + "dseAfterScroll "\n + "dseOnOpenRecord "\n + "dseOnCloseRecord "\n + "dseBeforeCancel "\n + "dseAfterCancel "\n + "dseOnUpdateDeadlockError "\n + "dseBeforeDetailUpdate "\n + "dseOnPrepareUpdate "\n + "dseOnAnyRequisiteChange ";\n\n // enum TDataSetState\n const TDataSetState = "dssEdit dssInsert dssBrowse dssInActive ";\n\n // enum TDateFormatType\n const TDateFormatType = "dftDate dftShortDate dftDateTime dftTimeStamp ";\n\n // enum TDateOffsetType\n const TDateOffsetType = "dotDays dotHours dotMinutes dotSeconds ";\n\n // enum TDateTimeKind\n const TDateTimeKind = "dtkndLocal dtkndUTC ";\n\n // enum TDeaAccessRights\n const TDeaAccessRights = "arNone arView arEdit arFull ";\n\n // enum TDocumentDefaultAction\n const TDocumentDefaultAction = "ddaView ddaEdit ";\n\n // enum TEditMode\n const TEditMode =\n "emLock "\n + "emEdit "\n + "emSign "\n + "emExportWithLock "\n + "emImportWithUnlock "\n + "emChangeVersionNote "\n + "emOpenForModify "\n + "emChangeLifeStage "\n + "emDelete "\n + "emCreateVersion "\n + "emImport "\n + "emUnlockExportedWithLock "\n + "emStart "\n + "emAbort "\n + "emReInit "\n + "emMarkAsReaded "\n + "emMarkAsUnreaded "\n + "emPerform "\n + "emAccept "\n + "emResume "\n + "emChangeRights "\n + "emEditRoute "\n + "emEditObserver "\n + "emRecoveryFromLocalCopy "\n + "emChangeWorkAccessType "\n + "emChangeEncodeTypeToCertificate "\n + "emChangeEncodeTypeToPassword "\n + "emChangeEncodeTypeToNone "\n + "emChangeEncodeTypeToCertificatePassword "\n + "emChangeStandardRoute "\n + "emGetText "\n + "emOpenForView "\n + "emMoveToStorage "\n + "emCreateObject "\n + "emChangeVersionHidden "\n + "emDeleteVersion "\n + "emChangeLifeCycleStage "\n + "emApprovingSign "\n + "emExport "\n + "emContinue "\n + "emLockFromEdit "\n + "emUnLockForEdit "\n + "emLockForServer "\n + "emUnlockFromServer "\n + "emDelegateAccessRights "\n + "emReEncode ";\n\n // enum TEditorCloseObservType\n const TEditorCloseObservType = "ecotFile ecotProcess ";\n\n // enum TEdmsApplicationAction\n const TEdmsApplicationAction = "eaGet eaCopy eaCreate eaCreateStandardRoute ";\n\n // enum TEDocumentLockType\n const TEDocumentLockType = "edltAll edltNothing edltQuery ";\n\n // enum TEDocumentStepShowMode\n const TEDocumentStepShowMode = "essmText essmCard ";\n\n // enum TEDocumentStepVersionType\n const TEDocumentStepVersionType = "esvtLast esvtLastActive esvtSpecified ";\n\n // enum TEDocumentStorageFunction\n const TEDocumentStorageFunction = "edsfExecutive edsfArchive ";\n\n // enum TEDocumentStorageType\n const TEDocumentStorageType = "edstSQLServer edstFile ";\n\n // enum TEDocumentVersionSourceType\n const TEDocumentVersionSourceType =\n "edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile ";\n\n // enum TEDocumentVersionState\n const TEDocumentVersionState = "vsDefault vsDesign vsActive vsObsolete ";\n\n // enum TEncodeType\n const TEncodeType = "etNone etCertificate etPassword etCertificatePassword ";\n\n // enum TExceptionCategory\n const TExceptionCategory = "ecException ecWarning ecInformation ";\n\n // enum TExportedSignaturesType\n const TExportedSignaturesType = "estAll estApprovingOnly ";\n\n // enum TExportedVersionType\n const TExportedVersionType = "evtLast evtLastActive evtQuery ";\n\n // enum TFieldDataType\n const TFieldDataType =\n "fdtString "\n + "fdtNumeric "\n + "fdtInteger "\n + "fdtDate "\n + "fdtText "\n + "fdtUnknown "\n + "fdtWideString "\n + "fdtLargeInteger ";\n\n // enum TFolderType\n const TFolderType =\n "ftInbox "\n + "ftOutbox "\n + "ftFavorites "\n + "ftCommonFolder "\n + "ftUserFolder "\n + "ftComponents "\n + "ftQuickLaunch "\n + "ftShortcuts "\n + "ftSearch ";\n\n // enum TGridRowHeight\n const TGridRowHeight = "grhAuto " + "grhX1 " + "grhX2 " + "grhX3 ";\n\n // enum THyperlinkType\n const THyperlinkType = "hltText " + "hltRTF " + "hltHTML ";\n\n // enum TImageFileFormat\n const TImageFileFormat =\n "iffBMP "\n + "iffJPEG "\n + "iffMultiPageTIFF "\n + "iffSinglePageTIFF "\n + "iffTIFF "\n + "iffPNG ";\n\n // enum TImageMode\n const TImageMode = "im8bGrayscale " + "im24bRGB " + "im1bMonochrome ";\n\n // enum TImageType\n const TImageType = "itBMP " + "itJPEG " + "itWMF " + "itPNG ";\n\n // enum TInplaceHintKind\n const TInplaceHintKind =\n "ikhInformation " + "ikhWarning " + "ikhError " + "ikhNoIcon ";\n\n // enum TISBLContext\n const TISBLContext =\n "icUnknown "\n + "icScript "\n + "icFunction "\n + "icIntegratedReport "\n + "icAnalyticReport "\n + "icDataSetEventHandler "\n + "icActionHandler "\n + "icFormEventHandler "\n + "icLookUpEventHandler "\n + "icRequisiteChangeEventHandler "\n + "icBeforeSearchEventHandler "\n + "icRoleCalculation "\n + "icSelectRouteEventHandler "\n + "icBlockPropertyCalculation "\n + "icBlockQueryParamsEventHandler "\n + "icChangeSearchResultEventHandler "\n + "icBlockEventHandler "\n + "icSubTaskInitEventHandler "\n + "icEDocDataSetEventHandler "\n + "icEDocLookUpEventHandler "\n + "icEDocActionHandler "\n + "icEDocFormEventHandler "\n + "icEDocRequisiteChangeEventHandler "\n + "icStructuredConversionRule "\n + "icStructuredConversionEventBefore "\n + "icStructuredConversionEventAfter "\n + "icWizardEventHandler "\n + "icWizardFinishEventHandler "\n + "icWizardStepEventHandler "\n + "icWizardStepFinishEventHandler "\n + "icWizardActionEnableEventHandler "\n + "icWizardActionExecuteEventHandler "\n + "icCreateJobsHandler "\n + "icCreateNoticesHandler "\n + "icBeforeLookUpEventHandler "\n + "icAfterLookUpEventHandler "\n + "icTaskAbortEventHandler "\n + "icWorkflowBlockActionHandler "\n + "icDialogDataSetEventHandler "\n + "icDialogActionHandler "\n + "icDialogLookUpEventHandler "\n + "icDialogRequisiteChangeEventHandler "\n + "icDialogFormEventHandler "\n + "icDialogValidCloseEventHandler "\n + "icBlockFormEventHandler "\n + "icTaskFormEventHandler "\n + "icReferenceMethod "\n + "icEDocMethod "\n + "icDialogMethod "\n + "icProcessMessageHandler ";\n\n // enum TItemShow\n const TItemShow = "isShow " + "isHide " + "isByUserSettings ";\n\n // enum TJobKind\n const TJobKind = "jkJob " + "jkNotice " + "jkControlJob ";\n\n // enum TJoinType\n const TJoinType = "jtInner " + "jtLeft " + "jtRight " + "jtFull " + "jtCross ";\n\n // enum TLabelPos\n const TLabelPos = "lbpAbove " + "lbpBelow " + "lbpLeft " + "lbpRight ";\n\n // enum TLicensingType\n const TLicensingType = "eltPerConnection " + "eltPerUser ";\n\n // enum TLifeCycleStageFontColor\n const TLifeCycleStageFontColor =\n "sfcUndefined "\n + "sfcBlack "\n + "sfcGreen "\n + "sfcRed "\n + "sfcBlue "\n + "sfcOrange "\n + "sfcLilac ";\n\n // enum TLifeCycleStageFontStyle\n const TLifeCycleStageFontStyle = "sfsItalic " + "sfsStrikeout " + "sfsNormal ";\n\n // enum TLockableDevelopmentComponentType\n const TLockableDevelopmentComponentType =\n "ldctStandardRoute "\n + "ldctWizard "\n + "ldctScript "\n + "ldctFunction "\n + "ldctRouteBlock "\n + "ldctIntegratedReport "\n + "ldctAnalyticReport "\n + "ldctReferenceType "\n + "ldctEDocumentType "\n + "ldctDialog "\n + "ldctServerEvents ";\n\n // enum TMaxRecordCountRestrictionType\n const TMaxRecordCountRestrictionType =\n "mrcrtNone " + "mrcrtUser " + "mrcrtMaximal " + "mrcrtCustom ";\n\n // enum TRangeValueType\n const TRangeValueType =\n "vtEqual " + "vtGreaterOrEqual " + "vtLessOrEqual " + "vtRange ";\n\n // enum TRelativeDate\n const TRelativeDate =\n "rdYesterday "\n + "rdToday "\n + "rdTomorrow "\n + "rdThisWeek "\n + "rdThisMonth "\n + "rdThisYear "\n + "rdNextMonth "\n + "rdNextWeek "\n + "rdLastWeek "\n + "rdLastMonth ";\n\n // enum TReportDestination\n const TReportDestination = "rdWindow " + "rdFile " + "rdPrinter ";\n\n // enum TReqDataType\n const TReqDataType =\n "rdtString "\n + "rdtNumeric "\n + "rdtInteger "\n + "rdtDate "\n + "rdtReference "\n + "rdtAccount "\n + "rdtText "\n + "rdtPick "\n + "rdtUnknown "\n + "rdtLargeInteger "\n + "rdtDocument ";\n\n // enum TRequisiteEventType\n const TRequisiteEventType = "reOnChange " + "reOnChangeValues ";\n\n // enum TSBTimeType\n const TSBTimeType = "ttGlobal " + "ttLocal " + "ttUser " + "ttSystem ";\n\n // enum TSearchShowMode\n const TSearchShowMode =\n "ssmBrowse " + "ssmSelect " + "ssmMultiSelect " + "ssmBrowseModal ";\n\n // enum TSelectMode\n const TSelectMode = "smSelect " + "smLike " + "smCard ";\n\n // enum TSignatureType\n const TSignatureType = "stNone " + "stAuthenticating " + "stApproving ";\n\n // enum TSignerContentType\n const TSignerContentType = "sctString " + "sctStream ";\n\n // enum TStringsSortType\n const TStringsSortType = "sstAnsiSort " + "sstNaturalSort ";\n\n // enum TStringValueType\n const TStringValueType = "svtEqual " + "svtContain ";\n\n // enum TStructuredObjectAttributeType\n const TStructuredObjectAttributeType =\n "soatString "\n + "soatNumeric "\n + "soatInteger "\n + "soatDatetime "\n + "soatReferenceRecord "\n + "soatText "\n + "soatPick "\n + "soatBoolean "\n + "soatEDocument "\n + "soatAccount "\n + "soatIntegerCollection "\n + "soatNumericCollection "\n + "soatStringCollection "\n + "soatPickCollection "\n + "soatDatetimeCollection "\n + "soatBooleanCollection "\n + "soatReferenceRecordCollection "\n + "soatEDocumentCollection "\n + "soatAccountCollection "\n + "soatContents "\n + "soatUnknown ";\n\n // enum TTaskAbortReason\n const TTaskAbortReason = "tarAbortByUser " + "tarAbortByWorkflowException ";\n\n // enum TTextValueType\n const TTextValueType = "tvtAllWords " + "tvtExactPhrase " + "tvtAnyWord ";\n\n // enum TUserObjectStatus\n const TUserObjectStatus =\n "usNone "\n + "usCompleted "\n + "usRedSquare "\n + "usBlueSquare "\n + "usYellowSquare "\n + "usGreenSquare "\n + "usOrangeSquare "\n + "usPurpleSquare "\n + "usFollowUp ";\n\n // enum TUserType\n const TUserType =\n "utUnknown "\n + "utUser "\n + "utDeveloper "\n + "utAdministrator "\n + "utSystemDeveloper "\n + "utDisconnected ";\n\n // enum TValuesBuildType\n const TValuesBuildType =\n "btAnd " + "btDetailAnd " + "btOr " + "btNotOr " + "btOnly ";\n\n // enum TViewMode\n const TViewMode = "vmView " + "vmSelect " + "vmNavigation ";\n\n // enum TViewSelectionMode\n const TViewSelectionMode =\n "vsmSingle " + "vsmMultiple " + "vsmMultipleCheck " + "vsmNoSelection ";\n\n // enum TWizardActionType\n const TWizardActionType =\n "wfatPrevious " + "wfatNext " + "wfatCancel " + "wfatFinish ";\n\n // enum TWizardFormElementProperty\n const TWizardFormElementProperty =\n "wfepUndefined "\n + "wfepText3 "\n + "wfepText6 "\n + "wfepText9 "\n + "wfepSpinEdit "\n + "wfepDropDown "\n + "wfepRadioGroup "\n + "wfepFlag "\n + "wfepText12 "\n + "wfepText15 "\n + "wfepText18 "\n + "wfepText21 "\n + "wfepText24 "\n + "wfepText27 "\n + "wfepText30 "\n + "wfepRadioGroupColumn1 "\n + "wfepRadioGroupColumn2 "\n + "wfepRadioGroupColumn3 ";\n\n // enum TWizardFormElementType\n const TWizardFormElementType =\n "wfetQueryParameter " + "wfetText " + "wfetDelimiter " + "wfetLabel ";\n\n // enum TWizardParamType\n const TWizardParamType =\n "wptString "\n + "wptInteger "\n + "wptNumeric "\n + "wptBoolean "\n + "wptDateTime "\n + "wptPick "\n + "wptText "\n + "wptUser "\n + "wptUserList "\n + "wptEDocumentInfo "\n + "wptEDocumentInfoList "\n + "wptReferenceRecordInfo "\n + "wptReferenceRecordInfoList "\n + "wptFolderInfo "\n + "wptTaskInfo "\n + "wptContents "\n + "wptFileName "\n + "wptDate ";\n\n // enum TWizardStepResult\n const TWizardStepResult =\n "wsrComplete "\n + "wsrGoNext "\n + "wsrGoPrevious "\n + "wsrCustom "\n + "wsrCancel "\n + "wsrGoFinal ";\n\n // enum TWizardStepType\n const TWizardStepType =\n "wstForm "\n + "wstEDocument "\n + "wstTaskCard "\n + "wstReferenceRecordCard "\n + "wstFinal ";\n\n // enum TWorkAccessType\n const TWorkAccessType = "waAll " + "waPerformers " + "waManual ";\n\n // enum TWorkflowBlockType\n const TWorkflowBlockType =\n "wsbStart "\n + "wsbFinish "\n + "wsbNotice "\n + "wsbStep "\n + "wsbDecision "\n + "wsbWait "\n + "wsbMonitor "\n + "wsbScript "\n + "wsbConnector "\n + "wsbSubTask "\n + "wsbLifeCycleStage "\n + "wsbPause ";\n\n // enum TWorkflowDataType\n const TWorkflowDataType =\n "wdtInteger "\n + "wdtFloat "\n + "wdtString "\n + "wdtPick "\n + "wdtDateTime "\n + "wdtBoolean "\n + "wdtTask "\n + "wdtJob "\n + "wdtFolder "\n + "wdtEDocument "\n + "wdtReferenceRecord "\n + "wdtUser "\n + "wdtGroup "\n + "wdtRole "\n + "wdtIntegerCollection "\n + "wdtFloatCollection "\n + "wdtStringCollection "\n + "wdtPickCollection "\n + "wdtDateTimeCollection "\n + "wdtBooleanCollection "\n + "wdtTaskCollection "\n + "wdtJobCollection "\n + "wdtFolderCollection "\n + "wdtEDocumentCollection "\n + "wdtReferenceRecordCollection "\n + "wdtUserCollection "\n + "wdtGroupCollection "\n + "wdtRoleCollection "\n + "wdtContents "\n + "wdtUserList "\n + "wdtSearchDescription "\n + "wdtDeadLine "\n + "wdtPickSet "\n + "wdtAccountCollection ";\n\n // enum TWorkImportance\n const TWorkImportance = "wiLow " + "wiNormal " + "wiHigh ";\n\n // enum TWorkRouteType\n const TWorkRouteType = "wrtSoft " + "wrtHard ";\n\n // enum TWorkState\n const TWorkState =\n "wsInit "\n + "wsRunning "\n + "wsDone "\n + "wsControlled "\n + "wsAborted "\n + "wsContinued ";\n\n // enum TWorkTextBuildingMode\n const TWorkTextBuildingMode =\n "wtmFull " + "wtmFromCurrent " + "wtmOnlyCurrent ";\n\n // Перечисления\n const ENUMS =\n TAccountType\n + TActionEnabledMode\n + TAddPosition\n + TAlignment\n + TAreaShowMode\n + TCertificateInvalidationReason\n + TCertificateType\n + TCheckListBoxItemState\n + TCloseOnEsc\n + TCompType\n + TConditionFormat\n + TConnectionIntent\n + TContentKind\n + TControlType\n + TCriterionContentType\n + TCultureType\n + TDataSetEventType\n + TDataSetState\n + TDateFormatType\n + TDateOffsetType\n + TDateTimeKind\n + TDeaAccessRights\n + TDocumentDefaultAction\n + TEditMode\n + TEditorCloseObservType\n + TEdmsApplicationAction\n + TEDocumentLockType\n + TEDocumentStepShowMode\n + TEDocumentStepVersionType\n + TEDocumentStorageFunction\n + TEDocumentStorageType\n + TEDocumentVersionSourceType\n + TEDocumentVersionState\n + TEncodeType\n + TExceptionCategory\n + TExportedSignaturesType\n + TExportedVersionType\n + TFieldDataType\n + TFolderType\n + TGridRowHeight\n + THyperlinkType\n + TImageFileFormat\n + TImageMode\n + TImageType\n + TInplaceHintKind\n + TISBLContext\n + TItemShow\n + TJobKind\n + TJoinType\n + TLabelPos\n + TLicensingType\n + TLifeCycleStageFontColor\n + TLifeCycleStageFontStyle\n + TLockableDevelopmentComponentType\n + TMaxRecordCountRestrictionType\n + TRangeValueType\n + TRelativeDate\n + TReportDestination\n + TReqDataType\n + TRequisiteEventType\n + TSBTimeType\n + TSearchShowMode\n + TSelectMode\n + TSignatureType\n + TSignerContentType\n + TStringsSortType\n + TStringValueType\n + TStructuredObjectAttributeType\n + TTaskAbortReason\n + TTextValueType\n + TUserObjectStatus\n + TUserType\n + TValuesBuildType\n + TViewMode\n + TViewSelectionMode\n + TWizardActionType\n + TWizardFormElementProperty\n + TWizardFormElementType\n + TWizardParamType\n + TWizardStepResult\n + TWizardStepType\n + TWorkAccessType\n + TWorkflowBlockType\n + TWorkflowDataType\n + TWorkImportance\n + TWorkRouteType\n + TWorkState\n + TWorkTextBuildingMode;\n\n // Системные функции ==> SYSFUNCTIONS\n const system_functions =\n "AddSubString "\n + "AdjustLineBreaks "\n + "AmountInWords "\n + "Analysis "\n + "ArrayDimCount "\n + "ArrayHighBound "\n + "ArrayLowBound "\n + "ArrayOf "\n + "ArrayReDim "\n + "Assert "\n + "Assigned "\n + "BeginOfMonth "\n + "BeginOfPeriod "\n + "BuildProfilingOperationAnalysis "\n + "CallProcedure "\n + "CanReadFile "\n + "CArrayElement "\n + "CDataSetRequisite "\n + "ChangeDate "\n + "ChangeReferenceDataset "\n + "Char "\n + "CharPos "\n + "CheckParam "\n + "CheckParamValue "\n + "CompareStrings "\n + "ConstantExists "\n + "ControlState "\n + "ConvertDateStr "\n + "Copy "\n + "CopyFile "\n + "CreateArray "\n + "CreateCachedReference "\n + "CreateConnection "\n + "CreateDialog "\n + "CreateDualListDialog "\n + "CreateEditor "\n + "CreateException "\n + "CreateFile "\n + "CreateFolderDialog "\n + "CreateInputDialog "\n + "CreateLinkFile "\n + "CreateList "\n + "CreateLock "\n + "CreateMemoryDataSet "\n + "CreateObject "\n + "CreateOpenDialog "\n + "CreateProgress "\n + "CreateQuery "\n + "CreateReference "\n + "CreateReport "\n + "CreateSaveDialog "\n + "CreateScript "\n + "CreateSQLPivotFunction "\n + "CreateStringList "\n + "CreateTreeListSelectDialog "\n + "CSelectSQL "\n + "CSQL "\n + "CSubString "\n + "CurrentUserID "\n + "CurrentUserName "\n + "CurrentVersion "\n + "DataSetLocateEx "\n + "DateDiff "\n + "DateTimeDiff "\n + "DateToStr "\n + "DayOfWeek "\n + "DeleteFile "\n + "DirectoryExists "\n + "DisableCheckAccessRights "\n + "DisableCheckFullShowingRestriction "\n + "DisableMassTaskSendingRestrictions "\n + "DropTable "\n + "DupeString "\n + "EditText "\n + "EnableCheckAccessRights "\n + "EnableCheckFullShowingRestriction "\n + "EnableMassTaskSendingRestrictions "\n + "EndOfMonth "\n + "EndOfPeriod "\n + "ExceptionExists "\n + "ExceptionsOff "\n + "ExceptionsOn "\n + "Execute "\n + "ExecuteProcess "\n + "Exit "\n + "ExpandEnvironmentVariables "\n + "ExtractFileDrive "\n + "ExtractFileExt "\n + "ExtractFileName "\n + "ExtractFilePath "\n + "ExtractParams "\n + "FileExists "\n + "FileSize "\n + "FindFile "\n + "FindSubString "\n + "FirmContext "\n + "ForceDirectories "\n + "Format "\n + "FormatDate "\n + "FormatNumeric "\n + "FormatSQLDate "\n + "FormatString "\n + "FreeException "\n + "GetComponent "\n + "GetComponentLaunchParam "\n + "GetConstant "\n + "GetLastException "\n + "GetReferenceRecord "\n + "GetRefTypeByRefID "\n + "GetTableID "\n + "GetTempFolder "\n + "IfThen "\n + "In "\n + "IndexOf "\n + "InputDialog "\n + "InputDialogEx "\n + "InteractiveMode "\n + "IsFileLocked "\n + "IsGraphicFile "\n + "IsNumeric "\n + "Length "\n + "LoadString "\n + "LoadStringFmt "\n + "LocalTimeToUTC "\n + "LowerCase "\n + "Max "\n + "MessageBox "\n + "MessageBoxEx "\n + "MimeDecodeBinary "\n + "MimeDecodeString "\n + "MimeEncodeBinary "\n + "MimeEncodeString "\n + "Min "\n + "MoneyInWords "\n + "MoveFile "\n + "NewID "\n + "Now "\n + "OpenFile "\n + "Ord "\n + "Precision "\n + "Raise "\n + "ReadCertificateFromFile "\n + "ReadFile "\n + "ReferenceCodeByID "\n + "ReferenceNumber "\n + "ReferenceRequisiteMode "\n + "ReferenceRequisiteValue "\n + "RegionDateSettings "\n + "RegionNumberSettings "\n + "RegionTimeSettings "\n + "RegRead "\n + "RegWrite "\n + "RenameFile "\n + "Replace "\n + "Round "\n + "SelectServerCode "\n + "SelectSQL "\n + "ServerDateTime "\n + "SetConstant "\n + "SetManagedFolderFieldsState "\n + "ShowConstantsInputDialog "\n + "ShowMessage "\n + "Sleep "\n + "Split "\n + "SQL "\n + "SQL2XLSTAB "\n + "SQLProfilingSendReport "\n + "StrToDate "\n + "SubString "\n + "SubStringCount "\n + "SystemSetting "\n + "Time "\n + "TimeDiff "\n + "Today "\n + "Transliterate "\n + "Trim "\n + "UpperCase "\n + "UserStatus "\n + "UTCToLocalTime "\n + "ValidateXML "\n + "VarIsClear "\n + "VarIsEmpty "\n + "VarIsNull "\n + "WorkTimeDiff "\n + "WriteFile "\n + "WriteFileEx "\n + "WriteObjectHistory "\n + "Анализ "\n + "БазаДанных "\n + "БлокЕсть "\n + "БлокЕстьРасш "\n + "БлокИнфо "\n + "БлокСнять "\n + "БлокСнятьРасш "\n + "БлокУстановить "\n + "Ввод "\n + "ВводМеню "\n + "ВедС "\n + "ВедСпр "\n + "ВерхняяГраницаМассива "\n + "ВнешПрогр "\n + "Восст "\n + "ВременнаяПапка "\n + "Время "\n + "ВыборSQL "\n + "ВыбратьЗапись "\n + "ВыделитьСтр "\n + "Вызвать "\n + "Выполнить "\n + "ВыпПрогр "\n + "ГрафическийФайл "\n + "ГруппаДополнительно "\n + "ДатаВремяСерв "\n + "ДеньНедели "\n + "ДиалогДаНет "\n + "ДлинаСтр "\n + "ДобПодстр "\n + "ЕПусто "\n + "ЕслиТо "\n + "ЕЧисло "\n + "ЗамПодстр "\n + "ЗаписьСправочника "\n + "ЗначПоляСпр "\n + "ИДТипСпр "\n + "ИзвлечьДиск "\n + "ИзвлечьИмяФайла "\n + "ИзвлечьПуть "\n + "ИзвлечьРасширение "\n + "ИзмДат "\n + "ИзменитьРазмерМассива "\n + "ИзмеренийМассива "\n + "ИмяОрг "\n + "ИмяПоляСпр "\n + "Индекс "\n + "ИндикаторЗакрыть "\n + "ИндикаторОткрыть "\n + "ИндикаторШаг "\n + "ИнтерактивныйРежим "\n + "ИтогТблСпр "\n + "КодВидВедСпр "\n + "КодВидСпрПоИД "\n + "КодПоAnalit "\n + "КодСимвола "\n + "КодСпр "\n + "КолПодстр "\n + "КолПроп "\n + "КонМес "\n + "Конст "\n + "КонстЕсть "\n + "КонстЗнач "\n + "КонТран "\n + "КопироватьФайл "\n + "КопияСтр "\n + "КПериод "\n + "КСтрТблСпр "\n + "Макс "\n + "МаксСтрТблСпр "\n + "Массив "\n + "Меню "\n + "МенюРасш "\n + "Мин "\n + "НаборДанныхНайтиРасш "\n + "НаимВидСпр "\n + "НаимПоAnalit "\n + "НаимСпр "\n + "НастроитьПереводыСтрок "\n + "НачМес "\n + "НачТран "\n + "НижняяГраницаМассива "\n + "НомерСпр "\n + "НПериод "\n + "Окно "\n + "Окр "\n + "Окружение "\n + "ОтлИнфДобавить "\n + "ОтлИнфУдалить "\n + "Отчет "\n + "ОтчетАнал "\n + "ОтчетИнт "\n + "ПапкаСуществует "\n + "Пауза "\n + "ПВыборSQL "\n + "ПереименоватьФайл "\n + "Переменные "\n + "ПереместитьФайл "\n + "Подстр "\n + "ПоискПодстр "\n + "ПоискСтр "\n + "ПолучитьИДТаблицы "\n + "ПользовательДополнительно "\n + "ПользовательИД "\n + "ПользовательИмя "\n + "ПользовательСтатус "\n + "Прервать "\n + "ПроверитьПараметр "\n + "ПроверитьПараметрЗнач "\n + "ПроверитьУсловие "\n + "РазбСтр "\n + "РазнВремя "\n + "РазнДат "\n + "РазнДатаВремя "\n + "РазнРабВремя "\n + "РегУстВрем "\n + "РегУстДат "\n + "РегУстЧсл "\n + "РедТекст "\n + "РеестрЗапись "\n + "РеестрСписокИменПарам "\n + "РеестрЧтение "\n + "РеквСпр "\n + "РеквСпрПр "\n + "Сегодня "\n + "Сейчас "\n + "Сервер "\n + "СерверПроцессИД "\n + "СертификатФайлСчитать "\n + "СжПроб "\n + "Символ "\n + "СистемаДиректумКод "\n + "СистемаИнформация "\n + "СистемаКод "\n + "Содержит "\n + "СоединениеЗакрыть "\n + "СоединениеОткрыть "\n + "СоздатьДиалог "\n + "СоздатьДиалогВыбораИзДвухСписков "\n + "СоздатьДиалогВыбораПапки "\n + "СоздатьДиалогОткрытияФайла "\n + "СоздатьДиалогСохраненияФайла "\n + "СоздатьЗапрос "\n + "СоздатьИндикатор "\n + "СоздатьИсключение "\n + "СоздатьКэшированныйСправочник "\n + "СоздатьМассив "\n + "СоздатьНаборДанных "\n + "СоздатьОбъект "\n + "СоздатьОтчет "\n + "СоздатьПапку "\n + "СоздатьРедактор "\n + "СоздатьСоединение "\n + "СоздатьСписок "\n + "СоздатьСписокСтрок "\n + "СоздатьСправочник "\n + "СоздатьСценарий "\n + "СоздСпр "\n + "СостСпр "\n + "Сохр "\n + "СохрСпр "\n + "СписокСистем "\n + "Спр "\n + "Справочник "\n + "СпрБлокЕсть "\n + "СпрБлокСнять "\n + "СпрБлокСнятьРасш "\n + "СпрБлокУстановить "\n + "СпрИзмНабДан "\n + "СпрКод "\n + "СпрНомер "\n + "СпрОбновить "\n + "СпрОткрыть "\n + "СпрОтменить "\n + "СпрПарам "\n + "СпрПолеЗнач "\n + "СпрПолеИмя "\n + "СпрРекв "\n + "СпрРеквВведЗн "\n + "СпрРеквНовые "\n + "СпрРеквПр "\n + "СпрРеквПредЗн "\n + "СпрРеквРежим "\n + "СпрРеквТипТекст "\n + "СпрСоздать "\n + "СпрСост "\n + "СпрСохранить "\n + "СпрТблИтог "\n + "СпрТблСтр "\n + "СпрТблСтрКол "\n + "СпрТблСтрМакс "\n + "СпрТблСтрМин "\n + "СпрТблСтрПред "\n + "СпрТблСтрСлед "\n + "СпрТблСтрСозд "\n + "СпрТблСтрУд "\n + "СпрТекПредст "\n + "СпрУдалить "\n + "СравнитьСтр "\n + "СтрВерхРегистр "\n + "СтрНижнРегистр "\n + "СтрТблСпр "\n + "СумПроп "\n + "Сценарий "\n + "СценарийПарам "\n + "ТекВерсия "\n + "ТекОрг "\n + "Точн "\n + "Тран "\n + "Транслитерация "\n + "УдалитьТаблицу "\n + "УдалитьФайл "\n + "УдСпр "\n + "УдСтрТблСпр "\n + "Уст "\n + "УстановкиКонстант "\n + "ФайлАтрибутСчитать "\n + "ФайлАтрибутУстановить "\n + "ФайлВремя "\n + "ФайлВремяУстановить "\n + "ФайлВыбрать "\n + "ФайлЗанят "\n + "ФайлЗаписать "\n + "ФайлИскать "\n + "ФайлКопировать "\n + "ФайлМожноЧитать "\n + "ФайлОткрыть "\n + "ФайлПереименовать "\n + "ФайлПерекодировать "\n + "ФайлПереместить "\n + "ФайлПросмотреть "\n + "ФайлРазмер "\n + "ФайлСоздать "\n + "ФайлСсылкаСоздать "\n + "ФайлСуществует "\n + "ФайлСчитать "\n + "ФайлУдалить "\n + "ФмтSQLДат "\n + "ФмтДат "\n + "ФмтСтр "\n + "ФмтЧсл "\n + "Формат "\n + "ЦМассивЭлемент "\n + "ЦНаборДанныхРеквизит "\n + "ЦПодстр ";\n\n // Предопределенные переменные ==> built_in\n const predefined_variables =\n "AltState "\n + "Application "\n + "CallType "\n + "ComponentTokens "\n + "CreatedJobs "\n + "CreatedNotices "\n + "ControlState "\n + "DialogResult "\n + "Dialogs "\n + "EDocuments "\n + "EDocumentVersionSource "\n + "Folders "\n + "GlobalIDs "\n + "Job "\n + "Jobs "\n + "InputValue "\n + "LookUpReference "\n + "LookUpRequisiteNames "\n + "LookUpSearch "\n + "Object "\n + "ParentComponent "\n + "Processes "\n + "References "\n + "Requisite "\n + "ReportName "\n + "Reports "\n + "Result "\n + "Scripts "\n + "Searches "\n + "SelectedAttachments "\n + "SelectedItems "\n + "SelectMode "\n + "Sender "\n + "ServerEvents "\n + "ServiceFactory "\n + "ShiftState "\n + "SubTask "\n + "SystemDialogs "\n + "Tasks "\n + "Wizard "\n + "Wizards "\n + "Work "\n + "ВызовСпособ "\n + "ИмяОтчета "\n + "РеквЗнач ";\n\n // Интерфейсы ==> type\n const interfaces =\n "IApplication "\n + "IAccessRights "\n + "IAccountRepository "\n + "IAccountSelectionRestrictions "\n + "IAction "\n + "IActionList "\n + "IAdministrationHistoryDescription "\n + "IAnchors "\n + "IApplication "\n + "IArchiveInfo "\n + "IAttachment "\n + "IAttachmentList "\n + "ICheckListBox "\n + "ICheckPointedList "\n + "IColumn "\n + "IComponent "\n + "IComponentDescription "\n + "IComponentToken "\n + "IComponentTokenFactory "\n + "IComponentTokenInfo "\n + "ICompRecordInfo "\n + "IConnection "\n + "IContents "\n + "IControl "\n + "IControlJob "\n + "IControlJobInfo "\n + "IControlList "\n + "ICrypto "\n + "ICrypto2 "\n + "ICustomJob "\n + "ICustomJobInfo "\n + "ICustomListBox "\n + "ICustomObjectWizardStep "\n + "ICustomWork "\n + "ICustomWorkInfo "\n + "IDataSet "\n + "IDataSetAccessInfo "\n + "IDataSigner "\n + "IDateCriterion "\n + "IDateRequisite "\n + "IDateRequisiteDescription "\n + "IDateValue "\n + "IDeaAccessRights "\n + "IDeaObjectInfo "\n + "IDevelopmentComponentLock "\n + "IDialog "\n + "IDialogFactory "\n + "IDialogPickRequisiteItems "\n + "IDialogsFactory "\n + "IDICSFactory "\n + "IDocRequisite "\n + "IDocumentInfo "\n + "IDualListDialog "\n + "IECertificate "\n + "IECertificateInfo "\n + "IECertificates "\n + "IEditControl "\n + "IEditorForm "\n + "IEdmsExplorer "\n + "IEdmsObject "\n + "IEdmsObjectDescription "\n + "IEdmsObjectFactory "\n + "IEdmsObjectInfo "\n + "IEDocument "\n + "IEDocumentAccessRights "\n + "IEDocumentDescription "\n + "IEDocumentEditor "\n + "IEDocumentFactory "\n + "IEDocumentInfo "\n + "IEDocumentStorage "\n + "IEDocumentVersion "\n + "IEDocumentVersionListDialog "\n + "IEDocumentVersionSource "\n + "IEDocumentWizardStep "\n + "IEDocVerSignature "\n + "IEDocVersionState "\n + "IEnabledMode "\n + "IEncodeProvider "\n + "IEncrypter "\n + "IEvent "\n + "IEventList "\n + "IException "\n + "IExternalEvents "\n + "IExternalHandler "\n + "IFactory "\n + "IField "\n + "IFileDialog "\n + "IFolder "\n + "IFolderDescription "\n + "IFolderDialog "\n + "IFolderFactory "\n + "IFolderInfo "\n + "IForEach "\n + "IForm "\n + "IFormTitle "\n + "IFormWizardStep "\n + "IGlobalIDFactory "\n + "IGlobalIDInfo "\n + "IGrid "\n + "IHasher "\n + "IHistoryDescription "\n + "IHyperLinkControl "\n + "IImageButton "\n + "IImageControl "\n + "IInnerPanel "\n + "IInplaceHint "\n + "IIntegerCriterion "\n + "IIntegerList "\n + "IIntegerRequisite "\n + "IIntegerValue "\n + "IISBLEditorForm "\n + "IJob "\n + "IJobDescription "\n + "IJobFactory "\n + "IJobForm "\n + "IJobInfo "\n + "ILabelControl "\n + "ILargeIntegerCriterion "\n + "ILargeIntegerRequisite "\n + "ILargeIntegerValue "\n + "ILicenseInfo "\n + "ILifeCycleStage "\n + "IList "\n + "IListBox "\n + "ILocalIDInfo "\n + "ILocalization "\n + "ILock "\n + "IMemoryDataSet "\n + "IMessagingFactory "\n + "IMetadataRepository "\n + "INotice "\n + "INoticeInfo "\n + "INumericCriterion "\n + "INumericRequisite "\n + "INumericValue "\n + "IObject "\n + "IObjectDescription "\n + "IObjectImporter "\n + "IObjectInfo "\n + "IObserver "\n + "IPanelGroup "\n + "IPickCriterion "\n + "IPickProperty "\n + "IPickRequisite "\n + "IPickRequisiteDescription "\n + "IPickRequisiteItem "\n + "IPickRequisiteItems "\n + "IPickValue "\n + "IPrivilege "\n + "IPrivilegeList "\n + "IProcess "\n + "IProcessFactory "\n + "IProcessMessage "\n + "IProgress "\n + "IProperty "\n + "IPropertyChangeEvent "\n + "IQuery "\n + "IReference "\n + "IReferenceCriterion "\n + "IReferenceEnabledMode "\n + "IReferenceFactory "\n + "IReferenceHistoryDescription "\n + "IReferenceInfo "\n + "IReferenceRecordCardWizardStep "\n + "IReferenceRequisiteDescription "\n + "IReferencesFactory "\n + "IReferenceValue "\n + "IRefRequisite "\n + "IReport "\n + "IReportFactory "\n + "IRequisite "\n + "IRequisiteDescription "\n + "IRequisiteDescriptionList "\n + "IRequisiteFactory "\n + "IRichEdit "\n + "IRouteStep "\n + "IRule "\n + "IRuleList "\n + "ISchemeBlock "\n + "IScript "\n + "IScriptFactory "\n + "ISearchCriteria "\n + "ISearchCriterion "\n + "ISearchDescription "\n + "ISearchFactory "\n + "ISearchFolderInfo "\n + "ISearchForObjectDescription "\n + "ISearchResultRestrictions "\n + "ISecuredContext "\n + "ISelectDialog "\n + "IServerEvent "\n + "IServerEventFactory "\n + "IServiceDialog "\n + "IServiceFactory "\n + "ISignature "\n + "ISignProvider "\n + "ISignProvider2 "\n + "ISignProvider3 "\n + "ISimpleCriterion "\n + "IStringCriterion "\n + "IStringList "\n + "IStringRequisite "\n + "IStringRequisiteDescription "\n + "IStringValue "\n + "ISystemDialogsFactory "\n + "ISystemInfo "\n + "ITabSheet "\n + "ITask "\n + "ITaskAbortReasonInfo "\n + "ITaskCardWizardStep "\n + "ITaskDescription "\n + "ITaskFactory "\n + "ITaskInfo "\n + "ITaskRoute "\n + "ITextCriterion "\n + "ITextRequisite "\n + "ITextValue "\n + "ITreeListSelectDialog "\n + "IUser "\n + "IUserList "\n + "IValue "\n + "IView "\n + "IWebBrowserControl "\n + "IWizard "\n + "IWizardAction "\n + "IWizardFactory "\n + "IWizardFormElement "\n + "IWizardParam "\n + "IWizardPickParam "\n + "IWizardReferenceParam "\n + "IWizardStep "\n + "IWorkAccessRights "\n + "IWorkDescription "\n + "IWorkflowAskableParam "\n + "IWorkflowAskableParams "\n + "IWorkflowBlock "\n + "IWorkflowBlockResult "\n + "IWorkflowEnabledMode "\n + "IWorkflowParam "\n + "IWorkflowPickParam "\n + "IWorkflowReferenceParam "\n + "IWorkState "\n + "IWorkTreeCustomNode "\n + "IWorkTreeJobNode "\n + "IWorkTreeTaskNode "\n + "IXMLEditorForm "\n + "SBCrypto ";\n\n // built_in : встроенные или библиотечные объекты (константы, перечисления)\n const BUILTIN = CONSTANTS + ENUMS;\n\n // class: встроенные наборы значений, системные объекты, фабрики\n const CLASS = predefined_variables;\n\n // literal : примитивные типы\n const LITERAL = "null true false nil ";\n\n // number : числа\n const NUMBERS = {\n className: "number",\n begin: hljs.NUMBER_RE,\n relevance: 0\n };\n\n // string : строки\n const STRINGS = {\n className: "string",\n variants: [\n {\n begin: \'"\',\n end: \'"\'\n },\n {\n begin: "\'",\n end: "\'"\n }\n ]\n };\n\n // Токены\n const DOCTAGS = {\n className: "doctag",\n begin: "\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b",\n relevance: 0\n };\n\n // Однострочный комментарий\n const ISBL_LINE_COMMENT_MODE = {\n className: "comment",\n begin: "//",\n end: "$",\n relevance: 0,\n contains: [\n hljs.PHRASAL_WORDS_MODE,\n DOCTAGS\n ]\n };\n\n // Многострочный комментарий\n const ISBL_BLOCK_COMMENT_MODE = {\n className: "comment",\n begin: "/\\\\*",\n end: "\\\\*/",\n relevance: 0,\n contains: [\n hljs.PHRASAL_WORDS_MODE,\n DOCTAGS\n ]\n };\n\n // comment : комментарии\n const COMMENTS = { variants: [\n ISBL_LINE_COMMENT_MODE,\n ISBL_BLOCK_COMMENT_MODE\n ] };\n\n // keywords : ключевые слова\n const KEYWORDS = {\n $pattern: UNDERSCORE_IDENT_RE,\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n literal: LITERAL\n };\n\n // methods : методы\n const METHODS = {\n begin: "\\\\.\\\\s*" + hljs.UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n relevance: 0\n };\n\n // type : встроенные типы\n const TYPES = {\n className: "type",\n begin: ":[ \\\\t]*(" + interfaces.trim().replace(/\\s/g, "|") + ")",\n end: "[ \\\\t]*=",\n excludeEnd: true\n };\n\n // variables : переменные\n const VARIABLES = {\n className: "variable",\n keywords: KEYWORDS,\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0,\n contains: [\n TYPES,\n METHODS\n ]\n };\n\n // Имена функций\n const FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + "\\\\(";\n\n const TITLE_MODE = {\n className: "title",\n keywords: {\n $pattern: UNDERSCORE_IDENT_RE,\n built_in: system_functions\n },\n begin: FUNCTION_TITLE,\n end: "\\\\(",\n returnBegin: true,\n excludeEnd: true\n };\n\n // function : функции\n const FUNCTIONS = {\n className: "function",\n begin: FUNCTION_TITLE,\n end: "\\\\)$",\n returnBegin: true,\n keywords: KEYWORDS,\n illegal: "[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]",\n contains: [\n TITLE_MODE,\n METHODS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n COMMENTS\n ]\n };\n\n return {\n name: \'ISBL\',\n case_insensitive: true,\n keywords: KEYWORDS,\n illegal: "\\\\$|\\\\?|%|,|;$|~|#|@|{"use strict";eval("\n\nconst yaml = __webpack_require__(3384);\n\n/**\n * Default engines\n */\n\nconst engines = exports = module.exports;\n\n/**\n * YAML\n */\n\nengines.yaml = {\n parse: yaml.safeLoad.bind(yaml),\n stringify: yaml.safeDump.bind(yaml)\n};\n\n/**\n * JSON\n */\n\nengines.json = {\n parse: JSON.parse.bind(JSON),\n stringify: function(obj, options) {\n const opts = Object.assign({replacer: null, space: 2}, options);\n return JSON.stringify(obj, opts.replacer, opts.space);\n }\n};\n\n/**\n * JavaScript\n */\n\nengines.javascript = {\n parse: function parse(str, options, wrap) {\n /* eslint no-eval: 0 */\n try {\n if (wrap !== false) {\n str = '(function() {\\nreturn ' + str.trim() + ';\\n}());';\n }\n return eval(str) || {};\n } catch (err) {\n if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {\n return parse(str, options, false);\n }\n throw new SyntaxError(err);\n }\n },\n stringify: function() {\n throw new Error('stringifying JavaScript is not supported');\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLGFBQWEsbUJBQU8sQ0FBQyxJQUFTOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MseUJBQXlCO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw0QkFBNEIsR0FBRyxJQUFJO0FBQy9EO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9ncmF5LW1hdHRlckA0LjAuMy9ub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbGliL2VuZ2luZXMuanM/ODBjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHlhbWwgPSByZXF1aXJlKCdqcy15YW1sJyk7XG5cbi8qKlxuICogRGVmYXVsdCBlbmdpbmVzXG4gKi9cblxuY29uc3QgZW5naW5lcyA9IGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBZQU1MXG4gKi9cblxuZW5naW5lcy55YW1sID0ge1xuICBwYXJzZTogeWFtbC5zYWZlTG9hZC5iaW5kKHlhbWwpLFxuICBzdHJpbmdpZnk6IHlhbWwuc2FmZUR1bXAuYmluZCh5YW1sKVxufTtcblxuLyoqXG4gKiBKU09OXG4gKi9cblxuZW5naW5lcy5qc29uID0ge1xuICBwYXJzZTogSlNPTi5wYXJzZS5iaW5kKEpTT04pLFxuICBzdHJpbmdpZnk6IGZ1bmN0aW9uKG9iaiwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtyZXBsYWNlcjogbnVsbCwgc3BhY2U6IDJ9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBvcHRzLnJlcGxhY2VyLCBvcHRzLnNwYWNlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBKYXZhU2NyaXB0XG4gKi9cblxuZW5naW5lcy5qYXZhc2NyaXB0ID0ge1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2Uoc3RyLCBvcHRpb25zLCB3cmFwKSB7XG4gICAgLyogZXNsaW50IG5vLWV2YWw6IDAgKi9cbiAgICB0cnkge1xuICAgICAgaWYgKHdyYXAgIT09IGZhbHNlKSB7XG4gICAgICAgIHN0ciA9ICcoZnVuY3Rpb24oKSB7XFxucmV0dXJuICcgKyBzdHIudHJpbSgpICsgJztcXG59KCkpOyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXZhbChzdHIpIHx8IHt9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHdyYXAgIT09IGZhbHNlICYmIC8odW5leHBlY3RlZHxpZGVudGlmaWVyKS9pLnRlc3QoZXJyLm1lc3NhZ2UpKSB7XG4gICAgICAgIHJldHVybiBwYXJzZShzdHIsIG9wdGlvbnMsIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihlcnIpO1xuICAgIH1cbiAgfSxcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3N0cmluZ2lmeWluZyBKYXZhU2NyaXB0IGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///163\n")},181:I=>{"use strict";I.exports=require("buffer")},201:module=>{eval('const SYSTEM_SYMBOLS = [\n "AASTriangle",\n "AbelianGroup",\n "Abort",\n "AbortKernels",\n "AbortProtect",\n "AbortScheduledTask",\n "Above",\n "Abs",\n "AbsArg",\n "AbsArgPlot",\n "Absolute",\n "AbsoluteCorrelation",\n "AbsoluteCorrelationFunction",\n "AbsoluteCurrentValue",\n "AbsoluteDashing",\n "AbsoluteFileName",\n "AbsoluteOptions",\n "AbsolutePointSize",\n "AbsoluteThickness",\n "AbsoluteTime",\n "AbsoluteTiming",\n "AcceptanceThreshold",\n "AccountingForm",\n "Accumulate",\n "Accuracy",\n "AccuracyGoal",\n "AcousticAbsorbingValue",\n "AcousticImpedanceValue",\n "AcousticNormalVelocityValue",\n "AcousticPDEComponent",\n "AcousticPressureCondition",\n "AcousticRadiationValue",\n "AcousticSoundHardValue",\n "AcousticSoundSoftCondition",\n "ActionDelay",\n "ActionMenu",\n "ActionMenuBox",\n "ActionMenuBoxOptions",\n "Activate",\n "Active",\n "ActiveClassification",\n "ActiveClassificationObject",\n "ActiveItem",\n "ActivePrediction",\n "ActivePredictionObject",\n "ActiveStyle",\n "AcyclicGraphQ",\n "AddOnHelpPath",\n "AddSides",\n "AddTo",\n "AddToSearchIndex",\n "AddUsers",\n "AdjacencyGraph",\n "AdjacencyList",\n "AdjacencyMatrix",\n "AdjacentMeshCells",\n "Adjugate",\n "AdjustmentBox",\n "AdjustmentBoxOptions",\n "AdjustTimeSeriesForecast",\n "AdministrativeDivisionData",\n "AffineHalfSpace",\n "AffineSpace",\n "AffineStateSpaceModel",\n "AffineTransform",\n "After",\n "AggregatedEntityClass",\n "AggregationLayer",\n "AircraftData",\n "AirportData",\n "AirPressureData",\n "AirSoundAttenuation",\n "AirTemperatureData",\n "AiryAi",\n "AiryAiPrime",\n "AiryAiZero",\n "AiryBi",\n "AiryBiPrime",\n "AiryBiZero",\n "AlgebraicIntegerQ",\n "AlgebraicNumber",\n "AlgebraicNumberDenominator",\n "AlgebraicNumberNorm",\n "AlgebraicNumberPolynomial",\n "AlgebraicNumberTrace",\n "AlgebraicRules",\n "AlgebraicRulesData",\n "Algebraics",\n "AlgebraicUnitQ",\n "Alignment",\n "AlignmentMarker",\n "AlignmentPoint",\n "All",\n "AllowAdultContent",\n "AllowChatServices",\n "AllowedCloudExtraParameters",\n "AllowedCloudParameterExtensions",\n "AllowedDimensions",\n "AllowedFrequencyRange",\n "AllowedHeads",\n "AllowGroupClose",\n "AllowIncomplete",\n "AllowInlineCells",\n "AllowKernelInitialization",\n "AllowLooseGrammar",\n "AllowReverseGroupClose",\n "AllowScriptLevelChange",\n "AllowVersionUpdate",\n "AllTrue",\n "Alphabet",\n "AlphabeticOrder",\n "AlphabeticSort",\n "AlphaChannel",\n "AlternateImage",\n "AlternatingFactorial",\n "AlternatingGroup",\n "AlternativeHypothesis",\n "Alternatives",\n "AltitudeMethod",\n "AmbientLight",\n "AmbiguityFunction",\n "AmbiguityList",\n "Analytic",\n "AnatomyData",\n "AnatomyForm",\n "AnatomyPlot3D",\n "AnatomySkinStyle",\n "AnatomyStyling",\n "AnchoredSearch",\n "And",\n "AndersonDarlingTest",\n "AngerJ",\n "AngleBisector",\n "AngleBracket",\n "AnglePath",\n "AnglePath3D",\n "AngleVector",\n "AngularGauge",\n "Animate",\n "AnimatedImage",\n "AnimationCycleOffset",\n "AnimationCycleRepetitions",\n "AnimationDirection",\n "AnimationDisplayTime",\n "AnimationRate",\n "AnimationRepetitions",\n "AnimationRunning",\n "AnimationRunTime",\n "AnimationTimeIndex",\n "AnimationVideo",\n "Animator",\n "AnimatorBox",\n "AnimatorBoxOptions",\n "AnimatorElements",\n "Annotate",\n "Annotation",\n "AnnotationDelete",\n "AnnotationKeys",\n "AnnotationRules",\n "AnnotationValue",\n "Annuity",\n "AnnuityDue",\n "Annulus",\n "AnomalyDetection",\n "AnomalyDetector",\n "AnomalyDetectorFunction",\n "Anonymous",\n "Antialiasing",\n "Antihermitian",\n "AntihermitianMatrixQ",\n "Antisymmetric",\n "AntisymmetricMatrixQ",\n "Antonyms",\n "AnyOrder",\n "AnySubset",\n "AnyTrue",\n "Apart",\n "ApartSquareFree",\n "APIFunction",\n "Appearance",\n "AppearanceElements",\n "AppearanceRules",\n "AppellF1",\n "Append",\n "AppendCheck",\n "AppendLayer",\n "AppendTo",\n "Application",\n "Apply",\n "ApplyReaction",\n "ApplySides",\n "ApplyTo",\n "ArcCos",\n "ArcCosh",\n "ArcCot",\n "ArcCoth",\n "ArcCsc",\n "ArcCsch",\n "ArcCurvature",\n "ARCHProcess",\n "ArcLength",\n "ArcSec",\n "ArcSech",\n "ArcSin",\n "ArcSinDistribution",\n "ArcSinh",\n "ArcTan",\n "ArcTanh",\n "Area",\n "Arg",\n "ArgMax",\n "ArgMin",\n "ArgumentCountQ",\n "ArgumentsOptions",\n "ARIMAProcess",\n "ArithmeticGeometricMean",\n "ARMAProcess",\n "Around",\n "AroundReplace",\n "ARProcess",\n "Array",\n "ArrayComponents",\n "ArrayDepth",\n "ArrayFilter",\n "ArrayFlatten",\n "ArrayMesh",\n "ArrayPad",\n "ArrayPlot",\n "ArrayPlot3D",\n "ArrayQ",\n "ArrayReduce",\n "ArrayResample",\n "ArrayReshape",\n "ArrayRules",\n "Arrays",\n "Arrow",\n "Arrow3DBox",\n "ArrowBox",\n "Arrowheads",\n "ASATriangle",\n "Ask",\n "AskAppend",\n "AskConfirm",\n "AskDisplay",\n "AskedQ",\n "AskedValue",\n "AskFunction",\n "AskState",\n "AskTemplateDisplay",\n "AspectRatio",\n "AspectRatioFixed",\n "Assert",\n "AssessmentFunction",\n "AssessmentResultObject",\n "AssociateTo",\n "Association",\n "AssociationFormat",\n "AssociationMap",\n "AssociationQ",\n "AssociationThread",\n "AssumeDeterministic",\n "Assuming",\n "Assumptions",\n "AstroAngularSeparation",\n "AstroBackground",\n "AstroCenter",\n "AstroDistance",\n "AstroGraphics",\n "AstroGridLines",\n "AstroGridLinesStyle",\n "AstronomicalData",\n "AstroPosition",\n "AstroProjection",\n "AstroRange",\n "AstroRangePadding",\n "AstroReferenceFrame",\n "AstroStyling",\n "AstroZoomLevel",\n "Asymptotic",\n "AsymptoticDSolveValue",\n "AsymptoticEqual",\n "AsymptoticEquivalent",\n "AsymptoticExpectation",\n "AsymptoticGreater",\n "AsymptoticGreaterEqual",\n "AsymptoticIntegrate",\n "AsymptoticLess",\n "AsymptoticLessEqual",\n "AsymptoticOutputTracker",\n "AsymptoticProbability",\n "AsymptoticProduct",\n "AsymptoticRSolveValue",\n "AsymptoticSolve",\n "AsymptoticSum",\n "Asynchronous",\n "AsynchronousTaskObject",\n "AsynchronousTasks",\n "Atom",\n "AtomCoordinates",\n "AtomCount",\n "AtomDiagramCoordinates",\n "AtomLabels",\n "AtomLabelStyle",\n "AtomList",\n "AtomQ",\n "AttachCell",\n "AttachedCell",\n "AttentionLayer",\n "Attributes",\n "Audio",\n "AudioAmplify",\n "AudioAnnotate",\n "AudioAnnotationLookup",\n "AudioBlockMap",\n "AudioCapture",\n "AudioChannelAssignment",\n "AudioChannelCombine",\n "AudioChannelMix",\n "AudioChannels",\n "AudioChannelSeparate",\n "AudioData",\n "AudioDelay",\n "AudioDelete",\n "AudioDevice",\n "AudioDistance",\n "AudioEncoding",\n "AudioFade",\n "AudioFrequencyShift",\n "AudioGenerator",\n "AudioIdentify",\n "AudioInputDevice",\n "AudioInsert",\n "AudioInstanceQ",\n "AudioIntervals",\n "AudioJoin",\n "AudioLabel",\n "AudioLength",\n "AudioLocalMeasurements",\n "AudioLooping",\n "AudioLoudness",\n "AudioMeasurements",\n "AudioNormalize",\n "AudioOutputDevice",\n "AudioOverlay",\n "AudioPad",\n "AudioPan",\n "AudioPartition",\n "AudioPause",\n "AudioPitchShift",\n "AudioPlay",\n "AudioPlot",\n "AudioQ",\n "AudioRecord",\n "AudioReplace",\n "AudioResample",\n "AudioReverb",\n "AudioReverse",\n "AudioSampleRate",\n "AudioSpectralMap",\n "AudioSpectralTransformation",\n "AudioSplit",\n "AudioStop",\n "AudioStream",\n "AudioStreams",\n "AudioTimeStretch",\n "AudioTrackApply",\n "AudioTrackSelection",\n "AudioTrim",\n "AudioType",\n "AugmentedPolyhedron",\n "AugmentedSymmetricPolynomial",\n "Authenticate",\n "Authentication",\n "AuthenticationDialog",\n "AutoAction",\n "Autocomplete",\n "AutocompletionFunction",\n "AutoCopy",\n "AutocorrelationTest",\n "AutoDelete",\n "AutoEvaluateEvents",\n "AutoGeneratedPackage",\n "AutoIndent",\n "AutoIndentSpacings",\n "AutoItalicWords",\n "AutoloadPath",\n "AutoMatch",\n "Automatic",\n "AutomaticImageSize",\n "AutoMultiplicationSymbol",\n "AutoNumberFormatting",\n "AutoOpenNotebooks",\n "AutoOpenPalettes",\n "AutoOperatorRenderings",\n "AutoQuoteCharacters",\n "AutoRefreshed",\n "AutoRemove",\n "AutorunSequencing",\n "AutoScaling",\n "AutoScroll",\n "AutoSpacing",\n "AutoStyleOptions",\n "AutoStyleWords",\n "AutoSubmitting",\n "Axes",\n "AxesEdge",\n "AxesLabel",\n "AxesOrigin",\n "AxesStyle",\n "AxiomaticTheory",\n "Axis",\n "Axis3DBox",\n "Axis3DBoxOptions",\n "AxisBox",\n "AxisBoxOptions",\n "AxisLabel",\n "AxisObject",\n "AxisStyle",\n "BabyMonsterGroupB",\n "Back",\n "BackFaceColor",\n "BackFaceGlowColor",\n "BackFaceOpacity",\n "BackFaceSpecularColor",\n "BackFaceSpecularExponent",\n "BackFaceSurfaceAppearance",\n "BackFaceTexture",\n "Background",\n "BackgroundAppearance",\n "BackgroundTasksSettings",\n "Backslash",\n "Backsubstitution",\n "Backward",\n "Ball",\n "Band",\n "BandpassFilter",\n "BandstopFilter",\n "BarabasiAlbertGraphDistribution",\n "BarChart",\n "BarChart3D",\n "BarcodeImage",\n "BarcodeRecognize",\n "BaringhausHenzeTest",\n "BarLegend",\n "BarlowProschanImportance",\n "BarnesG",\n "BarOrigin",\n "BarSpacing",\n "BartlettHannWindow",\n "BartlettWindow",\n "BaseDecode",\n "BaseEncode",\n "BaseForm",\n "Baseline",\n "BaselinePosition",\n "BaseStyle",\n "BasicRecurrentLayer",\n "BatchNormalizationLayer",\n "BatchSize",\n "BatesDistribution",\n "BattleLemarieWavelet",\n "BayesianMaximization",\n "BayesianMaximizationObject",\n "BayesianMinimization",\n "BayesianMinimizationObject",\n "Because",\n "BeckmannDistribution",\n "Beep",\n "Before",\n "Begin",\n "BeginDialogPacket",\n "BeginPackage",\n "BellB",\n "BellY",\n "Below",\n "BenfordDistribution",\n "BeniniDistribution",\n "BenktanderGibratDistribution",\n "BenktanderWeibullDistribution",\n "BernoulliB",\n "BernoulliDistribution",\n "BernoulliGraphDistribution",\n "BernoulliProcess",\n "BernsteinBasis",\n "BesagL",\n "BesselFilterModel",\n "BesselI",\n "BesselJ",\n "BesselJZero",\n "BesselK",\n "BesselY",\n "BesselYZero",\n "Beta",\n "BetaBinomialDistribution",\n "BetaDistribution",\n "BetaNegativeBinomialDistribution",\n "BetaPrimeDistribution",\n "BetaRegularized",\n "Between",\n "BetweennessCentrality",\n "Beveled",\n "BeveledPolyhedron",\n "BezierCurve",\n "BezierCurve3DBox",\n "BezierCurve3DBoxOptions",\n "BezierCurveBox",\n "BezierCurveBoxOptions",\n "BezierFunction",\n "BilateralFilter",\n "BilateralLaplaceTransform",\n "BilateralZTransform",\n "Binarize",\n "BinaryDeserialize",\n "BinaryDistance",\n "BinaryFormat",\n "BinaryImageQ",\n "BinaryRead",\n "BinaryReadList",\n "BinarySerialize",\n "BinaryWrite",\n "BinCounts",\n "BinLists",\n "BinnedVariogramList",\n "Binomial",\n "BinomialDistribution",\n "BinomialPointProcess",\n "BinomialProcess",\n "BinormalDistribution",\n "BiorthogonalSplineWavelet",\n "BioSequence",\n "BioSequenceBackTranslateList",\n "BioSequenceComplement",\n "BioSequenceInstances",\n "BioSequenceModify",\n "BioSequencePlot",\n "BioSequenceQ",\n "BioSequenceReverseComplement",\n "BioSequenceTranscribe",\n "BioSequenceTranslate",\n "BipartiteGraphQ",\n "BiquadraticFilterModel",\n "BirnbaumImportance",\n "BirnbaumSaundersDistribution",\n "BitAnd",\n "BitClear",\n "BitGet",\n "BitLength",\n "BitNot",\n "BitOr",\n "BitRate",\n "BitSet",\n "BitShiftLeft",\n "BitShiftRight",\n "BitXor",\n "BiweightLocation",\n "BiweightMidvariance",\n "Black",\n "BlackmanHarrisWindow",\n "BlackmanNuttallWindow",\n "BlackmanWindow",\n "Blank",\n "BlankForm",\n "BlankNullSequence",\n "BlankSequence",\n "Blend",\n "Block",\n "BlockchainAddressData",\n "BlockchainBase",\n "BlockchainBlockData",\n "BlockchainContractValue",\n "BlockchainData",\n "BlockchainGet",\n "BlockchainKeyEncode",\n "BlockchainPut",\n "BlockchainTokenData",\n "BlockchainTransaction",\n "BlockchainTransactionData",\n "BlockchainTransactionSign",\n "BlockchainTransactionSubmit",\n "BlockDiagonalMatrix",\n "BlockLowerTriangularMatrix",\n "BlockMap",\n "BlockRandom",\n "BlockUpperTriangularMatrix",\n "BlomqvistBeta",\n "BlomqvistBetaTest",\n "Blue",\n "Blur",\n "Blurring",\n "BodePlot",\n "BohmanWindow",\n "Bold",\n "Bond",\n "BondCount",\n "BondLabels",\n "BondLabelStyle",\n "BondList",\n "BondQ",\n "Bookmarks",\n "Boole",\n "BooleanConsecutiveFunction",\n "BooleanConvert",\n "BooleanCountingFunction",\n "BooleanFunction",\n "BooleanGraph",\n "BooleanMaxterms",\n "BooleanMinimize",\n "BooleanMinterms",\n "BooleanQ",\n "BooleanRegion",\n "Booleans",\n "BooleanStrings",\n "BooleanTable",\n "BooleanVariables",\n "BorderDimensions",\n "BorelTannerDistribution",\n "Bottom",\n "BottomHatTransform",\n "BoundaryDiscretizeGraphics",\n "BoundaryDiscretizeRegion",\n "BoundaryMesh",\n "BoundaryMeshRegion",\n "BoundaryMeshRegionQ",\n "BoundaryStyle",\n "BoundedRegionQ",\n "BoundingRegion",\n "Bounds",\n "Box",\n "BoxBaselineShift",\n "BoxData",\n "BoxDimensions",\n "Boxed",\n "Boxes",\n "BoxForm",\n "BoxFormFormatTypes",\n "BoxFrame",\n "BoxID",\n "BoxMargins",\n "BoxMatrix",\n "BoxObject",\n "BoxRatios",\n "BoxRotation",\n "BoxRotationPoint",\n "BoxStyle",\n "BoxWhiskerChart",\n "Bra",\n "BracketingBar",\n "BraKet",\n "BrayCurtisDistance",\n "BreadthFirstScan",\n "Break",\n "BridgeData",\n "BrightnessEqualize",\n "BroadcastStationData",\n "Brown",\n "BrownForsytheTest",\n "BrownianBridgeProcess",\n "BrowserCategory",\n "BSplineBasis",\n "BSplineCurve",\n "BSplineCurve3DBox",\n "BSplineCurve3DBoxOptions",\n "BSplineCurveBox",\n "BSplineCurveBoxOptions",\n "BSplineFunction",\n "BSplineSurface",\n "BSplineSurface3DBox",\n "BSplineSurface3DBoxOptions",\n "BubbleChart",\n "BubbleChart3D",\n "BubbleScale",\n "BubbleSizes",\n "BuckyballGraph",\n "BuildCompiledComponent",\n "BuildingData",\n "BulletGauge",\n "BusinessDayQ",\n "ButterflyGraph",\n "ButterworthFilterModel",\n "Button",\n "ButtonBar",\n "ButtonBox",\n "ButtonBoxOptions",\n "ButtonCell",\n "ButtonContents",\n "ButtonData",\n "ButtonEvaluator",\n "ButtonExpandable",\n "ButtonFrame",\n "ButtonFunction",\n "ButtonMargins",\n "ButtonMinHeight",\n "ButtonNote",\n "ButtonNotebook",\n "ButtonSource",\n "ButtonStyle",\n "ButtonStyleMenuListing",\n "Byte",\n "ByteArray",\n "ByteArrayFormat",\n "ByteArrayFormatQ",\n "ByteArrayQ",\n "ByteArrayToString",\n "ByteCount",\n "ByteOrdering",\n "C",\n "CachedValue",\n "CacheGraphics",\n "CachePersistence",\n "CalendarConvert",\n "CalendarData",\n "CalendarType",\n "Callout",\n "CalloutMarker",\n "CalloutStyle",\n "CallPacket",\n "CanberraDistance",\n "Cancel",\n "CancelButton",\n "CandlestickChart",\n "CanonicalGraph",\n "CanonicalizePolygon",\n "CanonicalizePolyhedron",\n "CanonicalizeRegion",\n "CanonicalName",\n "CanonicalWarpingCorrespondence",\n "CanonicalWarpingDistance",\n "CantorMesh",\n "CantorStaircase",\n "Canvas",\n "Cap",\n "CapForm",\n "CapitalDifferentialD",\n "Capitalize",\n "CapsuleShape",\n "CaptureRunning",\n "CaputoD",\n "CardinalBSplineBasis",\n "CarlemanLinearize",\n "CarlsonRC",\n "CarlsonRD",\n "CarlsonRE",\n "CarlsonRF",\n "CarlsonRG",\n "CarlsonRJ",\n "CarlsonRK",\n "CarlsonRM",\n "CarmichaelLambda",\n "CaseOrdering",\n "Cases",\n "CaseSensitive",\n "Cashflow",\n "Casoratian",\n "Cast",\n "Catalan",\n "CatalanNumber",\n "Catch",\n "CategoricalDistribution",\n "Catenate",\n "CatenateLayer",\n "CauchyDistribution",\n "CauchyMatrix",\n "CauchyPointProcess",\n "CauchyWindow",\n "CayleyGraph",\n "CDF",\n "CDFDeploy",\n "CDFInformation",\n "CDFWavelet",\n "Ceiling",\n "CelestialSystem",\n "Cell",\n "CellAutoOverwrite",\n "CellBaseline",\n "CellBoundingBox",\n "CellBracketOptions",\n "CellChangeTimes",\n "CellContents",\n "CellContext",\n "CellDingbat",\n "CellDingbatMargin",\n "CellDynamicExpression",\n "CellEditDuplicate",\n "CellElementsBoundingBox",\n "CellElementSpacings",\n "CellEpilog",\n "CellEvaluationDuplicate",\n "CellEvaluationFunction",\n "CellEvaluationLanguage",\n "CellEventActions",\n "CellFrame",\n "CellFrameColor",\n "CellFrameLabelMargins",\n "CellFrameLabels",\n "CellFrameMargins",\n "CellFrameStyle",\n "CellGroup",\n "CellGroupData",\n "CellGrouping",\n "CellGroupingRules",\n "CellHorizontalScrolling",\n "CellID",\n "CellInsertionPointCell",\n "CellLabel",\n "CellLabelAutoDelete",\n "CellLabelMargins",\n "CellLabelPositioning",\n "CellLabelStyle",\n "CellLabelTemplate",\n "CellMargins",\n "CellObject",\n "CellOpen",\n "CellPrint",\n "CellProlog",\n "Cells",\n "CellSize",\n "CellStyle",\n "CellTags",\n "CellTrayPosition",\n "CellTrayWidgets",\n "CellularAutomaton",\n "CensoredDistribution",\n "Censoring",\n "Center",\n "CenterArray",\n "CenterDot",\n "CenteredInterval",\n "CentralFeature",\n "CentralMoment",\n "CentralMomentGeneratingFunction",\n "Cepstrogram",\n "CepstrogramArray",\n "CepstrumArray",\n "CForm",\n "ChampernowneNumber",\n "ChangeOptions",\n "ChannelBase",\n "ChannelBrokerAction",\n "ChannelDatabin",\n "ChannelHistoryLength",\n "ChannelListen",\n "ChannelListener",\n "ChannelListeners",\n "ChannelListenerWait",\n "ChannelObject",\n "ChannelPreSendFunction",\n "ChannelReceiverFunction",\n "ChannelSend",\n "ChannelSubscribers",\n "ChanVeseBinarize",\n "Character",\n "CharacterCounts",\n "CharacterEncoding",\n "CharacterEncodingsPath",\n "CharacteristicFunction",\n "CharacteristicPolynomial",\n "CharacterName",\n "CharacterNormalize",\n "CharacterRange",\n "Characters",\n "ChartBaseStyle",\n "ChartElementData",\n "ChartElementDataFunction",\n "ChartElementFunction",\n "ChartElements",\n "ChartLabels",\n "ChartLayout",\n "ChartLegends",\n "ChartStyle",\n "Chebyshev1FilterModel",\n "Chebyshev2FilterModel",\n "ChebyshevDistance",\n "ChebyshevT",\n "ChebyshevU",\n "Check",\n "CheckAbort",\n "CheckAll",\n "CheckArguments",\n "Checkbox",\n "CheckboxBar",\n "CheckboxBox",\n "CheckboxBoxOptions",\n "ChemicalConvert",\n "ChemicalData",\n "ChemicalFormula",\n "ChemicalInstance",\n "ChemicalReaction",\n "ChessboardDistance",\n "ChiDistribution",\n "ChineseRemainder",\n "ChiSquareDistribution",\n "ChoiceButtons",\n "ChoiceDialog",\n "CholeskyDecomposition",\n "Chop",\n "ChromaticityPlot",\n "ChromaticityPlot3D",\n "ChromaticPolynomial",\n "Circle",\n "CircleBox",\n "CircleDot",\n "CircleMinus",\n "CirclePlus",\n "CirclePoints",\n "CircleThrough",\n "CircleTimes",\n "CirculantGraph",\n "CircularArcThrough",\n "CircularOrthogonalMatrixDistribution",\n "CircularQuaternionMatrixDistribution",\n "CircularRealMatrixDistribution",\n "CircularSymplecticMatrixDistribution",\n "CircularUnitaryMatrixDistribution",\n "Circumsphere",\n "CityData",\n "ClassifierFunction",\n "ClassifierInformation",\n "ClassifierMeasurements",\n "ClassifierMeasurementsObject",\n "Classify",\n "ClassPriors",\n "Clear",\n "ClearAll",\n "ClearAttributes",\n "ClearCookies",\n "ClearPermissions",\n "ClearSystemCache",\n "ClebschGordan",\n "ClickPane",\n "ClickToCopy",\n "ClickToCopyEnabled",\n "Clip",\n "ClipboardNotebook",\n "ClipFill",\n "ClippingStyle",\n "ClipPlanes",\n "ClipPlanesStyle",\n "ClipRange",\n "Clock",\n "ClockGauge",\n "ClockwiseContourIntegral",\n "Close",\n "Closed",\n "CloseKernels",\n "ClosenessCentrality",\n "Closing",\n "ClosingAutoSave",\n "ClosingEvent",\n "CloudAccountData",\n "CloudBase",\n "CloudConnect",\n "CloudConnections",\n "CloudDeploy",\n "CloudDirectory",\n "CloudDisconnect",\n "CloudEvaluate",\n "CloudExport",\n "CloudExpression",\n "CloudExpressions",\n "CloudFunction",\n "CloudGet",\n "CloudImport",\n "CloudLoggingData",\n "CloudObject",\n "CloudObjectInformation",\n "CloudObjectInformationData",\n "CloudObjectNameFormat",\n "CloudObjects",\n "CloudObjectURLType",\n "CloudPublish",\n "CloudPut",\n "CloudRenderingMethod",\n "CloudSave",\n "CloudShare",\n "CloudSubmit",\n "CloudSymbol",\n "CloudUnshare",\n "CloudUserID",\n "ClusterClassify",\n "ClusterDissimilarityFunction",\n "ClusteringComponents",\n "ClusteringMeasurements",\n "ClusteringTree",\n "CMYKColor",\n "Coarse",\n "CodeAssistOptions",\n "Coefficient",\n "CoefficientArrays",\n "CoefficientDomain",\n "CoefficientList",\n "CoefficientRules",\n "CoifletWavelet",\n "Collect",\n "CollinearPoints",\n "Colon",\n "ColonForm",\n "ColorBalance",\n "ColorCombine",\n "ColorConvert",\n "ColorCoverage",\n "ColorData",\n "ColorDataFunction",\n "ColorDetect",\n "ColorDistance",\n "ColorFunction",\n "ColorFunctionBinning",\n "ColorFunctionScaling",\n "Colorize",\n "ColorNegate",\n "ColorOutput",\n "ColorProfileData",\n "ColorQ",\n "ColorQuantize",\n "ColorReplace",\n "ColorRules",\n "ColorSelectorSettings",\n "ColorSeparate",\n "ColorSetter",\n "ColorSetterBox",\n "ColorSetterBoxOptions",\n "ColorSlider",\n "ColorsNear",\n "ColorSpace",\n "ColorToneMapping",\n "Column",\n "ColumnAlignments",\n "ColumnBackgrounds",\n "ColumnForm",\n "ColumnLines",\n "ColumnsEqual",\n "ColumnSpacings",\n "ColumnWidths",\n "CombinatorB",\n "CombinatorC",\n "CombinatorI",\n "CombinatorK",\n "CombinatorS",\n "CombinatorW",\n "CombinatorY",\n "CombinedEntityClass",\n "CombinerFunction",\n "CometData",\n "CommonDefaultFormatTypes",\n "Commonest",\n "CommonestFilter",\n "CommonName",\n "CommonUnits",\n "CommunityBoundaryStyle",\n "CommunityGraphPlot",\n "CommunityLabels",\n "CommunityRegionStyle",\n "CompanyData",\n "CompatibleUnitQ",\n "CompilationOptions",\n "CompilationTarget",\n "Compile",\n "Compiled",\n "CompiledCodeFunction",\n "CompiledComponent",\n "CompiledExpressionDeclaration",\n "CompiledFunction",\n "CompiledLayer",\n "CompilerCallback",\n "CompilerEnvironment",\n "CompilerEnvironmentAppend",\n "CompilerEnvironmentAppendTo",\n "CompilerEnvironmentObject",\n "CompilerOptions",\n "Complement",\n "ComplementedEntityClass",\n "CompleteGraph",\n "CompleteGraphQ",\n "CompleteIntegral",\n "CompleteKaryTree",\n "CompletionsListPacket",\n "Complex",\n "ComplexArrayPlot",\n "ComplexContourPlot",\n "Complexes",\n "ComplexExpand",\n "ComplexInfinity",\n "ComplexityFunction",\n "ComplexListPlot",\n "ComplexPlot",\n "ComplexPlot3D",\n "ComplexRegionPlot",\n "ComplexStreamPlot",\n "ComplexVectorPlot",\n "ComponentMeasurements",\n "ComponentwiseContextMenu",\n "Compose",\n "ComposeList",\n "ComposeSeries",\n "CompositeQ",\n "Composition",\n "CompoundElement",\n "CompoundExpression",\n "CompoundPoissonDistribution",\n "CompoundPoissonProcess",\n "CompoundRenewalProcess",\n "Compress",\n "CompressedData",\n "CompressionLevel",\n "ComputeUncertainty",\n "ConcaveHullMesh",\n "Condition",\n "ConditionalExpression",\n "Conditioned",\n "Cone",\n "ConeBox",\n "ConfidenceLevel",\n "ConfidenceRange",\n "ConfidenceTransform",\n "ConfigurationPath",\n "Confirm",\n "ConfirmAssert",\n "ConfirmBy",\n "ConfirmMatch",\n "ConfirmQuiet",\n "ConformationMethod",\n "ConformAudio",\n "ConformImages",\n "Congruent",\n "ConicGradientFilling",\n "ConicHullRegion",\n "ConicHullRegion3DBox",\n "ConicHullRegion3DBoxOptions",\n "ConicHullRegionBox",\n "ConicHullRegionBoxOptions",\n "ConicOptimization",\n "Conjugate",\n "ConjugateTranspose",\n "Conjunction",\n "Connect",\n "ConnectedComponents",\n "ConnectedGraphComponents",\n "ConnectedGraphQ",\n "ConnectedMeshComponents",\n "ConnectedMoleculeComponents",\n "ConnectedMoleculeQ",\n "ConnectionSettings",\n "ConnectLibraryCallbackFunction",\n "ConnectSystemModelComponents",\n "ConnectSystemModelController",\n "ConnesWindow",\n "ConoverTest",\n "ConservativeConvectionPDETerm",\n "ConsoleMessage",\n "Constant",\n "ConstantArray",\n "ConstantArrayLayer",\n "ConstantImage",\n "ConstantPlusLayer",\n "ConstantRegionQ",\n "Constants",\n "ConstantTimesLayer",\n "ConstellationData",\n "ConstrainedMax",\n "ConstrainedMin",\n "Construct",\n "Containing",\n "ContainsAll",\n "ContainsAny",\n "ContainsExactly",\n "ContainsNone",\n "ContainsOnly",\n "ContentDetectorFunction",\n "ContentFieldOptions",\n "ContentLocationFunction",\n "ContentObject",\n "ContentPadding",\n "ContentsBoundingBox",\n "ContentSelectable",\n "ContentSize",\n "Context",\n "ContextMenu",\n "Contexts",\n "ContextToFileName",\n "Continuation",\n "Continue",\n "ContinuedFraction",\n "ContinuedFractionK",\n "ContinuousAction",\n "ContinuousMarkovProcess",\n "ContinuousTask",\n "ContinuousTimeModelQ",\n "ContinuousWaveletData",\n "ContinuousWaveletTransform",\n "ContourDetect",\n "ContourGraphics",\n "ContourIntegral",\n "ContourLabels",\n "ContourLines",\n "ContourPlot",\n "ContourPlot3D",\n "Contours",\n "ContourShading",\n "ContourSmoothing",\n "ContourStyle",\n "ContraharmonicMean",\n "ContrastiveLossLayer",\n "Control",\n "ControlActive",\n "ControlAlignment",\n "ControlGroupContentsBox",\n "ControllabilityGramian",\n "ControllabilityMatrix",\n "ControllableDecomposition",\n "ControllableModelQ",\n "ControllerDuration",\n "ControllerInformation",\n "ControllerInformationData",\n "ControllerLinking",\n "ControllerManipulate",\n "ControllerMethod",\n "ControllerPath",\n "ControllerState",\n "ControlPlacement",\n "ControlsRendering",\n "ControlType",\n "ConvectionPDETerm",\n "Convergents",\n "ConversionOptions",\n "ConversionRules",\n "ConvertToPostScript",\n "ConvertToPostScriptPacket",\n "ConvexHullMesh",\n "ConvexHullRegion",\n "ConvexOptimization",\n "ConvexPolygonQ",\n "ConvexPolyhedronQ",\n "ConvexRegionQ",\n "ConvolutionLayer",\n "Convolve",\n "ConwayGroupCo1",\n "ConwayGroupCo2",\n "ConwayGroupCo3",\n "CookieFunction",\n "Cookies",\n "CoordinateBoundingBox",\n "CoordinateBoundingBoxArray",\n "CoordinateBounds",\n "CoordinateBoundsArray",\n "CoordinateChartData",\n "CoordinatesToolOptions",\n "CoordinateTransform",\n "CoordinateTransformData",\n "CoplanarPoints",\n "CoprimeQ",\n "Coproduct",\n "CopulaDistribution",\n "Copyable",\n "CopyDatabin",\n "CopyDirectory",\n "CopyFile",\n "CopyFunction",\n "CopyTag",\n "CopyToClipboard",\n "CoreNilpotentDecomposition",\n "CornerFilter",\n "CornerNeighbors",\n "Correlation",\n "CorrelationDistance",\n "CorrelationFunction",\n "CorrelationTest",\n "Cos",\n "Cosh",\n "CoshIntegral",\n "CosineDistance",\n "CosineWindow",\n "CosIntegral",\n "Cot",\n "Coth",\n "CoulombF",\n "CoulombG",\n "CoulombH1",\n "CoulombH2",\n "Count",\n "CountDistinct",\n "CountDistinctBy",\n "CounterAssignments",\n "CounterBox",\n "CounterBoxOptions",\n "CounterClockwiseContourIntegral",\n "CounterEvaluator",\n "CounterFunction",\n "CounterIncrements",\n "CounterStyle",\n "CounterStyleMenuListing",\n "CountRoots",\n "CountryData",\n "Counts",\n "CountsBy",\n "Covariance",\n "CovarianceEstimatorFunction",\n "CovarianceFunction",\n "CoxianDistribution",\n "CoxIngersollRossProcess",\n "CoxModel",\n "CoxModelFit",\n "CramerVonMisesTest",\n "CreateArchive",\n "CreateCellID",\n "CreateChannel",\n "CreateCloudExpression",\n "CreateCompilerEnvironment",\n "CreateDatabin",\n "CreateDataStructure",\n "CreateDataSystemModel",\n "CreateDialog",\n "CreateDirectory",\n "CreateDocument",\n "CreateFile",\n "CreateIntermediateDirectories",\n "CreateLicenseEntitlement",\n "CreateManagedLibraryExpression",\n "CreateNotebook",\n "CreatePacletArchive",\n "CreatePalette",\n "CreatePermissionsGroup",\n "CreateScheduledTask",\n "CreateSearchIndex",\n "CreateSystemModel",\n "CreateTemporary",\n "CreateTypeInstance",\n "CreateUUID",\n "CreateWindow",\n "CriterionFunction",\n "CriticalityFailureImportance",\n "CriticalitySuccessImportance",\n "CriticalSection",\n "Cross",\n "CrossEntropyLossLayer",\n "CrossingCount",\n "CrossingDetect",\n "CrossingPolygon",\n "CrossMatrix",\n "Csc",\n "Csch",\n "CSGRegion",\n "CSGRegionQ",\n "CSGRegionTree",\n "CTCLossLayer",\n "Cube",\n "CubeRoot",\n "Cubics",\n "Cuboid",\n "CuboidBox",\n "CuboidBoxOptions",\n "Cumulant",\n "CumulantGeneratingFunction",\n "CumulativeFeatureImpactPlot",\n "Cup",\n "CupCap",\n "Curl",\n "CurlyDoubleQuote",\n "CurlyQuote",\n "CurrencyConvert",\n "CurrentDate",\n "CurrentImage",\n "CurrentNotebookImage",\n "CurrentScreenImage",\n "CurrentValue",\n "Curry",\n "CurryApplied",\n "CurvatureFlowFilter",\n "CurveClosed",\n "Cyan",\n "CycleGraph",\n "CycleIndexPolynomial",\n "Cycles",\n "CyclicGroup",\n "Cyclotomic",\n "Cylinder",\n "CylinderBox",\n "CylinderBoxOptions",\n "CylindricalDecomposition",\n "CylindricalDecompositionFunction",\n "D",\n "DagumDistribution",\n "DamData",\n "DamerauLevenshteinDistance",\n "DampingFactor",\n "Darker",\n "Dashed",\n "Dashing",\n "DatabaseConnect",\n "DatabaseDisconnect",\n "DatabaseReference",\n "Databin",\n "DatabinAdd",\n "DatabinRemove",\n "Databins",\n "DatabinSubmit",\n "DatabinUpload",\n "DataCompression",\n "DataDistribution",\n "DataRange",\n "DataReversed",\n "Dataset",\n "DatasetDisplayPanel",\n "DatasetTheme",\n "DataStructure",\n "DataStructureQ",\n "Date",\n "DateBounds",\n "Dated",\n "DateDelimiters",\n "DateDifference",\n "DatedUnit",\n "DateFormat",\n "DateFunction",\n "DateGranularity",\n "DateHistogram",\n "DateInterval",\n "DateList",\n "DateListLogPlot",\n "DateListPlot",\n "DateListStepPlot",\n "DateObject",\n "DateObjectQ",\n "DateOverlapsQ",\n "DatePattern",\n "DatePlus",\n "DateRange",\n "DateReduction",\n "DateScale",\n "DateSelect",\n "DateString",\n "DateTicksFormat",\n "DateValue",\n "DateWithinQ",\n "DaubechiesWavelet",\n "DavisDistribution",\n "DawsonF",\n "DayCount",\n "DayCountConvention",\n "DayHemisphere",\n "DaylightQ",\n "DayMatchQ",\n "DayName",\n "DayNightTerminator",\n "DayPlus",\n "DayRange",\n "DayRound",\n "DeBruijnGraph",\n "DeBruijnSequence",\n "Debug",\n "DebugTag",\n "Decapitalize",\n "Decimal",\n "DecimalForm",\n "DeclareCompiledComponent",\n "DeclareKnownSymbols",\n "DeclarePackage",\n "Decompose",\n "DeconvolutionLayer",\n "Decrement",\n "Decrypt",\n "DecryptFile",\n "DedekindEta",\n "DeepSpaceProbeData",\n "Default",\n "Default2DTool",\n "Default3DTool",\n "DefaultAttachedCellStyle",\n "DefaultAxesStyle",\n "DefaultBaseStyle",\n "DefaultBoxStyle",\n "DefaultButton",\n "DefaultColor",\n "DefaultControlPlacement",\n "DefaultDockedCellStyle",\n "DefaultDuplicateCellStyle",\n "DefaultDuration",\n "DefaultElement",\n "DefaultFaceGridsStyle",\n "DefaultFieldHintStyle",\n "DefaultFont",\n "DefaultFontProperties",\n "DefaultFormatType",\n "DefaultFrameStyle",\n "DefaultFrameTicksStyle",\n "DefaultGridLinesStyle",\n "DefaultInlineFormatType",\n "DefaultInputFormatType",\n "DefaultLabelStyle",\n "DefaultMenuStyle",\n "DefaultNaturalLanguage",\n "DefaultNewCellStyle",\n "DefaultNewInlineCellStyle",\n "DefaultNotebook",\n "DefaultOptions",\n "DefaultOutputFormatType",\n "DefaultPrintPrecision",\n "DefaultStyle",\n "DefaultStyleDefinitions",\n "DefaultTextFormatType",\n "DefaultTextInlineFormatType",\n "DefaultTicksStyle",\n "DefaultTooltipStyle",\n "DefaultValue",\n "DefaultValues",\n "Defer",\n "DefineExternal",\n "DefineInputStreamMethod",\n "DefineOutputStreamMethod",\n "DefineResourceFunction",\n "Definition",\n "Degree",\n "DegreeCentrality",\n "DegreeGraphDistribution",\n "DegreeLexicographic",\n "DegreeReverseLexicographic",\n "DEigensystem",\n "DEigenvalues",\n "Deinitialization",\n "Del",\n "DelaunayMesh",\n "Delayed",\n "Deletable",\n "Delete",\n "DeleteAdjacentDuplicates",\n "DeleteAnomalies",\n "DeleteBorderComponents",\n "DeleteCases",\n "DeleteChannel",\n "DeleteCloudExpression",\n "DeleteContents",\n "DeleteDirectory",\n "DeleteDuplicates",\n "DeleteDuplicatesBy",\n "DeleteElements",\n "DeleteFile",\n "DeleteMissing",\n "DeleteObject",\n "DeletePermissionsKey",\n "DeleteSearchIndex",\n "DeleteSmallComponents",\n "DeleteStopwords",\n "DeleteWithContents",\n "DeletionWarning",\n "DelimitedArray",\n "DelimitedSequence",\n "Delimiter",\n "DelimiterAutoMatching",\n "DelimiterFlashTime",\n "DelimiterMatching",\n "Delimiters",\n "DeliveryFunction",\n "Dendrogram",\n "Denominator",\n "DensityGraphics",\n "DensityHistogram",\n "DensityPlot",\n "DensityPlot3D",\n "DependentVariables",\n "Deploy",\n "Deployed",\n "Depth",\n "DepthFirstScan",\n "Derivative",\n "DerivativeFilter",\n "DerivativePDETerm",\n "DerivedKey",\n "DescriptorStateSpace",\n "DesignMatrix",\n "DestroyAfterEvaluation",\n "Det",\n "DeviceClose",\n "DeviceConfigure",\n "DeviceExecute",\n "DeviceExecuteAsynchronous",\n "DeviceObject",\n "DeviceOpen",\n "DeviceOpenQ",\n "DeviceRead",\n "DeviceReadBuffer",\n "DeviceReadLatest",\n "DeviceReadList",\n "DeviceReadTimeSeries",\n "Devices",\n "DeviceStreams",\n "DeviceWrite",\n "DeviceWriteBuffer",\n "DGaussianWavelet",\n "DiacriticalPositioning",\n "Diagonal",\n "DiagonalizableMatrixQ",\n "DiagonalMatrix",\n "DiagonalMatrixQ",\n "Dialog",\n "DialogIndent",\n "DialogInput",\n "DialogLevel",\n "DialogNotebook",\n "DialogProlog",\n "DialogReturn",\n "DialogSymbols",\n "Diamond",\n "DiamondMatrix",\n "DiceDissimilarity",\n "DictionaryLookup",\n "DictionaryWordQ",\n "DifferenceDelta",\n "DifferenceOrder",\n "DifferenceQuotient",\n "DifferenceRoot",\n "DifferenceRootReduce",\n "Differences",\n "DifferentialD",\n "DifferentialRoot",\n "DifferentialRootReduce",\n "DifferentiatorFilter",\n "DiffusionPDETerm",\n "DiggleGatesPointProcess",\n "DiggleGrattonPointProcess",\n "DigitalSignature",\n "DigitBlock",\n "DigitBlockMinimum",\n "DigitCharacter",\n "DigitCount",\n "DigitQ",\n "DihedralAngle",\n "DihedralGroup",\n "Dilation",\n "DimensionalCombinations",\n "DimensionalMeshComponents",\n "DimensionReduce",\n "DimensionReducerFunction",\n "DimensionReduction",\n "Dimensions",\n "DiracComb",\n "DiracDelta",\n "DirectedEdge",\n "DirectedEdges",\n "DirectedGraph",\n "DirectedGraphQ",\n "DirectedInfinity",\n "Direction",\n "DirectionalLight",\n "Directive",\n "Directory",\n "DirectoryName",\n "DirectoryQ",\n "DirectoryStack",\n "DirichletBeta",\n "DirichletCharacter",\n "DirichletCondition",\n "DirichletConvolve",\n "DirichletDistribution",\n "DirichletEta",\n "DirichletL",\n "DirichletLambda",\n "DirichletTransform",\n "DirichletWindow",\n "DisableConsolePrintPacket",\n "DisableFormatting",\n "DiscreteAsymptotic",\n "DiscreteChirpZTransform",\n "DiscreteConvolve",\n "DiscreteDelta",\n "DiscreteHadamardTransform",\n "DiscreteIndicator",\n "DiscreteInputOutputModel",\n "DiscreteLimit",\n "DiscreteLQEstimatorGains",\n "DiscreteLQRegulatorGains",\n "DiscreteLyapunovSolve",\n "DiscreteMarkovProcess",\n "DiscreteMaxLimit",\n "DiscreteMinLimit",\n "DiscretePlot",\n "DiscretePlot3D",\n "DiscreteRatio",\n "DiscreteRiccatiSolve",\n "DiscreteShift",\n "DiscreteTimeModelQ",\n "DiscreteUniformDistribution",\n "DiscreteVariables",\n "DiscreteWaveletData",\n "DiscreteWaveletPacketTransform",\n "DiscreteWaveletTransform",\n "DiscretizeGraphics",\n "DiscretizeRegion",\n "Discriminant",\n "DisjointQ",\n "Disjunction",\n "Disk",\n "DiskBox",\n "DiskBoxOptions",\n "DiskMatrix",\n "DiskSegment",\n "Dispatch",\n "DispatchQ",\n "DispersionEstimatorFunction",\n "Display",\n "DisplayAllSteps",\n "DisplayEndPacket",\n "DisplayForm",\n "DisplayFunction",\n "DisplayPacket",\n "DisplayRules",\n "DisplayString",\n "DisplayTemporary",\n "DisplayWith",\n "DisplayWithRef",\n "DisplayWithVariable",\n "DistanceFunction",\n "DistanceMatrix",\n "DistanceTransform",\n "Distribute",\n "Distributed",\n "DistributedContexts",\n "DistributeDefinitions",\n "DistributionChart",\n "DistributionDomain",\n "DistributionFitTest",\n "DistributionParameterAssumptions",\n "DistributionParameterQ",\n "Dithering",\n "Div",\n "Divergence",\n "Divide",\n "DivideBy",\n "Dividers",\n "DivideSides",\n "Divisible",\n "Divisors",\n "DivisorSigma",\n "DivisorSum",\n "DMSList",\n "DMSString",\n "Do",\n "DockedCell",\n "DockedCells",\n "DocumentGenerator",\n "DocumentGeneratorInformation",\n "DocumentGeneratorInformationData",\n "DocumentGenerators",\n "DocumentNotebook",\n "DocumentWeightingRules",\n "Dodecahedron",\n "DomainRegistrationInformation",\n "DominantColors",\n "DominatorTreeGraph",\n "DominatorVertexList",\n "DOSTextFormat",\n "Dot",\n "DotDashed",\n "DotEqual",\n "DotLayer",\n "DotPlusLayer",\n "Dotted",\n "DoubleBracketingBar",\n "DoubleContourIntegral",\n "DoubleDownArrow",\n "DoubleLeftArrow",\n "DoubleLeftRightArrow",\n "DoubleLeftTee",\n "DoubleLongLeftArrow",\n "DoubleLongLeftRightArrow",\n "DoubleLongRightArrow",\n "DoubleRightArrow",\n "DoubleRightTee",\n "DoubleUpArrow",\n "DoubleUpDownArrow",\n "DoubleVerticalBar",\n "DoublyInfinite",\n "Down",\n "DownArrow",\n "DownArrowBar",\n "DownArrowUpArrow",\n "DownLeftRightVector",\n "DownLeftTeeVector",\n "DownLeftVector",\n "DownLeftVectorBar",\n "DownRightTeeVector",\n "DownRightVector",\n "DownRightVectorBar",\n "Downsample",\n "DownTee",\n "DownTeeArrow",\n "DownValues",\n "DownValuesFunction",\n "DragAndDrop",\n "DrawBackFaces",\n "DrawEdges",\n "DrawFrontFaces",\n "DrawHighlighted",\n "DrazinInverse",\n "Drop",\n "DropoutLayer",\n "DropShadowing",\n "DSolve",\n "DSolveChangeVariables",\n "DSolveValue",\n "Dt",\n "DualLinearProgramming",\n "DualPlanarGraph",\n "DualPolyhedron",\n "DualSystemsModel",\n "DumpGet",\n "DumpSave",\n "DuplicateFreeQ",\n "Duration",\n "Dynamic",\n "DynamicBox",\n "DynamicBoxOptions",\n "DynamicEvaluationTimeout",\n "DynamicGeoGraphics",\n "DynamicImage",\n "DynamicLocation",\n "DynamicModule",\n "DynamicModuleBox",\n "DynamicModuleBoxOptions",\n "DynamicModuleParent",\n "DynamicModuleValues",\n "DynamicName",\n "DynamicNamespace",\n "DynamicReference",\n "DynamicSetting",\n "DynamicUpdating",\n "DynamicWrapper",\n "DynamicWrapperBox",\n "DynamicWrapperBoxOptions",\n "E",\n "EarthImpactData",\n "EarthquakeData",\n "EccentricityCentrality",\n "Echo",\n "EchoEvaluation",\n "EchoFunction",\n "EchoLabel",\n "EchoTiming",\n "EclipseType",\n "EdgeAdd",\n "EdgeBetweennessCentrality",\n "EdgeCapacity",\n "EdgeCapForm",\n "EdgeChromaticNumber",\n "EdgeColor",\n "EdgeConnectivity",\n "EdgeContract",\n "EdgeCost",\n "EdgeCount",\n "EdgeCoverQ",\n "EdgeCycleMatrix",\n "EdgeDashing",\n "EdgeDelete",\n "EdgeDetect",\n "EdgeForm",\n "EdgeIndex",\n "EdgeJoinForm",\n "EdgeLabeling",\n "EdgeLabels",\n "EdgeLabelStyle",\n "EdgeList",\n "EdgeOpacity",\n "EdgeQ",\n "EdgeRenderingFunction",\n "EdgeRules",\n "EdgeShapeFunction",\n "EdgeStyle",\n "EdgeTaggedGraph",\n "EdgeTaggedGraphQ",\n "EdgeTags",\n "EdgeThickness",\n "EdgeTransitiveGraphQ",\n "EdgeValueRange",\n "EdgeValueSizes",\n "EdgeWeight",\n "EdgeWeightedGraphQ",\n "Editable",\n "EditButtonSettings",\n "EditCellTagsSettings",\n "EditDistance",\n "EffectiveInterest",\n "Eigensystem",\n "Eigenvalues",\n "EigenvectorCentrality",\n "Eigenvectors",\n "Element",\n "ElementData",\n "ElementwiseLayer",\n "ElidedForms",\n "Eliminate",\n "EliminationOrder",\n "Ellipsoid",\n "EllipticE",\n "EllipticExp",\n "EllipticExpPrime",\n "EllipticF",\n "EllipticFilterModel",\n "EllipticK",\n "EllipticLog",\n "EllipticNomeQ",\n "EllipticPi",\n "EllipticReducedHalfPeriods",\n "EllipticTheta",\n "EllipticThetaPrime",\n "EmbedCode",\n "EmbeddedHTML",\n "EmbeddedService",\n "EmbeddedSQLEntityClass",\n "EmbeddedSQLExpression",\n "EmbeddingLayer",\n "EmbeddingObject",\n "EmitSound",\n "EmphasizeSyntaxErrors",\n "EmpiricalDistribution",\n "Empty",\n "EmptyGraphQ",\n "EmptyRegion",\n "EmptySpaceF",\n "EnableConsolePrintPacket",\n "Enabled",\n "Enclose",\n "Encode",\n "Encrypt",\n "EncryptedObject",\n "EncryptFile",\n "End",\n "EndAdd",\n "EndDialogPacket",\n "EndOfBuffer",\n "EndOfFile",\n "EndOfLine",\n "EndOfString",\n "EndPackage",\n "EngineEnvironment",\n "EngineeringForm",\n "Enter",\n "EnterExpressionPacket",\n "EnterTextPacket",\n "Entity",\n "EntityClass",\n "EntityClassList",\n "EntityCopies",\n "EntityFunction",\n "EntityGroup",\n "EntityInstance",\n "EntityList",\n "EntityPrefetch",\n "EntityProperties",\n "EntityProperty",\n "EntityPropertyClass",\n "EntityRegister",\n "EntityStore",\n "EntityStores",\n "EntityTypeName",\n "EntityUnregister",\n "EntityValue",\n "Entropy",\n "EntropyFilter",\n "Environment",\n "Epilog",\n "EpilogFunction",\n "Equal",\n "EqualColumns",\n "EqualRows",\n "EqualTilde",\n "EqualTo",\n "EquatedTo",\n "Equilibrium",\n "EquirippleFilterKernel",\n "Equivalent",\n "Erf",\n "Erfc",\n "Erfi",\n "ErlangB",\n "ErlangC",\n "ErlangDistribution",\n "Erosion",\n "ErrorBox",\n "ErrorBoxOptions",\n "ErrorNorm",\n "ErrorPacket",\n "ErrorsDialogSettings",\n "EscapeRadius",\n "EstimatedBackground",\n "EstimatedDistribution",\n "EstimatedPointNormals",\n "EstimatedPointProcess",\n "EstimatedProcess",\n "EstimatedVariogramModel",\n "EstimatorGains",\n "EstimatorRegulator",\n "EuclideanDistance",\n "EulerAngles",\n "EulerCharacteristic",\n "EulerE",\n "EulerGamma",\n "EulerianGraphQ",\n "EulerMatrix",\n "EulerPhi",\n "Evaluatable",\n "Evaluate",\n "Evaluated",\n "EvaluatePacket",\n "EvaluateScheduledTask",\n "EvaluationBox",\n "EvaluationCell",\n "EvaluationCompletionAction",\n "EvaluationData",\n "EvaluationElements",\n "EvaluationEnvironment",\n "EvaluationMode",\n "EvaluationMonitor",\n "EvaluationNotebook",\n "EvaluationObject",\n "EvaluationOrder",\n "EvaluationPrivileges",\n "EvaluationRateLimit",\n "Evaluator",\n "EvaluatorNames",\n "EvenQ",\n "EventData",\n "EventEvaluator",\n "EventHandler",\n "EventHandlerTag",\n "EventLabels",\n "EventSeries",\n "ExactBlackmanWindow",\n "ExactNumberQ",\n "ExactRootIsolation",\n "ExampleData",\n "Except",\n "ExcludedContexts",\n "ExcludedForms",\n "ExcludedLines",\n "ExcludedPhysicalQuantities",\n "ExcludePods",\n "Exclusions",\n "ExclusionsStyle",\n "Exists",\n "Exit",\n "ExitDialog",\n "ExoplanetData",\n "Exp",\n "Expand",\n "ExpandAll",\n "ExpandDenominator",\n "ExpandFileName",\n "ExpandNumerator",\n "Expectation",\n "ExpectationE",\n "ExpectedValue",\n "ExpGammaDistribution",\n "ExpIntegralE",\n "ExpIntegralEi",\n "ExpirationDate",\n "Exponent",\n "ExponentFunction",\n "ExponentialDistribution",\n "ExponentialFamily",\n "ExponentialGeneratingFunction",\n "ExponentialMovingAverage",\n "ExponentialPowerDistribution",\n "ExponentPosition",\n "ExponentStep",\n "Export",\n "ExportAutoReplacements",\n "ExportByteArray",\n "ExportForm",\n "ExportPacket",\n "ExportString",\n "Expression",\n "ExpressionCell",\n "ExpressionGraph",\n "ExpressionPacket",\n "ExpressionTree",\n "ExpressionUUID",\n "ExpToTrig",\n "ExtendedEntityClass",\n "ExtendedGCD",\n "Extension",\n "ExtentElementFunction",\n "ExtentMarkers",\n "ExtentSize",\n "ExternalBundle",\n "ExternalCall",\n "ExternalDataCharacterEncoding",\n "ExternalEvaluate",\n "ExternalFunction",\n "ExternalFunctionName",\n "ExternalIdentifier",\n "ExternalObject",\n "ExternalOptions",\n "ExternalSessionObject",\n "ExternalSessions",\n "ExternalStorageBase",\n "ExternalStorageDownload",\n "ExternalStorageGet",\n "ExternalStorageObject",\n "ExternalStoragePut",\n "ExternalStorageUpload",\n "ExternalTypeSignature",\n "ExternalValue",\n "Extract",\n "ExtractArchive",\n "ExtractLayer",\n "ExtractPacletArchive",\n "ExtremeValueDistribution",\n "FaceAlign",\n "FaceForm",\n "FaceGrids",\n "FaceGridsStyle",\n "FaceRecognize",\n "FacialFeatures",\n "Factor",\n "FactorComplete",\n "Factorial",\n "Factorial2",\n "FactorialMoment",\n "FactorialMomentGeneratingFunction",\n "FactorialPower",\n "FactorInteger",\n "FactorList",\n "FactorSquareFree",\n "FactorSquareFreeList",\n "FactorTerms",\n "FactorTermsList",\n "Fail",\n "Failure",\n "FailureAction",\n "FailureDistribution",\n "FailureQ",\n "False",\n "FareySequence",\n "FARIMAProcess",\n "FeatureDistance",\n "FeatureExtract",\n "FeatureExtraction",\n "FeatureExtractor",\n "FeatureExtractorFunction",\n "FeatureImpactPlot",\n "FeatureNames",\n "FeatureNearest",\n "FeatureSpacePlot",\n "FeatureSpacePlot3D",\n "FeatureTypes",\n "FeatureValueDependencyPlot",\n "FeatureValueImpactPlot",\n "FEDisableConsolePrintPacket",\n "FeedbackLinearize",\n "FeedbackSector",\n "FeedbackSectorStyle",\n "FeedbackType",\n "FEEnableConsolePrintPacket",\n "FetalGrowthData",\n "Fibonacci",\n "Fibonorial",\n "FieldCompletionFunction",\n "FieldHint",\n "FieldHintStyle",\n "FieldMasked",\n "FieldSize",\n "File",\n "FileBaseName",\n "FileByteCount",\n "FileConvert",\n "FileDate",\n "FileExistsQ",\n "FileExtension",\n "FileFormat",\n "FileFormatProperties",\n "FileFormatQ",\n "FileHandler",\n "FileHash",\n "FileInformation",\n "FileName",\n "FileNameDepth",\n "FileNameDialogSettings",\n "FileNameDrop",\n "FileNameForms",\n "FileNameJoin",\n "FileNames",\n "FileNameSetter",\n "FileNameSplit",\n "FileNameTake",\n "FileNameToFormatList",\n "FilePrint",\n "FileSize",\n "FileSystemMap",\n "FileSystemScan",\n "FileSystemTree",\n "FileTemplate",\n "FileTemplateApply",\n "FileType",\n "FilledCurve",\n "FilledCurveBox",\n "FilledCurveBoxOptions",\n "FilledTorus",\n "FillForm",\n "Filling",\n "FillingStyle",\n "FillingTransform",\n "FilteredEntityClass",\n "FilterRules",\n "FinancialBond",\n "FinancialData",\n "FinancialDerivative",\n "FinancialIndicator",\n "Find",\n "FindAnomalies",\n "FindArgMax",\n "FindArgMin",\n "FindChannels",\n "FindClique",\n "FindClusters",\n "FindCookies",\n "FindCurvePath",\n "FindCycle",\n "FindDevices",\n "FindDistribution",\n "FindDistributionParameters",\n "FindDivisions",\n "FindEdgeColoring",\n "FindEdgeCover",\n "FindEdgeCut",\n "FindEdgeIndependentPaths",\n "FindEquationalProof",\n "FindEulerianCycle",\n "FindExternalEvaluators",\n "FindFaces",\n "FindFile",\n "FindFit",\n "FindFormula",\n "FindFundamentalCycles",\n "FindGeneratingFunction",\n "FindGeoLocation",\n "FindGeometricConjectures",\n "FindGeometricTransform",\n "FindGraphCommunities",\n "FindGraphIsomorphism",\n "FindGraphPartition",\n "FindHamiltonianCycle",\n "FindHamiltonianPath",\n "FindHiddenMarkovStates",\n "FindImageText",\n "FindIndependentEdgeSet",\n "FindIndependentVertexSet",\n "FindInstance",\n "FindIntegerNullVector",\n "FindIsomers",\n "FindIsomorphicSubgraph",\n "FindKClan",\n "FindKClique",\n "FindKClub",\n "FindKPlex",\n "FindLibrary",\n "FindLinearRecurrence",\n "FindList",\n "FindMatchingColor",\n "FindMaximum",\n "FindMaximumCut",\n "FindMaximumFlow",\n "FindMaxValue",\n "FindMeshDefects",\n "FindMinimum",\n "FindMinimumCostFlow",\n "FindMinimumCut",\n "FindMinValue",\n "FindMoleculeSubstructure",\n "FindPath",\n "FindPeaks",\n "FindPermutation",\n "FindPlanarColoring",\n "FindPointProcessParameters",\n "FindPostmanTour",\n "FindProcessParameters",\n "FindRegionTransform",\n "FindRepeat",\n "FindRoot",\n "FindSequenceFunction",\n "FindSettings",\n "FindShortestPath",\n "FindShortestTour",\n "FindSpanningTree",\n "FindSubgraphIsomorphism",\n "FindSystemModelEquilibrium",\n "FindTextualAnswer",\n "FindThreshold",\n "FindTransientRepeat",\n "FindVertexColoring",\n "FindVertexCover",\n "FindVertexCut",\n "FindVertexIndependentPaths",\n "Fine",\n "FinishDynamic",\n "FiniteAbelianGroupCount",\n "FiniteGroupCount",\n "FiniteGroupData",\n "First",\n "FirstCase",\n "FirstPassageTimeDistribution",\n "FirstPosition",\n "FischerGroupFi22",\n "FischerGroupFi23",\n "FischerGroupFi24Prime",\n "FisherHypergeometricDistribution",\n "FisherRatioTest",\n "FisherZDistribution",\n "Fit",\n "FitAll",\n "FitRegularization",\n "FittedModel",\n "FixedOrder",\n "FixedPoint",\n "FixedPointList",\n "FlashSelection",\n "Flat",\n "FlatShading",\n "Flatten",\n "FlattenAt",\n "FlattenLayer",\n "FlatTopWindow",\n "FlightData",\n "FlipView",\n "Floor",\n "FlowPolynomial",\n "Fold",\n "FoldList",\n "FoldPair",\n "FoldPairList",\n "FoldWhile",\n "FoldWhileList",\n "FollowRedirects",\n "Font",\n "FontColor",\n "FontFamily",\n "FontForm",\n "FontName",\n "FontOpacity",\n "FontPostScriptName",\n "FontProperties",\n "FontReencoding",\n "FontSize",\n "FontSlant",\n "FontSubstitutions",\n "FontTracking",\n "FontVariations",\n "FontWeight",\n "For",\n "ForAll",\n "ForAllType",\n "ForceVersionInstall",\n "Format",\n "FormatRules",\n "FormatType",\n "FormatTypeAutoConvert",\n "FormatValues",\n "FormBox",\n "FormBoxOptions",\n "FormControl",\n "FormFunction",\n "FormLayoutFunction",\n "FormObject",\n "FormPage",\n "FormProtectionMethod",\n "FormTheme",\n "FormulaData",\n "FormulaLookup",\n "FortranForm",\n "Forward",\n "ForwardBackward",\n "ForwardCloudCredentials",\n "Fourier",\n "FourierCoefficient",\n "FourierCosCoefficient",\n "FourierCosSeries",\n "FourierCosTransform",\n "FourierDCT",\n "FourierDCTFilter",\n "FourierDCTMatrix",\n "FourierDST",\n "FourierDSTMatrix",\n "FourierMatrix",\n "FourierParameters",\n "FourierSequenceTransform",\n "FourierSeries",\n "FourierSinCoefficient",\n "FourierSinSeries",\n "FourierSinTransform",\n "FourierTransform",\n "FourierTrigSeries",\n "FoxH",\n "FoxHReduce",\n "FractionalBrownianMotionProcess",\n "FractionalD",\n "FractionalGaussianNoiseProcess",\n "FractionalPart",\n "FractionBox",\n "FractionBoxOptions",\n "FractionLine",\n "Frame",\n "FrameBox",\n "FrameBoxOptions",\n "Framed",\n "FrameInset",\n "FrameLabel",\n "Frameless",\n "FrameListVideo",\n "FrameMargins",\n "FrameRate",\n "FrameStyle",\n "FrameTicks",\n "FrameTicksStyle",\n "FRatioDistribution",\n "FrechetDistribution",\n "FreeQ",\n "FrenetSerretSystem",\n "FrequencySamplingFilterKernel",\n "FresnelC",\n "FresnelF",\n "FresnelG",\n "FresnelS",\n "Friday",\n "FrobeniusNumber",\n "FrobeniusSolve",\n "FromAbsoluteTime",\n "FromCharacterCode",\n "FromCoefficientRules",\n "FromContinuedFraction",\n "FromDate",\n "FromDateString",\n "FromDigits",\n "FromDMS",\n "FromEntity",\n "FromJulianDate",\n "FromLetterNumber",\n "FromPolarCoordinates",\n "FromRawPointer",\n "FromRomanNumeral",\n "FromSphericalCoordinates",\n "FromUnixTime",\n "Front",\n "FrontEndDynamicExpression",\n "FrontEndEventActions",\n "FrontEndExecute",\n "FrontEndObject",\n "FrontEndResource",\n "FrontEndResourceString",\n "FrontEndStackSize",\n "FrontEndToken",\n "FrontEndTokenExecute",\n "FrontEndValueCache",\n "FrontEndVersion",\n "FrontFaceColor",\n "FrontFaceGlowColor",\n "FrontFaceOpacity",\n "FrontFaceSpecularColor",\n "FrontFaceSpecularExponent",\n "FrontFaceSurfaceAppearance",\n "FrontFaceTexture",\n "Full",\n "FullAxes",\n "FullDefinition",\n "FullForm",\n "FullGraphics",\n "FullInformationOutputRegulator",\n "FullOptions",\n "FullRegion",\n "FullSimplify",\n "Function",\n "FunctionAnalytic",\n "FunctionBijective",\n "FunctionCompile",\n "FunctionCompileExport",\n "FunctionCompileExportByteArray",\n "FunctionCompileExportLibrary",\n "FunctionCompileExportString",\n "FunctionContinuous",\n "FunctionConvexity",\n "FunctionDeclaration",\n "FunctionDiscontinuities",\n "FunctionDomain",\n "FunctionExpand",\n "FunctionInjective",\n "FunctionInterpolation",\n "FunctionLayer",\n "FunctionMeromorphic",\n "FunctionMonotonicity",\n "FunctionPeriod",\n "FunctionPoles",\n "FunctionRange",\n "FunctionSign",\n "FunctionSingularities",\n "FunctionSpace",\n "FunctionSurjective",\n "FussellVeselyImportance",\n "GaborFilter",\n "GaborMatrix",\n "GaborWavelet",\n "GainMargins",\n "GainPhaseMargins",\n "GalaxyData",\n "GalleryView",\n "Gamma",\n "GammaDistribution",\n "GammaRegularized",\n "GapPenalty",\n "GARCHProcess",\n "GatedRecurrentLayer",\n "Gather",\n "GatherBy",\n "GaugeFaceElementFunction",\n "GaugeFaceStyle",\n "GaugeFrameElementFunction",\n "GaugeFrameSize",\n "GaugeFrameStyle",\n "GaugeLabels",\n "GaugeMarkers",\n "GaugeStyle",\n "GaussianFilter",\n "GaussianIntegers",\n "GaussianMatrix",\n "GaussianOrthogonalMatrixDistribution",\n "GaussianSymplecticMatrixDistribution",\n "GaussianUnitaryMatrixDistribution",\n "GaussianWindow",\n "GCD",\n "GegenbauerC",\n "General",\n "GeneralizedLinearModelFit",\n "GenerateAsymmetricKeyPair",\n "GenerateConditions",\n "GeneratedAssetFormat",\n "GeneratedAssetLocation",\n "GeneratedCell",\n "GeneratedCellStyles",\n "GeneratedDocumentBinding",\n "GenerateDerivedKey",\n "GenerateDigitalSignature",\n "GenerateDocument",\n "GeneratedParameters",\n "GeneratedQuantityMagnitudes",\n "GenerateFileSignature",\n "GenerateHTTPResponse",\n "GenerateSecuredAuthenticationKey",\n "GenerateSymmetricKey",\n "GeneratingFunction",\n "GeneratorDescription",\n "GeneratorHistoryLength",\n "GeneratorOutputType",\n "Generic",\n "GenericCylindricalDecomposition",\n "GenomeData",\n "GenomeLookup",\n "GeoAntipode",\n "GeoArea",\n "GeoArraySize",\n "GeoBackground",\n "GeoBoundary",\n "GeoBoundingBox",\n "GeoBounds",\n "GeoBoundsRegion",\n "GeoBoundsRegionBoundary",\n "GeoBubbleChart",\n "GeoCenter",\n "GeoCircle",\n "GeoContourPlot",\n "GeoDensityPlot",\n "GeodesicClosing",\n "GeodesicDilation",\n "GeodesicErosion",\n "GeodesicOpening",\n "GeodesicPolyhedron",\n "GeoDestination",\n "GeodesyData",\n "GeoDirection",\n "GeoDisk",\n "GeoDisplacement",\n "GeoDistance",\n "GeoDistanceList",\n "GeoElevationData",\n "GeoEntities",\n "GeoGraphics",\n "GeoGraphPlot",\n "GeoGraphValuePlot",\n "GeogravityModelData",\n "GeoGridDirectionDifference",\n "GeoGridLines",\n "GeoGridLinesStyle",\n "GeoGridPosition",\n "GeoGridRange",\n "GeoGridRangePadding",\n "GeoGridUnitArea",\n "GeoGridUnitDistance",\n "GeoGridVector",\n "GeoGroup",\n "GeoHemisphere",\n "GeoHemisphereBoundary",\n "GeoHistogram",\n "GeoIdentify",\n "GeoImage",\n "GeoLabels",\n "GeoLength",\n "GeoListPlot",\n "GeoLocation",\n "GeologicalPeriodData",\n "GeomagneticModelData",\n "GeoMarker",\n "GeometricAssertion",\n "GeometricBrownianMotionProcess",\n "GeometricDistribution",\n "GeometricMean",\n "GeometricMeanFilter",\n "GeometricOptimization",\n "GeometricScene",\n "GeometricStep",\n "GeometricStylingRules",\n "GeometricTest",\n "GeometricTransformation",\n "GeometricTransformation3DBox",\n "GeometricTransformation3DBoxOptions",\n "GeometricTransformationBox",\n "GeometricTransformationBoxOptions",\n "GeoModel",\n "GeoNearest",\n "GeoOrientationData",\n "GeoPath",\n "GeoPolygon",\n "GeoPosition",\n "GeoPositionENU",\n "GeoPositionXYZ",\n "GeoProjection",\n "GeoProjectionData",\n "GeoRange",\n "GeoRangePadding",\n "GeoRegionValuePlot",\n "GeoResolution",\n "GeoScaleBar",\n "GeoServer",\n "GeoSmoothHistogram",\n "GeoStreamPlot",\n "GeoStyling",\n "GeoStylingImageFunction",\n "GeoVariant",\n "GeoVector",\n "GeoVectorENU",\n "GeoVectorPlot",\n "GeoVectorXYZ",\n "GeoVisibleRegion",\n "GeoVisibleRegionBoundary",\n "GeoWithinQ",\n "GeoZoomLevel",\n "GestureHandler",\n "GestureHandlerTag",\n "Get",\n "GetContext",\n "GetEnvironment",\n "GetFileName",\n "GetLinebreakInformationPacket",\n "GibbsPointProcess",\n "Glaisher",\n "GlobalClusteringCoefficient",\n "GlobalPreferences",\n "GlobalSession",\n "Glow",\n "GoldenAngle",\n "GoldenRatio",\n "GompertzMakehamDistribution",\n "GoochShading",\n "GoodmanKruskalGamma",\n "GoodmanKruskalGammaTest",\n "Goto",\n "GouraudShading",\n "Grad",\n "Gradient",\n "GradientFilter",\n "GradientFittedMesh",\n "GradientOrientationFilter",\n "GrammarApply",\n "GrammarRules",\n "GrammarToken",\n "Graph",\n "Graph3D",\n "GraphAssortativity",\n "GraphAutomorphismGroup",\n "GraphCenter",\n "GraphComplement",\n "GraphData",\n "GraphDensity",\n "GraphDiameter",\n "GraphDifference",\n "GraphDisjointUnion",\n "GraphDistance",\n "GraphDistanceMatrix",\n "GraphEmbedding",\n "GraphHighlight",\n "GraphHighlightStyle",\n "GraphHub",\n "Graphics",\n "Graphics3D",\n "Graphics3DBox",\n "Graphics3DBoxOptions",\n "GraphicsArray",\n "GraphicsBaseline",\n "GraphicsBox",\n "GraphicsBoxOptions",\n "GraphicsColor",\n "GraphicsColumn",\n "GraphicsComplex",\n "GraphicsComplex3DBox",\n "GraphicsComplex3DBoxOptions",\n "GraphicsComplexBox",\n "GraphicsComplexBoxOptions",\n "GraphicsContents",\n "GraphicsData",\n "GraphicsGrid",\n "GraphicsGridBox",\n "GraphicsGroup",\n "GraphicsGroup3DBox",\n "GraphicsGroup3DBoxOptions",\n "GraphicsGroupBox",\n "GraphicsGroupBoxOptions",\n "GraphicsGrouping",\n "GraphicsHighlightColor",\n "GraphicsRow",\n "GraphicsSpacing",\n "GraphicsStyle",\n "GraphIntersection",\n "GraphJoin",\n "GraphLayerLabels",\n "GraphLayers",\n "GraphLayerStyle",\n "GraphLayout",\n "GraphLinkEfficiency",\n "GraphPeriphery",\n "GraphPlot",\n "GraphPlot3D",\n "GraphPower",\n "GraphProduct",\n "GraphPropertyDistribution",\n "GraphQ",\n "GraphRadius",\n "GraphReciprocity",\n "GraphRoot",\n "GraphStyle",\n "GraphSum",\n "GraphTree",\n "GraphUnion",\n "Gray",\n "GrayLevel",\n "Greater",\n "GreaterEqual",\n "GreaterEqualLess",\n "GreaterEqualThan",\n "GreaterFullEqual",\n "GreaterGreater",\n "GreaterLess",\n "GreaterSlantEqual",\n "GreaterThan",\n "GreaterTilde",\n "GreekStyle",\n "Green",\n "GreenFunction",\n "Grid",\n "GridBaseline",\n "GridBox",\n "GridBoxAlignment",\n "GridBoxBackground",\n "GridBoxDividers",\n "GridBoxFrame",\n "GridBoxItemSize",\n "GridBoxItemStyle",\n "GridBoxOptions",\n "GridBoxSpacings",\n "GridCreationSettings",\n "GridDefaultElement",\n "GridElementStyleOptions",\n "GridFrame",\n "GridFrameMargins",\n "GridGraph",\n "GridLines",\n "GridLinesStyle",\n "GridVideo",\n "GroebnerBasis",\n "GroupActionBase",\n "GroupBy",\n "GroupCentralizer",\n "GroupElementFromWord",\n "GroupElementPosition",\n "GroupElementQ",\n "GroupElements",\n "GroupElementToWord",\n "GroupGenerators",\n "Groupings",\n "GroupMultiplicationTable",\n "GroupOpenerColor",\n "GroupOpenerInsideFrame",\n "GroupOrbits",\n "GroupOrder",\n "GroupPageBreakWithin",\n "GroupSetwiseStabilizer",\n "GroupStabilizer",\n "GroupStabilizerChain",\n "GroupTogetherGrouping",\n "GroupTogetherNestedGrouping",\n "GrowCutComponents",\n "Gudermannian",\n "GuidedFilter",\n "GumbelDistribution",\n "HaarWavelet",\n "HadamardMatrix",\n "HalfLine",\n "HalfNormalDistribution",\n "HalfPlane",\n "HalfSpace",\n "HalftoneShading",\n "HamiltonianGraphQ",\n "HammingDistance",\n "HammingWindow",\n "HandlerFunctions",\n "HandlerFunctionsKeys",\n "HankelH1",\n "HankelH2",\n "HankelMatrix",\n "HankelTransform",\n "HannPoissonWindow",\n "HannWindow",\n "HaradaNortonGroupHN",\n "HararyGraph",\n "HardcorePointProcess",\n "HarmonicMean",\n "HarmonicMeanFilter",\n "HarmonicNumber",\n "Hash",\n "HatchFilling",\n "HatchShading",\n "Haversine",\n "HazardFunction",\n "Head",\n "HeadCompose",\n "HeaderAlignment",\n "HeaderBackground",\n "HeaderDisplayFunction",\n "HeaderLines",\n "Headers",\n "HeaderSize",\n "HeaderStyle",\n "Heads",\n "HeatFluxValue",\n "HeatInsulationValue",\n "HeatOutflowValue",\n "HeatRadiationValue",\n "HeatSymmetryValue",\n "HeatTemperatureCondition",\n "HeatTransferPDEComponent",\n "HeatTransferValue",\n "HeavisideLambda",\n "HeavisidePi",\n "HeavisideTheta",\n "HeldGroupHe",\n "HeldPart",\n "HelmholtzPDEComponent",\n "HelpBrowserLookup",\n "HelpBrowserNotebook",\n "HelpBrowserSettings",\n "HelpViewerSettings",\n "Here",\n "HermiteDecomposition",\n "HermiteH",\n "Hermitian",\n "HermitianMatrixQ",\n "HessenbergDecomposition",\n "Hessian",\n "HeunB",\n "HeunBPrime",\n "HeunC",\n "HeunCPrime",\n "HeunD",\n "HeunDPrime",\n "HeunG",\n "HeunGPrime",\n "HeunT",\n "HeunTPrime",\n "HexadecimalCharacter",\n "Hexahedron",\n "HexahedronBox",\n "HexahedronBoxOptions",\n "HiddenItems",\n "HiddenMarkovProcess",\n "HiddenSurface",\n "Highlighted",\n "HighlightGraph",\n "HighlightImage",\n "HighlightMesh",\n "HighlightString",\n "HighpassFilter",\n "HigmanSimsGroupHS",\n "HilbertCurve",\n "HilbertFilter",\n "HilbertMatrix",\n "Histogram",\n "Histogram3D",\n "HistogramDistribution",\n "HistogramList",\n "HistogramPointDensity",\n "HistogramTransform",\n "HistogramTransformInterpolation",\n "HistoricalPeriodData",\n "HitMissTransform",\n "HITSCentrality",\n "HjorthDistribution",\n "HodgeDual",\n "HoeffdingD",\n "HoeffdingDTest",\n "Hold",\n "HoldAll",\n "HoldAllComplete",\n "HoldComplete",\n "HoldFirst",\n "HoldForm",\n "HoldPattern",\n "HoldRest",\n "HolidayCalendar",\n "HomeDirectory",\n "HomePage",\n "Horizontal",\n "HorizontalForm",\n "HorizontalGauge",\n "HorizontalScrollPosition",\n "HornerForm",\n "HostLookup",\n "HotellingTSquareDistribution",\n "HoytDistribution",\n "HTMLSave",\n "HTTPErrorResponse",\n "HTTPRedirect",\n "HTTPRequest",\n "HTTPRequestData",\n "HTTPResponse",\n "Hue",\n "HumanGrowthData",\n "HumpDownHump",\n "HumpEqual",\n "HurwitzLerchPhi",\n "HurwitzZeta",\n "HyperbolicDistribution",\n "HypercubeGraph",\n "HyperexponentialDistribution",\n "Hyperfactorial",\n "Hypergeometric0F1",\n "Hypergeometric0F1Regularized",\n "Hypergeometric1F1",\n "Hypergeometric1F1Regularized",\n "Hypergeometric2F1",\n "Hypergeometric2F1Regularized",\n "HypergeometricDistribution",\n "HypergeometricPFQ",\n "HypergeometricPFQRegularized",\n "HypergeometricU",\n "Hyperlink",\n "HyperlinkAction",\n "HyperlinkCreationSettings",\n "Hyperplane",\n "Hyphenation",\n "HyphenationOptions",\n "HypoexponentialDistribution",\n "HypothesisTestData",\n "I",\n "IconData",\n "Iconize",\n "IconizedObject",\n "IconRules",\n "Icosahedron",\n "Identity",\n "IdentityMatrix",\n "If",\n "IfCompiled",\n "IgnoreCase",\n "IgnoreDiacritics",\n "IgnoreIsotopes",\n "IgnorePunctuation",\n "IgnoreSpellCheck",\n "IgnoreStereochemistry",\n "IgnoringInactive",\n "Im",\n "Image",\n "Image3D",\n "Image3DProjection",\n "Image3DSlices",\n "ImageAccumulate",\n "ImageAdd",\n "ImageAdjust",\n "ImageAlign",\n "ImageApply",\n "ImageApplyIndexed",\n "ImageAspectRatio",\n "ImageAssemble",\n "ImageAugmentationLayer",\n "ImageBoundingBoxes",\n "ImageCache",\n "ImageCacheValid",\n "ImageCapture",\n "ImageCaptureFunction",\n "ImageCases",\n "ImageChannels",\n "ImageClip",\n "ImageCollage",\n "ImageColorSpace",\n "ImageCompose",\n "ImageContainsQ",\n "ImageContents",\n "ImageConvolve",\n "ImageCooccurrence",\n "ImageCorners",\n "ImageCorrelate",\n "ImageCorrespondingPoints",\n "ImageCrop",\n "ImageData",\n "ImageDeconvolve",\n "ImageDemosaic",\n "ImageDifference",\n "ImageDimensions",\n "ImageDisplacements",\n "ImageDistance",\n "ImageEditMode",\n "ImageEffect",\n "ImageExposureCombine",\n "ImageFeatureTrack",\n "ImageFileApply",\n "ImageFileFilter",\n "ImageFileScan",\n "ImageFilter",\n "ImageFocusCombine",\n "ImageForestingComponents",\n "ImageFormattingWidth",\n "ImageForwardTransformation",\n "ImageGraphics",\n "ImageHistogram",\n "ImageIdentify",\n "ImageInstanceQ",\n "ImageKeypoints",\n "ImageLabels",\n "ImageLegends",\n "ImageLevels",\n "ImageLines",\n "ImageMargins",\n "ImageMarker",\n "ImageMarkers",\n "ImageMeasurements",\n "ImageMesh",\n "ImageMultiply",\n "ImageOffset",\n "ImagePad",\n "ImagePadding",\n "ImagePartition",\n "ImagePeriodogram",\n "ImagePerspectiveTransformation",\n "ImagePosition",\n "ImagePreviewFunction",\n "ImagePyramid",\n "ImagePyramidApply",\n "ImageQ",\n "ImageRangeCache",\n "ImageRecolor",\n "ImageReflect",\n "ImageRegion",\n "ImageResize",\n "ImageResolution",\n "ImageRestyle",\n "ImageRotate",\n "ImageRotated",\n "ImageSaliencyFilter",\n "ImageScaled",\n "ImageScan",\n "ImageSize",\n "ImageSizeAction",\n "ImageSizeCache",\n "ImageSizeMultipliers",\n "ImageSizeRaw",\n "ImageStitch",\n "ImageSubtract",\n "ImageTake",\n "ImageTransformation",\n "ImageTrim",\n "ImageType",\n "ImageValue",\n "ImageValuePositions",\n "ImageVectorscopePlot",\n "ImageWaveformPlot",\n "ImagingDevice",\n "ImplicitD",\n "ImplicitRegion",\n "Implies",\n "Import",\n "ImportAutoReplacements",\n "ImportByteArray",\n "ImportedObject",\n "ImportOptions",\n "ImportString",\n "ImprovementImportance",\n "In",\n "Inactivate",\n "Inactive",\n "InactiveStyle",\n "IncidenceGraph",\n "IncidenceList",\n "IncidenceMatrix",\n "IncludeAromaticBonds",\n "IncludeConstantBasis",\n "IncludedContexts",\n "IncludeDefinitions",\n "IncludeDirectories",\n "IncludeFileExtension",\n "IncludeGeneratorTasks",\n "IncludeHydrogens",\n "IncludeInflections",\n "IncludeMetaInformation",\n "IncludePods",\n "IncludeQuantities",\n "IncludeRelatedTables",\n "IncludeSingularSolutions",\n "IncludeSingularTerm",\n "IncludeWindowTimes",\n "Increment",\n "IndefiniteMatrixQ",\n "Indent",\n "IndentingNewlineSpacings",\n "IndentMaxFraction",\n "IndependenceTest",\n "IndependentEdgeSetQ",\n "IndependentPhysicalQuantity",\n "IndependentUnit",\n "IndependentUnitDimension",\n "IndependentVertexSetQ",\n "Indeterminate",\n "IndeterminateThreshold",\n "IndexCreationOptions",\n "Indexed",\n "IndexEdgeTaggedGraph",\n "IndexGraph",\n "IndexTag",\n "Inequality",\n "InertEvaluate",\n "InertExpression",\n "InexactNumberQ",\n "InexactNumbers",\n "InfiniteFuture",\n "InfiniteLine",\n "InfiniteLineThrough",\n "InfinitePast",\n "InfinitePlane",\n "Infinity",\n "Infix",\n "InflationAdjust",\n "InflationMethod",\n "Information",\n "InformationData",\n "InformationDataGrid",\n "Inherited",\n "InheritScope",\n "InhomogeneousPoissonPointProcess",\n "InhomogeneousPoissonProcess",\n "InitialEvaluationHistory",\n "Initialization",\n "InitializationCell",\n "InitializationCellEvaluation",\n "InitializationCellWarning",\n "InitializationObject",\n "InitializationObjects",\n "InitializationValue",\n "Initialize",\n "InitialSeeding",\n "InlineCounterAssignments",\n "InlineCounterIncrements",\n "InlineRules",\n "Inner",\n "InnerPolygon",\n "InnerPolyhedron",\n "Inpaint",\n "Input",\n "InputAliases",\n "InputAssumptions",\n "InputAutoReplacements",\n "InputField",\n "InputFieldBox",\n "InputFieldBoxOptions",\n "InputForm",\n "InputGrouping",\n "InputNamePacket",\n "InputNotebook",\n "InputPacket",\n "InputPorts",\n "InputSettings",\n "InputStream",\n "InputString",\n "InputStringPacket",\n "InputToBoxFormPacket",\n "Insert",\n "InsertionFunction",\n "InsertionPointObject",\n "InsertLinebreaks",\n "InsertResults",\n "Inset",\n "Inset3DBox",\n "Inset3DBoxOptions",\n "InsetBox",\n "InsetBoxOptions",\n "Insphere",\n "Install",\n "InstallService",\n "InstanceNormalizationLayer",\n "InString",\n "Integer",\n "IntegerDigits",\n "IntegerExponent",\n "IntegerLength",\n "IntegerName",\n "IntegerPart",\n "IntegerPartitions",\n "IntegerQ",\n "IntegerReverse",\n "Integers",\n "IntegerString",\n "Integral",\n "Integrate",\n "IntegrateChangeVariables",\n "Interactive",\n "InteractiveTradingChart",\n "InterfaceSwitched",\n "Interlaced",\n "Interleaving",\n "InternallyBalancedDecomposition",\n "InterpolatingFunction",\n "InterpolatingPolynomial",\n "Interpolation",\n "InterpolationOrder",\n "InterpolationPoints",\n "InterpolationPrecision",\n "Interpretation",\n "InterpretationBox",\n "InterpretationBoxOptions",\n "InterpretationFunction",\n "Interpreter",\n "InterpretTemplate",\n "InterquartileRange",\n "Interrupt",\n "InterruptSettings",\n "IntersectedEntityClass",\n "IntersectingQ",\n "Intersection",\n "Interval",\n "IntervalIntersection",\n "IntervalMarkers",\n "IntervalMarkersStyle",\n "IntervalMemberQ",\n "IntervalSlider",\n "IntervalUnion",\n "Into",\n "Inverse",\n "InverseBetaRegularized",\n "InverseBilateralLaplaceTransform",\n "InverseBilateralZTransform",\n "InverseCDF",\n "InverseChiSquareDistribution",\n "InverseContinuousWaveletTransform",\n "InverseDistanceTransform",\n "InverseEllipticNomeQ",\n "InverseErf",\n "InverseErfc",\n "InverseFourier",\n "InverseFourierCosTransform",\n "InverseFourierSequenceTransform",\n "InverseFourierSinTransform",\n "InverseFourierTransform",\n "InverseFunction",\n "InverseFunctions",\n "InverseGammaDistribution",\n "InverseGammaRegularized",\n "InverseGaussianDistribution",\n "InverseGudermannian",\n "InverseHankelTransform",\n "InverseHaversine",\n "InverseImagePyramid",\n "InverseJacobiCD",\n "InverseJacobiCN",\n "InverseJacobiCS",\n "InverseJacobiDC",\n "InverseJacobiDN",\n "InverseJacobiDS",\n "InverseJacobiNC",\n "InverseJacobiND",\n "InverseJacobiNS",\n "InverseJacobiSC",\n "InverseJacobiSD",\n "InverseJacobiSN",\n "InverseLaplaceTransform",\n "InverseMellinTransform",\n "InversePermutation",\n "InverseRadon",\n "InverseRadonTransform",\n "InverseSeries",\n "InverseShortTimeFourier",\n "InverseSpectrogram",\n "InverseSurvivalFunction",\n "InverseTransformedRegion",\n "InverseWaveletTransform",\n "InverseWeierstrassP",\n "InverseWishartMatrixDistribution",\n "InverseZTransform",\n "Invisible",\n "InvisibleApplication",\n "InvisibleTimes",\n "IPAddress",\n "IrreduciblePolynomialQ",\n "IslandData",\n "IsolatingInterval",\n "IsomorphicGraphQ",\n "IsomorphicSubgraphQ",\n "IsotopeData",\n "Italic",\n "Item",\n "ItemAspectRatio",\n "ItemBox",\n "ItemBoxOptions",\n "ItemDisplayFunction",\n "ItemSize",\n "ItemStyle",\n "ItoProcess",\n "JaccardDissimilarity",\n "JacobiAmplitude",\n "Jacobian",\n "JacobiCD",\n "JacobiCN",\n "JacobiCS",\n "JacobiDC",\n "JacobiDN",\n "JacobiDS",\n "JacobiEpsilon",\n "JacobiNC",\n "JacobiND",\n "JacobiNS",\n "JacobiP",\n "JacobiSC",\n "JacobiSD",\n "JacobiSN",\n "JacobiSymbol",\n "JacobiZeta",\n "JacobiZN",\n "JankoGroupJ1",\n "JankoGroupJ2",\n "JankoGroupJ3",\n "JankoGroupJ4",\n "JarqueBeraALMTest",\n "JohnsonDistribution",\n "Join",\n "JoinAcross",\n "Joined",\n "JoinedCurve",\n "JoinedCurveBox",\n "JoinedCurveBoxOptions",\n "JoinForm",\n "JordanDecomposition",\n "JordanModelDecomposition",\n "JulianDate",\n "JuliaSetBoettcher",\n "JuliaSetIterationCount",\n "JuliaSetPlot",\n "JuliaSetPoints",\n "K",\n "KagiChart",\n "KaiserBesselWindow",\n "KaiserWindow",\n "KalmanEstimator",\n "KalmanFilter",\n "KarhunenLoeveDecomposition",\n "KaryTree",\n "KatzCentrality",\n "KCoreComponents",\n "KDistribution",\n "KEdgeConnectedComponents",\n "KEdgeConnectedGraphQ",\n "KeepExistingVersion",\n "KelvinBei",\n "KelvinBer",\n "KelvinKei",\n "KelvinKer",\n "KendallTau",\n "KendallTauTest",\n "KernelConfiguration",\n "KernelExecute",\n "KernelFunction",\n "KernelMixtureDistribution",\n "KernelObject",\n "Kernels",\n "Ket",\n "Key",\n "KeyCollisionFunction",\n "KeyComplement",\n "KeyDrop",\n "KeyDropFrom",\n "KeyExistsQ",\n "KeyFreeQ",\n "KeyIntersection",\n "KeyMap",\n "KeyMemberQ",\n "KeypointStrength",\n "Keys",\n "KeySelect",\n "KeySort",\n "KeySortBy",\n "KeyTake",\n "KeyUnion",\n "KeyValueMap",\n "KeyValuePattern",\n "Khinchin",\n "KillProcess",\n "KirchhoffGraph",\n "KirchhoffMatrix",\n "KleinInvariantJ",\n "KnapsackSolve",\n "KnightTourGraph",\n "KnotData",\n "KnownUnitQ",\n "KochCurve",\n "KolmogorovSmirnovTest",\n "KroneckerDelta",\n "KroneckerModelDecomposition",\n "KroneckerProduct",\n "KroneckerSymbol",\n "KuiperTest",\n "KumaraswamyDistribution",\n "Kurtosis",\n "KuwaharaFilter",\n "KVertexConnectedComponents",\n "KVertexConnectedGraphQ",\n "LABColor",\n "Label",\n "Labeled",\n "LabeledSlider",\n "LabelingFunction",\n "LabelingSize",\n "LabelStyle",\n "LabelVisibility",\n "LaguerreL",\n "LakeData",\n "LambdaComponents",\n "LambertW",\n "LameC",\n "LameCPrime",\n "LameEigenvalueA",\n "LameEigenvalueB",\n "LameS",\n "LameSPrime",\n "LaminaData",\n "LanczosWindow",\n "LandauDistribution",\n "Language",\n "LanguageCategory",\n "LanguageData",\n "LanguageIdentify",\n "LanguageOptions",\n "LaplaceDistribution",\n "LaplaceTransform",\n "Laplacian",\n "LaplacianFilter",\n "LaplacianGaussianFilter",\n "LaplacianPDETerm",\n "Large",\n "Larger",\n "Last",\n "Latitude",\n "LatitudeLongitude",\n "LatticeData",\n "LatticeReduce",\n "Launch",\n "LaunchKernels",\n "LayeredGraphPlot",\n "LayeredGraphPlot3D",\n "LayerSizeFunction",\n "LayoutInformation",\n "LCHColor",\n "LCM",\n "LeaderSize",\n "LeafCount",\n "LeapVariant",\n "LeapYearQ",\n "LearnDistribution",\n "LearnedDistribution",\n "LearningRate",\n "LearningRateMultipliers",\n "LeastSquares",\n "LeastSquaresFilterKernel",\n "Left",\n "LeftArrow",\n "LeftArrowBar",\n "LeftArrowRightArrow",\n "LeftDownTeeVector",\n "LeftDownVector",\n "LeftDownVectorBar",\n "LeftRightArrow",\n "LeftRightVector",\n "LeftTee",\n "LeftTeeArrow",\n "LeftTeeVector",\n "LeftTriangle",\n "LeftTriangleBar",\n "LeftTriangleEqual",\n "LeftUpDownVector",\n "LeftUpTeeVector",\n "LeftUpVector",\n "LeftUpVectorBar",\n "LeftVector",\n "LeftVectorBar",\n "LegendAppearance",\n "Legended",\n "LegendFunction",\n "LegendLabel",\n "LegendLayout",\n "LegendMargins",\n "LegendMarkers",\n "LegendMarkerSize",\n "LegendreP",\n "LegendreQ",\n "LegendreType",\n "Length",\n "LengthWhile",\n "LerchPhi",\n "Less",\n "LessEqual",\n "LessEqualGreater",\n "LessEqualThan",\n "LessFullEqual",\n "LessGreater",\n "LessLess",\n "LessSlantEqual",\n "LessThan",\n "LessTilde",\n "LetterCharacter",\n "LetterCounts",\n "LetterNumber",\n "LetterQ",\n "Level",\n "LeveneTest",\n "LeviCivitaTensor",\n "LevyDistribution",\n "Lexicographic",\n "LexicographicOrder",\n "LexicographicSort",\n "LibraryDataType",\n "LibraryFunction",\n "LibraryFunctionDeclaration",\n "LibraryFunctionError",\n "LibraryFunctionInformation",\n "LibraryFunctionLoad",\n "LibraryFunctionUnload",\n "LibraryLoad",\n "LibraryUnload",\n "LicenseEntitlementObject",\n "LicenseEntitlements",\n "LicenseID",\n "LicensingSettings",\n "LiftingFilterData",\n "LiftingWaveletTransform",\n "LightBlue",\n "LightBrown",\n "LightCyan",\n "Lighter",\n "LightGray",\n "LightGreen",\n "Lighting",\n "LightingAngle",\n "LightMagenta",\n "LightOrange",\n "LightPink",\n "LightPurple",\n "LightRed",\n "LightSources",\n "LightYellow",\n "Likelihood",\n "Limit",\n "LimitsPositioning",\n "LimitsPositioningTokens",\n "LindleyDistribution",\n "Line",\n "Line3DBox",\n "Line3DBoxOptions",\n "LinearFilter",\n "LinearFractionalOptimization",\n "LinearFractionalTransform",\n "LinearGradientFilling",\n "LinearGradientImage",\n "LinearizingTransformationData",\n "LinearLayer",\n "LinearModelFit",\n "LinearOffsetFunction",\n "LinearOptimization",\n "LinearProgramming",\n "LinearRecurrence",\n "LinearSolve",\n "LinearSolveFunction",\n "LineBox",\n "LineBoxOptions",\n "LineBreak",\n "LinebreakAdjustments",\n "LineBreakChart",\n "LinebreakSemicolonWeighting",\n "LineBreakWithin",\n "LineColor",\n "LineGraph",\n "LineIndent",\n "LineIndentMaxFraction",\n "LineIntegralConvolutionPlot",\n "LineIntegralConvolutionScale",\n "LineLegend",\n "LineOpacity",\n "LineSpacing",\n "LineWrapParts",\n "LinkActivate",\n "LinkClose",\n "LinkConnect",\n "LinkConnectedQ",\n "LinkCreate",\n "LinkError",\n "LinkFlush",\n "LinkFunction",\n "LinkHost",\n "LinkInterrupt",\n "LinkLaunch",\n "LinkMode",\n "LinkObject",\n "LinkOpen",\n "LinkOptions",\n "LinkPatterns",\n "LinkProtocol",\n "LinkRankCentrality",\n "LinkRead",\n "LinkReadHeld",\n "LinkReadyQ",\n "Links",\n "LinkService",\n "LinkWrite",\n "LinkWriteHeld",\n "LiouvilleLambda",\n "List",\n "Listable",\n "ListAnimate",\n "ListContourPlot",\n "ListContourPlot3D",\n "ListConvolve",\n "ListCorrelate",\n "ListCurvePathPlot",\n "ListDeconvolve",\n "ListDensityPlot",\n "ListDensityPlot3D",\n "Listen",\n "ListFormat",\n "ListFourierSequenceTransform",\n "ListInterpolation",\n "ListLineIntegralConvolutionPlot",\n "ListLinePlot",\n "ListLinePlot3D",\n "ListLogLinearPlot",\n "ListLogLogPlot",\n "ListLogPlot",\n "ListPicker",\n "ListPickerBox",\n "ListPickerBoxBackground",\n "ListPickerBoxOptions",\n "ListPlay",\n "ListPlot",\n "ListPlot3D",\n "ListPointPlot3D",\n "ListPolarPlot",\n "ListQ",\n "ListSliceContourPlot3D",\n "ListSliceDensityPlot3D",\n "ListSliceVectorPlot3D",\n "ListStepPlot",\n "ListStreamDensityPlot",\n "ListStreamPlot",\n "ListStreamPlot3D",\n "ListSurfacePlot3D",\n "ListVectorDensityPlot",\n "ListVectorDisplacementPlot",\n "ListVectorDisplacementPlot3D",\n "ListVectorPlot",\n "ListVectorPlot3D",\n "ListZTransform",\n "Literal",\n "LiteralSearch",\n "LiteralType",\n "LoadCompiledComponent",\n "LocalAdaptiveBinarize",\n "LocalCache",\n "LocalClusteringCoefficient",\n "LocalEvaluate",\n "LocalizeDefinitions",\n "LocalizeVariables",\n "LocalObject",\n "LocalObjects",\n "LocalResponseNormalizationLayer",\n "LocalSubmit",\n "LocalSymbol",\n "LocalTime",\n "LocalTimeZone",\n "LocationEquivalenceTest",\n "LocationTest",\n "Locator",\n "LocatorAutoCreate",\n "LocatorBox",\n "LocatorBoxOptions",\n "LocatorCentering",\n "LocatorPane",\n "LocatorPaneBox",\n "LocatorPaneBoxOptions",\n "LocatorRegion",\n "Locked",\n "Log",\n "Log10",\n "Log2",\n "LogBarnesG",\n "LogGamma",\n "LogGammaDistribution",\n "LogicalExpand",\n "LogIntegral",\n "LogisticDistribution",\n "LogisticSigmoid",\n "LogitModelFit",\n "LogLikelihood",\n "LogLinearPlot",\n "LogLogisticDistribution",\n "LogLogPlot",\n "LogMultinormalDistribution",\n "LogNormalDistribution",\n "LogPlot",\n "LogRankTest",\n "LogSeriesDistribution",\n "LongEqual",\n "Longest",\n "LongestCommonSequence",\n "LongestCommonSequencePositions",\n "LongestCommonSubsequence",\n "LongestCommonSubsequencePositions",\n "LongestMatch",\n "LongestOrderedSequence",\n "LongForm",\n "Longitude",\n "LongLeftArrow",\n "LongLeftRightArrow",\n "LongRightArrow",\n "LongShortTermMemoryLayer",\n "Lookup",\n "Loopback",\n "LoopFreeGraphQ",\n "Looping",\n "LossFunction",\n "LowerCaseQ",\n "LowerLeftArrow",\n "LowerRightArrow",\n "LowerTriangularize",\n "LowerTriangularMatrix",\n "LowerTriangularMatrixQ",\n "LowpassFilter",\n "LQEstimatorGains",\n "LQGRegulator",\n "LQOutputRegulatorGains",\n "LQRegulatorGains",\n "LUBackSubstitution",\n "LucasL",\n "LuccioSamiComponents",\n "LUDecomposition",\n "LunarEclipse",\n "LUVColor",\n "LyapunovSolve",\n "LyonsGroupLy",\n "MachineID",\n "MachineName",\n "MachineNumberQ",\n "MachinePrecision",\n "MacintoshSystemPageSetup",\n "Magenta",\n "Magnification",\n "Magnify",\n "MailAddressValidation",\n "MailExecute",\n "MailFolder",\n "MailItem",\n "MailReceiverFunction",\n "MailResponseFunction",\n "MailSearch",\n "MailServerConnect",\n "MailServerConnection",\n "MailSettings",\n "MainSolve",\n "MaintainDynamicCaches",\n "Majority",\n "MakeBoxes",\n "MakeExpression",\n "MakeRules",\n "ManagedLibraryExpressionID",\n "ManagedLibraryExpressionQ",\n "MandelbrotSetBoettcher",\n "MandelbrotSetDistance",\n "MandelbrotSetIterationCount",\n "MandelbrotSetMemberQ",\n "MandelbrotSetPlot",\n "MangoldtLambda",\n "ManhattanDistance",\n "Manipulate",\n "Manipulator",\n "MannedSpaceMissionData",\n "MannWhitneyTest",\n "MantissaExponent",\n "Manual",\n "Map",\n "MapAll",\n "MapApply",\n "MapAt",\n "MapIndexed",\n "MAProcess",\n "MapThread",\n "MarchenkoPasturDistribution",\n "MarcumQ",\n "MardiaCombinedTest",\n "MardiaKurtosisTest",\n "MardiaSkewnessTest",\n "MarginalDistribution",\n "MarkovProcessProperties",\n "Masking",\n "MassConcentrationCondition",\n "MassFluxValue",\n "MassImpermeableBoundaryValue",\n "MassOutflowValue",\n "MassSymmetryValue",\n "MassTransferValue",\n "MassTransportPDEComponent",\n "MatchingDissimilarity",\n "MatchLocalNameQ",\n "MatchLocalNames",\n "MatchQ",\n "Material",\n "MaterialShading",\n "MaternPointProcess",\n "MathematicalFunctionData",\n "MathematicaNotation",\n "MathieuC",\n "MathieuCharacteristicA",\n "MathieuCharacteristicB",\n "MathieuCharacteristicExponent",\n "MathieuCPrime",\n "MathieuGroupM11",\n "MathieuGroupM12",\n "MathieuGroupM22",\n "MathieuGroupM23",\n "MathieuGroupM24",\n "MathieuS",\n "MathieuSPrime",\n "MathMLForm",\n "MathMLText",\n "Matrices",\n "MatrixExp",\n "MatrixForm",\n "MatrixFunction",\n "MatrixLog",\n "MatrixNormalDistribution",\n "MatrixPlot",\n "MatrixPower",\n "MatrixPropertyDistribution",\n "MatrixQ",\n "MatrixRank",\n "MatrixTDistribution",\n "Max",\n "MaxBend",\n "MaxCellMeasure",\n "MaxColorDistance",\n "MaxDate",\n "MaxDetect",\n "MaxDisplayedChildren",\n "MaxDuration",\n "MaxExtraBandwidths",\n "MaxExtraConditions",\n "MaxFeatureDisplacement",\n "MaxFeatures",\n "MaxFilter",\n "MaximalBy",\n "Maximize",\n "MaxItems",\n "MaxIterations",\n "MaxLimit",\n "MaxMemoryUsed",\n "MaxMixtureKernels",\n "MaxOverlapFraction",\n "MaxPlotPoints",\n "MaxPoints",\n "MaxRecursion",\n "MaxStableDistribution",\n "MaxStepFraction",\n "MaxSteps",\n "MaxStepSize",\n "MaxTrainingRounds",\n "MaxValue",\n "MaxwellDistribution",\n "MaxWordGap",\n "McLaughlinGroupMcL",\n "Mean",\n "MeanAbsoluteLossLayer",\n "MeanAround",\n "MeanClusteringCoefficient",\n "MeanDegreeConnectivity",\n "MeanDeviation",\n "MeanFilter",\n "MeanGraphDistance",\n "MeanNeighborDegree",\n "MeanPointDensity",\n "MeanShift",\n "MeanShiftFilter",\n "MeanSquaredLossLayer",\n "Median",\n "MedianDeviation",\n "MedianFilter",\n "MedicalTestData",\n "Medium",\n "MeijerG",\n "MeijerGReduce",\n "MeixnerDistribution",\n "MellinConvolve",\n "MellinTransform",\n "MemberQ",\n "MemoryAvailable",\n "MemoryConstrained",\n "MemoryConstraint",\n "MemoryInUse",\n "MengerMesh",\n "Menu",\n "MenuAppearance",\n "MenuCommandKey",\n "MenuEvaluator",\n "MenuItem",\n "MenuList",\n "MenuPacket",\n "MenuSortingValue",\n "MenuStyle",\n "MenuView",\n "Merge",\n "MergeDifferences",\n "MergingFunction",\n "MersennePrimeExponent",\n "MersennePrimeExponentQ",\n "Mesh",\n "MeshCellCentroid",\n "MeshCellCount",\n "MeshCellHighlight",\n "MeshCellIndex",\n "MeshCellLabel",\n "MeshCellMarker",\n "MeshCellMeasure",\n "MeshCellQuality",\n "MeshCells",\n "MeshCellShapeFunction",\n "MeshCellStyle",\n "MeshConnectivityGraph",\n "MeshCoordinates",\n "MeshFunctions",\n "MeshPrimitives",\n "MeshQualityGoal",\n "MeshRange",\n "MeshRefinementFunction",\n "MeshRegion",\n "MeshRegionQ",\n "MeshShading",\n "MeshStyle",\n "Message",\n "MessageDialog",\n "MessageList",\n "MessageName",\n "MessageObject",\n "MessageOptions",\n "MessagePacket",\n "Messages",\n "MessagesNotebook",\n "MetaCharacters",\n "MetaInformation",\n "MeteorShowerData",\n "Method",\n "MethodOptions",\n "MexicanHatWavelet",\n "MeyerWavelet",\n "Midpoint",\n "MIMETypeToFormatList",\n "Min",\n "MinColorDistance",\n "MinDate",\n "MinDetect",\n "MineralData",\n "MinFilter",\n "MinimalBy",\n "MinimalPolynomial",\n "MinimalStateSpaceModel",\n "Minimize",\n "MinimumTimeIncrement",\n "MinIntervalSize",\n "MinkowskiQuestionMark",\n "MinLimit",\n "MinMax",\n "MinorPlanetData",\n "Minors",\n "MinPointSeparation",\n "MinRecursion",\n "MinSize",\n "MinStableDistribution",\n "Minus",\n "MinusPlus",\n "MinValue",\n "Missing",\n "MissingBehavior",\n "MissingDataMethod",\n "MissingDataRules",\n "MissingQ",\n "MissingString",\n "MissingStyle",\n "MissingValuePattern",\n "MissingValueSynthesis",\n "MittagLefflerE",\n "MixedFractionParts",\n "MixedGraphQ",\n "MixedMagnitude",\n "MixedRadix",\n "MixedRadixQuantity",\n "MixedUnit",\n "MixtureDistribution",\n "Mod",\n "Modal",\n "Mode",\n "ModelPredictiveController",\n "Modular",\n "ModularInverse",\n "ModularLambda",\n "Module",\n "Modulus",\n "MoebiusMu",\n "Molecule",\n "MoleculeAlign",\n "MoleculeContainsQ",\n "MoleculeDraw",\n "MoleculeEquivalentQ",\n "MoleculeFreeQ",\n "MoleculeGraph",\n "MoleculeMatchQ",\n "MoleculeMaximumCommonSubstructure",\n "MoleculeModify",\n "MoleculeName",\n "MoleculePattern",\n "MoleculePlot",\n "MoleculePlot3D",\n "MoleculeProperty",\n "MoleculeQ",\n "MoleculeRecognize",\n "MoleculeSubstructureCount",\n "MoleculeValue",\n "Moment",\n "MomentConvert",\n "MomentEvaluate",\n "MomentGeneratingFunction",\n "MomentOfInertia",\n "Monday",\n "Monitor",\n "MonomialList",\n "MonomialOrder",\n "MonsterGroupM",\n "MoonPhase",\n "MoonPosition",\n "MorletWavelet",\n "MorphologicalBinarize",\n "MorphologicalBranchPoints",\n "MorphologicalComponents",\n "MorphologicalEulerNumber",\n "MorphologicalGraph",\n "MorphologicalPerimeter",\n "MorphologicalTransform",\n "MortalityData",\n "Most",\n "MountainData",\n "MouseAnnotation",\n "MouseAppearance",\n "MouseAppearanceTag",\n "MouseButtons",\n "Mouseover",\n "MousePointerNote",\n "MousePosition",\n "MovieData",\n "MovingAverage",\n "MovingMap",\n "MovingMedian",\n "MoyalDistribution",\n "MultiaxisArrangement",\n "Multicolumn",\n "MultiedgeStyle",\n "MultigraphQ",\n "MultilaunchWarning",\n "MultiLetterItalics",\n "MultiLetterStyle",\n "MultilineFunction",\n "Multinomial",\n "MultinomialDistribution",\n "MultinormalDistribution",\n "MultiplicativeOrder",\n "Multiplicity",\n "MultiplySides",\n "MultiscriptBoxOptions",\n "Multiselection",\n "MultivariateHypergeometricDistribution",\n "MultivariatePoissonDistribution",\n "MultivariateTDistribution",\n "N",\n "NakagamiDistribution",\n "NameQ",\n "Names",\n "NamespaceBox",\n "NamespaceBoxOptions",\n "Nand",\n "NArgMax",\n "NArgMin",\n "NBernoulliB",\n "NBodySimulation",\n "NBodySimulationData",\n "NCache",\n "NCaputoD",\n "NDEigensystem",\n "NDEigenvalues",\n "NDSolve",\n "NDSolveValue",\n "Nearest",\n "NearestFunction",\n "NearestMeshCells",\n "NearestNeighborG",\n "NearestNeighborGraph",\n "NearestTo",\n "NebulaData",\n "NeedlemanWunschSimilarity",\n "Needs",\n "Negative",\n "NegativeBinomialDistribution",\n "NegativeDefiniteMatrixQ",\n "NegativeIntegers",\n "NegativelyOrientedPoints",\n "NegativeMultinomialDistribution",\n "NegativeRationals",\n "NegativeReals",\n "NegativeSemidefiniteMatrixQ",\n "NeighborhoodData",\n "NeighborhoodGraph",\n "Nest",\n "NestedGreaterGreater",\n "NestedLessLess",\n "NestedScriptRules",\n "NestGraph",\n "NestList",\n "NestTree",\n "NestWhile",\n "NestWhileList",\n "NetAppend",\n "NetArray",\n "NetArrayLayer",\n "NetBidirectionalOperator",\n "NetChain",\n "NetDecoder",\n "NetDelete",\n "NetDrop",\n "NetEncoder",\n "NetEvaluationMode",\n "NetExternalObject",\n "NetExtract",\n "NetFlatten",\n "NetFoldOperator",\n "NetGANOperator",\n "NetGraph",\n "NetInformation",\n "NetInitialize",\n "NetInsert",\n "NetInsertSharedArrays",\n "NetJoin",\n "NetMapOperator",\n "NetMapThreadOperator",\n "NetMeasurements",\n "NetModel",\n "NetNestOperator",\n "NetPairEmbeddingOperator",\n "NetPort",\n "NetPortGradient",\n "NetPrepend",\n "NetRename",\n "NetReplace",\n "NetReplacePart",\n "NetSharedArray",\n "NetStateObject",\n "NetTake",\n "NetTrain",\n "NetTrainResultsObject",\n "NetUnfold",\n "NetworkPacketCapture",\n "NetworkPacketRecording",\n "NetworkPacketRecordingDuring",\n "NetworkPacketTrace",\n "NeumannValue",\n "NevilleThetaC",\n "NevilleThetaD",\n "NevilleThetaN",\n "NevilleThetaS",\n "NewPrimitiveStyle",\n "NExpectation",\n "Next",\n "NextCell",\n "NextDate",\n "NextPrime",\n "NextScheduledTaskTime",\n "NeymanScottPointProcess",\n "NFractionalD",\n "NHoldAll",\n "NHoldFirst",\n "NHoldRest",\n "NicholsGridLines",\n "NicholsPlot",\n "NightHemisphere",\n "NIntegrate",\n "NMaximize",\n "NMaxValue",\n "NMinimize",\n "NMinValue",\n "NominalScale",\n "NominalVariables",\n "NonAssociative",\n "NoncentralBetaDistribution",\n "NoncentralChiSquareDistribution",\n "NoncentralFRatioDistribution",\n "NoncentralStudentTDistribution",\n "NonCommutativeMultiply",\n "NonConstants",\n "NondimensionalizationTransform",\n "None",\n "NoneTrue",\n "NonlinearModelFit",\n "NonlinearStateSpaceModel",\n "NonlocalMeansFilter",\n "NonNegative",\n "NonNegativeIntegers",\n "NonNegativeRationals",\n "NonNegativeReals",\n "NonPositive",\n "NonPositiveIntegers",\n "NonPositiveRationals",\n "NonPositiveReals",\n "Nor",\n "NorlundB",\n "Norm",\n "Normal",\n "NormalDistribution",\n "NormalGrouping",\n "NormalizationLayer",\n "Normalize",\n "Normalized",\n "NormalizedSquaredEuclideanDistance",\n "NormalMatrixQ",\n "NormalsFunction",\n "NormFunction",\n "Not",\n "NotCongruent",\n "NotCupCap",\n "NotDoubleVerticalBar",\n "Notebook",\n "NotebookApply",\n "NotebookAutoSave",\n "NotebookBrowseDirectory",\n "NotebookClose",\n "NotebookConvertSettings",\n "NotebookCreate",\n "NotebookDefault",\n "NotebookDelete",\n "NotebookDirectory",\n "NotebookDynamicExpression",\n "NotebookEvaluate",\n "NotebookEventActions",\n "NotebookFileName",\n "NotebookFind",\n "NotebookGet",\n "NotebookImport",\n "NotebookInformation",\n "NotebookInterfaceObject",\n "NotebookLocate",\n "NotebookObject",\n "NotebookOpen",\n "NotebookPath",\n "NotebookPrint",\n "NotebookPut",\n "NotebookRead",\n "Notebooks",\n "NotebookSave",\n "NotebookSelection",\n "NotebooksMenu",\n "NotebookTemplate",\n "NotebookWrite",\n "NotElement",\n "NotEqualTilde",\n "NotExists",\n "NotGreater",\n "NotGreaterEqual",\n "NotGreaterFullEqual",\n "NotGreaterGreater",\n "NotGreaterLess",\n "NotGreaterSlantEqual",\n "NotGreaterTilde",\n "Nothing",\n "NotHumpDownHump",\n "NotHumpEqual",\n "NotificationFunction",\n "NotLeftTriangle",\n "NotLeftTriangleBar",\n "NotLeftTriangleEqual",\n "NotLess",\n "NotLessEqual",\n "NotLessFullEqual",\n "NotLessGreater",\n "NotLessLess",\n "NotLessSlantEqual",\n "NotLessTilde",\n "NotNestedGreaterGreater",\n "NotNestedLessLess",\n "NotPrecedes",\n "NotPrecedesEqual",\n "NotPrecedesSlantEqual",\n "NotPrecedesTilde",\n "NotReverseElement",\n "NotRightTriangle",\n "NotRightTriangleBar",\n "NotRightTriangleEqual",\n "NotSquareSubset",\n "NotSquareSubsetEqual",\n "NotSquareSuperset",\n "NotSquareSupersetEqual",\n "NotSubset",\n "NotSubsetEqual",\n "NotSucceeds",\n "NotSucceedsEqual",\n "NotSucceedsSlantEqual",\n "NotSucceedsTilde",\n "NotSuperset",\n "NotSupersetEqual",\n "NotTilde",\n "NotTildeEqual",\n "NotTildeFullEqual",\n "NotTildeTilde",\n "NotVerticalBar",\n "Now",\n "NoWhitespace",\n "NProbability",\n "NProduct",\n "NProductFactors",\n "NRoots",\n "NSolve",\n "NSolveValues",\n "NSum",\n "NSumTerms",\n "NuclearExplosionData",\n "NuclearReactorData",\n "Null",\n "NullRecords",\n "NullSpace",\n "NullWords",\n "Number",\n "NumberCompose",\n "NumberDecompose",\n "NumberDigit",\n "NumberExpand",\n "NumberFieldClassNumber",\n "NumberFieldDiscriminant",\n "NumberFieldFundamentalUnits",\n "NumberFieldIntegralBasis",\n "NumberFieldNormRepresentatives",\n "NumberFieldRegulator",\n "NumberFieldRootsOfUnity",\n "NumberFieldSignature",\n "NumberForm",\n "NumberFormat",\n "NumberLinePlot",\n "NumberMarks",\n "NumberMultiplier",\n "NumberPadding",\n "NumberPoint",\n "NumberQ",\n "NumberSeparator",\n "NumberSigns",\n "NumberString",\n "Numerator",\n "NumeratorDenominator",\n "NumericalOrder",\n "NumericalSort",\n "NumericArray",\n "NumericArrayQ",\n "NumericArrayType",\n "NumericFunction",\n "NumericQ",\n "NuttallWindow",\n "NValues",\n "NyquistGridLines",\n "NyquistPlot",\n "O",\n "ObjectExistsQ",\n "ObservabilityGramian",\n "ObservabilityMatrix",\n "ObservableDecomposition",\n "ObservableModelQ",\n "OceanData",\n "Octahedron",\n "OddQ",\n "Off",\n "Offset",\n "OLEData",\n "On",\n "ONanGroupON",\n "Once",\n "OneIdentity",\n "Opacity",\n "OpacityFunction",\n "OpacityFunctionScaling",\n "Open",\n "OpenAppend",\n "Opener",\n "OpenerBox",\n "OpenerBoxOptions",\n "OpenerView",\n "OpenFunctionInspectorPacket",\n "Opening",\n "OpenRead",\n "OpenSpecialOptions",\n "OpenTemporary",\n "OpenWrite",\n "Operate",\n "OperatingSystem",\n "OperatorApplied",\n "OptimumFlowData",\n "Optional",\n "OptionalElement",\n "OptionInspectorSettings",\n "OptionQ",\n "Options",\n "OptionsPacket",\n "OptionsPattern",\n "OptionValue",\n "OptionValueBox",\n "OptionValueBoxOptions",\n "Or",\n "Orange",\n "Order",\n "OrderDistribution",\n "OrderedQ",\n "Ordering",\n "OrderingBy",\n "OrderingLayer",\n "Orderless",\n "OrderlessPatternSequence",\n "OrdinalScale",\n "OrnsteinUhlenbeckProcess",\n "Orthogonalize",\n "OrthogonalMatrixQ",\n "Out",\n "Outer",\n "OuterPolygon",\n "OuterPolyhedron",\n "OutputAutoOverwrite",\n "OutputControllabilityMatrix",\n "OutputControllableModelQ",\n "OutputForm",\n "OutputFormData",\n "OutputGrouping",\n "OutputMathEditExpression",\n "OutputNamePacket",\n "OutputPorts",\n "OutputResponse",\n "OutputSizeLimit",\n "OutputStream",\n "Over",\n "OverBar",\n "OverDot",\n "Overflow",\n "OverHat",\n "Overlaps",\n "Overlay",\n "OverlayBox",\n "OverlayBoxOptions",\n "OverlayVideo",\n "Overscript",\n "OverscriptBox",\n "OverscriptBoxOptions",\n "OverTilde",\n "OverVector",\n "OverwriteTarget",\n "OwenT",\n "OwnValues",\n "Package",\n "PackingMethod",\n "PackPaclet",\n "PacletDataRebuild",\n "PacletDirectoryAdd",\n "PacletDirectoryLoad",\n "PacletDirectoryRemove",\n "PacletDirectoryUnload",\n "PacletDisable",\n "PacletEnable",\n "PacletFind",\n "PacletFindRemote",\n "PacletInformation",\n "PacletInstall",\n "PacletInstallSubmit",\n "PacletNewerQ",\n "PacletObject",\n "PacletObjectQ",\n "PacletSite",\n "PacletSiteObject",\n "PacletSiteRegister",\n "PacletSites",\n "PacletSiteUnregister",\n "PacletSiteUpdate",\n "PacletSymbol",\n "PacletUninstall",\n "PacletUpdate",\n "PaddedForm",\n "Padding",\n "PaddingLayer",\n "PaddingSize",\n "PadeApproximant",\n "PadLeft",\n "PadRight",\n "PageBreakAbove",\n "PageBreakBelow",\n "PageBreakWithin",\n "PageFooterLines",\n "PageFooters",\n "PageHeaderLines",\n "PageHeaders",\n "PageHeight",\n "PageRankCentrality",\n "PageTheme",\n "PageWidth",\n "Pagination",\n "PairCorrelationG",\n "PairedBarChart",\n "PairedHistogram",\n "PairedSmoothHistogram",\n "PairedTTest",\n "PairedZTest",\n "PaletteNotebook",\n "PalettePath",\n "PalettesMenuSettings",\n "PalindromeQ",\n "Pane",\n "PaneBox",\n "PaneBoxOptions",\n "Panel",\n "PanelBox",\n "PanelBoxOptions",\n "Paneled",\n "PaneSelector",\n "PaneSelectorBox",\n "PaneSelectorBoxOptions",\n "PaperWidth",\n "ParabolicCylinderD",\n "ParagraphIndent",\n "ParagraphSpacing",\n "ParallelArray",\n "ParallelAxisPlot",\n "ParallelCombine",\n "ParallelDo",\n "Parallelepiped",\n "ParallelEvaluate",\n "Parallelization",\n "Parallelize",\n "ParallelKernels",\n "ParallelMap",\n "ParallelNeeds",\n "Parallelogram",\n "ParallelProduct",\n "ParallelSubmit",\n "ParallelSum",\n "ParallelTable",\n "ParallelTry",\n "Parameter",\n "ParameterEstimator",\n "ParameterMixtureDistribution",\n "ParameterVariables",\n "ParametricConvexOptimization",\n "ParametricFunction",\n "ParametricNDSolve",\n "ParametricNDSolveValue",\n "ParametricPlot",\n "ParametricPlot3D",\n "ParametricRampLayer",\n "ParametricRegion",\n "ParentBox",\n "ParentCell",\n "ParentConnect",\n "ParentDirectory",\n "ParentEdgeLabel",\n "ParentEdgeLabelFunction",\n "ParentEdgeLabelStyle",\n "ParentEdgeShapeFunction",\n "ParentEdgeStyle",\n "ParentEdgeStyleFunction",\n "ParentForm",\n "Parenthesize",\n "ParentList",\n "ParentNotebook",\n "ParetoDistribution",\n "ParetoPickandsDistribution",\n "ParkData",\n "Part",\n "PartBehavior",\n "PartialCorrelationFunction",\n "PartialD",\n "ParticleAcceleratorData",\n "ParticleData",\n "Partition",\n "PartitionGranularity",\n "PartitionsP",\n "PartitionsQ",\n "PartLayer",\n "PartOfSpeech",\n "PartProtection",\n "ParzenWindow",\n "PascalDistribution",\n "PassEventsDown",\n "PassEventsUp",\n "Paste",\n "PasteAutoQuoteCharacters",\n "PasteBoxFormInlineCells",\n "PasteButton",\n "Path",\n "PathGraph",\n "PathGraphQ",\n "Pattern",\n "PatternFilling",\n "PatternReaction",\n "PatternSequence",\n "PatternTest",\n "PauliMatrix",\n "PaulWavelet",\n "Pause",\n "PausedTime",\n "PDF",\n "PeakDetect",\n "PeanoCurve",\n "PearsonChiSquareTest",\n "PearsonCorrelationTest",\n "PearsonDistribution",\n "PenttinenPointProcess",\n "PercentForm",\n "PerfectNumber",\n "PerfectNumberQ",\n "PerformanceGoal",\n "Perimeter",\n "PeriodicBoundaryCondition",\n "PeriodicInterpolation",\n "Periodogram",\n "PeriodogramArray",\n "Permanent",\n "Permissions",\n "PermissionsGroup",\n "PermissionsGroupMemberQ",\n "PermissionsGroups",\n "PermissionsKey",\n "PermissionsKeys",\n "PermutationCycles",\n "PermutationCyclesQ",\n "PermutationGroup",\n "PermutationLength",\n "PermutationList",\n "PermutationListQ",\n "PermutationMatrix",\n "PermutationMax",\n "PermutationMin",\n "PermutationOrder",\n "PermutationPower",\n "PermutationProduct",\n "PermutationReplace",\n "Permutations",\n "PermutationSupport",\n "Permute",\n "PeronaMalikFilter",\n "Perpendicular",\n "PerpendicularBisector",\n "PersistenceLocation",\n "PersistenceTime",\n "PersistentObject",\n "PersistentObjects",\n "PersistentSymbol",\n "PersistentValue",\n "PersonData",\n "PERTDistribution",\n "PetersenGraph",\n "PhaseMargins",\n "PhaseRange",\n "PhongShading",\n "PhysicalSystemData",\n "Pi",\n "Pick",\n "PickedElements",\n "PickMode",\n "PIDData",\n "PIDDerivativeFilter",\n "PIDFeedforward",\n "PIDTune",\n "Piecewise",\n "PiecewiseExpand",\n "PieChart",\n "PieChart3D",\n "PillaiTrace",\n "PillaiTraceTest",\n "PingTime",\n "Pink",\n "PitchRecognize",\n "Pivoting",\n "PixelConstrained",\n "PixelValue",\n "PixelValuePositions",\n "Placed",\n "Placeholder",\n "PlaceholderLayer",\n "PlaceholderReplace",\n "Plain",\n "PlanarAngle",\n "PlanarFaceList",\n "PlanarGraph",\n "PlanarGraphQ",\n "PlanckRadiationLaw",\n "PlaneCurveData",\n "PlanetaryMoonData",\n "PlanetData",\n "PlantData",\n "Play",\n "PlaybackSettings",\n "PlayRange",\n "Plot",\n "Plot3D",\n "Plot3Matrix",\n "PlotDivision",\n "PlotJoined",\n "PlotLabel",\n "PlotLabels",\n "PlotLayout",\n "PlotLegends",\n "PlotMarkers",\n "PlotPoints",\n "PlotRange",\n "PlotRangeClipping",\n "PlotRangeClipPlanesStyle",\n "PlotRangePadding",\n "PlotRegion",\n "PlotStyle",\n "PlotTheme",\n "Pluralize",\n "Plus",\n "PlusMinus",\n "Pochhammer",\n "PodStates",\n "PodWidth",\n "Point",\n "Point3DBox",\n "Point3DBoxOptions",\n "PointBox",\n "PointBoxOptions",\n "PointCountDistribution",\n "PointDensity",\n "PointDensityFunction",\n "PointFigureChart",\n "PointLegend",\n "PointLight",\n "PointProcessEstimator",\n "PointProcessFitTest",\n "PointProcessParameterAssumptions",\n "PointProcessParameterQ",\n "PointSize",\n "PointStatisticFunction",\n "PointValuePlot",\n "PoissonConsulDistribution",\n "PoissonDistribution",\n "PoissonPDEComponent",\n "PoissonPointProcess",\n "PoissonProcess",\n "PoissonWindow",\n "PolarAxes",\n "PolarAxesOrigin",\n "PolarGridLines",\n "PolarPlot",\n "PolarTicks",\n "PoleZeroMarkers",\n "PolyaAeppliDistribution",\n "PolyGamma",\n "Polygon",\n "Polygon3DBox",\n "Polygon3DBoxOptions",\n "PolygonalNumber",\n "PolygonAngle",\n "PolygonBox",\n "PolygonBoxOptions",\n "PolygonCoordinates",\n "PolygonDecomposition",\n "PolygonHoleScale",\n "PolygonIntersections",\n "PolygonScale",\n "Polyhedron",\n "PolyhedronAngle",\n "PolyhedronBox",\n "PolyhedronBoxOptions",\n "PolyhedronCoordinates",\n "PolyhedronData",\n "PolyhedronDecomposition",\n "PolyhedronGenus",\n "PolyLog",\n "PolynomialExpressionQ",\n "PolynomialExtendedGCD",\n "PolynomialForm",\n "PolynomialGCD",\n "PolynomialLCM",\n "PolynomialMod",\n "PolynomialQ",\n "PolynomialQuotient",\n "PolynomialQuotientRemainder",\n "PolynomialReduce",\n "PolynomialRemainder",\n "Polynomials",\n "PolynomialSumOfSquaresList",\n "PoolingLayer",\n "PopupMenu",\n "PopupMenuBox",\n "PopupMenuBoxOptions",\n "PopupView",\n "PopupWindow",\n "Position",\n "PositionIndex",\n "PositionLargest",\n "PositionSmallest",\n "Positive",\n "PositiveDefiniteMatrixQ",\n "PositiveIntegers",\n "PositivelyOrientedPoints",\n "PositiveRationals",\n "PositiveReals",\n "PositiveSemidefiniteMatrixQ",\n "PossibleZeroQ",\n "Postfix",\n "PostScript",\n "Power",\n "PowerDistribution",\n "PowerExpand",\n "PowerMod",\n "PowerModList",\n "PowerRange",\n "PowerSpectralDensity",\n "PowersRepresentations",\n "PowerSymmetricPolynomial",\n "Precedence",\n "PrecedenceForm",\n "Precedes",\n "PrecedesEqual",\n "PrecedesSlantEqual",\n "PrecedesTilde",\n "Precision",\n "PrecisionGoal",\n "PreDecrement",\n "Predict",\n "PredictionRoot",\n "PredictorFunction",\n "PredictorInformation",\n "PredictorMeasurements",\n "PredictorMeasurementsObject",\n "PreemptProtect",\n "PreferencesPath",\n "PreferencesSettings",\n "Prefix",\n "PreIncrement",\n "Prepend",\n "PrependLayer",\n "PrependTo",\n "PreprocessingRules",\n "PreserveColor",\n "PreserveImageOptions",\n "Previous",\n "PreviousCell",\n "PreviousDate",\n "PriceGraphDistribution",\n "PrimaryPlaceholder",\n "Prime",\n "PrimeNu",\n "PrimeOmega",\n "PrimePi",\n "PrimePowerQ",\n "PrimeQ",\n "Primes",\n "PrimeZetaP",\n "PrimitivePolynomialQ",\n "PrimitiveRoot",\n "PrimitiveRootList",\n "PrincipalComponents",\n "PrincipalValue",\n "Print",\n "PrintableASCIIQ",\n "PrintAction",\n "PrintForm",\n "PrintingCopies",\n "PrintingOptions",\n "PrintingPageRange",\n "PrintingStartingPageNumber",\n "PrintingStyleEnvironment",\n "Printout3D",\n "Printout3DPreviewer",\n "PrintPrecision",\n "PrintTemporary",\n "Prism",\n "PrismBox",\n "PrismBoxOptions",\n "PrivateCellOptions",\n "PrivateEvaluationOptions",\n "PrivateFontOptions",\n "PrivateFrontEndOptions",\n "PrivateKey",\n "PrivateNotebookOptions",\n "PrivatePaths",\n "Probability",\n "ProbabilityDistribution",\n "ProbabilityPlot",\n "ProbabilityPr",\n "ProbabilityScalePlot",\n "ProbitModelFit",\n "ProcessConnection",\n "ProcessDirectory",\n "ProcessEnvironment",\n "Processes",\n "ProcessEstimator",\n "ProcessInformation",\n "ProcessObject",\n "ProcessParameterAssumptions",\n "ProcessParameterQ",\n "ProcessStateDomain",\n "ProcessStatus",\n "ProcessTimeDomain",\n "Product",\n "ProductDistribution",\n "ProductLog",\n "ProgressIndicator",\n "ProgressIndicatorBox",\n "ProgressIndicatorBoxOptions",\n "ProgressReporting",\n "Projection",\n "Prolog",\n "PromptForm",\n "ProofObject",\n "PropagateAborts",\n "Properties",\n "Property",\n "PropertyList",\n "PropertyValue",\n "Proportion",\n "Proportional",\n "Protect",\n "Protected",\n "ProteinData",\n "Pruning",\n "PseudoInverse",\n "PsychrometricPropertyData",\n "PublicKey",\n "PublisherID",\n "PulsarData",\n "PunctuationCharacter",\n "Purple",\n "Put",\n "PutAppend",\n "Pyramid",\n "PyramidBox",\n "PyramidBoxOptions",\n "QBinomial",\n "QFactorial",\n "QGamma",\n "QHypergeometricPFQ",\n "QnDispersion",\n "QPochhammer",\n "QPolyGamma",\n "QRDecomposition",\n "QuadraticIrrationalQ",\n "QuadraticOptimization",\n "Quantile",\n "QuantilePlot",\n "Quantity",\n "QuantityArray",\n "QuantityDistribution",\n "QuantityForm",\n "QuantityMagnitude",\n "QuantityQ",\n "QuantityUnit",\n "QuantityVariable",\n "QuantityVariableCanonicalUnit",\n "QuantityVariableDimensions",\n "QuantityVariableIdentifier",\n "QuantityVariablePhysicalQuantity",\n "Quartics",\n "QuartileDeviation",\n "Quartiles",\n "QuartileSkewness",\n "Query",\n "QuestionGenerator",\n "QuestionInterface",\n "QuestionObject",\n "QuestionSelector",\n "QueueingNetworkProcess",\n "QueueingProcess",\n "QueueProperties",\n "Quiet",\n "QuietEcho",\n "Quit",\n "Quotient",\n "QuotientRemainder",\n "RadialAxisPlot",\n "RadialGradientFilling",\n "RadialGradientImage",\n "RadialityCentrality",\n "RadicalBox",\n "RadicalBoxOptions",\n "RadioButton",\n "RadioButtonBar",\n "RadioButtonBox",\n "RadioButtonBoxOptions",\n "Radon",\n "RadonTransform",\n "RamanujanTau",\n "RamanujanTauL",\n "RamanujanTauTheta",\n "RamanujanTauZ",\n "Ramp",\n "Random",\n "RandomArrayLayer",\n "RandomChoice",\n "RandomColor",\n "RandomComplex",\n "RandomDate",\n "RandomEntity",\n "RandomFunction",\n "RandomGeneratorState",\n "RandomGeoPosition",\n "RandomGraph",\n "RandomImage",\n "RandomInstance",\n "RandomInteger",\n "RandomPermutation",\n "RandomPoint",\n "RandomPointConfiguration",\n "RandomPolygon",\n "RandomPolyhedron",\n "RandomPrime",\n "RandomReal",\n "RandomSample",\n "RandomSeed",\n "RandomSeeding",\n "RandomTime",\n "RandomTree",\n "RandomVariate",\n "RandomWalkProcess",\n "RandomWord",\n "Range",\n "RangeFilter",\n "RangeSpecification",\n "RankedMax",\n "RankedMin",\n "RarerProbability",\n "Raster",\n "Raster3D",\n "Raster3DBox",\n "Raster3DBoxOptions",\n "RasterArray",\n "RasterBox",\n "RasterBoxOptions",\n "Rasterize",\n "RasterSize",\n "Rational",\n "RationalExpressionQ",\n "RationalFunctions",\n "Rationalize",\n "Rationals",\n "Ratios",\n "RawArray",\n "RawBoxes",\n "RawData",\n "RawMedium",\n "RayleighDistribution",\n "Re",\n "ReactionBalance",\n "ReactionBalancedQ",\n "ReactionPDETerm",\n "Read",\n "ReadByteArray",\n "ReadLine",\n "ReadList",\n "ReadProtected",\n "ReadString",\n "Real",\n "RealAbs",\n "RealBlockDiagonalForm",\n "RealDigits",\n "RealExponent",\n "Reals",\n "RealSign",\n "Reap",\n "RebuildPacletData",\n "RecalibrationFunction",\n "RecognitionPrior",\n "RecognitionThreshold",\n "ReconstructionMesh",\n "Record",\n "RecordLists",\n "RecordSeparators",\n "Rectangle",\n "RectangleBox",\n "RectangleBoxOptions",\n "RectangleChart",\n "RectangleChart3D",\n "RectangularRepeatingElement",\n "RecurrenceFilter",\n "RecurrenceTable",\n "RecurringDigitsForm",\n "Red",\n "Reduce",\n "RefBox",\n "ReferenceLineStyle",\n "ReferenceMarkers",\n "ReferenceMarkerStyle",\n "Refine",\n "ReflectionMatrix",\n "ReflectionTransform",\n "Refresh",\n "RefreshRate",\n "Region",\n "RegionBinarize",\n "RegionBoundary",\n "RegionBoundaryStyle",\n "RegionBounds",\n "RegionCentroid",\n "RegionCongruent",\n "RegionConvert",\n "RegionDifference",\n "RegionDilation",\n "RegionDimension",\n "RegionDisjoint",\n "RegionDistance",\n "RegionDistanceFunction",\n "RegionEmbeddingDimension",\n "RegionEqual",\n "RegionErosion",\n "RegionFillingStyle",\n "RegionFit",\n "RegionFunction",\n "RegionImage",\n "RegionIntersection",\n "RegionMeasure",\n "RegionMember",\n "RegionMemberFunction",\n "RegionMoment",\n "RegionNearest",\n "RegionNearestFunction",\n "RegionPlot",\n "RegionPlot3D",\n "RegionProduct",\n "RegionQ",\n "RegionResize",\n "RegionSimilar",\n "RegionSize",\n "RegionSymmetricDifference",\n "RegionUnion",\n "RegionWithin",\n "RegisterExternalEvaluator",\n "RegularExpression",\n "Regularization",\n "RegularlySampledQ",\n "RegularPolygon",\n "ReIm",\n "ReImLabels",\n "ReImPlot",\n "ReImStyle",\n "Reinstall",\n "RelationalDatabase",\n "RelationGraph",\n "Release",\n "ReleaseHold",\n "ReliabilityDistribution",\n "ReliefImage",\n "ReliefPlot",\n "RemoteAuthorizationCaching",\n "RemoteBatchJobAbort",\n "RemoteBatchJobObject",\n "RemoteBatchJobs",\n "RemoteBatchMapSubmit",\n "RemoteBatchSubmissionEnvironment",\n "RemoteBatchSubmit",\n "RemoteConnect",\n "RemoteConnectionObject",\n "RemoteEvaluate",\n "RemoteFile",\n "RemoteInputFiles",\n "RemoteKernelObject",\n "RemoteProviderSettings",\n "RemoteRun",\n "RemoteRunProcess",\n "RemovalConditions",\n "Remove",\n "RemoveAlphaChannel",\n "RemoveAsynchronousTask",\n "RemoveAudioStream",\n "RemoveBackground",\n "RemoveChannelListener",\n "RemoveChannelSubscribers",\n "Removed",\n "RemoveDiacritics",\n "RemoveInputStreamMethod",\n "RemoveOutputStreamMethod",\n "RemoveProperty",\n "RemoveScheduledTask",\n "RemoveUsers",\n "RemoveVideoStream",\n "RenameDirectory",\n "RenameFile",\n "RenderAll",\n "RenderingOptions",\n "RenewalProcess",\n "RenkoChart",\n "RepairMesh",\n "Repeated",\n "RepeatedNull",\n "RepeatedString",\n "RepeatedTiming",\n "RepeatingElement",\n "Replace",\n "ReplaceAll",\n "ReplaceAt",\n "ReplaceHeldPart",\n "ReplaceImageValue",\n "ReplaceList",\n "ReplacePart",\n "ReplacePixelValue",\n "ReplaceRepeated",\n "ReplicateLayer",\n "RequiredPhysicalQuantities",\n "Resampling",\n "ResamplingAlgorithmData",\n "ResamplingMethod",\n "Rescale",\n "RescalingTransform",\n "ResetDirectory",\n "ResetScheduledTask",\n "ReshapeLayer",\n "Residue",\n "ResidueSum",\n "ResizeLayer",\n "Resolve",\n "ResolveContextAliases",\n "ResourceAcquire",\n "ResourceData",\n "ResourceFunction",\n "ResourceObject",\n "ResourceRegister",\n "ResourceRemove",\n "ResourceSearch",\n "ResourceSubmissionObject",\n "ResourceSubmit",\n "ResourceSystemBase",\n "ResourceSystemPath",\n "ResourceUpdate",\n "ResourceVersion",\n "ResponseForm",\n "Rest",\n "RestartInterval",\n "Restricted",\n "Resultant",\n "ResumePacket",\n "Return",\n "ReturnCreatesNewCell",\n "ReturnEntersInput",\n "ReturnExpressionPacket",\n "ReturnInputFormPacket",\n "ReturnPacket",\n "ReturnReceiptFunction",\n "ReturnTextPacket",\n "Reverse",\n "ReverseApplied",\n "ReverseBiorthogonalSplineWavelet",\n "ReverseElement",\n "ReverseEquilibrium",\n "ReverseGraph",\n "ReverseSort",\n "ReverseSortBy",\n "ReverseUpEquilibrium",\n "RevolutionAxis",\n "RevolutionPlot3D",\n "RGBColor",\n "RiccatiSolve",\n "RiceDistribution",\n "RidgeFilter",\n "RiemannR",\n "RiemannSiegelTheta",\n "RiemannSiegelZ",\n "RiemannXi",\n "Riffle",\n "Right",\n "RightArrow",\n "RightArrowBar",\n "RightArrowLeftArrow",\n "RightComposition",\n "RightCosetRepresentative",\n "RightDownTeeVector",\n "RightDownVector",\n "RightDownVectorBar",\n "RightTee",\n "RightTeeArrow",\n "RightTeeVector",\n "RightTriangle",\n "RightTriangleBar",\n "RightTriangleEqual",\n "RightUpDownVector",\n "RightUpTeeVector",\n "RightUpVector",\n "RightUpVectorBar",\n "RightVector",\n "RightVectorBar",\n "RipleyK",\n "RipleyRassonRegion",\n "RiskAchievementImportance",\n "RiskReductionImportance",\n "RobustConvexOptimization",\n "RogersTanimotoDissimilarity",\n "RollPitchYawAngles",\n "RollPitchYawMatrix",\n "RomanNumeral",\n "Root",\n "RootApproximant",\n "RootIntervals",\n "RootLocusPlot",\n "RootMeanSquare",\n "RootOfUnityQ",\n "RootReduce",\n "Roots",\n "RootSum",\n "RootTree",\n "Rotate",\n "RotateLabel",\n "RotateLeft",\n "RotateRight",\n "RotationAction",\n "RotationBox",\n "RotationBoxOptions",\n "RotationMatrix",\n "RotationTransform",\n "Round",\n "RoundImplies",\n "RoundingRadius",\n "Row",\n "RowAlignments",\n "RowBackgrounds",\n "RowBox",\n "RowHeights",\n "RowLines",\n "RowMinHeight",\n "RowReduce",\n "RowsEqual",\n "RowSpacings",\n "RSolve",\n "RSolveValue",\n "RudinShapiro",\n "RudvalisGroupRu",\n "Rule",\n "RuleCondition",\n "RuleDelayed",\n "RuleForm",\n "RulePlot",\n "RulerUnits",\n "RulesTree",\n "Run",\n "RunProcess",\n "RunScheduledTask",\n "RunThrough",\n "RuntimeAttributes",\n "RuntimeOptions",\n "RussellRaoDissimilarity",\n "SameAs",\n "SameQ",\n "SameTest",\n "SameTestProperties",\n "SampledEntityClass",\n "SampleDepth",\n "SampledSoundFunction",\n "SampledSoundList",\n "SampleRate",\n "SamplingPeriod",\n "SARIMAProcess",\n "SARMAProcess",\n "SASTriangle",\n "SatelliteData",\n "SatisfiabilityCount",\n "SatisfiabilityInstances",\n "SatisfiableQ",\n "Saturday",\n "Save",\n "Saveable",\n "SaveAutoDelete",\n "SaveConnection",\n "SaveDefinitions",\n "SavitzkyGolayMatrix",\n "SawtoothWave",\n "Scale",\n "Scaled",\n "ScaleDivisions",\n "ScaledMousePosition",\n "ScaleOrigin",\n "ScalePadding",\n "ScaleRanges",\n "ScaleRangeStyle",\n "ScalingFunctions",\n "ScalingMatrix",\n "ScalingTransform",\n "Scan",\n "ScheduledTask",\n "ScheduledTaskActiveQ",\n "ScheduledTaskInformation",\n "ScheduledTaskInformationData",\n "ScheduledTaskObject",\n "ScheduledTasks",\n "SchurDecomposition",\n "ScientificForm",\n "ScientificNotationThreshold",\n "ScorerGi",\n "ScorerGiPrime",\n "ScorerHi",\n "ScorerHiPrime",\n "ScreenRectangle",\n "ScreenStyleEnvironment",\n "ScriptBaselineShifts",\n "ScriptForm",\n "ScriptLevel",\n "ScriptMinSize",\n "ScriptRules",\n "ScriptSizeMultipliers",\n "Scrollbars",\n "ScrollingOptions",\n "ScrollPosition",\n "SearchAdjustment",\n "SearchIndexObject",\n "SearchIndices",\n "SearchQueryString",\n "SearchResultObject",\n "Sec",\n "Sech",\n "SechDistribution",\n "SecondOrderConeOptimization",\n "SectionGrouping",\n "SectorChart",\n "SectorChart3D",\n "SectorOrigin",\n "SectorSpacing",\n "SecuredAuthenticationKey",\n "SecuredAuthenticationKeys",\n "SecurityCertificate",\n "SeedRandom",\n "Select",\n "Selectable",\n "SelectComponents",\n "SelectedCells",\n "SelectedNotebook",\n "SelectFirst",\n "Selection",\n "SelectionAnimate",\n "SelectionCell",\n "SelectionCellCreateCell",\n "SelectionCellDefaultStyle",\n "SelectionCellParentStyle",\n "SelectionCreateCell",\n "SelectionDebuggerTag",\n "SelectionEvaluate",\n "SelectionEvaluateCreateCell",\n "SelectionMove",\n "SelectionPlaceholder",\n "SelectWithContents",\n "SelfLoops",\n "SelfLoopStyle",\n "SemanticImport",\n "SemanticImportString",\n "SemanticInterpretation",\n "SemialgebraicComponentInstances",\n "SemidefiniteOptimization",\n "SendMail",\n "SendMessage",\n "Sequence",\n "SequenceAlignment",\n "SequenceAttentionLayer",\n "SequenceCases",\n "SequenceCount",\n "SequenceFold",\n "SequenceFoldList",\n "SequenceForm",\n "SequenceHold",\n "SequenceIndicesLayer",\n "SequenceLastLayer",\n "SequenceMostLayer",\n "SequencePosition",\n "SequencePredict",\n "SequencePredictorFunction",\n "SequenceReplace",\n "SequenceRestLayer",\n "SequenceReverseLayer",\n "SequenceSplit",\n "Series",\n "SeriesCoefficient",\n "SeriesData",\n "SeriesTermGoal",\n "ServiceConnect",\n "ServiceDisconnect",\n "ServiceExecute",\n "ServiceObject",\n "ServiceRequest",\n "ServiceResponse",\n "ServiceSubmit",\n "SessionSubmit",\n "SessionTime",\n "Set",\n "SetAccuracy",\n "SetAlphaChannel",\n "SetAttributes",\n "Setbacks",\n "SetCloudDirectory",\n "SetCookies",\n "SetDelayed",\n "SetDirectory",\n "SetEnvironment",\n "SetFileDate",\n "SetFileFormatProperties",\n "SetOptions",\n "SetOptionsPacket",\n "SetPermissions",\n "SetPrecision",\n "SetProperty",\n "SetSecuredAuthenticationKey",\n "SetSelectedNotebook",\n "SetSharedFunction",\n "SetSharedVariable",\n "SetStreamPosition",\n "SetSystemModel",\n "SetSystemOptions",\n "Setter",\n "SetterBar",\n "SetterBox",\n "SetterBoxOptions",\n "Setting",\n "SetUsers",\n "Shading",\n "Shallow",\n "ShannonWavelet",\n "ShapiroWilkTest",\n "Share",\n "SharingList",\n "Sharpen",\n "ShearingMatrix",\n "ShearingTransform",\n "ShellRegion",\n "ShenCastanMatrix",\n "ShiftedGompertzDistribution",\n "ShiftRegisterSequence",\n "Short",\n "ShortDownArrow",\n "Shortest",\n "ShortestMatch",\n "ShortestPathFunction",\n "ShortLeftArrow",\n "ShortRightArrow",\n "ShortTimeFourier",\n "ShortTimeFourierData",\n "ShortUpArrow",\n "Show",\n "ShowAutoConvert",\n "ShowAutoSpellCheck",\n "ShowAutoStyles",\n "ShowCellBracket",\n "ShowCellLabel",\n "ShowCellTags",\n "ShowClosedCellArea",\n "ShowCodeAssist",\n "ShowContents",\n "ShowControls",\n "ShowCursorTracker",\n "ShowGroupOpenCloseIcon",\n "ShowGroupOpener",\n "ShowInvisibleCharacters",\n "ShowPageBreaks",\n "ShowPredictiveInterface",\n "ShowSelection",\n "ShowShortBoxForm",\n "ShowSpecialCharacters",\n "ShowStringCharacters",\n "ShowSyntaxStyles",\n "ShrinkingDelay",\n "ShrinkWrapBoundingBox",\n "SiderealTime",\n "SiegelTheta",\n "SiegelTukeyTest",\n "SierpinskiCurve",\n "SierpinskiMesh",\n "Sign",\n "Signature",\n "SignedRankTest",\n "SignedRegionDistance",\n "SignificanceLevel",\n "SignPadding",\n "SignTest",\n "SimilarityRules",\n "SimpleGraph",\n "SimpleGraphQ",\n "SimplePolygonQ",\n "SimplePolyhedronQ",\n "Simplex",\n "Simplify",\n "Sin",\n "Sinc",\n "SinghMaddalaDistribution",\n "SingleEvaluation",\n "SingleLetterItalics",\n "SingleLetterStyle",\n "SingularValueDecomposition",\n "SingularValueList",\n "SingularValuePlot",\n "SingularValues",\n "Sinh",\n "SinhIntegral",\n "SinIntegral",\n "SixJSymbol",\n "Skeleton",\n "SkeletonTransform",\n "SkellamDistribution",\n "Skewness",\n "SkewNormalDistribution",\n "SkinStyle",\n "Skip",\n "SliceContourPlot3D",\n "SliceDensityPlot3D",\n "SliceDistribution",\n "SliceVectorPlot3D",\n "Slider",\n "Slider2D",\n "Slider2DBox",\n "Slider2DBoxOptions",\n "SliderBox",\n "SliderBoxOptions",\n "SlideShowVideo",\n "SlideView",\n "Slot",\n "SlotSequence",\n "Small",\n "SmallCircle",\n "Smaller",\n "SmithDecomposition",\n "SmithDelayCompensator",\n "SmithWatermanSimilarity",\n "SmoothDensityHistogram",\n "SmoothHistogram",\n "SmoothHistogram3D",\n "SmoothKernelDistribution",\n "SmoothPointDensity",\n "SnDispersion",\n "Snippet",\n "SnippetsVideo",\n "SnubPolyhedron",\n "SocialMediaData",\n "Socket",\n "SocketConnect",\n "SocketListen",\n "SocketListener",\n "SocketObject",\n "SocketOpen",\n "SocketReadMessage",\n "SocketReadyQ",\n "Sockets",\n "SocketWaitAll",\n "SocketWaitNext",\n "SoftmaxLayer",\n "SokalSneathDissimilarity",\n "SolarEclipse",\n "SolarSystemFeatureData",\n "SolarTime",\n "SolidAngle",\n "SolidBoundaryLoadValue",\n "SolidData",\n "SolidDisplacementCondition",\n "SolidFixedCondition",\n "SolidMechanicsPDEComponent",\n "SolidMechanicsStrain",\n "SolidMechanicsStress",\n "SolidRegionQ",\n "Solve",\n "SolveAlways",\n "SolveDelayed",\n "SolveValues",\n "Sort",\n "SortBy",\n "SortedBy",\n "SortedEntityClass",\n "Sound",\n "SoundAndGraphics",\n "SoundNote",\n "SoundVolume",\n "SourceLink",\n "SourcePDETerm",\n "Sow",\n "Space",\n "SpaceCurveData",\n "SpaceForm",\n "Spacer",\n "Spacings",\n "Span",\n "SpanAdjustments",\n "SpanCharacterRounding",\n "SpanFromAbove",\n "SpanFromBoth",\n "SpanFromLeft",\n "SpanLineThickness",\n "SpanMaxSize",\n "SpanMinSize",\n "SpanningCharacters",\n "SpanSymmetric",\n "SparseArray",\n "SparseArrayQ",\n "SpatialBinnedPointData",\n "SpatialBoundaryCorrection",\n "SpatialEstimate",\n "SpatialEstimatorFunction",\n "SpatialGraphDistribution",\n "SpatialJ",\n "SpatialMedian",\n "SpatialNoiseLevel",\n "SpatialObservationRegionQ",\n "SpatialPointData",\n "SpatialPointSelect",\n "SpatialRandomnessTest",\n "SpatialTransformationLayer",\n "SpatialTrendFunction",\n "Speak",\n "SpeakerMatchQ",\n "SpearmanRankTest",\n "SpearmanRho",\n "SpeciesData",\n "SpecificityGoal",\n "SpectralLineData",\n "Spectrogram",\n "SpectrogramArray",\n "Specularity",\n "SpeechCases",\n "SpeechInterpreter",\n "SpeechRecognize",\n "SpeechSynthesize",\n "SpellingCorrection",\n "SpellingCorrectionList",\n "SpellingDictionaries",\n "SpellingDictionariesPath",\n "SpellingOptions",\n "Sphere",\n "SphereBox",\n "SphereBoxOptions",\n "SpherePoints",\n "SphericalBesselJ",\n "SphericalBesselY",\n "SphericalHankelH1",\n "SphericalHankelH2",\n "SphericalHarmonicY",\n "SphericalPlot3D",\n "SphericalRegion",\n "SphericalShell",\n "SpheroidalEigenvalue",\n "SpheroidalJoiningFactor",\n "SpheroidalPS",\n "SpheroidalPSPrime",\n "SpheroidalQS",\n "SpheroidalQSPrime",\n "SpheroidalRadialFactor",\n "SpheroidalS1",\n "SpheroidalS1Prime",\n "SpheroidalS2",\n "SpheroidalS2Prime",\n "Splice",\n "SplicedDistribution",\n "SplineClosed",\n "SplineDegree",\n "SplineKnots",\n "SplineWeights",\n "Split",\n "SplitBy",\n "SpokenString",\n "SpotLight",\n "Sqrt",\n "SqrtBox",\n "SqrtBoxOptions",\n "Square",\n "SquaredEuclideanDistance",\n "SquareFreeQ",\n "SquareIntersection",\n "SquareMatrixQ",\n "SquareRepeatingElement",\n "SquaresR",\n "SquareSubset",\n "SquareSubsetEqual",\n "SquareSuperset",\n "SquareSupersetEqual",\n "SquareUnion",\n "SquareWave",\n "SSSTriangle",\n "StabilityMargins",\n "StabilityMarginsStyle",\n "StableDistribution",\n "Stack",\n "StackBegin",\n "StackComplete",\n "StackedDateListPlot",\n "StackedListPlot",\n "StackInhibit",\n "StadiumShape",\n "StandardAtmosphereData",\n "StandardDeviation",\n "StandardDeviationFilter",\n "StandardForm",\n "Standardize",\n "Standardized",\n "StandardOceanData",\n "StandbyDistribution",\n "Star",\n "StarClusterData",\n "StarData",\n "StarGraph",\n "StartAsynchronousTask",\n "StartExternalSession",\n "StartingStepSize",\n "StartOfLine",\n "StartOfString",\n "StartProcess",\n "StartScheduledTask",\n "StartupSound",\n "StartWebSession",\n "StateDimensions",\n "StateFeedbackGains",\n "StateOutputEstimator",\n "StateResponse",\n "StateSpaceModel",\n "StateSpaceRealization",\n "StateSpaceTransform",\n "StateTransformationLinearize",\n "StationaryDistribution",\n "StationaryWaveletPacketTransform",\n "StationaryWaveletTransform",\n "StatusArea",\n "StatusCentrality",\n "StepMonitor",\n "StereochemistryElements",\n "StieltjesGamma",\n "StippleShading",\n "StirlingS1",\n "StirlingS2",\n "StopAsynchronousTask",\n "StoppingPowerData",\n "StopScheduledTask",\n "StrataVariables",\n "StratonovichProcess",\n "StraussHardcorePointProcess",\n "StraussPointProcess",\n "StreamColorFunction",\n "StreamColorFunctionScaling",\n "StreamDensityPlot",\n "StreamMarkers",\n "StreamPlot",\n "StreamPlot3D",\n "StreamPoints",\n "StreamPosition",\n "Streams",\n "StreamScale",\n "StreamStyle",\n "StrictInequalities",\n "String",\n "StringBreak",\n "StringByteCount",\n "StringCases",\n "StringContainsQ",\n "StringCount",\n "StringDelete",\n "StringDrop",\n "StringEndsQ",\n "StringExpression",\n "StringExtract",\n "StringForm",\n "StringFormat",\n "StringFormatQ",\n "StringFreeQ",\n "StringInsert",\n "StringJoin",\n "StringLength",\n "StringMatchQ",\n "StringPadLeft",\n "StringPadRight",\n "StringPart",\n "StringPartition",\n "StringPosition",\n "StringQ",\n "StringRepeat",\n "StringReplace",\n "StringReplaceList",\n "StringReplacePart",\n "StringReverse",\n "StringRiffle",\n "StringRotateLeft",\n "StringRotateRight",\n "StringSkeleton",\n "StringSplit",\n "StringStartsQ",\n "StringTake",\n "StringTakeDrop",\n "StringTemplate",\n "StringToByteArray",\n "StringToStream",\n "StringTrim",\n "StripBoxes",\n "StripOnInput",\n "StripStyleOnPaste",\n "StripWrapperBoxes",\n "StrokeForm",\n "Struckthrough",\n "StructuralImportance",\n "StructuredArray",\n "StructuredArrayHeadQ",\n "StructuredSelection",\n "StruveH",\n "StruveL",\n "Stub",\n "StudentTDistribution",\n "Style",\n "StyleBox",\n "StyleBoxAutoDelete",\n "StyleData",\n "StyleDefinitions",\n "StyleForm",\n "StyleHints",\n "StyleKeyMapping",\n "StyleMenuListing",\n "StyleNameDialogSettings",\n "StyleNames",\n "StylePrint",\n "StyleSheetPath",\n "Subdivide",\n "Subfactorial",\n "Subgraph",\n "SubMinus",\n "SubPlus",\n "SubresultantPolynomialRemainders",\n "SubresultantPolynomials",\n "Subresultants",\n "Subscript",\n "SubscriptBox",\n "SubscriptBoxOptions",\n "Subscripted",\n "Subsequences",\n "Subset",\n "SubsetCases",\n "SubsetCount",\n "SubsetEqual",\n "SubsetMap",\n "SubsetPosition",\n "SubsetQ",\n "SubsetReplace",\n "Subsets",\n "SubStar",\n "SubstitutionSystem",\n "Subsuperscript",\n "SubsuperscriptBox",\n "SubsuperscriptBoxOptions",\n "SubtitleEncoding",\n "SubtitleTrackSelection",\n "Subtract",\n "SubtractFrom",\n "SubtractSides",\n "SubValues",\n "Succeeds",\n "SucceedsEqual",\n "SucceedsSlantEqual",\n "SucceedsTilde",\n "Success",\n "SuchThat",\n "Sum",\n "SumConvergence",\n "SummationLayer",\n "Sunday",\n "SunPosition",\n "Sunrise",\n "Sunset",\n "SuperDagger",\n "SuperMinus",\n "SupernovaData",\n "SuperPlus",\n "Superscript",\n "SuperscriptBox",\n "SuperscriptBoxOptions",\n "Superset",\n "SupersetEqual",\n "SuperStar",\n "Surd",\n "SurdForm",\n "SurfaceAppearance",\n "SurfaceArea",\n "SurfaceColor",\n "SurfaceData",\n "SurfaceGraphics",\n "SurvivalDistribution",\n "SurvivalFunction",\n "SurvivalModel",\n "SurvivalModelFit",\n "SuspendPacket",\n "SuzukiDistribution",\n "SuzukiGroupSuz",\n "SwatchLegend",\n "Switch",\n "Symbol",\n "SymbolName",\n "SymletWavelet",\n "Symmetric",\n "SymmetricDifference",\n "SymmetricGroup",\n "SymmetricKey",\n "SymmetricMatrixQ",\n "SymmetricPolynomial",\n "SymmetricReduction",\n "Symmetrize",\n "SymmetrizedArray",\n "SymmetrizedArrayRules",\n "SymmetrizedDependentComponents",\n "SymmetrizedIndependentComponents",\n "SymmetrizedReplacePart",\n "SynchronousInitialization",\n "SynchronousUpdating",\n "Synonyms",\n "Syntax",\n "SyntaxForm",\n "SyntaxInformation",\n "SyntaxLength",\n "SyntaxPacket",\n "SyntaxQ",\n "SynthesizeMissingValues",\n "SystemCredential",\n "SystemCredentialData",\n "SystemCredentialKey",\n "SystemCredentialKeys",\n "SystemCredentialStoreObject",\n "SystemDialogInput",\n "SystemException",\n "SystemGet",\n "SystemHelpPath",\n "SystemInformation",\n "SystemInformationData",\n "SystemInstall",\n "SystemModel",\n "SystemModeler",\n "SystemModelExamples",\n "SystemModelLinearize",\n "SystemModelMeasurements",\n "SystemModelParametricSimulate",\n "SystemModelPlot",\n "SystemModelProgressReporting",\n "SystemModelReliability",\n "SystemModels",\n "SystemModelSimulate",\n "SystemModelSimulateSensitivity",\n "SystemModelSimulationData",\n "SystemOpen",\n "SystemOptions",\n "SystemProcessData",\n "SystemProcesses",\n "SystemsConnectionsModel",\n "SystemsModelControllerData",\n "SystemsModelDelay",\n "SystemsModelDelayApproximate",\n "SystemsModelDelete",\n "SystemsModelDimensions",\n "SystemsModelExtract",\n "SystemsModelFeedbackConnect",\n "SystemsModelLabels",\n "SystemsModelLinearity",\n "SystemsModelMerge",\n "SystemsModelOrder",\n "SystemsModelParallelConnect",\n "SystemsModelSeriesConnect",\n "SystemsModelStateFeedbackConnect",\n "SystemsModelVectorRelativeOrders",\n "SystemStub",\n "SystemTest",\n "Tab",\n "TabFilling",\n "Table",\n "TableAlignments",\n "TableDepth",\n "TableDirections",\n "TableForm",\n "TableHeadings",\n "TableSpacing",\n "TableView",\n "TableViewBox",\n "TableViewBoxAlignment",\n "TableViewBoxBackground",\n "TableViewBoxHeaders",\n "TableViewBoxItemSize",\n "TableViewBoxItemStyle",\n "TableViewBoxOptions",\n "TabSpacings",\n "TabView",\n "TabViewBox",\n "TabViewBoxOptions",\n "TagBox",\n "TagBoxNote",\n "TagBoxOptions",\n "TaggingRules",\n "TagSet",\n "TagSetDelayed",\n "TagStyle",\n "TagUnset",\n "Take",\n "TakeDrop",\n "TakeLargest",\n "TakeLargestBy",\n "TakeList",\n "TakeSmallest",\n "TakeSmallestBy",\n "TakeWhile",\n "Tally",\n "Tan",\n "Tanh",\n "TargetDevice",\n "TargetFunctions",\n "TargetSystem",\n "TargetUnits",\n "TaskAbort",\n "TaskExecute",\n "TaskObject",\n "TaskRemove",\n "TaskResume",\n "Tasks",\n "TaskSuspend",\n "TaskWait",\n "TautologyQ",\n "TelegraphProcess",\n "TemplateApply",\n "TemplateArgBox",\n "TemplateBox",\n "TemplateBoxOptions",\n "TemplateEvaluate",\n "TemplateExpression",\n "TemplateIf",\n "TemplateObject",\n "TemplateSequence",\n "TemplateSlot",\n "TemplateSlotSequence",\n "TemplateUnevaluated",\n "TemplateVerbatim",\n "TemplateWith",\n "TemporalData",\n "TemporalRegularity",\n "Temporary",\n "TemporaryVariable",\n "TensorContract",\n "TensorDimensions",\n "TensorExpand",\n "TensorProduct",\n "TensorQ",\n "TensorRank",\n "TensorReduce",\n "TensorSymmetry",\n "TensorTranspose",\n "TensorWedge",\n "TerminatedEvaluation",\n "TernaryListPlot",\n "TernaryPlotCorners",\n "TestID",\n "TestReport",\n "TestReportObject",\n "TestResultObject",\n "Tetrahedron",\n "TetrahedronBox",\n "TetrahedronBoxOptions",\n "TeXForm",\n "TeXSave",\n "Text",\n "Text3DBox",\n "Text3DBoxOptions",\n "TextAlignment",\n "TextBand",\n "TextBoundingBox",\n "TextBox",\n "TextCases",\n "TextCell",\n "TextClipboardType",\n "TextContents",\n "TextData",\n "TextElement",\n "TextForm",\n "TextGrid",\n "TextJustification",\n "TextLine",\n "TextPacket",\n "TextParagraph",\n "TextPosition",\n "TextRecognize",\n "TextSearch",\n "TextSearchReport",\n "TextSentences",\n "TextString",\n "TextStructure",\n "TextStyle",\n "TextTranslation",\n "Texture",\n "TextureCoordinateFunction",\n "TextureCoordinateScaling",\n "TextWords",\n "Therefore",\n "ThermodynamicData",\n "ThermometerGauge",\n "Thick",\n "Thickness",\n "Thin",\n "Thinning",\n "ThisLink",\n "ThomasPointProcess",\n "ThompsonGroupTh",\n "Thread",\n "Threaded",\n "ThreadingLayer",\n "ThreeJSymbol",\n "Threshold",\n "Through",\n "Throw",\n "ThueMorse",\n "Thumbnail",\n "Thursday",\n "TickDirection",\n "TickLabelOrientation",\n "TickLabelPositioning",\n "TickLabels",\n "TickLengths",\n "TickPositions",\n "Ticks",\n "TicksStyle",\n "TideData",\n "Tilde",\n "TildeEqual",\n "TildeFullEqual",\n "TildeTilde",\n "TimeConstrained",\n "TimeConstraint",\n "TimeDirection",\n "TimeFormat",\n "TimeGoal",\n "TimelinePlot",\n "TimeObject",\n "TimeObjectQ",\n "TimeRemaining",\n "Times",\n "TimesBy",\n "TimeSeries",\n "TimeSeriesAggregate",\n "TimeSeriesForecast",\n "TimeSeriesInsert",\n "TimeSeriesInvertibility",\n "TimeSeriesMap",\n "TimeSeriesMapThread",\n "TimeSeriesModel",\n "TimeSeriesModelFit",\n "TimeSeriesResample",\n "TimeSeriesRescale",\n "TimeSeriesShift",\n "TimeSeriesThread",\n "TimeSeriesWindow",\n "TimeSystem",\n "TimeSystemConvert",\n "TimeUsed",\n "TimeValue",\n "TimeWarpingCorrespondence",\n "TimeWarpingDistance",\n "TimeZone",\n "TimeZoneConvert",\n "TimeZoneOffset",\n "Timing",\n "Tiny",\n "TitleGrouping",\n "TitsGroupT",\n "ToBoxes",\n "ToCharacterCode",\n "ToColor",\n "ToContinuousTimeModel",\n "ToDate",\n "Today",\n "ToDiscreteTimeModel",\n "ToEntity",\n "ToeplitzMatrix",\n "ToExpression",\n "ToFileName",\n "Together",\n "Toggle",\n "ToggleFalse",\n "Toggler",\n "TogglerBar",\n "TogglerBox",\n "TogglerBoxOptions",\n "ToHeldExpression",\n "ToInvertibleTimeSeries",\n "TokenWords",\n "Tolerance",\n "ToLowerCase",\n "Tomorrow",\n "ToNumberField",\n "TooBig",\n "Tooltip",\n "TooltipBox",\n "TooltipBoxOptions",\n "TooltipDelay",\n "TooltipStyle",\n "ToonShading",\n "Top",\n "TopHatTransform",\n "ToPolarCoordinates",\n "TopologicalSort",\n "ToRadicals",\n "ToRawPointer",\n "ToRules",\n "Torus",\n "TorusGraph",\n "ToSphericalCoordinates",\n "ToString",\n "Total",\n "TotalHeight",\n "TotalLayer",\n "TotalVariationFilter",\n "TotalWidth",\n "TouchPosition",\n "TouchscreenAutoZoom",\n "TouchscreenControlPlacement",\n "ToUpperCase",\n "TourVideo",\n "Tr",\n "Trace",\n "TraceAbove",\n "TraceAction",\n "TraceBackward",\n "TraceDepth",\n "TraceDialog",\n "TraceForward",\n "TraceInternal",\n "TraceLevel",\n "TraceOff",\n "TraceOn",\n "TraceOriginal",\n "TracePrint",\n "TraceScan",\n "TrackCellChangeTimes",\n "TrackedSymbols",\n "TrackingFunction",\n "TracyWidomDistribution",\n "TradingChart",\n "TraditionalForm",\n "TraditionalFunctionNotation",\n "TraditionalNotation",\n "TraditionalOrder",\n "TrainImageContentDetector",\n "TrainingProgressCheckpointing",\n "TrainingProgressFunction",\n "TrainingProgressMeasurements",\n "TrainingProgressReporting",\n "TrainingStoppingCriterion",\n "TrainingUpdateSchedule",\n "TrainTextContentDetector",\n "TransferFunctionCancel",\n "TransferFunctionExpand",\n "TransferFunctionFactor",\n "TransferFunctionModel",\n "TransferFunctionPoles",\n "TransferFunctionTransform",\n "TransferFunctionZeros",\n "TransformationClass",\n "TransformationFunction",\n "TransformationFunctions",\n "TransformationMatrix",\n "TransformedDistribution",\n "TransformedField",\n "TransformedProcess",\n "TransformedRegion",\n "TransitionDirection",\n "TransitionDuration",\n "TransitionEffect",\n "TransitiveClosureGraph",\n "TransitiveReductionGraph",\n "Translate",\n "TranslationOptions",\n "TranslationTransform",\n "Transliterate",\n "Transparent",\n "TransparentColor",\n "Transpose",\n "TransposeLayer",\n "TrapEnterKey",\n "TrapSelection",\n "TravelDirections",\n "TravelDirectionsData",\n "TravelDistance",\n "TravelDistanceList",\n "TravelMethod",\n "TravelTime",\n "Tree",\n "TreeCases",\n "TreeChildren",\n "TreeCount",\n "TreeData",\n "TreeDelete",\n "TreeDepth",\n "TreeElementCoordinates",\n "TreeElementLabel",\n "TreeElementLabelFunction",\n "TreeElementLabelStyle",\n "TreeElementShape",\n "TreeElementShapeFunction",\n "TreeElementSize",\n "TreeElementSizeFunction",\n "TreeElementStyle",\n "TreeElementStyleFunction",\n "TreeExpression",\n "TreeExtract",\n "TreeFold",\n "TreeForm",\n "TreeGraph",\n "TreeGraphQ",\n "TreeInsert",\n "TreeLayout",\n "TreeLeafCount",\n "TreeLeafQ",\n "TreeLeaves",\n "TreeLevel",\n "TreeMap",\n "TreeMapAt",\n "TreeOutline",\n "TreePlot",\n "TreePosition",\n "TreeQ",\n "TreeReplacePart",\n "TreeRules",\n "TreeScan",\n "TreeSelect",\n "TreeSize",\n "TreeTraversalOrder",\n "TrendStyle",\n "Triangle",\n "TriangleCenter",\n "TriangleConstruct",\n "TriangleMeasurement",\n "TriangleWave",\n "TriangularDistribution",\n "TriangulateMesh",\n "Trig",\n "TrigExpand",\n "TrigFactor",\n "TrigFactorList",\n "Trigger",\n "TrigReduce",\n "TrigToExp",\n "TrimmedMean",\n "TrimmedVariance",\n "TropicalStormData",\n "True",\n "TrueQ",\n "TruncatedDistribution",\n "TruncatedPolyhedron",\n "TsallisQExponentialDistribution",\n "TsallisQGaussianDistribution",\n "TTest",\n "Tube",\n "TubeBezierCurveBox",\n "TubeBezierCurveBoxOptions",\n "TubeBox",\n "TubeBoxOptions",\n "TubeBSplineCurveBox",\n "TubeBSplineCurveBoxOptions",\n "Tuesday",\n "TukeyLambdaDistribution",\n "TukeyWindow",\n "TunnelData",\n "Tuples",\n "TuranGraph",\n "TuringMachine",\n "TuttePolynomial",\n "TwoWayRule",\n "Typed",\n "TypeDeclaration",\n "TypeEvaluate",\n "TypeHint",\n "TypeOf",\n "TypeSpecifier",\n "UnateQ",\n "Uncompress",\n "UnconstrainedParameters",\n "Undefined",\n "UnderBar",\n "Underflow",\n "Underlined",\n "Underoverscript",\n "UnderoverscriptBox",\n "UnderoverscriptBoxOptions",\n "Underscript",\n "UnderscriptBox",\n "UnderscriptBoxOptions",\n "UnderseaFeatureData",\n "UndirectedEdge",\n "UndirectedGraph",\n "UndirectedGraphQ",\n "UndoOptions",\n "UndoTrackedVariables",\n "Unequal",\n "UnequalTo",\n "Unevaluated",\n "UniformDistribution",\n "UniformGraphDistribution",\n "UniformPolyhedron",\n "UniformSumDistribution",\n "Uninstall",\n "Union",\n "UnionedEntityClass",\n "UnionPlus",\n "Unique",\n "UniqueElements",\n "UnitaryMatrixQ",\n "UnitBox",\n "UnitConvert",\n "UnitDimensions",\n "Unitize",\n "UnitRootTest",\n "UnitSimplify",\n "UnitStep",\n "UnitSystem",\n "UnitTriangle",\n "UnitVector",\n "UnitVectorLayer",\n "UnityDimensions",\n "UniverseModelData",\n "UniversityData",\n "UnixTime",\n "UnlabeledTree",\n "UnmanageObject",\n "Unprotect",\n "UnregisterExternalEvaluator",\n "UnsameQ",\n "UnsavedVariables",\n "Unset",\n "UnsetShared",\n "Until",\n "UntrackedVariables",\n "Up",\n "UpArrow",\n "UpArrowBar",\n "UpArrowDownArrow",\n "Update",\n "UpdateDynamicObjects",\n "UpdateDynamicObjectsSynchronous",\n "UpdateInterval",\n "UpdatePacletSites",\n "UpdateSearchIndex",\n "UpDownArrow",\n "UpEquilibrium",\n "UpperCaseQ",\n "UpperLeftArrow",\n "UpperRightArrow",\n "UpperTriangularize",\n "UpperTriangularMatrix",\n "UpperTriangularMatrixQ",\n "Upsample",\n "UpSet",\n "UpSetDelayed",\n "UpTee",\n "UpTeeArrow",\n "UpTo",\n "UpValues",\n "URL",\n "URLBuild",\n "URLDecode",\n "URLDispatcher",\n "URLDownload",\n "URLDownloadSubmit",\n "URLEncode",\n "URLExecute",\n "URLExpand",\n "URLFetch",\n "URLFetchAsynchronous",\n "URLParse",\n "URLQueryDecode",\n "URLQueryEncode",\n "URLRead",\n "URLResponseTime",\n "URLSave",\n "URLSaveAsynchronous",\n "URLShorten",\n "URLSubmit",\n "UseEmbeddedLibrary",\n "UseGraphicsRange",\n "UserDefinedWavelet",\n "Using",\n "UsingFrontEnd",\n "UtilityFunction",\n "V2Get",\n "ValenceErrorHandling",\n "ValenceFilling",\n "ValidationLength",\n "ValidationSet",\n "ValueBox",\n "ValueBoxOptions",\n "ValueDimensions",\n "ValueForm",\n "ValuePreprocessingFunction",\n "ValueQ",\n "Values",\n "ValuesData",\n "VandermondeMatrix",\n "Variables",\n "Variance",\n "VarianceEquivalenceTest",\n "VarianceEstimatorFunction",\n "VarianceGammaDistribution",\n "VarianceGammaPointProcess",\n "VarianceTest",\n "VariogramFunction",\n "VariogramModel",\n "VectorAngle",\n "VectorAround",\n "VectorAspectRatio",\n "VectorColorFunction",\n "VectorColorFunctionScaling",\n "VectorDensityPlot",\n "VectorDisplacementPlot",\n "VectorDisplacementPlot3D",\n "VectorGlyphData",\n "VectorGreater",\n "VectorGreaterEqual",\n "VectorLess",\n "VectorLessEqual",\n "VectorMarkers",\n "VectorPlot",\n "VectorPlot3D",\n "VectorPoints",\n "VectorQ",\n "VectorRange",\n "Vectors",\n "VectorScale",\n "VectorScaling",\n "VectorSizes",\n "VectorStyle",\n "Vee",\n "Verbatim",\n "Verbose",\n "VerificationTest",\n "VerifyConvergence",\n "VerifyDerivedKey",\n "VerifyDigitalSignature",\n "VerifyFileSignature",\n "VerifyInterpretation",\n "VerifySecurityCertificates",\n "VerifySolutions",\n "VerifyTestAssumptions",\n "VersionedPreferences",\n "VertexAdd",\n "VertexCapacity",\n "VertexChromaticNumber",\n "VertexColors",\n "VertexComponent",\n "VertexConnectivity",\n "VertexContract",\n "VertexCoordinateRules",\n "VertexCoordinates",\n "VertexCorrelationSimilarity",\n "VertexCosineSimilarity",\n "VertexCount",\n "VertexCoverQ",\n "VertexDataCoordinates",\n "VertexDegree",\n "VertexDelete",\n "VertexDiceSimilarity",\n "VertexEccentricity",\n "VertexInComponent",\n "VertexInComponentGraph",\n "VertexInDegree",\n "VertexIndex",\n "VertexJaccardSimilarity",\n "VertexLabeling",\n "VertexLabels",\n "VertexLabelStyle",\n "VertexList",\n "VertexNormals",\n "VertexOutComponent",\n "VertexOutComponentGraph",\n "VertexOutDegree",\n "VertexQ",\n "VertexRenderingFunction",\n "VertexReplace",\n "VertexShape",\n "VertexShapeFunction",\n "VertexSize",\n "VertexStyle",\n "VertexTextureCoordinates",\n "VertexTransitiveGraphQ",\n "VertexWeight",\n "VertexWeightedGraphQ",\n "Vertical",\n "VerticalBar",\n "VerticalForm",\n "VerticalGauge",\n "VerticalSeparator",\n "VerticalSlider",\n "VerticalTilde",\n "Video",\n "VideoCapture",\n "VideoCombine",\n "VideoDelete",\n "VideoEncoding",\n "VideoExtractFrames",\n "VideoFrameList",\n "VideoFrameMap",\n "VideoGenerator",\n "VideoInsert",\n "VideoIntervals",\n "VideoJoin",\n "VideoMap",\n "VideoMapList",\n "VideoMapTimeSeries",\n "VideoPadding",\n "VideoPause",\n "VideoPlay",\n "VideoQ",\n "VideoRecord",\n "VideoReplace",\n "VideoScreenCapture",\n "VideoSplit",\n "VideoStop",\n "VideoStream",\n "VideoStreams",\n "VideoTimeStretch",\n "VideoTrackSelection",\n "VideoTranscode",\n "VideoTransparency",\n "VideoTrim",\n "ViewAngle",\n "ViewCenter",\n "ViewMatrix",\n "ViewPoint",\n "ViewPointSelectorSettings",\n "ViewPort",\n "ViewProjection",\n "ViewRange",\n "ViewVector",\n "ViewVertical",\n "VirtualGroupData",\n "Visible",\n "VisibleCell",\n "VoiceStyleData",\n "VoigtDistribution",\n "VolcanoData",\n "Volume",\n "VonMisesDistribution",\n "VoronoiMesh",\n "WaitAll",\n "WaitAsynchronousTask",\n "WaitNext",\n "WaitUntil",\n "WakebyDistribution",\n "WalleniusHypergeometricDistribution",\n "WaringYuleDistribution",\n "WarpingCorrespondence",\n "WarpingDistance",\n "WatershedComponents",\n "WatsonUSquareTest",\n "WattsStrogatzGraphDistribution",\n "WaveletBestBasis",\n "WaveletFilterCoefficients",\n "WaveletImagePlot",\n "WaveletListPlot",\n "WaveletMapIndexed",\n "WaveletMatrixPlot",\n "WaveletPhi",\n "WaveletPsi",\n "WaveletScale",\n "WaveletScalogram",\n "WaveletThreshold",\n "WavePDEComponent",\n "WeaklyConnectedComponents",\n "WeaklyConnectedGraphComponents",\n "WeaklyConnectedGraphQ",\n "WeakStationarity",\n "WeatherData",\n "WeatherForecastData",\n "WebAudioSearch",\n "WebColumn",\n "WebElementObject",\n "WeberE",\n "WebExecute",\n "WebImage",\n "WebImageSearch",\n "WebItem",\n "WebPageMetaInformation",\n "WebRow",\n "WebSearch",\n "WebSessionObject",\n "WebSessions",\n "WebWindowObject",\n "Wedge",\n "Wednesday",\n "WeibullDistribution",\n "WeierstrassE1",\n "WeierstrassE2",\n "WeierstrassE3",\n "WeierstrassEta1",\n "WeierstrassEta2",\n "WeierstrassEta3",\n "WeierstrassHalfPeriods",\n "WeierstrassHalfPeriodW1",\n "WeierstrassHalfPeriodW2",\n "WeierstrassHalfPeriodW3",\n "WeierstrassInvariantG2",\n "WeierstrassInvariantG3",\n "WeierstrassInvariants",\n "WeierstrassP",\n "WeierstrassPPrime",\n "WeierstrassSigma",\n "WeierstrassZeta",\n "WeightedAdjacencyGraph",\n "WeightedAdjacencyMatrix",\n "WeightedData",\n "WeightedGraphQ",\n "Weights",\n "WelchWindow",\n "WheelGraph",\n "WhenEvent",\n "Which",\n "While",\n "White",\n "WhiteNoiseProcess",\n "WhitePoint",\n "Whitespace",\n "WhitespaceCharacter",\n "WhittakerM",\n "WhittakerW",\n "WholeCellGroupOpener",\n "WienerFilter",\n "WienerProcess",\n "WignerD",\n "WignerSemicircleDistribution",\n "WikidataData",\n "WikidataSearch",\n "WikipediaData",\n "WikipediaSearch",\n "WilksW",\n "WilksWTest",\n "WindDirectionData",\n "WindingCount",\n "WindingPolygon",\n "WindowClickSelect",\n "WindowElements",\n "WindowFloating",\n "WindowFrame",\n "WindowFrameElements",\n "WindowMargins",\n "WindowMovable",\n "WindowOpacity",\n "WindowPersistentStyles",\n "WindowSelected",\n "WindowSize",\n "WindowStatusArea",\n "WindowTitle",\n "WindowToolbars",\n "WindowWidth",\n "WindSpeedData",\n "WindVectorData",\n "WinsorizedMean",\n "WinsorizedVariance",\n "WishartMatrixDistribution",\n "With",\n "WithCleanup",\n "WithLock",\n "WolframAlpha",\n "WolframAlphaDate",\n "WolframAlphaQuantity",\n "WolframAlphaResult",\n "WolframCloudSettings",\n "WolframLanguageData",\n "Word",\n "WordBoundary",\n "WordCharacter",\n "WordCloud",\n "WordCount",\n "WordCounts",\n "WordData",\n "WordDefinition",\n "WordFrequency",\n "WordFrequencyData",\n "WordList",\n "WordOrientation",\n "WordSearch",\n "WordSelectionFunction",\n "WordSeparators",\n "WordSpacings",\n "WordStem",\n "WordTranslation",\n "WorkingPrecision",\n "WrapAround",\n "Write",\n "WriteLine",\n "WriteString",\n "Wronskian",\n "XMLElement",\n "XMLObject",\n "XMLTemplate",\n "Xnor",\n "Xor",\n "XYZColor",\n "Yellow",\n "Yesterday",\n "YuleDissimilarity",\n "ZernikeR",\n "ZeroSymmetric",\n "ZeroTest",\n "ZeroWidthTimes",\n "Zeta",\n "ZetaZero",\n "ZIPCodeData",\n "ZipfDistribution",\n "ZoomCenter",\n "ZoomFactor",\n "ZTest",\n "ZTransform",\n "$Aborted",\n "$ActivationGroupID",\n "$ActivationKey",\n "$ActivationUserRegistered",\n "$AddOnsDirectory",\n "$AllowDataUpdates",\n "$AllowExternalChannelFunctions",\n "$AllowInternet",\n "$AssertFunction",\n "$Assumptions",\n "$AsynchronousTask",\n "$AudioDecoders",\n "$AudioEncoders",\n "$AudioInputDevices",\n "$AudioOutputDevices",\n "$BaseDirectory",\n "$BasePacletsDirectory",\n "$BatchInput",\n "$BatchOutput",\n "$BlockchainBase",\n "$BoxForms",\n "$ByteOrdering",\n "$CacheBaseDirectory",\n "$Canceled",\n "$ChannelBase",\n "$CharacterEncoding",\n "$CharacterEncodings",\n "$CloudAccountName",\n "$CloudBase",\n "$CloudConnected",\n "$CloudConnection",\n "$CloudCreditsAvailable",\n "$CloudEvaluation",\n "$CloudExpressionBase",\n "$CloudObjectNameFormat",\n "$CloudObjectURLType",\n "$CloudRootDirectory",\n "$CloudSymbolBase",\n "$CloudUserID",\n "$CloudUserUUID",\n "$CloudVersion",\n "$CloudVersionNumber",\n "$CloudWolframEngineVersionNumber",\n "$CommandLine",\n "$CompilationTarget",\n "$CompilerEnvironment",\n "$ConditionHold",\n "$ConfiguredKernels",\n "$Context",\n "$ContextAliases",\n "$ContextPath",\n "$ControlActiveSetting",\n "$Cookies",\n "$CookieStore",\n "$CreationDate",\n "$CryptographicEllipticCurveNames",\n "$CurrentLink",\n "$CurrentTask",\n "$CurrentWebSession",\n "$DataStructures",\n "$DateStringFormat",\n "$DefaultAudioInputDevice",\n "$DefaultAudioOutputDevice",\n "$DefaultFont",\n "$DefaultFrontEnd",\n "$DefaultImagingDevice",\n "$DefaultKernels",\n "$DefaultLocalBase",\n "$DefaultLocalKernel",\n "$DefaultMailbox",\n "$DefaultNetworkInterface",\n "$DefaultPath",\n "$DefaultProxyRules",\n "$DefaultRemoteBatchSubmissionEnvironment",\n "$DefaultRemoteKernel",\n "$DefaultSystemCredentialStore",\n "$Display",\n "$DisplayFunction",\n "$DistributedContexts",\n "$DynamicEvaluation",\n "$Echo",\n "$EmbedCodeEnvironments",\n "$EmbeddableServices",\n "$EntityStores",\n "$Epilog",\n "$EvaluationCloudBase",\n "$EvaluationCloudObject",\n "$EvaluationEnvironment",\n "$ExportFormats",\n "$ExternalIdentifierTypes",\n "$ExternalStorageBase",\n "$Failed",\n "$FinancialDataSource",\n "$FontFamilies",\n "$FormatType",\n "$FrontEnd",\n "$FrontEndSession",\n "$GeneratedAssetLocation",\n "$GeoEntityTypes",\n "$GeoLocation",\n "$GeoLocationCity",\n "$GeoLocationCountry",\n "$GeoLocationPrecision",\n "$GeoLocationSource",\n "$HistoryLength",\n "$HomeDirectory",\n "$HTMLExportRules",\n "$HTTPCookies",\n "$HTTPRequest",\n "$IgnoreEOF",\n "$ImageFormattingWidth",\n "$ImageResolution",\n "$ImagingDevice",\n "$ImagingDevices",\n "$ImportFormats",\n "$IncomingMailSettings",\n "$InitialDirectory",\n "$Initialization",\n "$InitializationContexts",\n "$Input",\n "$InputFileName",\n "$InputStreamMethods",\n "$Inspector",\n "$InstallationDate",\n "$InstallationDirectory",\n "$InterfaceEnvironment",\n "$InterpreterTypes",\n "$IterationLimit",\n "$KernelCount",\n "$KernelID",\n "$Language",\n "$LaunchDirectory",\n "$LibraryPath",\n "$LicenseExpirationDate",\n "$LicenseID",\n "$LicenseProcesses",\n "$LicenseServer",\n "$LicenseSubprocesses",\n "$LicenseType",\n "$Line",\n "$Linked",\n "$LinkSupported",\n "$LoadedFiles",\n "$LocalBase",\n "$LocalSymbolBase",\n "$MachineAddresses",\n "$MachineDomain",\n "$MachineDomains",\n "$MachineEpsilon",\n "$MachineID",\n "$MachineName",\n "$MachinePrecision",\n "$MachineType",\n "$MaxDisplayedChildren",\n "$MaxExtraPrecision",\n "$MaxLicenseProcesses",\n "$MaxLicenseSubprocesses",\n "$MaxMachineNumber",\n "$MaxNumber",\n "$MaxPiecewiseCases",\n "$MaxPrecision",\n "$MaxRootDegree",\n "$MessageGroups",\n "$MessageList",\n "$MessagePrePrint",\n "$Messages",\n "$MinMachineNumber",\n "$MinNumber",\n "$MinorReleaseNumber",\n "$MinPrecision",\n "$MobilePhone",\n "$ModuleNumber",\n "$NetworkConnected",\n "$NetworkInterfaces",\n "$NetworkLicense",\n "$NewMessage",\n "$NewSymbol",\n "$NotebookInlineStorageLimit",\n "$Notebooks",\n "$NoValue",\n "$NumberMarks",\n "$Off",\n "$OperatingSystem",\n "$Output",\n "$OutputForms",\n "$OutputSizeLimit",\n "$OutputStreamMethods",\n "$Packages",\n "$ParentLink",\n "$ParentProcessID",\n "$PasswordFile",\n "$PatchLevelID",\n "$Path",\n "$PathnameSeparator",\n "$PerformanceGoal",\n "$Permissions",\n "$PermissionsGroupBase",\n "$PersistenceBase",\n "$PersistencePath",\n "$PipeSupported",\n "$PlotTheme",\n "$Post",\n "$Pre",\n "$PreferencesDirectory",\n "$PreInitialization",\n "$PrePrint",\n "$PreRead",\n "$PrintForms",\n "$PrintLiteral",\n "$Printout3DPreviewer",\n "$ProcessID",\n "$ProcessorCount",\n "$ProcessorType",\n "$ProductInformation",\n "$ProgramName",\n "$ProgressReporting",\n "$PublisherID",\n "$RandomGeneratorState",\n "$RandomState",\n "$RecursionLimit",\n "$RegisteredDeviceClasses",\n "$RegisteredUserName",\n "$ReleaseNumber",\n "$RequesterAddress",\n "$RequesterCloudUserID",\n "$RequesterCloudUserUUID",\n "$RequesterWolframID",\n "$RequesterWolframUUID",\n "$ResourceSystemBase",\n "$ResourceSystemPath",\n "$RootDirectory",\n "$ScheduledTask",\n "$ScriptCommandLine",\n "$ScriptInputString",\n "$SecuredAuthenticationKeyTokens",\n "$ServiceCreditsAvailable",\n "$Services",\n "$SessionID",\n "$SetParentLink",\n "$SharedFunctions",\n "$SharedVariables",\n "$SoundDisplay",\n "$SoundDisplayFunction",\n "$SourceLink",\n "$SSHAuthentication",\n "$SubtitleDecoders",\n "$SubtitleEncoders",\n "$SummaryBoxDataSizeLimit",\n "$SuppressInputFormHeads",\n "$SynchronousEvaluation",\n "$SyntaxHandler",\n "$System",\n "$SystemCharacterEncoding",\n "$SystemCredentialStore",\n "$SystemID",\n "$SystemMemory",\n "$SystemShell",\n "$SystemTimeZone",\n "$SystemWordLength",\n "$TargetSystems",\n "$TemplatePath",\n "$TemporaryDirectory",\n "$TemporaryPrefix",\n "$TestFileName",\n "$TextStyle",\n "$TimedOut",\n "$TimeUnit",\n "$TimeZone",\n "$TimeZoneEntity",\n "$TopDirectory",\n "$TraceOff",\n "$TraceOn",\n "$TracePattern",\n "$TracePostAction",\n "$TracePreAction",\n "$UnitSystem",\n "$Urgent",\n "$UserAddOnsDirectory",\n "$UserAgentLanguages",\n "$UserAgentMachine",\n "$UserAgentName",\n "$UserAgentOperatingSystem",\n "$UserAgentString",\n "$UserAgentVersion",\n "$UserBaseDirectory",\n "$UserBasePacletsDirectory",\n "$UserDocumentsDirectory",\n "$Username",\n "$UserName",\n "$UserURLBase",\n "$Version",\n "$VersionNumber",\n "$VideoDecoders",\n "$VideoEncoders",\n "$VoiceStyles",\n "$WolframDocumentsDirectory",\n "$WolframID",\n "$WolframUUID"\n];\n\n/*\nLanguage: Wolfram Language\nDescription: The Wolfram Language is the programming language used in Wolfram Mathematica, a modern technical computing system spanning most areas of technical computing.\nAuthors: Patrick Scheibe , Robert Jacobson \nWebsite: https://www.wolfram.com/mathematica/\nCategory: scientific\n*/\n\n\n/** @type LanguageFn */\nfunction mathematica(hljs) {\n const regex = hljs.regex;\n /*\n This rather scary looking matching of Mathematica numbers is carefully explained by Robert Jacobson here:\n https://wltools.github.io/LanguageSpec/Specification/Syntax/Number-representations/\n */\n const BASE_RE = /([2-9]|[1-2]\\d|[3][0-5])\\^\\^/;\n const BASE_DIGITS_RE = /(\\w*\\.\\w+|\\w+\\.\\w*|\\w+)/;\n const NUMBER_RE = /(\\d*\\.\\d+|\\d+\\.\\d*|\\d+)/;\n const BASE_NUMBER_RE = regex.either(regex.concat(BASE_RE, BASE_DIGITS_RE), NUMBER_RE);\n\n const ACCURACY_RE = /``[+-]?(\\d*\\.\\d+|\\d+\\.\\d*|\\d+)/;\n const PRECISION_RE = /`([+-]?(\\d*\\.\\d+|\\d+\\.\\d*|\\d+))?/;\n const APPROXIMATE_NUMBER_RE = regex.either(ACCURACY_RE, PRECISION_RE);\n\n const SCIENTIFIC_NOTATION_RE = /\\*\\^[+-]?\\d+/;\n\n const MATHEMATICA_NUMBER_RE = regex.concat(\n BASE_NUMBER_RE,\n regex.optional(APPROXIMATE_NUMBER_RE),\n regex.optional(SCIENTIFIC_NOTATION_RE)\n );\n\n const NUMBERS = {\n className: \'number\',\n relevance: 0,\n begin: MATHEMATICA_NUMBER_RE\n };\n\n const SYMBOL_RE = /[a-zA-Z$][a-zA-Z0-9$]*/;\n const SYSTEM_SYMBOLS_SET = new Set(SYSTEM_SYMBOLS);\n /** @type {Mode} */\n const SYMBOLS = { variants: [\n {\n className: \'builtin-symbol\',\n begin: SYMBOL_RE,\n // for performance out of fear of regex.either(...Mathematica.SYSTEM_SYMBOLS)\n "on:begin": (match, response) => {\n if (!SYSTEM_SYMBOLS_SET.has(match[0])) response.ignoreMatch();\n }\n },\n {\n className: \'symbol\',\n relevance: 0,\n begin: SYMBOL_RE\n }\n ] };\n\n const NAMED_CHARACTER = {\n className: \'named-character\',\n begin: /\\\\\\[[$a-zA-Z][$a-zA-Z0-9]+\\]/\n };\n\n const OPERATORS = {\n className: \'operator\',\n relevance: 0,\n begin: /[+\\-*/,;.:@~=><&|_`\'^?!%]+/\n };\n const PATTERNS = {\n className: \'pattern\',\n relevance: 0,\n begin: /([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/\n };\n\n const SLOTS = {\n className: \'slot\',\n relevance: 0,\n begin: /#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/\n };\n\n const BRACES = {\n className: \'brace\',\n relevance: 0,\n begin: /[[\\](){}]/\n };\n\n const MESSAGES = {\n className: \'message-name\',\n relevance: 0,\n begin: regex.concat("::", SYMBOL_RE)\n };\n\n return {\n name: \'Mathematica\',\n aliases: [\n \'mma\',\n \'wl\'\n ],\n classNameAliases: {\n brace: \'punctuation\',\n pattern: \'type\',\n slot: \'type\',\n symbol: \'variable\',\n \'named-character\': \'variable\',\n \'builtin-symbol\': \'built_in\',\n \'message-name\': \'string\'\n },\n contains: [\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, { contains: [ \'self\' ] }),\n PATTERNS,\n SLOTS,\n MESSAGES,\n SYMBOLS,\n NAMED_CHARACTER,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n OPERATORS,\n BRACES\n ]\n };\n}\n\nmodule.exports = mathematica;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAxLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25CLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQ0FBcUMsc0JBQXNCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbWF0aGVtYXRpY2EuanM/M2U5YyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTWVNURU1fU1lNQk9MUyA9IFtcbiAgXCJBQVNUcmlhbmdsZVwiLFxuICBcIkFiZWxpYW5Hcm91cFwiLFxuICBcIkFib3J0XCIsXG4gIFwiQWJvcnRLZXJuZWxzXCIsXG4gIFwiQWJvcnRQcm90ZWN0XCIsXG4gIFwiQWJvcnRTY2hlZHVsZWRUYXNrXCIsXG4gIFwiQWJvdmVcIixcbiAgXCJBYnNcIixcbiAgXCJBYnNBcmdcIixcbiAgXCJBYnNBcmdQbG90XCIsXG4gIFwiQWJzb2x1dGVcIixcbiAgXCJBYnNvbHV0ZUNvcnJlbGF0aW9uXCIsXG4gIFwiQWJzb2x1dGVDb3JyZWxhdGlvbkZ1bmN0aW9uXCIsXG4gIFwiQWJzb2x1dGVDdXJyZW50VmFsdWVcIixcbiAgXCJBYnNvbHV0ZURhc2hpbmdcIixcbiAgXCJBYnNvbHV0ZUZpbGVOYW1lXCIsXG4gIFwiQWJzb2x1dGVPcHRpb25zXCIsXG4gIFwiQWJzb2x1dGVQb2ludFNpemVcIixcbiAgXCJBYnNvbHV0ZVRoaWNrbmVzc1wiLFxuICBcIkFic29sdXRlVGltZVwiLFxuICBcIkFic29sdXRlVGltaW5nXCIsXG4gIFwiQWNjZXB0YW5jZVRocmVzaG9sZFwiLFxuICBcIkFjY291bnRpbmdGb3JtXCIsXG4gIFwiQWNjdW11bGF0ZVwiLFxuICBcIkFjY3VyYWN5XCIsXG4gIFwiQWNjdXJhY3lHb2FsXCIsXG4gIFwiQWNvdXN0aWNBYnNvcmJpbmdWYWx1ZVwiLFxuICBcIkFjb3VzdGljSW1wZWRhbmNlVmFsdWVcIixcbiAgXCJBY291c3RpY05vcm1hbFZlbG9jaXR5VmFsdWVcIixcbiAgXCJBY291c3RpY1BERUNvbXBvbmVudFwiLFxuICBcIkFjb3VzdGljUHJlc3N1cmVDb25kaXRpb25cIixcbiAgXCJBY291c3RpY1JhZGlhdGlvblZhbHVlXCIsXG4gIFwiQWNvdXN0aWNTb3VuZEhhcmRWYWx1ZVwiLFxuICBcIkFjb3VzdGljU291bmRTb2Z0Q29uZGl0aW9uXCIsXG4gIFwiQWN0aW9uRGVsYXlcIixcbiAgXCJBY3Rpb25NZW51XCIsXG4gIFwiQWN0aW9uTWVudUJveFwiLFxuICBcIkFjdGlvbk1lbnVCb3hPcHRpb25zXCIsXG4gIFwiQWN0aXZhdGVcIixcbiAgXCJBY3RpdmVcIixcbiAgXCJBY3RpdmVDbGFzc2lmaWNhdGlvblwiLFxuICBcIkFjdGl2ZUNsYXNzaWZpY2F0aW9uT2JqZWN0XCIsXG4gIFwiQWN0aXZlSXRlbVwiLFxuICBcIkFjdGl2ZVByZWRpY3Rpb25cIixcbiAgXCJBY3RpdmVQcmVkaWN0aW9uT2JqZWN0XCIsXG4gIFwiQWN0aXZlU3R5bGVcIixcbiAgXCJBY3ljbGljR3JhcGhRXCIsXG4gIFwiQWRkT25IZWxwUGF0aFwiLFxuICBcIkFkZFNpZGVzXCIsXG4gIFwiQWRkVG9cIixcbiAgXCJBZGRUb1NlYXJjaEluZGV4XCIsXG4gIFwiQWRkVXNlcnNcIixcbiAgXCJBZGphY2VuY3lHcmFwaFwiLFxuICBcIkFkamFjZW5jeUxpc3RcIixcbiAgXCJBZGphY2VuY3lNYXRyaXhcIixcbiAgXCJBZGphY2VudE1lc2hDZWxsc1wiLFxuICBcIkFkanVnYXRlXCIsXG4gIFwiQWRqdXN0bWVudEJveFwiLFxuICBcIkFkanVzdG1lbnRCb3hPcHRpb25zXCIsXG4gIFwiQWRqdXN0VGltZVNlcmllc0ZvcmVjYXN0XCIsXG4gIFwiQWRtaW5pc3RyYXRpdmVEaXZpc2lvbkRhdGFcIixcbiAgXCJBZmZpbmVIYWxmU3BhY2VcIixcbiAgXCJBZmZpbmVTcGFjZVwiLFxuICBcIkFmZmluZVN0YXRlU3BhY2VNb2RlbFwiLFxuICBcIkFmZmluZVRyYW5zZm9ybVwiLFxuICBcIkFmdGVyXCIsXG4gIFwiQWdncmVnYXRlZEVudGl0eUNsYXNzXCIsXG4gIFwiQWdncmVnYXRpb25MYXllclwiLFxuICBcIkFpcmNyYWZ0RGF0YVwiLFxuICBcIkFpcnBvcnREYXRhXCIsXG4gIFwiQWlyUHJlc3N1cmVEYXRhXCIsXG4gIFwiQWlyU291bmRBdHRlbnVhdGlvblwiLFxuICBcIkFpclRlbXBlcmF0dXJlRGF0YVwiLFxuICBcIkFpcnlBaVwiLFxuICBcIkFpcnlBaVByaW1lXCIsXG4gIFwiQWlyeUFpWmVyb1wiLFxuICBcIkFpcnlCaVwiLFxuICBcIkFpcnlCaVByaW1lXCIsXG4gIFwiQWlyeUJpWmVyb1wiLFxuICBcIkFsZ2VicmFpY0ludGVnZXJRXCIsXG4gIFwiQWxnZWJyYWljTnVtYmVyXCIsXG4gIFwiQWxnZWJyYWljTnVtYmVyRGVub21pbmF0b3JcIixcbiAgXCJBbGdlYnJhaWNOdW1iZXJOb3JtXCIsXG4gIFwiQWxnZWJyYWljTnVtYmVyUG9seW5vbWlhbFwiLFxuICBcIkFsZ2VicmFpY051bWJlclRyYWNlXCIsXG4gIFwiQWxnZWJyYWljUnVsZXNcIixcbiAgXCJBbGdlYnJhaWNSdWxlc0RhdGFcIixcbiAgXCJBbGdlYnJhaWNzXCIsXG4gIFwiQWxnZWJyYWljVW5pdFFcIixcbiAgXCJBbGlnbm1lbnRcIixcbiAgXCJBbGlnbm1lbnRNYXJrZXJcIixcbiAgXCJBbGlnbm1lbnRQb2ludFwiLFxuICBcIkFsbFwiLFxuICBcIkFsbG93QWR1bHRDb250ZW50XCIsXG4gIFwiQWxsb3dDaGF0U2VydmljZXNcIixcbiAgXCJBbGxvd2VkQ2xvdWRFeHRyYVBhcmFtZXRlcnNcIixcbiAgXCJBbGxvd2VkQ2xvdWRQYXJhbWV0ZXJFeHRlbnNpb25zXCIsXG4gIFwiQWxsb3dlZERpbWVuc2lvbnNcIixcbiAgXCJBbGxvd2VkRnJlcXVlbmN5UmFuZ2VcIixcbiAgXCJBbGxvd2VkSGVhZHNcIixcbiAgXCJBbGxvd0dyb3VwQ2xvc2VcIixcbiAgXCJBbGxvd0luY29tcGxldGVcIixcbiAgXCJBbGxvd0lubGluZUNlbGxzXCIsXG4gIFwiQWxsb3dLZXJuZWxJbml0aWFsaXphdGlvblwiLFxuICBcIkFsbG93TG9vc2VHcmFtbWFyXCIsXG4gIFwiQWxsb3dSZXZlcnNlR3JvdXBDbG9zZVwiLFxuICBcIkFsbG93U2NyaXB0TGV2ZWxDaGFuZ2VcIixcbiAgXCJBbGxvd1ZlcnNpb25VcGRhdGVcIixcbiAgXCJBbGxUcnVlXCIsXG4gIFwiQWxwaGFiZXRcIixcbiAgXCJBbHBoYWJldGljT3JkZXJcIixcbiAgXCJBbHBoYWJldGljU29ydFwiLFxuICBcIkFscGhhQ2hhbm5lbFwiLFxuICBcIkFsdGVybmF0ZUltYWdlXCIsXG4gIFwiQWx0ZXJuYXRpbmdGYWN0b3JpYWxcIixcbiAgXCJBbHRlcm5hdGluZ0dyb3VwXCIsXG4gIFwiQWx0ZXJuYXRpdmVIeXBvdGhlc2lzXCIsXG4gIFwiQWx0ZXJuYXRpdmVzXCIsXG4gIFwiQWx0aXR1ZGVNZXRob2RcIixcbiAgXCJBbWJpZW50TGlnaHRcIixcbiAgXCJBbWJpZ3VpdHlGdW5jdGlvblwiLFxuICBcIkFtYmlndWl0eUxpc3RcIixcbiAgXCJBbmFseXRpY1wiLFxuICBcIkFuYXRvbXlEYXRhXCIsXG4gIFwiQW5hdG9teUZvcm1cIixcbiAgXCJBbmF0b215UGxvdDNEXCIsXG4gIFwiQW5hdG9teVNraW5TdHlsZVwiLFxuICBcIkFuYXRvbXlTdHlsaW5nXCIsXG4gIFwiQW5jaG9yZWRTZWFyY2hcIixcbiAgXCJBbmRcIixcbiAgXCJBbmRlcnNvbkRhcmxpbmdUZXN0XCIsXG4gIFwiQW5nZXJKXCIsXG4gIFwiQW5nbGVCaXNlY3RvclwiLFxuICBcIkFuZ2xlQnJhY2tldFwiLFxuICBcIkFuZ2xlUGF0aFwiLFxuICBcIkFuZ2xlUGF0aDNEXCIsXG4gIFwiQW5nbGVWZWN0b3JcIixcbiAgXCJBbmd1bGFyR2F1Z2VcIixcbiAgXCJBbmltYXRlXCIsXG4gIFwiQW5pbWF0ZWRJbWFnZVwiLFxuICBcIkFuaW1hdGlvbkN5Y2xlT2Zmc2V0XCIsXG4gIFwiQW5pbWF0aW9uQ3ljbGVSZXBldGl0aW9uc1wiLFxuICBcIkFuaW1hdGlvbkRpcmVjdGlvblwiLFxuICBcIkFuaW1hdGlvbkRpc3BsYXlUaW1lXCIsXG4gIFwiQW5pbWF0aW9uUmF0ZVwiLFxuICBcIkFuaW1hdGlvblJlcGV0aXRpb25zXCIsXG4gIFwiQW5pbWF0aW9uUnVubmluZ1wiLFxuICBcIkFuaW1hdGlvblJ1blRpbWVcIixcbiAgXCJBbmltYXRpb25UaW1lSW5kZXhcIixcbiAgXCJBbmltYXRpb25WaWRlb1wiLFxuICBcIkFuaW1hdG9yXCIsXG4gIFwiQW5pbWF0b3JCb3hcIixcbiAgXCJBbmltYXRvckJveE9wdGlvbnNcIixcbiAgXCJBbmltYXRvckVsZW1lbnRzXCIsXG4gIFwiQW5ub3RhdGVcIixcbiAgXCJBbm5vdGF0aW9uXCIsXG4gIFwiQW5ub3RhdGlvbkRlbGV0ZVwiLFxuICBcIkFubm90YXRpb25LZXlzXCIsXG4gIFwiQW5ub3RhdGlvblJ1bGVzXCIsXG4gIFwiQW5ub3RhdGlvblZhbHVlXCIsXG4gIFwiQW5udWl0eVwiLFxuICBcIkFubnVpdHlEdWVcIixcbiAgXCJBbm51bHVzXCIsXG4gIFwiQW5vbWFseURldGVjdGlvblwiLFxuICBcIkFub21hbHlEZXRlY3RvclwiLFxuICBcIkFub21hbHlEZXRlY3RvckZ1bmN0aW9uXCIsXG4gIFwiQW5vbnltb3VzXCIsXG4gIFwiQW50aWFsaWFzaW5nXCIsXG4gIFwiQW50aWhlcm1pdGlhblwiLFxuICBcIkFudGloZXJtaXRpYW5NYXRyaXhRXCIsXG4gIFwiQW50aXN5bW1ldHJpY1wiLFxuICBcIkFudGlzeW1tZXRyaWNNYXRyaXhRXCIsXG4gIFwiQW50b255bXNcIixcbiAgXCJBbnlPcmRlclwiLFxuICBcIkFueVN1YnNldFwiLFxuICBcIkFueVRydWVcIixcbiAgXCJBcGFydFwiLFxuICBcIkFwYXJ0U3F1YXJlRnJlZVwiLFxuICBcIkFQSUZ1bmN0aW9uXCIsXG4gIFwiQXBwZWFyYW5jZVwiLFxuICBcIkFwcGVhcmFuY2VFbGVtZW50c1wiLFxuICBcIkFwcGVhcmFuY2VSdWxlc1wiLFxuICBcIkFwcGVsbEYxXCIsXG4gIFwiQXBwZW5kXCIsXG4gIFwiQXBwZW5kQ2hlY2tcIixcbiAgXCJBcHBlbmRMYXllclwiLFxuICBcIkFwcGVuZFRvXCIsXG4gIFwiQXBwbGljYXRpb25cIixcbiAgXCJBcHBseVwiLFxuICBcIkFwcGx5UmVhY3Rpb25cIixcbiAgXCJBcHBseVNpZGVzXCIsXG4gIFwiQXBwbHlUb1wiLFxuICBcIkFyY0Nvc1wiLFxuICBcIkFyY0Nvc2hcIixcbiAgXCJBcmNDb3RcIixcbiAgXCJBcmNDb3RoXCIsXG4gIFwiQXJjQ3NjXCIsXG4gIFwiQXJjQ3NjaFwiLFxuICBcIkFyY0N1cnZhdHVyZVwiLFxuICBcIkFSQ0hQcm9jZXNzXCIsXG4gIFwiQXJjTGVuZ3RoXCIsXG4gIFwiQXJjU2VjXCIsXG4gIFwiQXJjU2VjaFwiLFxuICBcIkFyY1NpblwiLFxuICBcIkFyY1NpbkRpc3RyaWJ1dGlvblwiLFxuICBcIkFyY1NpbmhcIixcbiAgXCJBcmNUYW5cIixcbiAgXCJBcmNUYW5oXCIsXG4gIFwiQXJlYVwiLFxuICBcIkFyZ1wiLFxuICBcIkFyZ01heFwiLFxuICBcIkFyZ01pblwiLFxuICBcIkFyZ3VtZW50Q291bnRRXCIsXG4gIFwiQXJndW1lbnRzT3B0aW9uc1wiLFxuICBcIkFSSU1BUHJvY2Vzc1wiLFxuICBcIkFyaXRobWV0aWNHZW9tZXRyaWNNZWFuXCIsXG4gIFwiQVJNQVByb2Nlc3NcIixcbiAgXCJBcm91bmRcIixcbiAgXCJBcm91bmRSZXBsYWNlXCIsXG4gIFwiQVJQcm9jZXNzXCIsXG4gIFwiQXJyYXlcIixcbiAgXCJBcnJheUNvbXBvbmVudHNcIixcbiAgXCJBcnJheURlcHRoXCIsXG4gIFwiQXJyYXlGaWx0ZXJcIixcbiAgXCJBcnJheUZsYXR0ZW5cIixcbiAgXCJBcnJheU1lc2hcIixcbiAgXCJBcnJheVBhZFwiLFxuICBcIkFycmF5UGxvdFwiLFxuICBcIkFycmF5UGxvdDNEXCIsXG4gIFwiQXJyYXlRXCIsXG4gIFwiQXJyYXlSZWR1Y2VcIixcbiAgXCJBcnJheVJlc2FtcGxlXCIsXG4gIFwiQXJyYXlSZXNoYXBlXCIsXG4gIFwiQXJyYXlSdWxlc1wiLFxuICBcIkFycmF5c1wiLFxuICBcIkFycm93XCIsXG4gIFwiQXJyb3czREJveFwiLFxuICBcIkFycm93Qm94XCIsXG4gIFwiQXJyb3doZWFkc1wiLFxuICBcIkFTQVRyaWFuZ2xlXCIsXG4gIFwiQXNrXCIsXG4gIFwiQXNrQXBwZW5kXCIsXG4gIFwiQXNrQ29uZmlybVwiLFxuICBcIkFza0Rpc3BsYXlcIixcbiAgXCJBc2tlZFFcIixcbiAgXCJBc2tlZFZhbHVlXCIsXG4gIFwiQXNrRnVuY3Rpb25cIixcbiAgXCJBc2tTdGF0ZVwiLFxuICBcIkFza1RlbXBsYXRlRGlzcGxheVwiLFxuICBcIkFzcGVjdFJhdGlvXCIsXG4gIFwiQXNwZWN0UmF0aW9GaXhlZFwiLFxuICBcIkFzc2VydFwiLFxuICBcIkFzc2Vzc21lbnRGdW5jdGlvblwiLFxuICBcIkFzc2Vzc21lbnRSZXN1bHRPYmplY3RcIixcbiAgXCJBc3NvY2lhdGVUb1wiLFxuICBcIkFzc29jaWF0aW9uXCIsXG4gIFwiQXNzb2NpYXRpb25Gb3JtYXRcIixcbiAgXCJBc3NvY2lhdGlvbk1hcFwiLFxuICBcIkFzc29jaWF0aW9uUVwiLFxuICBcIkFzc29jaWF0aW9uVGhyZWFkXCIsXG4gIFwiQXNzdW1lRGV0ZXJtaW5pc3RpY1wiLFxuICBcIkFzc3VtaW5nXCIsXG4gIFwiQXNzdW1wdGlvbnNcIixcbiAgXCJBc3Ryb0FuZ3VsYXJTZXBhcmF0aW9uXCIsXG4gIFwiQXN0cm9CYWNrZ3JvdW5kXCIsXG4gIFwiQXN0cm9DZW50ZXJcIixcbiAgXCJBc3Ryb0Rpc3RhbmNlXCIsXG4gIFwiQXN0cm9HcmFwaGljc1wiLFxuICBcIkFzdHJvR3JpZExpbmVzXCIsXG4gIFwiQXN0cm9HcmlkTGluZXNTdHlsZVwiLFxuICBcIkFzdHJvbm9taWNhbERhdGFcIixcbiAgXCJBc3Ryb1Bvc2l0aW9uXCIsXG4gIFwiQXN0cm9Qcm9qZWN0aW9uXCIsXG4gIFwiQXN0cm9SYW5nZVwiLFxuICBcIkFzdHJvUmFuZ2VQYWRkaW5nXCIsXG4gIFwiQXN0cm9SZWZlcmVuY2VGcmFtZVwiLFxuICBcIkFzdHJvU3R5bGluZ1wiLFxuICBcIkFzdHJvWm9vbUxldmVsXCIsXG4gIFwiQXN5bXB0b3RpY1wiLFxuICBcIkFzeW1wdG90aWNEU29sdmVWYWx1ZVwiLFxuICBcIkFzeW1wdG90aWNFcXVhbFwiLFxuICBcIkFzeW1wdG90aWNFcXVpdmFsZW50XCIsXG4gIFwiQXN5bXB0b3RpY0V4cGVjdGF0aW9uXCIsXG4gIFwiQXN5bXB0b3RpY0dyZWF0ZXJcIixcbiAgXCJBc3ltcHRvdGljR3JlYXRlckVxdWFsXCIsXG4gIFwiQXN5bXB0b3RpY0ludGVncmF0ZVwiLFxuICBcIkFzeW1wdG90aWNMZXNzXCIsXG4gIFwiQXN5bXB0b3RpY0xlc3NFcXVhbFwiLFxuICBcIkFzeW1wdG90aWNPdXRwdXRUcmFja2VyXCIsXG4gIFwiQXN5bXB0b3RpY1Byb2JhYmlsaXR5XCIsXG4gIFwiQXN5bXB0b3RpY1Byb2R1Y3RcIixcbiAgXCJBc3ltcHRvdGljUlNvbHZlVmFsdWVcIixcbiAgXCJBc3ltcHRvdGljU29sdmVcIixcbiAgXCJBc3ltcHRvdGljU3VtXCIsXG4gIFwiQXN5bmNocm9ub3VzXCIsXG4gIFwiQXN5bmNocm9ub3VzVGFza09iamVjdFwiLFxuICBcIkFzeW5jaHJvbm91c1Rhc2tzXCIsXG4gIFwiQXRvbVwiLFxuICBcIkF0b21Db29yZGluYXRlc1wiLFxuICBcIkF0b21Db3VudFwiLFxuICBcIkF0b21EaWFncmFtQ29vcmRpbmF0ZXNcIixcbiAgXCJBdG9tTGFiZWxzXCIsXG4gIFwiQXRvbUxhYmVsU3R5bGVcIixcbiAgXCJBdG9tTGlzdFwiLFxuICBcIkF0b21RXCIsXG4gIFwiQXR0YWNoQ2VsbFwiLFxuICBcIkF0dGFjaGVkQ2VsbFwiLFxuICBcIkF0dGVudGlvbkxheWVyXCIsXG4gIFwiQXR0cmlidXRlc1wiLFxuICBcIkF1ZGlvXCIsXG4gIFwiQXVkaW9BbXBsaWZ5XCIsXG4gIFwiQXVkaW9Bbm5vdGF0ZVwiLFxuICBcIkF1ZGlvQW5ub3RhdGlvbkxvb2t1cFwiLFxuICBcIkF1ZGlvQmxvY2tNYXBcIixcbiAgXCJBdWRpb0NhcHR1cmVcIixcbiAgXCJBdWRpb0NoYW5uZWxBc3NpZ25tZW50XCIsXG4gIFwiQXVkaW9DaGFubmVsQ29tYmluZVwiLFxuICBcIkF1ZGlvQ2hhbm5lbE1peFwiLFxuICBcIkF1ZGlvQ2hhbm5lbHNcIixcbiAgXCJBdWRpb0NoYW5uZWxTZXBhcmF0ZVwiLFxuICBcIkF1ZGlvRGF0YVwiLFxuICBcIkF1ZGlvRGVsYXlcIixcbiAgXCJBdWRpb0RlbGV0ZVwiLFxuICBcIkF1ZGlvRGV2aWNlXCIsXG4gIFwiQXVkaW9EaXN0YW5jZVwiLFxuICBcIkF1ZGlvRW5jb2RpbmdcIixcbiAgXCJBdWRpb0ZhZGVcIixcbiAgXCJBdWRpb0ZyZXF1ZW5jeVNoaWZ0XCIsXG4gIFwiQXVkaW9HZW5lcmF0b3JcIixcbiAgXCJBdWRpb0lkZW50aWZ5XCIsXG4gIFwiQXVkaW9JbnB1dERldmljZVwiLFxuICBcIkF1ZGlvSW5zZXJ0XCIsXG4gIFwiQXVkaW9JbnN0YW5jZVFcIixcbiAgXCJBdWRpb0ludGVydmFsc1wiLFxuICBcIkF1ZGlvSm9pblwiLFxuICBcIkF1ZGlvTGFiZWxcIixcbiAgXCJBdWRpb0xlbmd0aFwiLFxuICBcIkF1ZGlvTG9jYWxNZWFzdXJlbWVudHNcIixcbiAgXCJBdWRpb0xvb3BpbmdcIixcbiAgXCJBdWRpb0xvdWRuZXNzXCIsXG4gIFwiQXVkaW9NZWFzdXJlbWVudHNcIixcbiAgXCJBdWRpb05vcm1hbGl6ZVwiLFxuICBcIkF1ZGlvT3V0cHV0RGV2aWNlXCIsXG4gIFwiQXVkaW9PdmVybGF5XCIsXG4gIFwiQXVkaW9QYWRcIixcbiAgXCJBdWRpb1BhblwiLFxuICBcIkF1ZGlvUGFydGl0aW9uXCIsXG4gIFwiQXVkaW9QYXVzZVwiLFxuICBcIkF1ZGlvUGl0Y2hTaGlmdFwiLFxuICBcIkF1ZGlvUGxheVwiLFxuICBcIkF1ZGlvUGxvdFwiLFxuICBcIkF1ZGlvUVwiLFxuICBcIkF1ZGlvUmVjb3JkXCIsXG4gIFwiQXVkaW9SZXBsYWNlXCIsXG4gIFwiQXVkaW9SZXNhbXBsZVwiLFxuICBcIkF1ZGlvUmV2ZXJiXCIsXG4gIFwiQXVkaW9SZXZlcnNlXCIsXG4gIFwiQXVkaW9TYW1wbGVSYXRlXCIsXG4gIFwiQXVkaW9TcGVjdHJhbE1hcFwiLFxuICBcIkF1ZGlvU3BlY3RyYWxUcmFuc2Zvcm1hdGlvblwiLFxuICBcIkF1ZGlvU3BsaXRcIixcbiAgXCJBdWRpb1N0b3BcIixcbiAgXCJBdWRpb1N0cmVhbVwiLFxuICBcIkF1ZGlvU3RyZWFtc1wiLFxuICBcIkF1ZGlvVGltZVN0cmV0Y2hcIixcbiAgXCJBdWRpb1RyYWNrQXBwbHlcIixcbiAgXCJBdWRpb1RyYWNrU2VsZWN0aW9uXCIsXG4gIFwiQXVkaW9UcmltXCIsXG4gIFwiQXVkaW9UeXBlXCIsXG4gIFwiQXVnbWVudGVkUG9seWhlZHJvblwiLFxuICBcIkF1Z21lbnRlZFN5bW1ldHJpY1BvbHlub21pYWxcIixcbiAgXCJBdXRoZW50aWNhdGVcIixcbiAgXCJBdXRoZW50aWNhdGlvblwiLFxuICBcIkF1dGhlbnRpY2F0aW9uRGlhbG9nXCIsXG4gIFwiQXV0b0FjdGlvblwiLFxuICBcIkF1dG9jb21wbGV0ZVwiLFxuICBcIkF1dG9jb21wbGV0aW9uRnVuY3Rpb25cIixcbiAgXCJBdXRvQ29weVwiLFxuICBcIkF1dG9jb3JyZWxhdGlvblRlc3RcIixcbiAgXCJBdXRvRGVsZXRlXCIsXG4gIFwiQXV0b0V2YWx1YXRlRXZlbnRzXCIsXG4gIFwiQXV0b0dlbmVyYXRlZFBhY2thZ2VcIixcbiAgXCJBdXRvSW5kZW50XCIsXG4gIFwiQXV0b0luZGVudFNwYWNpbmdzXCIsXG4gIFwiQXV0b0l0YWxpY1dvcmRzXCIsXG4gIFwiQXV0b2xvYWRQYXRoXCIsXG4gIFwiQXV0b01hdGNoXCIsXG4gIFwiQXV0b21hdGljXCIsXG4gIFwiQXV0b21hdGljSW1hZ2VTaXplXCIsXG4gIFwiQXV0b011bHRpcGxpY2F0aW9uU3ltYm9sXCIsXG4gIFwiQXV0b051bWJlckZvcm1hdHRpbmdcIixcbiAgXCJBdXRvT3Blbk5vdGVib29rc1wiLFxuICBcIkF1dG9PcGVuUGFsZXR0ZXNcIixcbiAgXCJBdXRvT3BlcmF0b3JSZW5kZXJpbmdzXCIsXG4gIFwiQXV0b1F1b3RlQ2hhcmFjdGVyc1wiLFxuICBcIkF1dG9SZWZyZXNoZWRcIixcbiAgXCJBdXRvUmVtb3ZlXCIsXG4gIFwiQXV0b3J1blNlcXVlbmNpbmdcIixcbiAgXCJBdXRvU2NhbGluZ1wiLFxuICBcIkF1dG9TY3JvbGxcIixcbiAgXCJBdXRvU3BhY2luZ1wiLFxuICBcIkF1dG9TdHlsZU9wdGlvbnNcIixcbiAgXCJBdXRvU3R5bGVXb3Jkc1wiLFxuICBcIkF1dG9TdWJtaXR0aW5nXCIsXG4gIFwiQXhlc1wiLFxuICBcIkF4ZXNFZGdlXCIsXG4gIFwiQXhlc0xhYmVsXCIsXG4gIFwiQXhlc09yaWdpblwiLFxuICBcIkF4ZXNTdHlsZVwiLFxuICBcIkF4aW9tYXRpY1RoZW9yeVwiLFxuICBcIkF4aXNcIixcbiAgXCJBeGlzM0RCb3hcIixcbiAgXCJBeGlzM0RCb3hPcHRpb25zXCIsXG4gIFwiQXhpc0JveFwiLFxuICBcIkF4aXNCb3hPcHRpb25zXCIsXG4gIFwiQXhpc0xhYmVsXCIsXG4gIFwiQXhpc09iamVjdFwiLFxuICBcIkF4aXNTdHlsZVwiLFxuICBcIkJhYnlNb25zdGVyR3JvdXBCXCIsXG4gIFwiQmFja1wiLFxuICBcIkJhY2tGYWNlQ29sb3JcIixcbiAgXCJCYWNrRmFjZUdsb3dDb2xvclwiLFxuICBcIkJhY2tGYWNlT3BhY2l0eVwiLFxuICBcIkJhY2tGYWNlU3BlY3VsYXJDb2xvclwiLFxuICBcIkJhY2tGYWNlU3BlY3VsYXJFeHBvbmVudFwiLFxuICBcIkJhY2tGYWNlU3VyZmFjZUFwcGVhcmFuY2VcIixcbiAgXCJCYWNrRmFjZVRleHR1cmVcIixcbiAgXCJCYWNrZ3JvdW5kXCIsXG4gIFwiQmFja2dyb3VuZEFwcGVhcmFuY2VcIixcbiAgXCJCYWNrZ3JvdW5kVGFza3NTZXR0aW5nc1wiLFxuICBcIkJhY2tzbGFzaFwiLFxuICBcIkJhY2tzdWJzdGl0dXRpb25cIixcbiAgXCJCYWNrd2FyZFwiLFxuICBcIkJhbGxcIixcbiAgXCJCYW5kXCIsXG4gIFwiQmFuZHBhc3NGaWx0ZXJcIixcbiAgXCJCYW5kc3RvcEZpbHRlclwiLFxuICBcIkJhcmFiYXNpQWxiZXJ0R3JhcGhEaXN0cmlidXRpb25cIixcbiAgXCJCYXJDaGFydFwiLFxuICBcIkJhckNoYXJ0M0RcIixcbiAgXCJCYXJjb2RlSW1hZ2VcIixcbiAgXCJCYXJjb2RlUmVjb2duaXplXCIsXG4gIFwiQmFyaW5naGF1c0hlbnplVGVzdFwiLFxuICBcIkJhckxlZ2VuZFwiLFxuICBcIkJhcmxvd1Byb3NjaGFuSW1wb3J0YW5jZVwiLFxuICBcIkJhcm5lc0dcIixcbiAgXCJCYXJPcmlnaW5cIixcbiAgXCJCYXJTcGFjaW5nXCIsXG4gIFwiQmFydGxldHRIYW5uV2luZG93XCIsXG4gIFwiQmFydGxldHRXaW5kb3dcIixcbiAgXCJCYXNlRGVjb2RlXCIsXG4gIFwiQmFzZUVuY29kZVwiLFxuICBcIkJhc2VGb3JtXCIsXG4gIFwiQmFzZWxpbmVcIixcbiAgXCJCYXNlbGluZVBvc2l0aW9uXCIsXG4gIFwiQmFzZVN0eWxlXCIsXG4gIFwiQmFzaWNSZWN1cnJlbnRMYXllclwiLFxuICBcIkJhdGNoTm9ybWFsaXphdGlvbkxheWVyXCIsXG4gIFwiQmF0Y2hTaXplXCIsXG4gIFwiQmF0ZXNEaXN0cmlidXRpb25cIixcbiAgXCJCYXR0bGVMZW1hcmllV2F2ZWxldFwiLFxuICBcIkJheWVzaWFuTWF4aW1pemF0aW9uXCIsXG4gIFwiQmF5ZXNpYW5NYXhpbWl6YXRpb25PYmplY3RcIixcbiAgXCJCYXllc2lhbk1pbmltaXphdGlvblwiLFxuICBcIkJheWVzaWFuTWluaW1pemF0aW9uT2JqZWN0XCIsXG4gIFwiQmVjYXVzZVwiLFxuICBcIkJlY2ttYW5uRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmVlcFwiLFxuICBcIkJlZm9yZVwiLFxuICBcIkJlZ2luXCIsXG4gIFwiQmVnaW5EaWFsb2dQYWNrZXRcIixcbiAgXCJCZWdpblBhY2thZ2VcIixcbiAgXCJCZWxsQlwiLFxuICBcIkJlbGxZXCIsXG4gIFwiQmVsb3dcIixcbiAgXCJCZW5mb3JkRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmVuaW5pRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmVua3RhbmRlckdpYnJhdERpc3RyaWJ1dGlvblwiLFxuICBcIkJlbmt0YW5kZXJXZWlidWxsRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmVybm91bGxpQlwiLFxuICBcIkJlcm5vdWxsaURpc3RyaWJ1dGlvblwiLFxuICBcIkJlcm5vdWxsaUdyYXBoRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmVybm91bGxpUHJvY2Vzc1wiLFxuICBcIkJlcm5zdGVpbkJhc2lzXCIsXG4gIFwiQmVzYWdMXCIsXG4gIFwiQmVzc2VsRmlsdGVyTW9kZWxcIixcbiAgXCJCZXNzZWxJXCIsXG4gIFwiQmVzc2VsSlwiLFxuICBcIkJlc3NlbEpaZXJvXCIsXG4gIFwiQmVzc2VsS1wiLFxuICBcIkJlc3NlbFlcIixcbiAgXCJCZXNzZWxZWmVyb1wiLFxuICBcIkJldGFcIixcbiAgXCJCZXRhQmlub21pYWxEaXN0cmlidXRpb25cIixcbiAgXCJCZXRhRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmV0YU5lZ2F0aXZlQmlub21pYWxEaXN0cmlidXRpb25cIixcbiAgXCJCZXRhUHJpbWVEaXN0cmlidXRpb25cIixcbiAgXCJCZXRhUmVndWxhcml6ZWRcIixcbiAgXCJCZXR3ZWVuXCIsXG4gIFwiQmV0d2Vlbm5lc3NDZW50cmFsaXR5XCIsXG4gIFwiQmV2ZWxlZFwiLFxuICBcIkJldmVsZWRQb2x5aGVkcm9uXCIsXG4gIFwiQmV6aWVyQ3VydmVcIixcbiAgXCJCZXppZXJDdXJ2ZTNEQm94XCIsXG4gIFwiQmV6aWVyQ3VydmUzREJveE9wdGlvbnNcIixcbiAgXCJCZXppZXJDdXJ2ZUJveFwiLFxuICBcIkJlemllckN1cnZlQm94T3B0aW9uc1wiLFxuICBcIkJlemllckZ1bmN0aW9uXCIsXG4gIFwiQmlsYXRlcmFsRmlsdGVyXCIsXG4gIFwiQmlsYXRlcmFsTGFwbGFjZVRyYW5zZm9ybVwiLFxuICBcIkJpbGF0ZXJhbFpUcmFuc2Zvcm1cIixcbiAgXCJCaW5hcml6ZVwiLFxuICBcIkJpbmFyeURlc2VyaWFsaXplXCIsXG4gIFwiQmluYXJ5RGlzdGFuY2VcIixcbiAgXCJCaW5hcnlGb3JtYXRcIixcbiAgXCJCaW5hcnlJbWFnZVFcIixcbiAgXCJCaW5hcnlSZWFkXCIsXG4gIFwiQmluYXJ5UmVhZExpc3RcIixcbiAgXCJCaW5hcnlTZXJpYWxpemVcIixcbiAgXCJCaW5hcnlXcml0ZVwiLFxuICBcIkJpbkNvdW50c1wiLFxuICBcIkJpbkxpc3RzXCIsXG4gIFwiQmlubmVkVmFyaW9ncmFtTGlzdFwiLFxuICBcIkJpbm9taWFsXCIsXG4gIFwiQmlub21pYWxEaXN0cmlidXRpb25cIixcbiAgXCJCaW5vbWlhbFBvaW50UHJvY2Vzc1wiLFxuICBcIkJpbm9taWFsUHJvY2Vzc1wiLFxuICBcIkJpbm9ybWFsRGlzdHJpYnV0aW9uXCIsXG4gIFwiQmlvcnRob2dvbmFsU3BsaW5lV2F2ZWxldFwiLFxuICBcIkJpb1NlcXVlbmNlXCIsXG4gIFwiQmlvU2VxdWVuY2VCYWNrVHJhbnNsYXRlTGlzdFwiLFxuICBcIkJpb1NlcXVlbmNlQ29tcGxlbWVudFwiLFxuICBcIkJpb1NlcXVlbmNlSW5zdGFuY2VzXCIsXG4gIFwiQmlvU2VxdWVuY2VNb2RpZnlcIixcbiAgXCJCaW9TZXF1ZW5jZVBsb3RcIixcbiAgXCJCaW9TZXF1ZW5jZVFcIixcbiAgXCJCaW9TZXF1ZW5jZVJldmVyc2VDb21wbGVtZW50XCIsXG4gIFwiQmlvU2VxdWVuY2VUcmFuc2NyaWJlXCIsXG4gIFwiQmlvU2VxdWVuY2VUcmFuc2xhdGVcIixcbiAgXCJCaXBhcnRpdGVHcmFwaFFcIixcbiAgXCJCaXF1YWRyYXRpY0ZpbHRlck1vZGVsXCIsXG4gIFwiQmlybmJhdW1JbXBvcnRhbmNlXCIsXG4gIFwiQmlybmJhdW1TYXVuZGVyc0Rpc3RyaWJ1dGlvblwiLFxuICBcIkJpdEFuZFwiLFxuICBcIkJpdENsZWFyXCIsXG4gIFwiQml0R2V0XCIsXG4gIFwiQml0TGVuZ3RoXCIsXG4gIFwiQml0Tm90XCIsXG4gIFwiQml0T3JcIixcbiAgXCJCaXRSYXRlXCIsXG4gIFwiQml0U2V0XCIsXG4gIFwiQml0U2hpZnRMZWZ0XCIsXG4gIFwiQml0U2hpZnRSaWdodFwiLFxuICBcIkJpdFhvclwiLFxuICBcIkJpd2VpZ2h0TG9jYXRpb25cIixcbiAgXCJCaXdlaWdodE1pZHZhcmlhbmNlXCIsXG4gIFwiQmxhY2tcIixcbiAgXCJCbGFja21hbkhhcnJpc1dpbmRvd1wiLFxuICBcIkJsYWNrbWFuTnV0dGFsbFdpbmRvd1wiLFxuICBcIkJsYWNrbWFuV2luZG93XCIsXG4gIFwiQmxhbmtcIixcbiAgXCJCbGFua0Zvcm1cIixcbiAgXCJCbGFua051bGxTZXF1ZW5jZVwiLFxuICBcIkJsYW5rU2VxdWVuY2VcIixcbiAgXCJCbGVuZFwiLFxuICBcIkJsb2NrXCIsXG4gIFwiQmxvY2tjaGFpbkFkZHJlc3NEYXRhXCIsXG4gIFwiQmxvY2tjaGFpbkJhc2VcIixcbiAgXCJCbG9ja2NoYWluQmxvY2tEYXRhXCIsXG4gIFwiQmxvY2tjaGFpbkNvbnRyYWN0VmFsdWVcIixcbiAgXCJCbG9ja2NoYWluRGF0YVwiLFxuICBcIkJsb2NrY2hhaW5HZXRcIixcbiAgXCJCbG9ja2NoYWluS2V5RW5jb2RlXCIsXG4gIFwiQmxvY2tjaGFpblB1dFwiLFxuICBcIkJsb2NrY2hhaW5Ub2tlbkRhdGFcIixcbiAgXCJCbG9ja2NoYWluVHJhbnNhY3Rpb25cIixcbiAgXCJCbG9ja2NoYWluVHJhbnNhY3Rpb25EYXRhXCIsXG4gIFwiQmxvY2tjaGFpblRyYW5zYWN0aW9uU2lnblwiLFxuICBcIkJsb2NrY2hhaW5UcmFuc2FjdGlvblN1Ym1pdFwiLFxuICBcIkJsb2NrRGlhZ29uYWxNYXRyaXhcIixcbiAgXCJCbG9ja0xvd2VyVHJpYW5ndWxhck1hdHJpeFwiLFxuICBcIkJsb2NrTWFwXCIsXG4gIFwiQmxvY2tSYW5kb21cIixcbiAgXCJCbG9ja1VwcGVyVHJpYW5ndWxhck1hdHJpeFwiLFxuICBcIkJsb21xdmlzdEJldGFcIixcbiAgXCJCbG9tcXZpc3RCZXRhVGVzdFwiLFxuICBcIkJsdWVcIixcbiAgXCJCbHVyXCIsXG4gIFwiQmx1cnJpbmdcIixcbiAgXCJCb2RlUGxvdFwiLFxuICBcIkJvaG1hbldpbmRvd1wiLFxuICBcIkJvbGRcIixcbiAgXCJCb25kXCIsXG4gIFwiQm9uZENvdW50XCIsXG4gIFwiQm9uZExhYmVsc1wiLFxuICBcIkJvbmRMYWJlbFN0eWxlXCIsXG4gIFwiQm9uZExpc3RcIixcbiAgXCJCb25kUVwiLFxuICBcIkJvb2ttYXJrc1wiLFxuICBcIkJvb2xlXCIsXG4gIFwiQm9vbGVhbkNvbnNlY3V0aXZlRnVuY3Rpb25cIixcbiAgXCJCb29sZWFuQ29udmVydFwiLFxuICBcIkJvb2xlYW5Db3VudGluZ0Z1bmN0aW9uXCIsXG4gIFwiQm9vbGVhbkZ1bmN0aW9uXCIsXG4gIFwiQm9vbGVhbkdyYXBoXCIsXG4gIFwiQm9vbGVhbk1heHRlcm1zXCIsXG4gIFwiQm9vbGVhbk1pbmltaXplXCIsXG4gIFwiQm9vbGVhbk1pbnRlcm1zXCIsXG4gIFwiQm9vbGVhblFcIixcbiAgXCJCb29sZWFuUmVnaW9uXCIsXG4gIFwiQm9vbGVhbnNcIixcbiAgXCJCb29sZWFuU3RyaW5nc1wiLFxuICBcIkJvb2xlYW5UYWJsZVwiLFxuICBcIkJvb2xlYW5WYXJpYWJsZXNcIixcbiAgXCJCb3JkZXJEaW1lbnNpb25zXCIsXG4gIFwiQm9yZWxUYW5uZXJEaXN0cmlidXRpb25cIixcbiAgXCJCb3R0b21cIixcbiAgXCJCb3R0b21IYXRUcmFuc2Zvcm1cIixcbiAgXCJCb3VuZGFyeURpc2NyZXRpemVHcmFwaGljc1wiLFxuICBcIkJvdW5kYXJ5RGlzY3JldGl6ZVJlZ2lvblwiLFxuICBcIkJvdW5kYXJ5TWVzaFwiLFxuICBcIkJvdW5kYXJ5TWVzaFJlZ2lvblwiLFxuICBcIkJvdW5kYXJ5TWVzaFJlZ2lvblFcIixcbiAgXCJCb3VuZGFyeVN0eWxlXCIsXG4gIFwiQm91bmRlZFJlZ2lvblFcIixcbiAgXCJCb3VuZGluZ1JlZ2lvblwiLFxuICBcIkJvdW5kc1wiLFxuICBcIkJveFwiLFxuICBcIkJveEJhc2VsaW5lU2hpZnRcIixcbiAgXCJCb3hEYXRhXCIsXG4gIFwiQm94RGltZW5zaW9uc1wiLFxuICBcIkJveGVkXCIsXG4gIFwiQm94ZXNcIixcbiAgXCJCb3hGb3JtXCIsXG4gIFwiQm94Rm9ybUZvcm1hdFR5cGVzXCIsXG4gIFwiQm94RnJhbWVcIixcbiAgXCJCb3hJRFwiLFxuICBcIkJveE1hcmdpbnNcIixcbiAgXCJCb3hNYXRyaXhcIixcbiAgXCJCb3hPYmplY3RcIixcbiAgXCJCb3hSYXRpb3NcIixcbiAgXCJCb3hSb3RhdGlvblwiLFxuICBcIkJveFJvdGF0aW9uUG9pbnRcIixcbiAgXCJCb3hTdHlsZVwiLFxuICBcIkJveFdoaXNrZXJDaGFydFwiLFxuICBcIkJyYVwiLFxuICBcIkJyYWNrZXRpbmdCYXJcIixcbiAgXCJCcmFLZXRcIixcbiAgXCJCcmF5Q3VydGlzRGlzdGFuY2VcIixcbiAgXCJCcmVhZHRoRmlyc3RTY2FuXCIsXG4gIFwiQnJlYWtcIixcbiAgXCJCcmlkZ2VEYXRhXCIsXG4gIFwiQnJpZ2h0bmVzc0VxdWFsaXplXCIsXG4gIFwiQnJvYWRjYXN0U3RhdGlvbkRhdGFcIixcbiAgXCJCcm93blwiLFxuICBcIkJyb3duRm9yc3l0aGVUZXN0XCIsXG4gIFwiQnJvd25pYW5CcmlkZ2VQcm9jZXNzXCIsXG4gIFwiQnJvd3NlckNhdGVnb3J5XCIsXG4gIFwiQlNwbGluZUJhc2lzXCIsXG4gIFwiQlNwbGluZUN1cnZlXCIsXG4gIFwiQlNwbGluZUN1cnZlM0RCb3hcIixcbiAgXCJCU3BsaW5lQ3VydmUzREJveE9wdGlvbnNcIixcbiAgXCJCU3BsaW5lQ3VydmVCb3hcIixcbiAgXCJCU3BsaW5lQ3VydmVCb3hPcHRpb25zXCIsXG4gIFwiQlNwbGluZUZ1bmN0aW9uXCIsXG4gIFwiQlNwbGluZVN1cmZhY2VcIixcbiAgXCJCU3BsaW5lU3VyZmFjZTNEQm94XCIsXG4gIFwiQlNwbGluZVN1cmZhY2UzREJveE9wdGlvbnNcIixcbiAgXCJCdWJibGVDaGFydFwiLFxuICBcIkJ1YmJsZUNoYXJ0M0RcIixcbiAgXCJCdWJibGVTY2FsZVwiLFxuICBcIkJ1YmJsZVNpemVzXCIsXG4gIFwiQnVja3liYWxsR3JhcGhcIixcbiAgXCJCdWlsZENvbXBpbGVkQ29tcG9uZW50XCIsXG4gIFwiQnVpbGRpbmdEYXRhXCIsXG4gIFwiQnVsbGV0R2F1Z2VcIixcbiAgXCJCdXNpbmVzc0RheVFcIixcbiAgXCJCdXR0ZXJmbHlHcmFwaFwiLFxuICBcIkJ1dHRlcndvcnRoRmlsdGVyTW9kZWxcIixcbiAgXCJCdXR0b25cIixcbiAgXCJCdXR0b25CYXJcIixcbiAgXCJCdXR0b25Cb3hcIixcbiAgXCJCdXR0b25Cb3hPcHRpb25zXCIsXG4gIFwiQnV0dG9uQ2VsbFwiLFxuICBcIkJ1dHRvbkNvbnRlbnRzXCIsXG4gIFwiQnV0dG9uRGF0YVwiLFxuICBcIkJ1dHRvbkV2YWx1YXRvclwiLFxuICBcIkJ1dHRvbkV4cGFuZGFibGVcIixcbiAgXCJCdXR0b25GcmFtZVwiLFxuICBcIkJ1dHRvbkZ1bmN0aW9uXCIsXG4gIFwiQnV0dG9uTWFyZ2luc1wiLFxuICBcIkJ1dHRvbk1pbkhlaWdodFwiLFxuICBcIkJ1dHRvbk5vdGVcIixcbiAgXCJCdXR0b25Ob3RlYm9va1wiLFxuICBcIkJ1dHRvblNvdXJjZVwiLFxuICBcIkJ1dHRvblN0eWxlXCIsXG4gIFwiQnV0dG9uU3R5bGVNZW51TGlzdGluZ1wiLFxuICBcIkJ5dGVcIixcbiAgXCJCeXRlQXJyYXlcIixcbiAgXCJCeXRlQXJyYXlGb3JtYXRcIixcbiAgXCJCeXRlQXJyYXlGb3JtYXRRXCIsXG4gIFwiQnl0ZUFycmF5UVwiLFxuICBcIkJ5dGVBcnJheVRvU3RyaW5nXCIsXG4gIFwiQnl0ZUNvdW50XCIsXG4gIFwiQnl0ZU9yZGVyaW5nXCIsXG4gIFwiQ1wiLFxuICBcIkNhY2hlZFZhbHVlXCIsXG4gIFwiQ2FjaGVHcmFwaGljc1wiLFxuICBcIkNhY2hlUGVyc2lzdGVuY2VcIixcbiAgXCJDYWxlbmRhckNvbnZlcnRcIixcbiAgXCJDYWxlbmRhckRhdGFcIixcbiAgXCJDYWxlbmRhclR5cGVcIixcbiAgXCJDYWxsb3V0XCIsXG4gIFwiQ2FsbG91dE1hcmtlclwiLFxuICBcIkNhbGxvdXRTdHlsZVwiLFxuICBcIkNhbGxQYWNrZXRcIixcbiAgXCJDYW5iZXJyYURpc3RhbmNlXCIsXG4gIFwiQ2FuY2VsXCIsXG4gIFwiQ2FuY2VsQnV0dG9uXCIsXG4gIFwiQ2FuZGxlc3RpY2tDaGFydFwiLFxuICBcIkNhbm9uaWNhbEdyYXBoXCIsXG4gIFwiQ2Fub25pY2FsaXplUG9seWdvblwiLFxuICBcIkNhbm9uaWNhbGl6ZVBvbHloZWRyb25cIixcbiAgXCJDYW5vbmljYWxpemVSZWdpb25cIixcbiAgXCJDYW5vbmljYWxOYW1lXCIsXG4gIFwiQ2Fub25pY2FsV2FycGluZ0NvcnJlc3BvbmRlbmNlXCIsXG4gIFwiQ2Fub25pY2FsV2FycGluZ0Rpc3RhbmNlXCIsXG4gIFwiQ2FudG9yTWVzaFwiLFxuICBcIkNhbnRvclN0YWlyY2FzZVwiLFxuICBcIkNhbnZhc1wiLFxuICBcIkNhcFwiLFxuICBcIkNhcEZvcm1cIixcbiAgXCJDYXBpdGFsRGlmZmVyZW50aWFsRFwiLFxuICBcIkNhcGl0YWxpemVcIixcbiAgXCJDYXBzdWxlU2hhcGVcIixcbiAgXCJDYXB0dXJlUnVubmluZ1wiLFxuICBcIkNhcHV0b0RcIixcbiAgXCJDYXJkaW5hbEJTcGxpbmVCYXNpc1wiLFxuICBcIkNhcmxlbWFuTGluZWFyaXplXCIsXG4gIFwiQ2FybHNvblJDXCIsXG4gIFwiQ2FybHNvblJEXCIsXG4gIFwiQ2FybHNvblJFXCIsXG4gIFwiQ2FybHNvblJGXCIsXG4gIFwiQ2FybHNvblJHXCIsXG4gIFwiQ2FybHNvblJKXCIsXG4gIFwiQ2FybHNvblJLXCIsXG4gIFwiQ2FybHNvblJNXCIsXG4gIFwiQ2FybWljaGFlbExhbWJkYVwiLFxuICBcIkNhc2VPcmRlcmluZ1wiLFxuICBcIkNhc2VzXCIsXG4gIFwiQ2FzZVNlbnNpdGl2ZVwiLFxuICBcIkNhc2hmbG93XCIsXG4gIFwiQ2Fzb3JhdGlhblwiLFxuICBcIkNhc3RcIixcbiAgXCJDYXRhbGFuXCIsXG4gIFwiQ2F0YWxhbk51bWJlclwiLFxuICBcIkNhdGNoXCIsXG4gIFwiQ2F0ZWdvcmljYWxEaXN0cmlidXRpb25cIixcbiAgXCJDYXRlbmF0ZVwiLFxuICBcIkNhdGVuYXRlTGF5ZXJcIixcbiAgXCJDYXVjaHlEaXN0cmlidXRpb25cIixcbiAgXCJDYXVjaHlNYXRyaXhcIixcbiAgXCJDYXVjaHlQb2ludFByb2Nlc3NcIixcbiAgXCJDYXVjaHlXaW5kb3dcIixcbiAgXCJDYXlsZXlHcmFwaFwiLFxuICBcIkNERlwiLFxuICBcIkNERkRlcGxveVwiLFxuICBcIkNERkluZm9ybWF0aW9uXCIsXG4gIFwiQ0RGV2F2ZWxldFwiLFxuICBcIkNlaWxpbmdcIixcbiAgXCJDZWxlc3RpYWxTeXN0ZW1cIixcbiAgXCJDZWxsXCIsXG4gIFwiQ2VsbEF1dG9PdmVyd3JpdGVcIixcbiAgXCJDZWxsQmFzZWxpbmVcIixcbiAgXCJDZWxsQm91bmRpbmdCb3hcIixcbiAgXCJDZWxsQnJhY2tldE9wdGlvbnNcIixcbiAgXCJDZWxsQ2hhbmdlVGltZXNcIixcbiAgXCJDZWxsQ29udGVudHNcIixcbiAgXCJDZWxsQ29udGV4dFwiLFxuICBcIkNlbGxEaW5nYmF0XCIsXG4gIFwiQ2VsbERpbmdiYXRNYXJnaW5cIixcbiAgXCJDZWxsRHluYW1pY0V4cHJlc3Npb25cIixcbiAgXCJDZWxsRWRpdER1cGxpY2F0ZVwiLFxuICBcIkNlbGxFbGVtZW50c0JvdW5kaW5nQm94XCIsXG4gIFwiQ2VsbEVsZW1lbnRTcGFjaW5nc1wiLFxuICBcIkNlbGxFcGlsb2dcIixcbiAgXCJDZWxsRXZhbHVhdGlvbkR1cGxpY2F0ZVwiLFxuICBcIkNlbGxFdmFsdWF0aW9uRnVuY3Rpb25cIixcbiAgXCJDZWxsRXZhbHVhdGlvbkxhbmd1YWdlXCIsXG4gIFwiQ2VsbEV2ZW50QWN0aW9uc1wiLFxuICBcIkNlbGxGcmFtZVwiLFxuICBcIkNlbGxGcmFtZUNvbG9yXCIsXG4gIFwiQ2VsbEZyYW1lTGFiZWxNYXJnaW5zXCIsXG4gIFwiQ2VsbEZyYW1lTGFiZWxzXCIsXG4gIFwiQ2VsbEZyYW1lTWFyZ2luc1wiLFxuICBcIkNlbGxGcmFtZVN0eWxlXCIsXG4gIFwiQ2VsbEdyb3VwXCIsXG4gIFwiQ2VsbEdyb3VwRGF0YVwiLFxuICBcIkNlbGxHcm91cGluZ1wiLFxuICBcIkNlbGxHcm91cGluZ1J1bGVzXCIsXG4gIFwiQ2VsbEhvcml6b250YWxTY3JvbGxpbmdcIixcbiAgXCJDZWxsSURcIixcbiAgXCJDZWxsSW5zZXJ0aW9uUG9pbnRDZWxsXCIsXG4gIFwiQ2VsbExhYmVsXCIsXG4gIFwiQ2VsbExhYmVsQXV0b0RlbGV0ZVwiLFxuICBcIkNlbGxMYWJlbE1hcmdpbnNcIixcbiAgXCJDZWxsTGFiZWxQb3NpdGlvbmluZ1wiLFxuICBcIkNlbGxMYWJlbFN0eWxlXCIsXG4gIFwiQ2VsbExhYmVsVGVtcGxhdGVcIixcbiAgXCJDZWxsTWFyZ2luc1wiLFxuICBcIkNlbGxPYmplY3RcIixcbiAgXCJDZWxsT3BlblwiLFxuICBcIkNlbGxQcmludFwiLFxuICBcIkNlbGxQcm9sb2dcIixcbiAgXCJDZWxsc1wiLFxuICBcIkNlbGxTaXplXCIsXG4gIFwiQ2VsbFN0eWxlXCIsXG4gIFwiQ2VsbFRhZ3NcIixcbiAgXCJDZWxsVHJheVBvc2l0aW9uXCIsXG4gIFwiQ2VsbFRyYXlXaWRnZXRzXCIsXG4gIFwiQ2VsbHVsYXJBdXRvbWF0b25cIixcbiAgXCJDZW5zb3JlZERpc3RyaWJ1dGlvblwiLFxuICBcIkNlbnNvcmluZ1wiLFxuICBcIkNlbnRlclwiLFxuICBcIkNlbnRlckFycmF5XCIsXG4gIFwiQ2VudGVyRG90XCIsXG4gIFwiQ2VudGVyZWRJbnRlcnZhbFwiLFxuICBcIkNlbnRyYWxGZWF0dXJlXCIsXG4gIFwiQ2VudHJhbE1vbWVudFwiLFxuICBcIkNlbnRyYWxNb21lbnRHZW5lcmF0aW5nRnVuY3Rpb25cIixcbiAgXCJDZXBzdHJvZ3JhbVwiLFxuICBcIkNlcHN0cm9ncmFtQXJyYXlcIixcbiAgXCJDZXBzdHJ1bUFycmF5XCIsXG4gIFwiQ0Zvcm1cIixcbiAgXCJDaGFtcGVybm93bmVOdW1iZXJcIixcbiAgXCJDaGFuZ2VPcHRpb25zXCIsXG4gIFwiQ2hhbm5lbEJhc2VcIixcbiAgXCJDaGFubmVsQnJva2VyQWN0aW9uXCIsXG4gIFwiQ2hhbm5lbERhdGFiaW5cIixcbiAgXCJDaGFubmVsSGlzdG9yeUxlbmd0aFwiLFxuICBcIkNoYW5uZWxMaXN0ZW5cIixcbiAgXCJDaGFubmVsTGlzdGVuZXJcIixcbiAgXCJDaGFubmVsTGlzdGVuZXJzXCIsXG4gIFwiQ2hhbm5lbExpc3RlbmVyV2FpdFwiLFxuICBcIkNoYW5uZWxPYmplY3RcIixcbiAgXCJDaGFubmVsUHJlU2VuZEZ1bmN0aW9uXCIsXG4gIFwiQ2hhbm5lbFJlY2VpdmVyRnVuY3Rpb25cIixcbiAgXCJDaGFubmVsU2VuZFwiLFxuICBcIkNoYW5uZWxTdWJzY3JpYmVyc1wiLFxuICBcIkNoYW5WZXNlQmluYXJpemVcIixcbiAgXCJDaGFyYWN0ZXJcIixcbiAgXCJDaGFyYWN0ZXJDb3VudHNcIixcbiAgXCJDaGFyYWN0ZXJFbmNvZGluZ1wiLFxuICBcIkNoYXJhY3RlckVuY29kaW5nc1BhdGhcIixcbiAgXCJDaGFyYWN0ZXJpc3RpY0Z1bmN0aW9uXCIsXG4gIFwiQ2hhcmFjdGVyaXN0aWNQb2x5bm9taWFsXCIsXG4gIFwiQ2hhcmFjdGVyTmFtZVwiLFxuICBcIkNoYXJhY3Rlck5vcm1hbGl6ZVwiLFxuICBcIkNoYXJhY3RlclJhbmdlXCIsXG4gIFwiQ2hhcmFjdGVyc1wiLFxuICBcIkNoYXJ0QmFzZVN0eWxlXCIsXG4gIFwiQ2hhcnRFbGVtZW50RGF0YVwiLFxuICBcIkNoYXJ0RWxlbWVudERhdGFGdW5jdGlvblwiLFxuICBcIkNoYXJ0RWxlbWVudEZ1bmN0aW9uXCIsXG4gIFwiQ2hhcnRFbGVtZW50c1wiLFxuICBcIkNoYXJ0TGFiZWxzXCIsXG4gIFwiQ2hhcnRMYXlvdXRcIixcbiAgXCJDaGFydExlZ2VuZHNcIixcbiAgXCJDaGFydFN0eWxlXCIsXG4gIFwiQ2hlYnlzaGV2MUZpbHRlck1vZGVsXCIsXG4gIFwiQ2hlYnlzaGV2MkZpbHRlck1vZGVsXCIsXG4gIFwiQ2hlYnlzaGV2RGlzdGFuY2VcIixcbiAgXCJDaGVieXNoZXZUXCIsXG4gIFwiQ2hlYnlzaGV2VVwiLFxuICBcIkNoZWNrXCIsXG4gIFwiQ2hlY2tBYm9ydFwiLFxuICBcIkNoZWNrQWxsXCIsXG4gIFwiQ2hlY2tBcmd1bWVudHNcIixcbiAgXCJDaGVja2JveFwiLFxuICBcIkNoZWNrYm94QmFyXCIsXG4gIFwiQ2hlY2tib3hCb3hcIixcbiAgXCJDaGVja2JveEJveE9wdGlvbnNcIixcbiAgXCJDaGVtaWNhbENvbnZlcnRcIixcbiAgXCJDaGVtaWNhbERhdGFcIixcbiAgXCJDaGVtaWNhbEZvcm11bGFcIixcbiAgXCJDaGVtaWNhbEluc3RhbmNlXCIsXG4gIFwiQ2hlbWljYWxSZWFjdGlvblwiLFxuICBcIkNoZXNzYm9hcmREaXN0YW5jZVwiLFxuICBcIkNoaURpc3RyaWJ1dGlvblwiLFxuICBcIkNoaW5lc2VSZW1haW5kZXJcIixcbiAgXCJDaGlTcXVhcmVEaXN0cmlidXRpb25cIixcbiAgXCJDaG9pY2VCdXR0b25zXCIsXG4gIFwiQ2hvaWNlRGlhbG9nXCIsXG4gIFwiQ2hvbGVza3lEZWNvbXBvc2l0aW9uXCIsXG4gIFwiQ2hvcFwiLFxuICBcIkNocm9tYXRpY2l0eVBsb3RcIixcbiAgXCJDaHJvbWF0aWNpdHlQbG90M0RcIixcbiAgXCJDaHJvbWF0aWNQb2x5bm9taWFsXCIsXG4gIFwiQ2lyY2xlXCIsXG4gIFwiQ2lyY2xlQm94XCIsXG4gIFwiQ2lyY2xlRG90XCIsXG4gIFwiQ2lyY2xlTWludXNcIixcbiAgXCJDaXJjbGVQbHVzXCIsXG4gIFwiQ2lyY2xlUG9pbnRzXCIsXG4gIFwiQ2lyY2xlVGhyb3VnaFwiLFxuICBcIkNpcmNsZVRpbWVzXCIsXG4gIFwiQ2lyY3VsYW50R3JhcGhcIixcbiAgXCJDaXJjdWxhckFyY1Rocm91Z2hcIixcbiAgXCJDaXJjdWxhck9ydGhvZ29uYWxNYXRyaXhEaXN0cmlidXRpb25cIixcbiAgXCJDaXJjdWxhclF1YXRlcm5pb25NYXRyaXhEaXN0cmlidXRpb25cIixcbiAgXCJDaXJjdWxhclJlYWxNYXRyaXhEaXN0cmlidXRpb25cIixcbiAgXCJDaXJjdWxhclN5bXBsZWN0aWNNYXRyaXhEaXN0cmlidXRpb25cIixcbiAgXCJDaXJjdWxhclVuaXRhcnlNYXRyaXhEaXN0cmlidXRpb25cIixcbiAgXCJDaXJjdW1zcGhlcmVcIixcbiAgXCJDaXR5RGF0YVwiLFxuICBcIkNsYXNzaWZpZXJGdW5jdGlvblwiLFxuICBcIkNsYXNzaWZpZXJJbmZvcm1hdGlvblwiLFxuICBcIkNsYXNzaWZpZXJNZWFzdXJlbWVudHNcIixcbiAgXCJDbGFzc2lmaWVyTWVhc3VyZW1lbnRzT2JqZWN0XCIsXG4gIFwiQ2xhc3NpZnlcIixcbiAgXCJDbGFzc1ByaW9yc1wiLFxuICBcIkNsZWFyXCIsXG4gIFwiQ2xlYXJBbGxcIixcbiAgXCJDbGVhckF0dHJpYnV0ZXNcIixcbiAgXCJDbGVhckNvb2tpZXNcIixcbiAgXCJDbGVhclBlcm1pc3Npb25zXCIsXG4gIFwiQ2xlYXJTeXN0ZW1DYWNoZVwiLFxuICBcIkNsZWJzY2hHb3JkYW5cIixcbiAgXCJDbGlja1BhbmVcIixcbiAgXCJDbGlja1RvQ29weVwiLFxuICBcIkNsaWNrVG9Db3B5RW5hYmxlZFwiLFxuICBcIkNsaXBcIixcbiAgXCJDbGlwYm9hcmROb3RlYm9va1wiLFxuICBcIkNsaXBGaWxsXCIsXG4gIFwiQ2xpcHBpbmdTdHlsZVwiLFxuICBcIkNsaXBQbGFuZXNcIixcbiAgXCJDbGlwUGxhbmVzU3R5bGVcIixcbiAgXCJDbGlwUmFuZ2VcIixcbiAgXCJDbG9ja1wiLFxuICBcIkNsb2NrR2F1Z2VcIixcbiAgXCJDbG9ja3dpc2VDb250b3VySW50ZWdyYWxcIixcbiAgXCJDbG9zZVwiLFxuICBcIkNsb3NlZFwiLFxuICBcIkNsb3NlS2VybmVsc1wiLFxuICBcIkNsb3NlbmVzc0NlbnRyYWxpdHlcIixcbiAgXCJDbG9zaW5nXCIsXG4gIFwiQ2xvc2luZ0F1dG9TYXZlXCIsXG4gIFwiQ2xvc2luZ0V2ZW50XCIsXG4gIFwiQ2xvdWRBY2NvdW50RGF0YVwiLFxuICBcIkNsb3VkQmFzZVwiLFxuICBcIkNsb3VkQ29ubmVjdFwiLFxuICBcIkNsb3VkQ29ubmVjdGlvbnNcIixcbiAgXCJDbG91ZERlcGxveVwiLFxuICBcIkNsb3VkRGlyZWN0b3J5XCIsXG4gIFwiQ2xvdWREaXNjb25uZWN0XCIsXG4gIFwiQ2xvdWRFdmFsdWF0ZVwiLFxuICBcIkNsb3VkRXhwb3J0XCIsXG4gIFwiQ2xvdWRFeHByZXNzaW9uXCIsXG4gIFwiQ2xvdWRFeHByZXNzaW9uc1wiLFxuICBcIkNsb3VkRnVuY3Rpb25cIixcbiAgXCJDbG91ZEdldFwiLFxuICBcIkNsb3VkSW1wb3J0XCIsXG4gIFwiQ2xvdWRMb2dnaW5nRGF0YVwiLFxuICBcIkNsb3VkT2JqZWN0XCIsXG4gIFwiQ2xvdWRPYmplY3RJbmZvcm1hdGlvblwiLFxuICBcIkNsb3VkT2JqZWN0SW5mb3JtYXRpb25EYXRhXCIsXG4gIFwiQ2xvdWRPYmplY3ROYW1lRm9ybWF0XCIsXG4gIFwiQ2xvdWRPYmplY3RzXCIsXG4gIFwiQ2xvdWRPYmplY3RVUkxUeXBlXCIsXG4gIFwiQ2xvdWRQdWJsaXNoXCIsXG4gIFwiQ2xvdWRQdXRcIixcbiAgXCJDbG91ZFJlbmRlcmluZ01ldGhvZFwiLFxuICBcIkNsb3VkU2F2ZVwiLFxuICBcIkNsb3VkU2hhcmVcIixcbiAgXCJDbG91ZFN1Ym1pdFwiLFxuICBcIkNsb3VkU3ltYm9sXCIsXG4gIFwiQ2xvdWRVbnNoYXJlXCIsXG4gIFwiQ2xvdWRVc2VySURcIixcbiAgXCJDbHVzdGVyQ2xhc3NpZnlcIixcbiAgXCJDbHVzdGVyRGlzc2ltaWxhcml0eUZ1bmN0aW9uXCIsXG4gIFwiQ2x1c3RlcmluZ0NvbXBvbmVudHNcIixcbiAgXCJDbHVzdGVyaW5nTWVhc3VyZW1lbnRzXCIsXG4gIFwiQ2x1c3RlcmluZ1RyZWVcIixcbiAgXCJDTVlLQ29sb3JcIixcbiAgXCJDb2Fyc2VcIixcbiAgXCJDb2RlQXNzaXN0T3B0aW9uc1wiLFxuICBcIkNvZWZmaWNpZW50XCIsXG4gIFwiQ29lZmZpY2llbnRBcnJheXNcIixcbiAgXCJDb2VmZmljaWVudERvbWFpblwiLFxuICBcIkNvZWZmaWNpZW50TGlzdFwiLFxuICBcIkNvZWZmaWNpZW50UnVsZXNcIixcbiAgXCJDb2lmbGV0V2F2ZWxldFwiLFxuICBcIkNvbGxlY3RcIixcbiAgXCJDb2xsaW5lYXJQb2ludHNcIixcbiAgXCJDb2xvblwiLFxuICBcIkNvbG9uRm9ybVwiLFxuICBcIkNvbG9yQmFsYW5jZVwiLFxuICBcIkNvbG9yQ29tYmluZVwiLFxuICBcIkNvbG9yQ29udmVydFwiLFxuICBcIkNvbG9yQ292ZXJhZ2VcIixcbiAgXCJDb2xvckRhdGFcIixcbiAgXCJDb2xvckRhdGFGdW5jdGlvblwiLFxuICBcIkNvbG9yRGV0ZWN0XCIsXG4gIFwiQ29sb3JEaXN0YW5jZVwiLFxuICBcIkNvbG9yRnVuY3Rpb25cIixcbiAgXCJDb2xvckZ1bmN0aW9uQmlubmluZ1wiLFxuICBcIkNvbG9yRnVuY3Rpb25TY2FsaW5nXCIsXG4gIFwiQ29sb3JpemVcIixcbiAgXCJDb2xvck5lZ2F0ZVwiLFxuICBcIkNvbG9yT3V0cHV0XCIsXG4gIFwiQ29sb3JQcm9maWxlRGF0YVwiLFxuICBcIkNvbG9yUVwiLFxuICBcIkNvbG9yUXVhbnRpemVcIixcbiAgXCJDb2xvclJlcGxhY2VcIixcbiAgXCJDb2xvclJ1bGVzXCIsXG4gIFwiQ29sb3JTZWxlY3RvclNldHRpbmdzXCIsXG4gIFwiQ29sb3JTZXBhcmF0ZVwiLFxuICBcIkNvbG9yU2V0dGVyXCIsXG4gIFwiQ29sb3JTZXR0ZXJCb3hcIixcbiAgXCJDb2xvclNldHRlckJveE9wdGlvbnNcIixcbiAgXCJDb2xvclNsaWRlclwiLFxuICBcIkNvbG9yc05lYXJcIixcbiAgXCJDb2xvclNwYWNlXCIsXG4gIFwiQ29sb3JUb25lTWFwcGluZ1wiLFxuICBcIkNvbHVtblwiLFxuICBcIkNvbHVtbkFsaWdubWVudHNcIixcbiAgXCJDb2x1bW5CYWNrZ3JvdW5kc1wiLFxuICBcIkNvbHVtbkZvcm1cIixcbiAgXCJDb2x1bW5MaW5lc1wiLFxuICBcIkNvbHVtbnNFcXVhbFwiLFxuICBcIkNvbHVtblNwYWNpbmdzXCIsXG4gIFwiQ29sdW1uV2lkdGhzXCIsXG4gIFwiQ29tYmluYXRvckJcIixcbiAgXCJDb21iaW5hdG9yQ1wiLFxuICBcIkNvbWJpbmF0b3JJXCIsXG4gIFwiQ29tYmluYXRvcktcIixcbiAgXCJDb21iaW5hdG9yU1wiLFxuICBcIkNvbWJpbmF0b3JXXCIsXG4gIFwiQ29tYmluYXRvcllcIixcbiAgXCJDb21iaW5lZEVudGl0eUNsYXNzXCIsXG4gIFwiQ29tYmluZXJGdW5jdGlvblwiLFxuICBcIkNvbWV0RGF0YVwiLFxuICBcIkNvbW1vbkRlZmF1bHRGb3JtYXRUeXBlc1wiLFxuICBcIkNvbW1vbmVzdFwiLFxuICBcIkNvbW1vbmVzdEZpbHRlclwiLFxuICBcIkNvbW1vbk5hbWVcIixcbiAgXCJDb21tb25Vbml0c1wiLFxuICBcIkNvbW11bml0eUJvdW5kYXJ5U3R5bGVcIixcbiAgXCJDb21tdW5pdHlHcmFwaFBsb3RcIixcbiAgXCJDb21tdW5pdHlMYWJlbHNcIixcbiAgXCJDb21tdW5pdHlSZWdpb25TdHlsZVwiLFxuICBcIkNvbXBhbnlEYXRhXCIsXG4gIFwiQ29tcGF0aWJsZVVuaXRRXCIsXG4gIFwiQ29tcGlsYXRpb25PcHRpb25zXCIsXG4gIFwiQ29tcGlsYXRpb25UYXJnZXRcIixcbiAgXCJDb21waWxlXCIsXG4gIFwiQ29tcGlsZWRcIixcbiAgXCJDb21waWxlZENvZGVGdW5jdGlvblwiLFxuICBcIkNvbXBpbGVkQ29tcG9uZW50XCIsXG4gIFwiQ29tcGlsZWRFeHByZXNzaW9uRGVjbGFyYXRpb25cIixcbiAgXCJDb21waWxlZEZ1bmN0aW9uXCIsXG4gIFwiQ29tcGlsZWRMYXllclwiLFxuICBcIkNvbXBpbGVyQ2FsbGJhY2tcIixcbiAgXCJDb21waWxlckVudmlyb25tZW50XCIsXG4gIFwiQ29tcGlsZXJFbnZpcm9ubWVudEFwcGVuZFwiLFxuICBcIkNvbXBpbGVyRW52aXJvbm1lbnRBcHBlbmRUb1wiLFxuICBcIkNvbXBpbGVyRW52aXJvbm1lbnRPYmplY3RcIixcbiAgXCJDb21waWxlck9wdGlvbnNcIixcbiAgXCJDb21wbGVtZW50XCIsXG4gIFwiQ29tcGxlbWVudGVkRW50aXR5Q2xhc3NcIixcbiAgXCJDb21wbGV0ZUdyYXBoXCIsXG4gIFwiQ29tcGxldGVHcmFwaFFcIixcbiAgXCJDb21wbGV0ZUludGVncmFsXCIsXG4gIFwiQ29tcGxldGVLYXJ5VHJlZVwiLFxuICBcIkNvbXBsZXRpb25zTGlzdFBhY2tldFwiLFxuICBcIkNvbXBsZXhcIixcbiAgXCJDb21wbGV4QXJyYXlQbG90XCIsXG4gIFwiQ29tcGxleENvbnRvdXJQbG90XCIsXG4gIFwiQ29tcGxleGVzXCIsXG4gIFwiQ29tcGxleEV4cGFuZFwiLFxuICBcIkNvbXBsZXhJbmZpbml0eVwiLFxuICBcIkNvbXBsZXhpdHlGdW5jdGlvblwiLFxuICBcIkNvbXBsZXhMaXN0UGxvdFwiLFxuICBcIkNvbXBsZXhQbG90XCIsXG4gIFwiQ29tcGxleFBsb3QzRFwiLFxuICBcIkNvbXBsZXhSZWdpb25QbG90XCIsXG4gIFwiQ29tcGxleFN0cmVhbVBsb3RcIixcbiAgXCJDb21wbGV4VmVjdG9yUGxvdFwiLFxuICBcIkNvbXBvbmVudE1lYXN1cmVtZW50c1wiLFxuICBcIkNvbXBvbmVudHdpc2VDb250ZXh0TWVudVwiLFxuICBcIkNvbXBvc2VcIixcbiAgXCJDb21wb3NlTGlzdFwiLFxuICBcIkNvbXBvc2VTZXJpZXNcIixcbiAgXCJDb21wb3NpdGVRXCIsXG4gIFwiQ29tcG9zaXRpb25cIixcbiAgXCJDb21wb3VuZEVsZW1lbnRcIixcbiAgXCJDb21wb3VuZEV4cHJlc3Npb25cIixcbiAgXCJDb21wb3VuZFBvaXNzb25EaXN0cmlidXRpb25cIixcbiAgXCJDb21wb3VuZFBvaXNzb25Qcm9jZXNzXCIsXG4gIFwiQ29tcG91bmRSZW5ld2FsUHJvY2Vzc1wiLFxuICBcIkNvbXByZXNzXCIsXG4gIFwiQ29tcHJlc3NlZERhdGFcIixcbiAgXCJDb21wcmVzc2lvbkxldmVsXCIsXG4gIFwiQ29tcHV0ZVVuY2VydGFpbnR5XCIsXG4gIFwiQ29uY2F2ZUh1bGxNZXNoXCIsXG4gIFwiQ29uZGl0aW9uXCIsXG4gIFwiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCIsXG4gIFwiQ29uZGl0aW9uZWRcIixcbiAgXCJDb25lXCIsXG4gIFwiQ29uZUJveFwiLFxuICBcIkNvbmZpZGVuY2VMZXZlbFwiLFxuICBcIkNvbmZpZGVuY2VSYW5nZVwiLFxuICBcIkNvbmZpZGVuY2VUcmFuc2Zvcm1cIixcbiAgXCJDb25maWd1cmF0aW9uUGF0aFwiLFxuICBcIkNvbmZpcm1cIixcbiAgXCJDb25maXJtQXNzZXJ0XCIsXG4gIFwiQ29uZmlybUJ5XCIsXG4gIFwiQ29uZmlybU1hdGNoXCIsXG4gIFwiQ29uZmlybVF1aWV0XCIsXG4gIFwiQ29uZm9ybWF0aW9uTWV0aG9kXCIsXG4gIFwiQ29uZm9ybUF1ZGlvXCIsXG4gIFwiQ29uZm9ybUltYWdlc1wiLFxuICBcIkNvbmdydWVudFwiLFxuICBcIkNvbmljR3JhZGllbnRGaWxsaW5nXCIsXG4gIFwiQ29uaWNIdWxsUmVnaW9uXCIsXG4gIFwiQ29uaWNIdWxsUmVnaW9uM0RCb3hcIixcbiAgXCJDb25pY0h1bGxSZWdpb24zREJveE9wdGlvbnNcIixcbiAgXCJDb25pY0h1bGxSZWdpb25Cb3hcIixcbiAgXCJDb25pY0h1bGxSZWdpb25Cb3hPcHRpb25zXCIsXG4gIFwiQ29uaWNPcHRpbWl6YXRpb25cIixcbiAgXCJDb25qdWdhdGVcIixcbiAgXCJDb25qdWdhdGVUcmFuc3Bvc2VcIixcbiAgXCJDb25qdW5jdGlvblwiLFxuICBcIkNvbm5lY3RcIixcbiAgXCJDb25uZWN0ZWRDb21wb25lbnRzXCIsXG4gIFwiQ29ubmVjdGVkR3JhcGhDb21wb25lbnRzXCIsXG4gIFwiQ29ubmVjdGVkR3JhcGhRXCIsXG4gIFwiQ29ubmVjdGVkTWVzaENvbXBvbmVudHNcIixcbiAgXCJDb25uZWN0ZWRNb2xlY3VsZUNvbXBvbmVudHNcIixcbiAgXCJDb25uZWN0ZWRNb2xlY3VsZVFcIixcbiAgXCJDb25uZWN0aW9uU2V0dGluZ3NcIixcbiAgXCJDb25uZWN0TGlicmFyeUNhbGxiYWNrRnVuY3Rpb25cIixcbiAgXCJDb25uZWN0U3lzdGVtTW9kZWxDb21wb25lbnRzXCIsXG4gIFwiQ29ubmVjdFN5c3RlbU1vZGVsQ29udHJvbGxlclwiLFxuICBcIkNvbm5lc1dpbmRvd1wiLFxuICBcIkNvbm92ZXJUZXN0XCIsXG4gIFwiQ29uc2VydmF0aXZlQ29udmVjdGlvblBERVRlcm1cIixcbiAgXCJDb25zb2xlTWVzc2FnZVwiLFxuICBcIkNvbnN0YW50XCIsXG4gIFwiQ29uc3RhbnRBcnJheVwiLFxuICBcIkNvbnN0YW50QXJyYXlMYXllclwiLFxuICBcIkNvbnN0YW50SW1hZ2VcIixcbiAgXCJDb25zdGFudFBsdXNMYXllclwiLFxuICBcIkNvbnN0YW50UmVnaW9uUVwiLFxuICBcIkNvbnN0YW50c1wiLFxuICBcIkNvbnN0YW50VGltZXNMYXllclwiLFxuICBcIkNvbnN0ZWxsYXRpb25EYXRhXCIsXG4gIFwiQ29uc3RyYWluZWRNYXhcIixcbiAgXCJDb25zdHJhaW5lZE1pblwiLFxuICBcIkNvbnN0cnVjdFwiLFxuICBcIkNvbnRhaW5pbmdcIixcbiAgXCJDb250YWluc0FsbFwiLFxuICBcIkNvbnRhaW5zQW55XCIsXG4gIFwiQ29udGFpbnNFeGFjdGx5XCIsXG4gIFwiQ29udGFpbnNOb25lXCIsXG4gIFwiQ29udGFpbnNPbmx5XCIsXG4gIFwiQ29udGVudERldGVjdG9yRnVuY3Rpb25cIixcbiAgXCJDb250ZW50RmllbGRPcHRpb25zXCIsXG4gIFwiQ29udGVudExvY2F0aW9uRnVuY3Rpb25cIixcbiAgXCJDb250ZW50T2JqZWN0XCIsXG4gIFwiQ29udGVudFBhZGRpbmdcIixcbiAgXCJDb250ZW50c0JvdW5kaW5nQm94XCIsXG4gIFwiQ29udGVudFNlbGVjdGFibGVcIixcbiAgXCJDb250ZW50U2l6ZVwiLFxuICBcIkNvbnRleHRcIixcbiAgXCJDb250ZXh0TWVudVwiLFxuICBcIkNvbnRleHRzXCIsXG4gIFwiQ29udGV4dFRvRmlsZU5hbWVcIixcbiAgXCJDb250aW51YXRpb25cIixcbiAgXCJDb250aW51ZVwiLFxuICBcIkNvbnRpbnVlZEZyYWN0aW9uXCIsXG4gIFwiQ29udGludWVkRnJhY3Rpb25LXCIsXG4gIFwiQ29udGludW91c0FjdGlvblwiLFxuICBcIkNvbnRpbnVvdXNNYXJrb3ZQcm9jZXNzXCIsXG4gIFwiQ29udGludW91c1Rhc2tcIixcbiAgXCJDb250aW51b3VzVGltZU1vZGVsUVwiLFxuICBcIkNvbnRpbnVvdXNXYXZlbGV0RGF0YVwiLFxuICBcIkNvbnRpbnVvdXNXYXZlbGV0VHJhbnNmb3JtXCIsXG4gIFwiQ29udG91ckRldGVjdFwiLFxuICBcIkNvbnRvdXJHcmFwaGljc1wiLFxuICBcIkNvbnRvdXJJbnRlZ3JhbFwiLFxuICBcIkNvbnRvdXJMYWJlbHNcIixcbiAgXCJDb250b3VyTGluZXNcIixcbiAgXCJDb250b3VyUGxvdFwiLFxuICBcIkNvbnRvdXJQbG90M0RcIixcbiAgXCJDb250b3Vyc1wiLFxuICBcIkNvbnRvdXJTaGFkaW5nXCIsXG4gIFwiQ29udG91clNtb290aGluZ1wiLFxuICBcIkNvbnRvdXJTdHlsZVwiLFxuICBcIkNvbnRyYWhhcm1vbmljTWVhblwiLFxuICBcIkNvbnRyYXN0aXZlTG9zc0xheWVyXCIsXG4gIFwiQ29udHJvbFwiLFxuICBcIkNvbnRyb2xBY3RpdmVcIixcbiAgXCJDb250cm9sQWxpZ25tZW50XCIsXG4gIFwiQ29udHJvbEdyb3VwQ29udGVudHNCb3hcIixcbiAgXCJDb250cm9sbGFiaWxpdHlHcmFtaWFuXCIsXG4gIFwiQ29udHJvbGxhYmlsaXR5TWF0cml4XCIsXG4gIFwiQ29udHJvbGxhYmxlRGVjb21wb3NpdGlvblwiLFxuICBcIkNvbnRyb2xsYWJsZU1vZGVsUVwiLFxuICBcIkNvbnRyb2xsZXJEdXJhdGlvblwiLFxuICBcIkNvbnRyb2xsZXJJbmZvcm1hdGlvblwiLFxuICBcIkNvbnRyb2xsZXJJbmZvcm1hdGlvbkRhdGFcIixcbiAgXCJDb250cm9sbGVyTGlua2luZ1wiLFxuICBcIkNvbnRyb2xsZXJNYW5pcHVsYXRlXCIsXG4gIFwiQ29udHJvbGxlck1ldGhvZFwiLFxuICBcIkNvbnRyb2xsZXJQYXRoXCIsXG4gIFwiQ29udHJvbGxlclN0YXRlXCIsXG4gIFwiQ29udHJvbFBsYWNlbWVudFwiLFxuICBcIkNvbnRyb2xzUmVuZGVyaW5nXCIsXG4gIFwiQ29udHJvbFR5cGVcIixcbiAgXCJDb252ZWN0aW9uUERFVGVybVwiLFxuICBcIkNvbnZlcmdlbnRzXCIsXG4gIFwiQ29udmVyc2lvbk9wdGlvbnNcIixcbiAgXCJDb252ZXJzaW9uUnVsZXNcIixcbiAgXCJDb252ZXJ0VG9Qb3N0U2NyaXB0XCIsXG4gIFwiQ29udmVydFRvUG9zdFNjcmlwdFBhY2tldFwiLFxuICBcIkNvbnZleEh1bGxNZXNoXCIsXG4gIFwiQ29udmV4SHVsbFJlZ2lvblwiLFxuICBcIkNvbnZleE9wdGltaXphdGlvblwiLFxuICBcIkNvbnZleFBvbHlnb25RXCIsXG4gIFwiQ29udmV4UG9seWhlZHJvblFcIixcbiAgXCJDb252ZXhSZWdpb25RXCIsXG4gIFwiQ29udm9sdXRpb25MYXllclwiLFxuICBcIkNvbnZvbHZlXCIsXG4gIFwiQ29ud2F5R3JvdXBDbzFcIixcbiAgXCJDb253YXlHcm91cENvMlwiLFxuICBcIkNvbndheUdyb3VwQ28zXCIsXG4gIFwiQ29va2llRnVuY3Rpb25cIixcbiAgXCJDb29raWVzXCIsXG4gIFwiQ29vcmRpbmF0ZUJvdW5kaW5nQm94XCIsXG4gIFwiQ29vcmRpbmF0ZUJvdW5kaW5nQm94QXJyYXlcIixcbiAgXCJDb29yZGluYXRlQm91bmRzXCIsXG4gIFwiQ29vcmRpbmF0ZUJvdW5kc0FycmF5XCIsXG4gIFwiQ29vcmRpbmF0ZUNoYXJ0RGF0YVwiLFxuICBcIkNvb3JkaW5hdGVzVG9vbE9wdGlvbnNcIixcbiAgXCJDb29yZGluYXRlVHJhbnNmb3JtXCIsXG4gIFwiQ29vcmRpbmF0ZVRyYW5zZm9ybURhdGFcIixcbiAgXCJDb3BsYW5hclBvaW50c1wiLFxuICBcIkNvcHJpbWVRXCIsXG4gIFwiQ29wcm9kdWN0XCIsXG4gIFwiQ29wdWxhRGlzdHJpYnV0aW9uXCIsXG4gIFwiQ29weWFibGVcIixcbiAgXCJDb3B5RGF0YWJpblwiLFxuICBcIkNvcHlEaXJlY3RvcnlcIixcbiAgXCJDb3B5RmlsZVwiLFxuICBcIkNvcHlGdW5jdGlvblwiLFxuICBcIkNvcHlUYWdcIixcbiAgXCJDb3B5VG9DbGlwYm9hcmRcIixcbiAgXCJDb3JlTmlscG90ZW50RGVjb21wb3NpdGlvblwiLFxuICBcIkNvcm5lckZpbHRlclwiLFxuICBcIkNvcm5lck5laWdoYm9yc1wiLFxuICBcIkNvcnJlbGF0aW9uXCIsXG4gIFwiQ29ycmVsYXRpb25EaXN0YW5jZVwiLFxuICBcIkNvcnJlbGF0aW9uRnVuY3Rpb25cIixcbiAgXCJDb3JyZWxhdGlvblRlc3RcIixcbiAgXCJDb3NcIixcbiAgXCJDb3NoXCIsXG4gIFwiQ29zaEludGVncmFsXCIsXG4gIFwiQ29zaW5lRGlzdGFuY2VcIixcbiAgXCJDb3NpbmVXaW5kb3dcIixcbiAgXCJDb3NJbnRlZ3JhbFwiLFxuICBcIkNvdFwiLFxuICBcIkNvdGhcIixcbiAgXCJDb3Vsb21iRlwiLFxuICBcIkNvdWxvbWJHXCIsXG4gIFwiQ291bG9tYkgxXCIsXG4gIFwiQ291bG9tYkgyXCIsXG4gIFwiQ291bnRcIixcbiAgXCJDb3VudERpc3RpbmN0XCIsXG4gIFwiQ291bnREaXN0aW5jdEJ5XCIsXG4gIFwiQ291bnRlckFzc2lnbm1lbnRzXCIsXG4gIFwiQ291bnRlckJveFwiLFxuICBcIkNvdW50ZXJCb3hPcHRpb25zXCIsXG4gIFwiQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbFwiLFxuICBcIkNvdW50ZXJFdmFsdWF0b3JcIixcbiAgXCJDb3VudGVyRnVuY3Rpb25cIixcbiAgXCJDb3VudGVySW5jcmVtZW50c1wiLFxuICBcIkNvdW50ZXJTdHlsZVwiLFxuICBcIkNvdW50ZXJTdHlsZU1lbnVMaXN0aW5nXCIsXG4gIFwiQ291bnRSb290c1wiLFxuICBcIkNvdW50cnlEYXRhXCIsXG4gIFwiQ291bnRzXCIsXG4gIFwiQ291bnRzQnlcIixcbiAgXCJDb3ZhcmlhbmNlXCIsXG4gIFwiQ292YXJpYW5jZUVzdGltYXRvckZ1bmN0aW9uXCIsXG4gIFwiQ292YXJpYW5jZUZ1bmN0aW9uXCIsXG4gIFwiQ294aWFuRGlzdHJpYnV0aW9uXCIsXG4gIFwiQ294SW5nZXJzb2xsUm9zc1Byb2Nlc3NcIixcbiAgXCJDb3hNb2RlbFwiLFxuICBcIkNveE1vZGVsRml0XCIsXG4gIFwiQ3JhbWVyVm9uTWlzZXNUZXN0XCIsXG4gIFwiQ3JlYXRlQXJjaGl2ZVwiLFxuICBcIkNyZWF0ZUNlbGxJRFwiLFxuICBcIkNyZWF0ZUNoYW5uZWxcIixcbiAgXCJDcmVhdGVDbG91ZEV4cHJlc3Npb25cIixcbiAgXCJDcmVhdGVDb21waWxlckVudmlyb25tZW50XCIsXG4gIFwiQ3JlYXRlRGF0YWJpblwiLFxuICBcIkNyZWF0ZURhdGFTdHJ1Y3R1cmVcIixcbiAgXCJDcmVhdGVEYXRhU3lzdGVtTW9kZWxcIixcbiAgXCJDcmVhdGVEaWFsb2dcIixcbiAgXCJDcmVhdGVEaXJlY3RvcnlcIixcbiAgXCJDcmVhdGVEb2N1bWVudFwiLFxuICBcIkNyZWF0ZUZpbGVcIixcbiAgXCJDcmVhdGVJbnRlcm1lZGlhdGVEaXJlY3Rvcmllc1wiLFxuICBcIkNyZWF0ZUxpY2Vuc2VFbnRpdGxlbWVudFwiLFxuICBcIkNyZWF0ZU1hbmFnZWRMaWJyYXJ5RXhwcmVzc2lvblwiLFxuICBcIkNyZWF0ZU5vdGVib29rXCIsXG4gIFwiQ3JlYXRlUGFjbGV0QXJjaGl2ZVwiLFxuICBcIkNyZWF0ZVBhbGV0dGVcIixcbiAgXCJDcmVhdGVQZXJtaXNzaW9uc0dyb3VwXCIsXG4gIFwiQ3JlYXRlU2NoZWR1bGVkVGFza1wiLFxuICBcIkNyZWF0ZVNlYXJjaEluZGV4XCIsXG4gIFwiQ3JlYXRlU3lzdGVtTW9kZWxcIixcbiAgXCJDcmVhdGVUZW1wb3JhcnlcIixcbiAgXCJDcmVhdGVUeXBlSW5zdGFuY2VcIixcbiAgXCJDcmVhdGVVVUlEXCIsXG4gIFwiQ3JlYXRlV2luZG93XCIsXG4gIFwiQ3JpdGVyaW9uRnVuY3Rpb25cIixcbiAgXCJDcml0aWNhbGl0eUZhaWx1cmVJbXBvcnRhbmNlXCIsXG4gIFwiQ3JpdGljYWxpdHlTdWNjZXNzSW1wb3J0YW5jZVwiLFxuICBcIkNyaXRpY2FsU2VjdGlvblwiLFxuICBcIkNyb3NzXCIsXG4gIFwiQ3Jvc3NFbnRyb3B5TG9zc0xheWVyXCIsXG4gIFwiQ3Jvc3NpbmdDb3VudFwiLFxuICBcIkNyb3NzaW5nRGV0ZWN0XCIsXG4gIFwiQ3Jvc3NpbmdQb2x5Z29uXCIsXG4gIFwiQ3Jvc3NNYXRyaXhcIixcbiAgXCJDc2NcIixcbiAgXCJDc2NoXCIsXG4gIFwiQ1NHUmVnaW9uXCIsXG4gIFwiQ1NHUmVnaW9uUVwiLFxuICBcIkNTR1JlZ2lvblRyZWVcIixcbiAgXCJDVENMb3NzTGF5ZXJcIixcbiAgXCJDdWJlXCIsXG4gIFwiQ3ViZVJvb3RcIixcbiAgXCJDdWJpY3NcIixcbiAgXCJDdWJvaWRcIixcbiAgXCJDdWJvaWRCb3hcIixcbiAgXCJDdWJvaWRCb3hPcHRpb25zXCIsXG4gIFwiQ3VtdWxhbnRcIixcbiAgXCJDdW11bGFudEdlbmVyYXRpbmdGdW5jdGlvblwiLFxuICBcIkN1bXVsYXRpdmVGZWF0dXJlSW1wYWN0UGxvdFwiLFxuICBcIkN1cFwiLFxuICBcIkN1cENhcFwiLFxuICBcIkN1cmxcIixcbiAgXCJDdXJseURvdWJsZVF1b3RlXCIsXG4gIFwiQ3VybHlRdW90ZVwiLFxuICBcIkN1cnJlbmN5Q29udmVydFwiLFxuICBcIkN1cnJlbnREYXRlXCIsXG4gIFwiQ3VycmVudEltYWdlXCIsXG4gIFwiQ3VycmVudE5vdGVib29rSW1hZ2VcIixcbiAgXCJDdXJyZW50U2NyZWVuSW1hZ2VcIixcbiAgXCJDdXJyZW50VmFsdWVcIixcbiAgXCJDdXJyeVwiLFxuICBcIkN1cnJ5QXBwbGllZFwiLFxuICBcIkN1cnZhdHVyZUZsb3dGaWx0ZXJcIixcbiAgXCJDdXJ2ZUNsb3NlZFwiLFxuICBcIkN5YW5cIixcbiAgXCJDeWNsZUdyYXBoXCIsXG4gIFwiQ3ljbGVJbmRleFBvbHlub21pYWxcIixcbiAgXCJDeWNsZXNcIixcbiAgXCJDeWNsaWNHcm91cFwiLFxuICBcIkN5Y2xvdG9taWNcIixcbiAgXCJDeWxpbmRlclwiLFxuICBcIkN5bGluZGVyQm94XCIsXG4gIFwiQ3lsaW5kZXJCb3hPcHRpb25zXCIsXG4gIFwiQ3lsaW5kcmljYWxEZWNvbXBvc2l0aW9uXCIsXG4gIFwiQ3lsaW5kcmljYWxEZWNvbXBvc2l0aW9uRnVuY3Rpb25cIixcbiAgXCJEXCIsXG4gIFwiRGFndW1EaXN0cmlidXRpb25cIixcbiAgXCJEYW1EYXRhXCIsXG4gIFwiRGFtZXJhdUxldmVuc2h0ZWluRGlzdGFuY2VcIixcbiAgXCJEYW1waW5nRmFjdG9yXCIsXG4gIFwiRGFya2VyXCIsXG4gIFwiRGFzaGVkXCIsXG4gIFwiRGFzaGluZ1wiLFxuICBcIkRhdGFiYXNlQ29ubmVjdFwiLFxuICBcIkRhdGFiYXNlRGlzY29ubmVjdFwiLFxuICBcIkRhdGFiYXNlUmVmZXJlbmNlXCIsXG4gIFwiRGF0YWJpblwiLFxuICBcIkRhdGFiaW5BZGRcIixcbiAgXCJEYXRhYmluUmVtb3ZlXCIsXG4gIFwiRGF0YWJpbnNcIixcbiAgXCJEYXRhYmluU3VibWl0XCIsXG4gIFwiRGF0YWJpblVwbG9hZFwiLFxuICBcIkRhdGFDb21wcmVzc2lvblwiLFxuICBcIkRhdGFEaXN0cmlidXRpb25cIixcbiAgXCJEYXRhUmFuZ2VcIixcbiAgXCJEYXRhUmV2ZXJzZWRcIixcbiAgXCJEYXRhc2V0XCIsXG4gIFwiRGF0YXNldERpc3BsYXlQYW5lbFwiLFxuICBcIkRhdGFzZXRUaGVtZVwiLFxuICBcIkRhdGFTdHJ1Y3R1cmVcIixcbiAgXCJEYXRhU3RydWN0dXJlUVwiLFxuICBcIkRhdGVcIixcbiAgXCJEYXRlQm91bmRzXCIsXG4gIFwiRGF0ZWRcIixcbiAgXCJEYXRlRGVsaW1pdGVyc1wiLFxuICBcIkRhdGVEaWZmZXJlbmNlXCIsXG4gIFwiRGF0ZWRVbml0XCIsXG4gIFwiRGF0ZUZvcm1hdFwiLFxuICBcIkRhdGVGdW5jdGlvblwiLFxuICBcIkRhdGVHcmFudWxhcml0eVwiLFxuICBcIkRhdGVIaXN0b2dyYW1cIixcbiAgXCJEYXRlSW50ZXJ2YWxcIixcbiAgXCJEYXRlTGlzdFwiLFxuICBcIkRhdGVMaXN0TG9nUGxvdFwiLFxuICBcIkRhdGVMaXN0UGxvdFwiLFxuICBcIkRhdGVMaXN0U3RlcFBsb3RcIixcbiAgXCJEYXRlT2JqZWN0XCIsXG4gIFwiRGF0ZU9iamVjdFFcIixcbiAgXCJEYXRlT3ZlcmxhcHNRXCIsXG4gIFwiRGF0ZVBhdHRlcm5cIixcbiAgXCJEYXRlUGx1c1wiLFxuICBcIkRhdGVSYW5nZVwiLFxuICBcIkRhdGVSZWR1Y3Rpb25cIixcbiAgXCJEYXRlU2NhbGVcIixcbiAgXCJEYXRlU2VsZWN0XCIsXG4gIFwiRGF0ZVN0cmluZ1wiLFxuICBcIkRhdGVUaWNrc0Zvcm1hdFwiLFxuICBcIkRhdGVWYWx1ZVwiLFxuICBcIkRhdGVXaXRoaW5RXCIsXG4gIFwiRGF1YmVjaGllc1dhdmVsZXRcIixcbiAgXCJEYXZpc0Rpc3RyaWJ1dGlvblwiLFxuICBcIkRhd3NvbkZcIixcbiAgXCJEYXlDb3VudFwiLFxuICBcIkRheUNvdW50Q29udmVudGlvblwiLFxuICBcIkRheUhlbWlzcGhlcmVcIixcbiAgXCJEYXlsaWdodFFcIixcbiAgXCJEYXlNYXRjaFFcIixcbiAgXCJEYXlOYW1lXCIsXG4gIFwiRGF5TmlnaHRUZXJtaW5hdG9yXCIsXG4gIFwiRGF5UGx1c1wiLFxuICBcIkRheVJhbmdlXCIsXG4gIFwiRGF5Um91bmRcIixcbiAgXCJEZUJydWlqbkdyYXBoXCIsXG4gIFwiRGVCcnVpam5TZXF1ZW5jZVwiLFxuICBcIkRlYnVnXCIsXG4gIFwiRGVidWdUYWdcIixcbiAgXCJEZWNhcGl0YWxpemVcIixcbiAgXCJEZWNpbWFsXCIsXG4gIFwiRGVjaW1hbEZvcm1cIixcbiAgXCJEZWNsYXJlQ29tcGlsZWRDb21wb25lbnRcIixcbiAgXCJEZWNsYXJlS25vd25TeW1ib2xzXCIsXG4gIFwiRGVjbGFyZVBhY2thZ2VcIixcbiAgXCJEZWNvbXBvc2VcIixcbiAgXCJEZWNvbnZvbHV0aW9uTGF5ZXJcIixcbiAgXCJEZWNyZW1lbnRcIixcbiAgXCJEZWNyeXB0XCIsXG4gIFwiRGVjcnlwdEZpbGVcIixcbiAgXCJEZWRla2luZEV0YVwiLFxuICBcIkRlZXBTcGFjZVByb2JlRGF0YVwiLFxuICBcIkRlZmF1bHRcIixcbiAgXCJEZWZhdWx0MkRUb29sXCIsXG4gIFwiRGVmYXVsdDNEVG9vbFwiLFxuICBcIkRlZmF1bHRBdHRhY2hlZENlbGxTdHlsZVwiLFxuICBcIkRlZmF1bHRBeGVzU3R5bGVcIixcbiAgXCJEZWZhdWx0QmFzZVN0eWxlXCIsXG4gIFwiRGVmYXVsdEJveFN0eWxlXCIsXG4gIFwiRGVmYXVsdEJ1dHRvblwiLFxuICBcIkRlZmF1bHRDb2xvclwiLFxuICBcIkRlZmF1bHRDb250cm9sUGxhY2VtZW50XCIsXG4gIFwiRGVmYXVsdERvY2tlZENlbGxTdHlsZVwiLFxuICBcIkRlZmF1bHREdXBsaWNhdGVDZWxsU3R5bGVcIixcbiAgXCJEZWZhdWx0RHVyYXRpb25cIixcbiAgXCJEZWZhdWx0RWxlbWVudFwiLFxuICBcIkRlZmF1bHRGYWNlR3JpZHNTdHlsZVwiLFxuICBcIkRlZmF1bHRGaWVsZEhpbnRTdHlsZVwiLFxuICBcIkRlZmF1bHRGb250XCIsXG4gIFwiRGVmYXVsdEZvbnRQcm9wZXJ0aWVzXCIsXG4gIFwiRGVmYXVsdEZvcm1hdFR5cGVcIixcbiAgXCJEZWZhdWx0RnJhbWVTdHlsZVwiLFxuICBcIkRlZmF1bHRGcmFtZVRpY2tzU3R5bGVcIixcbiAgXCJEZWZhdWx0R3JpZExpbmVzU3R5bGVcIixcbiAgXCJEZWZhdWx0SW5saW5lRm9ybWF0VHlwZVwiLFxuICBcIkRlZmF1bHRJbnB1dEZvcm1hdFR5cGVcIixcbiAgXCJEZWZhdWx0TGFiZWxTdHlsZVwiLFxuICBcIkRlZmF1bHRNZW51U3R5bGVcIixcbiAgXCJEZWZhdWx0TmF0dXJhbExhbmd1YWdlXCIsXG4gIFwiRGVmYXVsdE5ld0NlbGxTdHlsZVwiLFxuICBcIkRlZmF1bHROZXdJbmxpbmVDZWxsU3R5bGVcIixcbiAgXCJEZWZhdWx0Tm90ZWJvb2tcIixcbiAgXCJEZWZhdWx0T3B0aW9uc1wiLFxuICBcIkRlZmF1bHRPdXRwdXRGb3JtYXRUeXBlXCIsXG4gIFwiRGVmYXVsdFByaW50UHJlY2lzaW9uXCIsXG4gIFwiRGVmYXVsdFN0eWxlXCIsXG4gIFwiRGVmYXVsdFN0eWxlRGVmaW5pdGlvbnNcIixcbiAgXCJEZWZhdWx0VGV4dEZvcm1hdFR5cGVcIixcbiAgXCJEZWZhdWx0VGV4dElubGluZUZvcm1hdFR5cGVcIixcbiAgXCJEZWZhdWx0VGlja3NTdHlsZVwiLFxuICBcIkRlZmF1bHRUb29sdGlwU3R5bGVcIixcbiAgXCJEZWZhdWx0VmFsdWVcIixcbiAgXCJEZWZhdWx0VmFsdWVzXCIsXG4gIFwiRGVmZXJcIixcbiAgXCJEZWZpbmVFeHRlcm5hbFwiLFxuICBcIkRlZmluZUlucHV0U3RyZWFtTWV0aG9kXCIsXG4gIFwiRGVmaW5lT3V0cHV0U3RyZWFtTWV0aG9kXCIsXG4gIFwiRGVmaW5lUmVzb3VyY2VGdW5jdGlvblwiLFxuICBcIkRlZmluaXRpb25cIixcbiAgXCJEZWdyZWVcIixcbiAgXCJEZWdyZWVDZW50cmFsaXR5XCIsXG4gIFwiRGVncmVlR3JhcGhEaXN0cmlidXRpb25cIixcbiAgXCJEZWdyZWVMZXhpY29ncmFwaGljXCIsXG4gIFwiRGVncmVlUmV2ZXJzZUxleGljb2dyYXBoaWNcIixcbiAgXCJERWlnZW5zeXN0ZW1cIixcbiAgXCJERWlnZW52YWx1ZXNcIixcbiAgXCJEZWluaXRpYWxpemF0aW9uXCIsXG4gIFwiRGVsXCIsXG4gIFwiRGVsYXVuYXlNZXNoXCIsXG4gIFwiRGVsYXllZFwiLFxuICBcIkRlbGV0YWJsZVwiLFxuICBcIkRlbGV0ZVwiLFxuICBcIkRlbGV0ZUFkamFjZW50RHVwbGljYXRlc1wiLFxuICBcIkRlbGV0ZUFub21hbGllc1wiLFxuICBcIkRlbGV0ZUJvcmRlckNvbXBvbmVudHNcIixcbiAgXCJEZWxldGVDYXNlc1wiLFxuICBcIkRlbGV0ZUNoYW5uZWxcIixcbiAgXCJEZWxldGVDbG91ZEV4cHJlc3Npb25cIixcbiAgXCJEZWxldGVDb250ZW50c1wiLFxuICBcIkRlbGV0ZURpcmVjdG9yeVwiLFxuICBcIkRlbGV0ZUR1cGxpY2F0ZXNcIixcbiAgXCJEZWxldGVEdXBsaWNhdGVzQnlcIixcbiAgXCJEZWxldGVFbGVtZW50c1wiLFxuICBcIkRlbGV0ZUZpbGVcIixcbiAgXCJEZWxldGVNaXNzaW5nXCIsXG4gIFwiRGVsZXRlT2JqZWN0XCIsXG4gIFwiRGVsZXRlUGVybWlzc2lvbnNLZXlcIixcbiAgXCJEZWxldGVTZWFyY2hJbmRleFwiLFxuICBcIkRlbGV0ZVNtYWxsQ29tcG9uZW50c1wiLFxuICBcIkRlbGV0ZVN0b3B3b3Jkc1wiLFxuICBcIkRlbGV0ZVdpdGhDb250ZW50c1wiLFxuICBcIkRlbGV0aW9uV2FybmluZ1wiLFxuICBcIkRlbGltaXRlZEFycmF5XCIsXG4gIFwiRGVsaW1pdGVkU2VxdWVuY2VcIixcbiAgXCJEZWxpbWl0ZXJcIixcbiAgXCJEZWxpbWl0ZXJBdXRvTWF0Y2hpbmdcIixcbiAgXCJEZWxpbWl0ZXJGbGFzaFRpbWVcIixcbiAgXCJEZWxpbWl0ZXJNYXRjaGluZ1wiLFxuICBcIkRlbGltaXRlcnNcIixcbiAgXCJEZWxpdmVyeUZ1bmN0aW9uXCIsXG4gIFwiRGVuZHJvZ3JhbVwiLFxuICBcIkRlbm9taW5hdG9yXCIsXG4gIFwiRGVuc2l0eUdyYXBoaWNzXCIsXG4gIFwiRGVuc2l0eUhpc3RvZ3JhbVwiLFxuICBcIkRlbnNpdHlQbG90XCIsXG4gIFwiRGVuc2l0eVBsb3QzRFwiLFxuICBcIkRlcGVuZGVudFZhcmlhYmxlc1wiLFxuICBcIkRlcGxveVwiLFxuICBcIkRlcGxveWVkXCIsXG4gIFwiRGVwdGhcIixcbiAgXCJEZXB0aEZpcnN0U2NhblwiLFxuICBcIkRlcml2YXRpdmVcIixcbiAgXCJEZXJpdmF0aXZlRmlsdGVyXCIsXG4gIFwiRGVyaXZhdGl2ZVBERVRlcm1cIixcbiAgXCJEZXJpdmVkS2V5XCIsXG4gIFwiRGVzY3JpcHRvclN0YXRlU3BhY2VcIixcbiAgXCJEZXNpZ25NYXRyaXhcIixcbiAgXCJEZXN0cm95QWZ0ZXJFdmFsdWF0aW9uXCIsXG4gIFwiRGV0XCIsXG4gIFwiRGV2aWNlQ2xvc2VcIixcbiAgXCJEZXZpY2VDb25maWd1cmVcIixcbiAgXCJEZXZpY2VFeGVjdXRlXCIsXG4gIFwiRGV2aWNlRXhlY3V0ZUFzeW5jaHJvbm91c1wiLFxuICBcIkRldmljZU9iamVjdFwiLFxuICBcIkRldmljZU9wZW5cIixcbiAgXCJEZXZpY2VPcGVuUVwiLFxuICBcIkRldmljZVJlYWRcIixcbiAgXCJEZXZpY2VSZWFkQnVmZmVyXCIsXG4gIFwiRGV2aWNlUmVhZExhdGVzdFwiLFxuICBcIkRldmljZVJlYWRMaXN0XCIsXG4gIFwiRGV2aWNlUmVhZFRpbWVTZXJpZXNcIixcbiAgXCJEZXZpY2VzXCIsXG4gIFwiRGV2aWNlU3RyZWFtc1wiLFxuICBcIkRldmljZVdyaXRlXCIsXG4gIFwiRGV2aWNlV3JpdGVCdWZmZXJcIixcbiAgXCJER2F1c3NpYW5XYXZlbGV0XCIsXG4gIFwiRGlhY3JpdGljYWxQb3NpdGlvbmluZ1wiLFxuICBcIkRpYWdvbmFsXCIsXG4gIFwiRGlhZ29uYWxpemFibGVNYXRyaXhRXCIsXG4gIFwiRGlhZ29uYWxNYXRyaXhcIixcbiAgXCJEaWFnb25hbE1hdHJpeFFcIixcbiAgXCJEaWFsb2dcIixcbiAgXCJEaWFsb2dJbmRlbnRcIixcbiAgXCJEaWFsb2dJbnB1dFwiLFxuICBcIkRpYWxvZ0xldmVsXCIsXG4gIFwiRGlhbG9nTm90ZWJvb2tcIixcbiAgXCJEaWFsb2dQcm9sb2dcIixcbiAgXCJEaWFsb2dSZXR1cm5cIixcbiAgXCJEaWFsb2dTeW1ib2xzXCIsXG4gIFwiRGlhbW9uZFwiLFxuICBcIkRpYW1vbmRNYXRyaXhcIixcbiAgXCJEaWNlRGlzc2ltaWxhcml0eVwiLFxuICBcIkRpY3Rpb25hcnlMb29rdXBcIixcbiAgXCJEaWN0aW9uYXJ5V29yZFFcIixcbiAgXCJEaWZmZXJlbmNlRGVsdGFcIixcbiAgXCJEaWZmZXJlbmNlT3JkZXJcIixcbiAgXCJEaWZmZXJlbmNlUXVvdGllbnRcIixcbiAgXCJEaWZmZXJlbmNlUm9vdFwiLFxuICBcIkRpZmZlcmVuY2VSb290UmVkdWNlXCIsXG4gIFwiRGlmZmVyZW5jZXNcIixcbiAgXCJEaWZmZXJlbnRpYWxEXCIsXG4gIFwiRGlmZmVyZW50aWFsUm9vdFwiLFxuICBcIkRpZmZlcmVudGlhbFJvb3RSZWR1Y2VcIixcbiAgXCJEaWZmZXJlbnRpYXRvckZpbHRlclwiLFxuICBcIkRpZmZ1c2lvblBERVRlcm1cIixcbiAgXCJEaWdnbGVHYXRlc1BvaW50UHJvY2Vzc1wiLFxuICBcIkRpZ2dsZUdyYXR0b25Qb2ludFByb2Nlc3NcIixcbiAgXCJEaWdpdGFsU2lnbmF0dXJlXCIsXG4gIFwiRGlnaXRCbG9ja1wiLFxuICBcIkRpZ2l0QmxvY2tNaW5pbXVtXCIsXG4gIFwiRGlnaXRDaGFyYWN0ZXJcIixcbiAgXCJEaWdpdENvdW50XCIsXG4gIFwiRGlnaXRRXCIsXG4gIFwiRGloZWRyYWxBbmdsZVwiLFxuICBcIkRpaGVkcmFsR3JvdXBcIixcbiAgXCJEaWxhdGlvblwiLFxuICBcIkRpbWVuc2lvbmFsQ29tYmluYXRpb25zXCIsXG4gIFwiRGltZW5zaW9uYWxNZXNoQ29tcG9uZW50c1wiLFxuICBcIkRpbWVuc2lvblJlZHVjZVwiLFxuICBcIkRpbWVuc2lvblJlZHVjZXJGdW5jdGlvblwiLFxuICBcIkRpbWVuc2lvblJlZHVjdGlvblwiLFxuICBcIkRpbWVuc2lvbnNcIixcbiAgXCJEaXJhY0NvbWJcIixcbiAgXCJEaXJhY0RlbHRhXCIsXG4gIFwiRGlyZWN0ZWRFZGdlXCIsXG4gIFwiRGlyZWN0ZWRFZGdlc1wiLFxuICBcIkRpcmVjdGVkR3JhcGhcIixcbiAgXCJEaXJlY3RlZEdyYXBoUVwiLFxuICBcIkRpcmVjdGVkSW5maW5pdHlcIixcbiAgXCJEaXJlY3Rpb25cIixcbiAgXCJEaXJlY3Rpb25hbExpZ2h0XCIsXG4gIFwiRGlyZWN0aXZlXCIsXG4gIFwiRGlyZWN0b3J5XCIsXG4gIFwiRGlyZWN0b3J5TmFtZVwiLFxuICBcIkRpcmVjdG9yeVFcIixcbiAgXCJEaXJlY3RvcnlTdGFja1wiLFxuICBcIkRpcmljaGxldEJldGFcIixcbiAgXCJEaXJpY2hsZXRDaGFyYWN0ZXJcIixcbiAgXCJEaXJpY2hsZXRDb25kaXRpb25cIixcbiAgXCJEaXJpY2hsZXRDb252b2x2ZVwiLFxuICBcIkRpcmljaGxldERpc3RyaWJ1dGlvblwiLFxuICBcIkRpcmljaGxldEV0YVwiLFxuICBcIkRpcmljaGxldExcIixcbiAgXCJEaXJpY2hsZXRMYW1iZGFcIixcbiAgXCJEaXJpY2hsZXRUcmFuc2Zvcm1cIixcbiAgXCJEaXJpY2hsZXRXaW5kb3dcIixcbiAgXCJEaXNhYmxlQ29uc29sZVByaW50UGFja2V0XCIsXG4gIFwiRGlzYWJsZUZvcm1hdHRpbmdcIixcbiAgXCJEaXNjcmV0ZUFzeW1wdG90aWNcIixcbiAgXCJEaXNjcmV0ZUNoaXJwWlRyYW5zZm9ybVwiLFxuICBcIkRpc2NyZXRlQ29udm9sdmVcIixcbiAgXCJEaXNjcmV0ZURlbHRhXCIsXG4gIFwiRGlzY3JldGVIYWRhbWFyZFRyYW5zZm9ybVwiLFxuICBcIkRpc2NyZXRlSW5kaWNhdG9yXCIsXG4gIFwiRGlzY3JldGVJbnB1dE91dHB1dE1vZGVsXCIsXG4gIFwiRGlzY3JldGVMaW1pdFwiLFxuICBcIkRpc2NyZXRlTFFFc3RpbWF0b3JHYWluc1wiLFxuICBcIkRpc2NyZXRlTFFSZWd1bGF0b3JHYWluc1wiLFxuICBcIkRpc2NyZXRlTHlhcHVub3ZTb2x2ZVwiLFxuICBcIkRpc2NyZXRlTWFya292UHJvY2Vzc1wiLFxuICBcIkRpc2NyZXRlTWF4TGltaXRcIixcbiAgXCJEaXNjcmV0ZU1pbkxpbWl0XCIsXG4gIFwiRGlzY3JldGVQbG90XCIsXG4gIFwiRGlzY3JldGVQbG90M0RcIixcbiAgXCJEaXNjcmV0ZVJhdGlvXCIsXG4gIFwiRGlzY3JldGVSaWNjYXRpU29sdmVcIixcbiAgXCJEaXNjcmV0ZVNoaWZ0XCIsXG4gIFwiRGlzY3JldGVUaW1lTW9kZWxRXCIsXG4gIFwiRGlzY3JldGVVbmlmb3JtRGlzdHJpYnV0aW9uXCIsXG4gIFwiRGlzY3JldGVWYXJpYWJsZXNcIixcbiAgXCJEaXNjcmV0ZVdhdmVsZXREYXRhXCIsXG4gIFwiRGlzY3JldGVXYXZlbGV0UGFja2V0VHJhbnNmb3JtXCIsXG4gIFwiRGlzY3JldGVXYXZlbGV0VHJhbnNmb3JtXCIsXG4gIFwiRGlzY3JldGl6ZUdyYXBoaWNzXCIsXG4gIFwiRGlzY3JldGl6ZVJlZ2lvblwiLFxuICBcIkRpc2NyaW1pbmFudFwiLFxuICBcIkRpc2pvaW50UVwiLFxuICBcIkRpc2p1bmN0aW9uXCIsXG4gIFwiRGlza1wiLFxuICBcIkRpc2tCb3hcIixcbiAgXCJEaXNrQm94T3B0aW9uc1wiLFxuICBcIkRpc2tNYXRyaXhcIixcbiAgXCJEaXNrU2VnbWVudFwiLFxuICBcIkRpc3BhdGNoXCIsXG4gIFwiRGlzcGF0Y2hRXCIsXG4gIFwiRGlzcGVyc2lvbkVzdGltYXRvckZ1bmN0aW9uXCIsXG4gIFwiRGlzcGxheVwiLFxuICBcIkRpc3BsYXlBbGxTdGVwc1wiLFxuICBcIkRpc3BsYXlFbmRQYWNrZXRcIixcbiAgXCJEaXNwbGF5Rm9ybVwiLFxuICBcIkRpc3BsYXlGdW5jdGlvblwiLFxuICBcIkRpc3BsYXlQYWNrZXRcIixcbiAgXCJEaXNwbGF5UnVsZXNcIixcbiAgXCJEaXNwbGF5U3RyaW5nXCIsXG4gIFwiRGlzcGxheVRlbXBvcmFyeVwiLFxuICBcIkRpc3BsYXlXaXRoXCIsXG4gIFwiRGlzcGxheVdpdGhSZWZcIixcbiAgXCJEaXNwbGF5V2l0aFZhcmlhYmxlXCIsXG4gIFwiRGlzdGFuY2VGdW5jdGlvblwiLFxuICBcIkRpc3RhbmNlTWF0cml4XCIsXG4gIFwiRGlzdGFuY2VUcmFuc2Zvcm1cIixcbiAgXCJEaXN0cmlidXRlXCIsXG4gIFwiRGlzdHJpYnV0ZWRcIixcbiAgXCJEaXN0cmlidXRlZENvbnRleHRzXCIsXG4gIFwiRGlzdHJpYnV0ZURlZmluaXRpb25zXCIsXG4gIFwiRGlzdHJpYnV0aW9uQ2hhcnRcIixcbiAgXCJEaXN0cmlidXRpb25Eb21haW5cIixcbiAgXCJEaXN0cmlidXRpb25GaXRUZXN0XCIsXG4gIFwiRGlzdHJpYnV0aW9uUGFyYW1ldGVyQXNzdW1wdGlvbnNcIixcbiAgXCJEaXN0cmlidXRpb25QYXJhbWV0ZXJRXCIsXG4gIFwiRGl0aGVyaW5nXCIsXG4gIFwiRGl2XCIsXG4gIFwiRGl2ZXJnZW5jZVwiLFxuICBcIkRpdmlkZVwiLFxuICBcIkRpdmlkZUJ5XCIsXG4gIFwiRGl2aWRlcnNcIixcbiAgXCJEaXZpZGVTaWRlc1wiLFxuICBcIkRpdmlzaWJsZVwiLFxuICBcIkRpdmlzb3JzXCIsXG4gIFwiRGl2aXNvclNpZ21hXCIsXG4gIFwiRGl2aXNvclN1bVwiLFxuICBcIkRNU0xpc3RcIixcbiAgXCJETVNTdHJpbmdcIixcbiAgXCJEb1wiLFxuICBcIkRvY2tlZENlbGxcIixcbiAgXCJEb2NrZWRDZWxsc1wiLFxuICBcIkRvY3VtZW50R2VuZXJhdG9yXCIsXG4gIFwiRG9jdW1lbnRHZW5lcmF0b3JJbmZvcm1hdGlvblwiLFxuICBcIkRvY3VtZW50R2VuZXJhdG9ySW5mb3JtYXRpb25EYXRhXCIsXG4gIFwiRG9jdW1lbnRHZW5lcmF0b3JzXCIsXG4gIFwiRG9jdW1lbnROb3RlYm9va1wiLFxuICBcIkRvY3VtZW50V2VpZ2h0aW5nUnVsZXNcIixcbiAgXCJEb2RlY2FoZWRyb25cIixcbiAgXCJEb21haW5SZWdpc3RyYXRpb25JbmZvcm1hdGlvblwiLFxuICBcIkRvbWluYW50Q29sb3JzXCIsXG4gIFwiRG9taW5hdG9yVHJlZUdyYXBoXCIsXG4gIFwiRG9taW5hdG9yVmVydGV4TGlzdFwiLFxuICBcIkRPU1RleHRGb3JtYXRcIixcbiAgXCJEb3RcIixcbiAgXCJEb3REYXNoZWRcIixcbiAgXCJEb3RFcXVhbFwiLFxuICBcIkRvdExheWVyXCIsXG4gIFwiRG90UGx1c0xheWVyXCIsXG4gIFwiRG90dGVkXCIsXG4gIFwiRG91YmxlQnJhY2tldGluZ0JhclwiLFxuICBcIkRvdWJsZUNvbnRvdXJJbnRlZ3JhbFwiLFxuICBcIkRvdWJsZURvd25BcnJvd1wiLFxuICBcIkRvdWJsZUxlZnRBcnJvd1wiLFxuICBcIkRvdWJsZUxlZnRSaWdodEFycm93XCIsXG4gIFwiRG91YmxlTGVmdFRlZVwiLFxuICBcIkRvdWJsZUxvbmdMZWZ0QXJyb3dcIixcbiAgXCJEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3dcIixcbiAgXCJEb3VibGVMb25nUmlnaHRBcnJvd1wiLFxuICBcIkRvdWJsZVJpZ2h0QXJyb3dcIixcbiAgXCJEb3VibGVSaWdodFRlZVwiLFxuICBcIkRvdWJsZVVwQXJyb3dcIixcbiAgXCJEb3VibGVVcERvd25BcnJvd1wiLFxuICBcIkRvdWJsZVZlcnRpY2FsQmFyXCIsXG4gIFwiRG91Ymx5SW5maW5pdGVcIixcbiAgXCJEb3duXCIsXG4gIFwiRG93bkFycm93XCIsXG4gIFwiRG93bkFycm93QmFyXCIsXG4gIFwiRG93bkFycm93VXBBcnJvd1wiLFxuICBcIkRvd25MZWZ0UmlnaHRWZWN0b3JcIixcbiAgXCJEb3duTGVmdFRlZVZlY3RvclwiLFxuICBcIkRvd25MZWZ0VmVjdG9yXCIsXG4gIFwiRG93bkxlZnRWZWN0b3JCYXJcIixcbiAgXCJEb3duUmlnaHRUZWVWZWN0b3JcIixcbiAgXCJEb3duUmlnaHRWZWN0b3JcIixcbiAgXCJEb3duUmlnaHRWZWN0b3JCYXJcIixcbiAgXCJEb3duc2FtcGxlXCIsXG4gIFwiRG93blRlZVwiLFxuICBcIkRvd25UZWVBcnJvd1wiLFxuICBcIkRvd25WYWx1ZXNcIixcbiAgXCJEb3duVmFsdWVzRnVuY3Rpb25cIixcbiAgXCJEcmFnQW5kRHJvcFwiLFxuICBcIkRyYXdCYWNrRmFjZXNcIixcbiAgXCJEcmF3RWRnZXNcIixcbiAgXCJEcmF3RnJvbnRGYWNlc1wiLFxuICBcIkRyYXdIaWdobGlnaHRlZFwiLFxuICBcIkRyYXppbkludmVyc2VcIixcbiAgXCJEcm9wXCIsXG4gIFwiRHJvcG91dExheWVyXCIsXG4gIFwiRHJvcFNoYWRvd2luZ1wiLFxuICBcIkRTb2x2ZVwiLFxuICBcIkRTb2x2ZUNoYW5nZVZhcmlhYmxlc1wiLFxuICBcIkRTb2x2ZVZhbHVlXCIsXG4gIFwiRHRcIixcbiAgXCJEdWFsTGluZWFyUHJvZ3JhbW1pbmdcIixcbiAgXCJEdWFsUGxhbmFyR3JhcGhcIixcbiAgXCJEdWFsUG9seWhlZHJvblwiLFxuICBcIkR1YWxTeXN0ZW1zTW9kZWxcIixcbiAgXCJEdW1wR2V0XCIsXG4gIFwiRHVtcFNhdmVcIixcbiAgXCJEdXBsaWNhdGVGcmVlUVwiLFxuICBcIkR1cmF0aW9uXCIsXG4gIFwiRHluYW1pY1wiLFxuICBcIkR5bmFtaWNCb3hcIixcbiAgXCJEeW5hbWljQm94T3B0aW9uc1wiLFxuICBcIkR5bmFtaWNFdmFsdWF0aW9uVGltZW91dFwiLFxuICBcIkR5bmFtaWNHZW9HcmFwaGljc1wiLFxuICBcIkR5bmFtaWNJbWFnZVwiLFxuICBcIkR5bmFtaWNMb2NhdGlvblwiLFxuICBcIkR5bmFtaWNNb2R1bGVcIixcbiAgXCJEeW5hbWljTW9kdWxlQm94XCIsXG4gIFwiRHluYW1pY01vZHVsZUJveE9wdGlvbnNcIixcbiAgXCJEeW5hbWljTW9kdWxlUGFyZW50XCIsXG4gIFwiRHluYW1pY01vZHVsZVZhbHVlc1wiLFxuICBcIkR5bmFtaWNOYW1lXCIsXG4gIFwiRHluYW1pY05hbWVzcGFjZVwiLFxuICBcIkR5bmFtaWNSZWZlcmVuY2VcIixcbiAgXCJEeW5hbWljU2V0dGluZ1wiLFxuICBcIkR5bmFtaWNVcGRhdGluZ1wiLFxuICBcIkR5bmFtaWNXcmFwcGVyXCIsXG4gIFwiRHluYW1pY1dyYXBwZXJCb3hcIixcbiAgXCJEeW5hbWljV3JhcHBlckJveE9wdGlvbnNcIixcbiAgXCJFXCIsXG4gIFwiRWFydGhJbXBhY3REYXRhXCIsXG4gIFwiRWFydGhxdWFrZURhdGFcIixcbiAgXCJFY2NlbnRyaWNpdHlDZW50cmFsaXR5XCIsXG4gIFwiRWNob1wiLFxuICBcIkVjaG9FdmFsdWF0aW9uXCIsXG4gIFwiRWNob0Z1bmN0aW9uXCIsXG4gIFwiRWNob0xhYmVsXCIsXG4gIFwiRWNob1RpbWluZ1wiLFxuICBcIkVjbGlwc2VUeXBlXCIsXG4gIFwiRWRnZUFkZFwiLFxuICBcIkVkZ2VCZXR3ZWVubmVzc0NlbnRyYWxpdHlcIixcbiAgXCJFZGdlQ2FwYWNpdHlcIixcbiAgXCJFZGdlQ2FwRm9ybVwiLFxuICBcIkVkZ2VDaHJvbWF0aWNOdW1iZXJcIixcbiAgXCJFZGdlQ29sb3JcIixcbiAgXCJFZGdlQ29ubmVjdGl2aXR5XCIsXG4gIFwiRWRnZUNvbnRyYWN0XCIsXG4gIFwiRWRnZUNvc3RcIixcbiAgXCJFZGdlQ291bnRcIixcbiAgXCJFZGdlQ292ZXJRXCIsXG4gIFwiRWRnZUN5Y2xlTWF0cml4XCIsXG4gIFwiRWRnZURhc2hpbmdcIixcbiAgXCJFZGdlRGVsZXRlXCIsXG4gIFwiRWRnZURldGVjdFwiLFxuICBcIkVkZ2VGb3JtXCIsXG4gIFwiRWRnZUluZGV4XCIsXG4gIFwiRWRnZUpvaW5Gb3JtXCIsXG4gIFwiRWRnZUxhYmVsaW5nXCIsXG4gIFwiRWRnZUxhYmVsc1wiLFxuICBcIkVkZ2VMYWJlbFN0eWxlXCIsXG4gIFwiRWRnZUxpc3RcIixcbiAgXCJFZGdlT3BhY2l0eVwiLFxuICBcIkVkZ2VRXCIsXG4gIFwiRWRnZVJlbmRlcmluZ0Z1bmN0aW9uXCIsXG4gIFwiRWRnZVJ1bGVzXCIsXG4gIFwiRWRnZVNoYXBlRnVuY3Rpb25cIixcbiAgXCJFZGdlU3R5bGVcIixcbiAgXCJFZGdlVGFnZ2VkR3JhcGhcIixcbiAgXCJFZGdlVGFnZ2VkR3JhcGhRXCIsXG4gIFwiRWRnZVRhZ3NcIixcbiAgXCJFZGdlVGhpY2tuZXNzXCIsXG4gIFwiRWRnZVRyYW5zaXRpdmVHcmFwaFFcIixcbiAgXCJFZGdlVmFsdWVSYW5nZVwiLFxuICBcIkVkZ2VWYWx1ZVNpemVzXCIsXG4gIFwiRWRnZVdlaWdodFwiLFxuICBcIkVkZ2VXZWlnaHRlZEdyYXBoUVwiLFxuICBcIkVkaXRhYmxlXCIsXG4gIFwiRWRpdEJ1dHRvblNldHRpbmdzXCIsXG4gIFwiRWRpdENlbGxUYWdzU2V0dGluZ3NcIixcbiAgXCJFZGl0RGlzdGFuY2VcIixcbiAgXCJFZmZlY3RpdmVJbnRlcmVzdFwiLFxuICBcIkVpZ2Vuc3lzdGVtXCIsXG4gIFwiRWlnZW52YWx1ZXNcIixcbiAgXCJFaWdlbnZlY3RvckNlbnRyYWxpdHlcIixcbiAgXCJFaWdlbnZlY3RvcnNcIixcbiAgXCJFbGVtZW50XCIsXG4gIFwiRWxlbWVudERhdGFcIixcbiAgXCJFbGVtZW50d2lzZUxheWVyXCIsXG4gIFwiRWxpZGVkRm9ybXNcIixcbiAgXCJFbGltaW5hdGVcIixcbiAgXCJFbGltaW5hdGlvbk9yZGVyXCIsXG4gIFwiRWxsaXBzb2lkXCIsXG4gIFwiRWxsaXB0aWNFXCIsXG4gIFwiRWxsaXB0aWNFeHBcIixcbiAgXCJFbGxpcHRpY0V4cFByaW1lXCIsXG4gIFwiRWxsaXB0aWNGXCIsXG4gIFwiRWxsaXB0aWNGaWx0ZXJNb2RlbFwiLFxuICBcIkVsbGlwdGljS1wiLFxuICBcIkVsbGlwdGljTG9nXCIsXG4gIFwiRWxsaXB0aWNOb21lUVwiLFxuICBcIkVsbGlwdGljUGlcIixcbiAgXCJFbGxpcHRpY1JlZHVjZWRIYWxmUGVyaW9kc1wiLFxuICBcIkVsbGlwdGljVGhldGFcIixcbiAgXCJFbGxpcHRpY1RoZXRhUHJpbWVcIixcbiAgXCJFbWJlZENvZGVcIixcbiAgXCJFbWJlZGRlZEhUTUxcIixcbiAgXCJFbWJlZGRlZFNlcnZpY2VcIixcbiAgXCJFbWJlZGRlZFNRTEVudGl0eUNsYXNzXCIsXG4gIFwiRW1iZWRkZWRTUUxFeHByZXNzaW9uXCIsXG4gIFwiRW1iZWRkaW5nTGF5ZXJcIixcbiAgXCJFbWJlZGRpbmdPYmplY3RcIixcbiAgXCJFbWl0U291bmRcIixcbiAgXCJFbXBoYXNpemVTeW50YXhFcnJvcnNcIixcbiAgXCJFbXBpcmljYWxEaXN0cmlidXRpb25cIixcbiAgXCJFbXB0eVwiLFxuICBcIkVtcHR5R3JhcGhRXCIsXG4gIFwiRW1wdHlSZWdpb25cIixcbiAgXCJFbXB0eVNwYWNlRlwiLFxuICBcIkVuYWJsZUNvbnNvbGVQcmludFBhY2tldFwiLFxuICBcIkVuYWJsZWRcIixcbiAgXCJFbmNsb3NlXCIsXG4gIFwiRW5jb2RlXCIsXG4gIFwiRW5jcnlwdFwiLFxuICBcIkVuY3J5cHRlZE9iamVjdFwiLFxuICBcIkVuY3J5cHRGaWxlXCIsXG4gIFwiRW5kXCIsXG4gIFwiRW5kQWRkXCIsXG4gIFwiRW5kRGlhbG9nUGFja2V0XCIsXG4gIFwiRW5kT2ZCdWZmZXJcIixcbiAgXCJFbmRPZkZpbGVcIixcbiAgXCJFbmRPZkxpbmVcIixcbiAgXCJFbmRPZlN0cmluZ1wiLFxuICBcIkVuZFBhY2thZ2VcIixcbiAgXCJFbmdpbmVFbnZpcm9ubWVudFwiLFxuICBcIkVuZ2luZWVyaW5nRm9ybVwiLFxuICBcIkVudGVyXCIsXG4gIFwiRW50ZXJFeHByZXNzaW9uUGFja2V0XCIsXG4gIFwiRW50ZXJUZXh0UGFja2V0XCIsXG4gIFwiRW50aXR5XCIsXG4gIFwiRW50aXR5Q2xhc3NcIixcbiAgXCJFbnRpdHlDbGFzc0xpc3RcIixcbiAgXCJFbnRpdHlDb3BpZXNcIixcbiAgXCJFbnRpdHlGdW5jdGlvblwiLFxuICBcIkVudGl0eUdyb3VwXCIsXG4gIFwiRW50aXR5SW5zdGFuY2VcIixcbiAgXCJFbnRpdHlMaXN0XCIsXG4gIFwiRW50aXR5UHJlZmV0Y2hcIixcbiAgXCJFbnRpdHlQcm9wZXJ0aWVzXCIsXG4gIFwiRW50aXR5UHJvcGVydHlcIixcbiAgXCJFbnRpdHlQcm9wZXJ0eUNsYXNzXCIsXG4gIFwiRW50aXR5UmVnaXN0ZXJcIixcbiAgXCJFbnRpdHlTdG9yZVwiLFxuICBcIkVudGl0eVN0b3Jlc1wiLFxuICBcIkVudGl0eVR5cGVOYW1lXCIsXG4gIFwiRW50aXR5VW5yZWdpc3RlclwiLFxuICBcIkVudGl0eVZhbHVlXCIsXG4gIFwiRW50cm9weVwiLFxuICBcIkVudHJvcHlGaWx0ZXJcIixcbiAgXCJFbnZpcm9ubWVudFwiLFxuICBcIkVwaWxvZ1wiLFxuICBcIkVwaWxvZ0Z1bmN0aW9uXCIsXG4gIFwiRXF1YWxcIixcbiAgXCJFcXVhbENvbHVtbnNcIixcbiAgXCJFcXVhbFJvd3NcIixcbiAgXCJFcXVhbFRpbGRlXCIsXG4gIFwiRXF1YWxUb1wiLFxuICBcIkVxdWF0ZWRUb1wiLFxuICBcIkVxdWlsaWJyaXVtXCIsXG4gIFwiRXF1aXJpcHBsZUZpbHRlcktlcm5lbFwiLFxuICBcIkVxdWl2YWxlbnRcIixcbiAgXCJFcmZcIixcbiAgXCJFcmZjXCIsXG4gIFwiRXJmaVwiLFxuICBcIkVybGFuZ0JcIixcbiAgXCJFcmxhbmdDXCIsXG4gIFwiRXJsYW5nRGlzdHJpYnV0aW9uXCIsXG4gIFwiRXJvc2lvblwiLFxuICBcIkVycm9yQm94XCIsXG4gIFwiRXJyb3JCb3hPcHRpb25zXCIsXG4gIFwiRXJyb3JOb3JtXCIsXG4gIFwiRXJyb3JQYWNrZXRcIixcbiAgXCJFcnJvcnNEaWFsb2dTZXR0aW5nc1wiLFxuICBcIkVzY2FwZVJhZGl1c1wiLFxuICBcIkVzdGltYXRlZEJhY2tncm91bmRcIixcbiAgXCJFc3RpbWF0ZWREaXN0cmlidXRpb25cIixcbiAgXCJFc3RpbWF0ZWRQb2ludE5vcm1hbHNcIixcbiAgXCJFc3RpbWF0ZWRQb2ludFByb2Nlc3NcIixcbiAgXCJFc3RpbWF0ZWRQcm9jZXNzXCIsXG4gIFwiRXN0aW1hdGVkVmFyaW9ncmFtTW9kZWxcIixcbiAgXCJFc3RpbWF0b3JHYWluc1wiLFxuICBcIkVzdGltYXRvclJlZ3VsYXRvclwiLFxuICBcIkV1Y2xpZGVhbkRpc3RhbmNlXCIsXG4gIFwiRXVsZXJBbmdsZXNcIixcbiAgXCJFdWxlckNoYXJhY3RlcmlzdGljXCIsXG4gIFwiRXVsZXJFXCIsXG4gIFwiRXVsZXJHYW1tYVwiLFxuICBcIkV1bGVyaWFuR3JhcGhRXCIsXG4gIFwiRXVsZXJNYXRyaXhcIixcbiAgXCJFdWxlclBoaVwiLFxuICBcIkV2YWx1YXRhYmxlXCIsXG4gIFwiRXZhbHVhdGVcIixcbiAgXCJFdmFsdWF0ZWRcIixcbiAgXCJFdmFsdWF0ZVBhY2tldFwiLFxuICBcIkV2YWx1YXRlU2NoZWR1bGVkVGFza1wiLFxuICBcIkV2YWx1YXRpb25Cb3hcIixcbiAgXCJFdmFsdWF0aW9uQ2VsbFwiLFxuICBcIkV2YWx1YXRpb25Db21wbGV0aW9uQWN0aW9uXCIsXG4gIFwiRXZhbHVhdGlvbkRhdGFcIixcbiAgXCJFdmFsdWF0aW9uRWxlbWVudHNcIixcbiAgXCJFdmFsdWF0aW9uRW52aXJvbm1lbnRcIixcbiAgXCJFdmFsdWF0aW9uTW9kZVwiLFxuICBcIkV2YWx1YXRpb25Nb25pdG9yXCIsXG4gIFwiRXZhbHVhdGlvbk5vdGVib29rXCIsXG4gIFwiRXZhbHVhdGlvbk9iamVjdFwiLFxuICBcIkV2YWx1YXRpb25PcmRlclwiLFxuICBcIkV2YWx1YXRpb25Qcml2aWxlZ2VzXCIsXG4gIFwiRXZhbHVhdGlvblJhdGVMaW1pdFwiLFxuICBcIkV2YWx1YXRvclwiLFxuICBcIkV2YWx1YXRvck5hbWVzXCIsXG4gIFwiRXZlblFcIixcbiAgXCJFdmVudERhdGFcIixcbiAgXCJFdmVudEV2YWx1YXRvclwiLFxuICBcIkV2ZW50SGFuZGxlclwiLFxuICBcIkV2ZW50SGFuZGxlclRhZ1wiLFxuICBcIkV2ZW50TGFiZWxzXCIsXG4gIFwiRXZlbnRTZXJpZXNcIixcbiAgXCJFeGFjdEJsYWNrbWFuV2luZG93XCIsXG4gIFwiRXhhY3ROdW1iZXJRXCIsXG4gIFwiRXhhY3RSb290SXNvbGF0aW9uXCIsXG4gIFwiRXhhbXBsZURhdGFcIixcbiAgXCJFeGNlcHRcIixcbiAgXCJFeGNsdWRlZENvbnRleHRzXCIsXG4gIFwiRXhjbHVkZWRGb3Jtc1wiLFxuICBcIkV4Y2x1ZGVkTGluZXNcIixcbiAgXCJFeGNsdWRlZFBoeXNpY2FsUXVhbnRpdGllc1wiLFxuICBcIkV4Y2x1ZGVQb2RzXCIsXG4gIFwiRXhjbHVzaW9uc1wiLFxuICBcIkV4Y2x1c2lvbnNTdHlsZVwiLFxuICBcIkV4aXN0c1wiLFxuICBcIkV4aXRcIixcbiAgXCJFeGl0RGlhbG9nXCIsXG4gIFwiRXhvcGxhbmV0RGF0YVwiLFxuICBcIkV4cFwiLFxuICBcIkV4cGFuZFwiLFxuICBcIkV4cGFuZEFsbFwiLFxuICBcIkV4cGFuZERlbm9taW5hdG9yXCIsXG4gIFwiRXhwYW5kRmlsZU5hbWVcIixcbiAgXCJFeHBhbmROdW1lcmF0b3JcIixcbiAgXCJFeHBlY3RhdGlvblwiLFxuICBcIkV4cGVjdGF0aW9uRVwiLFxuICBcIkV4cGVjdGVkVmFsdWVcIixcbiAgXCJFeHBHYW1tYURpc3RyaWJ1dGlvblwiLFxuICBcIkV4cEludGVncmFsRVwiLFxuICBcIkV4cEludGVncmFsRWlcIixcbiAgXCJFeHBpcmF0aW9uRGF0ZVwiLFxuICBcIkV4cG9uZW50XCIsXG4gIFwiRXhwb25lbnRGdW5jdGlvblwiLFxuICBcIkV4cG9uZW50aWFsRGlzdHJpYnV0aW9uXCIsXG4gIFwiRXhwb25lbnRpYWxGYW1pbHlcIixcbiAgXCJFeHBvbmVudGlhbEdlbmVyYXRpbmdGdW5jdGlvblwiLFxuICBcIkV4cG9uZW50aWFsTW92aW5nQXZlcmFnZVwiLFxuICBcIkV4cG9uZW50aWFsUG93ZXJEaXN0cmlidXRpb25cIixcbiAgXCJFeHBvbmVudFBvc2l0aW9uXCIsXG4gIFwiRXhwb25lbnRTdGVwXCIsXG4gIFwiRXhwb3J0XCIsXG4gIFwiRXhwb3J0QXV0b1JlcGxhY2VtZW50c1wiLFxuICBcIkV4cG9ydEJ5dGVBcnJheVwiLFxuICBcIkV4cG9ydEZvcm1cIixcbiAgXCJFeHBvcnRQYWNrZXRcIixcbiAgXCJFeHBvcnRTdHJpbmdcIixcbiAgXCJFeHByZXNzaW9uXCIsXG4gIFwiRXhwcmVzc2lvbkNlbGxcIixcbiAgXCJFeHByZXNzaW9uR3JhcGhcIixcbiAgXCJFeHByZXNzaW9uUGFja2V0XCIsXG4gIFwiRXhwcmVzc2lvblRyZWVcIixcbiAgXCJFeHByZXNzaW9uVVVJRFwiLFxuICBcIkV4cFRvVHJpZ1wiLFxuICBcIkV4dGVuZGVkRW50aXR5Q2xhc3NcIixcbiAgXCJFeHRlbmRlZEdDRFwiLFxuICBcIkV4dGVuc2lvblwiLFxuICBcIkV4dGVudEVsZW1lbnRGdW5jdGlvblwiLFxuICBcIkV4dGVudE1hcmtlcnNcIixcbiAgXCJFeHRlbnRTaXplXCIsXG4gIFwiRXh0ZXJuYWxCdW5kbGVcIixcbiAgXCJFeHRlcm5hbENhbGxcIixcbiAgXCJFeHRlcm5hbERhdGFDaGFyYWN0ZXJFbmNvZGluZ1wiLFxuICBcIkV4dGVybmFsRXZhbHVhdGVcIixcbiAgXCJFeHRlcm5hbEZ1bmN0aW9uXCIsXG4gIFwiRXh0ZXJuYWxGdW5jdGlvbk5hbWVcIixcbiAgXCJFeHRlcm5hbElkZW50aWZpZXJcIixcbiAgXCJFeHRlcm5hbE9iamVjdFwiLFxuICBcIkV4dGVybmFsT3B0aW9uc1wiLFxuICBcIkV4dGVybmFsU2Vzc2lvbk9iamVjdFwiLFxuICBcIkV4dGVybmFsU2Vzc2lvbnNcIixcbiAgXCJFeHRlcm5hbFN0b3JhZ2VCYXNlXCIsXG4gIFwiRXh0ZXJuYWxTdG9yYWdlRG93bmxvYWRcIixcbiAgXCJFeHRlcm5hbFN0b3JhZ2VHZXRcIixcbiAgXCJFeHRlcm5hbFN0b3JhZ2VPYmplY3RcIixcbiAgXCJFeHRlcm5hbFN0b3JhZ2VQdXRcIixcbiAgXCJFeHRlcm5hbFN0b3JhZ2VVcGxvYWRcIixcbiAgXCJFeHRlcm5hbFR5cGVTaWduYXR1cmVcIixcbiAgXCJFeHRlcm5hbFZhbHVlXCIsXG4gIFwiRXh0cmFjdFwiLFxuICBcIkV4dHJhY3RBcmNoaXZlXCIsXG4gIFwiRXh0cmFjdExheWVyXCIsXG4gIFwiRXh0cmFjdFBhY2xldEFyY2hpdmVcIixcbiAgXCJFeHRyZW1lVmFsdWVEaXN0cmlidXRpb25cIixcbiAgXCJGYWNlQWxpZ25cIixcbiAgXCJGYWNlRm9ybVwiLFxuICBcIkZhY2VHcmlkc1wiLFxuICBcIkZhY2VHcmlkc1N0eWxlXCIsXG4gIFwiRmFjZVJlY29nbml6ZVwiLFxuICBcIkZhY2lhbEZlYXR1cmVzXCIsXG4gIFwiRmFjdG9yXCIsXG4gIFwiRmFjdG9yQ29tcGxldGVcIixcbiAgXCJGYWN0b3JpYWxcIixcbiAgXCJGYWN0b3JpYWwyXCIsXG4gIFwiRmFjdG9yaWFsTW9tZW50XCIsXG4gIFwiRmFjdG9yaWFsTW9tZW50R2VuZXJhdGluZ0Z1bmN0aW9uXCIsXG4gIFwiRmFjdG9yaWFsUG93ZXJcIixcbiAgXCJGYWN0b3JJbnRlZ2VyXCIsXG4gIFwiRmFjdG9yTGlzdFwiLFxuICBcIkZhY3RvclNxdWFyZUZyZWVcIixcbiAgXCJGYWN0b3JTcXVhcmVGcmVlTGlzdFwiLFxuICBcIkZhY3RvclRlcm1zXCIsXG4gIFwiRmFjdG9yVGVybXNMaXN0XCIsXG4gIFwiRmFpbFwiLFxuICBcIkZhaWx1cmVcIixcbiAgXCJGYWlsdXJlQWN0aW9uXCIsXG4gIFwiRmFpbHVyZURpc3RyaWJ1dGlvblwiLFxuICBcIkZhaWx1cmVRXCIsXG4gIFwiRmFsc2VcIixcbiAgXCJGYXJleVNlcXVlbmNlXCIsXG4gIFwiRkFSSU1BUHJvY2Vzc1wiLFxuICBcIkZlYXR1cmVEaXN0YW5jZVwiLFxuICBcIkZlYXR1cmVFeHRyYWN0XCIsXG4gIFwiRmVhdHVyZUV4dHJhY3Rpb25cIixcbiAgXCJGZWF0dXJlRXh0cmFjdG9yXCIsXG4gIFwiRmVhdHVyZUV4dHJhY3RvckZ1bmN0aW9uXCIsXG4gIFwiRmVhdHVyZUltcGFjdFBsb3RcIixcbiAgXCJGZWF0dXJlTmFtZXNcIixcbiAgXCJGZWF0dXJlTmVhcmVzdFwiLFxuICBcIkZlYXR1cmVTcGFjZVBsb3RcIixcbiAgXCJGZWF0dXJlU3BhY2VQbG90M0RcIixcbiAgXCJGZWF0dXJlVHlwZXNcIixcbiAgXCJGZWF0dXJlVmFsdWVEZXBlbmRlbmN5UGxvdFwiLFxuICBcIkZlYXR1cmVWYWx1ZUltcGFjdFBsb3RcIixcbiAgXCJGRURpc2FibGVDb25zb2xlUHJpbnRQYWNrZXRcIixcbiAgXCJGZWVkYmFja0xpbmVhcml6ZVwiLFxuICBcIkZlZWRiYWNrU2VjdG9yXCIsXG4gIFwiRmVlZGJhY2tTZWN0b3JTdHlsZVwiLFxuICBcIkZlZWRiYWNrVHlwZVwiLFxuICBcIkZFRW5hYmxlQ29uc29sZVByaW50UGFja2V0XCIsXG4gIFwiRmV0YWxHcm93dGhEYXRhXCIsXG4gIFwiRmlib25hY2NpXCIsXG4gIFwiRmlib25vcmlhbFwiLFxuICBcIkZpZWxkQ29tcGxldGlvbkZ1bmN0aW9uXCIsXG4gIFwiRmllbGRIaW50XCIsXG4gIFwiRmllbGRIaW50U3R5bGVcIixcbiAgXCJGaWVsZE1hc2tlZFwiLFxuICBcIkZpZWxkU2l6ZVwiLFxuICBcIkZpbGVcIixcbiAgXCJGaWxlQmFzZU5hbWVcIixcbiAgXCJGaWxlQnl0ZUNvdW50XCIsXG4gIFwiRmlsZUNvbnZlcnRcIixcbiAgXCJGaWxlRGF0ZVwiLFxuICBcIkZpbGVFeGlzdHNRXCIsXG4gIFwiRmlsZUV4dGVuc2lvblwiLFxuICBcIkZpbGVGb3JtYXRcIixcbiAgXCJGaWxlRm9ybWF0UHJvcGVydGllc1wiLFxuICBcIkZpbGVGb3JtYXRRXCIsXG4gIFwiRmlsZUhhbmRsZXJcIixcbiAgXCJGaWxlSGFzaFwiLFxuICBcIkZpbGVJbmZvcm1hdGlvblwiLFxuICBcIkZpbGVOYW1lXCIsXG4gIFwiRmlsZU5hbWVEZXB0aFwiLFxuICBcIkZpbGVOYW1lRGlhbG9nU2V0dGluZ3NcIixcbiAgXCJGaWxlTmFtZURyb3BcIixcbiAgXCJGaWxlTmFtZUZvcm1zXCIsXG4gIFwiRmlsZU5hbWVKb2luXCIsXG4gIFwiRmlsZU5hbWVzXCIsXG4gIFwiRmlsZU5hbWVTZXR0ZXJcIixcbiAgXCJGaWxlTmFtZVNwbGl0XCIsXG4gIFwiRmlsZU5hbWVUYWtlXCIsXG4gIFwiRmlsZU5hbWVUb0Zvcm1hdExpc3RcIixcbiAgXCJGaWxlUHJpbnRcIixcbiAgXCJGaWxlU2l6ZVwiLFxuICBcIkZpbGVTeXN0ZW1NYXBcIixcbiAgXCJGaWxlU3lzdGVtU2NhblwiLFxuICBcIkZpbGVTeXN0ZW1UcmVlXCIsXG4gIFwiRmlsZVRlbXBsYXRlXCIsXG4gIFwiRmlsZVRlbXBsYXRlQXBwbHlcIixcbiAgXCJGaWxlVHlwZVwiLFxuICBcIkZpbGxlZEN1cnZlXCIsXG4gIFwiRmlsbGVkQ3VydmVCb3hcIixcbiAgXCJGaWxsZWRDdXJ2ZUJveE9wdGlvbnNcIixcbiAgXCJGaWxsZWRUb3J1c1wiLFxuICBcIkZpbGxGb3JtXCIsXG4gIFwiRmlsbGluZ1wiLFxuICBcIkZpbGxpbmdTdHlsZVwiLFxuICBcIkZpbGxpbmdUcmFuc2Zvcm1cIixcbiAgXCJGaWx0ZXJlZEVudGl0eUNsYXNzXCIsXG4gIFwiRmlsdGVyUnVsZXNcIixcbiAgXCJGaW5hbmNpYWxCb25kXCIsXG4gIFwiRmluYW5jaWFsRGF0YVwiLFxuICBcIkZpbmFuY2lhbERlcml2YXRpdmVcIixcbiAgXCJGaW5hbmNpYWxJbmRpY2F0b3JcIixcbiAgXCJGaW5kXCIsXG4gIFwiRmluZEFub21hbGllc1wiLFxuICBcIkZpbmRBcmdNYXhcIixcbiAgXCJGaW5kQXJnTWluXCIsXG4gIFwiRmluZENoYW5uZWxzXCIsXG4gIFwiRmluZENsaXF1ZVwiLFxuICBcIkZpbmRDbHVzdGVyc1wiLFxuICBcIkZpbmRDb29raWVzXCIsXG4gIFwiRmluZEN1cnZlUGF0aFwiLFxuICBcIkZpbmRDeWNsZVwiLFxuICBcIkZpbmREZXZpY2VzXCIsXG4gIFwiRmluZERpc3RyaWJ1dGlvblwiLFxuICBcIkZpbmREaXN0cmlidXRpb25QYXJhbWV0ZXJzXCIsXG4gIFwiRmluZERpdmlzaW9uc1wiLFxuICBcIkZpbmRFZGdlQ29sb3JpbmdcIixcbiAgXCJGaW5kRWRnZUNvdmVyXCIsXG4gIFwiRmluZEVkZ2VDdXRcIixcbiAgXCJGaW5kRWRnZUluZGVwZW5kZW50UGF0aHNcIixcbiAgXCJGaW5kRXF1YXRpb25hbFByb29mXCIsXG4gIFwiRmluZEV1bGVyaWFuQ3ljbGVcIixcbiAgXCJGaW5kRXh0ZXJuYWxFdmFsdWF0b3JzXCIsXG4gIFwiRmluZEZhY2VzXCIsXG4gIFwiRmluZEZpbGVcIixcbiAgXCJGaW5kRml0XCIsXG4gIFwiRmluZEZvcm11bGFcIixcbiAgXCJGaW5kRnVuZGFtZW50YWxDeWNsZXNcIixcbiAgXCJGaW5kR2VuZXJhdGluZ0Z1bmN0aW9uXCIsXG4gIFwiRmluZEdlb0xvY2F0aW9uXCIsXG4gIFwiRmluZEdlb21ldHJpY0NvbmplY3R1cmVzXCIsXG4gIFwiRmluZEdlb21ldHJpY1RyYW5zZm9ybVwiLFxuICBcIkZpbmRHcmFwaENvbW11bml0aWVzXCIsXG4gIFwiRmluZEdyYXBoSXNvbW9ycGhpc21cIixcbiAgXCJGaW5kR3JhcGhQYXJ0aXRpb25cIixcbiAgXCJGaW5kSGFtaWx0b25pYW5DeWNsZVwiLFxuICBcIkZpbmRIYW1pbHRvbmlhblBhdGhcIixcbiAgXCJGaW5kSGlkZGVuTWFya292U3RhdGVzXCIsXG4gIFwiRmluZEltYWdlVGV4dFwiLFxuICBcIkZpbmRJbmRlcGVuZGVudEVkZ2VTZXRcIixcbiAgXCJGaW5kSW5kZXBlbmRlbnRWZXJ0ZXhTZXRcIixcbiAgXCJGaW5kSW5zdGFuY2VcIixcbiAgXCJGaW5kSW50ZWdlck51bGxWZWN0b3JcIixcbiAgXCJGaW5kSXNvbWVyc1wiLFxuICBcIkZpbmRJc29tb3JwaGljU3ViZ3JhcGhcIixcbiAgXCJGaW5kS0NsYW5cIixcbiAgXCJGaW5kS0NsaXF1ZVwiLFxuICBcIkZpbmRLQ2x1YlwiLFxuICBcIkZpbmRLUGxleFwiLFxuICBcIkZpbmRMaWJyYXJ5XCIsXG4gIFwiRmluZExpbmVhclJlY3VycmVuY2VcIixcbiAgXCJGaW5kTGlzdFwiLFxuICBcIkZpbmRNYXRjaGluZ0NvbG9yXCIsXG4gIFwiRmluZE1heGltdW1cIixcbiAgXCJGaW5kTWF4aW11bUN1dFwiLFxuICBcIkZpbmRNYXhpbXVtRmxvd1wiLFxuICBcIkZpbmRNYXhWYWx1ZVwiLFxuICBcIkZpbmRNZXNoRGVmZWN0c1wiLFxuICBcIkZpbmRNaW5pbXVtXCIsXG4gIFwiRmluZE1pbmltdW1Db3N0Rmxvd1wiLFxuICBcIkZpbmRNaW5pbXVtQ3V0XCIsXG4gIFwiRmluZE1pblZhbHVlXCIsXG4gIFwiRmluZE1vbGVjdWxlU3Vic3RydWN0dXJlXCIsXG4gIFwiRmluZFBhdGhcIixcbiAgXCJGaW5kUGVha3NcIixcbiAgXCJGaW5kUGVybXV0YXRpb25cIixcbiAgXCJGaW5kUGxhbmFyQ29sb3JpbmdcIixcbiAgXCJGaW5kUG9pbnRQcm9jZXNzUGFyYW1ldGVyc1wiLFxuICBcIkZpbmRQb3N0bWFuVG91clwiLFxuICBcIkZpbmRQcm9jZXNzUGFyYW1ldGVyc1wiLFxuICBcIkZpbmRSZWdpb25UcmFuc2Zvcm1cIixcbiAgXCJGaW5kUmVwZWF0XCIsXG4gIFwiRmluZFJvb3RcIixcbiAgXCJGaW5kU2VxdWVuY2VGdW5jdGlvblwiLFxuICBcIkZpbmRTZXR0aW5nc1wiLFxuICBcIkZpbmRTaG9ydGVzdFBhdGhcIixcbiAgXCJGaW5kU2hvcnRlc3RUb3VyXCIsXG4gIFwiRmluZFNwYW5uaW5nVHJlZVwiLFxuICBcIkZpbmRTdWJncmFwaElzb21vcnBoaXNtXCIsXG4gIFwiRmluZFN5c3RlbU1vZGVsRXF1aWxpYnJpdW1cIixcbiAgXCJGaW5kVGV4dHVhbEFuc3dlclwiLFxuICBcIkZpbmRUaHJlc2hvbGRcIixcbiAgXCJGaW5kVHJhbnNpZW50UmVwZWF0XCIsXG4gIFwiRmluZFZlcnRleENvbG9yaW5nXCIsXG4gIFwiRmluZFZlcnRleENvdmVyXCIsXG4gIFwiRmluZFZlcnRleEN1dFwiLFxuICBcIkZpbmRWZXJ0ZXhJbmRlcGVuZGVudFBhdGhzXCIsXG4gIFwiRmluZVwiLFxuICBcIkZpbmlzaER5bmFtaWNcIixcbiAgXCJGaW5pdGVBYmVsaWFuR3JvdXBDb3VudFwiLFxuICBcIkZpbml0ZUdyb3VwQ291bnRcIixcbiAgXCJGaW5pdGVHcm91cERhdGFcIixcbiAgXCJGaXJzdFwiLFxuICBcIkZpcnN0Q2FzZVwiLFxuICBcIkZpcnN0UGFzc2FnZVRpbWVEaXN0cmlidXRpb25cIixcbiAgXCJGaXJzdFBvc2l0aW9uXCIsXG4gIFwiRmlzY2hlckdyb3VwRmkyMlwiLFxuICBcIkZpc2NoZXJHcm91cEZpMjNcIixcbiAgXCJGaXNjaGVyR3JvdXBGaTI0UHJpbWVcIixcbiAgXCJGaXNoZXJIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvblwiLFxuICBcIkZpc2hlclJhdGlvVGVzdFwiLFxuICBcIkZpc2hlclpEaXN0cmlidXRpb25cIixcbiAgXCJGaXRcIixcbiAgXCJGaXRBbGxcIixcbiAgXCJGaXRSZWd1bGFyaXphdGlvblwiLFxuICBcIkZpdHRlZE1vZGVsXCIsXG4gIFwiRml4ZWRPcmRlclwiLFxuICBcIkZpeGVkUG9pbnRcIixcbiAgXCJGaXhlZFBvaW50TGlzdFwiLFxuICBcIkZsYXNoU2VsZWN0aW9uXCIsXG4gIFwiRmxhdFwiLFxuICBcIkZsYXRTaGFkaW5nXCIsXG4gIFwiRmxhdHRlblwiLFxuICBcIkZsYXR0ZW5BdFwiLFxuICBcIkZsYXR0ZW5MYXllclwiLFxuICBcIkZsYXRUb3BXaW5kb3dcIixcbiAgXCJGbGlnaHREYXRhXCIsXG4gIFwiRmxpcFZpZXdcIixcbiAgXCJGbG9vclwiLFxuICBcIkZsb3dQb2x5bm9taWFsXCIsXG4gIFwiRm9sZFwiLFxuICBcIkZvbGRMaXN0XCIsXG4gIFwiRm9sZFBhaXJcIixcbiAgXCJGb2xkUGFpckxpc3RcIixcbiAgXCJGb2xkV2hpbGVcIixcbiAgXCJGb2xkV2hpbGVMaXN0XCIsXG4gIFwiRm9sbG93UmVkaXJlY3RzXCIsXG4gIFwiRm9udFwiLFxuICBcIkZvbnRDb2xvclwiLFxuICBcIkZvbnRGYW1pbHlcIixcbiAgXCJGb250Rm9ybVwiLFxuICBcIkZvbnROYW1lXCIsXG4gIFwiRm9udE9wYWNpdHlcIixcbiAgXCJGb250UG9zdFNjcmlwdE5hbWVcIixcbiAgXCJGb250UHJvcGVydGllc1wiLFxuICBcIkZvbnRSZWVuY29kaW5nXCIsXG4gIFwiRm9udFNpemVcIixcbiAgXCJGb250U2xhbnRcIixcbiAgXCJGb250U3Vic3RpdHV0aW9uc1wiLFxuICBcIkZvbnRUcmFja2luZ1wiLFxuICBcIkZvbnRWYXJpYXRpb25zXCIsXG4gIFwiRm9udFdlaWdodFwiLFxuICBcIkZvclwiLFxuICBcIkZvckFsbFwiLFxuICBcIkZvckFsbFR5cGVcIixcbiAgXCJGb3JjZVZlcnNpb25JbnN0YWxsXCIsXG4gIFwiRm9ybWF0XCIsXG4gIFwiRm9ybWF0UnVsZXNcIixcbiAgXCJGb3JtYXRUeXBlXCIsXG4gIFwiRm9ybWF0VHlwZUF1dG9Db252ZXJ0XCIsXG4gIFwiRm9ybWF0VmFsdWVzXCIsXG4gIFwiRm9ybUJveFwiLFxuICBcIkZvcm1Cb3hPcHRpb25zXCIsXG4gIFwiRm9ybUNvbnRyb2xcIixcbiAgXCJGb3JtRnVuY3Rpb25cIixcbiAgXCJGb3JtTGF5b3V0RnVuY3Rpb25cIixcbiAgXCJGb3JtT2JqZWN0XCIsXG4gIFwiRm9ybVBhZ2VcIixcbiAgXCJGb3JtUHJvdGVjdGlvbk1ldGhvZFwiLFxuICBcIkZvcm1UaGVtZVwiLFxuICBcIkZvcm11bGFEYXRhXCIsXG4gIFwiRm9ybXVsYUxvb2t1cFwiLFxuICBcIkZvcnRyYW5Gb3JtXCIsXG4gIFwiRm9yd2FyZFwiLFxuICBcIkZvcndhcmRCYWNrd2FyZFwiLFxuICBcIkZvcndhcmRDbG91ZENyZWRlbnRpYWxzXCIsXG4gIFwiRm91cmllclwiLFxuICBcIkZvdXJpZXJDb2VmZmljaWVudFwiLFxuICBcIkZvdXJpZXJDb3NDb2VmZmljaWVudFwiLFxuICBcIkZvdXJpZXJDb3NTZXJpZXNcIixcbiAgXCJGb3VyaWVyQ29zVHJhbnNmb3JtXCIsXG4gIFwiRm91cmllckRDVFwiLFxuICBcIkZvdXJpZXJEQ1RGaWx0ZXJcIixcbiAgXCJGb3VyaWVyRENUTWF0cml4XCIsXG4gIFwiRm91cmllckRTVFwiLFxuICBcIkZvdXJpZXJEU1RNYXRyaXhcIixcbiAgXCJGb3VyaWVyTWF0cml4XCIsXG4gIFwiRm91cmllclBhcmFtZXRlcnNcIixcbiAgXCJGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm1cIixcbiAgXCJGb3VyaWVyU2VyaWVzXCIsXG4gIFwiRm91cmllclNpbkNvZWZmaWNpZW50XCIsXG4gIFwiRm91cmllclNpblNlcmllc1wiLFxuICBcIkZvdXJpZXJTaW5UcmFuc2Zvcm1cIixcbiAgXCJGb3VyaWVyVHJhbnNmb3JtXCIsXG4gIFwiRm91cmllclRyaWdTZXJpZXNcIixcbiAgXCJGb3hIXCIsXG4gIFwiRm94SFJlZHVjZVwiLFxuICBcIkZyYWN0aW9uYWxCcm93bmlhbk1vdGlvblByb2Nlc3NcIixcbiAgXCJGcmFjdGlvbmFsRFwiLFxuICBcIkZyYWN0aW9uYWxHYXVzc2lhbk5vaXNlUHJvY2Vzc1wiLFxuICBcIkZyYWN0aW9uYWxQYXJ0XCIsXG4gIFwiRnJhY3Rpb25Cb3hcIixcbiAgXCJGcmFjdGlvbkJveE9wdGlvbnNcIixcbiAgXCJGcmFjdGlvbkxpbmVcIixcbiAgXCJGcmFtZVwiLFxuICBcIkZyYW1lQm94XCIsXG4gIFwiRnJhbWVCb3hPcHRpb25zXCIsXG4gIFwiRnJhbWVkXCIsXG4gIFwiRnJhbWVJbnNldFwiLFxuICBcIkZyYW1lTGFiZWxcIixcbiAgXCJGcmFtZWxlc3NcIixcbiAgXCJGcmFtZUxpc3RWaWRlb1wiLFxuICBcIkZyYW1lTWFyZ2luc1wiLFxuICBcIkZyYW1lUmF0ZVwiLFxuICBcIkZyYW1lU3R5bGVcIixcbiAgXCJGcmFtZVRpY2tzXCIsXG4gIFwiRnJhbWVUaWNrc1N0eWxlXCIsXG4gIFwiRlJhdGlvRGlzdHJpYnV0aW9uXCIsXG4gIFwiRnJlY2hldERpc3RyaWJ1dGlvblwiLFxuICBcIkZyZWVRXCIsXG4gIFwiRnJlbmV0U2VycmV0U3lzdGVtXCIsXG4gIFwiRnJlcXVlbmN5U2FtcGxpbmdGaWx0ZXJLZXJuZWxcIixcbiAgXCJGcmVzbmVsQ1wiLFxuICBcIkZyZXNuZWxGXCIsXG4gIFwiRnJlc25lbEdcIixcbiAgXCJGcmVzbmVsU1wiLFxuICBcIkZyaWRheVwiLFxuICBcIkZyb2Jlbml1c051bWJlclwiLFxuICBcIkZyb2Jlbml1c1NvbHZlXCIsXG4gIFwiRnJvbUFic29sdXRlVGltZVwiLFxuICBcIkZyb21DaGFyYWN0ZXJDb2RlXCIsXG4gIFwiRnJvbUNvZWZmaWNpZW50UnVsZXNcIixcbiAgXCJGcm9tQ29udGludWVkRnJhY3Rpb25cIixcbiAgXCJGcm9tRGF0ZVwiLFxuICBcIkZyb21EYXRlU3RyaW5nXCIsXG4gIFwiRnJvbURpZ2l0c1wiLFxuICBcIkZyb21ETVNcIixcbiAgXCJGcm9tRW50aXR5XCIsXG4gIFwiRnJvbUp1bGlhbkRhdGVcIixcbiAgXCJGcm9tTGV0dGVyTnVtYmVyXCIsXG4gIFwiRnJvbVBvbGFyQ29vcmRpbmF0ZXNcIixcbiAgXCJGcm9tUmF3UG9pbnRlclwiLFxuICBcIkZyb21Sb21hbk51bWVyYWxcIixcbiAgXCJGcm9tU3BoZXJpY2FsQ29vcmRpbmF0ZXNcIixcbiAgXCJGcm9tVW5peFRpbWVcIixcbiAgXCJGcm9udFwiLFxuICBcIkZyb250RW5kRHluYW1pY0V4cHJlc3Npb25cIixcbiAgXCJGcm9udEVuZEV2ZW50QWN0aW9uc1wiLFxuICBcIkZyb250RW5kRXhlY3V0ZVwiLFxuICBcIkZyb250RW5kT2JqZWN0XCIsXG4gIFwiRnJvbnRFbmRSZXNvdXJjZVwiLFxuICBcIkZyb250RW5kUmVzb3VyY2VTdHJpbmdcIixcbiAgXCJGcm9udEVuZFN0YWNrU2l6ZVwiLFxuICBcIkZyb250RW5kVG9rZW5cIixcbiAgXCJGcm9udEVuZFRva2VuRXhlY3V0ZVwiLFxuICBcIkZyb250RW5kVmFsdWVDYWNoZVwiLFxuICBcIkZyb250RW5kVmVyc2lvblwiLFxuICBcIkZyb250RmFjZUNvbG9yXCIsXG4gIFwiRnJvbnRGYWNlR2xvd0NvbG9yXCIsXG4gIFwiRnJvbnRGYWNlT3BhY2l0eVwiLFxuICBcIkZyb250RmFjZVNwZWN1bGFyQ29sb3JcIixcbiAgXCJGcm9udEZhY2VTcGVjdWxhckV4cG9uZW50XCIsXG4gIFwiRnJvbnRGYWNlU3VyZmFjZUFwcGVhcmFuY2VcIixcbiAgXCJGcm9udEZhY2VUZXh0dXJlXCIsXG4gIFwiRnVsbFwiLFxuICBcIkZ1bGxBeGVzXCIsXG4gIFwiRnVsbERlZmluaXRpb25cIixcbiAgXCJGdWxsRm9ybVwiLFxuICBcIkZ1bGxHcmFwaGljc1wiLFxuICBcIkZ1bGxJbmZvcm1hdGlvbk91dHB1dFJlZ3VsYXRvclwiLFxuICBcIkZ1bGxPcHRpb25zXCIsXG4gIFwiRnVsbFJlZ2lvblwiLFxuICBcIkZ1bGxTaW1wbGlmeVwiLFxuICBcIkZ1bmN0aW9uXCIsXG4gIFwiRnVuY3Rpb25BbmFseXRpY1wiLFxuICBcIkZ1bmN0aW9uQmlqZWN0aXZlXCIsXG4gIFwiRnVuY3Rpb25Db21waWxlXCIsXG4gIFwiRnVuY3Rpb25Db21waWxlRXhwb3J0XCIsXG4gIFwiRnVuY3Rpb25Db21waWxlRXhwb3J0Qnl0ZUFycmF5XCIsXG4gIFwiRnVuY3Rpb25Db21waWxlRXhwb3J0TGlicmFyeVwiLFxuICBcIkZ1bmN0aW9uQ29tcGlsZUV4cG9ydFN0cmluZ1wiLFxuICBcIkZ1bmN0aW9uQ29udGludW91c1wiLFxuICBcIkZ1bmN0aW9uQ29udmV4aXR5XCIsXG4gIFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiLFxuICBcIkZ1bmN0aW9uRGlzY29udGludWl0aWVzXCIsXG4gIFwiRnVuY3Rpb25Eb21haW5cIixcbiAgXCJGdW5jdGlvbkV4cGFuZFwiLFxuICBcIkZ1bmN0aW9uSW5qZWN0aXZlXCIsXG4gIFwiRnVuY3Rpb25JbnRlcnBvbGF0aW9uXCIsXG4gIFwiRnVuY3Rpb25MYXllclwiLFxuICBcIkZ1bmN0aW9uTWVyb21vcnBoaWNcIixcbiAgXCJGdW5jdGlvbk1vbm90b25pY2l0eVwiLFxuICBcIkZ1bmN0aW9uUGVyaW9kXCIsXG4gIFwiRnVuY3Rpb25Qb2xlc1wiLFxuICBcIkZ1bmN0aW9uUmFuZ2VcIixcbiAgXCJGdW5jdGlvblNpZ25cIixcbiAgXCJGdW5jdGlvblNpbmd1bGFyaXRpZXNcIixcbiAgXCJGdW5jdGlvblNwYWNlXCIsXG4gIFwiRnVuY3Rpb25TdXJqZWN0aXZlXCIsXG4gIFwiRnVzc2VsbFZlc2VseUltcG9ydGFuY2VcIixcbiAgXCJHYWJvckZpbHRlclwiLFxuICBcIkdhYm9yTWF0cml4XCIsXG4gIFwiR2Fib3JXYXZlbGV0XCIsXG4gIFwiR2Fpbk1hcmdpbnNcIixcbiAgXCJHYWluUGhhc2VNYXJnaW5zXCIsXG4gIFwiR2FsYXh5RGF0YVwiLFxuICBcIkdhbGxlcnlWaWV3XCIsXG4gIFwiR2FtbWFcIixcbiAgXCJHYW1tYURpc3RyaWJ1dGlvblwiLFxuICBcIkdhbW1hUmVndWxhcml6ZWRcIixcbiAgXCJHYXBQZW5hbHR5XCIsXG4gIFwiR0FSQ0hQcm9jZXNzXCIsXG4gIFwiR2F0ZWRSZWN1cnJlbnRMYXllclwiLFxuICBcIkdhdGhlclwiLFxuICBcIkdhdGhlckJ5XCIsXG4gIFwiR2F1Z2VGYWNlRWxlbWVudEZ1bmN0aW9uXCIsXG4gIFwiR2F1Z2VGYWNlU3R5bGVcIixcbiAgXCJHYXVnZUZyYW1lRWxlbWVudEZ1bmN0aW9uXCIsXG4gIFwiR2F1Z2VGcmFtZVNpemVcIixcbiAgXCJHYXVnZUZyYW1lU3R5bGVcIixcbiAgXCJHYXVnZUxhYmVsc1wiLFxuICBcIkdhdWdlTWFya2Vyc1wiLFxuICBcIkdhdWdlU3R5bGVcIixcbiAgXCJHYXVzc2lhbkZpbHRlclwiLFxuICBcIkdhdXNzaWFuSW50ZWdlcnNcIixcbiAgXCJHYXVzc2lhbk1hdHJpeFwiLFxuICBcIkdhdXNzaWFuT3J0aG9nb25hbE1hdHJpeERpc3RyaWJ1dGlvblwiLFxuICBcIkdhdXNzaWFuU3ltcGxlY3RpY01hdHJpeERpc3RyaWJ1dGlvblwiLFxuICBcIkdhdXNzaWFuVW5pdGFyeU1hdHJpeERpc3RyaWJ1dGlvblwiLFxuICBcIkdhdXNzaWFuV2luZG93XCIsXG4gIFwiR0NEXCIsXG4gIFwiR2VnZW5iYXVlckNcIixcbiAgXCJHZW5lcmFsXCIsXG4gIFwiR2VuZXJhbGl6ZWRMaW5lYXJNb2RlbEZpdFwiLFxuICBcIkdlbmVyYXRlQXN5bW1ldHJpY0tleVBhaXJcIixcbiAgXCJHZW5lcmF0ZUNvbmRpdGlvbnNcIixcbiAgXCJHZW5lcmF0ZWRBc3NldEZvcm1hdFwiLFxuICBcIkdlbmVyYXRlZEFzc2V0TG9jYXRpb25cIixcbiAgXCJHZW5lcmF0ZWRDZWxsXCIsXG4gIFwiR2VuZXJhdGVkQ2VsbFN0eWxlc1wiLFxuICBcIkdlbmVyYXRlZERvY3VtZW50QmluZGluZ1wiLFxuICBcIkdlbmVyYXRlRGVyaXZlZEtleVwiLFxuICBcIkdlbmVyYXRlRGlnaXRhbFNpZ25hdHVyZVwiLFxuICBcIkdlbmVyYXRlRG9jdW1lbnRcIixcbiAgXCJHZW5lcmF0ZWRQYXJhbWV0ZXJzXCIsXG4gIFwiR2VuZXJhdGVkUXVhbnRpdHlNYWduaXR1ZGVzXCIsXG4gIFwiR2VuZXJhdGVGaWxlU2lnbmF0dXJlXCIsXG4gIFwiR2VuZXJhdGVIVFRQUmVzcG9uc2VcIixcbiAgXCJHZW5lcmF0ZVNlY3VyZWRBdXRoZW50aWNhdGlvbktleVwiLFxuICBcIkdlbmVyYXRlU3ltbWV0cmljS2V5XCIsXG4gIFwiR2VuZXJhdGluZ0Z1bmN0aW9uXCIsXG4gIFwiR2VuZXJhdG9yRGVzY3JpcHRpb25cIixcbiAgXCJHZW5lcmF0b3JIaXN0b3J5TGVuZ3RoXCIsXG4gIFwiR2VuZXJhdG9yT3V0cHV0VHlwZVwiLFxuICBcIkdlbmVyaWNcIixcbiAgXCJHZW5lcmljQ3lsaW5kcmljYWxEZWNvbXBvc2l0aW9uXCIsXG4gIFwiR2Vub21lRGF0YVwiLFxuICBcIkdlbm9tZUxvb2t1cFwiLFxuICBcIkdlb0FudGlwb2RlXCIsXG4gIFwiR2VvQXJlYVwiLFxuICBcIkdlb0FycmF5U2l6ZVwiLFxuICBcIkdlb0JhY2tncm91bmRcIixcbiAgXCJHZW9Cb3VuZGFyeVwiLFxuICBcIkdlb0JvdW5kaW5nQm94XCIsXG4gIFwiR2VvQm91bmRzXCIsXG4gIFwiR2VvQm91bmRzUmVnaW9uXCIsXG4gIFwiR2VvQm91bmRzUmVnaW9uQm91bmRhcnlcIixcbiAgXCJHZW9CdWJibGVDaGFydFwiLFxuICBcIkdlb0NlbnRlclwiLFxuICBcIkdlb0NpcmNsZVwiLFxuICBcIkdlb0NvbnRvdXJQbG90XCIsXG4gIFwiR2VvRGVuc2l0eVBsb3RcIixcbiAgXCJHZW9kZXNpY0Nsb3NpbmdcIixcbiAgXCJHZW9kZXNpY0RpbGF0aW9uXCIsXG4gIFwiR2VvZGVzaWNFcm9zaW9uXCIsXG4gIFwiR2VvZGVzaWNPcGVuaW5nXCIsXG4gIFwiR2VvZGVzaWNQb2x5aGVkcm9uXCIsXG4gIFwiR2VvRGVzdGluYXRpb25cIixcbiAgXCJHZW9kZXN5RGF0YVwiLFxuICBcIkdlb0RpcmVjdGlvblwiLFxuICBcIkdlb0Rpc2tcIixcbiAgXCJHZW9EaXNwbGFjZW1lbnRcIixcbiAgXCJHZW9EaXN0YW5jZVwiLFxuICBcIkdlb0Rpc3RhbmNlTGlzdFwiLFxuICBcIkdlb0VsZXZhdGlvbkRhdGFcIixcbiAgXCJHZW9FbnRpdGllc1wiLFxuICBcIkdlb0dyYXBoaWNzXCIsXG4gIFwiR2VvR3JhcGhQbG90XCIsXG4gIFwiR2VvR3JhcGhWYWx1ZVBsb3RcIixcbiAgXCJHZW9ncmF2aXR5TW9kZWxEYXRhXCIsXG4gIFwiR2VvR3JpZERpcmVjdGlvbkRpZmZlcmVuY2VcIixcbiAgXCJHZW9HcmlkTGluZXNcIixcbiAgXCJHZW9HcmlkTGluZXNTdHlsZVwiLFxuICBcIkdlb0dyaWRQb3NpdGlvblwiLFxuICBcIkdlb0dyaWRSYW5nZVwiLFxuICBcIkdlb0dyaWRSYW5nZVBhZGRpbmdcIixcbiAgXCJHZW9HcmlkVW5pdEFyZWFcIixcbiAgXCJHZW9HcmlkVW5pdERpc3RhbmNlXCIsXG4gIFwiR2VvR3JpZFZlY3RvclwiLFxuICBcIkdlb0dyb3VwXCIsXG4gIFwiR2VvSGVtaXNwaGVyZVwiLFxuICBcIkdlb0hlbWlzcGhlcmVCb3VuZGFyeVwiLFxuICBcIkdlb0hpc3RvZ3JhbVwiLFxuICBcIkdlb0lkZW50aWZ5XCIsXG4gIFwiR2VvSW1hZ2VcIixcbiAgXCJHZW9MYWJlbHNcIixcbiAgXCJHZW9MZW5ndGhcIixcbiAgXCJHZW9MaXN0UGxvdFwiLFxuICBcIkdlb0xvY2F0aW9uXCIsXG4gIFwiR2VvbG9naWNhbFBlcmlvZERhdGFcIixcbiAgXCJHZW9tYWduZXRpY01vZGVsRGF0YVwiLFxuICBcIkdlb01hcmtlclwiLFxuICBcIkdlb21ldHJpY0Fzc2VydGlvblwiLFxuICBcIkdlb21ldHJpY0Jyb3duaWFuTW90aW9uUHJvY2Vzc1wiLFxuICBcIkdlb21ldHJpY0Rpc3RyaWJ1dGlvblwiLFxuICBcIkdlb21ldHJpY01lYW5cIixcbiAgXCJHZW9tZXRyaWNNZWFuRmlsdGVyXCIsXG4gIFwiR2VvbWV0cmljT3B0aW1pemF0aW9uXCIsXG4gIFwiR2VvbWV0cmljU2NlbmVcIixcbiAgXCJHZW9tZXRyaWNTdGVwXCIsXG4gIFwiR2VvbWV0cmljU3R5bGluZ1J1bGVzXCIsXG4gIFwiR2VvbWV0cmljVGVzdFwiLFxuICBcIkdlb21ldHJpY1RyYW5zZm9ybWF0aW9uXCIsXG4gIFwiR2VvbWV0cmljVHJhbnNmb3JtYXRpb24zREJveFwiLFxuICBcIkdlb21ldHJpY1RyYW5zZm9ybWF0aW9uM0RCb3hPcHRpb25zXCIsXG4gIFwiR2VvbWV0cmljVHJhbnNmb3JtYXRpb25Cb3hcIixcbiAgXCJHZW9tZXRyaWNUcmFuc2Zvcm1hdGlvbkJveE9wdGlvbnNcIixcbiAgXCJHZW9Nb2RlbFwiLFxuICBcIkdlb05lYXJlc3RcIixcbiAgXCJHZW9PcmllbnRhdGlvbkRhdGFcIixcbiAgXCJHZW9QYXRoXCIsXG4gIFwiR2VvUG9seWdvblwiLFxuICBcIkdlb1Bvc2l0aW9uXCIsXG4gIFwiR2VvUG9zaXRpb25FTlVcIixcbiAgXCJHZW9Qb3NpdGlvblhZWlwiLFxuICBcIkdlb1Byb2plY3Rpb25cIixcbiAgXCJHZW9Qcm9qZWN0aW9uRGF0YVwiLFxuICBcIkdlb1JhbmdlXCIsXG4gIFwiR2VvUmFuZ2VQYWRkaW5nXCIsXG4gIFwiR2VvUmVnaW9uVmFsdWVQbG90XCIsXG4gIFwiR2VvUmVzb2x1dGlvblwiLFxuICBcIkdlb1NjYWxlQmFyXCIsXG4gIFwiR2VvU2VydmVyXCIsXG4gIFwiR2VvU21vb3RoSGlzdG9ncmFtXCIsXG4gIFwiR2VvU3RyZWFtUGxvdFwiLFxuICBcIkdlb1N0eWxpbmdcIixcbiAgXCJHZW9TdHlsaW5nSW1hZ2VGdW5jdGlvblwiLFxuICBcIkdlb1ZhcmlhbnRcIixcbiAgXCJHZW9WZWN0b3JcIixcbiAgXCJHZW9WZWN0b3JFTlVcIixcbiAgXCJHZW9WZWN0b3JQbG90XCIsXG4gIFwiR2VvVmVjdG9yWFlaXCIsXG4gIFwiR2VvVmlzaWJsZVJlZ2lvblwiLFxuICBcIkdlb1Zpc2libGVSZWdpb25Cb3VuZGFyeVwiLFxuICBcIkdlb1dpdGhpblFcIixcbiAgXCJHZW9ab29tTGV2ZWxcIixcbiAgXCJHZXN0dXJlSGFuZGxlclwiLFxuICBcIkdlc3R1cmVIYW5kbGVyVGFnXCIsXG4gIFwiR2V0XCIsXG4gIFwiR2V0Q29udGV4dFwiLFxuICBcIkdldEVudmlyb25tZW50XCIsXG4gIFwiR2V0RmlsZU5hbWVcIixcbiAgXCJHZXRMaW5lYnJlYWtJbmZvcm1hdGlvblBhY2tldFwiLFxuICBcIkdpYmJzUG9pbnRQcm9jZXNzXCIsXG4gIFwiR2xhaXNoZXJcIixcbiAgXCJHbG9iYWxDbHVzdGVyaW5nQ29lZmZpY2llbnRcIixcbiAgXCJHbG9iYWxQcmVmZXJlbmNlc1wiLFxuICBcIkdsb2JhbFNlc3Npb25cIixcbiAgXCJHbG93XCIsXG4gIFwiR29sZGVuQW5nbGVcIixcbiAgXCJHb2xkZW5SYXRpb1wiLFxuICBcIkdvbXBlcnR6TWFrZWhhbURpc3RyaWJ1dGlvblwiLFxuICBcIkdvb2NoU2hhZGluZ1wiLFxuICBcIkdvb2RtYW5LcnVza2FsR2FtbWFcIixcbiAgXCJHb29kbWFuS3J1c2thbEdhbW1hVGVzdFwiLFxuICBcIkdvdG9cIixcbiAgXCJHb3VyYXVkU2hhZGluZ1wiLFxuICBcIkdyYWRcIixcbiAgXCJHcmFkaWVudFwiLFxuICBcIkdyYWRpZW50RmlsdGVyXCIsXG4gIFwiR3JhZGllbnRGaXR0ZWRNZXNoXCIsXG4gIFwiR3JhZGllbnRPcmllbnRhdGlvbkZpbHRlclwiLFxuICBcIkdyYW1tYXJBcHBseVwiLFxuICBcIkdyYW1tYXJSdWxlc1wiLFxuICBcIkdyYW1tYXJUb2tlblwiLFxuICBcIkdyYXBoXCIsXG4gIFwiR3JhcGgzRFwiLFxuICBcIkdyYXBoQXNzb3J0YXRpdml0eVwiLFxuICBcIkdyYXBoQXV0b21vcnBoaXNtR3JvdXBcIixcbiAgXCJHcmFwaENlbnRlclwiLFxuICBcIkdyYXBoQ29tcGxlbWVudFwiLFxuICBcIkdyYXBoRGF0YVwiLFxuICBcIkdyYXBoRGVuc2l0eVwiLFxuICBcIkdyYXBoRGlhbWV0ZXJcIixcbiAgXCJHcmFwaERpZmZlcmVuY2VcIixcbiAgXCJHcmFwaERpc2pvaW50VW5pb25cIixcbiAgXCJHcmFwaERpc3RhbmNlXCIsXG4gIFwiR3JhcGhEaXN0YW5jZU1hdHJpeFwiLFxuICBcIkdyYXBoRW1iZWRkaW5nXCIsXG4gIFwiR3JhcGhIaWdobGlnaHRcIixcbiAgXCJHcmFwaEhpZ2hsaWdodFN0eWxlXCIsXG4gIFwiR3JhcGhIdWJcIixcbiAgXCJHcmFwaGljc1wiLFxuICBcIkdyYXBoaWNzM0RcIixcbiAgXCJHcmFwaGljczNEQm94XCIsXG4gIFwiR3JhcGhpY3MzREJveE9wdGlvbnNcIixcbiAgXCJHcmFwaGljc0FycmF5XCIsXG4gIFwiR3JhcGhpY3NCYXNlbGluZVwiLFxuICBcIkdyYXBoaWNzQm94XCIsXG4gIFwiR3JhcGhpY3NCb3hPcHRpb25zXCIsXG4gIFwiR3JhcGhpY3NDb2xvclwiLFxuICBcIkdyYXBoaWNzQ29sdW1uXCIsXG4gIFwiR3JhcGhpY3NDb21wbGV4XCIsXG4gIFwiR3JhcGhpY3NDb21wbGV4M0RCb3hcIixcbiAgXCJHcmFwaGljc0NvbXBsZXgzREJveE9wdGlvbnNcIixcbiAgXCJHcmFwaGljc0NvbXBsZXhCb3hcIixcbiAgXCJHcmFwaGljc0NvbXBsZXhCb3hPcHRpb25zXCIsXG4gIFwiR3JhcGhpY3NDb250ZW50c1wiLFxuICBcIkdyYXBoaWNzRGF0YVwiLFxuICBcIkdyYXBoaWNzR3JpZFwiLFxuICBcIkdyYXBoaWNzR3JpZEJveFwiLFxuICBcIkdyYXBoaWNzR3JvdXBcIixcbiAgXCJHcmFwaGljc0dyb3VwM0RCb3hcIixcbiAgXCJHcmFwaGljc0dyb3VwM0RCb3hPcHRpb25zXCIsXG4gIFwiR3JhcGhpY3NHcm91cEJveFwiLFxuICBcIkdyYXBoaWNzR3JvdXBCb3hPcHRpb25zXCIsXG4gIFwiR3JhcGhpY3NHcm91cGluZ1wiLFxuICBcIkdyYXBoaWNzSGlnaGxpZ2h0Q29sb3JcIixcbiAgXCJHcmFwaGljc1Jvd1wiLFxuICBcIkdyYXBoaWNzU3BhY2luZ1wiLFxuICBcIkdyYXBoaWNzU3R5bGVcIixcbiAgXCJHcmFwaEludGVyc2VjdGlvblwiLFxuICBcIkdyYXBoSm9pblwiLFxuICBcIkdyYXBoTGF5ZXJMYWJlbHNcIixcbiAgXCJHcmFwaExheWVyc1wiLFxuICBcIkdyYXBoTGF5ZXJTdHlsZVwiLFxuICBcIkdyYXBoTGF5b3V0XCIsXG4gIFwiR3JhcGhMaW5rRWZmaWNpZW5jeVwiLFxuICBcIkdyYXBoUGVyaXBoZXJ5XCIsXG4gIFwiR3JhcGhQbG90XCIsXG4gIFwiR3JhcGhQbG90M0RcIixcbiAgXCJHcmFwaFBvd2VyXCIsXG4gIFwiR3JhcGhQcm9kdWN0XCIsXG4gIFwiR3JhcGhQcm9wZXJ0eURpc3RyaWJ1dGlvblwiLFxuICBcIkdyYXBoUVwiLFxuICBcIkdyYXBoUmFkaXVzXCIsXG4gIFwiR3JhcGhSZWNpcHJvY2l0eVwiLFxuICBcIkdyYXBoUm9vdFwiLFxuICBcIkdyYXBoU3R5bGVcIixcbiAgXCJHcmFwaFN1bVwiLFxuICBcIkdyYXBoVHJlZVwiLFxuICBcIkdyYXBoVW5pb25cIixcbiAgXCJHcmF5XCIsXG4gIFwiR3JheUxldmVsXCIsXG4gIFwiR3JlYXRlclwiLFxuICBcIkdyZWF0ZXJFcXVhbFwiLFxuICBcIkdyZWF0ZXJFcXVhbExlc3NcIixcbiAgXCJHcmVhdGVyRXF1YWxUaGFuXCIsXG4gIFwiR3JlYXRlckZ1bGxFcXVhbFwiLFxuICBcIkdyZWF0ZXJHcmVhdGVyXCIsXG4gIFwiR3JlYXRlckxlc3NcIixcbiAgXCJHcmVhdGVyU2xhbnRFcXVhbFwiLFxuICBcIkdyZWF0ZXJUaGFuXCIsXG4gIFwiR3JlYXRlclRpbGRlXCIsXG4gIFwiR3JlZWtTdHlsZVwiLFxuICBcIkdyZWVuXCIsXG4gIFwiR3JlZW5GdW5jdGlvblwiLFxuICBcIkdyaWRcIixcbiAgXCJHcmlkQmFzZWxpbmVcIixcbiAgXCJHcmlkQm94XCIsXG4gIFwiR3JpZEJveEFsaWdubWVudFwiLFxuICBcIkdyaWRCb3hCYWNrZ3JvdW5kXCIsXG4gIFwiR3JpZEJveERpdmlkZXJzXCIsXG4gIFwiR3JpZEJveEZyYW1lXCIsXG4gIFwiR3JpZEJveEl0ZW1TaXplXCIsXG4gIFwiR3JpZEJveEl0ZW1TdHlsZVwiLFxuICBcIkdyaWRCb3hPcHRpb25zXCIsXG4gIFwiR3JpZEJveFNwYWNpbmdzXCIsXG4gIFwiR3JpZENyZWF0aW9uU2V0dGluZ3NcIixcbiAgXCJHcmlkRGVmYXVsdEVsZW1lbnRcIixcbiAgXCJHcmlkRWxlbWVudFN0eWxlT3B0aW9uc1wiLFxuICBcIkdyaWRGcmFtZVwiLFxuICBcIkdyaWRGcmFtZU1hcmdpbnNcIixcbiAgXCJHcmlkR3JhcGhcIixcbiAgXCJHcmlkTGluZXNcIixcbiAgXCJHcmlkTGluZXNTdHlsZVwiLFxuICBcIkdyaWRWaWRlb1wiLFxuICBcIkdyb2VibmVyQmFzaXNcIixcbiAgXCJHcm91cEFjdGlvbkJhc2VcIixcbiAgXCJHcm91cEJ5XCIsXG4gIFwiR3JvdXBDZW50cmFsaXplclwiLFxuICBcIkdyb3VwRWxlbWVudEZyb21Xb3JkXCIsXG4gIFwiR3JvdXBFbGVtZW50UG9zaXRpb25cIixcbiAgXCJHcm91cEVsZW1lbnRRXCIsXG4gIFwiR3JvdXBFbGVtZW50c1wiLFxuICBcIkdyb3VwRWxlbWVudFRvV29yZFwiLFxuICBcIkdyb3VwR2VuZXJhdG9yc1wiLFxuICBcIkdyb3VwaW5nc1wiLFxuICBcIkdyb3VwTXVsdGlwbGljYXRpb25UYWJsZVwiLFxuICBcIkdyb3VwT3BlbmVyQ29sb3JcIixcbiAgXCJHcm91cE9wZW5lckluc2lkZUZyYW1lXCIsXG4gIFwiR3JvdXBPcmJpdHNcIixcbiAgXCJHcm91cE9yZGVyXCIsXG4gIFwiR3JvdXBQYWdlQnJlYWtXaXRoaW5cIixcbiAgXCJHcm91cFNldHdpc2VTdGFiaWxpemVyXCIsXG4gIFwiR3JvdXBTdGFiaWxpemVyXCIsXG4gIFwiR3JvdXBTdGFiaWxpemVyQ2hhaW5cIixcbiAgXCJHcm91cFRvZ2V0aGVyR3JvdXBpbmdcIixcbiAgXCJHcm91cFRvZ2V0aGVyTmVzdGVkR3JvdXBpbmdcIixcbiAgXCJHcm93Q3V0Q29tcG9uZW50c1wiLFxuICBcIkd1ZGVybWFubmlhblwiLFxuICBcIkd1aWRlZEZpbHRlclwiLFxuICBcIkd1bWJlbERpc3RyaWJ1dGlvblwiLFxuICBcIkhhYXJXYXZlbGV0XCIsXG4gIFwiSGFkYW1hcmRNYXRyaXhcIixcbiAgXCJIYWxmTGluZVwiLFxuICBcIkhhbGZOb3JtYWxEaXN0cmlidXRpb25cIixcbiAgXCJIYWxmUGxhbmVcIixcbiAgXCJIYWxmU3BhY2VcIixcbiAgXCJIYWxmdG9uZVNoYWRpbmdcIixcbiAgXCJIYW1pbHRvbmlhbkdyYXBoUVwiLFxuICBcIkhhbW1pbmdEaXN0YW5jZVwiLFxuICBcIkhhbW1pbmdXaW5kb3dcIixcbiAgXCJIYW5kbGVyRnVuY3Rpb25zXCIsXG4gIFwiSGFuZGxlckZ1bmN0aW9uc0tleXNcIixcbiAgXCJIYW5rZWxIMVwiLFxuICBcIkhhbmtlbEgyXCIsXG4gIFwiSGFua2VsTWF0cml4XCIsXG4gIFwiSGFua2VsVHJhbnNmb3JtXCIsXG4gIFwiSGFublBvaXNzb25XaW5kb3dcIixcbiAgXCJIYW5uV2luZG93XCIsXG4gIFwiSGFyYWRhTm9ydG9uR3JvdXBITlwiLFxuICBcIkhhcmFyeUdyYXBoXCIsXG4gIFwiSGFyZGNvcmVQb2ludFByb2Nlc3NcIixcbiAgXCJIYXJtb25pY01lYW5cIixcbiAgXCJIYXJtb25pY01lYW5GaWx0ZXJcIixcbiAgXCJIYXJtb25pY051bWJlclwiLFxuICBcIkhhc2hcIixcbiAgXCJIYXRjaEZpbGxpbmdcIixcbiAgXCJIYXRjaFNoYWRpbmdcIixcbiAgXCJIYXZlcnNpbmVcIixcbiAgXCJIYXphcmRGdW5jdGlvblwiLFxuICBcIkhlYWRcIixcbiAgXCJIZWFkQ29tcG9zZVwiLFxuICBcIkhlYWRlckFsaWdubWVudFwiLFxuICBcIkhlYWRlckJhY2tncm91bmRcIixcbiAgXCJIZWFkZXJEaXNwbGF5RnVuY3Rpb25cIixcbiAgXCJIZWFkZXJMaW5lc1wiLFxuICBcIkhlYWRlcnNcIixcbiAgXCJIZWFkZXJTaXplXCIsXG4gIFwiSGVhZGVyU3R5bGVcIixcbiAgXCJIZWFkc1wiLFxuICBcIkhlYXRGbHV4VmFsdWVcIixcbiAgXCJIZWF0SW5zdWxhdGlvblZhbHVlXCIsXG4gIFwiSGVhdE91dGZsb3dWYWx1ZVwiLFxuICBcIkhlYXRSYWRpYXRpb25WYWx1ZVwiLFxuICBcIkhlYXRTeW1tZXRyeVZhbHVlXCIsXG4gIFwiSGVhdFRlbXBlcmF0dXJlQ29uZGl0aW9uXCIsXG4gIFwiSGVhdFRyYW5zZmVyUERFQ29tcG9uZW50XCIsXG4gIFwiSGVhdFRyYW5zZmVyVmFsdWVcIixcbiAgXCJIZWF2aXNpZGVMYW1iZGFcIixcbiAgXCJIZWF2aXNpZGVQaVwiLFxuICBcIkhlYXZpc2lkZVRoZXRhXCIsXG4gIFwiSGVsZEdyb3VwSGVcIixcbiAgXCJIZWxkUGFydFwiLFxuICBcIkhlbG1ob2x0elBERUNvbXBvbmVudFwiLFxuICBcIkhlbHBCcm93c2VyTG9va3VwXCIsXG4gIFwiSGVscEJyb3dzZXJOb3RlYm9va1wiLFxuICBcIkhlbHBCcm93c2VyU2V0dGluZ3NcIixcbiAgXCJIZWxwVmlld2VyU2V0dGluZ3NcIixcbiAgXCJIZXJlXCIsXG4gIFwiSGVybWl0ZURlY29tcG9zaXRpb25cIixcbiAgXCJIZXJtaXRlSFwiLFxuICBcIkhlcm1pdGlhblwiLFxuICBcIkhlcm1pdGlhbk1hdHJpeFFcIixcbiAgXCJIZXNzZW5iZXJnRGVjb21wb3NpdGlvblwiLFxuICBcIkhlc3NpYW5cIixcbiAgXCJIZXVuQlwiLFxuICBcIkhldW5CUHJpbWVcIixcbiAgXCJIZXVuQ1wiLFxuICBcIkhldW5DUHJpbWVcIixcbiAgXCJIZXVuRFwiLFxuICBcIkhldW5EUHJpbWVcIixcbiAgXCJIZXVuR1wiLFxuICBcIkhldW5HUHJpbWVcIixcbiAgXCJIZXVuVFwiLFxuICBcIkhldW5UUHJpbWVcIixcbiAgXCJIZXhhZGVjaW1hbENoYXJhY3RlclwiLFxuICBcIkhleGFoZWRyb25cIixcbiAgXCJIZXhhaGVkcm9uQm94XCIsXG4gIFwiSGV4YWhlZHJvbkJveE9wdGlvbnNcIixcbiAgXCJIaWRkZW5JdGVtc1wiLFxuICBcIkhpZGRlbk1hcmtvdlByb2Nlc3NcIixcbiAgXCJIaWRkZW5TdXJmYWNlXCIsXG4gIFwiSGlnaGxpZ2h0ZWRcIixcbiAgXCJIaWdobGlnaHRHcmFwaFwiLFxuICBcIkhpZ2hsaWdodEltYWdlXCIsXG4gIFwiSGlnaGxpZ2h0TWVzaFwiLFxuICBcIkhpZ2hsaWdodFN0cmluZ1wiLFxuICBcIkhpZ2hwYXNzRmlsdGVyXCIsXG4gIFwiSGlnbWFuU2ltc0dyb3VwSFNcIixcbiAgXCJIaWxiZXJ0Q3VydmVcIixcbiAgXCJIaWxiZXJ0RmlsdGVyXCIsXG4gIFwiSGlsYmVydE1hdHJpeFwiLFxuICBcIkhpc3RvZ3JhbVwiLFxuICBcIkhpc3RvZ3JhbTNEXCIsXG4gIFwiSGlzdG9ncmFtRGlzdHJpYnV0aW9uXCIsXG4gIFwiSGlzdG9ncmFtTGlzdFwiLFxuICBcIkhpc3RvZ3JhbVBvaW50RGVuc2l0eVwiLFxuICBcIkhpc3RvZ3JhbVRyYW5zZm9ybVwiLFxuICBcIkhpc3RvZ3JhbVRyYW5zZm9ybUludGVycG9sYXRpb25cIixcbiAgXCJIaXN0b3JpY2FsUGVyaW9kRGF0YVwiLFxuICBcIkhpdE1pc3NUcmFuc2Zvcm1cIixcbiAgXCJISVRTQ2VudHJhbGl0eVwiLFxuICBcIkhqb3J0aERpc3RyaWJ1dGlvblwiLFxuICBcIkhvZGdlRHVhbFwiLFxuICBcIkhvZWZmZGluZ0RcIixcbiAgXCJIb2VmZmRpbmdEVGVzdFwiLFxuICBcIkhvbGRcIixcbiAgXCJIb2xkQWxsXCIsXG4gIFwiSG9sZEFsbENvbXBsZXRlXCIsXG4gIFwiSG9sZENvbXBsZXRlXCIsXG4gIFwiSG9sZEZpcnN0XCIsXG4gIFwiSG9sZEZvcm1cIixcbiAgXCJIb2xkUGF0dGVyblwiLFxuICBcIkhvbGRSZXN0XCIsXG4gIFwiSG9saWRheUNhbGVuZGFyXCIsXG4gIFwiSG9tZURpcmVjdG9yeVwiLFxuICBcIkhvbWVQYWdlXCIsXG4gIFwiSG9yaXpvbnRhbFwiLFxuICBcIkhvcml6b250YWxGb3JtXCIsXG4gIFwiSG9yaXpvbnRhbEdhdWdlXCIsXG4gIFwiSG9yaXpvbnRhbFNjcm9sbFBvc2l0aW9uXCIsXG4gIFwiSG9ybmVyRm9ybVwiLFxuICBcIkhvc3RMb29rdXBcIixcbiAgXCJIb3RlbGxpbmdUU3F1YXJlRGlzdHJpYnV0aW9uXCIsXG4gIFwiSG95dERpc3RyaWJ1dGlvblwiLFxuICBcIkhUTUxTYXZlXCIsXG4gIFwiSFRUUEVycm9yUmVzcG9uc2VcIixcbiAgXCJIVFRQUmVkaXJlY3RcIixcbiAgXCJIVFRQUmVxdWVzdFwiLFxuICBcIkhUVFBSZXF1ZXN0RGF0YVwiLFxuICBcIkhUVFBSZXNwb25zZVwiLFxuICBcIkh1ZVwiLFxuICBcIkh1bWFuR3Jvd3RoRGF0YVwiLFxuICBcIkh1bXBEb3duSHVtcFwiLFxuICBcIkh1bXBFcXVhbFwiLFxuICBcIkh1cndpdHpMZXJjaFBoaVwiLFxuICBcIkh1cndpdHpaZXRhXCIsXG4gIFwiSHlwZXJib2xpY0Rpc3RyaWJ1dGlvblwiLFxuICBcIkh5cGVyY3ViZUdyYXBoXCIsXG4gIFwiSHlwZXJleHBvbmVudGlhbERpc3RyaWJ1dGlvblwiLFxuICBcIkh5cGVyZmFjdG9yaWFsXCIsXG4gIFwiSHlwZXJnZW9tZXRyaWMwRjFcIixcbiAgXCJIeXBlcmdlb21ldHJpYzBGMVJlZ3VsYXJpemVkXCIsXG4gIFwiSHlwZXJnZW9tZXRyaWMxRjFcIixcbiAgXCJIeXBlcmdlb21ldHJpYzFGMVJlZ3VsYXJpemVkXCIsXG4gIFwiSHlwZXJnZW9tZXRyaWMyRjFcIixcbiAgXCJIeXBlcmdlb21ldHJpYzJGMVJlZ3VsYXJpemVkXCIsXG4gIFwiSHlwZXJnZW9tZXRyaWNEaXN0cmlidXRpb25cIixcbiAgXCJIeXBlcmdlb21ldHJpY1BGUVwiLFxuICBcIkh5cGVyZ2VvbWV0cmljUEZRUmVndWxhcml6ZWRcIixcbiAgXCJIeXBlcmdlb21ldHJpY1VcIixcbiAgXCJIeXBlcmxpbmtcIixcbiAgXCJIeXBlcmxpbmtBY3Rpb25cIixcbiAgXCJIeXBlcmxpbmtDcmVhdGlvblNldHRpbmdzXCIsXG4gIFwiSHlwZXJwbGFuZVwiLFxuICBcIkh5cGhlbmF0aW9uXCIsXG4gIFwiSHlwaGVuYXRpb25PcHRpb25zXCIsXG4gIFwiSHlwb2V4cG9uZW50aWFsRGlzdHJpYnV0aW9uXCIsXG4gIFwiSHlwb3RoZXNpc1Rlc3REYXRhXCIsXG4gIFwiSVwiLFxuICBcIkljb25EYXRhXCIsXG4gIFwiSWNvbml6ZVwiLFxuICBcIkljb25pemVkT2JqZWN0XCIsXG4gIFwiSWNvblJ1bGVzXCIsXG4gIFwiSWNvc2FoZWRyb25cIixcbiAgXCJJZGVudGl0eVwiLFxuICBcIklkZW50aXR5TWF0cml4XCIsXG4gIFwiSWZcIixcbiAgXCJJZkNvbXBpbGVkXCIsXG4gIFwiSWdub3JlQ2FzZVwiLFxuICBcIklnbm9yZURpYWNyaXRpY3NcIixcbiAgXCJJZ25vcmVJc290b3Blc1wiLFxuICBcIklnbm9yZVB1bmN0dWF0aW9uXCIsXG4gIFwiSWdub3JlU3BlbGxDaGVja1wiLFxuICBcIklnbm9yZVN0ZXJlb2NoZW1pc3RyeVwiLFxuICBcIklnbm9yaW5nSW5hY3RpdmVcIixcbiAgXCJJbVwiLFxuICBcIkltYWdlXCIsXG4gIFwiSW1hZ2UzRFwiLFxuICBcIkltYWdlM0RQcm9qZWN0aW9uXCIsXG4gIFwiSW1hZ2UzRFNsaWNlc1wiLFxuICBcIkltYWdlQWNjdW11bGF0ZVwiLFxuICBcIkltYWdlQWRkXCIsXG4gIFwiSW1hZ2VBZGp1c3RcIixcbiAgXCJJbWFnZUFsaWduXCIsXG4gIFwiSW1hZ2VBcHBseVwiLFxuICBcIkltYWdlQXBwbHlJbmRleGVkXCIsXG4gIFwiSW1hZ2VBc3BlY3RSYXRpb1wiLFxuICBcIkltYWdlQXNzZW1ibGVcIixcbiAgXCJJbWFnZUF1Z21lbnRhdGlvbkxheWVyXCIsXG4gIFwiSW1hZ2VCb3VuZGluZ0JveGVzXCIsXG4gIFwiSW1hZ2VDYWNoZVwiLFxuICBcIkltYWdlQ2FjaGVWYWxpZFwiLFxuICBcIkltYWdlQ2FwdHVyZVwiLFxuICBcIkltYWdlQ2FwdHVyZUZ1bmN0aW9uXCIsXG4gIFwiSW1hZ2VDYXNlc1wiLFxuICBcIkltYWdlQ2hhbm5lbHNcIixcbiAgXCJJbWFnZUNsaXBcIixcbiAgXCJJbWFnZUNvbGxhZ2VcIixcbiAgXCJJbWFnZUNvbG9yU3BhY2VcIixcbiAgXCJJbWFnZUNvbXBvc2VcIixcbiAgXCJJbWFnZUNvbnRhaW5zUVwiLFxuICBcIkltYWdlQ29udGVudHNcIixcbiAgXCJJbWFnZUNvbnZvbHZlXCIsXG4gIFwiSW1hZ2VDb29jY3VycmVuY2VcIixcbiAgXCJJbWFnZUNvcm5lcnNcIixcbiAgXCJJbWFnZUNvcnJlbGF0ZVwiLFxuICBcIkltYWdlQ29ycmVzcG9uZGluZ1BvaW50c1wiLFxuICBcIkltYWdlQ3JvcFwiLFxuICBcIkltYWdlRGF0YVwiLFxuICBcIkltYWdlRGVjb252b2x2ZVwiLFxuICBcIkltYWdlRGVtb3NhaWNcIixcbiAgXCJJbWFnZURpZmZlcmVuY2VcIixcbiAgXCJJbWFnZURpbWVuc2lvbnNcIixcbiAgXCJJbWFnZURpc3BsYWNlbWVudHNcIixcbiAgXCJJbWFnZURpc3RhbmNlXCIsXG4gIFwiSW1hZ2VFZGl0TW9kZVwiLFxuICBcIkltYWdlRWZmZWN0XCIsXG4gIFwiSW1hZ2VFeHBvc3VyZUNvbWJpbmVcIixcbiAgXCJJbWFnZUZlYXR1cmVUcmFja1wiLFxuICBcIkltYWdlRmlsZUFwcGx5XCIsXG4gIFwiSW1hZ2VGaWxlRmlsdGVyXCIsXG4gIFwiSW1hZ2VGaWxlU2NhblwiLFxuICBcIkltYWdlRmlsdGVyXCIsXG4gIFwiSW1hZ2VGb2N1c0NvbWJpbmVcIixcbiAgXCJJbWFnZUZvcmVzdGluZ0NvbXBvbmVudHNcIixcbiAgXCJJbWFnZUZvcm1hdHRpbmdXaWR0aFwiLFxuICBcIkltYWdlRm9yd2FyZFRyYW5zZm9ybWF0aW9uXCIsXG4gIFwiSW1hZ2VHcmFwaGljc1wiLFxuICBcIkltYWdlSGlzdG9ncmFtXCIsXG4gIFwiSW1hZ2VJZGVudGlmeVwiLFxuICBcIkltYWdlSW5zdGFuY2VRXCIsXG4gIFwiSW1hZ2VLZXlwb2ludHNcIixcbiAgXCJJbWFnZUxhYmVsc1wiLFxuICBcIkltYWdlTGVnZW5kc1wiLFxuICBcIkltYWdlTGV2ZWxzXCIsXG4gIFwiSW1hZ2VMaW5lc1wiLFxuICBcIkltYWdlTWFyZ2luc1wiLFxuICBcIkltYWdlTWFya2VyXCIsXG4gIFwiSW1hZ2VNYXJrZXJzXCIsXG4gIFwiSW1hZ2VNZWFzdXJlbWVudHNcIixcbiAgXCJJbWFnZU1lc2hcIixcbiAgXCJJbWFnZU11bHRpcGx5XCIsXG4gIFwiSW1hZ2VPZmZzZXRcIixcbiAgXCJJbWFnZVBhZFwiLFxuICBcIkltYWdlUGFkZGluZ1wiLFxuICBcIkltYWdlUGFydGl0aW9uXCIsXG4gIFwiSW1hZ2VQZXJpb2RvZ3JhbVwiLFxuICBcIkltYWdlUGVyc3BlY3RpdmVUcmFuc2Zvcm1hdGlvblwiLFxuICBcIkltYWdlUG9zaXRpb25cIixcbiAgXCJJbWFnZVByZXZpZXdGdW5jdGlvblwiLFxuICBcIkltYWdlUHlyYW1pZFwiLFxuICBcIkltYWdlUHlyYW1pZEFwcGx5XCIsXG4gIFwiSW1hZ2VRXCIsXG4gIFwiSW1hZ2VSYW5nZUNhY2hlXCIsXG4gIFwiSW1hZ2VSZWNvbG9yXCIsXG4gIFwiSW1hZ2VSZWZsZWN0XCIsXG4gIFwiSW1hZ2VSZWdpb25cIixcbiAgXCJJbWFnZVJlc2l6ZVwiLFxuICBcIkltYWdlUmVzb2x1dGlvblwiLFxuICBcIkltYWdlUmVzdHlsZVwiLFxuICBcIkltYWdlUm90YXRlXCIsXG4gIFwiSW1hZ2VSb3RhdGVkXCIsXG4gIFwiSW1hZ2VTYWxpZW5jeUZpbHRlclwiLFxuICBcIkltYWdlU2NhbGVkXCIsXG4gIFwiSW1hZ2VTY2FuXCIsXG4gIFwiSW1hZ2VTaXplXCIsXG4gIFwiSW1hZ2VTaXplQWN0aW9uXCIsXG4gIFwiSW1hZ2VTaXplQ2FjaGVcIixcbiAgXCJJbWFnZVNpemVNdWx0aXBsaWVyc1wiLFxuICBcIkltYWdlU2l6ZVJhd1wiLFxuICBcIkltYWdlU3RpdGNoXCIsXG4gIFwiSW1hZ2VTdWJ0cmFjdFwiLFxuICBcIkltYWdlVGFrZVwiLFxuICBcIkltYWdlVHJhbnNmb3JtYXRpb25cIixcbiAgXCJJbWFnZVRyaW1cIixcbiAgXCJJbWFnZVR5cGVcIixcbiAgXCJJbWFnZVZhbHVlXCIsXG4gIFwiSW1hZ2VWYWx1ZVBvc2l0aW9uc1wiLFxuICBcIkltYWdlVmVjdG9yc2NvcGVQbG90XCIsXG4gIFwiSW1hZ2VXYXZlZm9ybVBsb3RcIixcbiAgXCJJbWFnaW5nRGV2aWNlXCIsXG4gIFwiSW1wbGljaXREXCIsXG4gIFwiSW1wbGljaXRSZWdpb25cIixcbiAgXCJJbXBsaWVzXCIsXG4gIFwiSW1wb3J0XCIsXG4gIFwiSW1wb3J0QXV0b1JlcGxhY2VtZW50c1wiLFxuICBcIkltcG9ydEJ5dGVBcnJheVwiLFxuICBcIkltcG9ydGVkT2JqZWN0XCIsXG4gIFwiSW1wb3J0T3B0aW9uc1wiLFxuICBcIkltcG9ydFN0cmluZ1wiLFxuICBcIkltcHJvdmVtZW50SW1wb3J0YW5jZVwiLFxuICBcIkluXCIsXG4gIFwiSW5hY3RpdmF0ZVwiLFxuICBcIkluYWN0aXZlXCIsXG4gIFwiSW5hY3RpdmVTdHlsZVwiLFxuICBcIkluY2lkZW5jZUdyYXBoXCIsXG4gIFwiSW5jaWRlbmNlTGlzdFwiLFxuICBcIkluY2lkZW5jZU1hdHJpeFwiLFxuICBcIkluY2x1ZGVBcm9tYXRpY0JvbmRzXCIsXG4gIFwiSW5jbHVkZUNvbnN0YW50QmFzaXNcIixcbiAgXCJJbmNsdWRlZENvbnRleHRzXCIsXG4gIFwiSW5jbHVkZURlZmluaXRpb25zXCIsXG4gIFwiSW5jbHVkZURpcmVjdG9yaWVzXCIsXG4gIFwiSW5jbHVkZUZpbGVFeHRlbnNpb25cIixcbiAgXCJJbmNsdWRlR2VuZXJhdG9yVGFza3NcIixcbiAgXCJJbmNsdWRlSHlkcm9nZW5zXCIsXG4gIFwiSW5jbHVkZUluZmxlY3Rpb25zXCIsXG4gIFwiSW5jbHVkZU1ldGFJbmZvcm1hdGlvblwiLFxuICBcIkluY2x1ZGVQb2RzXCIsXG4gIFwiSW5jbHVkZVF1YW50aXRpZXNcIixcbiAgXCJJbmNsdWRlUmVsYXRlZFRhYmxlc1wiLFxuICBcIkluY2x1ZGVTaW5ndWxhclNvbHV0aW9uc1wiLFxuICBcIkluY2x1ZGVTaW5ndWxhclRlcm1cIixcbiAgXCJJbmNsdWRlV2luZG93VGltZXNcIixcbiAgXCJJbmNyZW1lbnRcIixcbiAgXCJJbmRlZmluaXRlTWF0cml4UVwiLFxuICBcIkluZGVudFwiLFxuICBcIkluZGVudGluZ05ld2xpbmVTcGFjaW5nc1wiLFxuICBcIkluZGVudE1heEZyYWN0aW9uXCIsXG4gIFwiSW5kZXBlbmRlbmNlVGVzdFwiLFxuICBcIkluZGVwZW5kZW50RWRnZVNldFFcIixcbiAgXCJJbmRlcGVuZGVudFBoeXNpY2FsUXVhbnRpdHlcIixcbiAgXCJJbmRlcGVuZGVudFVuaXRcIixcbiAgXCJJbmRlcGVuZGVudFVuaXREaW1lbnNpb25cIixcbiAgXCJJbmRlcGVuZGVudFZlcnRleFNldFFcIixcbiAgXCJJbmRldGVybWluYXRlXCIsXG4gIFwiSW5kZXRlcm1pbmF0ZVRocmVzaG9sZFwiLFxuICBcIkluZGV4Q3JlYXRpb25PcHRpb25zXCIsXG4gIFwiSW5kZXhlZFwiLFxuICBcIkluZGV4RWRnZVRhZ2dlZEdyYXBoXCIsXG4gIFwiSW5kZXhHcmFwaFwiLFxuICBcIkluZGV4VGFnXCIsXG4gIFwiSW5lcXVhbGl0eVwiLFxuICBcIkluZXJ0RXZhbHVhdGVcIixcbiAgXCJJbmVydEV4cHJlc3Npb25cIixcbiAgXCJJbmV4YWN0TnVtYmVyUVwiLFxuICBcIkluZXhhY3ROdW1iZXJzXCIsXG4gIFwiSW5maW5pdGVGdXR1cmVcIixcbiAgXCJJbmZpbml0ZUxpbmVcIixcbiAgXCJJbmZpbml0ZUxpbmVUaHJvdWdoXCIsXG4gIFwiSW5maW5pdGVQYXN0XCIsXG4gIFwiSW5maW5pdGVQbGFuZVwiLFxuICBcIkluZmluaXR5XCIsXG4gIFwiSW5maXhcIixcbiAgXCJJbmZsYXRpb25BZGp1c3RcIixcbiAgXCJJbmZsYXRpb25NZXRob2RcIixcbiAgXCJJbmZvcm1hdGlvblwiLFxuICBcIkluZm9ybWF0aW9uRGF0YVwiLFxuICBcIkluZm9ybWF0aW9uRGF0YUdyaWRcIixcbiAgXCJJbmhlcml0ZWRcIixcbiAgXCJJbmhlcml0U2NvcGVcIixcbiAgXCJJbmhvbW9nZW5lb3VzUG9pc3NvblBvaW50UHJvY2Vzc1wiLFxuICBcIkluaG9tb2dlbmVvdXNQb2lzc29uUHJvY2Vzc1wiLFxuICBcIkluaXRpYWxFdmFsdWF0aW9uSGlzdG9yeVwiLFxuICBcIkluaXRpYWxpemF0aW9uXCIsXG4gIFwiSW5pdGlhbGl6YXRpb25DZWxsXCIsXG4gIFwiSW5pdGlhbGl6YXRpb25DZWxsRXZhbHVhdGlvblwiLFxuICBcIkluaXRpYWxpemF0aW9uQ2VsbFdhcm5pbmdcIixcbiAgXCJJbml0aWFsaXphdGlvbk9iamVjdFwiLFxuICBcIkluaXRpYWxpemF0aW9uT2JqZWN0c1wiLFxuICBcIkluaXRpYWxpemF0aW9uVmFsdWVcIixcbiAgXCJJbml0aWFsaXplXCIsXG4gIFwiSW5pdGlhbFNlZWRpbmdcIixcbiAgXCJJbmxpbmVDb3VudGVyQXNzaWdubWVudHNcIixcbiAgXCJJbmxpbmVDb3VudGVySW5jcmVtZW50c1wiLFxuICBcIklubGluZVJ1bGVzXCIsXG4gIFwiSW5uZXJcIixcbiAgXCJJbm5lclBvbHlnb25cIixcbiAgXCJJbm5lclBvbHloZWRyb25cIixcbiAgXCJJbnBhaW50XCIsXG4gIFwiSW5wdXRcIixcbiAgXCJJbnB1dEFsaWFzZXNcIixcbiAgXCJJbnB1dEFzc3VtcHRpb25zXCIsXG4gIFwiSW5wdXRBdXRvUmVwbGFjZW1lbnRzXCIsXG4gIFwiSW5wdXRGaWVsZFwiLFxuICBcIklucHV0RmllbGRCb3hcIixcbiAgXCJJbnB1dEZpZWxkQm94T3B0aW9uc1wiLFxuICBcIklucHV0Rm9ybVwiLFxuICBcIklucHV0R3JvdXBpbmdcIixcbiAgXCJJbnB1dE5hbWVQYWNrZXRcIixcbiAgXCJJbnB1dE5vdGVib29rXCIsXG4gIFwiSW5wdXRQYWNrZXRcIixcbiAgXCJJbnB1dFBvcnRzXCIsXG4gIFwiSW5wdXRTZXR0aW5nc1wiLFxuICBcIklucHV0U3RyZWFtXCIsXG4gIFwiSW5wdXRTdHJpbmdcIixcbiAgXCJJbnB1dFN0cmluZ1BhY2tldFwiLFxuICBcIklucHV0VG9Cb3hGb3JtUGFja2V0XCIsXG4gIFwiSW5zZXJ0XCIsXG4gIFwiSW5zZXJ0aW9uRnVuY3Rpb25cIixcbiAgXCJJbnNlcnRpb25Qb2ludE9iamVjdFwiLFxuICBcIkluc2VydExpbmVicmVha3NcIixcbiAgXCJJbnNlcnRSZXN1bHRzXCIsXG4gIFwiSW5zZXRcIixcbiAgXCJJbnNldDNEQm94XCIsXG4gIFwiSW5zZXQzREJveE9wdGlvbnNcIixcbiAgXCJJbnNldEJveFwiLFxuICBcIkluc2V0Qm94T3B0aW9uc1wiLFxuICBcIkluc3BoZXJlXCIsXG4gIFwiSW5zdGFsbFwiLFxuICBcIkluc3RhbGxTZXJ2aWNlXCIsXG4gIFwiSW5zdGFuY2VOb3JtYWxpemF0aW9uTGF5ZXJcIixcbiAgXCJJblN0cmluZ1wiLFxuICBcIkludGVnZXJcIixcbiAgXCJJbnRlZ2VyRGlnaXRzXCIsXG4gIFwiSW50ZWdlckV4cG9uZW50XCIsXG4gIFwiSW50ZWdlckxlbmd0aFwiLFxuICBcIkludGVnZXJOYW1lXCIsXG4gIFwiSW50ZWdlclBhcnRcIixcbiAgXCJJbnRlZ2VyUGFydGl0aW9uc1wiLFxuICBcIkludGVnZXJRXCIsXG4gIFwiSW50ZWdlclJldmVyc2VcIixcbiAgXCJJbnRlZ2Vyc1wiLFxuICBcIkludGVnZXJTdHJpbmdcIixcbiAgXCJJbnRlZ3JhbFwiLFxuICBcIkludGVncmF0ZVwiLFxuICBcIkludGVncmF0ZUNoYW5nZVZhcmlhYmxlc1wiLFxuICBcIkludGVyYWN0aXZlXCIsXG4gIFwiSW50ZXJhY3RpdmVUcmFkaW5nQ2hhcnRcIixcbiAgXCJJbnRlcmZhY2VTd2l0Y2hlZFwiLFxuICBcIkludGVybGFjZWRcIixcbiAgXCJJbnRlcmxlYXZpbmdcIixcbiAgXCJJbnRlcm5hbGx5QmFsYW5jZWREZWNvbXBvc2l0aW9uXCIsXG4gIFwiSW50ZXJwb2xhdGluZ0Z1bmN0aW9uXCIsXG4gIFwiSW50ZXJwb2xhdGluZ1BvbHlub21pYWxcIixcbiAgXCJJbnRlcnBvbGF0aW9uXCIsXG4gIFwiSW50ZXJwb2xhdGlvbk9yZGVyXCIsXG4gIFwiSW50ZXJwb2xhdGlvblBvaW50c1wiLFxuICBcIkludGVycG9sYXRpb25QcmVjaXNpb25cIixcbiAgXCJJbnRlcnByZXRhdGlvblwiLFxuICBcIkludGVycHJldGF0aW9uQm94XCIsXG4gIFwiSW50ZXJwcmV0YXRpb25Cb3hPcHRpb25zXCIsXG4gIFwiSW50ZXJwcmV0YXRpb25GdW5jdGlvblwiLFxuICBcIkludGVycHJldGVyXCIsXG4gIFwiSW50ZXJwcmV0VGVtcGxhdGVcIixcbiAgXCJJbnRlcnF1YXJ0aWxlUmFuZ2VcIixcbiAgXCJJbnRlcnJ1cHRcIixcbiAgXCJJbnRlcnJ1cHRTZXR0aW5nc1wiLFxuICBcIkludGVyc2VjdGVkRW50aXR5Q2xhc3NcIixcbiAgXCJJbnRlcnNlY3RpbmdRXCIsXG4gIFwiSW50ZXJzZWN0aW9uXCIsXG4gIFwiSW50ZXJ2YWxcIixcbiAgXCJJbnRlcnZhbEludGVyc2VjdGlvblwiLFxuICBcIkludGVydmFsTWFya2Vyc1wiLFxuICBcIkludGVydmFsTWFya2Vyc1N0eWxlXCIsXG4gIFwiSW50ZXJ2YWxNZW1iZXJRXCIsXG4gIFwiSW50ZXJ2YWxTbGlkZXJcIixcbiAgXCJJbnRlcnZhbFVuaW9uXCIsXG4gIFwiSW50b1wiLFxuICBcIkludmVyc2VcIixcbiAgXCJJbnZlcnNlQmV0YVJlZ3VsYXJpemVkXCIsXG4gIFwiSW52ZXJzZUJpbGF0ZXJhbExhcGxhY2VUcmFuc2Zvcm1cIixcbiAgXCJJbnZlcnNlQmlsYXRlcmFsWlRyYW5zZm9ybVwiLFxuICBcIkludmVyc2VDREZcIixcbiAgXCJJbnZlcnNlQ2hpU3F1YXJlRGlzdHJpYnV0aW9uXCIsXG4gIFwiSW52ZXJzZUNvbnRpbnVvdXNXYXZlbGV0VHJhbnNmb3JtXCIsXG4gIFwiSW52ZXJzZURpc3RhbmNlVHJhbnNmb3JtXCIsXG4gIFwiSW52ZXJzZUVsbGlwdGljTm9tZVFcIixcbiAgXCJJbnZlcnNlRXJmXCIsXG4gIFwiSW52ZXJzZUVyZmNcIixcbiAgXCJJbnZlcnNlRm91cmllclwiLFxuICBcIkludmVyc2VGb3VyaWVyQ29zVHJhbnNmb3JtXCIsXG4gIFwiSW52ZXJzZUZvdXJpZXJTZXF1ZW5jZVRyYW5zZm9ybVwiLFxuICBcIkludmVyc2VGb3VyaWVyU2luVHJhbnNmb3JtXCIsXG4gIFwiSW52ZXJzZUZvdXJpZXJUcmFuc2Zvcm1cIixcbiAgXCJJbnZlcnNlRnVuY3Rpb25cIixcbiAgXCJJbnZlcnNlRnVuY3Rpb25zXCIsXG4gIFwiSW52ZXJzZUdhbW1hRGlzdHJpYnV0aW9uXCIsXG4gIFwiSW52ZXJzZUdhbW1hUmVndWxhcml6ZWRcIixcbiAgXCJJbnZlcnNlR2F1c3NpYW5EaXN0cmlidXRpb25cIixcbiAgXCJJbnZlcnNlR3VkZXJtYW5uaWFuXCIsXG4gIFwiSW52ZXJzZUhhbmtlbFRyYW5zZm9ybVwiLFxuICBcIkludmVyc2VIYXZlcnNpbmVcIixcbiAgXCJJbnZlcnNlSW1hZ2VQeXJhbWlkXCIsXG4gIFwiSW52ZXJzZUphY29iaUNEXCIsXG4gIFwiSW52ZXJzZUphY29iaUNOXCIsXG4gIFwiSW52ZXJzZUphY29iaUNTXCIsXG4gIFwiSW52ZXJzZUphY29iaURDXCIsXG4gIFwiSW52ZXJzZUphY29iaUROXCIsXG4gIFwiSW52ZXJzZUphY29iaURTXCIsXG4gIFwiSW52ZXJzZUphY29iaU5DXCIsXG4gIFwiSW52ZXJzZUphY29iaU5EXCIsXG4gIFwiSW52ZXJzZUphY29iaU5TXCIsXG4gIFwiSW52ZXJzZUphY29iaVNDXCIsXG4gIFwiSW52ZXJzZUphY29iaVNEXCIsXG4gIFwiSW52ZXJzZUphY29iaVNOXCIsXG4gIFwiSW52ZXJzZUxhcGxhY2VUcmFuc2Zvcm1cIixcbiAgXCJJbnZlcnNlTWVsbGluVHJhbnNmb3JtXCIsXG4gIFwiSW52ZXJzZVBlcm11dGF0aW9uXCIsXG4gIFwiSW52ZXJzZVJhZG9uXCIsXG4gIFwiSW52ZXJzZVJhZG9uVHJhbnNmb3JtXCIsXG4gIFwiSW52ZXJzZVNlcmllc1wiLFxuICBcIkludmVyc2VTaG9ydFRpbWVGb3VyaWVyXCIsXG4gIFwiSW52ZXJzZVNwZWN0cm9ncmFtXCIsXG4gIFwiSW52ZXJzZVN1cnZpdmFsRnVuY3Rpb25cIixcbiAgXCJJbnZlcnNlVHJhbnNmb3JtZWRSZWdpb25cIixcbiAgXCJJbnZlcnNlV2F2ZWxldFRyYW5zZm9ybVwiLFxuICBcIkludmVyc2VXZWllcnN0cmFzc1BcIixcbiAgXCJJbnZlcnNlV2lzaGFydE1hdHJpeERpc3RyaWJ1dGlvblwiLFxuICBcIkludmVyc2VaVHJhbnNmb3JtXCIsXG4gIFwiSW52aXNpYmxlXCIsXG4gIFwiSW52aXNpYmxlQXBwbGljYXRpb25cIixcbiAgXCJJbnZpc2libGVUaW1lc1wiLFxuICBcIklQQWRkcmVzc1wiLFxuICBcIklycmVkdWNpYmxlUG9seW5vbWlhbFFcIixcbiAgXCJJc2xhbmREYXRhXCIsXG4gIFwiSXNvbGF0aW5nSW50ZXJ2YWxcIixcbiAgXCJJc29tb3JwaGljR3JhcGhRXCIsXG4gIFwiSXNvbW9ycGhpY1N1YmdyYXBoUVwiLFxuICBcIklzb3RvcGVEYXRhXCIsXG4gIFwiSXRhbGljXCIsXG4gIFwiSXRlbVwiLFxuICBcIkl0ZW1Bc3BlY3RSYXRpb1wiLFxuICBcIkl0ZW1Cb3hcIixcbiAgXCJJdGVtQm94T3B0aW9uc1wiLFxuICBcIkl0ZW1EaXNwbGF5RnVuY3Rpb25cIixcbiAgXCJJdGVtU2l6ZVwiLFxuICBcIkl0ZW1TdHlsZVwiLFxuICBcIkl0b1Byb2Nlc3NcIixcbiAgXCJKYWNjYXJkRGlzc2ltaWxhcml0eVwiLFxuICBcIkphY29iaUFtcGxpdHVkZVwiLFxuICBcIkphY29iaWFuXCIsXG4gIFwiSmFjb2JpQ0RcIixcbiAgXCJKYWNvYmlDTlwiLFxuICBcIkphY29iaUNTXCIsXG4gIFwiSmFjb2JpRENcIixcbiAgXCJKYWNvYmlETlwiLFxuICBcIkphY29iaURTXCIsXG4gIFwiSmFjb2JpRXBzaWxvblwiLFxuICBcIkphY29iaU5DXCIsXG4gIFwiSmFjb2JpTkRcIixcbiAgXCJKYWNvYmlOU1wiLFxuICBcIkphY29iaVBcIixcbiAgXCJKYWNvYmlTQ1wiLFxuICBcIkphY29iaVNEXCIsXG4gIFwiSmFjb2JpU05cIixcbiAgXCJKYWNvYmlTeW1ib2xcIixcbiAgXCJKYWNvYmlaZXRhXCIsXG4gIFwiSmFjb2JpWk5cIixcbiAgXCJKYW5rb0dyb3VwSjFcIixcbiAgXCJKYW5rb0dyb3VwSjJcIixcbiAgXCJKYW5rb0dyb3VwSjNcIixcbiAgXCJKYW5rb0dyb3VwSjRcIixcbiAgXCJKYXJxdWVCZXJhQUxNVGVzdFwiLFxuICBcIkpvaG5zb25EaXN0cmlidXRpb25cIixcbiAgXCJKb2luXCIsXG4gIFwiSm9pbkFjcm9zc1wiLFxuICBcIkpvaW5lZFwiLFxuICBcIkpvaW5lZEN1cnZlXCIsXG4gIFwiSm9pbmVkQ3VydmVCb3hcIixcbiAgXCJKb2luZWRDdXJ2ZUJveE9wdGlvbnNcIixcbiAgXCJKb2luRm9ybVwiLFxuICBcIkpvcmRhbkRlY29tcG9zaXRpb25cIixcbiAgXCJKb3JkYW5Nb2RlbERlY29tcG9zaXRpb25cIixcbiAgXCJKdWxpYW5EYXRlXCIsXG4gIFwiSnVsaWFTZXRCb2V0dGNoZXJcIixcbiAgXCJKdWxpYVNldEl0ZXJhdGlvbkNvdW50XCIsXG4gIFwiSnVsaWFTZXRQbG90XCIsXG4gIFwiSnVsaWFTZXRQb2ludHNcIixcbiAgXCJLXCIsXG4gIFwiS2FnaUNoYXJ0XCIsXG4gIFwiS2Fpc2VyQmVzc2VsV2luZG93XCIsXG4gIFwiS2Fpc2VyV2luZG93XCIsXG4gIFwiS2FsbWFuRXN0aW1hdG9yXCIsXG4gIFwiS2FsbWFuRmlsdGVyXCIsXG4gIFwiS2FyaHVuZW5Mb2V2ZURlY29tcG9zaXRpb25cIixcbiAgXCJLYXJ5VHJlZVwiLFxuICBcIkthdHpDZW50cmFsaXR5XCIsXG4gIFwiS0NvcmVDb21wb25lbnRzXCIsXG4gIFwiS0Rpc3RyaWJ1dGlvblwiLFxuICBcIktFZGdlQ29ubmVjdGVkQ29tcG9uZW50c1wiLFxuICBcIktFZGdlQ29ubmVjdGVkR3JhcGhRXCIsXG4gIFwiS2VlcEV4aXN0aW5nVmVyc2lvblwiLFxuICBcIktlbHZpbkJlaVwiLFxuICBcIktlbHZpbkJlclwiLFxuICBcIktlbHZpbktlaVwiLFxuICBcIktlbHZpbktlclwiLFxuICBcIktlbmRhbGxUYXVcIixcbiAgXCJLZW5kYWxsVGF1VGVzdFwiLFxuICBcIktlcm5lbENvbmZpZ3VyYXRpb25cIixcbiAgXCJLZXJuZWxFeGVjdXRlXCIsXG4gIFwiS2VybmVsRnVuY3Rpb25cIixcbiAgXCJLZXJuZWxNaXh0dXJlRGlzdHJpYnV0aW9uXCIsXG4gIFwiS2VybmVsT2JqZWN0XCIsXG4gIFwiS2VybmVsc1wiLFxuICBcIktldFwiLFxuICBcIktleVwiLFxuICBcIktleUNvbGxpc2lvbkZ1bmN0aW9uXCIsXG4gIFwiS2V5Q29tcGxlbWVudFwiLFxuICBcIktleURyb3BcIixcbiAgXCJLZXlEcm9wRnJvbVwiLFxuICBcIktleUV4aXN0c1FcIixcbiAgXCJLZXlGcmVlUVwiLFxuICBcIktleUludGVyc2VjdGlvblwiLFxuICBcIktleU1hcFwiLFxuICBcIktleU1lbWJlclFcIixcbiAgXCJLZXlwb2ludFN0cmVuZ3RoXCIsXG4gIFwiS2V5c1wiLFxuICBcIktleVNlbGVjdFwiLFxuICBcIktleVNvcnRcIixcbiAgXCJLZXlTb3J0QnlcIixcbiAgXCJLZXlUYWtlXCIsXG4gIFwiS2V5VW5pb25cIixcbiAgXCJLZXlWYWx1ZU1hcFwiLFxuICBcIktleVZhbHVlUGF0dGVyblwiLFxuICBcIktoaW5jaGluXCIsXG4gIFwiS2lsbFByb2Nlc3NcIixcbiAgXCJLaXJjaGhvZmZHcmFwaFwiLFxuICBcIktpcmNoaG9mZk1hdHJpeFwiLFxuICBcIktsZWluSW52YXJpYW50SlwiLFxuICBcIktuYXBzYWNrU29sdmVcIixcbiAgXCJLbmlnaHRUb3VyR3JhcGhcIixcbiAgXCJLbm90RGF0YVwiLFxuICBcIktub3duVW5pdFFcIixcbiAgXCJLb2NoQ3VydmVcIixcbiAgXCJLb2xtb2dvcm92U21pcm5vdlRlc3RcIixcbiAgXCJLcm9uZWNrZXJEZWx0YVwiLFxuICBcIktyb25lY2tlck1vZGVsRGVjb21wb3NpdGlvblwiLFxuICBcIktyb25lY2tlclByb2R1Y3RcIixcbiAgXCJLcm9uZWNrZXJTeW1ib2xcIixcbiAgXCJLdWlwZXJUZXN0XCIsXG4gIFwiS3VtYXJhc3dhbXlEaXN0cmlidXRpb25cIixcbiAgXCJLdXJ0b3Npc1wiLFxuICBcIkt1d2FoYXJhRmlsdGVyXCIsXG4gIFwiS1ZlcnRleENvbm5lY3RlZENvbXBvbmVudHNcIixcbiAgXCJLVmVydGV4Q29ubmVjdGVkR3JhcGhRXCIsXG4gIFwiTEFCQ29sb3JcIixcbiAgXCJMYWJlbFwiLFxuICBcIkxhYmVsZWRcIixcbiAgXCJMYWJlbGVkU2xpZGVyXCIsXG4gIFwiTGFiZWxpbmdGdW5jdGlvblwiLFxuICBcIkxhYmVsaW5nU2l6ZVwiLFxuICBcIkxhYmVsU3R5bGVcIixcbiAgXCJMYWJlbFZpc2liaWxpdHlcIixcbiAgXCJMYWd1ZXJyZUxcIixcbiAgXCJMYWtlRGF0YVwiLFxuICBcIkxhbWJkYUNvbXBvbmVudHNcIixcbiAgXCJMYW1iZXJ0V1wiLFxuICBcIkxhbWVDXCIsXG4gIFwiTGFtZUNQcmltZVwiLFxuICBcIkxhbWVFaWdlbnZhbHVlQVwiLFxuICBcIkxhbWVFaWdlbnZhbHVlQlwiLFxuICBcIkxhbWVTXCIsXG4gIFwiTGFtZVNQcmltZVwiLFxuICBcIkxhbWluYURhdGFcIixcbiAgXCJMYW5jem9zV2luZG93XCIsXG4gIFwiTGFuZGF1RGlzdHJpYnV0aW9uXCIsXG4gIFwiTGFuZ3VhZ2VcIixcbiAgXCJMYW5ndWFnZUNhdGVnb3J5XCIsXG4gIFwiTGFuZ3VhZ2VEYXRhXCIsXG4gIFwiTGFuZ3VhZ2VJZGVudGlmeVwiLFxuICBcIkxhbmd1YWdlT3B0aW9uc1wiLFxuICBcIkxhcGxhY2VEaXN0cmlidXRpb25cIixcbiAgXCJMYXBsYWNlVHJhbnNmb3JtXCIsXG4gIFwiTGFwbGFjaWFuXCIsXG4gIFwiTGFwbGFjaWFuRmlsdGVyXCIsXG4gIFwiTGFwbGFjaWFuR2F1c3NpYW5GaWx0ZXJcIixcbiAgXCJMYXBsYWNpYW5QREVUZXJtXCIsXG4gIFwiTGFyZ2VcIixcbiAgXCJMYXJnZXJcIixcbiAgXCJMYXN0XCIsXG4gIFwiTGF0aXR1ZGVcIixcbiAgXCJMYXRpdHVkZUxvbmdpdHVkZVwiLFxuICBcIkxhdHRpY2VEYXRhXCIsXG4gIFwiTGF0dGljZVJlZHVjZVwiLFxuICBcIkxhdW5jaFwiLFxuICBcIkxhdW5jaEtlcm5lbHNcIixcbiAgXCJMYXllcmVkR3JhcGhQbG90XCIsXG4gIFwiTGF5ZXJlZEdyYXBoUGxvdDNEXCIsXG4gIFwiTGF5ZXJTaXplRnVuY3Rpb25cIixcbiAgXCJMYXlvdXRJbmZvcm1hdGlvblwiLFxuICBcIkxDSENvbG9yXCIsXG4gIFwiTENNXCIsXG4gIFwiTGVhZGVyU2l6ZVwiLFxuICBcIkxlYWZDb3VudFwiLFxuICBcIkxlYXBWYXJpYW50XCIsXG4gIFwiTGVhcFllYXJRXCIsXG4gIFwiTGVhcm5EaXN0cmlidXRpb25cIixcbiAgXCJMZWFybmVkRGlzdHJpYnV0aW9uXCIsXG4gIFwiTGVhcm5pbmdSYXRlXCIsXG4gIFwiTGVhcm5pbmdSYXRlTXVsdGlwbGllcnNcIixcbiAgXCJMZWFzdFNxdWFyZXNcIixcbiAgXCJMZWFzdFNxdWFyZXNGaWx0ZXJLZXJuZWxcIixcbiAgXCJMZWZ0XCIsXG4gIFwiTGVmdEFycm93XCIsXG4gIFwiTGVmdEFycm93QmFyXCIsXG4gIFwiTGVmdEFycm93UmlnaHRBcnJvd1wiLFxuICBcIkxlZnREb3duVGVlVmVjdG9yXCIsXG4gIFwiTGVmdERvd25WZWN0b3JcIixcbiAgXCJMZWZ0RG93blZlY3RvckJhclwiLFxuICBcIkxlZnRSaWdodEFycm93XCIsXG4gIFwiTGVmdFJpZ2h0VmVjdG9yXCIsXG4gIFwiTGVmdFRlZVwiLFxuICBcIkxlZnRUZWVBcnJvd1wiLFxuICBcIkxlZnRUZWVWZWN0b3JcIixcbiAgXCJMZWZ0VHJpYW5nbGVcIixcbiAgXCJMZWZ0VHJpYW5nbGVCYXJcIixcbiAgXCJMZWZ0VHJpYW5nbGVFcXVhbFwiLFxuICBcIkxlZnRVcERvd25WZWN0b3JcIixcbiAgXCJMZWZ0VXBUZWVWZWN0b3JcIixcbiAgXCJMZWZ0VXBWZWN0b3JcIixcbiAgXCJMZWZ0VXBWZWN0b3JCYXJcIixcbiAgXCJMZWZ0VmVjdG9yXCIsXG4gIFwiTGVmdFZlY3RvckJhclwiLFxuICBcIkxlZ2VuZEFwcGVhcmFuY2VcIixcbiAgXCJMZWdlbmRlZFwiLFxuICBcIkxlZ2VuZEZ1bmN0aW9uXCIsXG4gIFwiTGVnZW5kTGFiZWxcIixcbiAgXCJMZWdlbmRMYXlvdXRcIixcbiAgXCJMZWdlbmRNYXJnaW5zXCIsXG4gIFwiTGVnZW5kTWFya2Vyc1wiLFxuICBcIkxlZ2VuZE1hcmtlclNpemVcIixcbiAgXCJMZWdlbmRyZVBcIixcbiAgXCJMZWdlbmRyZVFcIixcbiAgXCJMZWdlbmRyZVR5cGVcIixcbiAgXCJMZW5ndGhcIixcbiAgXCJMZW5ndGhXaGlsZVwiLFxuICBcIkxlcmNoUGhpXCIsXG4gIFwiTGVzc1wiLFxuICBcIkxlc3NFcXVhbFwiLFxuICBcIkxlc3NFcXVhbEdyZWF0ZXJcIixcbiAgXCJMZXNzRXF1YWxUaGFuXCIsXG4gIFwiTGVzc0Z1bGxFcXVhbFwiLFxuICBcIkxlc3NHcmVhdGVyXCIsXG4gIFwiTGVzc0xlc3NcIixcbiAgXCJMZXNzU2xhbnRFcXVhbFwiLFxuICBcIkxlc3NUaGFuXCIsXG4gIFwiTGVzc1RpbGRlXCIsXG4gIFwiTGV0dGVyQ2hhcmFjdGVyXCIsXG4gIFwiTGV0dGVyQ291bnRzXCIsXG4gIFwiTGV0dGVyTnVtYmVyXCIsXG4gIFwiTGV0dGVyUVwiLFxuICBcIkxldmVsXCIsXG4gIFwiTGV2ZW5lVGVzdFwiLFxuICBcIkxldmlDaXZpdGFUZW5zb3JcIixcbiAgXCJMZXZ5RGlzdHJpYnV0aW9uXCIsXG4gIFwiTGV4aWNvZ3JhcGhpY1wiLFxuICBcIkxleGljb2dyYXBoaWNPcmRlclwiLFxuICBcIkxleGljb2dyYXBoaWNTb3J0XCIsXG4gIFwiTGlicmFyeURhdGFUeXBlXCIsXG4gIFwiTGlicmFyeUZ1bmN0aW9uXCIsXG4gIFwiTGlicmFyeUZ1bmN0aW9uRGVjbGFyYXRpb25cIixcbiAgXCJMaWJyYXJ5RnVuY3Rpb25FcnJvclwiLFxuICBcIkxpYnJhcnlGdW5jdGlvbkluZm9ybWF0aW9uXCIsXG4gIFwiTGlicmFyeUZ1bmN0aW9uTG9hZFwiLFxuICBcIkxpYnJhcnlGdW5jdGlvblVubG9hZFwiLFxuICBcIkxpYnJhcnlMb2FkXCIsXG4gIFwiTGlicmFyeVVubG9hZFwiLFxuICBcIkxpY2Vuc2VFbnRpdGxlbWVudE9iamVjdFwiLFxuICBcIkxpY2Vuc2VFbnRpdGxlbWVudHNcIixcbiAgXCJMaWNlbnNlSURcIixcbiAgXCJMaWNlbnNpbmdTZXR0aW5nc1wiLFxuICBcIkxpZnRpbmdGaWx0ZXJEYXRhXCIsXG4gIFwiTGlmdGluZ1dhdmVsZXRUcmFuc2Zvcm1cIixcbiAgXCJMaWdodEJsdWVcIixcbiAgXCJMaWdodEJyb3duXCIsXG4gIFwiTGlnaHRDeWFuXCIsXG4gIFwiTGlnaHRlclwiLFxuICBcIkxpZ2h0R3JheVwiLFxuICBcIkxpZ2h0R3JlZW5cIixcbiAgXCJMaWdodGluZ1wiLFxuICBcIkxpZ2h0aW5nQW5nbGVcIixcbiAgXCJMaWdodE1hZ2VudGFcIixcbiAgXCJMaWdodE9yYW5nZVwiLFxuICBcIkxpZ2h0UGlua1wiLFxuICBcIkxpZ2h0UHVycGxlXCIsXG4gIFwiTGlnaHRSZWRcIixcbiAgXCJMaWdodFNvdXJjZXNcIixcbiAgXCJMaWdodFllbGxvd1wiLFxuICBcIkxpa2VsaWhvb2RcIixcbiAgXCJMaW1pdFwiLFxuICBcIkxpbWl0c1Bvc2l0aW9uaW5nXCIsXG4gIFwiTGltaXRzUG9zaXRpb25pbmdUb2tlbnNcIixcbiAgXCJMaW5kbGV5RGlzdHJpYnV0aW9uXCIsXG4gIFwiTGluZVwiLFxuICBcIkxpbmUzREJveFwiLFxuICBcIkxpbmUzREJveE9wdGlvbnNcIixcbiAgXCJMaW5lYXJGaWx0ZXJcIixcbiAgXCJMaW5lYXJGcmFjdGlvbmFsT3B0aW1pemF0aW9uXCIsXG4gIFwiTGluZWFyRnJhY3Rpb25hbFRyYW5zZm9ybVwiLFxuICBcIkxpbmVhckdyYWRpZW50RmlsbGluZ1wiLFxuICBcIkxpbmVhckdyYWRpZW50SW1hZ2VcIixcbiAgXCJMaW5lYXJpemluZ1RyYW5zZm9ybWF0aW9uRGF0YVwiLFxuICBcIkxpbmVhckxheWVyXCIsXG4gIFwiTGluZWFyTW9kZWxGaXRcIixcbiAgXCJMaW5lYXJPZmZzZXRGdW5jdGlvblwiLFxuICBcIkxpbmVhck9wdGltaXphdGlvblwiLFxuICBcIkxpbmVhclByb2dyYW1taW5nXCIsXG4gIFwiTGluZWFyUmVjdXJyZW5jZVwiLFxuICBcIkxpbmVhclNvbHZlXCIsXG4gIFwiTGluZWFyU29sdmVGdW5jdGlvblwiLFxuICBcIkxpbmVCb3hcIixcbiAgXCJMaW5lQm94T3B0aW9uc1wiLFxuICBcIkxpbmVCcmVha1wiLFxuICBcIkxpbmVicmVha0FkanVzdG1lbnRzXCIsXG4gIFwiTGluZUJyZWFrQ2hhcnRcIixcbiAgXCJMaW5lYnJlYWtTZW1pY29sb25XZWlnaHRpbmdcIixcbiAgXCJMaW5lQnJlYWtXaXRoaW5cIixcbiAgXCJMaW5lQ29sb3JcIixcbiAgXCJMaW5lR3JhcGhcIixcbiAgXCJMaW5lSW5kZW50XCIsXG4gIFwiTGluZUluZGVudE1heEZyYWN0aW9uXCIsXG4gIFwiTGluZUludGVncmFsQ29udm9sdXRpb25QbG90XCIsXG4gIFwiTGluZUludGVncmFsQ29udm9sdXRpb25TY2FsZVwiLFxuICBcIkxpbmVMZWdlbmRcIixcbiAgXCJMaW5lT3BhY2l0eVwiLFxuICBcIkxpbmVTcGFjaW5nXCIsXG4gIFwiTGluZVdyYXBQYXJ0c1wiLFxuICBcIkxpbmtBY3RpdmF0ZVwiLFxuICBcIkxpbmtDbG9zZVwiLFxuICBcIkxpbmtDb25uZWN0XCIsXG4gIFwiTGlua0Nvbm5lY3RlZFFcIixcbiAgXCJMaW5rQ3JlYXRlXCIsXG4gIFwiTGlua0Vycm9yXCIsXG4gIFwiTGlua0ZsdXNoXCIsXG4gIFwiTGlua0Z1bmN0aW9uXCIsXG4gIFwiTGlua0hvc3RcIixcbiAgXCJMaW5rSW50ZXJydXB0XCIsXG4gIFwiTGlua0xhdW5jaFwiLFxuICBcIkxpbmtNb2RlXCIsXG4gIFwiTGlua09iamVjdFwiLFxuICBcIkxpbmtPcGVuXCIsXG4gIFwiTGlua09wdGlvbnNcIixcbiAgXCJMaW5rUGF0dGVybnNcIixcbiAgXCJMaW5rUHJvdG9jb2xcIixcbiAgXCJMaW5rUmFua0NlbnRyYWxpdHlcIixcbiAgXCJMaW5rUmVhZFwiLFxuICBcIkxpbmtSZWFkSGVsZFwiLFxuICBcIkxpbmtSZWFkeVFcIixcbiAgXCJMaW5rc1wiLFxuICBcIkxpbmtTZXJ2aWNlXCIsXG4gIFwiTGlua1dyaXRlXCIsXG4gIFwiTGlua1dyaXRlSGVsZFwiLFxuICBcIkxpb3V2aWxsZUxhbWJkYVwiLFxuICBcIkxpc3RcIixcbiAgXCJMaXN0YWJsZVwiLFxuICBcIkxpc3RBbmltYXRlXCIsXG4gIFwiTGlzdENvbnRvdXJQbG90XCIsXG4gIFwiTGlzdENvbnRvdXJQbG90M0RcIixcbiAgXCJMaXN0Q29udm9sdmVcIixcbiAgXCJMaXN0Q29ycmVsYXRlXCIsXG4gIFwiTGlzdEN1cnZlUGF0aFBsb3RcIixcbiAgXCJMaXN0RGVjb252b2x2ZVwiLFxuICBcIkxpc3REZW5zaXR5UGxvdFwiLFxuICBcIkxpc3REZW5zaXR5UGxvdDNEXCIsXG4gIFwiTGlzdGVuXCIsXG4gIFwiTGlzdEZvcm1hdFwiLFxuICBcIkxpc3RGb3VyaWVyU2VxdWVuY2VUcmFuc2Zvcm1cIixcbiAgXCJMaXN0SW50ZXJwb2xhdGlvblwiLFxuICBcIkxpc3RMaW5lSW50ZWdyYWxDb252b2x1dGlvblBsb3RcIixcbiAgXCJMaXN0TGluZVBsb3RcIixcbiAgXCJMaXN0TGluZVBsb3QzRFwiLFxuICBcIkxpc3RMb2dMaW5lYXJQbG90XCIsXG4gIFwiTGlzdExvZ0xvZ1Bsb3RcIixcbiAgXCJMaXN0TG9nUGxvdFwiLFxuICBcIkxpc3RQaWNrZXJcIixcbiAgXCJMaXN0UGlja2VyQm94XCIsXG4gIFwiTGlzdFBpY2tlckJveEJhY2tncm91bmRcIixcbiAgXCJMaXN0UGlja2VyQm94T3B0aW9uc1wiLFxuICBcIkxpc3RQbGF5XCIsXG4gIFwiTGlzdFBsb3RcIixcbiAgXCJMaXN0UGxvdDNEXCIsXG4gIFwiTGlzdFBvaW50UGxvdDNEXCIsXG4gIFwiTGlzdFBvbGFyUGxvdFwiLFxuICBcIkxpc3RRXCIsXG4gIFwiTGlzdFNsaWNlQ29udG91clBsb3QzRFwiLFxuICBcIkxpc3RTbGljZURlbnNpdHlQbG90M0RcIixcbiAgXCJMaXN0U2xpY2VWZWN0b3JQbG90M0RcIixcbiAgXCJMaXN0U3RlcFBsb3RcIixcbiAgXCJMaXN0U3RyZWFtRGVuc2l0eVBsb3RcIixcbiAgXCJMaXN0U3RyZWFtUGxvdFwiLFxuICBcIkxpc3RTdHJlYW1QbG90M0RcIixcbiAgXCJMaXN0U3VyZmFjZVBsb3QzRFwiLFxuICBcIkxpc3RWZWN0b3JEZW5zaXR5UGxvdFwiLFxuICBcIkxpc3RWZWN0b3JEaXNwbGFjZW1lbnRQbG90XCIsXG4gIFwiTGlzdFZlY3RvckRpc3BsYWNlbWVudFBsb3QzRFwiLFxuICBcIkxpc3RWZWN0b3JQbG90XCIsXG4gIFwiTGlzdFZlY3RvclBsb3QzRFwiLFxuICBcIkxpc3RaVHJhbnNmb3JtXCIsXG4gIFwiTGl0ZXJhbFwiLFxuICBcIkxpdGVyYWxTZWFyY2hcIixcbiAgXCJMaXRlcmFsVHlwZVwiLFxuICBcIkxvYWRDb21waWxlZENvbXBvbmVudFwiLFxuICBcIkxvY2FsQWRhcHRpdmVCaW5hcml6ZVwiLFxuICBcIkxvY2FsQ2FjaGVcIixcbiAgXCJMb2NhbENsdXN0ZXJpbmdDb2VmZmljaWVudFwiLFxuICBcIkxvY2FsRXZhbHVhdGVcIixcbiAgXCJMb2NhbGl6ZURlZmluaXRpb25zXCIsXG4gIFwiTG9jYWxpemVWYXJpYWJsZXNcIixcbiAgXCJMb2NhbE9iamVjdFwiLFxuICBcIkxvY2FsT2JqZWN0c1wiLFxuICBcIkxvY2FsUmVzcG9uc2VOb3JtYWxpemF0aW9uTGF5ZXJcIixcbiAgXCJMb2NhbFN1Ym1pdFwiLFxuICBcIkxvY2FsU3ltYm9sXCIsXG4gIFwiTG9jYWxUaW1lXCIsXG4gIFwiTG9jYWxUaW1lWm9uZVwiLFxuICBcIkxvY2F0aW9uRXF1aXZhbGVuY2VUZXN0XCIsXG4gIFwiTG9jYXRpb25UZXN0XCIsXG4gIFwiTG9jYXRvclwiLFxuICBcIkxvY2F0b3JBdXRvQ3JlYXRlXCIsXG4gIFwiTG9jYXRvckJveFwiLFxuICBcIkxvY2F0b3JCb3hPcHRpb25zXCIsXG4gIFwiTG9jYXRvckNlbnRlcmluZ1wiLFxuICBcIkxvY2F0b3JQYW5lXCIsXG4gIFwiTG9jYXRvclBhbmVCb3hcIixcbiAgXCJMb2NhdG9yUGFuZUJveE9wdGlvbnNcIixcbiAgXCJMb2NhdG9yUmVnaW9uXCIsXG4gIFwiTG9ja2VkXCIsXG4gIFwiTG9nXCIsXG4gIFwiTG9nMTBcIixcbiAgXCJMb2cyXCIsXG4gIFwiTG9nQmFybmVzR1wiLFxuICBcIkxvZ0dhbW1hXCIsXG4gIFwiTG9nR2FtbWFEaXN0cmlidXRpb25cIixcbiAgXCJMb2dpY2FsRXhwYW5kXCIsXG4gIFwiTG9nSW50ZWdyYWxcIixcbiAgXCJMb2dpc3RpY0Rpc3RyaWJ1dGlvblwiLFxuICBcIkxvZ2lzdGljU2lnbW9pZFwiLFxuICBcIkxvZ2l0TW9kZWxGaXRcIixcbiAgXCJMb2dMaWtlbGlob29kXCIsXG4gIFwiTG9nTGluZWFyUGxvdFwiLFxuICBcIkxvZ0xvZ2lzdGljRGlzdHJpYnV0aW9uXCIsXG4gIFwiTG9nTG9nUGxvdFwiLFxuICBcIkxvZ011bHRpbm9ybWFsRGlzdHJpYnV0aW9uXCIsXG4gIFwiTG9nTm9ybWFsRGlzdHJpYnV0aW9uXCIsXG4gIFwiTG9nUGxvdFwiLFxuICBcIkxvZ1JhbmtUZXN0XCIsXG4gIFwiTG9nU2VyaWVzRGlzdHJpYnV0aW9uXCIsXG4gIFwiTG9uZ0VxdWFsXCIsXG4gIFwiTG9uZ2VzdFwiLFxuICBcIkxvbmdlc3RDb21tb25TZXF1ZW5jZVwiLFxuICBcIkxvbmdlc3RDb21tb25TZXF1ZW5jZVBvc2l0aW9uc1wiLFxuICBcIkxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZVwiLFxuICBcIkxvbmdlc3RDb21tb25TdWJzZXF1ZW5jZVBvc2l0aW9uc1wiLFxuICBcIkxvbmdlc3RNYXRjaFwiLFxuICBcIkxvbmdlc3RPcmRlcmVkU2VxdWVuY2VcIixcbiAgXCJMb25nRm9ybVwiLFxuICBcIkxvbmdpdHVkZVwiLFxuICBcIkxvbmdMZWZ0QXJyb3dcIixcbiAgXCJMb25nTGVmdFJpZ2h0QXJyb3dcIixcbiAgXCJMb25nUmlnaHRBcnJvd1wiLFxuICBcIkxvbmdTaG9ydFRlcm1NZW1vcnlMYXllclwiLFxuICBcIkxvb2t1cFwiLFxuICBcIkxvb3BiYWNrXCIsXG4gIFwiTG9vcEZyZWVHcmFwaFFcIixcbiAgXCJMb29waW5nXCIsXG4gIFwiTG9zc0Z1bmN0aW9uXCIsXG4gIFwiTG93ZXJDYXNlUVwiLFxuICBcIkxvd2VyTGVmdEFycm93XCIsXG4gIFwiTG93ZXJSaWdodEFycm93XCIsXG4gIFwiTG93ZXJUcmlhbmd1bGFyaXplXCIsXG4gIFwiTG93ZXJUcmlhbmd1bGFyTWF0cml4XCIsXG4gIFwiTG93ZXJUcmlhbmd1bGFyTWF0cml4UVwiLFxuICBcIkxvd3Bhc3NGaWx0ZXJcIixcbiAgXCJMUUVzdGltYXRvckdhaW5zXCIsXG4gIFwiTFFHUmVndWxhdG9yXCIsXG4gIFwiTFFPdXRwdXRSZWd1bGF0b3JHYWluc1wiLFxuICBcIkxRUmVndWxhdG9yR2FpbnNcIixcbiAgXCJMVUJhY2tTdWJzdGl0dXRpb25cIixcbiAgXCJMdWNhc0xcIixcbiAgXCJMdWNjaW9TYW1pQ29tcG9uZW50c1wiLFxuICBcIkxVRGVjb21wb3NpdGlvblwiLFxuICBcIkx1bmFyRWNsaXBzZVwiLFxuICBcIkxVVkNvbG9yXCIsXG4gIFwiTHlhcHVub3ZTb2x2ZVwiLFxuICBcIkx5b25zR3JvdXBMeVwiLFxuICBcIk1hY2hpbmVJRFwiLFxuICBcIk1hY2hpbmVOYW1lXCIsXG4gIFwiTWFjaGluZU51bWJlclFcIixcbiAgXCJNYWNoaW5lUHJlY2lzaW9uXCIsXG4gIFwiTWFjaW50b3NoU3lzdGVtUGFnZVNldHVwXCIsXG4gIFwiTWFnZW50YVwiLFxuICBcIk1hZ25pZmljYXRpb25cIixcbiAgXCJNYWduaWZ5XCIsXG4gIFwiTWFpbEFkZHJlc3NWYWxpZGF0aW9uXCIsXG4gIFwiTWFpbEV4ZWN1dGVcIixcbiAgXCJNYWlsRm9sZGVyXCIsXG4gIFwiTWFpbEl0ZW1cIixcbiAgXCJNYWlsUmVjZWl2ZXJGdW5jdGlvblwiLFxuICBcIk1haWxSZXNwb25zZUZ1bmN0aW9uXCIsXG4gIFwiTWFpbFNlYXJjaFwiLFxuICBcIk1haWxTZXJ2ZXJDb25uZWN0XCIsXG4gIFwiTWFpbFNlcnZlckNvbm5lY3Rpb25cIixcbiAgXCJNYWlsU2V0dGluZ3NcIixcbiAgXCJNYWluU29sdmVcIixcbiAgXCJNYWludGFpbkR5bmFtaWNDYWNoZXNcIixcbiAgXCJNYWpvcml0eVwiLFxuICBcIk1ha2VCb3hlc1wiLFxuICBcIk1ha2VFeHByZXNzaW9uXCIsXG4gIFwiTWFrZVJ1bGVzXCIsXG4gIFwiTWFuYWdlZExpYnJhcnlFeHByZXNzaW9uSURcIixcbiAgXCJNYW5hZ2VkTGlicmFyeUV4cHJlc3Npb25RXCIsXG4gIFwiTWFuZGVsYnJvdFNldEJvZXR0Y2hlclwiLFxuICBcIk1hbmRlbGJyb3RTZXREaXN0YW5jZVwiLFxuICBcIk1hbmRlbGJyb3RTZXRJdGVyYXRpb25Db3VudFwiLFxuICBcIk1hbmRlbGJyb3RTZXRNZW1iZXJRXCIsXG4gIFwiTWFuZGVsYnJvdFNldFBsb3RcIixcbiAgXCJNYW5nb2xkdExhbWJkYVwiLFxuICBcIk1hbmhhdHRhbkRpc3RhbmNlXCIsXG4gIFwiTWFuaXB1bGF0ZVwiLFxuICBcIk1hbmlwdWxhdG9yXCIsXG4gIFwiTWFubmVkU3BhY2VNaXNzaW9uRGF0YVwiLFxuICBcIk1hbm5XaGl0bmV5VGVzdFwiLFxuICBcIk1hbnRpc3NhRXhwb25lbnRcIixcbiAgXCJNYW51YWxcIixcbiAgXCJNYXBcIixcbiAgXCJNYXBBbGxcIixcbiAgXCJNYXBBcHBseVwiLFxuICBcIk1hcEF0XCIsXG4gIFwiTWFwSW5kZXhlZFwiLFxuICBcIk1BUHJvY2Vzc1wiLFxuICBcIk1hcFRocmVhZFwiLFxuICBcIk1hcmNoZW5rb1Bhc3R1ckRpc3RyaWJ1dGlvblwiLFxuICBcIk1hcmN1bVFcIixcbiAgXCJNYXJkaWFDb21iaW5lZFRlc3RcIixcbiAgXCJNYXJkaWFLdXJ0b3Npc1Rlc3RcIixcbiAgXCJNYXJkaWFTa2V3bmVzc1Rlc3RcIixcbiAgXCJNYXJnaW5hbERpc3RyaWJ1dGlvblwiLFxuICBcIk1hcmtvdlByb2Nlc3NQcm9wZXJ0aWVzXCIsXG4gIFwiTWFza2luZ1wiLFxuICBcIk1hc3NDb25jZW50cmF0aW9uQ29uZGl0aW9uXCIsXG4gIFwiTWFzc0ZsdXhWYWx1ZVwiLFxuICBcIk1hc3NJbXBlcm1lYWJsZUJvdW5kYXJ5VmFsdWVcIixcbiAgXCJNYXNzT3V0Zmxvd1ZhbHVlXCIsXG4gIFwiTWFzc1N5bW1ldHJ5VmFsdWVcIixcbiAgXCJNYXNzVHJhbnNmZXJWYWx1ZVwiLFxuICBcIk1hc3NUcmFuc3BvcnRQREVDb21wb25lbnRcIixcbiAgXCJNYXRjaGluZ0Rpc3NpbWlsYXJpdHlcIixcbiAgXCJNYXRjaExvY2FsTmFtZVFcIixcbiAgXCJNYXRjaExvY2FsTmFtZXNcIixcbiAgXCJNYXRjaFFcIixcbiAgXCJNYXRlcmlhbFwiLFxuICBcIk1hdGVyaWFsU2hhZGluZ1wiLFxuICBcIk1hdGVyblBvaW50UHJvY2Vzc1wiLFxuICBcIk1hdGhlbWF0aWNhbEZ1bmN0aW9uRGF0YVwiLFxuICBcIk1hdGhlbWF0aWNhTm90YXRpb25cIixcbiAgXCJNYXRoaWV1Q1wiLFxuICBcIk1hdGhpZXVDaGFyYWN0ZXJpc3RpY0FcIixcbiAgXCJNYXRoaWV1Q2hhcmFjdGVyaXN0aWNCXCIsXG4gIFwiTWF0aGlldUNoYXJhY3RlcmlzdGljRXhwb25lbnRcIixcbiAgXCJNYXRoaWV1Q1ByaW1lXCIsXG4gIFwiTWF0aGlldUdyb3VwTTExXCIsXG4gIFwiTWF0aGlldUdyb3VwTTEyXCIsXG4gIFwiTWF0aGlldUdyb3VwTTIyXCIsXG4gIFwiTWF0aGlldUdyb3VwTTIzXCIsXG4gIFwiTWF0aGlldUdyb3VwTTI0XCIsXG4gIFwiTWF0aGlldVNcIixcbiAgXCJNYXRoaWV1U1ByaW1lXCIsXG4gIFwiTWF0aE1MRm9ybVwiLFxuICBcIk1hdGhNTFRleHRcIixcbiAgXCJNYXRyaWNlc1wiLFxuICBcIk1hdHJpeEV4cFwiLFxuICBcIk1hdHJpeEZvcm1cIixcbiAgXCJNYXRyaXhGdW5jdGlvblwiLFxuICBcIk1hdHJpeExvZ1wiLFxuICBcIk1hdHJpeE5vcm1hbERpc3RyaWJ1dGlvblwiLFxuICBcIk1hdHJpeFBsb3RcIixcbiAgXCJNYXRyaXhQb3dlclwiLFxuICBcIk1hdHJpeFByb3BlcnR5RGlzdHJpYnV0aW9uXCIsXG4gIFwiTWF0cml4UVwiLFxuICBcIk1hdHJpeFJhbmtcIixcbiAgXCJNYXRyaXhURGlzdHJpYnV0aW9uXCIsXG4gIFwiTWF4XCIsXG4gIFwiTWF4QmVuZFwiLFxuICBcIk1heENlbGxNZWFzdXJlXCIsXG4gIFwiTWF4Q29sb3JEaXN0YW5jZVwiLFxuICBcIk1heERhdGVcIixcbiAgXCJNYXhEZXRlY3RcIixcbiAgXCJNYXhEaXNwbGF5ZWRDaGlsZHJlblwiLFxuICBcIk1heER1cmF0aW9uXCIsXG4gIFwiTWF4RXh0cmFCYW5kd2lkdGhzXCIsXG4gIFwiTWF4RXh0cmFDb25kaXRpb25zXCIsXG4gIFwiTWF4RmVhdHVyZURpc3BsYWNlbWVudFwiLFxuICBcIk1heEZlYXR1cmVzXCIsXG4gIFwiTWF4RmlsdGVyXCIsXG4gIFwiTWF4aW1hbEJ5XCIsXG4gIFwiTWF4aW1pemVcIixcbiAgXCJNYXhJdGVtc1wiLFxuICBcIk1heEl0ZXJhdGlvbnNcIixcbiAgXCJNYXhMaW1pdFwiLFxuICBcIk1heE1lbW9yeVVzZWRcIixcbiAgXCJNYXhNaXh0dXJlS2VybmVsc1wiLFxuICBcIk1heE92ZXJsYXBGcmFjdGlvblwiLFxuICBcIk1heFBsb3RQb2ludHNcIixcbiAgXCJNYXhQb2ludHNcIixcbiAgXCJNYXhSZWN1cnNpb25cIixcbiAgXCJNYXhTdGFibGVEaXN0cmlidXRpb25cIixcbiAgXCJNYXhTdGVwRnJhY3Rpb25cIixcbiAgXCJNYXhTdGVwc1wiLFxuICBcIk1heFN0ZXBTaXplXCIsXG4gIFwiTWF4VHJhaW5pbmdSb3VuZHNcIixcbiAgXCJNYXhWYWx1ZVwiLFxuICBcIk1heHdlbGxEaXN0cmlidXRpb25cIixcbiAgXCJNYXhXb3JkR2FwXCIsXG4gIFwiTWNMYXVnaGxpbkdyb3VwTWNMXCIsXG4gIFwiTWVhblwiLFxuICBcIk1lYW5BYnNvbHV0ZUxvc3NMYXllclwiLFxuICBcIk1lYW5Bcm91bmRcIixcbiAgXCJNZWFuQ2x1c3RlcmluZ0NvZWZmaWNpZW50XCIsXG4gIFwiTWVhbkRlZ3JlZUNvbm5lY3Rpdml0eVwiLFxuICBcIk1lYW5EZXZpYXRpb25cIixcbiAgXCJNZWFuRmlsdGVyXCIsXG4gIFwiTWVhbkdyYXBoRGlzdGFuY2VcIixcbiAgXCJNZWFuTmVpZ2hib3JEZWdyZWVcIixcbiAgXCJNZWFuUG9pbnREZW5zaXR5XCIsXG4gIFwiTWVhblNoaWZ0XCIsXG4gIFwiTWVhblNoaWZ0RmlsdGVyXCIsXG4gIFwiTWVhblNxdWFyZWRMb3NzTGF5ZXJcIixcbiAgXCJNZWRpYW5cIixcbiAgXCJNZWRpYW5EZXZpYXRpb25cIixcbiAgXCJNZWRpYW5GaWx0ZXJcIixcbiAgXCJNZWRpY2FsVGVzdERhdGFcIixcbiAgXCJNZWRpdW1cIixcbiAgXCJNZWlqZXJHXCIsXG4gIFwiTWVpamVyR1JlZHVjZVwiLFxuICBcIk1laXhuZXJEaXN0cmlidXRpb25cIixcbiAgXCJNZWxsaW5Db252b2x2ZVwiLFxuICBcIk1lbGxpblRyYW5zZm9ybVwiLFxuICBcIk1lbWJlclFcIixcbiAgXCJNZW1vcnlBdmFpbGFibGVcIixcbiAgXCJNZW1vcnlDb25zdHJhaW5lZFwiLFxuICBcIk1lbW9yeUNvbnN0cmFpbnRcIixcbiAgXCJNZW1vcnlJblVzZVwiLFxuICBcIk1lbmdlck1lc2hcIixcbiAgXCJNZW51XCIsXG4gIFwiTWVudUFwcGVhcmFuY2VcIixcbiAgXCJNZW51Q29tbWFuZEtleVwiLFxuICBcIk1lbnVFdmFsdWF0b3JcIixcbiAgXCJNZW51SXRlbVwiLFxuICBcIk1lbnVMaXN0XCIsXG4gIFwiTWVudVBhY2tldFwiLFxuICBcIk1lbnVTb3J0aW5nVmFsdWVcIixcbiAgXCJNZW51U3R5bGVcIixcbiAgXCJNZW51Vmlld1wiLFxuICBcIk1lcmdlXCIsXG4gIFwiTWVyZ2VEaWZmZXJlbmNlc1wiLFxuICBcIk1lcmdpbmdGdW5jdGlvblwiLFxuICBcIk1lcnNlbm5lUHJpbWVFeHBvbmVudFwiLFxuICBcIk1lcnNlbm5lUHJpbWVFeHBvbmVudFFcIixcbiAgXCJNZXNoXCIsXG4gIFwiTWVzaENlbGxDZW50cm9pZFwiLFxuICBcIk1lc2hDZWxsQ291bnRcIixcbiAgXCJNZXNoQ2VsbEhpZ2hsaWdodFwiLFxuICBcIk1lc2hDZWxsSW5kZXhcIixcbiAgXCJNZXNoQ2VsbExhYmVsXCIsXG4gIFwiTWVzaENlbGxNYXJrZXJcIixcbiAgXCJNZXNoQ2VsbE1lYXN1cmVcIixcbiAgXCJNZXNoQ2VsbFF1YWxpdHlcIixcbiAgXCJNZXNoQ2VsbHNcIixcbiAgXCJNZXNoQ2VsbFNoYXBlRnVuY3Rpb25cIixcbiAgXCJNZXNoQ2VsbFN0eWxlXCIsXG4gIFwiTWVzaENvbm5lY3Rpdml0eUdyYXBoXCIsXG4gIFwiTWVzaENvb3JkaW5hdGVzXCIsXG4gIFwiTWVzaEZ1bmN0aW9uc1wiLFxuICBcIk1lc2hQcmltaXRpdmVzXCIsXG4gIFwiTWVzaFF1YWxpdHlHb2FsXCIsXG4gIFwiTWVzaFJhbmdlXCIsXG4gIFwiTWVzaFJlZmluZW1lbnRGdW5jdGlvblwiLFxuICBcIk1lc2hSZWdpb25cIixcbiAgXCJNZXNoUmVnaW9uUVwiLFxuICBcIk1lc2hTaGFkaW5nXCIsXG4gIFwiTWVzaFN0eWxlXCIsXG4gIFwiTWVzc2FnZVwiLFxuICBcIk1lc3NhZ2VEaWFsb2dcIixcbiAgXCJNZXNzYWdlTGlzdFwiLFxuICBcIk1lc3NhZ2VOYW1lXCIsXG4gIFwiTWVzc2FnZU9iamVjdFwiLFxuICBcIk1lc3NhZ2VPcHRpb25zXCIsXG4gIFwiTWVzc2FnZVBhY2tldFwiLFxuICBcIk1lc3NhZ2VzXCIsXG4gIFwiTWVzc2FnZXNOb3RlYm9va1wiLFxuICBcIk1ldGFDaGFyYWN0ZXJzXCIsXG4gIFwiTWV0YUluZm9ybWF0aW9uXCIsXG4gIFwiTWV0ZW9yU2hvd2VyRGF0YVwiLFxuICBcIk1ldGhvZFwiLFxuICBcIk1ldGhvZE9wdGlvbnNcIixcbiAgXCJNZXhpY2FuSGF0V2F2ZWxldFwiLFxuICBcIk1leWVyV2F2ZWxldFwiLFxuICBcIk1pZHBvaW50XCIsXG4gIFwiTUlNRVR5cGVUb0Zvcm1hdExpc3RcIixcbiAgXCJNaW5cIixcbiAgXCJNaW5Db2xvckRpc3RhbmNlXCIsXG4gIFwiTWluRGF0ZVwiLFxuICBcIk1pbkRldGVjdFwiLFxuICBcIk1pbmVyYWxEYXRhXCIsXG4gIFwiTWluRmlsdGVyXCIsXG4gIFwiTWluaW1hbEJ5XCIsXG4gIFwiTWluaW1hbFBvbHlub21pYWxcIixcbiAgXCJNaW5pbWFsU3RhdGVTcGFjZU1vZGVsXCIsXG4gIFwiTWluaW1pemVcIixcbiAgXCJNaW5pbXVtVGltZUluY3JlbWVudFwiLFxuICBcIk1pbkludGVydmFsU2l6ZVwiLFxuICBcIk1pbmtvd3NraVF1ZXN0aW9uTWFya1wiLFxuICBcIk1pbkxpbWl0XCIsXG4gIFwiTWluTWF4XCIsXG4gIFwiTWlub3JQbGFuZXREYXRhXCIsXG4gIFwiTWlub3JzXCIsXG4gIFwiTWluUG9pbnRTZXBhcmF0aW9uXCIsXG4gIFwiTWluUmVjdXJzaW9uXCIsXG4gIFwiTWluU2l6ZVwiLFxuICBcIk1pblN0YWJsZURpc3RyaWJ1dGlvblwiLFxuICBcIk1pbnVzXCIsXG4gIFwiTWludXNQbHVzXCIsXG4gIFwiTWluVmFsdWVcIixcbiAgXCJNaXNzaW5nXCIsXG4gIFwiTWlzc2luZ0JlaGF2aW9yXCIsXG4gIFwiTWlzc2luZ0RhdGFNZXRob2RcIixcbiAgXCJNaXNzaW5nRGF0YVJ1bGVzXCIsXG4gIFwiTWlzc2luZ1FcIixcbiAgXCJNaXNzaW5nU3RyaW5nXCIsXG4gIFwiTWlzc2luZ1N0eWxlXCIsXG4gIFwiTWlzc2luZ1ZhbHVlUGF0dGVyblwiLFxuICBcIk1pc3NpbmdWYWx1ZVN5bnRoZXNpc1wiLFxuICBcIk1pdHRhZ0xlZmZsZXJFXCIsXG4gIFwiTWl4ZWRGcmFjdGlvblBhcnRzXCIsXG4gIFwiTWl4ZWRHcmFwaFFcIixcbiAgXCJNaXhlZE1hZ25pdHVkZVwiLFxuICBcIk1peGVkUmFkaXhcIixcbiAgXCJNaXhlZFJhZGl4UXVhbnRpdHlcIixcbiAgXCJNaXhlZFVuaXRcIixcbiAgXCJNaXh0dXJlRGlzdHJpYnV0aW9uXCIsXG4gIFwiTW9kXCIsXG4gIFwiTW9kYWxcIixcbiAgXCJNb2RlXCIsXG4gIFwiTW9kZWxQcmVkaWN0aXZlQ29udHJvbGxlclwiLFxuICBcIk1vZHVsYXJcIixcbiAgXCJNb2R1bGFySW52ZXJzZVwiLFxuICBcIk1vZHVsYXJMYW1iZGFcIixcbiAgXCJNb2R1bGVcIixcbiAgXCJNb2R1bHVzXCIsXG4gIFwiTW9lYml1c011XCIsXG4gIFwiTW9sZWN1bGVcIixcbiAgXCJNb2xlY3VsZUFsaWduXCIsXG4gIFwiTW9sZWN1bGVDb250YWluc1FcIixcbiAgXCJNb2xlY3VsZURyYXdcIixcbiAgXCJNb2xlY3VsZUVxdWl2YWxlbnRRXCIsXG4gIFwiTW9sZWN1bGVGcmVlUVwiLFxuICBcIk1vbGVjdWxlR3JhcGhcIixcbiAgXCJNb2xlY3VsZU1hdGNoUVwiLFxuICBcIk1vbGVjdWxlTWF4aW11bUNvbW1vblN1YnN0cnVjdHVyZVwiLFxuICBcIk1vbGVjdWxlTW9kaWZ5XCIsXG4gIFwiTW9sZWN1bGVOYW1lXCIsXG4gIFwiTW9sZWN1bGVQYXR0ZXJuXCIsXG4gIFwiTW9sZWN1bGVQbG90XCIsXG4gIFwiTW9sZWN1bGVQbG90M0RcIixcbiAgXCJNb2xlY3VsZVByb3BlcnR5XCIsXG4gIFwiTW9sZWN1bGVRXCIsXG4gIFwiTW9sZWN1bGVSZWNvZ25pemVcIixcbiAgXCJNb2xlY3VsZVN1YnN0cnVjdHVyZUNvdW50XCIsXG4gIFwiTW9sZWN1bGVWYWx1ZVwiLFxuICBcIk1vbWVudFwiLFxuICBcIk1vbWVudENvbnZlcnRcIixcbiAgXCJNb21lbnRFdmFsdWF0ZVwiLFxuICBcIk1vbWVudEdlbmVyYXRpbmdGdW5jdGlvblwiLFxuICBcIk1vbWVudE9mSW5lcnRpYVwiLFxuICBcIk1vbmRheVwiLFxuICBcIk1vbml0b3JcIixcbiAgXCJNb25vbWlhbExpc3RcIixcbiAgXCJNb25vbWlhbE9yZGVyXCIsXG4gIFwiTW9uc3Rlckdyb3VwTVwiLFxuICBcIk1vb25QaGFzZVwiLFxuICBcIk1vb25Qb3NpdGlvblwiLFxuICBcIk1vcmxldFdhdmVsZXRcIixcbiAgXCJNb3JwaG9sb2dpY2FsQmluYXJpemVcIixcbiAgXCJNb3JwaG9sb2dpY2FsQnJhbmNoUG9pbnRzXCIsXG4gIFwiTW9ycGhvbG9naWNhbENvbXBvbmVudHNcIixcbiAgXCJNb3JwaG9sb2dpY2FsRXVsZXJOdW1iZXJcIixcbiAgXCJNb3JwaG9sb2dpY2FsR3JhcGhcIixcbiAgXCJNb3JwaG9sb2dpY2FsUGVyaW1ldGVyXCIsXG4gIFwiTW9ycGhvbG9naWNhbFRyYW5zZm9ybVwiLFxuICBcIk1vcnRhbGl0eURhdGFcIixcbiAgXCJNb3N0XCIsXG4gIFwiTW91bnRhaW5EYXRhXCIsXG4gIFwiTW91c2VBbm5vdGF0aW9uXCIsXG4gIFwiTW91c2VBcHBlYXJhbmNlXCIsXG4gIFwiTW91c2VBcHBlYXJhbmNlVGFnXCIsXG4gIFwiTW91c2VCdXR0b25zXCIsXG4gIFwiTW91c2VvdmVyXCIsXG4gIFwiTW91c2VQb2ludGVyTm90ZVwiLFxuICBcIk1vdXNlUG9zaXRpb25cIixcbiAgXCJNb3ZpZURhdGFcIixcbiAgXCJNb3ZpbmdBdmVyYWdlXCIsXG4gIFwiTW92aW5nTWFwXCIsXG4gIFwiTW92aW5nTWVkaWFuXCIsXG4gIFwiTW95YWxEaXN0cmlidXRpb25cIixcbiAgXCJNdWx0aWF4aXNBcnJhbmdlbWVudFwiLFxuICBcIk11bHRpY29sdW1uXCIsXG4gIFwiTXVsdGllZGdlU3R5bGVcIixcbiAgXCJNdWx0aWdyYXBoUVwiLFxuICBcIk11bHRpbGF1bmNoV2FybmluZ1wiLFxuICBcIk11bHRpTGV0dGVySXRhbGljc1wiLFxuICBcIk11bHRpTGV0dGVyU3R5bGVcIixcbiAgXCJNdWx0aWxpbmVGdW5jdGlvblwiLFxuICBcIk11bHRpbm9taWFsXCIsXG4gIFwiTXVsdGlub21pYWxEaXN0cmlidXRpb25cIixcbiAgXCJNdWx0aW5vcm1hbERpc3RyaWJ1dGlvblwiLFxuICBcIk11bHRpcGxpY2F0aXZlT3JkZXJcIixcbiAgXCJNdWx0aXBsaWNpdHlcIixcbiAgXCJNdWx0aXBseVNpZGVzXCIsXG4gIFwiTXVsdGlzY3JpcHRCb3hPcHRpb25zXCIsXG4gIFwiTXVsdGlzZWxlY3Rpb25cIixcbiAgXCJNdWx0aXZhcmlhdGVIeXBlcmdlb21ldHJpY0Rpc3RyaWJ1dGlvblwiLFxuICBcIk11bHRpdmFyaWF0ZVBvaXNzb25EaXN0cmlidXRpb25cIixcbiAgXCJNdWx0aXZhcmlhdGVURGlzdHJpYnV0aW9uXCIsXG4gIFwiTlwiLFxuICBcIk5ha2FnYW1pRGlzdHJpYnV0aW9uXCIsXG4gIFwiTmFtZVFcIixcbiAgXCJOYW1lc1wiLFxuICBcIk5hbWVzcGFjZUJveFwiLFxuICBcIk5hbWVzcGFjZUJveE9wdGlvbnNcIixcbiAgXCJOYW5kXCIsXG4gIFwiTkFyZ01heFwiLFxuICBcIk5BcmdNaW5cIixcbiAgXCJOQmVybm91bGxpQlwiLFxuICBcIk5Cb2R5U2ltdWxhdGlvblwiLFxuICBcIk5Cb2R5U2ltdWxhdGlvbkRhdGFcIixcbiAgXCJOQ2FjaGVcIixcbiAgXCJOQ2FwdXRvRFwiLFxuICBcIk5ERWlnZW5zeXN0ZW1cIixcbiAgXCJOREVpZ2VudmFsdWVzXCIsXG4gIFwiTkRTb2x2ZVwiLFxuICBcIk5EU29sdmVWYWx1ZVwiLFxuICBcIk5lYXJlc3RcIixcbiAgXCJOZWFyZXN0RnVuY3Rpb25cIixcbiAgXCJOZWFyZXN0TWVzaENlbGxzXCIsXG4gIFwiTmVhcmVzdE5laWdoYm9yR1wiLFxuICBcIk5lYXJlc3ROZWlnaGJvckdyYXBoXCIsXG4gIFwiTmVhcmVzdFRvXCIsXG4gIFwiTmVidWxhRGF0YVwiLFxuICBcIk5lZWRsZW1hbld1bnNjaFNpbWlsYXJpdHlcIixcbiAgXCJOZWVkc1wiLFxuICBcIk5lZ2F0aXZlXCIsXG4gIFwiTmVnYXRpdmVCaW5vbWlhbERpc3RyaWJ1dGlvblwiLFxuICBcIk5lZ2F0aXZlRGVmaW5pdGVNYXRyaXhRXCIsXG4gIFwiTmVnYXRpdmVJbnRlZ2Vyc1wiLFxuICBcIk5lZ2F0aXZlbHlPcmllbnRlZFBvaW50c1wiLFxuICBcIk5lZ2F0aXZlTXVsdGlub21pYWxEaXN0cmlidXRpb25cIixcbiAgXCJOZWdhdGl2ZVJhdGlvbmFsc1wiLFxuICBcIk5lZ2F0aXZlUmVhbHNcIixcbiAgXCJOZWdhdGl2ZVNlbWlkZWZpbml0ZU1hdHJpeFFcIixcbiAgXCJOZWlnaGJvcmhvb2REYXRhXCIsXG4gIFwiTmVpZ2hib3Job29kR3JhcGhcIixcbiAgXCJOZXN0XCIsXG4gIFwiTmVzdGVkR3JlYXRlckdyZWF0ZXJcIixcbiAgXCJOZXN0ZWRMZXNzTGVzc1wiLFxuICBcIk5lc3RlZFNjcmlwdFJ1bGVzXCIsXG4gIFwiTmVzdEdyYXBoXCIsXG4gIFwiTmVzdExpc3RcIixcbiAgXCJOZXN0VHJlZVwiLFxuICBcIk5lc3RXaGlsZVwiLFxuICBcIk5lc3RXaGlsZUxpc3RcIixcbiAgXCJOZXRBcHBlbmRcIixcbiAgXCJOZXRBcnJheVwiLFxuICBcIk5ldEFycmF5TGF5ZXJcIixcbiAgXCJOZXRCaWRpcmVjdGlvbmFsT3BlcmF0b3JcIixcbiAgXCJOZXRDaGFpblwiLFxuICBcIk5ldERlY29kZXJcIixcbiAgXCJOZXREZWxldGVcIixcbiAgXCJOZXREcm9wXCIsXG4gIFwiTmV0RW5jb2RlclwiLFxuICBcIk5ldEV2YWx1YXRpb25Nb2RlXCIsXG4gIFwiTmV0RXh0ZXJuYWxPYmplY3RcIixcbiAgXCJOZXRFeHRyYWN0XCIsXG4gIFwiTmV0RmxhdHRlblwiLFxuICBcIk5ldEZvbGRPcGVyYXRvclwiLFxuICBcIk5ldEdBTk9wZXJhdG9yXCIsXG4gIFwiTmV0R3JhcGhcIixcbiAgXCJOZXRJbmZvcm1hdGlvblwiLFxuICBcIk5ldEluaXRpYWxpemVcIixcbiAgXCJOZXRJbnNlcnRcIixcbiAgXCJOZXRJbnNlcnRTaGFyZWRBcnJheXNcIixcbiAgXCJOZXRKb2luXCIsXG4gIFwiTmV0TWFwT3BlcmF0b3JcIixcbiAgXCJOZXRNYXBUaHJlYWRPcGVyYXRvclwiLFxuICBcIk5ldE1lYXN1cmVtZW50c1wiLFxuICBcIk5ldE1vZGVsXCIsXG4gIFwiTmV0TmVzdE9wZXJhdG9yXCIsXG4gIFwiTmV0UGFpckVtYmVkZGluZ09wZXJhdG9yXCIsXG4gIFwiTmV0UG9ydFwiLFxuICBcIk5ldFBvcnRHcmFkaWVudFwiLFxuICBcIk5ldFByZXBlbmRcIixcbiAgXCJOZXRSZW5hbWVcIixcbiAgXCJOZXRSZXBsYWNlXCIsXG4gIFwiTmV0UmVwbGFjZVBhcnRcIixcbiAgXCJOZXRTaGFyZWRBcnJheVwiLFxuICBcIk5ldFN0YXRlT2JqZWN0XCIsXG4gIFwiTmV0VGFrZVwiLFxuICBcIk5ldFRyYWluXCIsXG4gIFwiTmV0VHJhaW5SZXN1bHRzT2JqZWN0XCIsXG4gIFwiTmV0VW5mb2xkXCIsXG4gIFwiTmV0d29ya1BhY2tldENhcHR1cmVcIixcbiAgXCJOZXR3b3JrUGFja2V0UmVjb3JkaW5nXCIsXG4gIFwiTmV0d29ya1BhY2tldFJlY29yZGluZ0R1cmluZ1wiLFxuICBcIk5ldHdvcmtQYWNrZXRUcmFjZVwiLFxuICBcIk5ldW1hbm5WYWx1ZVwiLFxuICBcIk5ldmlsbGVUaGV0YUNcIixcbiAgXCJOZXZpbGxlVGhldGFEXCIsXG4gIFwiTmV2aWxsZVRoZXRhTlwiLFxuICBcIk5ldmlsbGVUaGV0YVNcIixcbiAgXCJOZXdQcmltaXRpdmVTdHlsZVwiLFxuICBcIk5FeHBlY3RhdGlvblwiLFxuICBcIk5leHRcIixcbiAgXCJOZXh0Q2VsbFwiLFxuICBcIk5leHREYXRlXCIsXG4gIFwiTmV4dFByaW1lXCIsXG4gIFwiTmV4dFNjaGVkdWxlZFRhc2tUaW1lXCIsXG4gIFwiTmV5bWFuU2NvdHRQb2ludFByb2Nlc3NcIixcbiAgXCJORnJhY3Rpb25hbERcIixcbiAgXCJOSG9sZEFsbFwiLFxuICBcIk5Ib2xkRmlyc3RcIixcbiAgXCJOSG9sZFJlc3RcIixcbiAgXCJOaWNob2xzR3JpZExpbmVzXCIsXG4gIFwiTmljaG9sc1Bsb3RcIixcbiAgXCJOaWdodEhlbWlzcGhlcmVcIixcbiAgXCJOSW50ZWdyYXRlXCIsXG4gIFwiTk1heGltaXplXCIsXG4gIFwiTk1heFZhbHVlXCIsXG4gIFwiTk1pbmltaXplXCIsXG4gIFwiTk1pblZhbHVlXCIsXG4gIFwiTm9taW5hbFNjYWxlXCIsXG4gIFwiTm9taW5hbFZhcmlhYmxlc1wiLFxuICBcIk5vbkFzc29jaWF0aXZlXCIsXG4gIFwiTm9uY2VudHJhbEJldGFEaXN0cmlidXRpb25cIixcbiAgXCJOb25jZW50cmFsQ2hpU3F1YXJlRGlzdHJpYnV0aW9uXCIsXG4gIFwiTm9uY2VudHJhbEZSYXRpb0Rpc3RyaWJ1dGlvblwiLFxuICBcIk5vbmNlbnRyYWxTdHVkZW50VERpc3RyaWJ1dGlvblwiLFxuICBcIk5vbkNvbW11dGF0aXZlTXVsdGlwbHlcIixcbiAgXCJOb25Db25zdGFudHNcIixcbiAgXCJOb25kaW1lbnNpb25hbGl6YXRpb25UcmFuc2Zvcm1cIixcbiAgXCJOb25lXCIsXG4gIFwiTm9uZVRydWVcIixcbiAgXCJOb25saW5lYXJNb2RlbEZpdFwiLFxuICBcIk5vbmxpbmVhclN0YXRlU3BhY2VNb2RlbFwiLFxuICBcIk5vbmxvY2FsTWVhbnNGaWx0ZXJcIixcbiAgXCJOb25OZWdhdGl2ZVwiLFxuICBcIk5vbk5lZ2F0aXZlSW50ZWdlcnNcIixcbiAgXCJOb25OZWdhdGl2ZVJhdGlvbmFsc1wiLFxuICBcIk5vbk5lZ2F0aXZlUmVhbHNcIixcbiAgXCJOb25Qb3NpdGl2ZVwiLFxuICBcIk5vblBvc2l0aXZlSW50ZWdlcnNcIixcbiAgXCJOb25Qb3NpdGl2ZVJhdGlvbmFsc1wiLFxuICBcIk5vblBvc2l0aXZlUmVhbHNcIixcbiAgXCJOb3JcIixcbiAgXCJOb3JsdW5kQlwiLFxuICBcIk5vcm1cIixcbiAgXCJOb3JtYWxcIixcbiAgXCJOb3JtYWxEaXN0cmlidXRpb25cIixcbiAgXCJOb3JtYWxHcm91cGluZ1wiLFxuICBcIk5vcm1hbGl6YXRpb25MYXllclwiLFxuICBcIk5vcm1hbGl6ZVwiLFxuICBcIk5vcm1hbGl6ZWRcIixcbiAgXCJOb3JtYWxpemVkU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlXCIsXG4gIFwiTm9ybWFsTWF0cml4UVwiLFxuICBcIk5vcm1hbHNGdW5jdGlvblwiLFxuICBcIk5vcm1GdW5jdGlvblwiLFxuICBcIk5vdFwiLFxuICBcIk5vdENvbmdydWVudFwiLFxuICBcIk5vdEN1cENhcFwiLFxuICBcIk5vdERvdWJsZVZlcnRpY2FsQmFyXCIsXG4gIFwiTm90ZWJvb2tcIixcbiAgXCJOb3RlYm9va0FwcGx5XCIsXG4gIFwiTm90ZWJvb2tBdXRvU2F2ZVwiLFxuICBcIk5vdGVib29rQnJvd3NlRGlyZWN0b3J5XCIsXG4gIFwiTm90ZWJvb2tDbG9zZVwiLFxuICBcIk5vdGVib29rQ29udmVydFNldHRpbmdzXCIsXG4gIFwiTm90ZWJvb2tDcmVhdGVcIixcbiAgXCJOb3RlYm9va0RlZmF1bHRcIixcbiAgXCJOb3RlYm9va0RlbGV0ZVwiLFxuICBcIk5vdGVib29rRGlyZWN0b3J5XCIsXG4gIFwiTm90ZWJvb2tEeW5hbWljRXhwcmVzc2lvblwiLFxuICBcIk5vdGVib29rRXZhbHVhdGVcIixcbiAgXCJOb3RlYm9va0V2ZW50QWN0aW9uc1wiLFxuICBcIk5vdGVib29rRmlsZU5hbWVcIixcbiAgXCJOb3RlYm9va0ZpbmRcIixcbiAgXCJOb3RlYm9va0dldFwiLFxuICBcIk5vdGVib29rSW1wb3J0XCIsXG4gIFwiTm90ZWJvb2tJbmZvcm1hdGlvblwiLFxuICBcIk5vdGVib29rSW50ZXJmYWNlT2JqZWN0XCIsXG4gIFwiTm90ZWJvb2tMb2NhdGVcIixcbiAgXCJOb3RlYm9va09iamVjdFwiLFxuICBcIk5vdGVib29rT3BlblwiLFxuICBcIk5vdGVib29rUGF0aFwiLFxuICBcIk5vdGVib29rUHJpbnRcIixcbiAgXCJOb3RlYm9va1B1dFwiLFxuICBcIk5vdGVib29rUmVhZFwiLFxuICBcIk5vdGVib29rc1wiLFxuICBcIk5vdGVib29rU2F2ZVwiLFxuICBcIk5vdGVib29rU2VsZWN0aW9uXCIsXG4gIFwiTm90ZWJvb2tzTWVudVwiLFxuICBcIk5vdGVib29rVGVtcGxhdGVcIixcbiAgXCJOb3RlYm9va1dyaXRlXCIsXG4gIFwiTm90RWxlbWVudFwiLFxuICBcIk5vdEVxdWFsVGlsZGVcIixcbiAgXCJOb3RFeGlzdHNcIixcbiAgXCJOb3RHcmVhdGVyXCIsXG4gIFwiTm90R3JlYXRlckVxdWFsXCIsXG4gIFwiTm90R3JlYXRlckZ1bGxFcXVhbFwiLFxuICBcIk5vdEdyZWF0ZXJHcmVhdGVyXCIsXG4gIFwiTm90R3JlYXRlckxlc3NcIixcbiAgXCJOb3RHcmVhdGVyU2xhbnRFcXVhbFwiLFxuICBcIk5vdEdyZWF0ZXJUaWxkZVwiLFxuICBcIk5vdGhpbmdcIixcbiAgXCJOb3RIdW1wRG93bkh1bXBcIixcbiAgXCJOb3RIdW1wRXF1YWxcIixcbiAgXCJOb3RpZmljYXRpb25GdW5jdGlvblwiLFxuICBcIk5vdExlZnRUcmlhbmdsZVwiLFxuICBcIk5vdExlZnRUcmlhbmdsZUJhclwiLFxuICBcIk5vdExlZnRUcmlhbmdsZUVxdWFsXCIsXG4gIFwiTm90TGVzc1wiLFxuICBcIk5vdExlc3NFcXVhbFwiLFxuICBcIk5vdExlc3NGdWxsRXF1YWxcIixcbiAgXCJOb3RMZXNzR3JlYXRlclwiLFxuICBcIk5vdExlc3NMZXNzXCIsXG4gIFwiTm90TGVzc1NsYW50RXF1YWxcIixcbiAgXCJOb3RMZXNzVGlsZGVcIixcbiAgXCJOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlclwiLFxuICBcIk5vdE5lc3RlZExlc3NMZXNzXCIsXG4gIFwiTm90UHJlY2VkZXNcIixcbiAgXCJOb3RQcmVjZWRlc0VxdWFsXCIsXG4gIFwiTm90UHJlY2VkZXNTbGFudEVxdWFsXCIsXG4gIFwiTm90UHJlY2VkZXNUaWxkZVwiLFxuICBcIk5vdFJldmVyc2VFbGVtZW50XCIsXG4gIFwiTm90UmlnaHRUcmlhbmdsZVwiLFxuICBcIk5vdFJpZ2h0VHJpYW5nbGVCYXJcIixcbiAgXCJOb3RSaWdodFRyaWFuZ2xlRXF1YWxcIixcbiAgXCJOb3RTcXVhcmVTdWJzZXRcIixcbiAgXCJOb3RTcXVhcmVTdWJzZXRFcXVhbFwiLFxuICBcIk5vdFNxdWFyZVN1cGVyc2V0XCIsXG4gIFwiTm90U3F1YXJlU3VwZXJzZXRFcXVhbFwiLFxuICBcIk5vdFN1YnNldFwiLFxuICBcIk5vdFN1YnNldEVxdWFsXCIsXG4gIFwiTm90U3VjY2VlZHNcIixcbiAgXCJOb3RTdWNjZWVkc0VxdWFsXCIsXG4gIFwiTm90U3VjY2VlZHNTbGFudEVxdWFsXCIsXG4gIFwiTm90U3VjY2VlZHNUaWxkZVwiLFxuICBcIk5vdFN1cGVyc2V0XCIsXG4gIFwiTm90U3VwZXJzZXRFcXVhbFwiLFxuICBcIk5vdFRpbGRlXCIsXG4gIFwiTm90VGlsZGVFcXVhbFwiLFxuICBcIk5vdFRpbGRlRnVsbEVxdWFsXCIsXG4gIFwiTm90VGlsZGVUaWxkZVwiLFxuICBcIk5vdFZlcnRpY2FsQmFyXCIsXG4gIFwiTm93XCIsXG4gIFwiTm9XaGl0ZXNwYWNlXCIsXG4gIFwiTlByb2JhYmlsaXR5XCIsXG4gIFwiTlByb2R1Y3RcIixcbiAgXCJOUHJvZHVjdEZhY3RvcnNcIixcbiAgXCJOUm9vdHNcIixcbiAgXCJOU29sdmVcIixcbiAgXCJOU29sdmVWYWx1ZXNcIixcbiAgXCJOU3VtXCIsXG4gIFwiTlN1bVRlcm1zXCIsXG4gIFwiTnVjbGVhckV4cGxvc2lvbkRhdGFcIixcbiAgXCJOdWNsZWFyUmVhY3RvckRhdGFcIixcbiAgXCJOdWxsXCIsXG4gIFwiTnVsbFJlY29yZHNcIixcbiAgXCJOdWxsU3BhY2VcIixcbiAgXCJOdWxsV29yZHNcIixcbiAgXCJOdW1iZXJcIixcbiAgXCJOdW1iZXJDb21wb3NlXCIsXG4gIFwiTnVtYmVyRGVjb21wb3NlXCIsXG4gIFwiTnVtYmVyRGlnaXRcIixcbiAgXCJOdW1iZXJFeHBhbmRcIixcbiAgXCJOdW1iZXJGaWVsZENsYXNzTnVtYmVyXCIsXG4gIFwiTnVtYmVyRmllbGREaXNjcmltaW5hbnRcIixcbiAgXCJOdW1iZXJGaWVsZEZ1bmRhbWVudGFsVW5pdHNcIixcbiAgXCJOdW1iZXJGaWVsZEludGVncmFsQmFzaXNcIixcbiAgXCJOdW1iZXJGaWVsZE5vcm1SZXByZXNlbnRhdGl2ZXNcIixcbiAgXCJOdW1iZXJGaWVsZFJlZ3VsYXRvclwiLFxuICBcIk51bWJlckZpZWxkUm9vdHNPZlVuaXR5XCIsXG4gIFwiTnVtYmVyRmllbGRTaWduYXR1cmVcIixcbiAgXCJOdW1iZXJGb3JtXCIsXG4gIFwiTnVtYmVyRm9ybWF0XCIsXG4gIFwiTnVtYmVyTGluZVBsb3RcIixcbiAgXCJOdW1iZXJNYXJrc1wiLFxuICBcIk51bWJlck11bHRpcGxpZXJcIixcbiAgXCJOdW1iZXJQYWRkaW5nXCIsXG4gIFwiTnVtYmVyUG9pbnRcIixcbiAgXCJOdW1iZXJRXCIsXG4gIFwiTnVtYmVyU2VwYXJhdG9yXCIsXG4gIFwiTnVtYmVyU2lnbnNcIixcbiAgXCJOdW1iZXJTdHJpbmdcIixcbiAgXCJOdW1lcmF0b3JcIixcbiAgXCJOdW1lcmF0b3JEZW5vbWluYXRvclwiLFxuICBcIk51bWVyaWNhbE9yZGVyXCIsXG4gIFwiTnVtZXJpY2FsU29ydFwiLFxuICBcIk51bWVyaWNBcnJheVwiLFxuICBcIk51bWVyaWNBcnJheVFcIixcbiAgXCJOdW1lcmljQXJyYXlUeXBlXCIsXG4gIFwiTnVtZXJpY0Z1bmN0aW9uXCIsXG4gIFwiTnVtZXJpY1FcIixcbiAgXCJOdXR0YWxsV2luZG93XCIsXG4gIFwiTlZhbHVlc1wiLFxuICBcIk55cXVpc3RHcmlkTGluZXNcIixcbiAgXCJOeXF1aXN0UGxvdFwiLFxuICBcIk9cIixcbiAgXCJPYmplY3RFeGlzdHNRXCIsXG4gIFwiT2JzZXJ2YWJpbGl0eUdyYW1pYW5cIixcbiAgXCJPYnNlcnZhYmlsaXR5TWF0cml4XCIsXG4gIFwiT2JzZXJ2YWJsZURlY29tcG9zaXRpb25cIixcbiAgXCJPYnNlcnZhYmxlTW9kZWxRXCIsXG4gIFwiT2NlYW5EYXRhXCIsXG4gIFwiT2N0YWhlZHJvblwiLFxuICBcIk9kZFFcIixcbiAgXCJPZmZcIixcbiAgXCJPZmZzZXRcIixcbiAgXCJPTEVEYXRhXCIsXG4gIFwiT25cIixcbiAgXCJPTmFuR3JvdXBPTlwiLFxuICBcIk9uY2VcIixcbiAgXCJPbmVJZGVudGl0eVwiLFxuICBcIk9wYWNpdHlcIixcbiAgXCJPcGFjaXR5RnVuY3Rpb25cIixcbiAgXCJPcGFjaXR5RnVuY3Rpb25TY2FsaW5nXCIsXG4gIFwiT3BlblwiLFxuICBcIk9wZW5BcHBlbmRcIixcbiAgXCJPcGVuZXJcIixcbiAgXCJPcGVuZXJCb3hcIixcbiAgXCJPcGVuZXJCb3hPcHRpb25zXCIsXG4gIFwiT3BlbmVyVmlld1wiLFxuICBcIk9wZW5GdW5jdGlvbkluc3BlY3RvclBhY2tldFwiLFxuICBcIk9wZW5pbmdcIixcbiAgXCJPcGVuUmVhZFwiLFxuICBcIk9wZW5TcGVjaWFsT3B0aW9uc1wiLFxuICBcIk9wZW5UZW1wb3JhcnlcIixcbiAgXCJPcGVuV3JpdGVcIixcbiAgXCJPcGVyYXRlXCIsXG4gIFwiT3BlcmF0aW5nU3lzdGVtXCIsXG4gIFwiT3BlcmF0b3JBcHBsaWVkXCIsXG4gIFwiT3B0aW11bUZsb3dEYXRhXCIsXG4gIFwiT3B0aW9uYWxcIixcbiAgXCJPcHRpb25hbEVsZW1lbnRcIixcbiAgXCJPcHRpb25JbnNwZWN0b3JTZXR0aW5nc1wiLFxuICBcIk9wdGlvblFcIixcbiAgXCJPcHRpb25zXCIsXG4gIFwiT3B0aW9uc1BhY2tldFwiLFxuICBcIk9wdGlvbnNQYXR0ZXJuXCIsXG4gIFwiT3B0aW9uVmFsdWVcIixcbiAgXCJPcHRpb25WYWx1ZUJveFwiLFxuICBcIk9wdGlvblZhbHVlQm94T3B0aW9uc1wiLFxuICBcIk9yXCIsXG4gIFwiT3JhbmdlXCIsXG4gIFwiT3JkZXJcIixcbiAgXCJPcmRlckRpc3RyaWJ1dGlvblwiLFxuICBcIk9yZGVyZWRRXCIsXG4gIFwiT3JkZXJpbmdcIixcbiAgXCJPcmRlcmluZ0J5XCIsXG4gIFwiT3JkZXJpbmdMYXllclwiLFxuICBcIk9yZGVybGVzc1wiLFxuICBcIk9yZGVybGVzc1BhdHRlcm5TZXF1ZW5jZVwiLFxuICBcIk9yZGluYWxTY2FsZVwiLFxuICBcIk9ybnN0ZWluVWhsZW5iZWNrUHJvY2Vzc1wiLFxuICBcIk9ydGhvZ29uYWxpemVcIixcbiAgXCJPcnRob2dvbmFsTWF0cml4UVwiLFxuICBcIk91dFwiLFxuICBcIk91dGVyXCIsXG4gIFwiT3V0ZXJQb2x5Z29uXCIsXG4gIFwiT3V0ZXJQb2x5aGVkcm9uXCIsXG4gIFwiT3V0cHV0QXV0b092ZXJ3cml0ZVwiLFxuICBcIk91dHB1dENvbnRyb2xsYWJpbGl0eU1hdHJpeFwiLFxuICBcIk91dHB1dENvbnRyb2xsYWJsZU1vZGVsUVwiLFxuICBcIk91dHB1dEZvcm1cIixcbiAgXCJPdXRwdXRGb3JtRGF0YVwiLFxuICBcIk91dHB1dEdyb3VwaW5nXCIsXG4gIFwiT3V0cHV0TWF0aEVkaXRFeHByZXNzaW9uXCIsXG4gIFwiT3V0cHV0TmFtZVBhY2tldFwiLFxuICBcIk91dHB1dFBvcnRzXCIsXG4gIFwiT3V0cHV0UmVzcG9uc2VcIixcbiAgXCJPdXRwdXRTaXplTGltaXRcIixcbiAgXCJPdXRwdXRTdHJlYW1cIixcbiAgXCJPdmVyXCIsXG4gIFwiT3ZlckJhclwiLFxuICBcIk92ZXJEb3RcIixcbiAgXCJPdmVyZmxvd1wiLFxuICBcIk92ZXJIYXRcIixcbiAgXCJPdmVybGFwc1wiLFxuICBcIk92ZXJsYXlcIixcbiAgXCJPdmVybGF5Qm94XCIsXG4gIFwiT3ZlcmxheUJveE9wdGlvbnNcIixcbiAgXCJPdmVybGF5VmlkZW9cIixcbiAgXCJPdmVyc2NyaXB0XCIsXG4gIFwiT3ZlcnNjcmlwdEJveFwiLFxuICBcIk92ZXJzY3JpcHRCb3hPcHRpb25zXCIsXG4gIFwiT3ZlclRpbGRlXCIsXG4gIFwiT3ZlclZlY3RvclwiLFxuICBcIk92ZXJ3cml0ZVRhcmdldFwiLFxuICBcIk93ZW5UXCIsXG4gIFwiT3duVmFsdWVzXCIsXG4gIFwiUGFja2FnZVwiLFxuICBcIlBhY2tpbmdNZXRob2RcIixcbiAgXCJQYWNrUGFjbGV0XCIsXG4gIFwiUGFjbGV0RGF0YVJlYnVpbGRcIixcbiAgXCJQYWNsZXREaXJlY3RvcnlBZGRcIixcbiAgXCJQYWNsZXREaXJlY3RvcnlMb2FkXCIsXG4gIFwiUGFjbGV0RGlyZWN0b3J5UmVtb3ZlXCIsXG4gIFwiUGFjbGV0RGlyZWN0b3J5VW5sb2FkXCIsXG4gIFwiUGFjbGV0RGlzYWJsZVwiLFxuICBcIlBhY2xldEVuYWJsZVwiLFxuICBcIlBhY2xldEZpbmRcIixcbiAgXCJQYWNsZXRGaW5kUmVtb3RlXCIsXG4gIFwiUGFjbGV0SW5mb3JtYXRpb25cIixcbiAgXCJQYWNsZXRJbnN0YWxsXCIsXG4gIFwiUGFjbGV0SW5zdGFsbFN1Ym1pdFwiLFxuICBcIlBhY2xldE5ld2VyUVwiLFxuICBcIlBhY2xldE9iamVjdFwiLFxuICBcIlBhY2xldE9iamVjdFFcIixcbiAgXCJQYWNsZXRTaXRlXCIsXG4gIFwiUGFjbGV0U2l0ZU9iamVjdFwiLFxuICBcIlBhY2xldFNpdGVSZWdpc3RlclwiLFxuICBcIlBhY2xldFNpdGVzXCIsXG4gIFwiUGFjbGV0U2l0ZVVucmVnaXN0ZXJcIixcbiAgXCJQYWNsZXRTaXRlVXBkYXRlXCIsXG4gIFwiUGFjbGV0U3ltYm9sXCIsXG4gIFwiUGFjbGV0VW5pbnN0YWxsXCIsXG4gIFwiUGFjbGV0VXBkYXRlXCIsXG4gIFwiUGFkZGVkRm9ybVwiLFxuICBcIlBhZGRpbmdcIixcbiAgXCJQYWRkaW5nTGF5ZXJcIixcbiAgXCJQYWRkaW5nU2l6ZVwiLFxuICBcIlBhZGVBcHByb3hpbWFudFwiLFxuICBcIlBhZExlZnRcIixcbiAgXCJQYWRSaWdodFwiLFxuICBcIlBhZ2VCcmVha0Fib3ZlXCIsXG4gIFwiUGFnZUJyZWFrQmVsb3dcIixcbiAgXCJQYWdlQnJlYWtXaXRoaW5cIixcbiAgXCJQYWdlRm9vdGVyTGluZXNcIixcbiAgXCJQYWdlRm9vdGVyc1wiLFxuICBcIlBhZ2VIZWFkZXJMaW5lc1wiLFxuICBcIlBhZ2VIZWFkZXJzXCIsXG4gIFwiUGFnZUhlaWdodFwiLFxuICBcIlBhZ2VSYW5rQ2VudHJhbGl0eVwiLFxuICBcIlBhZ2VUaGVtZVwiLFxuICBcIlBhZ2VXaWR0aFwiLFxuICBcIlBhZ2luYXRpb25cIixcbiAgXCJQYWlyQ29ycmVsYXRpb25HXCIsXG4gIFwiUGFpcmVkQmFyQ2hhcnRcIixcbiAgXCJQYWlyZWRIaXN0b2dyYW1cIixcbiAgXCJQYWlyZWRTbW9vdGhIaXN0b2dyYW1cIixcbiAgXCJQYWlyZWRUVGVzdFwiLFxuICBcIlBhaXJlZFpUZXN0XCIsXG4gIFwiUGFsZXR0ZU5vdGVib29rXCIsXG4gIFwiUGFsZXR0ZVBhdGhcIixcbiAgXCJQYWxldHRlc01lbnVTZXR0aW5nc1wiLFxuICBcIlBhbGluZHJvbWVRXCIsXG4gIFwiUGFuZVwiLFxuICBcIlBhbmVCb3hcIixcbiAgXCJQYW5lQm94T3B0aW9uc1wiLFxuICBcIlBhbmVsXCIsXG4gIFwiUGFuZWxCb3hcIixcbiAgXCJQYW5lbEJveE9wdGlvbnNcIixcbiAgXCJQYW5lbGVkXCIsXG4gIFwiUGFuZVNlbGVjdG9yXCIsXG4gIFwiUGFuZVNlbGVjdG9yQm94XCIsXG4gIFwiUGFuZVNlbGVjdG9yQm94T3B0aW9uc1wiLFxuICBcIlBhcGVyV2lkdGhcIixcbiAgXCJQYXJhYm9saWNDeWxpbmRlckRcIixcbiAgXCJQYXJhZ3JhcGhJbmRlbnRcIixcbiAgXCJQYXJhZ3JhcGhTcGFjaW5nXCIsXG4gIFwiUGFyYWxsZWxBcnJheVwiLFxuICBcIlBhcmFsbGVsQXhpc1Bsb3RcIixcbiAgXCJQYXJhbGxlbENvbWJpbmVcIixcbiAgXCJQYXJhbGxlbERvXCIsXG4gIFwiUGFyYWxsZWxlcGlwZWRcIixcbiAgXCJQYXJhbGxlbEV2YWx1YXRlXCIsXG4gIFwiUGFyYWxsZWxpemF0aW9uXCIsXG4gIFwiUGFyYWxsZWxpemVcIixcbiAgXCJQYXJhbGxlbEtlcm5lbHNcIixcbiAgXCJQYXJhbGxlbE1hcFwiLFxuICBcIlBhcmFsbGVsTmVlZHNcIixcbiAgXCJQYXJhbGxlbG9ncmFtXCIsXG4gIFwiUGFyYWxsZWxQcm9kdWN0XCIsXG4gIFwiUGFyYWxsZWxTdWJtaXRcIixcbiAgXCJQYXJhbGxlbFN1bVwiLFxuICBcIlBhcmFsbGVsVGFibGVcIixcbiAgXCJQYXJhbGxlbFRyeVwiLFxuICBcIlBhcmFtZXRlclwiLFxuICBcIlBhcmFtZXRlckVzdGltYXRvclwiLFxuICBcIlBhcmFtZXRlck1peHR1cmVEaXN0cmlidXRpb25cIixcbiAgXCJQYXJhbWV0ZXJWYXJpYWJsZXNcIixcbiAgXCJQYXJhbWV0cmljQ29udmV4T3B0aW1pemF0aW9uXCIsXG4gIFwiUGFyYW1ldHJpY0Z1bmN0aW9uXCIsXG4gIFwiUGFyYW1ldHJpY05EU29sdmVcIixcbiAgXCJQYXJhbWV0cmljTkRTb2x2ZVZhbHVlXCIsXG4gIFwiUGFyYW1ldHJpY1Bsb3RcIixcbiAgXCJQYXJhbWV0cmljUGxvdDNEXCIsXG4gIFwiUGFyYW1ldHJpY1JhbXBMYXllclwiLFxuICBcIlBhcmFtZXRyaWNSZWdpb25cIixcbiAgXCJQYXJlbnRCb3hcIixcbiAgXCJQYXJlbnRDZWxsXCIsXG4gIFwiUGFyZW50Q29ubmVjdFwiLFxuICBcIlBhcmVudERpcmVjdG9yeVwiLFxuICBcIlBhcmVudEVkZ2VMYWJlbFwiLFxuICBcIlBhcmVudEVkZ2VMYWJlbEZ1bmN0aW9uXCIsXG4gIFwiUGFyZW50RWRnZUxhYmVsU3R5bGVcIixcbiAgXCJQYXJlbnRFZGdlU2hhcGVGdW5jdGlvblwiLFxuICBcIlBhcmVudEVkZ2VTdHlsZVwiLFxuICBcIlBhcmVudEVkZ2VTdHlsZUZ1bmN0aW9uXCIsXG4gIFwiUGFyZW50Rm9ybVwiLFxuICBcIlBhcmVudGhlc2l6ZVwiLFxuICBcIlBhcmVudExpc3RcIixcbiAgXCJQYXJlbnROb3RlYm9va1wiLFxuICBcIlBhcmV0b0Rpc3RyaWJ1dGlvblwiLFxuICBcIlBhcmV0b1BpY2thbmRzRGlzdHJpYnV0aW9uXCIsXG4gIFwiUGFya0RhdGFcIixcbiAgXCJQYXJ0XCIsXG4gIFwiUGFydEJlaGF2aW9yXCIsXG4gIFwiUGFydGlhbENvcnJlbGF0aW9uRnVuY3Rpb25cIixcbiAgXCJQYXJ0aWFsRFwiLFxuICBcIlBhcnRpY2xlQWNjZWxlcmF0b3JEYXRhXCIsXG4gIFwiUGFydGljbGVEYXRhXCIsXG4gIFwiUGFydGl0aW9uXCIsXG4gIFwiUGFydGl0aW9uR3JhbnVsYXJpdHlcIixcbiAgXCJQYXJ0aXRpb25zUFwiLFxuICBcIlBhcnRpdGlvbnNRXCIsXG4gIFwiUGFydExheWVyXCIsXG4gIFwiUGFydE9mU3BlZWNoXCIsXG4gIFwiUGFydFByb3RlY3Rpb25cIixcbiAgXCJQYXJ6ZW5XaW5kb3dcIixcbiAgXCJQYXNjYWxEaXN0cmlidXRpb25cIixcbiAgXCJQYXNzRXZlbnRzRG93blwiLFxuICBcIlBhc3NFdmVudHNVcFwiLFxuICBcIlBhc3RlXCIsXG4gIFwiUGFzdGVBdXRvUXVvdGVDaGFyYWN0ZXJzXCIsXG4gIFwiUGFzdGVCb3hGb3JtSW5saW5lQ2VsbHNcIixcbiAgXCJQYXN0ZUJ1dHRvblwiLFxuICBcIlBhdGhcIixcbiAgXCJQYXRoR3JhcGhcIixcbiAgXCJQYXRoR3JhcGhRXCIsXG4gIFwiUGF0dGVyblwiLFxuICBcIlBhdHRlcm5GaWxsaW5nXCIsXG4gIFwiUGF0dGVyblJlYWN0aW9uXCIsXG4gIFwiUGF0dGVyblNlcXVlbmNlXCIsXG4gIFwiUGF0dGVyblRlc3RcIixcbiAgXCJQYXVsaU1hdHJpeFwiLFxuICBcIlBhdWxXYXZlbGV0XCIsXG4gIFwiUGF1c2VcIixcbiAgXCJQYXVzZWRUaW1lXCIsXG4gIFwiUERGXCIsXG4gIFwiUGVha0RldGVjdFwiLFxuICBcIlBlYW5vQ3VydmVcIixcbiAgXCJQZWFyc29uQ2hpU3F1YXJlVGVzdFwiLFxuICBcIlBlYXJzb25Db3JyZWxhdGlvblRlc3RcIixcbiAgXCJQZWFyc29uRGlzdHJpYnV0aW9uXCIsXG4gIFwiUGVudHRpbmVuUG9pbnRQcm9jZXNzXCIsXG4gIFwiUGVyY2VudEZvcm1cIixcbiAgXCJQZXJmZWN0TnVtYmVyXCIsXG4gIFwiUGVyZmVjdE51bWJlclFcIixcbiAgXCJQZXJmb3JtYW5jZUdvYWxcIixcbiAgXCJQZXJpbWV0ZXJcIixcbiAgXCJQZXJpb2RpY0JvdW5kYXJ5Q29uZGl0aW9uXCIsXG4gIFwiUGVyaW9kaWNJbnRlcnBvbGF0aW9uXCIsXG4gIFwiUGVyaW9kb2dyYW1cIixcbiAgXCJQZXJpb2RvZ3JhbUFycmF5XCIsXG4gIFwiUGVybWFuZW50XCIsXG4gIFwiUGVybWlzc2lvbnNcIixcbiAgXCJQZXJtaXNzaW9uc0dyb3VwXCIsXG4gIFwiUGVybWlzc2lvbnNHcm91cE1lbWJlclFcIixcbiAgXCJQZXJtaXNzaW9uc0dyb3Vwc1wiLFxuICBcIlBlcm1pc3Npb25zS2V5XCIsXG4gIFwiUGVybWlzc2lvbnNLZXlzXCIsXG4gIFwiUGVybXV0YXRpb25DeWNsZXNcIixcbiAgXCJQZXJtdXRhdGlvbkN5Y2xlc1FcIixcbiAgXCJQZXJtdXRhdGlvbkdyb3VwXCIsXG4gIFwiUGVybXV0YXRpb25MZW5ndGhcIixcbiAgXCJQZXJtdXRhdGlvbkxpc3RcIixcbiAgXCJQZXJtdXRhdGlvbkxpc3RRXCIsXG4gIFwiUGVybXV0YXRpb25NYXRyaXhcIixcbiAgXCJQZXJtdXRhdGlvbk1heFwiLFxuICBcIlBlcm11dGF0aW9uTWluXCIsXG4gIFwiUGVybXV0YXRpb25PcmRlclwiLFxuICBcIlBlcm11dGF0aW9uUG93ZXJcIixcbiAgXCJQZXJtdXRhdGlvblByb2R1Y3RcIixcbiAgXCJQZXJtdXRhdGlvblJlcGxhY2VcIixcbiAgXCJQZXJtdXRhdGlvbnNcIixcbiAgXCJQZXJtdXRhdGlvblN1cHBvcnRcIixcbiAgXCJQZXJtdXRlXCIsXG4gIFwiUGVyb25hTWFsaWtGaWx0ZXJcIixcbiAgXCJQZXJwZW5kaWN1bGFyXCIsXG4gIFwiUGVycGVuZGljdWxhckJpc2VjdG9yXCIsXG4gIFwiUGVyc2lzdGVuY2VMb2NhdGlvblwiLFxuICBcIlBlcnNpc3RlbmNlVGltZVwiLFxuICBcIlBlcnNpc3RlbnRPYmplY3RcIixcbiAgXCJQZXJzaXN0ZW50T2JqZWN0c1wiLFxuICBcIlBlcnNpc3RlbnRTeW1ib2xcIixcbiAgXCJQZXJzaXN0ZW50VmFsdWVcIixcbiAgXCJQZXJzb25EYXRhXCIsXG4gIFwiUEVSVERpc3RyaWJ1dGlvblwiLFxuICBcIlBldGVyc2VuR3JhcGhcIixcbiAgXCJQaGFzZU1hcmdpbnNcIixcbiAgXCJQaGFzZVJhbmdlXCIsXG4gIFwiUGhvbmdTaGFkaW5nXCIsXG4gIFwiUGh5c2ljYWxTeXN0ZW1EYXRhXCIsXG4gIFwiUGlcIixcbiAgXCJQaWNrXCIsXG4gIFwiUGlja2VkRWxlbWVudHNcIixcbiAgXCJQaWNrTW9kZVwiLFxuICBcIlBJRERhdGFcIixcbiAgXCJQSUREZXJpdmF0aXZlRmlsdGVyXCIsXG4gIFwiUElERmVlZGZvcndhcmRcIixcbiAgXCJQSURUdW5lXCIsXG4gIFwiUGllY2V3aXNlXCIsXG4gIFwiUGllY2V3aXNlRXhwYW5kXCIsXG4gIFwiUGllQ2hhcnRcIixcbiAgXCJQaWVDaGFydDNEXCIsXG4gIFwiUGlsbGFpVHJhY2VcIixcbiAgXCJQaWxsYWlUcmFjZVRlc3RcIixcbiAgXCJQaW5nVGltZVwiLFxuICBcIlBpbmtcIixcbiAgXCJQaXRjaFJlY29nbml6ZVwiLFxuICBcIlBpdm90aW5nXCIsXG4gIFwiUGl4ZWxDb25zdHJhaW5lZFwiLFxuICBcIlBpeGVsVmFsdWVcIixcbiAgXCJQaXhlbFZhbHVlUG9zaXRpb25zXCIsXG4gIFwiUGxhY2VkXCIsXG4gIFwiUGxhY2Vob2xkZXJcIixcbiAgXCJQbGFjZWhvbGRlckxheWVyXCIsXG4gIFwiUGxhY2Vob2xkZXJSZXBsYWNlXCIsXG4gIFwiUGxhaW5cIixcbiAgXCJQbGFuYXJBbmdsZVwiLFxuICBcIlBsYW5hckZhY2VMaXN0XCIsXG4gIFwiUGxhbmFyR3JhcGhcIixcbiAgXCJQbGFuYXJHcmFwaFFcIixcbiAgXCJQbGFuY2tSYWRpYXRpb25MYXdcIixcbiAgXCJQbGFuZUN1cnZlRGF0YVwiLFxuICBcIlBsYW5ldGFyeU1vb25EYXRhXCIsXG4gIFwiUGxhbmV0RGF0YVwiLFxuICBcIlBsYW50RGF0YVwiLFxuICBcIlBsYXlcIixcbiAgXCJQbGF5YmFja1NldHRpbmdzXCIsXG4gIFwiUGxheVJhbmdlXCIsXG4gIFwiUGxvdFwiLFxuICBcIlBsb3QzRFwiLFxuICBcIlBsb3QzTWF0cml4XCIsXG4gIFwiUGxvdERpdmlzaW9uXCIsXG4gIFwiUGxvdEpvaW5lZFwiLFxuICBcIlBsb3RMYWJlbFwiLFxuICBcIlBsb3RMYWJlbHNcIixcbiAgXCJQbG90TGF5b3V0XCIsXG4gIFwiUGxvdExlZ2VuZHNcIixcbiAgXCJQbG90TWFya2Vyc1wiLFxuICBcIlBsb3RQb2ludHNcIixcbiAgXCJQbG90UmFuZ2VcIixcbiAgXCJQbG90UmFuZ2VDbGlwcGluZ1wiLFxuICBcIlBsb3RSYW5nZUNsaXBQbGFuZXNTdHlsZVwiLFxuICBcIlBsb3RSYW5nZVBhZGRpbmdcIixcbiAgXCJQbG90UmVnaW9uXCIsXG4gIFwiUGxvdFN0eWxlXCIsXG4gIFwiUGxvdFRoZW1lXCIsXG4gIFwiUGx1cmFsaXplXCIsXG4gIFwiUGx1c1wiLFxuICBcIlBsdXNNaW51c1wiLFxuICBcIlBvY2hoYW1tZXJcIixcbiAgXCJQb2RTdGF0ZXNcIixcbiAgXCJQb2RXaWR0aFwiLFxuICBcIlBvaW50XCIsXG4gIFwiUG9pbnQzREJveFwiLFxuICBcIlBvaW50M0RCb3hPcHRpb25zXCIsXG4gIFwiUG9pbnRCb3hcIixcbiAgXCJQb2ludEJveE9wdGlvbnNcIixcbiAgXCJQb2ludENvdW50RGlzdHJpYnV0aW9uXCIsXG4gIFwiUG9pbnREZW5zaXR5XCIsXG4gIFwiUG9pbnREZW5zaXR5RnVuY3Rpb25cIixcbiAgXCJQb2ludEZpZ3VyZUNoYXJ0XCIsXG4gIFwiUG9pbnRMZWdlbmRcIixcbiAgXCJQb2ludExpZ2h0XCIsXG4gIFwiUG9pbnRQcm9jZXNzRXN0aW1hdG9yXCIsXG4gIFwiUG9pbnRQcm9jZXNzRml0VGVzdFwiLFxuICBcIlBvaW50UHJvY2Vzc1BhcmFtZXRlckFzc3VtcHRpb25zXCIsXG4gIFwiUG9pbnRQcm9jZXNzUGFyYW1ldGVyUVwiLFxuICBcIlBvaW50U2l6ZVwiLFxuICBcIlBvaW50U3RhdGlzdGljRnVuY3Rpb25cIixcbiAgXCJQb2ludFZhbHVlUGxvdFwiLFxuICBcIlBvaXNzb25Db25zdWxEaXN0cmlidXRpb25cIixcbiAgXCJQb2lzc29uRGlzdHJpYnV0aW9uXCIsXG4gIFwiUG9pc3NvblBERUNvbXBvbmVudFwiLFxuICBcIlBvaXNzb25Qb2ludFByb2Nlc3NcIixcbiAgXCJQb2lzc29uUHJvY2Vzc1wiLFxuICBcIlBvaXNzb25XaW5kb3dcIixcbiAgXCJQb2xhckF4ZXNcIixcbiAgXCJQb2xhckF4ZXNPcmlnaW5cIixcbiAgXCJQb2xhckdyaWRMaW5lc1wiLFxuICBcIlBvbGFyUGxvdFwiLFxuICBcIlBvbGFyVGlja3NcIixcbiAgXCJQb2xlWmVyb01hcmtlcnNcIixcbiAgXCJQb2x5YUFlcHBsaURpc3RyaWJ1dGlvblwiLFxuICBcIlBvbHlHYW1tYVwiLFxuICBcIlBvbHlnb25cIixcbiAgXCJQb2x5Z29uM0RCb3hcIixcbiAgXCJQb2x5Z29uM0RCb3hPcHRpb25zXCIsXG4gIFwiUG9seWdvbmFsTnVtYmVyXCIsXG4gIFwiUG9seWdvbkFuZ2xlXCIsXG4gIFwiUG9seWdvbkJveFwiLFxuICBcIlBvbHlnb25Cb3hPcHRpb25zXCIsXG4gIFwiUG9seWdvbkNvb3JkaW5hdGVzXCIsXG4gIFwiUG9seWdvbkRlY29tcG9zaXRpb25cIixcbiAgXCJQb2x5Z29uSG9sZVNjYWxlXCIsXG4gIFwiUG9seWdvbkludGVyc2VjdGlvbnNcIixcbiAgXCJQb2x5Z29uU2NhbGVcIixcbiAgXCJQb2x5aGVkcm9uXCIsXG4gIFwiUG9seWhlZHJvbkFuZ2xlXCIsXG4gIFwiUG9seWhlZHJvbkJveFwiLFxuICBcIlBvbHloZWRyb25Cb3hPcHRpb25zXCIsXG4gIFwiUG9seWhlZHJvbkNvb3JkaW5hdGVzXCIsXG4gIFwiUG9seWhlZHJvbkRhdGFcIixcbiAgXCJQb2x5aGVkcm9uRGVjb21wb3NpdGlvblwiLFxuICBcIlBvbHloZWRyb25HZW51c1wiLFxuICBcIlBvbHlMb2dcIixcbiAgXCJQb2x5bm9taWFsRXhwcmVzc2lvblFcIixcbiAgXCJQb2x5bm9taWFsRXh0ZW5kZWRHQ0RcIixcbiAgXCJQb2x5bm9taWFsRm9ybVwiLFxuICBcIlBvbHlub21pYWxHQ0RcIixcbiAgXCJQb2x5bm9taWFsTENNXCIsXG4gIFwiUG9seW5vbWlhbE1vZFwiLFxuICBcIlBvbHlub21pYWxRXCIsXG4gIFwiUG9seW5vbWlhbFF1b3RpZW50XCIsXG4gIFwiUG9seW5vbWlhbFF1b3RpZW50UmVtYWluZGVyXCIsXG4gIFwiUG9seW5vbWlhbFJlZHVjZVwiLFxuICBcIlBvbHlub21pYWxSZW1haW5kZXJcIixcbiAgXCJQb2x5bm9taWFsc1wiLFxuICBcIlBvbHlub21pYWxTdW1PZlNxdWFyZXNMaXN0XCIsXG4gIFwiUG9vbGluZ0xheWVyXCIsXG4gIFwiUG9wdXBNZW51XCIsXG4gIFwiUG9wdXBNZW51Qm94XCIsXG4gIFwiUG9wdXBNZW51Qm94T3B0aW9uc1wiLFxuICBcIlBvcHVwVmlld1wiLFxuICBcIlBvcHVwV2luZG93XCIsXG4gIFwiUG9zaXRpb25cIixcbiAgXCJQb3NpdGlvbkluZGV4XCIsXG4gIFwiUG9zaXRpb25MYXJnZXN0XCIsXG4gIFwiUG9zaXRpb25TbWFsbGVzdFwiLFxuICBcIlBvc2l0aXZlXCIsXG4gIFwiUG9zaXRpdmVEZWZpbml0ZU1hdHJpeFFcIixcbiAgXCJQb3NpdGl2ZUludGVnZXJzXCIsXG4gIFwiUG9zaXRpdmVseU9yaWVudGVkUG9pbnRzXCIsXG4gIFwiUG9zaXRpdmVSYXRpb25hbHNcIixcbiAgXCJQb3NpdGl2ZVJlYWxzXCIsXG4gIFwiUG9zaXRpdmVTZW1pZGVmaW5pdGVNYXRyaXhRXCIsXG4gIFwiUG9zc2libGVaZXJvUVwiLFxuICBcIlBvc3RmaXhcIixcbiAgXCJQb3N0U2NyaXB0XCIsXG4gIFwiUG93ZXJcIixcbiAgXCJQb3dlckRpc3RyaWJ1dGlvblwiLFxuICBcIlBvd2VyRXhwYW5kXCIsXG4gIFwiUG93ZXJNb2RcIixcbiAgXCJQb3dlck1vZExpc3RcIixcbiAgXCJQb3dlclJhbmdlXCIsXG4gIFwiUG93ZXJTcGVjdHJhbERlbnNpdHlcIixcbiAgXCJQb3dlcnNSZXByZXNlbnRhdGlvbnNcIixcbiAgXCJQb3dlclN5bW1ldHJpY1BvbHlub21pYWxcIixcbiAgXCJQcmVjZWRlbmNlXCIsXG4gIFwiUHJlY2VkZW5jZUZvcm1cIixcbiAgXCJQcmVjZWRlc1wiLFxuICBcIlByZWNlZGVzRXF1YWxcIixcbiAgXCJQcmVjZWRlc1NsYW50RXF1YWxcIixcbiAgXCJQcmVjZWRlc1RpbGRlXCIsXG4gIFwiUHJlY2lzaW9uXCIsXG4gIFwiUHJlY2lzaW9uR29hbFwiLFxuICBcIlByZURlY3JlbWVudFwiLFxuICBcIlByZWRpY3RcIixcbiAgXCJQcmVkaWN0aW9uUm9vdFwiLFxuICBcIlByZWRpY3RvckZ1bmN0aW9uXCIsXG4gIFwiUHJlZGljdG9ySW5mb3JtYXRpb25cIixcbiAgXCJQcmVkaWN0b3JNZWFzdXJlbWVudHNcIixcbiAgXCJQcmVkaWN0b3JNZWFzdXJlbWVudHNPYmplY3RcIixcbiAgXCJQcmVlbXB0UHJvdGVjdFwiLFxuICBcIlByZWZlcmVuY2VzUGF0aFwiLFxuICBcIlByZWZlcmVuY2VzU2V0dGluZ3NcIixcbiAgXCJQcmVmaXhcIixcbiAgXCJQcmVJbmNyZW1lbnRcIixcbiAgXCJQcmVwZW5kXCIsXG4gIFwiUHJlcGVuZExheWVyXCIsXG4gIFwiUHJlcGVuZFRvXCIsXG4gIFwiUHJlcHJvY2Vzc2luZ1J1bGVzXCIsXG4gIFwiUHJlc2VydmVDb2xvclwiLFxuICBcIlByZXNlcnZlSW1hZ2VPcHRpb25zXCIsXG4gIFwiUHJldmlvdXNcIixcbiAgXCJQcmV2aW91c0NlbGxcIixcbiAgXCJQcmV2aW91c0RhdGVcIixcbiAgXCJQcmljZUdyYXBoRGlzdHJpYnV0aW9uXCIsXG4gIFwiUHJpbWFyeVBsYWNlaG9sZGVyXCIsXG4gIFwiUHJpbWVcIixcbiAgXCJQcmltZU51XCIsXG4gIFwiUHJpbWVPbWVnYVwiLFxuICBcIlByaW1lUGlcIixcbiAgXCJQcmltZVBvd2VyUVwiLFxuICBcIlByaW1lUVwiLFxuICBcIlByaW1lc1wiLFxuICBcIlByaW1lWmV0YVBcIixcbiAgXCJQcmltaXRpdmVQb2x5bm9taWFsUVwiLFxuICBcIlByaW1pdGl2ZVJvb3RcIixcbiAgXCJQcmltaXRpdmVSb290TGlzdFwiLFxuICBcIlByaW5jaXBhbENvbXBvbmVudHNcIixcbiAgXCJQcmluY2lwYWxWYWx1ZVwiLFxuICBcIlByaW50XCIsXG4gIFwiUHJpbnRhYmxlQVNDSUlRXCIsXG4gIFwiUHJpbnRBY3Rpb25cIixcbiAgXCJQcmludEZvcm1cIixcbiAgXCJQcmludGluZ0NvcGllc1wiLFxuICBcIlByaW50aW5nT3B0aW9uc1wiLFxuICBcIlByaW50aW5nUGFnZVJhbmdlXCIsXG4gIFwiUHJpbnRpbmdTdGFydGluZ1BhZ2VOdW1iZXJcIixcbiAgXCJQcmludGluZ1N0eWxlRW52aXJvbm1lbnRcIixcbiAgXCJQcmludG91dDNEXCIsXG4gIFwiUHJpbnRvdXQzRFByZXZpZXdlclwiLFxuICBcIlByaW50UHJlY2lzaW9uXCIsXG4gIFwiUHJpbnRUZW1wb3JhcnlcIixcbiAgXCJQcmlzbVwiLFxuICBcIlByaXNtQm94XCIsXG4gIFwiUHJpc21Cb3hPcHRpb25zXCIsXG4gIFwiUHJpdmF0ZUNlbGxPcHRpb25zXCIsXG4gIFwiUHJpdmF0ZUV2YWx1YXRpb25PcHRpb25zXCIsXG4gIFwiUHJpdmF0ZUZvbnRPcHRpb25zXCIsXG4gIFwiUHJpdmF0ZUZyb250RW5kT3B0aW9uc1wiLFxuICBcIlByaXZhdGVLZXlcIixcbiAgXCJQcml2YXRlTm90ZWJvb2tPcHRpb25zXCIsXG4gIFwiUHJpdmF0ZVBhdGhzXCIsXG4gIFwiUHJvYmFiaWxpdHlcIixcbiAgXCJQcm9iYWJpbGl0eURpc3RyaWJ1dGlvblwiLFxuICBcIlByb2JhYmlsaXR5UGxvdFwiLFxuICBcIlByb2JhYmlsaXR5UHJcIixcbiAgXCJQcm9iYWJpbGl0eVNjYWxlUGxvdFwiLFxuICBcIlByb2JpdE1vZGVsRml0XCIsXG4gIFwiUHJvY2Vzc0Nvbm5lY3Rpb25cIixcbiAgXCJQcm9jZXNzRGlyZWN0b3J5XCIsXG4gIFwiUHJvY2Vzc0Vudmlyb25tZW50XCIsXG4gIFwiUHJvY2Vzc2VzXCIsXG4gIFwiUHJvY2Vzc0VzdGltYXRvclwiLFxuICBcIlByb2Nlc3NJbmZvcm1hdGlvblwiLFxuICBcIlByb2Nlc3NPYmplY3RcIixcbiAgXCJQcm9jZXNzUGFyYW1ldGVyQXNzdW1wdGlvbnNcIixcbiAgXCJQcm9jZXNzUGFyYW1ldGVyUVwiLFxuICBcIlByb2Nlc3NTdGF0ZURvbWFpblwiLFxuICBcIlByb2Nlc3NTdGF0dXNcIixcbiAgXCJQcm9jZXNzVGltZURvbWFpblwiLFxuICBcIlByb2R1Y3RcIixcbiAgXCJQcm9kdWN0RGlzdHJpYnV0aW9uXCIsXG4gIFwiUHJvZHVjdExvZ1wiLFxuICBcIlByb2dyZXNzSW5kaWNhdG9yXCIsXG4gIFwiUHJvZ3Jlc3NJbmRpY2F0b3JCb3hcIixcbiAgXCJQcm9ncmVzc0luZGljYXRvckJveE9wdGlvbnNcIixcbiAgXCJQcm9ncmVzc1JlcG9ydGluZ1wiLFxuICBcIlByb2plY3Rpb25cIixcbiAgXCJQcm9sb2dcIixcbiAgXCJQcm9tcHRGb3JtXCIsXG4gIFwiUHJvb2ZPYmplY3RcIixcbiAgXCJQcm9wYWdhdGVBYm9ydHNcIixcbiAgXCJQcm9wZXJ0aWVzXCIsXG4gIFwiUHJvcGVydHlcIixcbiAgXCJQcm9wZXJ0eUxpc3RcIixcbiAgXCJQcm9wZXJ0eVZhbHVlXCIsXG4gIFwiUHJvcG9ydGlvblwiLFxuICBcIlByb3BvcnRpb25hbFwiLFxuICBcIlByb3RlY3RcIixcbiAgXCJQcm90ZWN0ZWRcIixcbiAgXCJQcm90ZWluRGF0YVwiLFxuICBcIlBydW5pbmdcIixcbiAgXCJQc2V1ZG9JbnZlcnNlXCIsXG4gIFwiUHN5Y2hyb21ldHJpY1Byb3BlcnR5RGF0YVwiLFxuICBcIlB1YmxpY0tleVwiLFxuICBcIlB1Ymxpc2hlcklEXCIsXG4gIFwiUHVsc2FyRGF0YVwiLFxuICBcIlB1bmN0dWF0aW9uQ2hhcmFjdGVyXCIsXG4gIFwiUHVycGxlXCIsXG4gIFwiUHV0XCIsXG4gIFwiUHV0QXBwZW5kXCIsXG4gIFwiUHlyYW1pZFwiLFxuICBcIlB5cmFtaWRCb3hcIixcbiAgXCJQeXJhbWlkQm94T3B0aW9uc1wiLFxuICBcIlFCaW5vbWlhbFwiLFxuICBcIlFGYWN0b3JpYWxcIixcbiAgXCJRR2FtbWFcIixcbiAgXCJRSHlwZXJnZW9tZXRyaWNQRlFcIixcbiAgXCJRbkRpc3BlcnNpb25cIixcbiAgXCJRUG9jaGhhbW1lclwiLFxuICBcIlFQb2x5R2FtbWFcIixcbiAgXCJRUkRlY29tcG9zaXRpb25cIixcbiAgXCJRdWFkcmF0aWNJcnJhdGlvbmFsUVwiLFxuICBcIlF1YWRyYXRpY09wdGltaXphdGlvblwiLFxuICBcIlF1YW50aWxlXCIsXG4gIFwiUXVhbnRpbGVQbG90XCIsXG4gIFwiUXVhbnRpdHlcIixcbiAgXCJRdWFudGl0eUFycmF5XCIsXG4gIFwiUXVhbnRpdHlEaXN0cmlidXRpb25cIixcbiAgXCJRdWFudGl0eUZvcm1cIixcbiAgXCJRdWFudGl0eU1hZ25pdHVkZVwiLFxuICBcIlF1YW50aXR5UVwiLFxuICBcIlF1YW50aXR5VW5pdFwiLFxuICBcIlF1YW50aXR5VmFyaWFibGVcIixcbiAgXCJRdWFudGl0eVZhcmlhYmxlQ2Fub25pY2FsVW5pdFwiLFxuICBcIlF1YW50aXR5VmFyaWFibGVEaW1lbnNpb25zXCIsXG4gIFwiUXVhbnRpdHlWYXJpYWJsZUlkZW50aWZpZXJcIixcbiAgXCJRdWFudGl0eVZhcmlhYmxlUGh5c2ljYWxRdWFudGl0eVwiLFxuICBcIlF1YXJ0aWNzXCIsXG4gIFwiUXVhcnRpbGVEZXZpYXRpb25cIixcbiAgXCJRdWFydGlsZXNcIixcbiAgXCJRdWFydGlsZVNrZXduZXNzXCIsXG4gIFwiUXVlcnlcIixcbiAgXCJRdWVzdGlvbkdlbmVyYXRvclwiLFxuICBcIlF1ZXN0aW9uSW50ZXJmYWNlXCIsXG4gIFwiUXVlc3Rpb25PYmplY3RcIixcbiAgXCJRdWVzdGlvblNlbGVjdG9yXCIsXG4gIFwiUXVldWVpbmdOZXR3b3JrUHJvY2Vzc1wiLFxuICBcIlF1ZXVlaW5nUHJvY2Vzc1wiLFxuICBcIlF1ZXVlUHJvcGVydGllc1wiLFxuICBcIlF1aWV0XCIsXG4gIFwiUXVpZXRFY2hvXCIsXG4gIFwiUXVpdFwiLFxuICBcIlF1b3RpZW50XCIsXG4gIFwiUXVvdGllbnRSZW1haW5kZXJcIixcbiAgXCJSYWRpYWxBeGlzUGxvdFwiLFxuICBcIlJhZGlhbEdyYWRpZW50RmlsbGluZ1wiLFxuICBcIlJhZGlhbEdyYWRpZW50SW1hZ2VcIixcbiAgXCJSYWRpYWxpdHlDZW50cmFsaXR5XCIsXG4gIFwiUmFkaWNhbEJveFwiLFxuICBcIlJhZGljYWxCb3hPcHRpb25zXCIsXG4gIFwiUmFkaW9CdXR0b25cIixcbiAgXCJSYWRpb0J1dHRvbkJhclwiLFxuICBcIlJhZGlvQnV0dG9uQm94XCIsXG4gIFwiUmFkaW9CdXR0b25Cb3hPcHRpb25zXCIsXG4gIFwiUmFkb25cIixcbiAgXCJSYWRvblRyYW5zZm9ybVwiLFxuICBcIlJhbWFudWphblRhdVwiLFxuICBcIlJhbWFudWphblRhdUxcIixcbiAgXCJSYW1hbnVqYW5UYXVUaGV0YVwiLFxuICBcIlJhbWFudWphblRhdVpcIixcbiAgXCJSYW1wXCIsXG4gIFwiUmFuZG9tXCIsXG4gIFwiUmFuZG9tQXJyYXlMYXllclwiLFxuICBcIlJhbmRvbUNob2ljZVwiLFxuICBcIlJhbmRvbUNvbG9yXCIsXG4gIFwiUmFuZG9tQ29tcGxleFwiLFxuICBcIlJhbmRvbURhdGVcIixcbiAgXCJSYW5kb21FbnRpdHlcIixcbiAgXCJSYW5kb21GdW5jdGlvblwiLFxuICBcIlJhbmRvbUdlbmVyYXRvclN0YXRlXCIsXG4gIFwiUmFuZG9tR2VvUG9zaXRpb25cIixcbiAgXCJSYW5kb21HcmFwaFwiLFxuICBcIlJhbmRvbUltYWdlXCIsXG4gIFwiUmFuZG9tSW5zdGFuY2VcIixcbiAgXCJSYW5kb21JbnRlZ2VyXCIsXG4gIFwiUmFuZG9tUGVybXV0YXRpb25cIixcbiAgXCJSYW5kb21Qb2ludFwiLFxuICBcIlJhbmRvbVBvaW50Q29uZmlndXJhdGlvblwiLFxuICBcIlJhbmRvbVBvbHlnb25cIixcbiAgXCJSYW5kb21Qb2x5aGVkcm9uXCIsXG4gIFwiUmFuZG9tUHJpbWVcIixcbiAgXCJSYW5kb21SZWFsXCIsXG4gIFwiUmFuZG9tU2FtcGxlXCIsXG4gIFwiUmFuZG9tU2VlZFwiLFxuICBcIlJhbmRvbVNlZWRpbmdcIixcbiAgXCJSYW5kb21UaW1lXCIsXG4gIFwiUmFuZG9tVHJlZVwiLFxuICBcIlJhbmRvbVZhcmlhdGVcIixcbiAgXCJSYW5kb21XYWxrUHJvY2Vzc1wiLFxuICBcIlJhbmRvbVdvcmRcIixcbiAgXCJSYW5nZVwiLFxuICBcIlJhbmdlRmlsdGVyXCIsXG4gIFwiUmFuZ2VTcGVjaWZpY2F0aW9uXCIsXG4gIFwiUmFua2VkTWF4XCIsXG4gIFwiUmFua2VkTWluXCIsXG4gIFwiUmFyZXJQcm9iYWJpbGl0eVwiLFxuICBcIlJhc3RlclwiLFxuICBcIlJhc3RlcjNEXCIsXG4gIFwiUmFzdGVyM0RCb3hcIixcbiAgXCJSYXN0ZXIzREJveE9wdGlvbnNcIixcbiAgXCJSYXN0ZXJBcnJheVwiLFxuICBcIlJhc3RlckJveFwiLFxuICBcIlJhc3RlckJveE9wdGlvbnNcIixcbiAgXCJSYXN0ZXJpemVcIixcbiAgXCJSYXN0ZXJTaXplXCIsXG4gIFwiUmF0aW9uYWxcIixcbiAgXCJSYXRpb25hbEV4cHJlc3Npb25RXCIsXG4gIFwiUmF0aW9uYWxGdW5jdGlvbnNcIixcbiAgXCJSYXRpb25hbGl6ZVwiLFxuICBcIlJhdGlvbmFsc1wiLFxuICBcIlJhdGlvc1wiLFxuICBcIlJhd0FycmF5XCIsXG4gIFwiUmF3Qm94ZXNcIixcbiAgXCJSYXdEYXRhXCIsXG4gIFwiUmF3TWVkaXVtXCIsXG4gIFwiUmF5bGVpZ2hEaXN0cmlidXRpb25cIixcbiAgXCJSZVwiLFxuICBcIlJlYWN0aW9uQmFsYW5jZVwiLFxuICBcIlJlYWN0aW9uQmFsYW5jZWRRXCIsXG4gIFwiUmVhY3Rpb25QREVUZXJtXCIsXG4gIFwiUmVhZFwiLFxuICBcIlJlYWRCeXRlQXJyYXlcIixcbiAgXCJSZWFkTGluZVwiLFxuICBcIlJlYWRMaXN0XCIsXG4gIFwiUmVhZFByb3RlY3RlZFwiLFxuICBcIlJlYWRTdHJpbmdcIixcbiAgXCJSZWFsXCIsXG4gIFwiUmVhbEFic1wiLFxuICBcIlJlYWxCbG9ja0RpYWdvbmFsRm9ybVwiLFxuICBcIlJlYWxEaWdpdHNcIixcbiAgXCJSZWFsRXhwb25lbnRcIixcbiAgXCJSZWFsc1wiLFxuICBcIlJlYWxTaWduXCIsXG4gIFwiUmVhcFwiLFxuICBcIlJlYnVpbGRQYWNsZXREYXRhXCIsXG4gIFwiUmVjYWxpYnJhdGlvbkZ1bmN0aW9uXCIsXG4gIFwiUmVjb2duaXRpb25QcmlvclwiLFxuICBcIlJlY29nbml0aW9uVGhyZXNob2xkXCIsXG4gIFwiUmVjb25zdHJ1Y3Rpb25NZXNoXCIsXG4gIFwiUmVjb3JkXCIsXG4gIFwiUmVjb3JkTGlzdHNcIixcbiAgXCJSZWNvcmRTZXBhcmF0b3JzXCIsXG4gIFwiUmVjdGFuZ2xlXCIsXG4gIFwiUmVjdGFuZ2xlQm94XCIsXG4gIFwiUmVjdGFuZ2xlQm94T3B0aW9uc1wiLFxuICBcIlJlY3RhbmdsZUNoYXJ0XCIsXG4gIFwiUmVjdGFuZ2xlQ2hhcnQzRFwiLFxuICBcIlJlY3Rhbmd1bGFyUmVwZWF0aW5nRWxlbWVudFwiLFxuICBcIlJlY3VycmVuY2VGaWx0ZXJcIixcbiAgXCJSZWN1cnJlbmNlVGFibGVcIixcbiAgXCJSZWN1cnJpbmdEaWdpdHNGb3JtXCIsXG4gIFwiUmVkXCIsXG4gIFwiUmVkdWNlXCIsXG4gIFwiUmVmQm94XCIsXG4gIFwiUmVmZXJlbmNlTGluZVN0eWxlXCIsXG4gIFwiUmVmZXJlbmNlTWFya2Vyc1wiLFxuICBcIlJlZmVyZW5jZU1hcmtlclN0eWxlXCIsXG4gIFwiUmVmaW5lXCIsXG4gIFwiUmVmbGVjdGlvbk1hdHJpeFwiLFxuICBcIlJlZmxlY3Rpb25UcmFuc2Zvcm1cIixcbiAgXCJSZWZyZXNoXCIsXG4gIFwiUmVmcmVzaFJhdGVcIixcbiAgXCJSZWdpb25cIixcbiAgXCJSZWdpb25CaW5hcml6ZVwiLFxuICBcIlJlZ2lvbkJvdW5kYXJ5XCIsXG4gIFwiUmVnaW9uQm91bmRhcnlTdHlsZVwiLFxuICBcIlJlZ2lvbkJvdW5kc1wiLFxuICBcIlJlZ2lvbkNlbnRyb2lkXCIsXG4gIFwiUmVnaW9uQ29uZ3J1ZW50XCIsXG4gIFwiUmVnaW9uQ29udmVydFwiLFxuICBcIlJlZ2lvbkRpZmZlcmVuY2VcIixcbiAgXCJSZWdpb25EaWxhdGlvblwiLFxuICBcIlJlZ2lvbkRpbWVuc2lvblwiLFxuICBcIlJlZ2lvbkRpc2pvaW50XCIsXG4gIFwiUmVnaW9uRGlzdGFuY2VcIixcbiAgXCJSZWdpb25EaXN0YW5jZUZ1bmN0aW9uXCIsXG4gIFwiUmVnaW9uRW1iZWRkaW5nRGltZW5zaW9uXCIsXG4gIFwiUmVnaW9uRXF1YWxcIixcbiAgXCJSZWdpb25Fcm9zaW9uXCIsXG4gIFwiUmVnaW9uRmlsbGluZ1N0eWxlXCIsXG4gIFwiUmVnaW9uRml0XCIsXG4gIFwiUmVnaW9uRnVuY3Rpb25cIixcbiAgXCJSZWdpb25JbWFnZVwiLFxuICBcIlJlZ2lvbkludGVyc2VjdGlvblwiLFxuICBcIlJlZ2lvbk1lYXN1cmVcIixcbiAgXCJSZWdpb25NZW1iZXJcIixcbiAgXCJSZWdpb25NZW1iZXJGdW5jdGlvblwiLFxuICBcIlJlZ2lvbk1vbWVudFwiLFxuICBcIlJlZ2lvbk5lYXJlc3RcIixcbiAgXCJSZWdpb25OZWFyZXN0RnVuY3Rpb25cIixcbiAgXCJSZWdpb25QbG90XCIsXG4gIFwiUmVnaW9uUGxvdDNEXCIsXG4gIFwiUmVnaW9uUHJvZHVjdFwiLFxuICBcIlJlZ2lvblFcIixcbiAgXCJSZWdpb25SZXNpemVcIixcbiAgXCJSZWdpb25TaW1pbGFyXCIsXG4gIFwiUmVnaW9uU2l6ZVwiLFxuICBcIlJlZ2lvblN5bW1ldHJpY0RpZmZlcmVuY2VcIixcbiAgXCJSZWdpb25VbmlvblwiLFxuICBcIlJlZ2lvbldpdGhpblwiLFxuICBcIlJlZ2lzdGVyRXh0ZXJuYWxFdmFsdWF0b3JcIixcbiAgXCJSZWd1bGFyRXhwcmVzc2lvblwiLFxuICBcIlJlZ3VsYXJpemF0aW9uXCIsXG4gIFwiUmVndWxhcmx5U2FtcGxlZFFcIixcbiAgXCJSZWd1bGFyUG9seWdvblwiLFxuICBcIlJlSW1cIixcbiAgXCJSZUltTGFiZWxzXCIsXG4gIFwiUmVJbVBsb3RcIixcbiAgXCJSZUltU3R5bGVcIixcbiAgXCJSZWluc3RhbGxcIixcbiAgXCJSZWxhdGlvbmFsRGF0YWJhc2VcIixcbiAgXCJSZWxhdGlvbkdyYXBoXCIsXG4gIFwiUmVsZWFzZVwiLFxuICBcIlJlbGVhc2VIb2xkXCIsXG4gIFwiUmVsaWFiaWxpdHlEaXN0cmlidXRpb25cIixcbiAgXCJSZWxpZWZJbWFnZVwiLFxuICBcIlJlbGllZlBsb3RcIixcbiAgXCJSZW1vdGVBdXRob3JpemF0aW9uQ2FjaGluZ1wiLFxuICBcIlJlbW90ZUJhdGNoSm9iQWJvcnRcIixcbiAgXCJSZW1vdGVCYXRjaEpvYk9iamVjdFwiLFxuICBcIlJlbW90ZUJhdGNoSm9ic1wiLFxuICBcIlJlbW90ZUJhdGNoTWFwU3VibWl0XCIsXG4gIFwiUmVtb3RlQmF0Y2hTdWJtaXNzaW9uRW52aXJvbm1lbnRcIixcbiAgXCJSZW1vdGVCYXRjaFN1Ym1pdFwiLFxuICBcIlJlbW90ZUNvbm5lY3RcIixcbiAgXCJSZW1vdGVDb25uZWN0aW9uT2JqZWN0XCIsXG4gIFwiUmVtb3RlRXZhbHVhdGVcIixcbiAgXCJSZW1vdGVGaWxlXCIsXG4gIFwiUmVtb3RlSW5wdXRGaWxlc1wiLFxuICBcIlJlbW90ZUtlcm5lbE9iamVjdFwiLFxuICBcIlJlbW90ZVByb3ZpZGVyU2V0dGluZ3NcIixcbiAgXCJSZW1vdGVSdW5cIixcbiAgXCJSZW1vdGVSdW5Qcm9jZXNzXCIsXG4gIFwiUmVtb3ZhbENvbmRpdGlvbnNcIixcbiAgXCJSZW1vdmVcIixcbiAgXCJSZW1vdmVBbHBoYUNoYW5uZWxcIixcbiAgXCJSZW1vdmVBc3luY2hyb25vdXNUYXNrXCIsXG4gIFwiUmVtb3ZlQXVkaW9TdHJlYW1cIixcbiAgXCJSZW1vdmVCYWNrZ3JvdW5kXCIsXG4gIFwiUmVtb3ZlQ2hhbm5lbExpc3RlbmVyXCIsXG4gIFwiUmVtb3ZlQ2hhbm5lbFN1YnNjcmliZXJzXCIsXG4gIFwiUmVtb3ZlZFwiLFxuICBcIlJlbW92ZURpYWNyaXRpY3NcIixcbiAgXCJSZW1vdmVJbnB1dFN0cmVhbU1ldGhvZFwiLFxuICBcIlJlbW92ZU91dHB1dFN0cmVhbU1ldGhvZFwiLFxuICBcIlJlbW92ZVByb3BlcnR5XCIsXG4gIFwiUmVtb3ZlU2NoZWR1bGVkVGFza1wiLFxuICBcIlJlbW92ZVVzZXJzXCIsXG4gIFwiUmVtb3ZlVmlkZW9TdHJlYW1cIixcbiAgXCJSZW5hbWVEaXJlY3RvcnlcIixcbiAgXCJSZW5hbWVGaWxlXCIsXG4gIFwiUmVuZGVyQWxsXCIsXG4gIFwiUmVuZGVyaW5nT3B0aW9uc1wiLFxuICBcIlJlbmV3YWxQcm9jZXNzXCIsXG4gIFwiUmVua29DaGFydFwiLFxuICBcIlJlcGFpck1lc2hcIixcbiAgXCJSZXBlYXRlZFwiLFxuICBcIlJlcGVhdGVkTnVsbFwiLFxuICBcIlJlcGVhdGVkU3RyaW5nXCIsXG4gIFwiUmVwZWF0ZWRUaW1pbmdcIixcbiAgXCJSZXBlYXRpbmdFbGVtZW50XCIsXG4gIFwiUmVwbGFjZVwiLFxuICBcIlJlcGxhY2VBbGxcIixcbiAgXCJSZXBsYWNlQXRcIixcbiAgXCJSZXBsYWNlSGVsZFBhcnRcIixcbiAgXCJSZXBsYWNlSW1hZ2VWYWx1ZVwiLFxuICBcIlJlcGxhY2VMaXN0XCIsXG4gIFwiUmVwbGFjZVBhcnRcIixcbiAgXCJSZXBsYWNlUGl4ZWxWYWx1ZVwiLFxuICBcIlJlcGxhY2VSZXBlYXRlZFwiLFxuICBcIlJlcGxpY2F0ZUxheWVyXCIsXG4gIFwiUmVxdWlyZWRQaHlzaWNhbFF1YW50aXRpZXNcIixcbiAgXCJSZXNhbXBsaW5nXCIsXG4gIFwiUmVzYW1wbGluZ0FsZ29yaXRobURhdGFcIixcbiAgXCJSZXNhbXBsaW5nTWV0aG9kXCIsXG4gIFwiUmVzY2FsZVwiLFxuICBcIlJlc2NhbGluZ1RyYW5zZm9ybVwiLFxuICBcIlJlc2V0RGlyZWN0b3J5XCIsXG4gIFwiUmVzZXRTY2hlZHVsZWRUYXNrXCIsXG4gIFwiUmVzaGFwZUxheWVyXCIsXG4gIFwiUmVzaWR1ZVwiLFxuICBcIlJlc2lkdWVTdW1cIixcbiAgXCJSZXNpemVMYXllclwiLFxuICBcIlJlc29sdmVcIixcbiAgXCJSZXNvbHZlQ29udGV4dEFsaWFzZXNcIixcbiAgXCJSZXNvdXJjZUFjcXVpcmVcIixcbiAgXCJSZXNvdXJjZURhdGFcIixcbiAgXCJSZXNvdXJjZUZ1bmN0aW9uXCIsXG4gIFwiUmVzb3VyY2VPYmplY3RcIixcbiAgXCJSZXNvdXJjZVJlZ2lzdGVyXCIsXG4gIFwiUmVzb3VyY2VSZW1vdmVcIixcbiAgXCJSZXNvdXJjZVNlYXJjaFwiLFxuICBcIlJlc291cmNlU3VibWlzc2lvbk9iamVjdFwiLFxuICBcIlJlc291cmNlU3VibWl0XCIsXG4gIFwiUmVzb3VyY2VTeXN0ZW1CYXNlXCIsXG4gIFwiUmVzb3VyY2VTeXN0ZW1QYXRoXCIsXG4gIFwiUmVzb3VyY2VVcGRhdGVcIixcbiAgXCJSZXNvdXJjZVZlcnNpb25cIixcbiAgXCJSZXNwb25zZUZvcm1cIixcbiAgXCJSZXN0XCIsXG4gIFwiUmVzdGFydEludGVydmFsXCIsXG4gIFwiUmVzdHJpY3RlZFwiLFxuICBcIlJlc3VsdGFudFwiLFxuICBcIlJlc3VtZVBhY2tldFwiLFxuICBcIlJldHVyblwiLFxuICBcIlJldHVybkNyZWF0ZXNOZXdDZWxsXCIsXG4gIFwiUmV0dXJuRW50ZXJzSW5wdXRcIixcbiAgXCJSZXR1cm5FeHByZXNzaW9uUGFja2V0XCIsXG4gIFwiUmV0dXJuSW5wdXRGb3JtUGFja2V0XCIsXG4gIFwiUmV0dXJuUGFja2V0XCIsXG4gIFwiUmV0dXJuUmVjZWlwdEZ1bmN0aW9uXCIsXG4gIFwiUmV0dXJuVGV4dFBhY2tldFwiLFxuICBcIlJldmVyc2VcIixcbiAgXCJSZXZlcnNlQXBwbGllZFwiLFxuICBcIlJldmVyc2VCaW9ydGhvZ29uYWxTcGxpbmVXYXZlbGV0XCIsXG4gIFwiUmV2ZXJzZUVsZW1lbnRcIixcbiAgXCJSZXZlcnNlRXF1aWxpYnJpdW1cIixcbiAgXCJSZXZlcnNlR3JhcGhcIixcbiAgXCJSZXZlcnNlU29ydFwiLFxuICBcIlJldmVyc2VTb3J0QnlcIixcbiAgXCJSZXZlcnNlVXBFcXVpbGlicml1bVwiLFxuICBcIlJldm9sdXRpb25BeGlzXCIsXG4gIFwiUmV2b2x1dGlvblBsb3QzRFwiLFxuICBcIlJHQkNvbG9yXCIsXG4gIFwiUmljY2F0aVNvbHZlXCIsXG4gIFwiUmljZURpc3RyaWJ1dGlvblwiLFxuICBcIlJpZGdlRmlsdGVyXCIsXG4gIFwiUmllbWFublJcIixcbiAgXCJSaWVtYW5uU2llZ2VsVGhldGFcIixcbiAgXCJSaWVtYW5uU2llZ2VsWlwiLFxuICBcIlJpZW1hbm5YaVwiLFxuICBcIlJpZmZsZVwiLFxuICBcIlJpZ2h0XCIsXG4gIFwiUmlnaHRBcnJvd1wiLFxuICBcIlJpZ2h0QXJyb3dCYXJcIixcbiAgXCJSaWdodEFycm93TGVmdEFycm93XCIsXG4gIFwiUmlnaHRDb21wb3NpdGlvblwiLFxuICBcIlJpZ2h0Q29zZXRSZXByZXNlbnRhdGl2ZVwiLFxuICBcIlJpZ2h0RG93blRlZVZlY3RvclwiLFxuICBcIlJpZ2h0RG93blZlY3RvclwiLFxuICBcIlJpZ2h0RG93blZlY3RvckJhclwiLFxuICBcIlJpZ2h0VGVlXCIsXG4gIFwiUmlnaHRUZWVBcnJvd1wiLFxuICBcIlJpZ2h0VGVlVmVjdG9yXCIsXG4gIFwiUmlnaHRUcmlhbmdsZVwiLFxuICBcIlJpZ2h0VHJpYW5nbGVCYXJcIixcbiAgXCJSaWdodFRyaWFuZ2xlRXF1YWxcIixcbiAgXCJSaWdodFVwRG93blZlY3RvclwiLFxuICBcIlJpZ2h0VXBUZWVWZWN0b3JcIixcbiAgXCJSaWdodFVwVmVjdG9yXCIsXG4gIFwiUmlnaHRVcFZlY3RvckJhclwiLFxuICBcIlJpZ2h0VmVjdG9yXCIsXG4gIFwiUmlnaHRWZWN0b3JCYXJcIixcbiAgXCJSaXBsZXlLXCIsXG4gIFwiUmlwbGV5UmFzc29uUmVnaW9uXCIsXG4gIFwiUmlza0FjaGlldmVtZW50SW1wb3J0YW5jZVwiLFxuICBcIlJpc2tSZWR1Y3Rpb25JbXBvcnRhbmNlXCIsXG4gIFwiUm9idXN0Q29udmV4T3B0aW1pemF0aW9uXCIsXG4gIFwiUm9nZXJzVGFuaW1vdG9EaXNzaW1pbGFyaXR5XCIsXG4gIFwiUm9sbFBpdGNoWWF3QW5nbGVzXCIsXG4gIFwiUm9sbFBpdGNoWWF3TWF0cml4XCIsXG4gIFwiUm9tYW5OdW1lcmFsXCIsXG4gIFwiUm9vdFwiLFxuICBcIlJvb3RBcHByb3hpbWFudFwiLFxuICBcIlJvb3RJbnRlcnZhbHNcIixcbiAgXCJSb290TG9jdXNQbG90XCIsXG4gIFwiUm9vdE1lYW5TcXVhcmVcIixcbiAgXCJSb290T2ZVbml0eVFcIixcbiAgXCJSb290UmVkdWNlXCIsXG4gIFwiUm9vdHNcIixcbiAgXCJSb290U3VtXCIsXG4gIFwiUm9vdFRyZWVcIixcbiAgXCJSb3RhdGVcIixcbiAgXCJSb3RhdGVMYWJlbFwiLFxuICBcIlJvdGF0ZUxlZnRcIixcbiAgXCJSb3RhdGVSaWdodFwiLFxuICBcIlJvdGF0aW9uQWN0aW9uXCIsXG4gIFwiUm90YXRpb25Cb3hcIixcbiAgXCJSb3RhdGlvbkJveE9wdGlvbnNcIixcbiAgXCJSb3RhdGlvbk1hdHJpeFwiLFxuICBcIlJvdGF0aW9uVHJhbnNmb3JtXCIsXG4gIFwiUm91bmRcIixcbiAgXCJSb3VuZEltcGxpZXNcIixcbiAgXCJSb3VuZGluZ1JhZGl1c1wiLFxuICBcIlJvd1wiLFxuICBcIlJvd0FsaWdubWVudHNcIixcbiAgXCJSb3dCYWNrZ3JvdW5kc1wiLFxuICBcIlJvd0JveFwiLFxuICBcIlJvd0hlaWdodHNcIixcbiAgXCJSb3dMaW5lc1wiLFxuICBcIlJvd01pbkhlaWdodFwiLFxuICBcIlJvd1JlZHVjZVwiLFxuICBcIlJvd3NFcXVhbFwiLFxuICBcIlJvd1NwYWNpbmdzXCIsXG4gIFwiUlNvbHZlXCIsXG4gIFwiUlNvbHZlVmFsdWVcIixcbiAgXCJSdWRpblNoYXBpcm9cIixcbiAgXCJSdWR2YWxpc0dyb3VwUnVcIixcbiAgXCJSdWxlXCIsXG4gIFwiUnVsZUNvbmRpdGlvblwiLFxuICBcIlJ1bGVEZWxheWVkXCIsXG4gIFwiUnVsZUZvcm1cIixcbiAgXCJSdWxlUGxvdFwiLFxuICBcIlJ1bGVyVW5pdHNcIixcbiAgXCJSdWxlc1RyZWVcIixcbiAgXCJSdW5cIixcbiAgXCJSdW5Qcm9jZXNzXCIsXG4gIFwiUnVuU2NoZWR1bGVkVGFza1wiLFxuICBcIlJ1blRocm91Z2hcIixcbiAgXCJSdW50aW1lQXR0cmlidXRlc1wiLFxuICBcIlJ1bnRpbWVPcHRpb25zXCIsXG4gIFwiUnVzc2VsbFJhb0Rpc3NpbWlsYXJpdHlcIixcbiAgXCJTYW1lQXNcIixcbiAgXCJTYW1lUVwiLFxuICBcIlNhbWVUZXN0XCIsXG4gIFwiU2FtZVRlc3RQcm9wZXJ0aWVzXCIsXG4gIFwiU2FtcGxlZEVudGl0eUNsYXNzXCIsXG4gIFwiU2FtcGxlRGVwdGhcIixcbiAgXCJTYW1wbGVkU291bmRGdW5jdGlvblwiLFxuICBcIlNhbXBsZWRTb3VuZExpc3RcIixcbiAgXCJTYW1wbGVSYXRlXCIsXG4gIFwiU2FtcGxpbmdQZXJpb2RcIixcbiAgXCJTQVJJTUFQcm9jZXNzXCIsXG4gIFwiU0FSTUFQcm9jZXNzXCIsXG4gIFwiU0FTVHJpYW5nbGVcIixcbiAgXCJTYXRlbGxpdGVEYXRhXCIsXG4gIFwiU2F0aXNmaWFiaWxpdHlDb3VudFwiLFxuICBcIlNhdGlzZmlhYmlsaXR5SW5zdGFuY2VzXCIsXG4gIFwiU2F0aXNmaWFibGVRXCIsXG4gIFwiU2F0dXJkYXlcIixcbiAgXCJTYXZlXCIsXG4gIFwiU2F2ZWFibGVcIixcbiAgXCJTYXZlQXV0b0RlbGV0ZVwiLFxuICBcIlNhdmVDb25uZWN0aW9uXCIsXG4gIFwiU2F2ZURlZmluaXRpb25zXCIsXG4gIFwiU2F2aXR6a3lHb2xheU1hdHJpeFwiLFxuICBcIlNhd3Rvb3RoV2F2ZVwiLFxuICBcIlNjYWxlXCIsXG4gIFwiU2NhbGVkXCIsXG4gIFwiU2NhbGVEaXZpc2lvbnNcIixcbiAgXCJTY2FsZWRNb3VzZVBvc2l0aW9uXCIsXG4gIFwiU2NhbGVPcmlnaW5cIixcbiAgXCJTY2FsZVBhZGRpbmdcIixcbiAgXCJTY2FsZVJhbmdlc1wiLFxuICBcIlNjYWxlUmFuZ2VTdHlsZVwiLFxuICBcIlNjYWxpbmdGdW5jdGlvbnNcIixcbiAgXCJTY2FsaW5nTWF0cml4XCIsXG4gIFwiU2NhbGluZ1RyYW5zZm9ybVwiLFxuICBcIlNjYW5cIixcbiAgXCJTY2hlZHVsZWRUYXNrXCIsXG4gIFwiU2NoZWR1bGVkVGFza0FjdGl2ZVFcIixcbiAgXCJTY2hlZHVsZWRUYXNrSW5mb3JtYXRpb25cIixcbiAgXCJTY2hlZHVsZWRUYXNrSW5mb3JtYXRpb25EYXRhXCIsXG4gIFwiU2NoZWR1bGVkVGFza09iamVjdFwiLFxuICBcIlNjaGVkdWxlZFRhc2tzXCIsXG4gIFwiU2NodXJEZWNvbXBvc2l0aW9uXCIsXG4gIFwiU2NpZW50aWZpY0Zvcm1cIixcbiAgXCJTY2llbnRpZmljTm90YXRpb25UaHJlc2hvbGRcIixcbiAgXCJTY29yZXJHaVwiLFxuICBcIlNjb3JlckdpUHJpbWVcIixcbiAgXCJTY29yZXJIaVwiLFxuICBcIlNjb3JlckhpUHJpbWVcIixcbiAgXCJTY3JlZW5SZWN0YW5nbGVcIixcbiAgXCJTY3JlZW5TdHlsZUVudmlyb25tZW50XCIsXG4gIFwiU2NyaXB0QmFzZWxpbmVTaGlmdHNcIixcbiAgXCJTY3JpcHRGb3JtXCIsXG4gIFwiU2NyaXB0TGV2ZWxcIixcbiAgXCJTY3JpcHRNaW5TaXplXCIsXG4gIFwiU2NyaXB0UnVsZXNcIixcbiAgXCJTY3JpcHRTaXplTXVsdGlwbGllcnNcIixcbiAgXCJTY3JvbGxiYXJzXCIsXG4gIFwiU2Nyb2xsaW5nT3B0aW9uc1wiLFxuICBcIlNjcm9sbFBvc2l0aW9uXCIsXG4gIFwiU2VhcmNoQWRqdXN0bWVudFwiLFxuICBcIlNlYXJjaEluZGV4T2JqZWN0XCIsXG4gIFwiU2VhcmNoSW5kaWNlc1wiLFxuICBcIlNlYXJjaFF1ZXJ5U3RyaW5nXCIsXG4gIFwiU2VhcmNoUmVzdWx0T2JqZWN0XCIsXG4gIFwiU2VjXCIsXG4gIFwiU2VjaFwiLFxuICBcIlNlY2hEaXN0cmlidXRpb25cIixcbiAgXCJTZWNvbmRPcmRlckNvbmVPcHRpbWl6YXRpb25cIixcbiAgXCJTZWN0aW9uR3JvdXBpbmdcIixcbiAgXCJTZWN0b3JDaGFydFwiLFxuICBcIlNlY3RvckNoYXJ0M0RcIixcbiAgXCJTZWN0b3JPcmlnaW5cIixcbiAgXCJTZWN0b3JTcGFjaW5nXCIsXG4gIFwiU2VjdXJlZEF1dGhlbnRpY2F0aW9uS2V5XCIsXG4gIFwiU2VjdXJlZEF1dGhlbnRpY2F0aW9uS2V5c1wiLFxuICBcIlNlY3VyaXR5Q2VydGlmaWNhdGVcIixcbiAgXCJTZWVkUmFuZG9tXCIsXG4gIFwiU2VsZWN0XCIsXG4gIFwiU2VsZWN0YWJsZVwiLFxuICBcIlNlbGVjdENvbXBvbmVudHNcIixcbiAgXCJTZWxlY3RlZENlbGxzXCIsXG4gIFwiU2VsZWN0ZWROb3RlYm9va1wiLFxuICBcIlNlbGVjdEZpcnN0XCIsXG4gIFwiU2VsZWN0aW9uXCIsXG4gIFwiU2VsZWN0aW9uQW5pbWF0ZVwiLFxuICBcIlNlbGVjdGlvbkNlbGxcIixcbiAgXCJTZWxlY3Rpb25DZWxsQ3JlYXRlQ2VsbFwiLFxuICBcIlNlbGVjdGlvbkNlbGxEZWZhdWx0U3R5bGVcIixcbiAgXCJTZWxlY3Rpb25DZWxsUGFyZW50U3R5bGVcIixcbiAgXCJTZWxlY3Rpb25DcmVhdGVDZWxsXCIsXG4gIFwiU2VsZWN0aW9uRGVidWdnZXJUYWdcIixcbiAgXCJTZWxlY3Rpb25FdmFsdWF0ZVwiLFxuICBcIlNlbGVjdGlvbkV2YWx1YXRlQ3JlYXRlQ2VsbFwiLFxuICBcIlNlbGVjdGlvbk1vdmVcIixcbiAgXCJTZWxlY3Rpb25QbGFjZWhvbGRlclwiLFxuICBcIlNlbGVjdFdpdGhDb250ZW50c1wiLFxuICBcIlNlbGZMb29wc1wiLFxuICBcIlNlbGZMb29wU3R5bGVcIixcbiAgXCJTZW1hbnRpY0ltcG9ydFwiLFxuICBcIlNlbWFudGljSW1wb3J0U3RyaW5nXCIsXG4gIFwiU2VtYW50aWNJbnRlcnByZXRhdGlvblwiLFxuICBcIlNlbWlhbGdlYnJhaWNDb21wb25lbnRJbnN0YW5jZXNcIixcbiAgXCJTZW1pZGVmaW5pdGVPcHRpbWl6YXRpb25cIixcbiAgXCJTZW5kTWFpbFwiLFxuICBcIlNlbmRNZXNzYWdlXCIsXG4gIFwiU2VxdWVuY2VcIixcbiAgXCJTZXF1ZW5jZUFsaWdubWVudFwiLFxuICBcIlNlcXVlbmNlQXR0ZW50aW9uTGF5ZXJcIixcbiAgXCJTZXF1ZW5jZUNhc2VzXCIsXG4gIFwiU2VxdWVuY2VDb3VudFwiLFxuICBcIlNlcXVlbmNlRm9sZFwiLFxuICBcIlNlcXVlbmNlRm9sZExpc3RcIixcbiAgXCJTZXF1ZW5jZUZvcm1cIixcbiAgXCJTZXF1ZW5jZUhvbGRcIixcbiAgXCJTZXF1ZW5jZUluZGljZXNMYXllclwiLFxuICBcIlNlcXVlbmNlTGFzdExheWVyXCIsXG4gIFwiU2VxdWVuY2VNb3N0TGF5ZXJcIixcbiAgXCJTZXF1ZW5jZVBvc2l0aW9uXCIsXG4gIFwiU2VxdWVuY2VQcmVkaWN0XCIsXG4gIFwiU2VxdWVuY2VQcmVkaWN0b3JGdW5jdGlvblwiLFxuICBcIlNlcXVlbmNlUmVwbGFjZVwiLFxuICBcIlNlcXVlbmNlUmVzdExheWVyXCIsXG4gIFwiU2VxdWVuY2VSZXZlcnNlTGF5ZXJcIixcbiAgXCJTZXF1ZW5jZVNwbGl0XCIsXG4gIFwiU2VyaWVzXCIsXG4gIFwiU2VyaWVzQ29lZmZpY2llbnRcIixcbiAgXCJTZXJpZXNEYXRhXCIsXG4gIFwiU2VyaWVzVGVybUdvYWxcIixcbiAgXCJTZXJ2aWNlQ29ubmVjdFwiLFxuICBcIlNlcnZpY2VEaXNjb25uZWN0XCIsXG4gIFwiU2VydmljZUV4ZWN1dGVcIixcbiAgXCJTZXJ2aWNlT2JqZWN0XCIsXG4gIFwiU2VydmljZVJlcXVlc3RcIixcbiAgXCJTZXJ2aWNlUmVzcG9uc2VcIixcbiAgXCJTZXJ2aWNlU3VibWl0XCIsXG4gIFwiU2Vzc2lvblN1Ym1pdFwiLFxuICBcIlNlc3Npb25UaW1lXCIsXG4gIFwiU2V0XCIsXG4gIFwiU2V0QWNjdXJhY3lcIixcbiAgXCJTZXRBbHBoYUNoYW5uZWxcIixcbiAgXCJTZXRBdHRyaWJ1dGVzXCIsXG4gIFwiU2V0YmFja3NcIixcbiAgXCJTZXRDbG91ZERpcmVjdG9yeVwiLFxuICBcIlNldENvb2tpZXNcIixcbiAgXCJTZXREZWxheWVkXCIsXG4gIFwiU2V0RGlyZWN0b3J5XCIsXG4gIFwiU2V0RW52aXJvbm1lbnRcIixcbiAgXCJTZXRGaWxlRGF0ZVwiLFxuICBcIlNldEZpbGVGb3JtYXRQcm9wZXJ0aWVzXCIsXG4gIFwiU2V0T3B0aW9uc1wiLFxuICBcIlNldE9wdGlvbnNQYWNrZXRcIixcbiAgXCJTZXRQZXJtaXNzaW9uc1wiLFxuICBcIlNldFByZWNpc2lvblwiLFxuICBcIlNldFByb3BlcnR5XCIsXG4gIFwiU2V0U2VjdXJlZEF1dGhlbnRpY2F0aW9uS2V5XCIsXG4gIFwiU2V0U2VsZWN0ZWROb3RlYm9va1wiLFxuICBcIlNldFNoYXJlZEZ1bmN0aW9uXCIsXG4gIFwiU2V0U2hhcmVkVmFyaWFibGVcIixcbiAgXCJTZXRTdHJlYW1Qb3NpdGlvblwiLFxuICBcIlNldFN5c3RlbU1vZGVsXCIsXG4gIFwiU2V0U3lzdGVtT3B0aW9uc1wiLFxuICBcIlNldHRlclwiLFxuICBcIlNldHRlckJhclwiLFxuICBcIlNldHRlckJveFwiLFxuICBcIlNldHRlckJveE9wdGlvbnNcIixcbiAgXCJTZXR0aW5nXCIsXG4gIFwiU2V0VXNlcnNcIixcbiAgXCJTaGFkaW5nXCIsXG4gIFwiU2hhbGxvd1wiLFxuICBcIlNoYW5ub25XYXZlbGV0XCIsXG4gIFwiU2hhcGlyb1dpbGtUZXN0XCIsXG4gIFwiU2hhcmVcIixcbiAgXCJTaGFyaW5nTGlzdFwiLFxuICBcIlNoYXJwZW5cIixcbiAgXCJTaGVhcmluZ01hdHJpeFwiLFxuICBcIlNoZWFyaW5nVHJhbnNmb3JtXCIsXG4gIFwiU2hlbGxSZWdpb25cIixcbiAgXCJTaGVuQ2FzdGFuTWF0cml4XCIsXG4gIFwiU2hpZnRlZEdvbXBlcnR6RGlzdHJpYnV0aW9uXCIsXG4gIFwiU2hpZnRSZWdpc3RlclNlcXVlbmNlXCIsXG4gIFwiU2hvcnRcIixcbiAgXCJTaG9ydERvd25BcnJvd1wiLFxuICBcIlNob3J0ZXN0XCIsXG4gIFwiU2hvcnRlc3RNYXRjaFwiLFxuICBcIlNob3J0ZXN0UGF0aEZ1bmN0aW9uXCIsXG4gIFwiU2hvcnRMZWZ0QXJyb3dcIixcbiAgXCJTaG9ydFJpZ2h0QXJyb3dcIixcbiAgXCJTaG9ydFRpbWVGb3VyaWVyXCIsXG4gIFwiU2hvcnRUaW1lRm91cmllckRhdGFcIixcbiAgXCJTaG9ydFVwQXJyb3dcIixcbiAgXCJTaG93XCIsXG4gIFwiU2hvd0F1dG9Db252ZXJ0XCIsXG4gIFwiU2hvd0F1dG9TcGVsbENoZWNrXCIsXG4gIFwiU2hvd0F1dG9TdHlsZXNcIixcbiAgXCJTaG93Q2VsbEJyYWNrZXRcIixcbiAgXCJTaG93Q2VsbExhYmVsXCIsXG4gIFwiU2hvd0NlbGxUYWdzXCIsXG4gIFwiU2hvd0Nsb3NlZENlbGxBcmVhXCIsXG4gIFwiU2hvd0NvZGVBc3Npc3RcIixcbiAgXCJTaG93Q29udGVudHNcIixcbiAgXCJTaG93Q29udHJvbHNcIixcbiAgXCJTaG93Q3Vyc29yVHJhY2tlclwiLFxuICBcIlNob3dHcm91cE9wZW5DbG9zZUljb25cIixcbiAgXCJTaG93R3JvdXBPcGVuZXJcIixcbiAgXCJTaG93SW52aXNpYmxlQ2hhcmFjdGVyc1wiLFxuICBcIlNob3dQYWdlQnJlYWtzXCIsXG4gIFwiU2hvd1ByZWRpY3RpdmVJbnRlcmZhY2VcIixcbiAgXCJTaG93U2VsZWN0aW9uXCIsXG4gIFwiU2hvd1Nob3J0Qm94Rm9ybVwiLFxuICBcIlNob3dTcGVjaWFsQ2hhcmFjdGVyc1wiLFxuICBcIlNob3dTdHJpbmdDaGFyYWN0ZXJzXCIsXG4gIFwiU2hvd1N5bnRheFN0eWxlc1wiLFxuICBcIlNocmlua2luZ0RlbGF5XCIsXG4gIFwiU2hyaW5rV3JhcEJvdW5kaW5nQm94XCIsXG4gIFwiU2lkZXJlYWxUaW1lXCIsXG4gIFwiU2llZ2VsVGhldGFcIixcbiAgXCJTaWVnZWxUdWtleVRlc3RcIixcbiAgXCJTaWVycGluc2tpQ3VydmVcIixcbiAgXCJTaWVycGluc2tpTWVzaFwiLFxuICBcIlNpZ25cIixcbiAgXCJTaWduYXR1cmVcIixcbiAgXCJTaWduZWRSYW5rVGVzdFwiLFxuICBcIlNpZ25lZFJlZ2lvbkRpc3RhbmNlXCIsXG4gIFwiU2lnbmlmaWNhbmNlTGV2ZWxcIixcbiAgXCJTaWduUGFkZGluZ1wiLFxuICBcIlNpZ25UZXN0XCIsXG4gIFwiU2ltaWxhcml0eVJ1bGVzXCIsXG4gIFwiU2ltcGxlR3JhcGhcIixcbiAgXCJTaW1wbGVHcmFwaFFcIixcbiAgXCJTaW1wbGVQb2x5Z29uUVwiLFxuICBcIlNpbXBsZVBvbHloZWRyb25RXCIsXG4gIFwiU2ltcGxleFwiLFxuICBcIlNpbXBsaWZ5XCIsXG4gIFwiU2luXCIsXG4gIFwiU2luY1wiLFxuICBcIlNpbmdoTWFkZGFsYURpc3RyaWJ1dGlvblwiLFxuICBcIlNpbmdsZUV2YWx1YXRpb25cIixcbiAgXCJTaW5nbGVMZXR0ZXJJdGFsaWNzXCIsXG4gIFwiU2luZ2xlTGV0dGVyU3R5bGVcIixcbiAgXCJTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvblwiLFxuICBcIlNpbmd1bGFyVmFsdWVMaXN0XCIsXG4gIFwiU2luZ3VsYXJWYWx1ZVBsb3RcIixcbiAgXCJTaW5ndWxhclZhbHVlc1wiLFxuICBcIlNpbmhcIixcbiAgXCJTaW5oSW50ZWdyYWxcIixcbiAgXCJTaW5JbnRlZ3JhbFwiLFxuICBcIlNpeEpTeW1ib2xcIixcbiAgXCJTa2VsZXRvblwiLFxuICBcIlNrZWxldG9uVHJhbnNmb3JtXCIsXG4gIFwiU2tlbGxhbURpc3RyaWJ1dGlvblwiLFxuICBcIlNrZXduZXNzXCIsXG4gIFwiU2tld05vcm1hbERpc3RyaWJ1dGlvblwiLFxuICBcIlNraW5TdHlsZVwiLFxuICBcIlNraXBcIixcbiAgXCJTbGljZUNvbnRvdXJQbG90M0RcIixcbiAgXCJTbGljZURlbnNpdHlQbG90M0RcIixcbiAgXCJTbGljZURpc3RyaWJ1dGlvblwiLFxuICBcIlNsaWNlVmVjdG9yUGxvdDNEXCIsXG4gIFwiU2xpZGVyXCIsXG4gIFwiU2xpZGVyMkRcIixcbiAgXCJTbGlkZXIyREJveFwiLFxuICBcIlNsaWRlcjJEQm94T3B0aW9uc1wiLFxuICBcIlNsaWRlckJveFwiLFxuICBcIlNsaWRlckJveE9wdGlvbnNcIixcbiAgXCJTbGlkZVNob3dWaWRlb1wiLFxuICBcIlNsaWRlVmlld1wiLFxuICBcIlNsb3RcIixcbiAgXCJTbG90U2VxdWVuY2VcIixcbiAgXCJTbWFsbFwiLFxuICBcIlNtYWxsQ2lyY2xlXCIsXG4gIFwiU21hbGxlclwiLFxuICBcIlNtaXRoRGVjb21wb3NpdGlvblwiLFxuICBcIlNtaXRoRGVsYXlDb21wZW5zYXRvclwiLFxuICBcIlNtaXRoV2F0ZXJtYW5TaW1pbGFyaXR5XCIsXG4gIFwiU21vb3RoRGVuc2l0eUhpc3RvZ3JhbVwiLFxuICBcIlNtb290aEhpc3RvZ3JhbVwiLFxuICBcIlNtb290aEhpc3RvZ3JhbTNEXCIsXG4gIFwiU21vb3RoS2VybmVsRGlzdHJpYnV0aW9uXCIsXG4gIFwiU21vb3RoUG9pbnREZW5zaXR5XCIsXG4gIFwiU25EaXNwZXJzaW9uXCIsXG4gIFwiU25pcHBldFwiLFxuICBcIlNuaXBwZXRzVmlkZW9cIixcbiAgXCJTbnViUG9seWhlZHJvblwiLFxuICBcIlNvY2lhbE1lZGlhRGF0YVwiLFxuICBcIlNvY2tldFwiLFxuICBcIlNvY2tldENvbm5lY3RcIixcbiAgXCJTb2NrZXRMaXN0ZW5cIixcbiAgXCJTb2NrZXRMaXN0ZW5lclwiLFxuICBcIlNvY2tldE9iamVjdFwiLFxuICBcIlNvY2tldE9wZW5cIixcbiAgXCJTb2NrZXRSZWFkTWVzc2FnZVwiLFxuICBcIlNvY2tldFJlYWR5UVwiLFxuICBcIlNvY2tldHNcIixcbiAgXCJTb2NrZXRXYWl0QWxsXCIsXG4gIFwiU29ja2V0V2FpdE5leHRcIixcbiAgXCJTb2Z0bWF4TGF5ZXJcIixcbiAgXCJTb2thbFNuZWF0aERpc3NpbWlsYXJpdHlcIixcbiAgXCJTb2xhckVjbGlwc2VcIixcbiAgXCJTb2xhclN5c3RlbUZlYXR1cmVEYXRhXCIsXG4gIFwiU29sYXJUaW1lXCIsXG4gIFwiU29saWRBbmdsZVwiLFxuICBcIlNvbGlkQm91bmRhcnlMb2FkVmFsdWVcIixcbiAgXCJTb2xpZERhdGFcIixcbiAgXCJTb2xpZERpc3BsYWNlbWVudENvbmRpdGlvblwiLFxuICBcIlNvbGlkRml4ZWRDb25kaXRpb25cIixcbiAgXCJTb2xpZE1lY2hhbmljc1BERUNvbXBvbmVudFwiLFxuICBcIlNvbGlkTWVjaGFuaWNzU3RyYWluXCIsXG4gIFwiU29saWRNZWNoYW5pY3NTdHJlc3NcIixcbiAgXCJTb2xpZFJlZ2lvblFcIixcbiAgXCJTb2x2ZVwiLFxuICBcIlNvbHZlQWx3YXlzXCIsXG4gIFwiU29sdmVEZWxheWVkXCIsXG4gIFwiU29sdmVWYWx1ZXNcIixcbiAgXCJTb3J0XCIsXG4gIFwiU29ydEJ5XCIsXG4gIFwiU29ydGVkQnlcIixcbiAgXCJTb3J0ZWRFbnRpdHlDbGFzc1wiLFxuICBcIlNvdW5kXCIsXG4gIFwiU291bmRBbmRHcmFwaGljc1wiLFxuICBcIlNvdW5kTm90ZVwiLFxuICBcIlNvdW5kVm9sdW1lXCIsXG4gIFwiU291cmNlTGlua1wiLFxuICBcIlNvdXJjZVBERVRlcm1cIixcbiAgXCJTb3dcIixcbiAgXCJTcGFjZVwiLFxuICBcIlNwYWNlQ3VydmVEYXRhXCIsXG4gIFwiU3BhY2VGb3JtXCIsXG4gIFwiU3BhY2VyXCIsXG4gIFwiU3BhY2luZ3NcIixcbiAgXCJTcGFuXCIsXG4gIFwiU3BhbkFkanVzdG1lbnRzXCIsXG4gIFwiU3BhbkNoYXJhY3RlclJvdW5kaW5nXCIsXG4gIFwiU3BhbkZyb21BYm92ZVwiLFxuICBcIlNwYW5Gcm9tQm90aFwiLFxuICBcIlNwYW5Gcm9tTGVmdFwiLFxuICBcIlNwYW5MaW5lVGhpY2tuZXNzXCIsXG4gIFwiU3Bhbk1heFNpemVcIixcbiAgXCJTcGFuTWluU2l6ZVwiLFxuICBcIlNwYW5uaW5nQ2hhcmFjdGVyc1wiLFxuICBcIlNwYW5TeW1tZXRyaWNcIixcbiAgXCJTcGFyc2VBcnJheVwiLFxuICBcIlNwYXJzZUFycmF5UVwiLFxuICBcIlNwYXRpYWxCaW5uZWRQb2ludERhdGFcIixcbiAgXCJTcGF0aWFsQm91bmRhcnlDb3JyZWN0aW9uXCIsXG4gIFwiU3BhdGlhbEVzdGltYXRlXCIsXG4gIFwiU3BhdGlhbEVzdGltYXRvckZ1bmN0aW9uXCIsXG4gIFwiU3BhdGlhbEdyYXBoRGlzdHJpYnV0aW9uXCIsXG4gIFwiU3BhdGlhbEpcIixcbiAgXCJTcGF0aWFsTWVkaWFuXCIsXG4gIFwiU3BhdGlhbE5vaXNlTGV2ZWxcIixcbiAgXCJTcGF0aWFsT2JzZXJ2YXRpb25SZWdpb25RXCIsXG4gIFwiU3BhdGlhbFBvaW50RGF0YVwiLFxuICBcIlNwYXRpYWxQb2ludFNlbGVjdFwiLFxuICBcIlNwYXRpYWxSYW5kb21uZXNzVGVzdFwiLFxuICBcIlNwYXRpYWxUcmFuc2Zvcm1hdGlvbkxheWVyXCIsXG4gIFwiU3BhdGlhbFRyZW5kRnVuY3Rpb25cIixcbiAgXCJTcGVha1wiLFxuICBcIlNwZWFrZXJNYXRjaFFcIixcbiAgXCJTcGVhcm1hblJhbmtUZXN0XCIsXG4gIFwiU3BlYXJtYW5SaG9cIixcbiAgXCJTcGVjaWVzRGF0YVwiLFxuICBcIlNwZWNpZmljaXR5R29hbFwiLFxuICBcIlNwZWN0cmFsTGluZURhdGFcIixcbiAgXCJTcGVjdHJvZ3JhbVwiLFxuICBcIlNwZWN0cm9ncmFtQXJyYXlcIixcbiAgXCJTcGVjdWxhcml0eVwiLFxuICBcIlNwZWVjaENhc2VzXCIsXG4gIFwiU3BlZWNoSW50ZXJwcmV0ZXJcIixcbiAgXCJTcGVlY2hSZWNvZ25pemVcIixcbiAgXCJTcGVlY2hTeW50aGVzaXplXCIsXG4gIFwiU3BlbGxpbmdDb3JyZWN0aW9uXCIsXG4gIFwiU3BlbGxpbmdDb3JyZWN0aW9uTGlzdFwiLFxuICBcIlNwZWxsaW5nRGljdGlvbmFyaWVzXCIsXG4gIFwiU3BlbGxpbmdEaWN0aW9uYXJpZXNQYXRoXCIsXG4gIFwiU3BlbGxpbmdPcHRpb25zXCIsXG4gIFwiU3BoZXJlXCIsXG4gIFwiU3BoZXJlQm94XCIsXG4gIFwiU3BoZXJlQm94T3B0aW9uc1wiLFxuICBcIlNwaGVyZVBvaW50c1wiLFxuICBcIlNwaGVyaWNhbEJlc3NlbEpcIixcbiAgXCJTcGhlcmljYWxCZXNzZWxZXCIsXG4gIFwiU3BoZXJpY2FsSGFua2VsSDFcIixcbiAgXCJTcGhlcmljYWxIYW5rZWxIMlwiLFxuICBcIlNwaGVyaWNhbEhhcm1vbmljWVwiLFxuICBcIlNwaGVyaWNhbFBsb3QzRFwiLFxuICBcIlNwaGVyaWNhbFJlZ2lvblwiLFxuICBcIlNwaGVyaWNhbFNoZWxsXCIsXG4gIFwiU3BoZXJvaWRhbEVpZ2VudmFsdWVcIixcbiAgXCJTcGhlcm9pZGFsSm9pbmluZ0ZhY3RvclwiLFxuICBcIlNwaGVyb2lkYWxQU1wiLFxuICBcIlNwaGVyb2lkYWxQU1ByaW1lXCIsXG4gIFwiU3BoZXJvaWRhbFFTXCIsXG4gIFwiU3BoZXJvaWRhbFFTUHJpbWVcIixcbiAgXCJTcGhlcm9pZGFsUmFkaWFsRmFjdG9yXCIsXG4gIFwiU3BoZXJvaWRhbFMxXCIsXG4gIFwiU3BoZXJvaWRhbFMxUHJpbWVcIixcbiAgXCJTcGhlcm9pZGFsUzJcIixcbiAgXCJTcGhlcm9pZGFsUzJQcmltZVwiLFxuICBcIlNwbGljZVwiLFxuICBcIlNwbGljZWREaXN0cmlidXRpb25cIixcbiAgXCJTcGxpbmVDbG9zZWRcIixcbiAgXCJTcGxpbmVEZWdyZWVcIixcbiAgXCJTcGxpbmVLbm90c1wiLFxuICBcIlNwbGluZVdlaWdodHNcIixcbiAgXCJTcGxpdFwiLFxuICBcIlNwbGl0QnlcIixcbiAgXCJTcG9rZW5TdHJpbmdcIixcbiAgXCJTcG90TGlnaHRcIixcbiAgXCJTcXJ0XCIsXG4gIFwiU3FydEJveFwiLFxuICBcIlNxcnRCb3hPcHRpb25zXCIsXG4gIFwiU3F1YXJlXCIsXG4gIFwiU3F1YXJlZEV1Y2xpZGVhbkRpc3RhbmNlXCIsXG4gIFwiU3F1YXJlRnJlZVFcIixcbiAgXCJTcXVhcmVJbnRlcnNlY3Rpb25cIixcbiAgXCJTcXVhcmVNYXRyaXhRXCIsXG4gIFwiU3F1YXJlUmVwZWF0aW5nRWxlbWVudFwiLFxuICBcIlNxdWFyZXNSXCIsXG4gIFwiU3F1YXJlU3Vic2V0XCIsXG4gIFwiU3F1YXJlU3Vic2V0RXF1YWxcIixcbiAgXCJTcXVhcmVTdXBlcnNldFwiLFxuICBcIlNxdWFyZVN1cGVyc2V0RXF1YWxcIixcbiAgXCJTcXVhcmVVbmlvblwiLFxuICBcIlNxdWFyZVdhdmVcIixcbiAgXCJTU1NUcmlhbmdsZVwiLFxuICBcIlN0YWJpbGl0eU1hcmdpbnNcIixcbiAgXCJTdGFiaWxpdHlNYXJnaW5zU3R5bGVcIixcbiAgXCJTdGFibGVEaXN0cmlidXRpb25cIixcbiAgXCJTdGFja1wiLFxuICBcIlN0YWNrQmVnaW5cIixcbiAgXCJTdGFja0NvbXBsZXRlXCIsXG4gIFwiU3RhY2tlZERhdGVMaXN0UGxvdFwiLFxuICBcIlN0YWNrZWRMaXN0UGxvdFwiLFxuICBcIlN0YWNrSW5oaWJpdFwiLFxuICBcIlN0YWRpdW1TaGFwZVwiLFxuICBcIlN0YW5kYXJkQXRtb3NwaGVyZURhdGFcIixcbiAgXCJTdGFuZGFyZERldmlhdGlvblwiLFxuICBcIlN0YW5kYXJkRGV2aWF0aW9uRmlsdGVyXCIsXG4gIFwiU3RhbmRhcmRGb3JtXCIsXG4gIFwiU3RhbmRhcmRpemVcIixcbiAgXCJTdGFuZGFyZGl6ZWRcIixcbiAgXCJTdGFuZGFyZE9jZWFuRGF0YVwiLFxuICBcIlN0YW5kYnlEaXN0cmlidXRpb25cIixcbiAgXCJTdGFyXCIsXG4gIFwiU3RhckNsdXN0ZXJEYXRhXCIsXG4gIFwiU3RhckRhdGFcIixcbiAgXCJTdGFyR3JhcGhcIixcbiAgXCJTdGFydEFzeW5jaHJvbm91c1Rhc2tcIixcbiAgXCJTdGFydEV4dGVybmFsU2Vzc2lvblwiLFxuICBcIlN0YXJ0aW5nU3RlcFNpemVcIixcbiAgXCJTdGFydE9mTGluZVwiLFxuICBcIlN0YXJ0T2ZTdHJpbmdcIixcbiAgXCJTdGFydFByb2Nlc3NcIixcbiAgXCJTdGFydFNjaGVkdWxlZFRhc2tcIixcbiAgXCJTdGFydHVwU291bmRcIixcbiAgXCJTdGFydFdlYlNlc3Npb25cIixcbiAgXCJTdGF0ZURpbWVuc2lvbnNcIixcbiAgXCJTdGF0ZUZlZWRiYWNrR2FpbnNcIixcbiAgXCJTdGF0ZU91dHB1dEVzdGltYXRvclwiLFxuICBcIlN0YXRlUmVzcG9uc2VcIixcbiAgXCJTdGF0ZVNwYWNlTW9kZWxcIixcbiAgXCJTdGF0ZVNwYWNlUmVhbGl6YXRpb25cIixcbiAgXCJTdGF0ZVNwYWNlVHJhbnNmb3JtXCIsXG4gIFwiU3RhdGVUcmFuc2Zvcm1hdGlvbkxpbmVhcml6ZVwiLFxuICBcIlN0YXRpb25hcnlEaXN0cmlidXRpb25cIixcbiAgXCJTdGF0aW9uYXJ5V2F2ZWxldFBhY2tldFRyYW5zZm9ybVwiLFxuICBcIlN0YXRpb25hcnlXYXZlbGV0VHJhbnNmb3JtXCIsXG4gIFwiU3RhdHVzQXJlYVwiLFxuICBcIlN0YXR1c0NlbnRyYWxpdHlcIixcbiAgXCJTdGVwTW9uaXRvclwiLFxuICBcIlN0ZXJlb2NoZW1pc3RyeUVsZW1lbnRzXCIsXG4gIFwiU3RpZWx0amVzR2FtbWFcIixcbiAgXCJTdGlwcGxlU2hhZGluZ1wiLFxuICBcIlN0aXJsaW5nUzFcIixcbiAgXCJTdGlybGluZ1MyXCIsXG4gIFwiU3RvcEFzeW5jaHJvbm91c1Rhc2tcIixcbiAgXCJTdG9wcGluZ1Bvd2VyRGF0YVwiLFxuICBcIlN0b3BTY2hlZHVsZWRUYXNrXCIsXG4gIFwiU3RyYXRhVmFyaWFibGVzXCIsXG4gIFwiU3RyYXRvbm92aWNoUHJvY2Vzc1wiLFxuICBcIlN0cmF1c3NIYXJkY29yZVBvaW50UHJvY2Vzc1wiLFxuICBcIlN0cmF1c3NQb2ludFByb2Nlc3NcIixcbiAgXCJTdHJlYW1Db2xvckZ1bmN0aW9uXCIsXG4gIFwiU3RyZWFtQ29sb3JGdW5jdGlvblNjYWxpbmdcIixcbiAgXCJTdHJlYW1EZW5zaXR5UGxvdFwiLFxuICBcIlN0cmVhbU1hcmtlcnNcIixcbiAgXCJTdHJlYW1QbG90XCIsXG4gIFwiU3RyZWFtUGxvdDNEXCIsXG4gIFwiU3RyZWFtUG9pbnRzXCIsXG4gIFwiU3RyZWFtUG9zaXRpb25cIixcbiAgXCJTdHJlYW1zXCIsXG4gIFwiU3RyZWFtU2NhbGVcIixcbiAgXCJTdHJlYW1TdHlsZVwiLFxuICBcIlN0cmljdEluZXF1YWxpdGllc1wiLFxuICBcIlN0cmluZ1wiLFxuICBcIlN0cmluZ0JyZWFrXCIsXG4gIFwiU3RyaW5nQnl0ZUNvdW50XCIsXG4gIFwiU3RyaW5nQ2FzZXNcIixcbiAgXCJTdHJpbmdDb250YWluc1FcIixcbiAgXCJTdHJpbmdDb3VudFwiLFxuICBcIlN0cmluZ0RlbGV0ZVwiLFxuICBcIlN0cmluZ0Ryb3BcIixcbiAgXCJTdHJpbmdFbmRzUVwiLFxuICBcIlN0cmluZ0V4cHJlc3Npb25cIixcbiAgXCJTdHJpbmdFeHRyYWN0XCIsXG4gIFwiU3RyaW5nRm9ybVwiLFxuICBcIlN0cmluZ0Zvcm1hdFwiLFxuICBcIlN0cmluZ0Zvcm1hdFFcIixcbiAgXCJTdHJpbmdGcmVlUVwiLFxuICBcIlN0cmluZ0luc2VydFwiLFxuICBcIlN0cmluZ0pvaW5cIixcbiAgXCJTdHJpbmdMZW5ndGhcIixcbiAgXCJTdHJpbmdNYXRjaFFcIixcbiAgXCJTdHJpbmdQYWRMZWZ0XCIsXG4gIFwiU3RyaW5nUGFkUmlnaHRcIixcbiAgXCJTdHJpbmdQYXJ0XCIsXG4gIFwiU3RyaW5nUGFydGl0aW9uXCIsXG4gIFwiU3RyaW5nUG9zaXRpb25cIixcbiAgXCJTdHJpbmdRXCIsXG4gIFwiU3RyaW5nUmVwZWF0XCIsXG4gIFwiU3RyaW5nUmVwbGFjZVwiLFxuICBcIlN0cmluZ1JlcGxhY2VMaXN0XCIsXG4gIFwiU3RyaW5nUmVwbGFjZVBhcnRcIixcbiAgXCJTdHJpbmdSZXZlcnNlXCIsXG4gIFwiU3RyaW5nUmlmZmxlXCIsXG4gIFwiU3RyaW5nUm90YXRlTGVmdFwiLFxuICBcIlN0cmluZ1JvdGF0ZVJpZ2h0XCIsXG4gIFwiU3RyaW5nU2tlbGV0b25cIixcbiAgXCJTdHJpbmdTcGxpdFwiLFxuICBcIlN0cmluZ1N0YXJ0c1FcIixcbiAgXCJTdHJpbmdUYWtlXCIsXG4gIFwiU3RyaW5nVGFrZURyb3BcIixcbiAgXCJTdHJpbmdUZW1wbGF0ZVwiLFxuICBcIlN0cmluZ1RvQnl0ZUFycmF5XCIsXG4gIFwiU3RyaW5nVG9TdHJlYW1cIixcbiAgXCJTdHJpbmdUcmltXCIsXG4gIFwiU3RyaXBCb3hlc1wiLFxuICBcIlN0cmlwT25JbnB1dFwiLFxuICBcIlN0cmlwU3R5bGVPblBhc3RlXCIsXG4gIFwiU3RyaXBXcmFwcGVyQm94ZXNcIixcbiAgXCJTdHJva2VGb3JtXCIsXG4gIFwiU3RydWNrdGhyb3VnaFwiLFxuICBcIlN0cnVjdHVyYWxJbXBvcnRhbmNlXCIsXG4gIFwiU3RydWN0dXJlZEFycmF5XCIsXG4gIFwiU3RydWN0dXJlZEFycmF5SGVhZFFcIixcbiAgXCJTdHJ1Y3R1cmVkU2VsZWN0aW9uXCIsXG4gIFwiU3RydXZlSFwiLFxuICBcIlN0cnV2ZUxcIixcbiAgXCJTdHViXCIsXG4gIFwiU3R1ZGVudFREaXN0cmlidXRpb25cIixcbiAgXCJTdHlsZVwiLFxuICBcIlN0eWxlQm94XCIsXG4gIFwiU3R5bGVCb3hBdXRvRGVsZXRlXCIsXG4gIFwiU3R5bGVEYXRhXCIsXG4gIFwiU3R5bGVEZWZpbml0aW9uc1wiLFxuICBcIlN0eWxlRm9ybVwiLFxuICBcIlN0eWxlSGludHNcIixcbiAgXCJTdHlsZUtleU1hcHBpbmdcIixcbiAgXCJTdHlsZU1lbnVMaXN0aW5nXCIsXG4gIFwiU3R5bGVOYW1lRGlhbG9nU2V0dGluZ3NcIixcbiAgXCJTdHlsZU5hbWVzXCIsXG4gIFwiU3R5bGVQcmludFwiLFxuICBcIlN0eWxlU2hlZXRQYXRoXCIsXG4gIFwiU3ViZGl2aWRlXCIsXG4gIFwiU3ViZmFjdG9yaWFsXCIsXG4gIFwiU3ViZ3JhcGhcIixcbiAgXCJTdWJNaW51c1wiLFxuICBcIlN1YlBsdXNcIixcbiAgXCJTdWJyZXN1bHRhbnRQb2x5bm9taWFsUmVtYWluZGVyc1wiLFxuICBcIlN1YnJlc3VsdGFudFBvbHlub21pYWxzXCIsXG4gIFwiU3VicmVzdWx0YW50c1wiLFxuICBcIlN1YnNjcmlwdFwiLFxuICBcIlN1YnNjcmlwdEJveFwiLFxuICBcIlN1YnNjcmlwdEJveE9wdGlvbnNcIixcbiAgXCJTdWJzY3JpcHRlZFwiLFxuICBcIlN1YnNlcXVlbmNlc1wiLFxuICBcIlN1YnNldFwiLFxuICBcIlN1YnNldENhc2VzXCIsXG4gIFwiU3Vic2V0Q291bnRcIixcbiAgXCJTdWJzZXRFcXVhbFwiLFxuICBcIlN1YnNldE1hcFwiLFxuICBcIlN1YnNldFBvc2l0aW9uXCIsXG4gIFwiU3Vic2V0UVwiLFxuICBcIlN1YnNldFJlcGxhY2VcIixcbiAgXCJTdWJzZXRzXCIsXG4gIFwiU3ViU3RhclwiLFxuICBcIlN1YnN0aXR1dGlvblN5c3RlbVwiLFxuICBcIlN1YnN1cGVyc2NyaXB0XCIsXG4gIFwiU3Vic3VwZXJzY3JpcHRCb3hcIixcbiAgXCJTdWJzdXBlcnNjcmlwdEJveE9wdGlvbnNcIixcbiAgXCJTdWJ0aXRsZUVuY29kaW5nXCIsXG4gIFwiU3VidGl0bGVUcmFja1NlbGVjdGlvblwiLFxuICBcIlN1YnRyYWN0XCIsXG4gIFwiU3VidHJhY3RGcm9tXCIsXG4gIFwiU3VidHJhY3RTaWRlc1wiLFxuICBcIlN1YlZhbHVlc1wiLFxuICBcIlN1Y2NlZWRzXCIsXG4gIFwiU3VjY2VlZHNFcXVhbFwiLFxuICBcIlN1Y2NlZWRzU2xhbnRFcXVhbFwiLFxuICBcIlN1Y2NlZWRzVGlsZGVcIixcbiAgXCJTdWNjZXNzXCIsXG4gIFwiU3VjaFRoYXRcIixcbiAgXCJTdW1cIixcbiAgXCJTdW1Db252ZXJnZW5jZVwiLFxuICBcIlN1bW1hdGlvbkxheWVyXCIsXG4gIFwiU3VuZGF5XCIsXG4gIFwiU3VuUG9zaXRpb25cIixcbiAgXCJTdW5yaXNlXCIsXG4gIFwiU3Vuc2V0XCIsXG4gIFwiU3VwZXJEYWdnZXJcIixcbiAgXCJTdXBlck1pbnVzXCIsXG4gIFwiU3VwZXJub3ZhRGF0YVwiLFxuICBcIlN1cGVyUGx1c1wiLFxuICBcIlN1cGVyc2NyaXB0XCIsXG4gIFwiU3VwZXJzY3JpcHRCb3hcIixcbiAgXCJTdXBlcnNjcmlwdEJveE9wdGlvbnNcIixcbiAgXCJTdXBlcnNldFwiLFxuICBcIlN1cGVyc2V0RXF1YWxcIixcbiAgXCJTdXBlclN0YXJcIixcbiAgXCJTdXJkXCIsXG4gIFwiU3VyZEZvcm1cIixcbiAgXCJTdXJmYWNlQXBwZWFyYW5jZVwiLFxuICBcIlN1cmZhY2VBcmVhXCIsXG4gIFwiU3VyZmFjZUNvbG9yXCIsXG4gIFwiU3VyZmFjZURhdGFcIixcbiAgXCJTdXJmYWNlR3JhcGhpY3NcIixcbiAgXCJTdXJ2aXZhbERpc3RyaWJ1dGlvblwiLFxuICBcIlN1cnZpdmFsRnVuY3Rpb25cIixcbiAgXCJTdXJ2aXZhbE1vZGVsXCIsXG4gIFwiU3Vydml2YWxNb2RlbEZpdFwiLFxuICBcIlN1c3BlbmRQYWNrZXRcIixcbiAgXCJTdXp1a2lEaXN0cmlidXRpb25cIixcbiAgXCJTdXp1a2lHcm91cFN1elwiLFxuICBcIlN3YXRjaExlZ2VuZFwiLFxuICBcIlN3aXRjaFwiLFxuICBcIlN5bWJvbFwiLFxuICBcIlN5bWJvbE5hbWVcIixcbiAgXCJTeW1sZXRXYXZlbGV0XCIsXG4gIFwiU3ltbWV0cmljXCIsXG4gIFwiU3ltbWV0cmljRGlmZmVyZW5jZVwiLFxuICBcIlN5bW1ldHJpY0dyb3VwXCIsXG4gIFwiU3ltbWV0cmljS2V5XCIsXG4gIFwiU3ltbWV0cmljTWF0cml4UVwiLFxuICBcIlN5bW1ldHJpY1BvbHlub21pYWxcIixcbiAgXCJTeW1tZXRyaWNSZWR1Y3Rpb25cIixcbiAgXCJTeW1tZXRyaXplXCIsXG4gIFwiU3ltbWV0cml6ZWRBcnJheVwiLFxuICBcIlN5bW1ldHJpemVkQXJyYXlSdWxlc1wiLFxuICBcIlN5bW1ldHJpemVkRGVwZW5kZW50Q29tcG9uZW50c1wiLFxuICBcIlN5bW1ldHJpemVkSW5kZXBlbmRlbnRDb21wb25lbnRzXCIsXG4gIFwiU3ltbWV0cml6ZWRSZXBsYWNlUGFydFwiLFxuICBcIlN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb25cIixcbiAgXCJTeW5jaHJvbm91c1VwZGF0aW5nXCIsXG4gIFwiU3lub255bXNcIixcbiAgXCJTeW50YXhcIixcbiAgXCJTeW50YXhGb3JtXCIsXG4gIFwiU3ludGF4SW5mb3JtYXRpb25cIixcbiAgXCJTeW50YXhMZW5ndGhcIixcbiAgXCJTeW50YXhQYWNrZXRcIixcbiAgXCJTeW50YXhRXCIsXG4gIFwiU3ludGhlc2l6ZU1pc3NpbmdWYWx1ZXNcIixcbiAgXCJTeXN0ZW1DcmVkZW50aWFsXCIsXG4gIFwiU3lzdGVtQ3JlZGVudGlhbERhdGFcIixcbiAgXCJTeXN0ZW1DcmVkZW50aWFsS2V5XCIsXG4gIFwiU3lzdGVtQ3JlZGVudGlhbEtleXNcIixcbiAgXCJTeXN0ZW1DcmVkZW50aWFsU3RvcmVPYmplY3RcIixcbiAgXCJTeXN0ZW1EaWFsb2dJbnB1dFwiLFxuICBcIlN5c3RlbUV4Y2VwdGlvblwiLFxuICBcIlN5c3RlbUdldFwiLFxuICBcIlN5c3RlbUhlbHBQYXRoXCIsXG4gIFwiU3lzdGVtSW5mb3JtYXRpb25cIixcbiAgXCJTeXN0ZW1JbmZvcm1hdGlvbkRhdGFcIixcbiAgXCJTeXN0ZW1JbnN0YWxsXCIsXG4gIFwiU3lzdGVtTW9kZWxcIixcbiAgXCJTeXN0ZW1Nb2RlbGVyXCIsXG4gIFwiU3lzdGVtTW9kZWxFeGFtcGxlc1wiLFxuICBcIlN5c3RlbU1vZGVsTGluZWFyaXplXCIsXG4gIFwiU3lzdGVtTW9kZWxNZWFzdXJlbWVudHNcIixcbiAgXCJTeXN0ZW1Nb2RlbFBhcmFtZXRyaWNTaW11bGF0ZVwiLFxuICBcIlN5c3RlbU1vZGVsUGxvdFwiLFxuICBcIlN5c3RlbU1vZGVsUHJvZ3Jlc3NSZXBvcnRpbmdcIixcbiAgXCJTeXN0ZW1Nb2RlbFJlbGlhYmlsaXR5XCIsXG4gIFwiU3lzdGVtTW9kZWxzXCIsXG4gIFwiU3lzdGVtTW9kZWxTaW11bGF0ZVwiLFxuICBcIlN5c3RlbU1vZGVsU2ltdWxhdGVTZW5zaXRpdml0eVwiLFxuICBcIlN5c3RlbU1vZGVsU2ltdWxhdGlvbkRhdGFcIixcbiAgXCJTeXN0ZW1PcGVuXCIsXG4gIFwiU3lzdGVtT3B0aW9uc1wiLFxuICBcIlN5c3RlbVByb2Nlc3NEYXRhXCIsXG4gIFwiU3lzdGVtUHJvY2Vzc2VzXCIsXG4gIFwiU3lzdGVtc0Nvbm5lY3Rpb25zTW9kZWxcIixcbiAgXCJTeXN0ZW1zTW9kZWxDb250cm9sbGVyRGF0YVwiLFxuICBcIlN5c3RlbXNNb2RlbERlbGF5XCIsXG4gIFwiU3lzdGVtc01vZGVsRGVsYXlBcHByb3hpbWF0ZVwiLFxuICBcIlN5c3RlbXNNb2RlbERlbGV0ZVwiLFxuICBcIlN5c3RlbXNNb2RlbERpbWVuc2lvbnNcIixcbiAgXCJTeXN0ZW1zTW9kZWxFeHRyYWN0XCIsXG4gIFwiU3lzdGVtc01vZGVsRmVlZGJhY2tDb25uZWN0XCIsXG4gIFwiU3lzdGVtc01vZGVsTGFiZWxzXCIsXG4gIFwiU3lzdGVtc01vZGVsTGluZWFyaXR5XCIsXG4gIFwiU3lzdGVtc01vZGVsTWVyZ2VcIixcbiAgXCJTeXN0ZW1zTW9kZWxPcmRlclwiLFxuICBcIlN5c3RlbXNNb2RlbFBhcmFsbGVsQ29ubmVjdFwiLFxuICBcIlN5c3RlbXNNb2RlbFNlcmllc0Nvbm5lY3RcIixcbiAgXCJTeXN0ZW1zTW9kZWxTdGF0ZUZlZWRiYWNrQ29ubmVjdFwiLFxuICBcIlN5c3RlbXNNb2RlbFZlY3RvclJlbGF0aXZlT3JkZXJzXCIsXG4gIFwiU3lzdGVtU3R1YlwiLFxuICBcIlN5c3RlbVRlc3RcIixcbiAgXCJUYWJcIixcbiAgXCJUYWJGaWxsaW5nXCIsXG4gIFwiVGFibGVcIixcbiAgXCJUYWJsZUFsaWdubWVudHNcIixcbiAgXCJUYWJsZURlcHRoXCIsXG4gIFwiVGFibGVEaXJlY3Rpb25zXCIsXG4gIFwiVGFibGVGb3JtXCIsXG4gIFwiVGFibGVIZWFkaW5nc1wiLFxuICBcIlRhYmxlU3BhY2luZ1wiLFxuICBcIlRhYmxlVmlld1wiLFxuICBcIlRhYmxlVmlld0JveFwiLFxuICBcIlRhYmxlVmlld0JveEFsaWdubWVudFwiLFxuICBcIlRhYmxlVmlld0JveEJhY2tncm91bmRcIixcbiAgXCJUYWJsZVZpZXdCb3hIZWFkZXJzXCIsXG4gIFwiVGFibGVWaWV3Qm94SXRlbVNpemVcIixcbiAgXCJUYWJsZVZpZXdCb3hJdGVtU3R5bGVcIixcbiAgXCJUYWJsZVZpZXdCb3hPcHRpb25zXCIsXG4gIFwiVGFiU3BhY2luZ3NcIixcbiAgXCJUYWJWaWV3XCIsXG4gIFwiVGFiVmlld0JveFwiLFxuICBcIlRhYlZpZXdCb3hPcHRpb25zXCIsXG4gIFwiVGFnQm94XCIsXG4gIFwiVGFnQm94Tm90ZVwiLFxuICBcIlRhZ0JveE9wdGlvbnNcIixcbiAgXCJUYWdnaW5nUnVsZXNcIixcbiAgXCJUYWdTZXRcIixcbiAgXCJUYWdTZXREZWxheWVkXCIsXG4gIFwiVGFnU3R5bGVcIixcbiAgXCJUYWdVbnNldFwiLFxuICBcIlRha2VcIixcbiAgXCJUYWtlRHJvcFwiLFxuICBcIlRha2VMYXJnZXN0XCIsXG4gIFwiVGFrZUxhcmdlc3RCeVwiLFxuICBcIlRha2VMaXN0XCIsXG4gIFwiVGFrZVNtYWxsZXN0XCIsXG4gIFwiVGFrZVNtYWxsZXN0QnlcIixcbiAgXCJUYWtlV2hpbGVcIixcbiAgXCJUYWxseVwiLFxuICBcIlRhblwiLFxuICBcIlRhbmhcIixcbiAgXCJUYXJnZXREZXZpY2VcIixcbiAgXCJUYXJnZXRGdW5jdGlvbnNcIixcbiAgXCJUYXJnZXRTeXN0ZW1cIixcbiAgXCJUYXJnZXRVbml0c1wiLFxuICBcIlRhc2tBYm9ydFwiLFxuICBcIlRhc2tFeGVjdXRlXCIsXG4gIFwiVGFza09iamVjdFwiLFxuICBcIlRhc2tSZW1vdmVcIixcbiAgXCJUYXNrUmVzdW1lXCIsXG4gIFwiVGFza3NcIixcbiAgXCJUYXNrU3VzcGVuZFwiLFxuICBcIlRhc2tXYWl0XCIsXG4gIFwiVGF1dG9sb2d5UVwiLFxuICBcIlRlbGVncmFwaFByb2Nlc3NcIixcbiAgXCJUZW1wbGF0ZUFwcGx5XCIsXG4gIFwiVGVtcGxhdGVBcmdCb3hcIixcbiAgXCJUZW1wbGF0ZUJveFwiLFxuICBcIlRlbXBsYXRlQm94T3B0aW9uc1wiLFxuICBcIlRlbXBsYXRlRXZhbHVhdGVcIixcbiAgXCJUZW1wbGF0ZUV4cHJlc3Npb25cIixcbiAgXCJUZW1wbGF0ZUlmXCIsXG4gIFwiVGVtcGxhdGVPYmplY3RcIixcbiAgXCJUZW1wbGF0ZVNlcXVlbmNlXCIsXG4gIFwiVGVtcGxhdGVTbG90XCIsXG4gIFwiVGVtcGxhdGVTbG90U2VxdWVuY2VcIixcbiAgXCJUZW1wbGF0ZVVuZXZhbHVhdGVkXCIsXG4gIFwiVGVtcGxhdGVWZXJiYXRpbVwiLFxuICBcIlRlbXBsYXRlV2l0aFwiLFxuICBcIlRlbXBvcmFsRGF0YVwiLFxuICBcIlRlbXBvcmFsUmVndWxhcml0eVwiLFxuICBcIlRlbXBvcmFyeVwiLFxuICBcIlRlbXBvcmFyeVZhcmlhYmxlXCIsXG4gIFwiVGVuc29yQ29udHJhY3RcIixcbiAgXCJUZW5zb3JEaW1lbnNpb25zXCIsXG4gIFwiVGVuc29yRXhwYW5kXCIsXG4gIFwiVGVuc29yUHJvZHVjdFwiLFxuICBcIlRlbnNvclFcIixcbiAgXCJUZW5zb3JSYW5rXCIsXG4gIFwiVGVuc29yUmVkdWNlXCIsXG4gIFwiVGVuc29yU3ltbWV0cnlcIixcbiAgXCJUZW5zb3JUcmFuc3Bvc2VcIixcbiAgXCJUZW5zb3JXZWRnZVwiLFxuICBcIlRlcm1pbmF0ZWRFdmFsdWF0aW9uXCIsXG4gIFwiVGVybmFyeUxpc3RQbG90XCIsXG4gIFwiVGVybmFyeVBsb3RDb3JuZXJzXCIsXG4gIFwiVGVzdElEXCIsXG4gIFwiVGVzdFJlcG9ydFwiLFxuICBcIlRlc3RSZXBvcnRPYmplY3RcIixcbiAgXCJUZXN0UmVzdWx0T2JqZWN0XCIsXG4gIFwiVGV0cmFoZWRyb25cIixcbiAgXCJUZXRyYWhlZHJvbkJveFwiLFxuICBcIlRldHJhaGVkcm9uQm94T3B0aW9uc1wiLFxuICBcIlRlWEZvcm1cIixcbiAgXCJUZVhTYXZlXCIsXG4gIFwiVGV4dFwiLFxuICBcIlRleHQzREJveFwiLFxuICBcIlRleHQzREJveE9wdGlvbnNcIixcbiAgXCJUZXh0QWxpZ25tZW50XCIsXG4gIFwiVGV4dEJhbmRcIixcbiAgXCJUZXh0Qm91bmRpbmdCb3hcIixcbiAgXCJUZXh0Qm94XCIsXG4gIFwiVGV4dENhc2VzXCIsXG4gIFwiVGV4dENlbGxcIixcbiAgXCJUZXh0Q2xpcGJvYXJkVHlwZVwiLFxuICBcIlRleHRDb250ZW50c1wiLFxuICBcIlRleHREYXRhXCIsXG4gIFwiVGV4dEVsZW1lbnRcIixcbiAgXCJUZXh0Rm9ybVwiLFxuICBcIlRleHRHcmlkXCIsXG4gIFwiVGV4dEp1c3RpZmljYXRpb25cIixcbiAgXCJUZXh0TGluZVwiLFxuICBcIlRleHRQYWNrZXRcIixcbiAgXCJUZXh0UGFyYWdyYXBoXCIsXG4gIFwiVGV4dFBvc2l0aW9uXCIsXG4gIFwiVGV4dFJlY29nbml6ZVwiLFxuICBcIlRleHRTZWFyY2hcIixcbiAgXCJUZXh0U2VhcmNoUmVwb3J0XCIsXG4gIFwiVGV4dFNlbnRlbmNlc1wiLFxuICBcIlRleHRTdHJpbmdcIixcbiAgXCJUZXh0U3RydWN0dXJlXCIsXG4gIFwiVGV4dFN0eWxlXCIsXG4gIFwiVGV4dFRyYW5zbGF0aW9uXCIsXG4gIFwiVGV4dHVyZVwiLFxuICBcIlRleHR1cmVDb29yZGluYXRlRnVuY3Rpb25cIixcbiAgXCJUZXh0dXJlQ29vcmRpbmF0ZVNjYWxpbmdcIixcbiAgXCJUZXh0V29yZHNcIixcbiAgXCJUaGVyZWZvcmVcIixcbiAgXCJUaGVybW9keW5hbWljRGF0YVwiLFxuICBcIlRoZXJtb21ldGVyR2F1Z2VcIixcbiAgXCJUaGlja1wiLFxuICBcIlRoaWNrbmVzc1wiLFxuICBcIlRoaW5cIixcbiAgXCJUaGlubmluZ1wiLFxuICBcIlRoaXNMaW5rXCIsXG4gIFwiVGhvbWFzUG9pbnRQcm9jZXNzXCIsXG4gIFwiVGhvbXBzb25Hcm91cFRoXCIsXG4gIFwiVGhyZWFkXCIsXG4gIFwiVGhyZWFkZWRcIixcbiAgXCJUaHJlYWRpbmdMYXllclwiLFxuICBcIlRocmVlSlN5bWJvbFwiLFxuICBcIlRocmVzaG9sZFwiLFxuICBcIlRocm91Z2hcIixcbiAgXCJUaHJvd1wiLFxuICBcIlRodWVNb3JzZVwiLFxuICBcIlRodW1ibmFpbFwiLFxuICBcIlRodXJzZGF5XCIsXG4gIFwiVGlja0RpcmVjdGlvblwiLFxuICBcIlRpY2tMYWJlbE9yaWVudGF0aW9uXCIsXG4gIFwiVGlja0xhYmVsUG9zaXRpb25pbmdcIixcbiAgXCJUaWNrTGFiZWxzXCIsXG4gIFwiVGlja0xlbmd0aHNcIixcbiAgXCJUaWNrUG9zaXRpb25zXCIsXG4gIFwiVGlja3NcIixcbiAgXCJUaWNrc1N0eWxlXCIsXG4gIFwiVGlkZURhdGFcIixcbiAgXCJUaWxkZVwiLFxuICBcIlRpbGRlRXF1YWxcIixcbiAgXCJUaWxkZUZ1bGxFcXVhbFwiLFxuICBcIlRpbGRlVGlsZGVcIixcbiAgXCJUaW1lQ29uc3RyYWluZWRcIixcbiAgXCJUaW1lQ29uc3RyYWludFwiLFxuICBcIlRpbWVEaXJlY3Rpb25cIixcbiAgXCJUaW1lRm9ybWF0XCIsXG4gIFwiVGltZUdvYWxcIixcbiAgXCJUaW1lbGluZVBsb3RcIixcbiAgXCJUaW1lT2JqZWN0XCIsXG4gIFwiVGltZU9iamVjdFFcIixcbiAgXCJUaW1lUmVtYWluaW5nXCIsXG4gIFwiVGltZXNcIixcbiAgXCJUaW1lc0J5XCIsXG4gIFwiVGltZVNlcmllc1wiLFxuICBcIlRpbWVTZXJpZXNBZ2dyZWdhdGVcIixcbiAgXCJUaW1lU2VyaWVzRm9yZWNhc3RcIixcbiAgXCJUaW1lU2VyaWVzSW5zZXJ0XCIsXG4gIFwiVGltZVNlcmllc0ludmVydGliaWxpdHlcIixcbiAgXCJUaW1lU2VyaWVzTWFwXCIsXG4gIFwiVGltZVNlcmllc01hcFRocmVhZFwiLFxuICBcIlRpbWVTZXJpZXNNb2RlbFwiLFxuICBcIlRpbWVTZXJpZXNNb2RlbEZpdFwiLFxuICBcIlRpbWVTZXJpZXNSZXNhbXBsZVwiLFxuICBcIlRpbWVTZXJpZXNSZXNjYWxlXCIsXG4gIFwiVGltZVNlcmllc1NoaWZ0XCIsXG4gIFwiVGltZVNlcmllc1RocmVhZFwiLFxuICBcIlRpbWVTZXJpZXNXaW5kb3dcIixcbiAgXCJUaW1lU3lzdGVtXCIsXG4gIFwiVGltZVN5c3RlbUNvbnZlcnRcIixcbiAgXCJUaW1lVXNlZFwiLFxuICBcIlRpbWVWYWx1ZVwiLFxuICBcIlRpbWVXYXJwaW5nQ29ycmVzcG9uZGVuY2VcIixcbiAgXCJUaW1lV2FycGluZ0Rpc3RhbmNlXCIsXG4gIFwiVGltZVpvbmVcIixcbiAgXCJUaW1lWm9uZUNvbnZlcnRcIixcbiAgXCJUaW1lWm9uZU9mZnNldFwiLFxuICBcIlRpbWluZ1wiLFxuICBcIlRpbnlcIixcbiAgXCJUaXRsZUdyb3VwaW5nXCIsXG4gIFwiVGl0c0dyb3VwVFwiLFxuICBcIlRvQm94ZXNcIixcbiAgXCJUb0NoYXJhY3RlckNvZGVcIixcbiAgXCJUb0NvbG9yXCIsXG4gIFwiVG9Db250aW51b3VzVGltZU1vZGVsXCIsXG4gIFwiVG9EYXRlXCIsXG4gIFwiVG9kYXlcIixcbiAgXCJUb0Rpc2NyZXRlVGltZU1vZGVsXCIsXG4gIFwiVG9FbnRpdHlcIixcbiAgXCJUb2VwbGl0ek1hdHJpeFwiLFxuICBcIlRvRXhwcmVzc2lvblwiLFxuICBcIlRvRmlsZU5hbWVcIixcbiAgXCJUb2dldGhlclwiLFxuICBcIlRvZ2dsZVwiLFxuICBcIlRvZ2dsZUZhbHNlXCIsXG4gIFwiVG9nZ2xlclwiLFxuICBcIlRvZ2dsZXJCYXJcIixcbiAgXCJUb2dnbGVyQm94XCIsXG4gIFwiVG9nZ2xlckJveE9wdGlvbnNcIixcbiAgXCJUb0hlbGRFeHByZXNzaW9uXCIsXG4gIFwiVG9JbnZlcnRpYmxlVGltZVNlcmllc1wiLFxuICBcIlRva2VuV29yZHNcIixcbiAgXCJUb2xlcmFuY2VcIixcbiAgXCJUb0xvd2VyQ2FzZVwiLFxuICBcIlRvbW9ycm93XCIsXG4gIFwiVG9OdW1iZXJGaWVsZFwiLFxuICBcIlRvb0JpZ1wiLFxuICBcIlRvb2x0aXBcIixcbiAgXCJUb29sdGlwQm94XCIsXG4gIFwiVG9vbHRpcEJveE9wdGlvbnNcIixcbiAgXCJUb29sdGlwRGVsYXlcIixcbiAgXCJUb29sdGlwU3R5bGVcIixcbiAgXCJUb29uU2hhZGluZ1wiLFxuICBcIlRvcFwiLFxuICBcIlRvcEhhdFRyYW5zZm9ybVwiLFxuICBcIlRvUG9sYXJDb29yZGluYXRlc1wiLFxuICBcIlRvcG9sb2dpY2FsU29ydFwiLFxuICBcIlRvUmFkaWNhbHNcIixcbiAgXCJUb1Jhd1BvaW50ZXJcIixcbiAgXCJUb1J1bGVzXCIsXG4gIFwiVG9ydXNcIixcbiAgXCJUb3J1c0dyYXBoXCIsXG4gIFwiVG9TcGhlcmljYWxDb29yZGluYXRlc1wiLFxuICBcIlRvU3RyaW5nXCIsXG4gIFwiVG90YWxcIixcbiAgXCJUb3RhbEhlaWdodFwiLFxuICBcIlRvdGFsTGF5ZXJcIixcbiAgXCJUb3RhbFZhcmlhdGlvbkZpbHRlclwiLFxuICBcIlRvdGFsV2lkdGhcIixcbiAgXCJUb3VjaFBvc2l0aW9uXCIsXG4gIFwiVG91Y2hzY3JlZW5BdXRvWm9vbVwiLFxuICBcIlRvdWNoc2NyZWVuQ29udHJvbFBsYWNlbWVudFwiLFxuICBcIlRvVXBwZXJDYXNlXCIsXG4gIFwiVG91clZpZGVvXCIsXG4gIFwiVHJcIixcbiAgXCJUcmFjZVwiLFxuICBcIlRyYWNlQWJvdmVcIixcbiAgXCJUcmFjZUFjdGlvblwiLFxuICBcIlRyYWNlQmFja3dhcmRcIixcbiAgXCJUcmFjZURlcHRoXCIsXG4gIFwiVHJhY2VEaWFsb2dcIixcbiAgXCJUcmFjZUZvcndhcmRcIixcbiAgXCJUcmFjZUludGVybmFsXCIsXG4gIFwiVHJhY2VMZXZlbFwiLFxuICBcIlRyYWNlT2ZmXCIsXG4gIFwiVHJhY2VPblwiLFxuICBcIlRyYWNlT3JpZ2luYWxcIixcbiAgXCJUcmFjZVByaW50XCIsXG4gIFwiVHJhY2VTY2FuXCIsXG4gIFwiVHJhY2tDZWxsQ2hhbmdlVGltZXNcIixcbiAgXCJUcmFja2VkU3ltYm9sc1wiLFxuICBcIlRyYWNraW5nRnVuY3Rpb25cIixcbiAgXCJUcmFjeVdpZG9tRGlzdHJpYnV0aW9uXCIsXG4gIFwiVHJhZGluZ0NoYXJ0XCIsXG4gIFwiVHJhZGl0aW9uYWxGb3JtXCIsXG4gIFwiVHJhZGl0aW9uYWxGdW5jdGlvbk5vdGF0aW9uXCIsXG4gIFwiVHJhZGl0aW9uYWxOb3RhdGlvblwiLFxuICBcIlRyYWRpdGlvbmFsT3JkZXJcIixcbiAgXCJUcmFpbkltYWdlQ29udGVudERldGVjdG9yXCIsXG4gIFwiVHJhaW5pbmdQcm9ncmVzc0NoZWNrcG9pbnRpbmdcIixcbiAgXCJUcmFpbmluZ1Byb2dyZXNzRnVuY3Rpb25cIixcbiAgXCJUcmFpbmluZ1Byb2dyZXNzTWVhc3VyZW1lbnRzXCIsXG4gIFwiVHJhaW5pbmdQcm9ncmVzc1JlcG9ydGluZ1wiLFxuICBcIlRyYWluaW5nU3RvcHBpbmdDcml0ZXJpb25cIixcbiAgXCJUcmFpbmluZ1VwZGF0ZVNjaGVkdWxlXCIsXG4gIFwiVHJhaW5UZXh0Q29udGVudERldGVjdG9yXCIsXG4gIFwiVHJhbnNmZXJGdW5jdGlvbkNhbmNlbFwiLFxuICBcIlRyYW5zZmVyRnVuY3Rpb25FeHBhbmRcIixcbiAgXCJUcmFuc2ZlckZ1bmN0aW9uRmFjdG9yXCIsXG4gIFwiVHJhbnNmZXJGdW5jdGlvbk1vZGVsXCIsXG4gIFwiVHJhbnNmZXJGdW5jdGlvblBvbGVzXCIsXG4gIFwiVHJhbnNmZXJGdW5jdGlvblRyYW5zZm9ybVwiLFxuICBcIlRyYW5zZmVyRnVuY3Rpb25aZXJvc1wiLFxuICBcIlRyYW5zZm9ybWF0aW9uQ2xhc3NcIixcbiAgXCJUcmFuc2Zvcm1hdGlvbkZ1bmN0aW9uXCIsXG4gIFwiVHJhbnNmb3JtYXRpb25GdW5jdGlvbnNcIixcbiAgXCJUcmFuc2Zvcm1hdGlvbk1hdHJpeFwiLFxuICBcIlRyYW5zZm9ybWVkRGlzdHJpYnV0aW9uXCIsXG4gIFwiVHJhbnNmb3JtZWRGaWVsZFwiLFxuICBcIlRyYW5zZm9ybWVkUHJvY2Vzc1wiLFxuICBcIlRyYW5zZm9ybWVkUmVnaW9uXCIsXG4gIFwiVHJhbnNpdGlvbkRpcmVjdGlvblwiLFxuICBcIlRyYW5zaXRpb25EdXJhdGlvblwiLFxuICBcIlRyYW5zaXRpb25FZmZlY3RcIixcbiAgXCJUcmFuc2l0aXZlQ2xvc3VyZUdyYXBoXCIsXG4gIFwiVHJhbnNpdGl2ZVJlZHVjdGlvbkdyYXBoXCIsXG4gIFwiVHJhbnNsYXRlXCIsXG4gIFwiVHJhbnNsYXRpb25PcHRpb25zXCIsXG4gIFwiVHJhbnNsYXRpb25UcmFuc2Zvcm1cIixcbiAgXCJUcmFuc2xpdGVyYXRlXCIsXG4gIFwiVHJhbnNwYXJlbnRcIixcbiAgXCJUcmFuc3BhcmVudENvbG9yXCIsXG4gIFwiVHJhbnNwb3NlXCIsXG4gIFwiVHJhbnNwb3NlTGF5ZXJcIixcbiAgXCJUcmFwRW50ZXJLZXlcIixcbiAgXCJUcmFwU2VsZWN0aW9uXCIsXG4gIFwiVHJhdmVsRGlyZWN0aW9uc1wiLFxuICBcIlRyYXZlbERpcmVjdGlvbnNEYXRhXCIsXG4gIFwiVHJhdmVsRGlzdGFuY2VcIixcbiAgXCJUcmF2ZWxEaXN0YW5jZUxpc3RcIixcbiAgXCJUcmF2ZWxNZXRob2RcIixcbiAgXCJUcmF2ZWxUaW1lXCIsXG4gIFwiVHJlZVwiLFxuICBcIlRyZWVDYXNlc1wiLFxuICBcIlRyZWVDaGlsZHJlblwiLFxuICBcIlRyZWVDb3VudFwiLFxuICBcIlRyZWVEYXRhXCIsXG4gIFwiVHJlZURlbGV0ZVwiLFxuICBcIlRyZWVEZXB0aFwiLFxuICBcIlRyZWVFbGVtZW50Q29vcmRpbmF0ZXNcIixcbiAgXCJUcmVlRWxlbWVudExhYmVsXCIsXG4gIFwiVHJlZUVsZW1lbnRMYWJlbEZ1bmN0aW9uXCIsXG4gIFwiVHJlZUVsZW1lbnRMYWJlbFN0eWxlXCIsXG4gIFwiVHJlZUVsZW1lbnRTaGFwZVwiLFxuICBcIlRyZWVFbGVtZW50U2hhcGVGdW5jdGlvblwiLFxuICBcIlRyZWVFbGVtZW50U2l6ZVwiLFxuICBcIlRyZWVFbGVtZW50U2l6ZUZ1bmN0aW9uXCIsXG4gIFwiVHJlZUVsZW1lbnRTdHlsZVwiLFxuICBcIlRyZWVFbGVtZW50U3R5bGVGdW5jdGlvblwiLFxuICBcIlRyZWVFeHByZXNzaW9uXCIsXG4gIFwiVHJlZUV4dHJhY3RcIixcbiAgXCJUcmVlRm9sZFwiLFxuICBcIlRyZWVGb3JtXCIsXG4gIFwiVHJlZUdyYXBoXCIsXG4gIFwiVHJlZUdyYXBoUVwiLFxuICBcIlRyZWVJbnNlcnRcIixcbiAgXCJUcmVlTGF5b3V0XCIsXG4gIFwiVHJlZUxlYWZDb3VudFwiLFxuICBcIlRyZWVMZWFmUVwiLFxuICBcIlRyZWVMZWF2ZXNcIixcbiAgXCJUcmVlTGV2ZWxcIixcbiAgXCJUcmVlTWFwXCIsXG4gIFwiVHJlZU1hcEF0XCIsXG4gIFwiVHJlZU91dGxpbmVcIixcbiAgXCJUcmVlUGxvdFwiLFxuICBcIlRyZWVQb3NpdGlvblwiLFxuICBcIlRyZWVRXCIsXG4gIFwiVHJlZVJlcGxhY2VQYXJ0XCIsXG4gIFwiVHJlZVJ1bGVzXCIsXG4gIFwiVHJlZVNjYW5cIixcbiAgXCJUcmVlU2VsZWN0XCIsXG4gIFwiVHJlZVNpemVcIixcbiAgXCJUcmVlVHJhdmVyc2FsT3JkZXJcIixcbiAgXCJUcmVuZFN0eWxlXCIsXG4gIFwiVHJpYW5nbGVcIixcbiAgXCJUcmlhbmdsZUNlbnRlclwiLFxuICBcIlRyaWFuZ2xlQ29uc3RydWN0XCIsXG4gIFwiVHJpYW5nbGVNZWFzdXJlbWVudFwiLFxuICBcIlRyaWFuZ2xlV2F2ZVwiLFxuICBcIlRyaWFuZ3VsYXJEaXN0cmlidXRpb25cIixcbiAgXCJUcmlhbmd1bGF0ZU1lc2hcIixcbiAgXCJUcmlnXCIsXG4gIFwiVHJpZ0V4cGFuZFwiLFxuICBcIlRyaWdGYWN0b3JcIixcbiAgXCJUcmlnRmFjdG9yTGlzdFwiLFxuICBcIlRyaWdnZXJcIixcbiAgXCJUcmlnUmVkdWNlXCIsXG4gIFwiVHJpZ1RvRXhwXCIsXG4gIFwiVHJpbW1lZE1lYW5cIixcbiAgXCJUcmltbWVkVmFyaWFuY2VcIixcbiAgXCJUcm9waWNhbFN0b3JtRGF0YVwiLFxuICBcIlRydWVcIixcbiAgXCJUcnVlUVwiLFxuICBcIlRydW5jYXRlZERpc3RyaWJ1dGlvblwiLFxuICBcIlRydW5jYXRlZFBvbHloZWRyb25cIixcbiAgXCJUc2FsbGlzUUV4cG9uZW50aWFsRGlzdHJpYnV0aW9uXCIsXG4gIFwiVHNhbGxpc1FHYXVzc2lhbkRpc3RyaWJ1dGlvblwiLFxuICBcIlRUZXN0XCIsXG4gIFwiVHViZVwiLFxuICBcIlR1YmVCZXppZXJDdXJ2ZUJveFwiLFxuICBcIlR1YmVCZXppZXJDdXJ2ZUJveE9wdGlvbnNcIixcbiAgXCJUdWJlQm94XCIsXG4gIFwiVHViZUJveE9wdGlvbnNcIixcbiAgXCJUdWJlQlNwbGluZUN1cnZlQm94XCIsXG4gIFwiVHViZUJTcGxpbmVDdXJ2ZUJveE9wdGlvbnNcIixcbiAgXCJUdWVzZGF5XCIsXG4gIFwiVHVrZXlMYW1iZGFEaXN0cmlidXRpb25cIixcbiAgXCJUdWtleVdpbmRvd1wiLFxuICBcIlR1bm5lbERhdGFcIixcbiAgXCJUdXBsZXNcIixcbiAgXCJUdXJhbkdyYXBoXCIsXG4gIFwiVHVyaW5nTWFjaGluZVwiLFxuICBcIlR1dHRlUG9seW5vbWlhbFwiLFxuICBcIlR3b1dheVJ1bGVcIixcbiAgXCJUeXBlZFwiLFxuICBcIlR5cGVEZWNsYXJhdGlvblwiLFxuICBcIlR5cGVFdmFsdWF0ZVwiLFxuICBcIlR5cGVIaW50XCIsXG4gIFwiVHlwZU9mXCIsXG4gIFwiVHlwZVNwZWNpZmllclwiLFxuICBcIlVuYXRlUVwiLFxuICBcIlVuY29tcHJlc3NcIixcbiAgXCJVbmNvbnN0cmFpbmVkUGFyYW1ldGVyc1wiLFxuICBcIlVuZGVmaW5lZFwiLFxuICBcIlVuZGVyQmFyXCIsXG4gIFwiVW5kZXJmbG93XCIsXG4gIFwiVW5kZXJsaW5lZFwiLFxuICBcIlVuZGVyb3ZlcnNjcmlwdFwiLFxuICBcIlVuZGVyb3ZlcnNjcmlwdEJveFwiLFxuICBcIlVuZGVyb3ZlcnNjcmlwdEJveE9wdGlvbnNcIixcbiAgXCJVbmRlcnNjcmlwdFwiLFxuICBcIlVuZGVyc2NyaXB0Qm94XCIsXG4gIFwiVW5kZXJzY3JpcHRCb3hPcHRpb25zXCIsXG4gIFwiVW5kZXJzZWFGZWF0dXJlRGF0YVwiLFxuICBcIlVuZGlyZWN0ZWRFZGdlXCIsXG4gIFwiVW5kaXJlY3RlZEdyYXBoXCIsXG4gIFwiVW5kaXJlY3RlZEdyYXBoUVwiLFxuICBcIlVuZG9PcHRpb25zXCIsXG4gIFwiVW5kb1RyYWNrZWRWYXJpYWJsZXNcIixcbiAgXCJVbmVxdWFsXCIsXG4gIFwiVW5lcXVhbFRvXCIsXG4gIFwiVW5ldmFsdWF0ZWRcIixcbiAgXCJVbmlmb3JtRGlzdHJpYnV0aW9uXCIsXG4gIFwiVW5pZm9ybUdyYXBoRGlzdHJpYnV0aW9uXCIsXG4gIFwiVW5pZm9ybVBvbHloZWRyb25cIixcbiAgXCJVbmlmb3JtU3VtRGlzdHJpYnV0aW9uXCIsXG4gIFwiVW5pbnN0YWxsXCIsXG4gIFwiVW5pb25cIixcbiAgXCJVbmlvbmVkRW50aXR5Q2xhc3NcIixcbiAgXCJVbmlvblBsdXNcIixcbiAgXCJVbmlxdWVcIixcbiAgXCJVbmlxdWVFbGVtZW50c1wiLFxuICBcIlVuaXRhcnlNYXRyaXhRXCIsXG4gIFwiVW5pdEJveFwiLFxuICBcIlVuaXRDb252ZXJ0XCIsXG4gIFwiVW5pdERpbWVuc2lvbnNcIixcbiAgXCJVbml0aXplXCIsXG4gIFwiVW5pdFJvb3RUZXN0XCIsXG4gIFwiVW5pdFNpbXBsaWZ5XCIsXG4gIFwiVW5pdFN0ZXBcIixcbiAgXCJVbml0U3lzdGVtXCIsXG4gIFwiVW5pdFRyaWFuZ2xlXCIsXG4gIFwiVW5pdFZlY3RvclwiLFxuICBcIlVuaXRWZWN0b3JMYXllclwiLFxuICBcIlVuaXR5RGltZW5zaW9uc1wiLFxuICBcIlVuaXZlcnNlTW9kZWxEYXRhXCIsXG4gIFwiVW5pdmVyc2l0eURhdGFcIixcbiAgXCJVbml4VGltZVwiLFxuICBcIlVubGFiZWxlZFRyZWVcIixcbiAgXCJVbm1hbmFnZU9iamVjdFwiLFxuICBcIlVucHJvdGVjdFwiLFxuICBcIlVucmVnaXN0ZXJFeHRlcm5hbEV2YWx1YXRvclwiLFxuICBcIlVuc2FtZVFcIixcbiAgXCJVbnNhdmVkVmFyaWFibGVzXCIsXG4gIFwiVW5zZXRcIixcbiAgXCJVbnNldFNoYXJlZFwiLFxuICBcIlVudGlsXCIsXG4gIFwiVW50cmFja2VkVmFyaWFibGVzXCIsXG4gIFwiVXBcIixcbiAgXCJVcEFycm93XCIsXG4gIFwiVXBBcnJvd0JhclwiLFxuICBcIlVwQXJyb3dEb3duQXJyb3dcIixcbiAgXCJVcGRhdGVcIixcbiAgXCJVcGRhdGVEeW5hbWljT2JqZWN0c1wiLFxuICBcIlVwZGF0ZUR5bmFtaWNPYmplY3RzU3luY2hyb25vdXNcIixcbiAgXCJVcGRhdGVJbnRlcnZhbFwiLFxuICBcIlVwZGF0ZVBhY2xldFNpdGVzXCIsXG4gIFwiVXBkYXRlU2VhcmNoSW5kZXhcIixcbiAgXCJVcERvd25BcnJvd1wiLFxuICBcIlVwRXF1aWxpYnJpdW1cIixcbiAgXCJVcHBlckNhc2VRXCIsXG4gIFwiVXBwZXJMZWZ0QXJyb3dcIixcbiAgXCJVcHBlclJpZ2h0QXJyb3dcIixcbiAgXCJVcHBlclRyaWFuZ3VsYXJpemVcIixcbiAgXCJVcHBlclRyaWFuZ3VsYXJNYXRyaXhcIixcbiAgXCJVcHBlclRyaWFuZ3VsYXJNYXRyaXhRXCIsXG4gIFwiVXBzYW1wbGVcIixcbiAgXCJVcFNldFwiLFxuICBcIlVwU2V0RGVsYXllZFwiLFxuICBcIlVwVGVlXCIsXG4gIFwiVXBUZWVBcnJvd1wiLFxuICBcIlVwVG9cIixcbiAgXCJVcFZhbHVlc1wiLFxuICBcIlVSTFwiLFxuICBcIlVSTEJ1aWxkXCIsXG4gIFwiVVJMRGVjb2RlXCIsXG4gIFwiVVJMRGlzcGF0Y2hlclwiLFxuICBcIlVSTERvd25sb2FkXCIsXG4gIFwiVVJMRG93bmxvYWRTdWJtaXRcIixcbiAgXCJVUkxFbmNvZGVcIixcbiAgXCJVUkxFeGVjdXRlXCIsXG4gIFwiVVJMRXhwYW5kXCIsXG4gIFwiVVJMRmV0Y2hcIixcbiAgXCJVUkxGZXRjaEFzeW5jaHJvbm91c1wiLFxuICBcIlVSTFBhcnNlXCIsXG4gIFwiVVJMUXVlcnlEZWNvZGVcIixcbiAgXCJVUkxRdWVyeUVuY29kZVwiLFxuICBcIlVSTFJlYWRcIixcbiAgXCJVUkxSZXNwb25zZVRpbWVcIixcbiAgXCJVUkxTYXZlXCIsXG4gIFwiVVJMU2F2ZUFzeW5jaHJvbm91c1wiLFxuICBcIlVSTFNob3J0ZW5cIixcbiAgXCJVUkxTdWJtaXRcIixcbiAgXCJVc2VFbWJlZGRlZExpYnJhcnlcIixcbiAgXCJVc2VHcmFwaGljc1JhbmdlXCIsXG4gIFwiVXNlckRlZmluZWRXYXZlbGV0XCIsXG4gIFwiVXNpbmdcIixcbiAgXCJVc2luZ0Zyb250RW5kXCIsXG4gIFwiVXRpbGl0eUZ1bmN0aW9uXCIsXG4gIFwiVjJHZXRcIixcbiAgXCJWYWxlbmNlRXJyb3JIYW5kbGluZ1wiLFxuICBcIlZhbGVuY2VGaWxsaW5nXCIsXG4gIFwiVmFsaWRhdGlvbkxlbmd0aFwiLFxuICBcIlZhbGlkYXRpb25TZXRcIixcbiAgXCJWYWx1ZUJveFwiLFxuICBcIlZhbHVlQm94T3B0aW9uc1wiLFxuICBcIlZhbHVlRGltZW5zaW9uc1wiLFxuICBcIlZhbHVlRm9ybVwiLFxuICBcIlZhbHVlUHJlcHJvY2Vzc2luZ0Z1bmN0aW9uXCIsXG4gIFwiVmFsdWVRXCIsXG4gIFwiVmFsdWVzXCIsXG4gIFwiVmFsdWVzRGF0YVwiLFxuICBcIlZhbmRlcm1vbmRlTWF0cml4XCIsXG4gIFwiVmFyaWFibGVzXCIsXG4gIFwiVmFyaWFuY2VcIixcbiAgXCJWYXJpYW5jZUVxdWl2YWxlbmNlVGVzdFwiLFxuICBcIlZhcmlhbmNlRXN0aW1hdG9yRnVuY3Rpb25cIixcbiAgXCJWYXJpYW5jZUdhbW1hRGlzdHJpYnV0aW9uXCIsXG4gIFwiVmFyaWFuY2VHYW1tYVBvaW50UHJvY2Vzc1wiLFxuICBcIlZhcmlhbmNlVGVzdFwiLFxuICBcIlZhcmlvZ3JhbUZ1bmN0aW9uXCIsXG4gIFwiVmFyaW9ncmFtTW9kZWxcIixcbiAgXCJWZWN0b3JBbmdsZVwiLFxuICBcIlZlY3RvckFyb3VuZFwiLFxuICBcIlZlY3RvckFzcGVjdFJhdGlvXCIsXG4gIFwiVmVjdG9yQ29sb3JGdW5jdGlvblwiLFxuICBcIlZlY3RvckNvbG9yRnVuY3Rpb25TY2FsaW5nXCIsXG4gIFwiVmVjdG9yRGVuc2l0eVBsb3RcIixcbiAgXCJWZWN0b3JEaXNwbGFjZW1lbnRQbG90XCIsXG4gIFwiVmVjdG9yRGlzcGxhY2VtZW50UGxvdDNEXCIsXG4gIFwiVmVjdG9yR2x5cGhEYXRhXCIsXG4gIFwiVmVjdG9yR3JlYXRlclwiLFxuICBcIlZlY3RvckdyZWF0ZXJFcXVhbFwiLFxuICBcIlZlY3Rvckxlc3NcIixcbiAgXCJWZWN0b3JMZXNzRXF1YWxcIixcbiAgXCJWZWN0b3JNYXJrZXJzXCIsXG4gIFwiVmVjdG9yUGxvdFwiLFxuICBcIlZlY3RvclBsb3QzRFwiLFxuICBcIlZlY3RvclBvaW50c1wiLFxuICBcIlZlY3RvclFcIixcbiAgXCJWZWN0b3JSYW5nZVwiLFxuICBcIlZlY3RvcnNcIixcbiAgXCJWZWN0b3JTY2FsZVwiLFxuICBcIlZlY3RvclNjYWxpbmdcIixcbiAgXCJWZWN0b3JTaXplc1wiLFxuICBcIlZlY3RvclN0eWxlXCIsXG4gIFwiVmVlXCIsXG4gIFwiVmVyYmF0aW1cIixcbiAgXCJWZXJib3NlXCIsXG4gIFwiVmVyaWZpY2F0aW9uVGVzdFwiLFxuICBcIlZlcmlmeUNvbnZlcmdlbmNlXCIsXG4gIFwiVmVyaWZ5RGVyaXZlZEtleVwiLFxuICBcIlZlcmlmeURpZ2l0YWxTaWduYXR1cmVcIixcbiAgXCJWZXJpZnlGaWxlU2lnbmF0dXJlXCIsXG4gIFwiVmVyaWZ5SW50ZXJwcmV0YXRpb25cIixcbiAgXCJWZXJpZnlTZWN1cml0eUNlcnRpZmljYXRlc1wiLFxuICBcIlZlcmlmeVNvbHV0aW9uc1wiLFxuICBcIlZlcmlmeVRlc3RBc3N1bXB0aW9uc1wiLFxuICBcIlZlcnNpb25lZFByZWZlcmVuY2VzXCIsXG4gIFwiVmVydGV4QWRkXCIsXG4gIFwiVmVydGV4Q2FwYWNpdHlcIixcbiAgXCJWZXJ0ZXhDaHJvbWF0aWNOdW1iZXJcIixcbiAgXCJWZXJ0ZXhDb2xvcnNcIixcbiAgXCJWZXJ0ZXhDb21wb25lbnRcIixcbiAgXCJWZXJ0ZXhDb25uZWN0aXZpdHlcIixcbiAgXCJWZXJ0ZXhDb250cmFjdFwiLFxuICBcIlZlcnRleENvb3JkaW5hdGVSdWxlc1wiLFxuICBcIlZlcnRleENvb3JkaW5hdGVzXCIsXG4gIFwiVmVydGV4Q29ycmVsYXRpb25TaW1pbGFyaXR5XCIsXG4gIFwiVmVydGV4Q29zaW5lU2ltaWxhcml0eVwiLFxuICBcIlZlcnRleENvdW50XCIsXG4gIFwiVmVydGV4Q292ZXJRXCIsXG4gIFwiVmVydGV4RGF0YUNvb3JkaW5hdGVzXCIsXG4gIFwiVmVydGV4RGVncmVlXCIsXG4gIFwiVmVydGV4RGVsZXRlXCIsXG4gIFwiVmVydGV4RGljZVNpbWlsYXJpdHlcIixcbiAgXCJWZXJ0ZXhFY2NlbnRyaWNpdHlcIixcbiAgXCJWZXJ0ZXhJbkNvbXBvbmVudFwiLFxuICBcIlZlcnRleEluQ29tcG9uZW50R3JhcGhcIixcbiAgXCJWZXJ0ZXhJbkRlZ3JlZVwiLFxuICBcIlZlcnRleEluZGV4XCIsXG4gIFwiVmVydGV4SmFjY2FyZFNpbWlsYXJpdHlcIixcbiAgXCJWZXJ0ZXhMYWJlbGluZ1wiLFxuICBcIlZlcnRleExhYmVsc1wiLFxuICBcIlZlcnRleExhYmVsU3R5bGVcIixcbiAgXCJWZXJ0ZXhMaXN0XCIsXG4gIFwiVmVydGV4Tm9ybWFsc1wiLFxuICBcIlZlcnRleE91dENvbXBvbmVudFwiLFxuICBcIlZlcnRleE91dENvbXBvbmVudEdyYXBoXCIsXG4gIFwiVmVydGV4T3V0RGVncmVlXCIsXG4gIFwiVmVydGV4UVwiLFxuICBcIlZlcnRleFJlbmRlcmluZ0Z1bmN0aW9uXCIsXG4gIFwiVmVydGV4UmVwbGFjZVwiLFxuICBcIlZlcnRleFNoYXBlXCIsXG4gIFwiVmVydGV4U2hhcGVGdW5jdGlvblwiLFxuICBcIlZlcnRleFNpemVcIixcbiAgXCJWZXJ0ZXhTdHlsZVwiLFxuICBcIlZlcnRleFRleHR1cmVDb29yZGluYXRlc1wiLFxuICBcIlZlcnRleFRyYW5zaXRpdmVHcmFwaFFcIixcbiAgXCJWZXJ0ZXhXZWlnaHRcIixcbiAgXCJWZXJ0ZXhXZWlnaHRlZEdyYXBoUVwiLFxuICBcIlZlcnRpY2FsXCIsXG4gIFwiVmVydGljYWxCYXJcIixcbiAgXCJWZXJ0aWNhbEZvcm1cIixcbiAgXCJWZXJ0aWNhbEdhdWdlXCIsXG4gIFwiVmVydGljYWxTZXBhcmF0b3JcIixcbiAgXCJWZXJ0aWNhbFNsaWRlclwiLFxuICBcIlZlcnRpY2FsVGlsZGVcIixcbiAgXCJWaWRlb1wiLFxuICBcIlZpZGVvQ2FwdHVyZVwiLFxuICBcIlZpZGVvQ29tYmluZVwiLFxuICBcIlZpZGVvRGVsZXRlXCIsXG4gIFwiVmlkZW9FbmNvZGluZ1wiLFxuICBcIlZpZGVvRXh0cmFjdEZyYW1lc1wiLFxuICBcIlZpZGVvRnJhbWVMaXN0XCIsXG4gIFwiVmlkZW9GcmFtZU1hcFwiLFxuICBcIlZpZGVvR2VuZXJhdG9yXCIsXG4gIFwiVmlkZW9JbnNlcnRcIixcbiAgXCJWaWRlb0ludGVydmFsc1wiLFxuICBcIlZpZGVvSm9pblwiLFxuICBcIlZpZGVvTWFwXCIsXG4gIFwiVmlkZW9NYXBMaXN0XCIsXG4gIFwiVmlkZW9NYXBUaW1lU2VyaWVzXCIsXG4gIFwiVmlkZW9QYWRkaW5nXCIsXG4gIFwiVmlkZW9QYXVzZVwiLFxuICBcIlZpZGVvUGxheVwiLFxuICBcIlZpZGVvUVwiLFxuICBcIlZpZGVvUmVjb3JkXCIsXG4gIFwiVmlkZW9SZXBsYWNlXCIsXG4gIFwiVmlkZW9TY3JlZW5DYXB0dXJlXCIsXG4gIFwiVmlkZW9TcGxpdFwiLFxuICBcIlZpZGVvU3RvcFwiLFxuICBcIlZpZGVvU3RyZWFtXCIsXG4gIFwiVmlkZW9TdHJlYW1zXCIsXG4gIFwiVmlkZW9UaW1lU3RyZXRjaFwiLFxuICBcIlZpZGVvVHJhY2tTZWxlY3Rpb25cIixcbiAgXCJWaWRlb1RyYW5zY29kZVwiLFxuICBcIlZpZGVvVHJhbnNwYXJlbmN5XCIsXG4gIFwiVmlkZW9UcmltXCIsXG4gIFwiVmlld0FuZ2xlXCIsXG4gIFwiVmlld0NlbnRlclwiLFxuICBcIlZpZXdNYXRyaXhcIixcbiAgXCJWaWV3UG9pbnRcIixcbiAgXCJWaWV3UG9pbnRTZWxlY3RvclNldHRpbmdzXCIsXG4gIFwiVmlld1BvcnRcIixcbiAgXCJWaWV3UHJvamVjdGlvblwiLFxuICBcIlZpZXdSYW5nZVwiLFxuICBcIlZpZXdWZWN0b3JcIixcbiAgXCJWaWV3VmVydGljYWxcIixcbiAgXCJWaXJ0dWFsR3JvdXBEYXRhXCIsXG4gIFwiVmlzaWJsZVwiLFxuICBcIlZpc2libGVDZWxsXCIsXG4gIFwiVm9pY2VTdHlsZURhdGFcIixcbiAgXCJWb2lndERpc3RyaWJ1dGlvblwiLFxuICBcIlZvbGNhbm9EYXRhXCIsXG4gIFwiVm9sdW1lXCIsXG4gIFwiVm9uTWlzZXNEaXN0cmlidXRpb25cIixcbiAgXCJWb3Jvbm9pTWVzaFwiLFxuICBcIldhaXRBbGxcIixcbiAgXCJXYWl0QXN5bmNocm9ub3VzVGFza1wiLFxuICBcIldhaXROZXh0XCIsXG4gIFwiV2FpdFVudGlsXCIsXG4gIFwiV2FrZWJ5RGlzdHJpYnV0aW9uXCIsXG4gIFwiV2FsbGVuaXVzSHlwZXJnZW9tZXRyaWNEaXN0cmlidXRpb25cIixcbiAgXCJXYXJpbmdZdWxlRGlzdHJpYnV0aW9uXCIsXG4gIFwiV2FycGluZ0NvcnJlc3BvbmRlbmNlXCIsXG4gIFwiV2FycGluZ0Rpc3RhbmNlXCIsXG4gIFwiV2F0ZXJzaGVkQ29tcG9uZW50c1wiLFxuICBcIldhdHNvblVTcXVhcmVUZXN0XCIsXG4gIFwiV2F0dHNTdHJvZ2F0ekdyYXBoRGlzdHJpYnV0aW9uXCIsXG4gIFwiV2F2ZWxldEJlc3RCYXNpc1wiLFxuICBcIldhdmVsZXRGaWx0ZXJDb2VmZmljaWVudHNcIixcbiAgXCJXYXZlbGV0SW1hZ2VQbG90XCIsXG4gIFwiV2F2ZWxldExpc3RQbG90XCIsXG4gIFwiV2F2ZWxldE1hcEluZGV4ZWRcIixcbiAgXCJXYXZlbGV0TWF0cml4UGxvdFwiLFxuICBcIldhdmVsZXRQaGlcIixcbiAgXCJXYXZlbGV0UHNpXCIsXG4gIFwiV2F2ZWxldFNjYWxlXCIsXG4gIFwiV2F2ZWxldFNjYWxvZ3JhbVwiLFxuICBcIldhdmVsZXRUaHJlc2hvbGRcIixcbiAgXCJXYXZlUERFQ29tcG9uZW50XCIsXG4gIFwiV2Vha2x5Q29ubmVjdGVkQ29tcG9uZW50c1wiLFxuICBcIldlYWtseUNvbm5lY3RlZEdyYXBoQ29tcG9uZW50c1wiLFxuICBcIldlYWtseUNvbm5lY3RlZEdyYXBoUVwiLFxuICBcIldlYWtTdGF0aW9uYXJpdHlcIixcbiAgXCJXZWF0aGVyRGF0YVwiLFxuICBcIldlYXRoZXJGb3JlY2FzdERhdGFcIixcbiAgXCJXZWJBdWRpb1NlYXJjaFwiLFxuICBcIldlYkNvbHVtblwiLFxuICBcIldlYkVsZW1lbnRPYmplY3RcIixcbiAgXCJXZWJlckVcIixcbiAgXCJXZWJFeGVjdXRlXCIsXG4gIFwiV2ViSW1hZ2VcIixcbiAgXCJXZWJJbWFnZVNlYXJjaFwiLFxuICBcIldlYkl0ZW1cIixcbiAgXCJXZWJQYWdlTWV0YUluZm9ybWF0aW9uXCIsXG4gIFwiV2ViUm93XCIsXG4gIFwiV2ViU2VhcmNoXCIsXG4gIFwiV2ViU2Vzc2lvbk9iamVjdFwiLFxuICBcIldlYlNlc3Npb25zXCIsXG4gIFwiV2ViV2luZG93T2JqZWN0XCIsXG4gIFwiV2VkZ2VcIixcbiAgXCJXZWRuZXNkYXlcIixcbiAgXCJXZWlidWxsRGlzdHJpYnV0aW9uXCIsXG4gIFwiV2VpZXJzdHJhc3NFMVwiLFxuICBcIldlaWVyc3RyYXNzRTJcIixcbiAgXCJXZWllcnN0cmFzc0UzXCIsXG4gIFwiV2VpZXJzdHJhc3NFdGExXCIsXG4gIFwiV2VpZXJzdHJhc3NFdGEyXCIsXG4gIFwiV2VpZXJzdHJhc3NFdGEzXCIsXG4gIFwiV2VpZXJzdHJhc3NIYWxmUGVyaW9kc1wiLFxuICBcIldlaWVyc3RyYXNzSGFsZlBlcmlvZFcxXCIsXG4gIFwiV2VpZXJzdHJhc3NIYWxmUGVyaW9kVzJcIixcbiAgXCJXZWllcnN0cmFzc0hhbGZQZXJpb2RXM1wiLFxuICBcIldlaWVyc3RyYXNzSW52YXJpYW50RzJcIixcbiAgXCJXZWllcnN0cmFzc0ludmFyaWFudEczXCIsXG4gIFwiV2VpZXJzdHJhc3NJbnZhcmlhbnRzXCIsXG4gIFwiV2VpZXJzdHJhc3NQXCIsXG4gIFwiV2VpZXJzdHJhc3NQUHJpbWVcIixcbiAgXCJXZWllcnN0cmFzc1NpZ21hXCIsXG4gIFwiV2VpZXJzdHJhc3NaZXRhXCIsXG4gIFwiV2VpZ2h0ZWRBZGphY2VuY3lHcmFwaFwiLFxuICBcIldlaWdodGVkQWRqYWNlbmN5TWF0cml4XCIsXG4gIFwiV2VpZ2h0ZWREYXRhXCIsXG4gIFwiV2VpZ2h0ZWRHcmFwaFFcIixcbiAgXCJXZWlnaHRzXCIsXG4gIFwiV2VsY2hXaW5kb3dcIixcbiAgXCJXaGVlbEdyYXBoXCIsXG4gIFwiV2hlbkV2ZW50XCIsXG4gIFwiV2hpY2hcIixcbiAgXCJXaGlsZVwiLFxuICBcIldoaXRlXCIsXG4gIFwiV2hpdGVOb2lzZVByb2Nlc3NcIixcbiAgXCJXaGl0ZVBvaW50XCIsXG4gIFwiV2hpdGVzcGFjZVwiLFxuICBcIldoaXRlc3BhY2VDaGFyYWN0ZXJcIixcbiAgXCJXaGl0dGFrZXJNXCIsXG4gIFwiV2hpdHRha2VyV1wiLFxuICBcIldob2xlQ2VsbEdyb3VwT3BlbmVyXCIsXG4gIFwiV2llbmVyRmlsdGVyXCIsXG4gIFwiV2llbmVyUHJvY2Vzc1wiLFxuICBcIldpZ25lckRcIixcbiAgXCJXaWduZXJTZW1pY2lyY2xlRGlzdHJpYnV0aW9uXCIsXG4gIFwiV2lraWRhdGFEYXRhXCIsXG4gIFwiV2lraWRhdGFTZWFyY2hcIixcbiAgXCJXaWtpcGVkaWFEYXRhXCIsXG4gIFwiV2lraXBlZGlhU2VhcmNoXCIsXG4gIFwiV2lsa3NXXCIsXG4gIFwiV2lsa3NXVGVzdFwiLFxuICBcIldpbmREaXJlY3Rpb25EYXRhXCIsXG4gIFwiV2luZGluZ0NvdW50XCIsXG4gIFwiV2luZGluZ1BvbHlnb25cIixcbiAgXCJXaW5kb3dDbGlja1NlbGVjdFwiLFxuICBcIldpbmRvd0VsZW1lbnRzXCIsXG4gIFwiV2luZG93RmxvYXRpbmdcIixcbiAgXCJXaW5kb3dGcmFtZVwiLFxuICBcIldpbmRvd0ZyYW1lRWxlbWVudHNcIixcbiAgXCJXaW5kb3dNYXJnaW5zXCIsXG4gIFwiV2luZG93TW92YWJsZVwiLFxuICBcIldpbmRvd09wYWNpdHlcIixcbiAgXCJXaW5kb3dQZXJzaXN0ZW50U3R5bGVzXCIsXG4gIFwiV2luZG93U2VsZWN0ZWRcIixcbiAgXCJXaW5kb3dTaXplXCIsXG4gIFwiV2luZG93U3RhdHVzQXJlYVwiLFxuICBcIldpbmRvd1RpdGxlXCIsXG4gIFwiV2luZG93VG9vbGJhcnNcIixcbiAgXCJXaW5kb3dXaWR0aFwiLFxuICBcIldpbmRTcGVlZERhdGFcIixcbiAgXCJXaW5kVmVjdG9yRGF0YVwiLFxuICBcIldpbnNvcml6ZWRNZWFuXCIsXG4gIFwiV2luc29yaXplZFZhcmlhbmNlXCIsXG4gIFwiV2lzaGFydE1hdHJpeERpc3RyaWJ1dGlvblwiLFxuICBcIldpdGhcIixcbiAgXCJXaXRoQ2xlYW51cFwiLFxuICBcIldpdGhMb2NrXCIsXG4gIFwiV29sZnJhbUFscGhhXCIsXG4gIFwiV29sZnJhbUFscGhhRGF0ZVwiLFxuICBcIldvbGZyYW1BbHBoYVF1YW50aXR5XCIsXG4gIFwiV29sZnJhbUFscGhhUmVzdWx0XCIsXG4gIFwiV29sZnJhbUNsb3VkU2V0dGluZ3NcIixcbiAgXCJXb2xmcmFtTGFuZ3VhZ2VEYXRhXCIsXG4gIFwiV29yZFwiLFxuICBcIldvcmRCb3VuZGFyeVwiLFxuICBcIldvcmRDaGFyYWN0ZXJcIixcbiAgXCJXb3JkQ2xvdWRcIixcbiAgXCJXb3JkQ291bnRcIixcbiAgXCJXb3JkQ291bnRzXCIsXG4gIFwiV29yZERhdGFcIixcbiAgXCJXb3JkRGVmaW5pdGlvblwiLFxuICBcIldvcmRGcmVxdWVuY3lcIixcbiAgXCJXb3JkRnJlcXVlbmN5RGF0YVwiLFxuICBcIldvcmRMaXN0XCIsXG4gIFwiV29yZE9yaWVudGF0aW9uXCIsXG4gIFwiV29yZFNlYXJjaFwiLFxuICBcIldvcmRTZWxlY3Rpb25GdW5jdGlvblwiLFxuICBcIldvcmRTZXBhcmF0b3JzXCIsXG4gIFwiV29yZFNwYWNpbmdzXCIsXG4gIFwiV29yZFN0ZW1cIixcbiAgXCJXb3JkVHJhbnNsYXRpb25cIixcbiAgXCJXb3JraW5nUHJlY2lzaW9uXCIsXG4gIFwiV3JhcEFyb3VuZFwiLFxuICBcIldyaXRlXCIsXG4gIFwiV3JpdGVMaW5lXCIsXG4gIFwiV3JpdGVTdHJpbmdcIixcbiAgXCJXcm9uc2tpYW5cIixcbiAgXCJYTUxFbGVtZW50XCIsXG4gIFwiWE1MT2JqZWN0XCIsXG4gIFwiWE1MVGVtcGxhdGVcIixcbiAgXCJYbm9yXCIsXG4gIFwiWG9yXCIsXG4gIFwiWFlaQ29sb3JcIixcbiAgXCJZZWxsb3dcIixcbiAgXCJZZXN0ZXJkYXlcIixcbiAgXCJZdWxlRGlzc2ltaWxhcml0eVwiLFxuICBcIlplcm5pa2VSXCIsXG4gIFwiWmVyb1N5bW1ldHJpY1wiLFxuICBcIlplcm9UZXN0XCIsXG4gIFwiWmVyb1dpZHRoVGltZXNcIixcbiAgXCJaZXRhXCIsXG4gIFwiWmV0YVplcm9cIixcbiAgXCJaSVBDb2RlRGF0YVwiLFxuICBcIlppcGZEaXN0cmlidXRpb25cIixcbiAgXCJab29tQ2VudGVyXCIsXG4gIFwiWm9vbUZhY3RvclwiLFxuICBcIlpUZXN0XCIsXG4gIFwiWlRyYW5zZm9ybVwiLFxuICBcIiRBYm9ydGVkXCIsXG4gIFwiJEFjdGl2YXRpb25Hcm91cElEXCIsXG4gIFwiJEFjdGl2YXRpb25LZXlcIixcbiAgXCIkQWN0aXZhdGlvblVzZXJSZWdpc3RlcmVkXCIsXG4gIFwiJEFkZE9uc0RpcmVjdG9yeVwiLFxuICBcIiRBbGxvd0RhdGFVcGRhdGVzXCIsXG4gIFwiJEFsbG93RXh0ZXJuYWxDaGFubmVsRnVuY3Rpb25zXCIsXG4gIFwiJEFsbG93SW50ZXJuZXRcIixcbiAgXCIkQXNzZXJ0RnVuY3Rpb25cIixcbiAgXCIkQXNzdW1wdGlvbnNcIixcbiAgXCIkQXN5bmNocm9ub3VzVGFza1wiLFxuICBcIiRBdWRpb0RlY29kZXJzXCIsXG4gIFwiJEF1ZGlvRW5jb2RlcnNcIixcbiAgXCIkQXVkaW9JbnB1dERldmljZXNcIixcbiAgXCIkQXVkaW9PdXRwdXREZXZpY2VzXCIsXG4gIFwiJEJhc2VEaXJlY3RvcnlcIixcbiAgXCIkQmFzZVBhY2xldHNEaXJlY3RvcnlcIixcbiAgXCIkQmF0Y2hJbnB1dFwiLFxuICBcIiRCYXRjaE91dHB1dFwiLFxuICBcIiRCbG9ja2NoYWluQmFzZVwiLFxuICBcIiRCb3hGb3Jtc1wiLFxuICBcIiRCeXRlT3JkZXJpbmdcIixcbiAgXCIkQ2FjaGVCYXNlRGlyZWN0b3J5XCIsXG4gIFwiJENhbmNlbGVkXCIsXG4gIFwiJENoYW5uZWxCYXNlXCIsXG4gIFwiJENoYXJhY3RlckVuY29kaW5nXCIsXG4gIFwiJENoYXJhY3RlckVuY29kaW5nc1wiLFxuICBcIiRDbG91ZEFjY291bnROYW1lXCIsXG4gIFwiJENsb3VkQmFzZVwiLFxuICBcIiRDbG91ZENvbm5lY3RlZFwiLFxuICBcIiRDbG91ZENvbm5lY3Rpb25cIixcbiAgXCIkQ2xvdWRDcmVkaXRzQXZhaWxhYmxlXCIsXG4gIFwiJENsb3VkRXZhbHVhdGlvblwiLFxuICBcIiRDbG91ZEV4cHJlc3Npb25CYXNlXCIsXG4gIFwiJENsb3VkT2JqZWN0TmFtZUZvcm1hdFwiLFxuICBcIiRDbG91ZE9iamVjdFVSTFR5cGVcIixcbiAgXCIkQ2xvdWRSb290RGlyZWN0b3J5XCIsXG4gIFwiJENsb3VkU3ltYm9sQmFzZVwiLFxuICBcIiRDbG91ZFVzZXJJRFwiLFxuICBcIiRDbG91ZFVzZXJVVUlEXCIsXG4gIFwiJENsb3VkVmVyc2lvblwiLFxuICBcIiRDbG91ZFZlcnNpb25OdW1iZXJcIixcbiAgXCIkQ2xvdWRXb2xmcmFtRW5naW5lVmVyc2lvbk51bWJlclwiLFxuICBcIiRDb21tYW5kTGluZVwiLFxuICBcIiRDb21waWxhdGlvblRhcmdldFwiLFxuICBcIiRDb21waWxlckVudmlyb25tZW50XCIsXG4gIFwiJENvbmRpdGlvbkhvbGRcIixcbiAgXCIkQ29uZmlndXJlZEtlcm5lbHNcIixcbiAgXCIkQ29udGV4dFwiLFxuICBcIiRDb250ZXh0QWxpYXNlc1wiLFxuICBcIiRDb250ZXh0UGF0aFwiLFxuICBcIiRDb250cm9sQWN0aXZlU2V0dGluZ1wiLFxuICBcIiRDb29raWVzXCIsXG4gIFwiJENvb2tpZVN0b3JlXCIsXG4gIFwiJENyZWF0aW9uRGF0ZVwiLFxuICBcIiRDcnlwdG9ncmFwaGljRWxsaXB0aWNDdXJ2ZU5hbWVzXCIsXG4gIFwiJEN1cnJlbnRMaW5rXCIsXG4gIFwiJEN1cnJlbnRUYXNrXCIsXG4gIFwiJEN1cnJlbnRXZWJTZXNzaW9uXCIsXG4gIFwiJERhdGFTdHJ1Y3R1cmVzXCIsXG4gIFwiJERhdGVTdHJpbmdGb3JtYXRcIixcbiAgXCIkRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2VcIixcbiAgXCIkRGVmYXVsdEF1ZGlvT3V0cHV0RGV2aWNlXCIsXG4gIFwiJERlZmF1bHRGb250XCIsXG4gIFwiJERlZmF1bHRGcm9udEVuZFwiLFxuICBcIiREZWZhdWx0SW1hZ2luZ0RldmljZVwiLFxuICBcIiREZWZhdWx0S2VybmVsc1wiLFxuICBcIiREZWZhdWx0TG9jYWxCYXNlXCIsXG4gIFwiJERlZmF1bHRMb2NhbEtlcm5lbFwiLFxuICBcIiREZWZhdWx0TWFpbGJveFwiLFxuICBcIiREZWZhdWx0TmV0d29ya0ludGVyZmFjZVwiLFxuICBcIiREZWZhdWx0UGF0aFwiLFxuICBcIiREZWZhdWx0UHJveHlSdWxlc1wiLFxuICBcIiREZWZhdWx0UmVtb3RlQmF0Y2hTdWJtaXNzaW9uRW52aXJvbm1lbnRcIixcbiAgXCIkRGVmYXVsdFJlbW90ZUtlcm5lbFwiLFxuICBcIiREZWZhdWx0U3lzdGVtQ3JlZGVudGlhbFN0b3JlXCIsXG4gIFwiJERpc3BsYXlcIixcbiAgXCIkRGlzcGxheUZ1bmN0aW9uXCIsXG4gIFwiJERpc3RyaWJ1dGVkQ29udGV4dHNcIixcbiAgXCIkRHluYW1pY0V2YWx1YXRpb25cIixcbiAgXCIkRWNob1wiLFxuICBcIiRFbWJlZENvZGVFbnZpcm9ubWVudHNcIixcbiAgXCIkRW1iZWRkYWJsZVNlcnZpY2VzXCIsXG4gIFwiJEVudGl0eVN0b3Jlc1wiLFxuICBcIiRFcGlsb2dcIixcbiAgXCIkRXZhbHVhdGlvbkNsb3VkQmFzZVwiLFxuICBcIiRFdmFsdWF0aW9uQ2xvdWRPYmplY3RcIixcbiAgXCIkRXZhbHVhdGlvbkVudmlyb25tZW50XCIsXG4gIFwiJEV4cG9ydEZvcm1hdHNcIixcbiAgXCIkRXh0ZXJuYWxJZGVudGlmaWVyVHlwZXNcIixcbiAgXCIkRXh0ZXJuYWxTdG9yYWdlQmFzZVwiLFxuICBcIiRGYWlsZWRcIixcbiAgXCIkRmluYW5jaWFsRGF0YVNvdXJjZVwiLFxuICBcIiRGb250RmFtaWxpZXNcIixcbiAgXCIkRm9ybWF0VHlwZVwiLFxuICBcIiRGcm9udEVuZFwiLFxuICBcIiRGcm9udEVuZFNlc3Npb25cIixcbiAgXCIkR2VuZXJhdGVkQXNzZXRMb2NhdGlvblwiLFxuICBcIiRHZW9FbnRpdHlUeXBlc1wiLFxuICBcIiRHZW9Mb2NhdGlvblwiLFxuICBcIiRHZW9Mb2NhdGlvbkNpdHlcIixcbiAgXCIkR2VvTG9jYXRpb25Db3VudHJ5XCIsXG4gIFwiJEdlb0xvY2F0aW9uUHJlY2lzaW9uXCIsXG4gIFwiJEdlb0xvY2F0aW9uU291cmNlXCIsXG4gIFwiJEhpc3RvcnlMZW5ndGhcIixcbiAgXCIkSG9tZURpcmVjdG9yeVwiLFxuICBcIiRIVE1MRXhwb3J0UnVsZXNcIixcbiAgXCIkSFRUUENvb2tpZXNcIixcbiAgXCIkSFRUUFJlcXVlc3RcIixcbiAgXCIkSWdub3JlRU9GXCIsXG4gIFwiJEltYWdlRm9ybWF0dGluZ1dpZHRoXCIsXG4gIFwiJEltYWdlUmVzb2x1dGlvblwiLFxuICBcIiRJbWFnaW5nRGV2aWNlXCIsXG4gIFwiJEltYWdpbmdEZXZpY2VzXCIsXG4gIFwiJEltcG9ydEZvcm1hdHNcIixcbiAgXCIkSW5jb21pbmdNYWlsU2V0dGluZ3NcIixcbiAgXCIkSW5pdGlhbERpcmVjdG9yeVwiLFxuICBcIiRJbml0aWFsaXphdGlvblwiLFxuICBcIiRJbml0aWFsaXphdGlvbkNvbnRleHRzXCIsXG4gIFwiJElucHV0XCIsXG4gIFwiJElucHV0RmlsZU5hbWVcIixcbiAgXCIkSW5wdXRTdHJlYW1NZXRob2RzXCIsXG4gIFwiJEluc3BlY3RvclwiLFxuICBcIiRJbnN0YWxsYXRpb25EYXRlXCIsXG4gIFwiJEluc3RhbGxhdGlvbkRpcmVjdG9yeVwiLFxuICBcIiRJbnRlcmZhY2VFbnZpcm9ubWVudFwiLFxuICBcIiRJbnRlcnByZXRlclR5cGVzXCIsXG4gIFwiJEl0ZXJhdGlvbkxpbWl0XCIsXG4gIFwiJEtlcm5lbENvdW50XCIsXG4gIFwiJEtlcm5lbElEXCIsXG4gIFwiJExhbmd1YWdlXCIsXG4gIFwiJExhdW5jaERpcmVjdG9yeVwiLFxuICBcIiRMaWJyYXJ5UGF0aFwiLFxuICBcIiRMaWNlbnNlRXhwaXJhdGlvbkRhdGVcIixcbiAgXCIkTGljZW5zZUlEXCIsXG4gIFwiJExpY2Vuc2VQcm9jZXNzZXNcIixcbiAgXCIkTGljZW5zZVNlcnZlclwiLFxuICBcIiRMaWNlbnNlU3VicHJvY2Vzc2VzXCIsXG4gIFwiJExpY2Vuc2VUeXBlXCIsXG4gIFwiJExpbmVcIixcbiAgXCIkTGlua2VkXCIsXG4gIFwiJExpbmtTdXBwb3J0ZWRcIixcbiAgXCIkTG9hZGVkRmlsZXNcIixcbiAgXCIkTG9jYWxCYXNlXCIsXG4gIFwiJExvY2FsU3ltYm9sQmFzZVwiLFxuICBcIiRNYWNoaW5lQWRkcmVzc2VzXCIsXG4gIFwiJE1hY2hpbmVEb21haW5cIixcbiAgXCIkTWFjaGluZURvbWFpbnNcIixcbiAgXCIkTWFjaGluZUVwc2lsb25cIixcbiAgXCIkTWFjaGluZUlEXCIsXG4gIFwiJE1hY2hpbmVOYW1lXCIsXG4gIFwiJE1hY2hpbmVQcmVjaXNpb25cIixcbiAgXCIkTWFjaGluZVR5cGVcIixcbiAgXCIkTWF4RGlzcGxheWVkQ2hpbGRyZW5cIixcbiAgXCIkTWF4RXh0cmFQcmVjaXNpb25cIixcbiAgXCIkTWF4TGljZW5zZVByb2Nlc3Nlc1wiLFxuICBcIiRNYXhMaWNlbnNlU3VicHJvY2Vzc2VzXCIsXG4gIFwiJE1heE1hY2hpbmVOdW1iZXJcIixcbiAgXCIkTWF4TnVtYmVyXCIsXG4gIFwiJE1heFBpZWNld2lzZUNhc2VzXCIsXG4gIFwiJE1heFByZWNpc2lvblwiLFxuICBcIiRNYXhSb290RGVncmVlXCIsXG4gIFwiJE1lc3NhZ2VHcm91cHNcIixcbiAgXCIkTWVzc2FnZUxpc3RcIixcbiAgXCIkTWVzc2FnZVByZVByaW50XCIsXG4gIFwiJE1lc3NhZ2VzXCIsXG4gIFwiJE1pbk1hY2hpbmVOdW1iZXJcIixcbiAgXCIkTWluTnVtYmVyXCIsXG4gIFwiJE1pbm9yUmVsZWFzZU51bWJlclwiLFxuICBcIiRNaW5QcmVjaXNpb25cIixcbiAgXCIkTW9iaWxlUGhvbmVcIixcbiAgXCIkTW9kdWxlTnVtYmVyXCIsXG4gIFwiJE5ldHdvcmtDb25uZWN0ZWRcIixcbiAgXCIkTmV0d29ya0ludGVyZmFjZXNcIixcbiAgXCIkTmV0d29ya0xpY2Vuc2VcIixcbiAgXCIkTmV3TWVzc2FnZVwiLFxuICBcIiROZXdTeW1ib2xcIixcbiAgXCIkTm90ZWJvb2tJbmxpbmVTdG9yYWdlTGltaXRcIixcbiAgXCIkTm90ZWJvb2tzXCIsXG4gIFwiJE5vVmFsdWVcIixcbiAgXCIkTnVtYmVyTWFya3NcIixcbiAgXCIkT2ZmXCIsXG4gIFwiJE9wZXJhdGluZ1N5c3RlbVwiLFxuICBcIiRPdXRwdXRcIixcbiAgXCIkT3V0cHV0Rm9ybXNcIixcbiAgXCIkT3V0cHV0U2l6ZUxpbWl0XCIsXG4gIFwiJE91dHB1dFN0cmVhbU1ldGhvZHNcIixcbiAgXCIkUGFja2FnZXNcIixcbiAgXCIkUGFyZW50TGlua1wiLFxuICBcIiRQYXJlbnRQcm9jZXNzSURcIixcbiAgXCIkUGFzc3dvcmRGaWxlXCIsXG4gIFwiJFBhdGNoTGV2ZWxJRFwiLFxuICBcIiRQYXRoXCIsXG4gIFwiJFBhdGhuYW1lU2VwYXJhdG9yXCIsXG4gIFwiJFBlcmZvcm1hbmNlR29hbFwiLFxuICBcIiRQZXJtaXNzaW9uc1wiLFxuICBcIiRQZXJtaXNzaW9uc0dyb3VwQmFzZVwiLFxuICBcIiRQZXJzaXN0ZW5jZUJhc2VcIixcbiAgXCIkUGVyc2lzdGVuY2VQYXRoXCIsXG4gIFwiJFBpcGVTdXBwb3J0ZWRcIixcbiAgXCIkUGxvdFRoZW1lXCIsXG4gIFwiJFBvc3RcIixcbiAgXCIkUHJlXCIsXG4gIFwiJFByZWZlcmVuY2VzRGlyZWN0b3J5XCIsXG4gIFwiJFByZUluaXRpYWxpemF0aW9uXCIsXG4gIFwiJFByZVByaW50XCIsXG4gIFwiJFByZVJlYWRcIixcbiAgXCIkUHJpbnRGb3Jtc1wiLFxuICBcIiRQcmludExpdGVyYWxcIixcbiAgXCIkUHJpbnRvdXQzRFByZXZpZXdlclwiLFxuICBcIiRQcm9jZXNzSURcIixcbiAgXCIkUHJvY2Vzc29yQ291bnRcIixcbiAgXCIkUHJvY2Vzc29yVHlwZVwiLFxuICBcIiRQcm9kdWN0SW5mb3JtYXRpb25cIixcbiAgXCIkUHJvZ3JhbU5hbWVcIixcbiAgXCIkUHJvZ3Jlc3NSZXBvcnRpbmdcIixcbiAgXCIkUHVibGlzaGVySURcIixcbiAgXCIkUmFuZG9tR2VuZXJhdG9yU3RhdGVcIixcbiAgXCIkUmFuZG9tU3RhdGVcIixcbiAgXCIkUmVjdXJzaW9uTGltaXRcIixcbiAgXCIkUmVnaXN0ZXJlZERldmljZUNsYXNzZXNcIixcbiAgXCIkUmVnaXN0ZXJlZFVzZXJOYW1lXCIsXG4gIFwiJFJlbGVhc2VOdW1iZXJcIixcbiAgXCIkUmVxdWVzdGVyQWRkcmVzc1wiLFxuICBcIiRSZXF1ZXN0ZXJDbG91ZFVzZXJJRFwiLFxuICBcIiRSZXF1ZXN0ZXJDbG91ZFVzZXJVVUlEXCIsXG4gIFwiJFJlcXVlc3RlcldvbGZyYW1JRFwiLFxuICBcIiRSZXF1ZXN0ZXJXb2xmcmFtVVVJRFwiLFxuICBcIiRSZXNvdXJjZVN5c3RlbUJhc2VcIixcbiAgXCIkUmVzb3VyY2VTeXN0ZW1QYXRoXCIsXG4gIFwiJFJvb3REaXJlY3RvcnlcIixcbiAgXCIkU2NoZWR1bGVkVGFza1wiLFxuICBcIiRTY3JpcHRDb21tYW5kTGluZVwiLFxuICBcIiRTY3JpcHRJbnB1dFN0cmluZ1wiLFxuICBcIiRTZWN1cmVkQXV0aGVudGljYXRpb25LZXlUb2tlbnNcIixcbiAgXCIkU2VydmljZUNyZWRpdHNBdmFpbGFibGVcIixcbiAgXCIkU2VydmljZXNcIixcbiAgXCIkU2Vzc2lvbklEXCIsXG4gIFwiJFNldFBhcmVudExpbmtcIixcbiAgXCIkU2hhcmVkRnVuY3Rpb25zXCIsXG4gIFwiJFNoYXJlZFZhcmlhYmxlc1wiLFxuICBcIiRTb3VuZERpc3BsYXlcIixcbiAgXCIkU291bmREaXNwbGF5RnVuY3Rpb25cIixcbiAgXCIkU291cmNlTGlua1wiLFxuICBcIiRTU0hBdXRoZW50aWNhdGlvblwiLFxuICBcIiRTdWJ0aXRsZURlY29kZXJzXCIsXG4gIFwiJFN1YnRpdGxlRW5jb2RlcnNcIixcbiAgXCIkU3VtbWFyeUJveERhdGFTaXplTGltaXRcIixcbiAgXCIkU3VwcHJlc3NJbnB1dEZvcm1IZWFkc1wiLFxuICBcIiRTeW5jaHJvbm91c0V2YWx1YXRpb25cIixcbiAgXCIkU3ludGF4SGFuZGxlclwiLFxuICBcIiRTeXN0ZW1cIixcbiAgXCIkU3lzdGVtQ2hhcmFjdGVyRW5jb2RpbmdcIixcbiAgXCIkU3lzdGVtQ3JlZGVudGlhbFN0b3JlXCIsXG4gIFwiJFN5c3RlbUlEXCIsXG4gIFwiJFN5c3RlbU1lbW9yeVwiLFxuICBcIiRTeXN0ZW1TaGVsbFwiLFxuICBcIiRTeXN0ZW1UaW1lWm9uZVwiLFxuICBcIiRTeXN0ZW1Xb3JkTGVuZ3RoXCIsXG4gIFwiJFRhcmdldFN5c3RlbXNcIixcbiAgXCIkVGVtcGxhdGVQYXRoXCIsXG4gIFwiJFRlbXBvcmFyeURpcmVjdG9yeVwiLFxuICBcIiRUZW1wb3JhcnlQcmVmaXhcIixcbiAgXCIkVGVzdEZpbGVOYW1lXCIsXG4gIFwiJFRleHRTdHlsZVwiLFxuICBcIiRUaW1lZE91dFwiLFxuICBcIiRUaW1lVW5pdFwiLFxuICBcIiRUaW1lWm9uZVwiLFxuICBcIiRUaW1lWm9uZUVudGl0eVwiLFxuICBcIiRUb3BEaXJlY3RvcnlcIixcbiAgXCIkVHJhY2VPZmZcIixcbiAgXCIkVHJhY2VPblwiLFxuICBcIiRUcmFjZVBhdHRlcm5cIixcbiAgXCIkVHJhY2VQb3N0QWN0aW9uXCIsXG4gIFwiJFRyYWNlUHJlQWN0aW9uXCIsXG4gIFwiJFVuaXRTeXN0ZW1cIixcbiAgXCIkVXJnZW50XCIsXG4gIFwiJFVzZXJBZGRPbnNEaXJlY3RvcnlcIixcbiAgXCIkVXNlckFnZW50TGFuZ3VhZ2VzXCIsXG4gIFwiJFVzZXJBZ2VudE1hY2hpbmVcIixcbiAgXCIkVXNlckFnZW50TmFtZVwiLFxuICBcIiRVc2VyQWdlbnRPcGVyYXRpbmdTeXN0ZW1cIixcbiAgXCIkVXNlckFnZW50U3RyaW5nXCIsXG4gIFwiJFVzZXJBZ2VudFZlcnNpb25cIixcbiAgXCIkVXNlckJhc2VEaXJlY3RvcnlcIixcbiAgXCIkVXNlckJhc2VQYWNsZXRzRGlyZWN0b3J5XCIsXG4gIFwiJFVzZXJEb2N1bWVudHNEaXJlY3RvcnlcIixcbiAgXCIkVXNlcm5hbWVcIixcbiAgXCIkVXNlck5hbWVcIixcbiAgXCIkVXNlclVSTEJhc2VcIixcbiAgXCIkVmVyc2lvblwiLFxuICBcIiRWZXJzaW9uTnVtYmVyXCIsXG4gIFwiJFZpZGVvRGVjb2RlcnNcIixcbiAgXCIkVmlkZW9FbmNvZGVyc1wiLFxuICBcIiRWb2ljZVN0eWxlc1wiLFxuICBcIiRXb2xmcmFtRG9jdW1lbnRzRGlyZWN0b3J5XCIsXG4gIFwiJFdvbGZyYW1JRFwiLFxuICBcIiRXb2xmcmFtVVVJRFwiXG5dO1xuXG4vKlxuTGFuZ3VhZ2U6IFdvbGZyYW0gTGFuZ3VhZ2VcbkRlc2NyaXB0aW9uOiBUaGUgV29sZnJhbSBMYW5ndWFnZSBpcyB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdXNlZCBpbiBXb2xmcmFtIE1hdGhlbWF0aWNhLCBhIG1vZGVybiB0ZWNobmljYWwgY29tcHV0aW5nIHN5c3RlbSBzcGFubmluZyBtb3N0IGFyZWFzIG9mIHRlY2huaWNhbCBjb21wdXRpbmcuXG5BdXRob3JzOiBQYXRyaWNrIFNjaGVpYmUgPHBhdHJpY2tAaGFsaXJ1dGFuLmRlPiwgUm9iZXJ0IEphY29ic29uIDxyb2JlcnRqYWNvYnNvbkBhY20ub3JnPlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cud29sZnJhbS5jb20vbWF0aGVtYXRpY2EvXG5DYXRlZ29yeTogc2NpZW50aWZpY1xuKi9cblxuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gbWF0aGVtYXRpY2EoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIC8qXG4gIFRoaXMgcmF0aGVyIHNjYXJ5IGxvb2tpbmcgbWF0Y2hpbmcgb2YgTWF0aGVtYXRpY2EgbnVtYmVycyBpcyBjYXJlZnVsbHkgZXhwbGFpbmVkIGJ5IFJvYmVydCBKYWNvYnNvbiBoZXJlOlxuICBodHRwczovL3dsdG9vbHMuZ2l0aHViLmlvL0xhbmd1YWdlU3BlYy9TcGVjaWZpY2F0aW9uL1N5bnRheC9OdW1iZXItcmVwcmVzZW50YXRpb25zL1xuICAgKi9cbiAgY29uc3QgQkFTRV9SRSA9IC8oWzItOV18WzEtMl1cXGR8WzNdWzAtNV0pXFxeXFxeLztcbiAgY29uc3QgQkFTRV9ESUdJVFNfUkUgPSAvKFxcdypcXC5cXHcrfFxcdytcXC5cXHcqfFxcdyspLztcbiAgY29uc3QgTlVNQkVSX1JFID0gLyhcXGQqXFwuXFxkK3xcXGQrXFwuXFxkKnxcXGQrKS87XG4gIGNvbnN0IEJBU0VfTlVNQkVSX1JFID0gcmVnZXguZWl0aGVyKHJlZ2V4LmNvbmNhdChCQVNFX1JFLCBCQVNFX0RJR0lUU19SRSksIE5VTUJFUl9SRSk7XG5cbiAgY29uc3QgQUNDVVJBQ1lfUkUgPSAvYGBbKy1dPyhcXGQqXFwuXFxkK3xcXGQrXFwuXFxkKnxcXGQrKS87XG4gIGNvbnN0IFBSRUNJU0lPTl9SRSA9IC9gKFsrLV0/KFxcZCpcXC5cXGQrfFxcZCtcXC5cXGQqfFxcZCspKT8vO1xuICBjb25zdCBBUFBST1hJTUFURV9OVU1CRVJfUkUgPSByZWdleC5laXRoZXIoQUNDVVJBQ1lfUkUsIFBSRUNJU0lPTl9SRSk7XG5cbiAgY29uc3QgU0NJRU5USUZJQ19OT1RBVElPTl9SRSA9IC9cXCpcXF5bKy1dP1xcZCsvO1xuXG4gIGNvbnN0IE1BVEhFTUFUSUNBX05VTUJFUl9SRSA9IHJlZ2V4LmNvbmNhdChcbiAgICBCQVNFX05VTUJFUl9SRSxcbiAgICByZWdleC5vcHRpb25hbChBUFBST1hJTUFURV9OVU1CRVJfUkUpLFxuICAgIHJlZ2V4Lm9wdGlvbmFsKFNDSUVOVElGSUNfTk9UQVRJT05fUkUpXG4gICk7XG5cbiAgY29uc3QgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBiZWdpbjogTUFUSEVNQVRJQ0FfTlVNQkVSX1JFXG4gIH07XG5cbiAgY29uc3QgU1lNQk9MX1JFID0gL1thLXpBLVokXVthLXpBLVowLTkkXSovO1xuICBjb25zdCBTWVNURU1fU1lNQk9MU19TRVQgPSBuZXcgU2V0KFNZU1RFTV9TWU1CT0xTKTtcbiAgLyoqIEB0eXBlIHtNb2RlfSAqL1xuICBjb25zdCBTWU1CT0xTID0geyB2YXJpYW50czogW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2J1aWx0aW4tc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgICAvLyBmb3IgcGVyZm9ybWFuY2Ugb3V0IG9mIGZlYXIgb2YgcmVnZXguZWl0aGVyKC4uLk1hdGhlbWF0aWNhLlNZU1RFTV9TWU1CT0xTKVxuICAgICAgXCJvbjpiZWdpblwiOiAobWF0Y2gsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghU1lTVEVNX1NZTUJPTFNfU0VULmhhcyhtYXRjaFswXSkpIHJlc3BvbnNlLmlnbm9yZU1hdGNoKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgYmVnaW46IFNZTUJPTF9SRVxuICAgIH1cbiAgXSB9O1xuXG4gIGNvbnN0IE5BTUVEX0NIQVJBQ1RFUiA9IHtcbiAgICBjbGFzc05hbWU6ICduYW1lZC1jaGFyYWN0ZXInLFxuICAgIGJlZ2luOiAvXFxcXFxcW1skYS16QS1aXVskYS16QS1aMC05XStcXF0vXG4gIH07XG5cbiAgY29uc3QgT1BFUkFUT1JTID0ge1xuICAgIGNsYXNzTmFtZTogJ29wZXJhdG9yJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IC9bK1xcLSovLDsuOkB+PT48JnxfYCdePyElXSsvXG4gIH07XG4gIGNvbnN0IFBBVFRFUk5TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhdHRlcm4nLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBiZWdpbjogLyhbYS16QS1aJF1bYS16QS1aMC05JF0qKT9fKyhbYS16QS1aJF1bYS16QS1aMC05JF0qKT8vXG4gIH07XG5cbiAgY29uc3QgU0xPVFMgPSB7XG4gICAgY2xhc3NOYW1lOiAnc2xvdCcsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGJlZ2luOiAvI1thLXpBLVokXVthLXpBLVowLTkkXSp8IytbMC05XT8vXG4gIH07XG5cbiAgY29uc3QgQlJBQ0VTID0ge1xuICAgIGNsYXNzTmFtZTogJ2JyYWNlJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IC9bW1xcXSgpe31dL1xuICB9O1xuXG4gIGNvbnN0IE1FU1NBR0VTID0ge1xuICAgIGNsYXNzTmFtZTogJ21lc3NhZ2UtbmFtZScsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGJlZ2luOiByZWdleC5jb25jYXQoXCI6OlwiLCBTWU1CT0xfUkUpXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnTWF0aGVtYXRpY2EnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdtbWEnLFxuICAgICAgJ3dsJ1xuICAgIF0sXG4gICAgY2xhc3NOYW1lQWxpYXNlczoge1xuICAgICAgYnJhY2U6ICdwdW5jdHVhdGlvbicsXG4gICAgICBwYXR0ZXJuOiAndHlwZScsXG4gICAgICBzbG90OiAndHlwZScsXG4gICAgICBzeW1ib2w6ICd2YXJpYWJsZScsXG4gICAgICAnbmFtZWQtY2hhcmFjdGVyJzogJ3ZhcmlhYmxlJyxcbiAgICAgICdidWlsdGluLXN5bWJvbCc6ICdidWlsdF9pbicsXG4gICAgICAnbWVzc2FnZS1uYW1lJzogJ3N0cmluZydcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoL1xcKFxcKi8sIC9cXCpcXCkvLCB7IGNvbnRhaW5zOiBbICdzZWxmJyBdIH0pLFxuICAgICAgUEFUVEVSTlMsXG4gICAgICBTTE9UUyxcbiAgICAgIE1FU1NBR0VTLFxuICAgICAgU1lNQk9MUyxcbiAgICAgIE5BTUVEX0NIQVJBQ1RFUixcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBOVU1CRVJTLFxuICAgICAgT1BFUkFUT1JTLFxuICAgICAgQlJBQ0VTXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hdGhlbWF0aWNhO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///201\n')},247:module=>{eval("/*\nLanguage: HAML\nRequires: ruby.js\nAuthor: Dan Allen \nWebsite: http://haml.info\nCategory: template\n*/\n\n// TODO support filter tags like :javascript, support inline HTML\nfunction haml(hljs) {\n return {\n name: 'HAML',\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$',\n relevance: 10\n },\n // FIXME these comments should be allowed to span indented lines\n hljs.COMMENT(\n '^\\\\s*(!=#|=#|-#|/).*$',\n null,\n { relevance: 0 }\n ),\n {\n begin: '^\\\\s*(-|=|!=)(?!#)',\n end: /$/,\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'tag',\n begin: '^\\\\s*%',\n contains: [\n {\n className: 'selector-tag',\n begin: '\\\\w+'\n },\n {\n className: 'selector-id',\n begin: '#[\\\\w-]+'\n },\n {\n className: 'selector-class',\n begin: '\\\\.[\\\\w-]+'\n },\n {\n begin: /\\{\\s*/,\n end: /\\s*\\}/,\n contains: [\n {\n begin: ':\\\\w+\\\\s*=>',\n end: ',\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: ':\\\\w+'\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\s*',\n end: '\\\\s*\\\\)',\n excludeEnd: true,\n contains: [\n {\n begin: '\\\\w+\\\\s*=',\n end: '\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: '\\\\w+',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n }\n ]\n },\n { begin: '^\\\\s*[=~]\\\\s*' },\n {\n begin: /#\\{/,\n end: /\\}/,\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n}\n\nmodule.exports = haml;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ3LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxzQkFBc0I7QUFDdEIsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxRQUFRLHdCQUF3QjtBQUNoQztBQUNBLG1CQUFtQjtBQUNuQixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2hhbWwuanM/ZjIzNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEhBTUxcblJlcXVpcmVzOiBydWJ5LmpzXG5BdXRob3I6IERhbiBBbGxlbiA8ZGFuLmouYWxsZW5AZ21haWwuY29tPlxuV2Vic2l0ZTogaHR0cDovL2hhbWwuaW5mb1xuQ2F0ZWdvcnk6IHRlbXBsYXRlXG4qL1xuXG4vLyBUT0RPIHN1cHBvcnQgZmlsdGVyIHRhZ3MgbGlrZSA6amF2YXNjcmlwdCwgc3VwcG9ydCBpbmxpbmUgSFRNTFxuZnVuY3Rpb24gaGFtbChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0hBTUwnLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXiEhISggKDV8MVxcXFwuMXxTdHJpY3R8RnJhbWVzZXR8QmFzaWN8TW9iaWxlfFJERmF8WE1MXFxcXGIuKikpPyQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAgLy8gRklYTUUgdGhlc2UgY29tbWVudHMgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc3BhbiBpbmRlbnRlZCBsaW5lc1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnXlxcXFxzKighPSN8PSN8LSN8LykuKiQnLFxuICAgICAgICBudWxsLFxuICAgICAgICB7IHJlbGV2YW5jZTogMCB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ15cXFxccyooLXw9fCE9KSg/ISMpJyxcbiAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncnVieScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqJScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItaWQnLFxuICAgICAgICAgICAgYmVnaW46ICcjW1xcXFx3LV0rJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnLFxuICAgICAgICAgICAgYmVnaW46ICdcXFxcLltcXFxcdy1dKydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFx7XFxzKi8sXG4gICAgICAgICAgICBlbmQ6IC9cXHMqXFx9LyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogJzpcXFxcdytcXFxccyo9PicsXG4gICAgICAgICAgICAgICAgZW5kOiAnLFxcXFxzKycsXG4gICAgICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAnOlxcXFx3KydcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3KycsXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdcXFxcKFxcXFxzKicsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccypcXFxcKScsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHcrXFxcXHMqPScsXG4gICAgICAgICAgICAgICAgZW5kOiAnXFxcXHMrJyxcbiAgICAgICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcdysnLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx3KycsXG4gICAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHsgYmVnaW46ICdeXFxcXHMqWz1+XVxcXFxzKicgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8jXFx7LyxcbiAgICAgICAgZW5kOiAvXFx9LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5JyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///247\n")},258:module=>{eval("/*\nLanguage: Prolog\nDescription: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.\nAuthor: Raivo Laanemets \nWebsite: https://en.wikipedia.org/wiki/Prolog\nCategory: functional\n*/\n\nfunction prolog(hljs) {\n const ATOM = {\n\n begin: /[a-z][A-Za-z0-9_]*/,\n relevance: 0\n };\n\n const VAR = {\n\n className: 'symbol',\n variants: [\n { begin: /[A-Z][a-zA-Z0-9_]*/ },\n { begin: /_[A-Za-z0-9_]*/ }\n ],\n relevance: 0\n };\n\n const PARENTED = {\n\n begin: /\\(/,\n end: /\\)/,\n relevance: 0\n };\n\n const LIST = {\n\n begin: /\\[/,\n end: /\\]/\n };\n\n const LINE_COMMENT = {\n\n className: 'comment',\n begin: /%/,\n end: /$/,\n contains: [ hljs.PHRASAL_WORDS_MODE ]\n };\n\n const BACKTICK_STRING = {\n\n className: 'string',\n begin: /`/,\n end: /`/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n\n const CHAR_CODE = {\n className: 'string', // 0'a etc.\n begin: /0'(\\\\'|.)/\n };\n\n const SPACE_CODE = {\n className: 'string',\n begin: /0'\\\\s/ // 0'\\s\n };\n\n const PRED_OP = { // relevance booster\n begin: /:-/ };\n\n const inner = [\n\n ATOM,\n VAR,\n PARENTED,\n PRED_OP,\n LIST,\n LINE_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BACKTICK_STRING,\n CHAR_CODE,\n SPACE_CODE,\n hljs.C_NUMBER_MODE\n ];\n\n PARENTED.contains = inner;\n LIST.contains = inner;\n\n return {\n name: 'Prolog',\n contains: inner.concat([\n { // relevance booster\n begin: /\\.$/ }\n ])\n };\n}\n\nmodule.exports = prolog;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLDZCQUE2QjtBQUNyQyxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CO0FBQ3BCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3Byb2xvZy5qcz83MGM3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUHJvbG9nXG5EZXNjcmlwdGlvbjogUHJvbG9nIGlzIGEgZ2VuZXJhbCBwdXJwb3NlIGxvZ2ljIHByb2dyYW1taW5nIGxhbmd1YWdlIGFzc29jaWF0ZWQgd2l0aCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBhbmQgY29tcHV0YXRpb25hbCBsaW5ndWlzdGljcy5cbkF1dGhvcjogUmFpdm8gTGFhbmVtZXRzIDxyYWl2b0BpbmZkb3QuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJvbG9nXG5DYXRlZ29yeTogZnVuY3Rpb25hbFxuKi9cblxuZnVuY3Rpb24gcHJvbG9nKGhsanMpIHtcbiAgY29uc3QgQVRPTSA9IHtcblxuICAgIGJlZ2luOiAvW2Etel1bQS1aYS16MC05X10qLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBWQVIgPSB7XG5cbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAvW0EtWl1bYS16QS1aMC05X10qLyB9LFxuICAgICAgeyBiZWdpbjogL19bQS1aYS16MC05X10qLyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBQQVJFTlRFRCA9IHtcblxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IExJU1QgPSB7XG5cbiAgICBiZWdpbjogL1xcWy8sXG4gICAgZW5kOiAvXFxdL1xuICB9O1xuXG4gIGNvbnN0IExJTkVfQ09NTUVOVCA9IHtcblxuICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgIGJlZ2luOiAvJS8sXG4gICAgZW5kOiAvJC8sXG4gICAgY29udGFpbnM6IFsgaGxqcy5QSFJBU0FMX1dPUkRTX01PREUgXVxuICB9O1xuXG4gIGNvbnN0IEJBQ0tUSUNLX1NUUklORyA9IHtcblxuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9gLyxcbiAgICBlbmQ6IC9gLyxcbiAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICB9O1xuXG4gIGNvbnN0IENIQVJfQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLCAvLyAwJ2EgZXRjLlxuICAgIGJlZ2luOiAvMCcoXFxcXCd8LikvXG4gIH07XG5cbiAgY29uc3QgU1BBQ0VfQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvMCdcXFxccy8gLy8gMCdcXHNcbiAgfTtcblxuICBjb25zdCBQUkVEX09QID0geyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgIGJlZ2luOiAvOi0vIH07XG5cbiAgY29uc3QgaW5uZXIgPSBbXG5cbiAgICBBVE9NLFxuICAgIFZBUixcbiAgICBQQVJFTlRFRCxcbiAgICBQUkVEX09QLFxuICAgIExJU1QsXG4gICAgTElORV9DT01NRU5ULFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgQkFDS1RJQ0tfU1RSSU5HLFxuICAgIENIQVJfQ09ERSxcbiAgICBTUEFDRV9DT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdO1xuXG4gIFBBUkVOVEVELmNvbnRhaW5zID0gaW5uZXI7XG4gIExJU1QuY29udGFpbnMgPSBpbm5lcjtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdQcm9sb2cnLFxuICAgIGNvbnRhaW5zOiBpbm5lci5jb25jYXQoW1xuICAgICAgeyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgICBiZWdpbjogL1xcLiQvIH1cbiAgICBdKVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb2xvZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///258\n")},272:(__unused_webpack_module,exports)=>{"use strict";eval("\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcyLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLHdCQUF3QiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeUNvbW1lbnQuanM/NTRjMCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3RyaW5naWZpZXMgYSBjb21tZW50LlxuICpcbiAqIEVtcHR5IGNvbW1lbnQgbGluZXMgYXJlIGxlZnQgZW1wdHksXG4gKiBsaW5lcyBjb25zaXN0aW5nIG9mIGEgc2luZ2xlIHNwYWNlIGFyZSByZXBsYWNlZCBieSBgI2AsXG4gKiBhbmQgYWxsIG90aGVyIGxpbmVzIGFyZSBwcmVmaXhlZCB3aXRoIGEgYCNgLlxuICovXG5jb25zdCBzdHJpbmdpZnlDb21tZW50ID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoL14oPyEkKSg/OiAkKT8vZ20sICcjJyk7XG5mdW5jdGlvbiBpbmRlbnRDb21tZW50KGNvbW1lbnQsIGluZGVudCkge1xuICAgIGlmICgvXlxcbiskLy50ZXN0KGNvbW1lbnQpKVxuICAgICAgICByZXR1cm4gY29tbWVudC5zdWJzdHJpbmcoMSk7XG4gICAgcmV0dXJuIGluZGVudCA/IGNvbW1lbnQucmVwbGFjZSgvXig/ISAqJCkvZ20sIGluZGVudCkgOiBjb21tZW50O1xufVxuY29uc3QgbGluZUNvbW1lbnQgPSAoc3RyLCBpbmRlbnQsIGNvbW1lbnQpID0+IHN0ci5lbmRzV2l0aCgnXFxuJylcbiAgICA/IGluZGVudENvbW1lbnQoY29tbWVudCwgaW5kZW50KVxuICAgIDogY29tbWVudC5pbmNsdWRlcygnXFxuJylcbiAgICAgICAgPyAnXFxuJyArIGluZGVudENvbW1lbnQoY29tbWVudCwgaW5kZW50KVxuICAgICAgICA6IChzdHIuZW5kc1dpdGgoJyAnKSA/ICcnIDogJyAnKSArIGNvbW1lbnQ7XG5cbmV4cG9ydHMuaW5kZW50Q29tbWVudCA9IGluZGVudENvbW1lbnQ7XG5leHBvcnRzLmxpbmVDb21tZW50ID0gbGluZUNvbW1lbnQ7XG5leHBvcnRzLnN0cmluZ2lmeUNvbW1lbnQgPSBzdHJpbmdpZnlDb21tZW50O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///272\n")},291:module=>{eval("/*\nLanguage: Inform 7\nAuthor: Bruno Dias \nDescription: Language definition for Inform 7, a DSL for writing parser interactive fiction.\nWebsite: http://inform7.com\nCategory: gaming\n*/\n\nfunction inform7(hljs) {\n const START_BRACKET = '\\\\[';\n const END_BRACKET = '\\\\]';\n return {\n name: 'Inform 7',\n aliases: [ 'i7' ],\n case_insensitive: true,\n keywords: {\n // Some keywords more or less unique to I7, for relevance.\n keyword:\n // kind:\n 'thing room person man woman animal container '\n + 'supporter backdrop door '\n // characteristic:\n + 'scenery open closed locked inside gender '\n // verb:\n + 'is are say understand '\n // misc keyword:\n + 'kind of rule' },\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"',\n relevance: 0,\n contains: [\n {\n className: 'subst',\n begin: START_BRACKET,\n end: END_BRACKET\n }\n ]\n },\n {\n className: 'section',\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n end: '$'\n },\n {\n // Rule definition\n // This is here for relevance.\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n end: ':',\n contains: [\n {\n // Rule name\n begin: '\\\\(This',\n end: '\\\\)'\n }\n ]\n },\n {\n className: 'comment',\n begin: START_BRACKET,\n end: END_BRACKET,\n contains: [ 'self' ]\n }\n ]\n };\n}\n\nmodule.exports = inform7;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkxLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9pbmZvcm03LmpzPzMzYzQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBJbmZvcm0gN1xuQXV0aG9yOiBCcnVubyBEaWFzIDxicnVuby5yLmRpYXNAZ21haWwuY29tPlxuRGVzY3JpcHRpb246IExhbmd1YWdlIGRlZmluaXRpb24gZm9yIEluZm9ybSA3LCBhIERTTCBmb3Igd3JpdGluZyBwYXJzZXIgaW50ZXJhY3RpdmUgZmljdGlvbi5cbldlYnNpdGU6IGh0dHA6Ly9pbmZvcm03LmNvbVxuQ2F0ZWdvcnk6IGdhbWluZ1xuKi9cblxuZnVuY3Rpb24gaW5mb3JtNyhobGpzKSB7XG4gIGNvbnN0IFNUQVJUX0JSQUNLRVQgPSAnXFxcXFsnO1xuICBjb25zdCBFTkRfQlJBQ0tFVCA9ICdcXFxcXSc7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0luZm9ybSA3JyxcbiAgICBhbGlhc2VzOiBbICdpNycgXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAvLyBTb21lIGtleXdvcmRzIG1vcmUgb3IgbGVzcyB1bmlxdWUgdG8gSTcsIGZvciByZWxldmFuY2UuXG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvLyBraW5kOlxuICAgICAgICAndGhpbmcgcm9vbSBwZXJzb24gbWFuIHdvbWFuIGFuaW1hbCBjb250YWluZXIgJ1xuICAgICAgICArICdzdXBwb3J0ZXIgYmFja2Ryb3AgZG9vciAnXG4gICAgICAgIC8vIGNoYXJhY3RlcmlzdGljOlxuICAgICAgICArICdzY2VuZXJ5IG9wZW4gY2xvc2VkIGxvY2tlZCBpbnNpZGUgZ2VuZGVyICdcbiAgICAgICAgLy8gdmVyYjpcbiAgICAgICAgKyAnaXMgYXJlIHNheSB1bmRlcnN0YW5kICdcbiAgICAgICAgLy8gbWlzYyBrZXl3b3JkOlxuICAgICAgICArICdraW5kIG9mIHJ1bGUnIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgICAgIGJlZ2luOiBTVEFSVF9CUkFDS0VULFxuICAgICAgICAgICAgZW5kOiBFTkRfQlJBQ0tFVFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VjdGlvbicsXG4gICAgICAgIGJlZ2luOiAvXihWb2x1bWV8Qm9va3xQYXJ0fENoYXB0ZXJ8U2VjdGlvbnxUYWJsZSlcXGIvLFxuICAgICAgICBlbmQ6ICckJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gUnVsZSBkZWZpbml0aW9uXG4gICAgICAgIC8vIFRoaXMgaXMgaGVyZSBmb3IgcmVsZXZhbmNlLlxuICAgICAgICBiZWdpbjogL14oQ2hlY2t8Q2Fycnkgb3V0fFJlcG9ydHxJbnN0ZWFkIG9mfFRvfFJ1bGV8V2hlbnxCZWZvcmV8QWZ0ZXIpXFxiLyxcbiAgICAgICAgZW5kOiAnOicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gUnVsZSBuYW1lXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoVGhpcycsXG4gICAgICAgICAgICBlbmQ6ICdcXFxcKSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NvbW1lbnQnLFxuICAgICAgICBiZWdpbjogU1RBUlRfQlJBQ0tFVCxcbiAgICAgICAgZW5kOiBFTkRfQlJBQ0tFVCxcbiAgICAgICAgY29udGFpbnM6IFsgJ3NlbGYnIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5mb3JtNztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///291\n")},320:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar cst = __webpack_require__(9536);\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIwLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFVBQVUsbUJBQU8sQ0FBQyxJQUFVOztBQUU1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkZBQTJGO0FBQzNGLHlDQUF5QztBQUN6QywwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hELGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EscUNBQXFDLHVCQUF1QjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3QvcGFyc2UvbGV4ZXIuanM/YmIyMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjc3QgPSByZXF1aXJlKCcuL2NzdC5qcycpO1xuXG4vKlxuU1RBUlQgLT4gc3RyZWFtXG5cbnN0cmVhbVxuICBkaXJlY3RpdmUgLT4gbGluZS1lbmQgLT4gc3RyZWFtXG4gIGluZGVudCArIGxpbmUtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gbGluZS1zdGFydFxuXG5saW5lLWVuZFxuICBjb21tZW50IC0+IGxpbmUtZW5kXG4gIG5ld2xpbmUgLT4gLlxuICBpbnB1dC1lbmQgLT4gRU5EXG5cbmxpbmUtc3RhcnRcbiAgZG9jLXN0YXJ0IC0+IGRvY1xuICBkb2MtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gaW5kZW50IC0+IGJsb2NrLXN0YXJ0XG5cbmJsb2NrLXN0YXJ0XG4gIHNlcS1pdGVtLXN0YXJ0IC0+IGJsb2NrLXN0YXJ0XG4gIGV4cGxpY2l0LWtleS1zdGFydCAtPiBibG9jay1zdGFydFxuICBtYXAtdmFsdWUtc3RhcnQgLT4gYmxvY2stc3RhcnRcbiAgW2Vsc2VdIC0+IGRvY1xuXG5kb2NcbiAgbGluZS1lbmQgLT4gbGluZS1zdGFydFxuICBzcGFjZXMgLT4gZG9jXG4gIGFuY2hvciAtPiBkb2NcbiAgdGFnIC0+IGRvY1xuICBmbG93LXN0YXJ0IC0+IGZsb3cgLT4gZG9jXG4gIGZsb3ctZW5kIC0+IGVycm9yIC0+IGRvY1xuICBzZXEtaXRlbS1zdGFydCAtPiBlcnJvciAtPiBkb2NcbiAgZXhwbGljaXQta2V5LXN0YXJ0IC0+IGVycm9yIC0+IGRvY1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZG9jXG4gIGFsaWFzIC0+IGRvY1xuICBxdW90ZS1zdGFydCAtPiBxdW90ZWQtc2NhbGFyIC0+IGRvY1xuICBibG9jay1zY2FsYXItaGVhZGVyIC0+IGxpbmUtZW5kIC0+IGJsb2NrLXNjYWxhcihtaW4pIC0+IGxpbmUtc3RhcnRcbiAgW2Vsc2VdIC0+IHBsYWluLXNjYWxhcihmYWxzZSwgbWluKSAtPiBkb2NcblxuZmxvd1xuICBsaW5lLWVuZCAtPiBmbG93XG4gIHNwYWNlcyAtPiBmbG93XG4gIGFuY2hvciAtPiBmbG93XG4gIHRhZyAtPiBmbG93XG4gIGZsb3ctc3RhcnQgLT4gZmxvdyAtPiBmbG93XG4gIGZsb3ctZW5kIC0+IC5cbiAgc2VxLWl0ZW0tc3RhcnQgLT4gZXJyb3IgLT4gZmxvd1xuICBleHBsaWNpdC1rZXktc3RhcnQgLT4gZmxvd1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZmxvd1xuICBhbGlhcyAtPiBmbG93XG4gIHF1b3RlLXN0YXJ0IC0+IHF1b3RlZC1zY2FsYXIgLT4gZmxvd1xuICBjb21tYSAtPiBmbG93XG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIodHJ1ZSwgMCkgLT4gZmxvd1xuXG5xdW90ZWQtc2NhbGFyXG4gIHF1b3RlLWVuZCAtPiAuXG4gIFtlbHNlXSAtPiBxdW90ZWQtc2NhbGFyXG5cbmJsb2NrLXNjYWxhcihtaW4pXG4gIG5ld2xpbmUgKyBwZWVrKGluZGVudCA8IG1pbikgLT4gLlxuICBbZWxzZV0gLT4gYmxvY2stc2NhbGFyKG1pbilcblxucGxhaW4tc2NhbGFyKGlzLWZsb3csIG1pbilcbiAgc2NhbGFyLWVuZChpcy1mbG93KSAtPiAuXG4gIHBlZWsobmV3bGluZSArIChpbmRlbnQgPCBtaW4pKSAtPiAuXG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIobWluKVxuKi9cbmZ1bmN0aW9uIGlzRW1wdHkoY2gpIHtcbiAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgY2FzZSAnXFxyJzpcbiAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmNvbnN0IGhleERpZ2l0cyA9IG5ldyBTZXQoJzAxMjM0NTY3ODlBQkNERUZhYmNkZWYnKTtcbmNvbnN0IHRhZ0NoYXJzID0gbmV3IFNldChcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LSM7Lz86QCY9KyRfLiF+KicoKVwiKTtcbmNvbnN0IGZsb3dJbmRpY2F0b3JDaGFycyA9IG5ldyBTZXQoJyxbXXt9Jyk7XG5jb25zdCBpbnZhbGlkQW5jaG9yQ2hhcnMgPSBuZXcgU2V0KCcgLFtde31cXG5cXHJcXHQnKTtcbmNvbnN0IGlzTm90QW5jaG9yQ2hhciA9IChjaCkgPT4gIWNoIHx8IGludmFsaWRBbmNob3JDaGFycy5oYXMoY2gpO1xuLyoqXG4gKiBTcGxpdHMgYW4gaW5wdXQgc3RyaW5nIGludG8gbGV4aWNhbCB0b2tlbnMsIGkuZS4gc21hbGxlciBzdHJpbmdzIHRoYXQgYXJlXG4gKiBlYXNpbHkgaWRlbnRpZmlhYmxlIGJ5IGB0b2tlbnMudG9rZW5UeXBlKClgLlxuICpcbiAqIExleGluZyBzdGFydHMgYWx3YXlzIGluIGEgXCJzdHJlYW1cIiBjb250ZXh0LiBJbmNvbXBsZXRlIGlucHV0IG1heSBiZSBidWZmZXJlZFxuICogdW50aWwgYSBjb21wbGV0ZSB0b2tlbiBjYW4gYmUgZW1pdHRlZC5cbiAqXG4gKiBJbiBhZGRpdGlvbiB0byBzbGljZXMgb2YgdGhlIG9yaWdpbmFsIGlucHV0LCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgY2hhcmFjdGVyc1xuICogbWF5IGFsc28gYmUgZW1pdHRlZDpcbiAqXG4gKiAtIGBcXHgwMmAgKFN0YXJ0IG9mIFRleHQpOiBBIGRvY3VtZW50IHN0YXJ0cyB3aXRoIHRoZSBuZXh0IHRva2VuXG4gKiAtIGBcXHgxOGAgKENhbmNlbCk6IFVuZXhwZWN0ZWQgZW5kIG9mIGZsb3ctbW9kZSAoaW5kaWNhdGVzIGFuIGVycm9yKVxuICogLSBgXFx4MWZgIChVbml0IFNlcGFyYXRvcik6IE5leHQgdG9rZW4gaXMgYSBzY2FsYXIgdmFsdWVcbiAqIC0gYFxcdXtGRUZGfWAgKEJ5dGUgb3JkZXIgbWFyayk6IEVtaXR0ZWQgc2VwYXJhdGVseSBvdXRzaWRlIGRvY3VtZW50c1xuICovXG5jbGFzcyBMZXhlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1ZmZlciBtYXJrcyB0aGUgZW5kIG9mXG4gICAgICAgICAqIGFsbCBpbnB1dFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hdEVuZCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXhwbGljaXQgaW5kZW50IHNldCBpbiBibG9jayBzY2FsYXIgaGVhZGVyLCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUgY3VycmVudFxuICAgICAgICAgKiBtaW5pbXVtIGluZGVudCwgc28gZS5nLiBzZXQgdG8gMSBmcm9tIGEgaGVhZGVyIGB8MitgLiBTZXQgdG8gLTEgaWYgbm90XG4gICAgICAgICAqIGV4cGxpY2l0bHkgc2V0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IC0xO1xuICAgICAgICAvKipcbiAgICAgICAgICogQmxvY2sgc2NhbGFycyB0aGF0IGluY2x1ZGUgYSArIChrZWVwKSBjaG9tcGluZyBpbmRpY2F0b3IgaW4gdGhlaXIgaGVhZGVyXG4gICAgICAgICAqIGluY2x1ZGUgdHJhaWxpbmcgZW1wdHkgbGluZXMsIHdoaWNoIGFyZSBvdGhlcndpc2UgZXhjbHVkZWQgZnJvbSB0aGVcbiAgICAgICAgICogc2NhbGFyJ3MgY29udGVudHMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IGZhbHNlO1xuICAgICAgICAvKiogQ3VycmVudCBpbnB1dCAqL1xuICAgICAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmxhZyBub3Rpbmcgd2hldGhlciB0aGUgbWFwIHZhbHVlIGluZGljYXRvciA6IGNhbiBpbW1lZGlhdGVseSBmb2xsb3cgdGhpc1xuICAgICAgICAgKiBub2RlIHdpdGhpbiBhIGZsb3cgY29udGV4dC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAvKiogQ291bnQgb2Ygc3Vycm91bmRpbmcgZmxvdyBjb2xsZWN0aW9uIGxldmVscy4gKi9cbiAgICAgICAgdGhpcy5mbG93TGV2ZWwgPSAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWluaW11bSBsZXZlbCBvZiBpbmRlbnRhdGlvbiByZXF1aXJlZCBmb3IgbmV4dCBsaW5lcyB0byBiZSBwYXJzZWQgYXMgYVxuICAgICAgICAgKiBwYXJ0IG9mIHRoZSBjdXJyZW50IHNjYWxhciB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IDA7XG4gICAgICAgIC8qKiBJbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUgY3VycmVudCBsaW5lLiAqL1xuICAgICAgICB0aGlzLmluZGVudFZhbHVlID0gMDtcbiAgICAgICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBuZXh0IFxcbiBjaGFyYWN0ZXIuICovXG4gICAgICAgIHRoaXMubGluZUVuZFBvcyA9IG51bGw7XG4gICAgICAgIC8qKiBTdG9yZXMgdGhlIHN0YXRlIG9mIHRoZSBsZXhlciBpZiByZWFjaGluZyB0aGUgZW5kIG9mIGluY3BvbXBsZXRlIGlucHV0ICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBBIHBvaW50ZXIgdG8gYGJ1ZmZlcmA7IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBsZXhlci4gKi9cbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZSBZQU1MIHRva2VucyBmcm9tIHRoZSBgc291cmNlYCBzdHJpbmcuIElmIGBpbmNvbXBsZXRlYCxcbiAgICAgKiBhIHBhcnQgb2YgdGhlIGxhc3QgbGluZSBtYXkgYmUgbGVmdCBhcyBhIGJ1ZmZlciBmb3IgdGhlIG5leHQgY2FsbC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgZ2VuZXJhdG9yIG9mIGxleGljYWwgdG9rZW5zXG4gICAgICovXG4gICAgKmxleChzb3VyY2UsIGluY29tcGxldGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdzb3VyY2UgaXMgbm90IGEgc3RyaW5nJyk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyID8gdGhpcy5idWZmZXIgKyBzb3VyY2UgOiBzb3VyY2U7XG4gICAgICAgICAgICB0aGlzLmxpbmVFbmRQb3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXRFbmQgPSAhaW5jb21wbGV0ZTtcbiAgICAgICAgbGV0IG5leHQgPSB0aGlzLm5leHQgPz8gJ3N0cmVhbSc7XG4gICAgICAgIHdoaWxlIChuZXh0ICYmIChpbmNvbXBsZXRlIHx8IHRoaXMuaGFzQ2hhcnMoMSkpKVxuICAgICAgICAgICAgbmV4dCA9IHlpZWxkKiB0aGlzLnBhcnNlTmV4dChuZXh0KTtcbiAgICB9XG4gICAgYXRMaW5lRW5kKCkge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgY2ggPSB0aGlzLmJ1ZmZlcltpXTtcbiAgICAgICAgd2hpbGUgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnIycgfHwgY2ggPT09ICdcXG4nKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChjaCA9PT0gJ1xccicpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJbaSArIDFdID09PSAnXFxuJztcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjaGFyQXQobikge1xuICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MgKyBuXTtcbiAgICB9XG4gICAgY29udGludWVTY2FsYXIob2Zmc2V0KSB7XG4gICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW29mZnNldF07XG4gICAgICAgIGlmICh0aGlzLmluZGVudE5leHQgPiAwKSB7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpbmRlbnQgKyBvZmZzZXRdO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnXFxyJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpbmRlbnQgKyBvZmZzZXQgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicgfHwgKCFuZXh0ICYmICF0aGlzLmF0RW5kKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCArIGluZGVudCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2ggPT09ICdcXG4nIHx8IGluZGVudCA+PSB0aGlzLmluZGVudE5leHQgfHwgKCFjaCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICA/IG9mZnNldCArIGluZGVudFxuICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcuJykge1xuICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLmJ1ZmZlci5zdWJzdHIob2Zmc2V0LCAzKTtcbiAgICAgICAgICAgIGlmICgoZHQgPT09ICctLS0nIHx8IGR0ID09PSAnLi4uJykgJiYgaXNFbXB0eSh0aGlzLmJ1ZmZlcltvZmZzZXQgKyAzXSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICAgIGdldExpbmUoKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLmxpbmVFbmRQb3M7XG4gICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCAoZW5kICE9PSAtMSAmJiBlbmQgPCB0aGlzLnBvcykpIHtcbiAgICAgICAgICAgIGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YoJ1xcbicsIHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMubGluZUVuZFBvcyA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0RW5kID8gdGhpcy5idWZmZXIuc3Vic3RyaW5nKHRoaXMucG9zKSA6IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlcltlbmQgLSAxXSA9PT0gJ1xccicpXG4gICAgICAgICAgICBlbmQgLT0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcywgZW5kKTtcbiAgICB9XG4gICAgaGFzQ2hhcnMobikge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3MgKyBuIDw9IHRoaXMuYnVmZmVyLmxlbmd0aDtcbiAgICB9XG4gICAgc2V0TmV4dChzdGF0ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5saW5lRW5kUG9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0ID0gc3RhdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBwZWVrKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcywgbik7XG4gICAgfVxuICAgICpwYXJzZU5leHQobmV4dCkge1xuICAgICAgICBzd2l0Y2ggKG5leHQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmVhbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlU3RyZWFtKCk7XG4gICAgICAgICAgICBjYXNlICdsaW5lLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1N0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICdkb2MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZURvY3VtZW50KCk7XG4gICAgICAgICAgICBjYXNlICdmbG93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VGbG93Q29sbGVjdGlvbigpO1xuICAgICAgICAgICAgY2FzZSAncXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICdwbGFpbi1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVBsYWluU2NhbGFyKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnBhcnNlU3RyZWFtKCkge1xuICAgICAgICBsZXQgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ3N0cmVhbScpO1xuICAgICAgICBpZiAobGluZVswXSA9PT0gY3N0LkJPTSkge1xuICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5lWzBdID09PSAnJScpIHtcbiAgICAgICAgICAgIGxldCBkaXJFbmQgPSBsaW5lLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBjcyA9IGxpbmUuaW5kZXhPZignIycpO1xuICAgICAgICAgICAgd2hpbGUgKGNzICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoID0gbGluZVtjcyAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJyAnIHx8IGNoID09PSAnXFx0Jykge1xuICAgICAgICAgICAgICAgICAgICBkaXJFbmQgPSBjcyAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3MgPSBsaW5lLmluZGV4T2YoJyMnLCBjcyArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSBsaW5lW2RpckVuZCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJyAnIHx8IGNoID09PSAnXFx0JylcbiAgICAgICAgICAgICAgICAgICAgZGlyRW5kIC09IDE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG4gPSAoeWllbGQqIHRoaXMucHVzaENvdW50KGRpckVuZCkpICsgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KGxpbmUubGVuZ3RoIC0gbik7IC8vIHBvc3NpYmxlIGNvbW1lbnRcbiAgICAgICAgICAgIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgIHJldHVybiAnc3RyZWFtJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hdExpbmVFbmQoKSkge1xuICAgICAgICAgICAgY29uc3Qgc3AgPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KGxpbmUubGVuZ3RoIC0gc3ApO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgIHJldHVybiAnc3RyZWFtJztcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBjc3QuRE9DVU1FTlQ7XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUxpbmVTdGFydCgpO1xuICAgIH1cbiAgICAqcGFyc2VMaW5lU3RhcnQoKSB7XG4gICAgICAgIGNvbnN0IGNoID0gdGhpcy5jaGFyQXQoMCk7XG4gICAgICAgIGlmICghY2ggJiYgIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdsaW5lLXN0YXJ0Jyk7XG4gICAgICAgIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnLicpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hdEVuZCAmJiAhdGhpcy5oYXNDaGFycyg0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdsaW5lLXN0YXJ0Jyk7XG4gICAgICAgICAgICBjb25zdCBzID0gdGhpcy5wZWVrKDMpO1xuICAgICAgICAgICAgaWYgKChzID09PSAnLS0tJyB8fCBzID09PSAnLi4uJykgJiYgaXNFbXB0eSh0aGlzLmNoYXJBdCgzKSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnRWYWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcyA9PT0gJy0tLScgPyAnZG9jJyA6ICdzdHJlYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZW50TmV4dCA+IHRoaXMuaW5kZW50VmFsdWUgJiYgIWlzRW1wdHkodGhpcy5jaGFyQXQoMSkpKVxuICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZTtcbiAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTdGFydCgpO1xuICAgIH1cbiAgICAqcGFyc2VCbG9ja1N0YXJ0KCkge1xuICAgICAgICBjb25zdCBbY2gwLCBjaDFdID0gdGhpcy5wZWVrKDIpO1xuICAgICAgICBpZiAoIWNoMSAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXN0YXJ0Jyk7XG4gICAgICAgIGlmICgoY2gwID09PSAnLScgfHwgY2gwID09PSAnPycgfHwgY2gwID09PSAnOicpICYmIGlzRW1wdHkoY2gxKSkge1xuICAgICAgICAgICAgY29uc3QgbiA9ICh5aWVsZCogdGhpcy5wdXNoQ291bnQoMSkpICsgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZSArIDE7XG4gICAgICAgICAgICB0aGlzLmluZGVudFZhbHVlICs9IG47XG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1N0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdkb2MnO1xuICAgIH1cbiAgICAqcGFyc2VEb2N1bWVudCgpIHtcbiAgICAgICAgeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2RvYycpO1xuICAgICAgICBsZXQgbiA9IHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCk7XG4gICAgICAgIHN3aXRjaCAobGluZVtuXSkge1xuICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KGxpbmUubGVuZ3RoIC0gbik7XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgY2FzZSAnWyc6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0xldmVsID0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9jJztcbiAgICAgICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hVbnRpbChpc05vdEFuY2hvckNoYXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9jJztcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICd8JzpcbiAgICAgICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucGFyc2VCbG9ja1NjYWxhckhlYWRlcigpO1xuICAgICAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFyKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVBsYWluU2NhbGFyKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnBhcnNlRmxvd0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGxldCBubCwgc3A7XG4gICAgICAgIGxldCBpbmRlbnQgPSAtMTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgbmwgPSB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgaWYgKG5sID4gMCkge1xuICAgICAgICAgICAgICAgIHNwID0geWllbGQqIHRoaXMucHVzaFNwYWNlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnRWYWx1ZSA9IGluZGVudCA9IHNwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3AgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3AgKz0geWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgfSB3aGlsZSAobmwgKyBzcCA+IDApO1xuICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5nZXRMaW5lKCk7XG4gICAgICAgIGlmIChsaW5lID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnZmxvdycpO1xuICAgICAgICBpZiAoKGluZGVudCAhPT0gLTEgJiYgaW5kZW50IDwgdGhpcy5pbmRlbnROZXh0ICYmIGxpbmVbMF0gIT09ICcjJykgfHxcbiAgICAgICAgICAgIChpbmRlbnQgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAobGluZS5zdGFydHNXaXRoKCctLS0nKSB8fCBsaW5lLnN0YXJ0c1dpdGgoJy4uLicpKSAmJlxuICAgICAgICAgICAgICAgIGlzRW1wdHkobGluZVszXSkpKSB7XG4gICAgICAgICAgICAvLyBBbGxvd2luZyBmb3IgdGhlIHRlcm1pbmFsIF0gb3IgfSBhdCB0aGUgc2FtZSAocmF0aGVyIHRoYW4gZ3JlYXRlcilcbiAgICAgICAgICAgIC8vIGluZGVudCBsZXZlbCBhcyB0aGUgaW5pdGlhbCBbIG9yIHsgaXMgdGVjaG5pY2FsbHkgaW52YWxpZCwgYnV0XG4gICAgICAgICAgICAvLyBmYWlsaW5nIGhlcmUgd291bGQgYmUgc3VycHJpc2luZyB0byB1c2Vycy5cbiAgICAgICAgICAgIGNvbnN0IGF0Rmxvd0VuZE1hcmtlciA9IGluZGVudCA9PT0gdGhpcy5pbmRlbnROZXh0IC0gMSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0xldmVsID09PSAxICYmXG4gICAgICAgICAgICAgICAgKGxpbmVbMF0gPT09ICddJyB8fCBsaW5lWzBdID09PSAnfScpO1xuICAgICAgICAgICAgaWYgKCFhdEZsb3dFbmRNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgdGhpcy5mbG93TGV2ZWwgPSAwO1xuICAgICAgICAgICAgICAgIHlpZWxkIGNzdC5GTE9XX0VORDtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgIHdoaWxlIChsaW5lW25dID09PSAnLCcpIHtcbiAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpO1xuICAgICAgICBzd2l0Y2ggKGxpbmVbbl0pIHtcbiAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZmxvdyc7XG4gICAgICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93TGV2ZWwgKz0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCAtPSAxO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dMZXZlbCA/ICdmbG93JyA6ICdkb2MnO1xuICAgICAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFVudGlsKGlzTm90QW5jaG9yQ2hhcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKTtcbiAgICAgICAgICAgIGNhc2UgJzonOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuY2hhckF0KDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZsb3dLZXkgfHwgaXNFbXB0eShuZXh0KSB8fCBuZXh0ID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZVF1b3RlZFNjYWxhcigpIHtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLmNoYXJBdCgwKTtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YocXVvdGUsIHRoaXMucG9zICsgMSk7XG4gICAgICAgIGlmIChxdW90ZSA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIHdoaWxlIChlbmQgIT09IC0xICYmIHRoaXMuYnVmZmVyW2VuZCArIDFdID09PSBcIidcIilcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKFwiJ1wiLCBlbmQgKyAyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRvdWJsZS1xdW90ZVxuICAgICAgICAgICAgd2hpbGUgKGVuZCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuYnVmZmVyW2VuZCAtIDEgLSBuXSA9PT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgICAgICBuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKG4gJSAyID09PSAwKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKCdcIicsIGVuZCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgbG9va2luZyBmb3IgbmV3bGluZXMgd2l0aGluIHRoZSBxdW90ZXNcbiAgICAgICAgY29uc3QgcWIgPSB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgICAgICAgbGV0IG5sID0gcWIuaW5kZXhPZignXFxuJywgdGhpcy5wb3MpO1xuICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICB3aGlsZSAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3MgPSB0aGlzLmNvbnRpbnVlU2NhbGFyKG5sICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGNzID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgbmwgPSBxYi5pbmRleE9mKCdcXG4nLCBjcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvciBjYXVzZWQgYnkgYW4gdW5leHBlY3RlZCB1bmluZGVudFxuICAgICAgICAgICAgICAgIGVuZCA9IG5sIC0gKHFiW25sIC0gMV0gPT09ICdcXHInID8gMiA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgncXVvdGVkLXNjYWxhcicpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5idWZmZXIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGVuZCArIDEsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd0xldmVsID8gJ2Zsb3cnIDogJ2RvYyc7XG4gICAgfVxuICAgICpwYXJzZUJsb2NrU2NhbGFySGVhZGVyKCkge1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFySW5kZW50ID0gLTE7XG4gICAgICAgIHRoaXMuYmxvY2tTY2FsYXJLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBpID0gdGhpcy5wb3M7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcrJylcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIGlmIChjaCA+ICcwJyAmJiBjaCA8PSAnOScpXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IE51bWJlcihjaCkgLSAxO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2ggIT09ICctJylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFVudGlsKGNoID0+IGlzRW1wdHkoY2gpIHx8IGNoID09PSAnIycpO1xuICAgIH1cbiAgICAqcGFyc2VCbG9ja1NjYWxhcigpIHtcbiAgICAgICAgbGV0IG5sID0gdGhpcy5wb3MgLSAxOyAvLyBtYXkgYmUgLTEgaWYgdGhpcy5wb3MgPT09IDBcbiAgICAgICAgbGV0IGluZGVudCA9IDA7XG4gICAgICAgIGxldCBjaDtcbiAgICAgICAgbG9vcDogZm9yIChsZXQgaSA9IHRoaXMucG9zOyAoY2ggPSB0aGlzLmJ1ZmZlcltpXSk7ICsraSkge1xuICAgICAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcXHInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXNjYWxhcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IC8vIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnYmxvY2stc2NhbGFyJyk7XG4gICAgICAgIGlmIChpbmRlbnQgPj0gdGhpcy5pbmRlbnROZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja1NjYWxhckluZGVudCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gaW5kZW50O1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCArICh0aGlzLmluZGVudE5leHQgPT09IDAgPyAxIDogdGhpcy5pbmRlbnROZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjcyA9IHRoaXMuY29udGludWVTY2FsYXIobmwgKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAoY3MgPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuYnVmZmVyLmluZGV4T2YoJ1xcbicsIGNzKTtcbiAgICAgICAgICAgIH0gd2hpbGUgKG5sICE9PSAtMSk7XG4gICAgICAgICAgICBpZiAobmwgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdibG9jay1zY2FsYXInKTtcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUcmFpbGluZyBpbnN1ZmZpY2llbnRseSBpbmRlbnRlZCB0YWJzIGFyZSBpbnZhbGlkLlxuICAgICAgICAvLyBUbyBjYXRjaCB0aGF0IGR1cmluZyBwYXJzaW5nLCB3ZSBpbmNsdWRlIHRoZW0gaW4gdGhlIGJsb2NrIHNjYWxhciB2YWx1ZS5cbiAgICAgICAgbGV0IGkgPSBubCArIDE7XG4gICAgICAgIGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICBpZiAoY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICB3aGlsZSAoY2ggPT09ICdcXHQnIHx8IGNoID09PSAnICcgfHwgY2ggPT09ICdcXHInIHx8IGNoID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBubCA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmJsb2NrU2NhbGFyS2VlcCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGxldCBpID0gbmwgLSAxO1xuICAgICAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xccicpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbLS1pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGk7IC8vIERyb3AgdGhlIGxpbmUgaWYgbGFzdCBjaGFyIG5vdCBtb3JlIGluZGVudGVkXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNoID09PSAnICcpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbLS1pXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXG4nICYmIGkgPj0gdGhpcy5wb3MgJiYgaSArIDEgKyBpbmRlbnQgPiBsYXN0Q2hhcilcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBjc3QuU0NBTEFSO1xuICAgICAgICB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChubCArIDEsIHRydWUpO1xuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICB9XG4gICAgKnBhcnNlUGxhaW5TY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGluRmxvdyA9IHRoaXMuZmxvd0xldmVsID4gMDtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMucG9zIC0gMTtcbiAgICAgICAgbGV0IGkgPSB0aGlzLnBvcyAtIDE7XG4gICAgICAgIGxldCBjaDtcbiAgICAgICAgd2hpbGUgKChjaCA9IHRoaXMuYnVmZmVyWysraV0pKSB7XG4gICAgICAgICAgICBpZiAoY2ggPT09ICc6Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKGlzRW1wdHkobmV4dCkgfHwgKGluRmxvdyAmJiBmbG93SW5kaWNhdG9yQ2hhcnMuaGFzKG5leHQpKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRW1wdHkoY2gpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gdGhpcy5idWZmZXJbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXh0ID09PSAnIycgfHwgKGluRmxvdyAmJiBmbG93SW5kaWNhdG9yQ2hhcnMuaGFzKG5leHQpKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjcyA9IHRoaXMuY29udGludWVTY2FsYXIoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3MgPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGkgPSBNYXRoLm1heChpLCBjcyAtIDIpOyAvLyB0byBhZHZhbmNlLCBidXQgc3RpbGwgYWNjb3VudCBmb3IgJyAjJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpbkZsb3cgJiYgZmxvd0luZGljYXRvckNoYXJzLmhhcyhjaCkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ3BsYWluLXNjYWxhcicpO1xuICAgICAgICB5aWVsZCBjc3QuU0NBTEFSO1xuICAgICAgICB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChlbmQgKyAxLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGluRmxvdyA/ICdmbG93JyA6ICdkb2MnO1xuICAgIH1cbiAgICAqcHVzaENvdW50KG4pIHtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsIG4pO1xuICAgICAgICAgICAgdGhpcy5wb3MgKz0gbjtcbiAgICAgICAgICAgIHJldHVybiBuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAqcHVzaFRvSW5kZXgoaSwgYWxsb3dFbXB0eSkge1xuICAgICAgICBjb25zdCBzID0gdGhpcy5idWZmZXIuc2xpY2UodGhpcy5wb3MsIGkpO1xuICAgICAgICBpZiAocykge1xuICAgICAgICAgICAgeWllbGQgcztcbiAgICAgICAgICAgIHRoaXMucG9zICs9IHMubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIHMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFsbG93RW1wdHkpXG4gICAgICAgICAgICB5aWVsZCAnJztcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgICpwdXNoSW5kaWNhdG9ycygpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmNoYXJBdCgwKSkge1xuICAgICAgICAgICAgY2FzZSAnISc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoeWllbGQqIHRoaXMucHVzaFRhZygpKSArXG4gICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKSArXG4gICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpKSk7XG4gICAgICAgICAgICBjYXNlICcmJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKCh5aWVsZCogdGhpcy5wdXNoVW50aWwoaXNOb3RBbmNob3JDaGFyKSkgK1xuICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKSkgK1xuICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSkpO1xuICAgICAgICAgICAgY2FzZSAnLSc6IC8vIHRoaXMgaXMgYW4gZXJyb3JcbiAgICAgICAgICAgIGNhc2UgJz8nOiAvLyB0aGlzIGlzIGFuIGVycm9yIG91dHNpZGUgZmxvdyBjb2xsZWN0aW9uc1xuICAgICAgICAgICAgY2FzZSAnOic6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbkZsb3cgPSB0aGlzLmZsb3dMZXZlbCA+IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgY2gxID0gdGhpcy5jaGFyQXQoMSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRW1wdHkoY2gxKSB8fCAoaW5GbG93ICYmIGZsb3dJbmRpY2F0b3JDaGFycy5oYXMoY2gxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbkZsb3cpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudE5leHQgPSB0aGlzLmluZGVudFZhbHVlICsgMTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5mbG93S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAqcHVzaFRhZygpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhckF0KDEpID09PSAnPCcpIHtcbiAgICAgICAgICAgIGxldCBpID0gdGhpcy5wb3MgKyAyO1xuICAgICAgICAgICAgbGV0IGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgICAgICB3aGlsZSAoIWlzRW1wdHkoY2gpICYmIGNoICE9PSAnPicpXG4gICAgICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGNoID09PSAnPicgPyBpICsgMSA6IGksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpID0gdGhpcy5wb3MgKyAxO1xuICAgICAgICAgICAgbGV0IGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgICAgICB3aGlsZSAoY2gpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFnQ2hhcnMuaGFzKGNoKSlcbiAgICAgICAgICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSAnJScgJiZcbiAgICAgICAgICAgICAgICAgICAgaGV4RGlnaXRzLmhhcyh0aGlzLmJ1ZmZlcltpICsgMV0pICYmXG4gICAgICAgICAgICAgICAgICAgIGhleERpZ2l0cy5oYXModGhpcy5idWZmZXJbaSArIDJdKSkge1xuICAgICAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWyhpICs9IDMpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnB1c2hOZXdsaW5lKCkge1xuICAgICAgICBjb25zdCBjaCA9IHRoaXMuYnVmZmVyW3RoaXMucG9zXTtcbiAgICAgICAgaWYgKGNoID09PSAnXFxuJylcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgIGVsc2UgaWYgKGNoID09PSAnXFxyJyAmJiB0aGlzLmNoYXJBdCgxKSA9PT0gJ1xcbicpXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaENvdW50KDIpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hTcGFjZXMoYWxsb3dUYWJzKSB7XG4gICAgICAgIGxldCBpID0gdGhpcy5wb3MgLSAxO1xuICAgICAgICBsZXQgY2g7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgfSB3aGlsZSAoY2ggPT09ICcgJyB8fCAoYWxsb3dUYWJzICYmIGNoID09PSAnXFx0JykpO1xuICAgICAgICBjb25zdCBuID0gaSAtIHRoaXMucG9zO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcywgbik7XG4gICAgICAgICAgICB0aGlzLnBvcyA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG47XG4gICAgfVxuICAgICpwdXNoVW50aWwodGVzdCkge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgY2ggPSB0aGlzLmJ1ZmZlcltpXTtcbiAgICAgICAgd2hpbGUgKCF0ZXN0KGNoKSlcbiAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGksIGZhbHNlKTtcbiAgICB9XG59XG5cbmV4cG9ydHMuTGV4ZXIgPSBMZXhlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///320\n")},357:module=>{eval('/*\nLanguage: PHP\nAuthor: Victor Karamzin \nContributors: Evgeny Stepanischev , Ivan Sagalaev \nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const regex = hljs.regex;\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/;\n const IDENT_RE = regex.concat(\n /[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/,\n NOT_PERL_ETC);\n // Will not detect camelCase classes\n const PASCAL_CASE_CLASS_NAME_RE = regex.concat(\n /(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}/,\n NOT_PERL_ETC);\n const UPCASE_NAME_RE = regex.concat(\n /[A-Z]+/,\n NOT_PERL_ETC);\n const VARIABLE = {\n scope: \'variable\',\n match: \'\\\\$+\' + IDENT_RE,\n };\n const PREPROCESSOR = {\n scope: "meta",\n variants: [\n { begin: /<\\?php/, relevance: 10 }, // boost for obvious PHP\n { begin: /<\\?=/ },\n // less relevant per PSR-1 which says not to use short-tags\n { begin: /<\\?/, relevance: 0.1 },\n { begin: /\\?>/ } // end php tag\n ]\n };\n const SUBST = {\n scope: \'subst\',\n variants: [\n { begin: /\\$\\w+/ },\n {\n begin: /\\{\\$/,\n end: /\\}/\n }\n ]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n\n const HEREDOC = {\n begin: /<<<[ \\t]*(?:(\\w+)|"(\\w+)")\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n \'on:begin\': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; },\n \'on:end\': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); },\n };\n\n const NOWDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*\'(\\w+)\'\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n });\n // list of valid whitespaces because non-breaking space might be part of a IDENT_RE\n const WHITESPACE = \'[ \\t\\n]\';\n const STRING = {\n scope: \'string\',\n variants: [\n DOUBLE_QUOTED,\n SINGLE_QUOTED,\n HEREDOC,\n NOWDOC\n ]\n };\n const NUMBER = {\n scope: \'number\',\n variants: [\n { begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b` }, // Binary w/ underscore support\n { begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b` }, // Octals w/ underscore support\n { begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b` }, // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n { begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?` }\n ],\n relevance: 0\n };\n const LITERALS = [\n "false",\n "null",\n "true"\n ];\n const KWS = [\n // Magic constants:\n // \n "__CLASS__",\n "__DIR__",\n "__FILE__",\n "__FUNCTION__",\n "__COMPILER_HALT_OFFSET__",\n "__LINE__",\n "__METHOD__",\n "__NAMESPACE__",\n "__TRAIT__",\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n "die",\n "echo",\n "exit",\n "include",\n "include_once",\n "print",\n "require",\n "require_once",\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // \'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class \' +\n // Other keywords:\n // \n // \n "array",\n "abstract",\n "and",\n "as",\n "binary",\n "bool",\n "boolean",\n "break",\n "callable",\n "case",\n "catch",\n "class",\n "clone",\n "const",\n "continue",\n "declare",\n "default",\n "do",\n "double",\n "else",\n "elseif",\n "empty",\n "enddeclare",\n "endfor",\n "endforeach",\n "endif",\n "endswitch",\n "endwhile",\n "enum",\n "eval",\n "extends",\n "final",\n "finally",\n "float",\n "for",\n "foreach",\n "from",\n "global",\n "goto",\n "if",\n "implements",\n "instanceof",\n "insteadof",\n "int",\n "integer",\n "interface",\n "isset",\n "iterable",\n "list",\n "match|0",\n "mixed",\n "new",\n "never",\n "object",\n "or",\n "private",\n "protected",\n "public",\n "readonly",\n "real",\n "return",\n "string",\n "switch",\n "throw",\n "trait",\n "try",\n "unset",\n "use",\n "var",\n "void",\n "while",\n "xor",\n "yield"\n ];\n\n const BUILT_INS = [\n // Standard PHP library:\n // \n "Error|0",\n "AppendIterator",\n "ArgumentCountError",\n "ArithmeticError",\n "ArrayIterator",\n "ArrayObject",\n "AssertionError",\n "BadFunctionCallException",\n "BadMethodCallException",\n "CachingIterator",\n "CallbackFilterIterator",\n "CompileError",\n "Countable",\n "DirectoryIterator",\n "DivisionByZeroError",\n "DomainException",\n "EmptyIterator",\n "ErrorException",\n "Exception",\n "FilesystemIterator",\n "FilterIterator",\n "GlobIterator",\n "InfiniteIterator",\n "InvalidArgumentException",\n "IteratorIterator",\n "LengthException",\n "LimitIterator",\n "LogicException",\n "MultipleIterator",\n "NoRewindIterator",\n "OutOfBoundsException",\n "OutOfRangeException",\n "OuterIterator",\n "OverflowException",\n "ParentIterator",\n "ParseError",\n "RangeException",\n "RecursiveArrayIterator",\n "RecursiveCachingIterator",\n "RecursiveCallbackFilterIterator",\n "RecursiveDirectoryIterator",\n "RecursiveFilterIterator",\n "RecursiveIterator",\n "RecursiveIteratorIterator",\n "RecursiveRegexIterator",\n "RecursiveTreeIterator",\n "RegexIterator",\n "RuntimeException",\n "SeekableIterator",\n "SplDoublyLinkedList",\n "SplFileInfo",\n "SplFileObject",\n "SplFixedArray",\n "SplHeap",\n "SplMaxHeap",\n "SplMinHeap",\n "SplObjectStorage",\n "SplObserver",\n "SplPriorityQueue",\n "SplQueue",\n "SplStack",\n "SplSubject",\n "SplTempFileObject",\n "TypeError",\n "UnderflowException",\n "UnexpectedValueException",\n "UnhandledMatchError",\n // Reserved interfaces:\n // \n "ArrayAccess",\n "BackedEnum",\n "Closure",\n "Fiber",\n "Generator",\n "Iterator",\n "IteratorAggregate",\n "Serializable",\n "Stringable",\n "Throwable",\n "Traversable",\n "UnitEnum",\n "WeakReference",\n "WeakMap",\n // Reserved classes:\n // \n "Directory",\n "__PHP_Incomplete_Class",\n "parent",\n "php_user_filter",\n "self",\n "static",\n "stdClass"\n ];\n\n /** Dual-case keywords\n *\n * ["then","FILE"] =>\n * ["then", "THEN", "FILE", "file"]\n *\n * @param {string[]} items */\n const dualCase = (items) => {\n /** @type string[] */\n const result = [];\n items.forEach(item => {\n result.push(item);\n if (item.toLowerCase() === item) {\n result.push(item.toUpperCase());\n } else {\n result.push(item.toLowerCase());\n }\n });\n return result;\n };\n\n const KEYWORDS = {\n keyword: KWS,\n literal: dualCase(LITERALS),\n built_in: BUILT_INS,\n };\n\n /**\n * @param {string[]} items */\n const normalizeKeywords = (items) => {\n return items.map(item => {\n return item.replace(/\\|\\d+$/, "");\n });\n };\n\n const CONSTRUCTOR_CALL = { variants: [\n {\n match: [\n /new/,\n regex.concat(WHITESPACE, "+"),\n // to prevent built ins from being confused as the class constructor call\n regex.concat("(?!", normalizeKeywords(BUILT_INS).join("\\\\b|"), "\\\\b)"),\n PASCAL_CASE_CLASS_NAME_RE,\n ],\n scope: {\n 1: "keyword",\n 4: "title.class",\n },\n }\n ] };\n\n const CONSTANT_REFERENCE = regex.concat(IDENT_RE, "\\\\b(?!\\\\()");\n\n const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [\n {\n match: [\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: { 2: "variable.constant", },\n },\n {\n match: [\n /::/,\n /class/,\n ],\n scope: { 2: "variable.language", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: {\n 1: "title.class",\n 3: "variable.constant",\n },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n "::",\n regex.lookahead(/(?!class\\b)/)\n ),\n ],\n scope: { 1: "title.class", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n /::/,\n /class/,\n ],\n scope: {\n 1: "title.class",\n 3: "variable.language",\n },\n }\n ] };\n\n const NAMED_ARGUMENT = {\n scope: \'attr\',\n match: regex.concat(IDENT_RE, regex.lookahead(\':\'), regex.lookahead(/(?!::)/)),\n };\n const PARAMS_MODE = {\n relevance: 0,\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n NAMED_ARGUMENT,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ],\n };\n const FUNCTION_INVOKE = {\n relevance: 0,\n match: [\n /\\b/,\n // to prevent keywords from being confused as the function title\n regex.concat("(?!fn\\\\b|function\\\\b|", normalizeKeywords(KWS).join("\\\\b|"), "|", normalizeKeywords(BUILT_INS).join("\\\\b|"), "\\\\b)"),\n IDENT_RE,\n regex.concat(WHITESPACE, "*"),\n regex.lookahead(/(?=\\()/)\n ],\n scope: { 3: "title.function.invoke", },\n contains: [ PARAMS_MODE ]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\n\n const ATTRIBUTE_CONTAINS = [\n NAMED_ARGUMENT,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ];\n\n const ATTRIBUTES = {\n begin: regex.concat(/#\\[\\s*\\\\?/,\n regex.either(\n PASCAL_CASE_CLASS_NAME_RE,\n UPCASE_NAME_RE\n )\n ),\n beginScope: "meta",\n end: /]/,\n endScope: "meta",\n keywords: {\n literal: LITERALS,\n keyword: [\n \'new\',\n \'array\',\n ]\n },\n contains: [\n {\n begin: /\\[/,\n end: /]/,\n keywords: {\n literal: LITERALS,\n keyword: [\n \'new\',\n \'array\',\n ]\n },\n contains: [\n \'self\',\n ...ATTRIBUTE_CONTAINS,\n ]\n },\n ...ATTRIBUTE_CONTAINS,\n {\n scope: \'meta\',\n variants: [\n { match: PASCAL_CASE_CLASS_NAME_RE },\n { match: UPCASE_NAME_RE }\n ]\n }\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n ATTRIBUTES,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\'//\', \'$\'),\n hljs.COMMENT(\n \'/\\\\*\',\n \'\\\\*/\',\n { contains: [\n {\n scope: \'doctag\',\n match: \'@[A-Za-z]+\'\n }\n ] }\n ),\n {\n match: /__halt_compiler\\(\\);/,\n keywords: \'__halt_compiler\',\n starts: {\n scope: "comment",\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n match: /\\?>/,\n scope: "meta",\n endsParent: true\n }\n ]\n }\n },\n PREPROCESSOR,\n {\n scope: \'variable.language\',\n match: /\\$this\\b/\n },\n VARIABLE,\n FUNCTION_INVOKE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n {\n match: [\n /const/,\n /\\s/,\n IDENT_RE,\n ],\n scope: {\n 1: "keyword",\n 3: "variable.constant",\n },\n },\n CONSTRUCTOR_CALL,\n {\n scope: \'function\',\n relevance: 0,\n beginKeywords: \'fn function\',\n end: /[;{]/,\n excludeEnd: true,\n illegal: \'[$%\\\\[]\',\n contains: [\n { beginKeywords: \'use\', },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: \'=>\', // No markup, just a relevance booster\n endsParent: true\n },\n {\n scope: \'params\',\n begin: \'\\\\(\',\n end: \'\\\\)\',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n \'self\',\n ATTRIBUTES,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n },\n ]\n },\n {\n scope: \'class\',\n variants: [\n {\n beginKeywords: "enum",\n illegal: /[($"]/\n },\n {\n beginKeywords: "class interface trait",\n illegal: /[:($"]/\n }\n ],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: \'extends implements\' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n // both use and namespace still use "old style" rules (vs multi-match)\n // because the namespace name can include `\\` and we still want each\n // element to be treated as its own *individual* title\n {\n beginKeywords: \'namespace\',\n relevance: 0,\n end: \';\',\n illegal: /[.\']/,\n contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: "title.class" }) ]\n },\n {\n beginKeywords: \'use\',\n relevance: 0,\n end: \';\',\n contains: [\n // TODO: title.function vs title.class\n {\n match: /\\b(as|const|function)\\b/,\n scope: "keyword"\n },\n // TODO: could be title.class or title.function\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n STRING,\n NUMBER,\n ]\n };\n}\n\nmodule.exports = php;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzU3LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLEdBQUc7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0NBQWdDO0FBQ3hDLFFBQVEsZUFBZTtBQUN2QjtBQUNBLFFBQVEsOEJBQThCO0FBQ3RDLFFBQVEsZUFBZTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxnQkFBZ0I7QUFDeEI7QUFDQSxrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxnQkFBZ0I7QUFDOUU7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1Q0FBdUM7QUFDdEUsNkJBQTZCLHlEQUF5RDtBQUN0Rjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0NBQXNDO0FBQzlDLFFBQVEsd0NBQXdDO0FBQ2hELFFBQVEsb0RBQW9EO0FBQzVEO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtQkFBbUI7QUFDbEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDZCQUE2QjtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0NBQWtDO0FBQzlDLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLFlBQVkscUNBQXFDO0FBQ2pEO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsK0RBQStELHNCQUFzQjtBQUNyRixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BocC5qcz81ZGI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUEhQXG5BdXRob3I6IFZpY3RvciBLYXJhbXppbiA8VmljdG9yLkthcmFtemluQGVudGVycmEtaW5jLmNvbT5cbkNvbnRyaWJ1dG9yczogRXZnZW55IFN0ZXBhbmlzY2hldiA8aW1ib2xrQGdtYWlsLmNvbT4sIEl2YW4gU2FnYWxhZXYgPG1hbmlhY0Bzb2Z0d2FyZW1hbmlhY3Mub3JnPlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cucGhwLm5ldFxuQ2F0ZWdvcnk6IGNvbW1vblxuKi9cblxuLyoqXG4gKiBAcGFyYW0ge0hMSlNBcGl9IGhsanNcbiAqIEByZXR1cm5zIHtMYW5ndWFnZURldGFpbH1cbiAqICovXG5mdW5jdGlvbiBwaHAoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIC8vIG5lZ2F0aXZlIGxvb2stYWhlYWQgdHJpZXMgdG8gYXZvaWQgbWF0Y2hpbmcgcGF0dGVybnMgdGhhdCBhcmUgbm90XG4gIC8vIFBlcmwgYXQgYWxsIGxpa2UgJGlkZW50JCwgQGlkZW50QCwgZXRjLlxuICBjb25zdCBOT1RfUEVSTF9FVEMgPSAvKD8hW0EtWmEtejAtOV0pKD8hWyRdKS87XG4gIGNvbnN0IElERU5UX1JFID0gcmVnZXguY29uY2F0KFxuICAgIC9bYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVowLTlfXFx4N2YtXFx4ZmZdKi8sXG4gICAgTk9UX1BFUkxfRVRDKTtcbiAgLy8gV2lsbCBub3QgZGV0ZWN0IGNhbWVsQ2FzZSBjbGFzc2VzXG4gIGNvbnN0IFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUgPSByZWdleC5jb25jYXQoXG4gICAgLyhcXFxcP1tBLVpdW2EtejAtOV9cXHg3Zi1cXHhmZl0rfFxcXFw/W0EtWl0rKD89W0EtWl1bYS16MC05X1xceDdmLVxceGZmXSkpezEsfS8sXG4gICAgTk9UX1BFUkxfRVRDKTtcbiAgY29uc3QgVVBDQVNFX05BTUVfUkUgPSByZWdleC5jb25jYXQoXG4gICAgL1tBLVpdKy8sXG4gICAgTk9UX1BFUkxfRVRDKTtcbiAgY29uc3QgVkFSSUFCTEUgPSB7XG4gICAgc2NvcGU6ICd2YXJpYWJsZScsXG4gICAgbWF0Y2g6ICdcXFxcJCsnICsgSURFTlRfUkUsXG4gIH07XG4gIGNvbnN0IFBSRVBST0NFU1NPUiA9IHtcbiAgICBzY29wZTogXCJtZXRhXCIsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IC88XFw/cGhwLywgcmVsZXZhbmNlOiAxMCB9LCAvLyBib29zdCBmb3Igb2J2aW91cyBQSFBcbiAgICAgIHsgYmVnaW46IC88XFw/PS8gfSxcbiAgICAgIC8vIGxlc3MgcmVsZXZhbnQgcGVyIFBTUi0xIHdoaWNoIHNheXMgbm90IHRvIHVzZSBzaG9ydC10YWdzXG4gICAgICB7IGJlZ2luOiAvPFxcPy8sIHJlbGV2YW5jZTogMC4xIH0sXG4gICAgICB7IGJlZ2luOiAvXFw/Pi8gfSAvLyBlbmQgcGhwIHRhZ1xuICAgIF1cbiAgfTtcbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgc2NvcGU6ICdzdWJzdCcsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IC9cXCRcXHcrLyB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xce1xcJC8sXG4gICAgICAgIGVuZDogL1xcfS9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IFNJTkdMRV9RVU9URUQgPSBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7IGlsbGVnYWw6IG51bGwsIH0pO1xuICBjb25zdCBET1VCTEVfUVVPVEVEID0gaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtcbiAgICBpbGxlZ2FsOiBudWxsLFxuICAgIGNvbnRhaW5zOiBobGpzLlFVT1RFX1NUUklOR19NT0RFLmNvbnRhaW5zLmNvbmNhdChTVUJTVCksXG4gIH0pO1xuXG4gIGNvbnN0IEhFUkVET0MgPSB7XG4gICAgYmVnaW46IC88PDxbIFxcdF0qKD86KFxcdyspfFwiKFxcdyspXCIpXFxuLyxcbiAgICBlbmQ6IC9bIFxcdF0qKFxcdyspXFxiLyxcbiAgICBjb250YWluczogaGxqcy5RVU9URV9TVFJJTkdfTU9ERS5jb250YWlucy5jb25jYXQoU1VCU1QpLFxuICAgICdvbjpiZWdpbic6IChtLCByZXNwKSA9PiB7IHJlc3AuZGF0YS5fYmVnaW5NYXRjaCA9IG1bMV0gfHwgbVsyXTsgfSxcbiAgICAnb246ZW5kJzogKG0sIHJlc3ApID0+IHsgaWYgKHJlc3AuZGF0YS5fYmVnaW5NYXRjaCAhPT0gbVsxXSkgcmVzcC5pZ25vcmVNYXRjaCgpOyB9LFxuICB9O1xuXG4gIGNvbnN0IE5PV0RPQyA9IGhsanMuRU5EX1NBTUVfQVNfQkVHSU4oe1xuICAgIGJlZ2luOiAvPDw8WyBcXHRdKicoXFx3KyknXFxuLyxcbiAgICBlbmQ6IC9bIFxcdF0qKFxcdyspXFxiLyxcbiAgfSk7XG4gIC8vIGxpc3Qgb2YgdmFsaWQgd2hpdGVzcGFjZXMgYmVjYXVzZSBub24tYnJlYWtpbmcgc3BhY2UgbWlnaHQgYmUgcGFydCBvZiBhIElERU5UX1JFXG4gIGNvbnN0IFdISVRFU1BBQ0UgPSAnWyBcXHRcXG5dJztcbiAgY29uc3QgU1RSSU5HID0ge1xuICAgIHNjb3BlOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgRE9VQkxFX1FVT1RFRCxcbiAgICAgIFNJTkdMRV9RVU9URUQsXG4gICAgICBIRVJFRE9DLFxuICAgICAgTk9XRE9DXG4gICAgXVxuICB9O1xuICBjb25zdCBOVU1CRVIgPSB7XG4gICAgc2NvcGU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiBgXFxcXGIwW2JCXVswMV0rKD86X1swMV0rKSpcXFxcYmAgfSwgLy8gQmluYXJ5IHcvIHVuZGVyc2NvcmUgc3VwcG9ydFxuICAgICAgeyBiZWdpbjogYFxcXFxiMFtvT11bMC03XSsoPzpfWzAtN10rKSpcXFxcYmAgfSwgLy8gT2N0YWxzIHcvIHVuZGVyc2NvcmUgc3VwcG9ydFxuICAgICAgeyBiZWdpbjogYFxcXFxiMFt4WF1bXFxcXGRhLWZBLUZdKyg/Ol9bXFxcXGRhLWZBLUZdKykqXFxcXGJgIH0sIC8vIEhleCB3LyB1bmRlcnNjb3JlIHN1cHBvcnRcbiAgICAgIC8vIERlY2ltYWxzIHcvIHVuZGVyc2NvcmUgc3VwcG9ydCwgd2l0aCBvcHRpb25hbCBmcmFnbWVudHMgYW5kIHNjaWVudGlmaWMgZXhwb25lbnQgKGUpIHN1ZmZpeC5cbiAgICAgIHsgYmVnaW46IGAoPzpcXFxcYlxcXFxkKyg/Ol9cXFxcZCspKihcXFxcLig/OlxcXFxkKyg/Ol9cXFxcZCspKikpP3xcXFxcQlxcXFwuXFxcXGQrKSg/OltlRV1bKy1dP1xcXFxkKyk/YCB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgTElURVJBTFMgPSBbXG4gICAgXCJmYWxzZVwiLFxuICAgIFwibnVsbFwiLFxuICAgIFwidHJ1ZVwiXG4gIF07XG4gIGNvbnN0IEtXUyA9IFtcbiAgICAvLyBNYWdpYyBjb25zdGFudHM6XG4gICAgLy8gPGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLmNvbnN0YW50cy5wcmVkZWZpbmVkLnBocD5cbiAgICBcIl9fQ0xBU1NfX1wiLFxuICAgIFwiX19ESVJfX1wiLFxuICAgIFwiX19GSUxFX19cIixcbiAgICBcIl9fRlVOQ1RJT05fX1wiLFxuICAgIFwiX19DT01QSUxFUl9IQUxUX09GRlNFVF9fXCIsXG4gICAgXCJfX0xJTkVfX1wiLFxuICAgIFwiX19NRVRIT0RfX1wiLFxuICAgIFwiX19OQU1FU1BBQ0VfX1wiLFxuICAgIFwiX19UUkFJVF9fXCIsXG4gICAgLy8gRnVuY3Rpb24gdGhhdCBsb29rIGxpa2UgbGFuZ3VhZ2UgY29uc3RydWN0IG9yIGxhbmd1YWdlIGNvbnN0cnVjdCB0aGF0IGxvb2sgbGlrZSBmdW5jdGlvbjpcbiAgICAvLyBMaXN0IG9mIGtleXdvcmRzIHRoYXQgbWF5IG5vdCByZXF1aXJlIHBhcmVudGhlc2lzXG4gICAgXCJkaWVcIixcbiAgICBcImVjaG9cIixcbiAgICBcImV4aXRcIixcbiAgICBcImluY2x1ZGVcIixcbiAgICBcImluY2x1ZGVfb25jZVwiLFxuICAgIFwicHJpbnRcIixcbiAgICBcInJlcXVpcmVcIixcbiAgICBcInJlcXVpcmVfb25jZVwiLFxuICAgIC8vIFRoZXNlIGFyZSBub3QgbGFuZ3VhZ2UgY29uc3RydWN0IChmdW5jdGlvbikgYnV0IG9wZXJhdGUgb24gdGhlIGN1cnJlbnRseS1leGVjdXRpbmcgZnVuY3Rpb24gYW5kIGNhbiBhY2Nlc3MgdGhlIGN1cnJlbnQgc3ltYm9sIHRhYmxlXG4gICAgLy8gJ2NvbXBhY3QgZXh0cmFjdCBmdW5jX2dldF9hcmcgZnVuY19nZXRfYXJncyBmdW5jX251bV9hcmdzIGdldF9jYWxsZWRfY2xhc3MgZ2V0X3BhcmVudF9jbGFzcyAnICtcbiAgICAvLyBPdGhlciBrZXl3b3JkczpcbiAgICAvLyA8aHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQucGhwPlxuICAgIC8vIDxodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS50eXBlcy50eXBlLWp1Z2dsaW5nLnBocD5cbiAgICBcImFycmF5XCIsXG4gICAgXCJhYnN0cmFjdFwiLFxuICAgIFwiYW5kXCIsXG4gICAgXCJhc1wiLFxuICAgIFwiYmluYXJ5XCIsXG4gICAgXCJib29sXCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJicmVha1wiLFxuICAgIFwiY2FsbGFibGVcIixcbiAgICBcImNhc2VcIixcbiAgICBcImNhdGNoXCIsXG4gICAgXCJjbGFzc1wiLFxuICAgIFwiY2xvbmVcIixcbiAgICBcImNvbnN0XCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZGVjbGFyZVwiLFxuICAgIFwiZGVmYXVsdFwiLFxuICAgIFwiZG9cIixcbiAgICBcImRvdWJsZVwiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwiZWxzZWlmXCIsXG4gICAgXCJlbXB0eVwiLFxuICAgIFwiZW5kZGVjbGFyZVwiLFxuICAgIFwiZW5kZm9yXCIsXG4gICAgXCJlbmRmb3JlYWNoXCIsXG4gICAgXCJlbmRpZlwiLFxuICAgIFwiZW5kc3dpdGNoXCIsXG4gICAgXCJlbmR3aGlsZVwiLFxuICAgIFwiZW51bVwiLFxuICAgIFwiZXZhbFwiLFxuICAgIFwiZXh0ZW5kc1wiLFxuICAgIFwiZmluYWxcIixcbiAgICBcImZpbmFsbHlcIixcbiAgICBcImZsb2F0XCIsXG4gICAgXCJmb3JcIixcbiAgICBcImZvcmVhY2hcIixcbiAgICBcImZyb21cIixcbiAgICBcImdsb2JhbFwiLFxuICAgIFwiZ290b1wiLFxuICAgIFwiaWZcIixcbiAgICBcImltcGxlbWVudHNcIixcbiAgICBcImluc3RhbmNlb2ZcIixcbiAgICBcImluc3RlYWRvZlwiLFxuICAgIFwiaW50XCIsXG4gICAgXCJpbnRlZ2VyXCIsXG4gICAgXCJpbnRlcmZhY2VcIixcbiAgICBcImlzc2V0XCIsXG4gICAgXCJpdGVyYWJsZVwiLFxuICAgIFwibGlzdFwiLFxuICAgIFwibWF0Y2h8MFwiLFxuICAgIFwibWl4ZWRcIixcbiAgICBcIm5ld1wiLFxuICAgIFwibmV2ZXJcIixcbiAgICBcIm9iamVjdFwiLFxuICAgIFwib3JcIixcbiAgICBcInByaXZhdGVcIixcbiAgICBcInByb3RlY3RlZFwiLFxuICAgIFwicHVibGljXCIsXG4gICAgXCJyZWFkb25seVwiLFxuICAgIFwicmVhbFwiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJzdHJpbmdcIixcbiAgICBcInN3aXRjaFwiLFxuICAgIFwidGhyb3dcIixcbiAgICBcInRyYWl0XCIsXG4gICAgXCJ0cnlcIixcbiAgICBcInVuc2V0XCIsXG4gICAgXCJ1c2VcIixcbiAgICBcInZhclwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwid2hpbGVcIixcbiAgICBcInhvclwiLFxuICAgIFwieWllbGRcIlxuICBdO1xuXG4gIGNvbnN0IEJVSUxUX0lOUyA9IFtcbiAgICAvLyBTdGFuZGFyZCBQSFAgbGlicmFyeTpcbiAgICAvLyA8aHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vYm9vay5zcGwucGhwPlxuICAgIFwiRXJyb3J8MFwiLFxuICAgIFwiQXBwZW5kSXRlcmF0b3JcIixcbiAgICBcIkFyZ3VtZW50Q291bnRFcnJvclwiLFxuICAgIFwiQXJpdGhtZXRpY0Vycm9yXCIsXG4gICAgXCJBcnJheUl0ZXJhdG9yXCIsXG4gICAgXCJBcnJheU9iamVjdFwiLFxuICAgIFwiQXNzZXJ0aW9uRXJyb3JcIixcbiAgICBcIkJhZEZ1bmN0aW9uQ2FsbEV4Y2VwdGlvblwiLFxuICAgIFwiQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvblwiLFxuICAgIFwiQ2FjaGluZ0l0ZXJhdG9yXCIsXG4gICAgXCJDYWxsYmFja0ZpbHRlckl0ZXJhdG9yXCIsXG4gICAgXCJDb21waWxlRXJyb3JcIixcbiAgICBcIkNvdW50YWJsZVwiLFxuICAgIFwiRGlyZWN0b3J5SXRlcmF0b3JcIixcbiAgICBcIkRpdmlzaW9uQnlaZXJvRXJyb3JcIixcbiAgICBcIkRvbWFpbkV4Y2VwdGlvblwiLFxuICAgIFwiRW1wdHlJdGVyYXRvclwiLFxuICAgIFwiRXJyb3JFeGNlcHRpb25cIixcbiAgICBcIkV4Y2VwdGlvblwiLFxuICAgIFwiRmlsZXN5c3RlbUl0ZXJhdG9yXCIsXG4gICAgXCJGaWx0ZXJJdGVyYXRvclwiLFxuICAgIFwiR2xvYkl0ZXJhdG9yXCIsXG4gICAgXCJJbmZpbml0ZUl0ZXJhdG9yXCIsXG4gICAgXCJJbnZhbGlkQXJndW1lbnRFeGNlcHRpb25cIixcbiAgICBcIkl0ZXJhdG9ySXRlcmF0b3JcIixcbiAgICBcIkxlbmd0aEV4Y2VwdGlvblwiLFxuICAgIFwiTGltaXRJdGVyYXRvclwiLFxuICAgIFwiTG9naWNFeGNlcHRpb25cIixcbiAgICBcIk11bHRpcGxlSXRlcmF0b3JcIixcbiAgICBcIk5vUmV3aW5kSXRlcmF0b3JcIixcbiAgICBcIk91dE9mQm91bmRzRXhjZXB0aW9uXCIsXG4gICAgXCJPdXRPZlJhbmdlRXhjZXB0aW9uXCIsXG4gICAgXCJPdXRlckl0ZXJhdG9yXCIsXG4gICAgXCJPdmVyZmxvd0V4Y2VwdGlvblwiLFxuICAgIFwiUGFyZW50SXRlcmF0b3JcIixcbiAgICBcIlBhcnNlRXJyb3JcIixcbiAgICBcIlJhbmdlRXhjZXB0aW9uXCIsXG4gICAgXCJSZWN1cnNpdmVBcnJheUl0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVDYWNoaW5nSXRlcmF0b3JcIixcbiAgICBcIlJlY3Vyc2l2ZUNhbGxiYWNrRmlsdGVySXRlcmF0b3JcIixcbiAgICBcIlJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVGaWx0ZXJJdGVyYXRvclwiLFxuICAgIFwiUmVjdXJzaXZlSXRlcmF0b3JcIixcbiAgICBcIlJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3JcIixcbiAgICBcIlJlY3Vyc2l2ZVJlZ2V4SXRlcmF0b3JcIixcbiAgICBcIlJlY3Vyc2l2ZVRyZWVJdGVyYXRvclwiLFxuICAgIFwiUmVnZXhJdGVyYXRvclwiLFxuICAgIFwiUnVudGltZUV4Y2VwdGlvblwiLFxuICAgIFwiU2Vla2FibGVJdGVyYXRvclwiLFxuICAgIFwiU3BsRG91Ymx5TGlua2VkTGlzdFwiLFxuICAgIFwiU3BsRmlsZUluZm9cIixcbiAgICBcIlNwbEZpbGVPYmplY3RcIixcbiAgICBcIlNwbEZpeGVkQXJyYXlcIixcbiAgICBcIlNwbEhlYXBcIixcbiAgICBcIlNwbE1heEhlYXBcIixcbiAgICBcIlNwbE1pbkhlYXBcIixcbiAgICBcIlNwbE9iamVjdFN0b3JhZ2VcIixcbiAgICBcIlNwbE9ic2VydmVyXCIsXG4gICAgXCJTcGxQcmlvcml0eVF1ZXVlXCIsXG4gICAgXCJTcGxRdWV1ZVwiLFxuICAgIFwiU3BsU3RhY2tcIixcbiAgICBcIlNwbFN1YmplY3RcIixcbiAgICBcIlNwbFRlbXBGaWxlT2JqZWN0XCIsXG4gICAgXCJUeXBlRXJyb3JcIixcbiAgICBcIlVuZGVyZmxvd0V4Y2VwdGlvblwiLFxuICAgIFwiVW5leHBlY3RlZFZhbHVlRXhjZXB0aW9uXCIsXG4gICAgXCJVbmhhbmRsZWRNYXRjaEVycm9yXCIsXG4gICAgLy8gUmVzZXJ2ZWQgaW50ZXJmYWNlczpcbiAgICAvLyA8aHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQuaW50ZXJmYWNlcy5waHA+XG4gICAgXCJBcnJheUFjY2Vzc1wiLFxuICAgIFwiQmFja2VkRW51bVwiLFxuICAgIFwiQ2xvc3VyZVwiLFxuICAgIFwiRmliZXJcIixcbiAgICBcIkdlbmVyYXRvclwiLFxuICAgIFwiSXRlcmF0b3JcIixcbiAgICBcIkl0ZXJhdG9yQWdncmVnYXRlXCIsXG4gICAgXCJTZXJpYWxpemFibGVcIixcbiAgICBcIlN0cmluZ2FibGVcIixcbiAgICBcIlRocm93YWJsZVwiLFxuICAgIFwiVHJhdmVyc2FibGVcIixcbiAgICBcIlVuaXRFbnVtXCIsXG4gICAgXCJXZWFrUmVmZXJlbmNlXCIsXG4gICAgXCJXZWFrTWFwXCIsXG4gICAgLy8gUmVzZXJ2ZWQgY2xhc3NlczpcbiAgICAvLyA8aHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQuY2xhc3Nlcy5waHA+XG4gICAgXCJEaXJlY3RvcnlcIixcbiAgICBcIl9fUEhQX0luY29tcGxldGVfQ2xhc3NcIixcbiAgICBcInBhcmVudFwiLFxuICAgIFwicGhwX3VzZXJfZmlsdGVyXCIsXG4gICAgXCJzZWxmXCIsXG4gICAgXCJzdGF0aWNcIixcbiAgICBcInN0ZENsYXNzXCJcbiAgXTtcblxuICAvKiogRHVhbC1jYXNlIGtleXdvcmRzXG4gICAqXG4gICAqIFtcInRoZW5cIixcIkZJTEVcIl0gPT5cbiAgICogICAgIFtcInRoZW5cIiwgXCJUSEVOXCIsIFwiRklMRVwiLCBcImZpbGVcIl1cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gaXRlbXMgKi9cbiAgY29uc3QgZHVhbENhc2UgPSAoaXRlbXMpID0+IHtcbiAgICAvKiogQHR5cGUgc3RyaW5nW10gKi9cbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICBpZiAoaXRlbS50b0xvd2VyQ2FzZSgpID09PSBpdGVtKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0udG9VcHBlckNhc2UoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogS1dTLFxuICAgIGxpdGVyYWw6IGR1YWxDYXNlKExJVEVSQUxTKSxcbiAgICBidWlsdF9pbjogQlVJTFRfSU5TLFxuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBpdGVtcyAqL1xuICBjb25zdCBub3JtYWxpemVLZXl3b3JkcyA9IChpdGVtcykgPT4ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4gaXRlbS5yZXBsYWNlKC9cXHxcXGQrJC8sIFwiXCIpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IENPTlNUUlVDVE9SX0NBTEwgPSB7IHZhcmlhbnRzOiBbXG4gICAge1xuICAgICAgbWF0Y2g6IFtcbiAgICAgICAgL25ldy8sXG4gICAgICAgIHJlZ2V4LmNvbmNhdChXSElURVNQQUNFLCBcIitcIiksXG4gICAgICAgIC8vIHRvIHByZXZlbnQgYnVpbHQgaW5zIGZyb20gYmVpbmcgY29uZnVzZWQgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGNhbGxcbiAgICAgICAgcmVnZXguY29uY2F0KFwiKD8hXCIsIG5vcm1hbGl6ZUtleXdvcmRzKEJVSUxUX0lOUykuam9pbihcIlxcXFxifFwiKSwgXCJcXFxcYilcIiksXG4gICAgICAgIFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUsXG4gICAgICBdLFxuICAgICAgc2NvcGU6IHtcbiAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgIDQ6IFwidGl0bGUuY2xhc3NcIixcbiAgICAgIH0sXG4gICAgfVxuICBdIH07XG5cbiAgY29uc3QgQ09OU1RBTlRfUkVGRVJFTkNFID0gcmVnZXguY29uY2F0KElERU5UX1JFLCBcIlxcXFxiKD8hXFxcXCgpXCIpO1xuXG4gIGNvbnN0IExFRlRfQU5EX1JJR0hUX1NJREVfT0ZfRE9VQkxFX0NPTE9OID0geyB2YXJpYW50czogW1xuICAgIHtcbiAgICAgIG1hdGNoOiBbXG4gICAgICAgIHJlZ2V4LmNvbmNhdChcbiAgICAgICAgICAvOjovLFxuICAgICAgICAgIHJlZ2V4Lmxvb2thaGVhZCgvKD8hY2xhc3NcXGIpLylcbiAgICAgICAgKSxcbiAgICAgICAgQ09OU1RBTlRfUkVGRVJFTkNFLFxuICAgICAgXSxcbiAgICAgIHNjb3BlOiB7IDI6IFwidmFyaWFibGUuY29uc3RhbnRcIiwgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG1hdGNoOiBbXG4gICAgICAgIC86Oi8sXG4gICAgICAgIC9jbGFzcy8sXG4gICAgICBdLFxuICAgICAgc2NvcGU6IHsgMjogXCJ2YXJpYWJsZS5sYW5ndWFnZVwiLCB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbWF0Y2g6IFtcbiAgICAgICAgUEFTQ0FMX0NBU0VfQ0xBU1NfTkFNRV9SRSxcbiAgICAgICAgcmVnZXguY29uY2F0KFxuICAgICAgICAgIC86Oi8sXG4gICAgICAgICAgcmVnZXgubG9va2FoZWFkKC8oPyFjbGFzc1xcYikvKVxuICAgICAgICApLFxuICAgICAgICBDT05TVEFOVF9SRUZFUkVOQ0UsXG4gICAgICBdLFxuICAgICAgc2NvcGU6IHtcbiAgICAgICAgMTogXCJ0aXRsZS5jbGFzc1wiLFxuICAgICAgICAzOiBcInZhcmlhYmxlLmNvbnN0YW50XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbWF0Y2g6IFtcbiAgICAgICAgUEFTQ0FMX0NBU0VfQ0xBU1NfTkFNRV9SRSxcbiAgICAgICAgcmVnZXguY29uY2F0KFxuICAgICAgICAgIFwiOjpcIixcbiAgICAgICAgICByZWdleC5sb29rYWhlYWQoLyg/IWNsYXNzXFxiKS8pXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICAgc2NvcGU6IHsgMTogXCJ0aXRsZS5jbGFzc1wiLCB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbWF0Y2g6IFtcbiAgICAgICAgUEFTQ0FMX0NBU0VfQ0xBU1NfTkFNRV9SRSxcbiAgICAgICAgLzo6LyxcbiAgICAgICAgL2NsYXNzLyxcbiAgICAgIF0sXG4gICAgICBzY29wZToge1xuICAgICAgICAxOiBcInRpdGxlLmNsYXNzXCIsXG4gICAgICAgIDM6IFwidmFyaWFibGUubGFuZ3VhZ2VcIixcbiAgICAgIH0sXG4gICAgfVxuICBdIH07XG5cbiAgY29uc3QgTkFNRURfQVJHVU1FTlQgPSB7XG4gICAgc2NvcGU6ICdhdHRyJyxcbiAgICBtYXRjaDogcmVnZXguY29uY2F0KElERU5UX1JFLCByZWdleC5sb29rYWhlYWQoJzonKSwgcmVnZXgubG9va2FoZWFkKC8oPyE6OikvKSksXG4gIH07XG4gIGNvbnN0IFBBUkFNU19NT0RFID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBiZWdpbjogL1xcKC8sXG4gICAgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE5BTUVEX0FSR1VNRU5ULFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBMRUZUX0FORF9SSUdIVF9TSURFX09GX0RPVUJMRV9DT0xPTixcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVIsXG4gICAgICBDT05TVFJVQ1RPUl9DQUxMLFxuICAgIF0sXG4gIH07XG4gIGNvbnN0IEZVTkNUSU9OX0lOVk9LRSA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgbWF0Y2g6IFtcbiAgICAgIC9cXGIvLFxuICAgICAgLy8gdG8gcHJldmVudCBrZXl3b3JkcyBmcm9tIGJlaW5nIGNvbmZ1c2VkIGFzIHRoZSBmdW5jdGlvbiB0aXRsZVxuICAgICAgcmVnZXguY29uY2F0KFwiKD8hZm5cXFxcYnxmdW5jdGlvblxcXFxifFwiLCBub3JtYWxpemVLZXl3b3JkcyhLV1MpLmpvaW4oXCJcXFxcYnxcIiksIFwifFwiLCBub3JtYWxpemVLZXl3b3JkcyhCVUlMVF9JTlMpLmpvaW4oXCJcXFxcYnxcIiksIFwiXFxcXGIpXCIpLFxuICAgICAgSURFTlRfUkUsXG4gICAgICByZWdleC5jb25jYXQoV0hJVEVTUEFDRSwgXCIqXCIpLFxuICAgICAgcmVnZXgubG9va2FoZWFkKC8oPz1cXCgpLylcbiAgICBdLFxuICAgIHNjb3BlOiB7IDM6IFwidGl0bGUuZnVuY3Rpb24uaW52b2tlXCIsIH0sXG4gICAgY29udGFpbnM6IFsgUEFSQU1TX01PREUgXVxuICB9O1xuICBQQVJBTVNfTU9ERS5jb250YWlucy5wdXNoKEZVTkNUSU9OX0lOVk9LRSk7XG5cbiAgY29uc3QgQVRUUklCVVRFX0NPTlRBSU5TID0gW1xuICAgIE5BTUVEX0FSR1VNRU5ULFxuICAgIExFRlRfQU5EX1JJR0hUX1NJREVfT0ZfRE9VQkxFX0NPTE9OLFxuICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgU1RSSU5HLFxuICAgIE5VTUJFUixcbiAgICBDT05TVFJVQ1RPUl9DQUxMLFxuICBdO1xuXG4gIGNvbnN0IEFUVFJJQlVURVMgPSB7XG4gICAgYmVnaW46IHJlZ2V4LmNvbmNhdCgvI1xcW1xccypcXFxcPy8sXG4gICAgICByZWdleC5laXRoZXIoXG4gICAgICAgIFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUsXG4gICAgICAgIFVQQ0FTRV9OQU1FX1JFXG4gICAgICApXG4gICAgKSxcbiAgICBiZWdpblNjb3BlOiBcIm1ldGFcIixcbiAgICBlbmQ6IC9dLyxcbiAgICBlbmRTY29wZTogXCJtZXRhXCIsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgICAga2V5d29yZDogW1xuICAgICAgICAnbmV3JyxcbiAgICAgICAgJ2FycmF5JyxcbiAgICAgIF1cbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxbLyxcbiAgICAgICAgZW5kOiAvXS8sXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICAgICAga2V5d29yZDogW1xuICAgICAgICAgICAgJ25ldycsXG4gICAgICAgICAgICAnYXJyYXknLFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgLi4uQVRUUklCVVRFX0NPTlRBSU5TLFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLi4uQVRUUklCVVRFX0NPTlRBSU5TLFxuICAgICAge1xuICAgICAgICBzY29wZTogJ21ldGEnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgbWF0Y2g6IFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUgfSxcbiAgICAgICAgICB7IG1hdGNoOiBVUENBU0VfTkFNRV9SRSB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEFUVFJJQlVURVMsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCcvLycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAgeyBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjb3BlOiAnZG9jdGFnJyxcbiAgICAgICAgICAgIG1hdGNoOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XG4gICAgICAgIF0gfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9fX2hhbHRfY29tcGlsZXJcXChcXCk7LyxcbiAgICAgICAga2V5d29yZHM6ICdfX2hhbHRfY29tcGlsZXInLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBzY29wZTogXCJjb21tZW50XCIsXG4gICAgICAgICAgZW5kOiBobGpzLk1BVENIX05PVEhJTkdfUkUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWF0Y2g6IC9cXD8+LyxcbiAgICAgICAgICAgICAgc2NvcGU6IFwibWV0YVwiLFxuICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBzY29wZTogJ3ZhcmlhYmxlLmxhbmd1YWdlJyxcbiAgICAgICAgbWF0Y2g6IC9cXCR0aGlzXFxiL1xuICAgICAgfSxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRlVOQ1RJT05fSU5WT0tFLFxuICAgICAgTEVGVF9BTkRfUklHSFRfU0lERV9PRl9ET1VCTEVfQ09MT04sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2NvbnN0LyxcbiAgICAgICAgICAvXFxzLyxcbiAgICAgICAgICBJREVOVF9SRSxcbiAgICAgICAgXSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInZhcmlhYmxlLmNvbnN0YW50XCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgQ09OU1RSVUNUT1JfQ0FMTCxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6ICdmdW5jdGlvbicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ZuIGZ1bmN0aW9uJyxcbiAgICAgICAgZW5kOiAvWzt7XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdbJCVcXFxcW10nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgYmVnaW5LZXl3b3JkczogJ3VzZScsIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc9PicsIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzY29wZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgIEFUVFJJQlVURVMsXG4gICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICBMRUZUX0FORF9SSUdIVF9TSURFX09GX0RPVUJMRV9DT0xPTixcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzY29wZTogJ2NsYXNzJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiBcImVudW1cIixcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bKCRcIl0vXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiBcImNsYXNzIGludGVyZmFjZSB0cmFpdFwiLFxuICAgICAgICAgICAgaWxsZWdhbDogL1s6KCRcIl0vXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogL1xcey8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJyB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBib3RoIHVzZSBhbmQgbmFtZXNwYWNlIHN0aWxsIHVzZSBcIm9sZCBzdHlsZVwiIHJ1bGVzICh2cyBtdWx0aS1tYXRjaClcbiAgICAgIC8vIGJlY2F1c2UgdGhlIG5hbWVzcGFjZSBuYW1lIGNhbiBpbmNsdWRlIGBcXGAgYW5kIHdlIHN0aWxsIHdhbnQgZWFjaFxuICAgICAgLy8gZWxlbWVudCB0byBiZSB0cmVhdGVkIGFzIGl0cyBvd24gKmluZGl2aWR1YWwqIHRpdGxlXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvWy4nXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwgeyBzY29wZTogXCJ0aXRsZS5jbGFzc1wiIH0pIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIFRPRE86IHRpdGxlLmZ1bmN0aW9uIHZzIHRpdGxlLmNsYXNzXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF0Y2g6IC9cXGIoYXN8Y29uc3R8ZnVuY3Rpb24pXFxiLyxcbiAgICAgICAgICAgIHNjb3BlOiBcImtleXdvcmRcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gVE9ETzogY291bGQgYmUgdGl0bGUuY2xhc3Mgb3IgdGl0bGUuZnVuY3Rpb25cbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSLFxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwaHA7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///357\n')},371:module=>{eval("/*\nLanguage: Node REPL\nRequires: javascript.js\nAuthor: Marat Nagayev \nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction nodeRepl(hljs) {\n return {\n name: 'Node REPL',\n contains: [\n {\n className: 'meta.prompt',\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: '$',\n subLanguage: 'javascript'\n }\n },\n variants: [\n { begin: /^>(?=[ ]|$)/ },\n { begin: /^\\.\\.\\.(?=[ ]|$)/ }\n ]\n }\n ]\n };\n}\n\nmodule.exports = nodeRepl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcxLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxZQUFZLHNCQUFzQjtBQUNsQyxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbm9kZS1yZXBsLmpzP2NkMmEiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBOb2RlIFJFUExcblJlcXVpcmVzOiBqYXZhc2NyaXB0LmpzXG5BdXRob3I6IE1hcmF0IE5hZ2F5ZXYgPG5hZ2Fldm10QHlhbmRleC5ydT5cbkNhdGVnb3J5OiBzY3JpcHRpbmdcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBub2RlUmVwbChobGpzKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ05vZGUgUkVQTCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS5wcm9tcHQnLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAvLyBhIHNwYWNlIHNlcGFyYXRlcyB0aGUgUkVQTCBwcmVmaXggZnJvbSB0aGUgYWN0dWFsIGNvZGVcbiAgICAgICAgICAvLyB0aGlzIGlzIHB1cmVseSBmb3IgY2xlYW5lciBIVE1MIG91dHB1dFxuICAgICAgICAgIGVuZDogLyB8JC8sXG4gICAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnamF2YXNjcmlwdCdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgeyBiZWdpbjogL14+KD89WyBdfCQpLyB9LFxuICAgICAgICAgIHsgYmVnaW46IC9eXFwuXFwuXFwuKD89WyBdfCQpLyB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbm9kZVJlcGw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///371\n")},384:module=>{eval("/*\nLanguage: Matlab\nAuthor: Denis Bardadym \nContributors: Eugene Nizhibitsky , Egor Rogov \nWebsite: https://www.mathworks.com/products/matlab.html\nCategory: scientific\n*/\n\n/*\n Formal syntax is not published, helpful link:\n https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\n*/\nfunction matlab(hljs) {\n const TRANSPOSE_RE = '(\\'|\\\\.\\')+';\n const TRANSPOSE = {\n relevance: 0,\n contains: [ { begin: TRANSPOSE_RE } ]\n };\n\n return {\n name: 'Matlab',\n keywords: {\n keyword:\n 'arguments break case catch classdef continue else elseif end enumeration events for function '\n + 'global if methods otherwise parfor persistent properties return spmd switch try while',\n built_in:\n 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan '\n + 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot '\n + 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog '\n + 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal '\n + 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli '\n + 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma '\n + 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms '\n + 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones '\n + 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length '\n + 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril '\n + 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute '\n + 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan '\n + 'isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal '\n + 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table '\n + 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun '\n + 'legend intersect ismember procrustes hold num2cell '\n },\n illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function',\n end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n variants: [\n {\n begin: '\\\\(',\n end: '\\\\)'\n },\n {\n begin: '\\\\[',\n end: '\\\\]'\n }\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: /true|false/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\n relevance: 0\n },\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n contains: [ { begin: '\\'\\'' } ]\n },\n {\n begin: /\\]|\\}|\\)/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [ { begin: '\"\"' } ],\n starts: TRANSPOSE\n },\n hljs.COMMENT('^\\\\s*%\\\\{\\\\s*$', '^\\\\s*%\\\\}\\\\s*$'),\n hljs.COMMENT('%', '$')\n ]\n };\n}\n\nmodule.exports = matlab;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzg0LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isc0JBQXNCO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGdCQUFnQjtBQUN0QyxPQUFPO0FBQ1A7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixjQUFjO0FBQ3BDO0FBQ0EsT0FBTztBQUNQLDZCQUE2QixrQkFBa0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21hdGxhYi5qcz9lYzZhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogTWF0bGFiXG5BdXRob3I6IERlbmlzIEJhcmRhZHltIDxiYXJkYWR5bWNoaWtAZ21haWwuY29tPlxuQ29udHJpYnV0b3JzOiBFdWdlbmUgTml6aGliaXRza3kgPG5pemhpYml0c2t5QHlhLnJ1PiwgRWdvciBSb2dvdiA8ZS5yb2dvdkBwb3N0Z3Jlc3Byby5ydT5cbldlYnNpdGU6IGh0dHBzOi8vd3d3Lm1hdGh3b3Jrcy5jb20vcHJvZHVjdHMvbWF0bGFiLmh0bWxcbkNhdGVnb3J5OiBzY2llbnRpZmljXG4qL1xuXG4vKlxuICBGb3JtYWwgc3ludGF4IGlzIG5vdCBwdWJsaXNoZWQsIGhlbHBmdWwgbGluazpcbiAgaHR0cHM6Ly9naXRodWIuY29tL2tvcm5pbG92YS1sL21hdGxhYi1JbnRlbGxpSi1wbHVnaW4vYmxvYi9tYXN0ZXIvc3JjL21haW4vZ3JhbW1hci9NYXRsYWIuYm5mXG4qL1xuZnVuY3Rpb24gbWF0bGFiKGhsanMpIHtcbiAgY29uc3QgVFJBTlNQT1NFX1JFID0gJyhcXCd8XFxcXC5cXCcpKyc7XG4gIGNvbnN0IFRSQU5TUE9TRSA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFsgeyBiZWdpbjogVFJBTlNQT1NFX1JFIH0gXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ01hdGxhYicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdhcmd1bWVudHMgYnJlYWsgY2FzZSBjYXRjaCBjbGFzc2RlZiBjb250aW51ZSBlbHNlIGVsc2VpZiBlbmQgZW51bWVyYXRpb24gZXZlbnRzIGZvciBmdW5jdGlvbiAnXG4gICAgICAgICsgJ2dsb2JhbCBpZiBtZXRob2RzIG90aGVyd2lzZSBwYXJmb3IgcGVyc2lzdGVudCBwcm9wZXJ0aWVzIHJldHVybiBzcG1kIHN3aXRjaCB0cnkgd2hpbGUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdzaW4gc2luZCBzaW5oIGFzaW4gYXNpbmQgYXNpbmggY29zIGNvc2QgY29zaCBhY29zIGFjb3NkIGFjb3NoIHRhbiB0YW5kIHRhbmggYXRhbiAnXG4gICAgICAgICsgJ2F0YW5kIGF0YW4yIGF0YW5oIHNlYyBzZWNkIHNlY2ggYXNlYyBhc2VjZCBhc2VjaCBjc2MgY3NjZCBjc2NoIGFjc2MgYWNzY2QgYWNzY2ggY290ICdcbiAgICAgICAgKyAnY290ZCBjb3RoIGFjb3QgYWNvdGQgYWNvdGggaHlwb3QgZXhwIGV4cG0xIGxvZyBsb2cxcCBsb2cxMCBsb2cyIHBvdzIgcmVhbHBvdyByZWFsbG9nICdcbiAgICAgICAgKyAncmVhbHNxcnQgc3FydCBudGhyb290IG5leHRwb3cyIGFicyBhbmdsZSBjb21wbGV4IGNvbmogaW1hZyByZWFsIHVud3JhcCBpc3JlYWwgJ1xuICAgICAgICArICdjcGx4cGFpciBmaXggZmxvb3IgY2VpbCByb3VuZCBtb2QgcmVtIHNpZ24gYWlyeSBiZXNzZWxqIGJlc3NlbHkgYmVzc2VsaCBiZXNzZWxpICdcbiAgICAgICAgKyAnYmVzc2VsayBiZXRhIGJldGFpbmMgYmV0YWxuIGVsbGlwaiBlbGxpcGtlIGVyZiBlcmZjIGVyZmN4IGVyZmludiBleHBpbnQgZ2FtbWEgJ1xuICAgICAgICArICdnYW1tYWluYyBnYW1tYWxuIHBzaSBsZWdlbmRyZSBjcm9zcyBkb3QgZmFjdG9yIGlzcHJpbWUgcHJpbWVzIGdjZCBsY20gcmF0IHJhdHMgcGVybXMgJ1xuICAgICAgICArICduY2hvb3NlayBmYWN0b3JpYWwgY2FydDJzcGggY2FydDJwb2wgcG9sMmNhcnQgc3BoMmNhcnQgaHN2MnJnYiByZ2IyaHN2IHplcm9zIG9uZXMgJ1xuICAgICAgICArICdleWUgcmVwbWF0IHJhbmQgcmFuZG4gbGluc3BhY2UgbG9nc3BhY2UgZnJlcXNwYWNlIG1lc2hncmlkIGFjY3VtYXJyYXkgc2l6ZSBsZW5ndGggJ1xuICAgICAgICArICduZGltcyBudW1lbCBkaXNwIGlzZW1wdHkgaXNlcXVhbCBpc2VxdWFsd2l0aGVxdWFsbmFucyBjYXQgcmVzaGFwZSBkaWFnIGJsa2RpYWcgdHJpbCAnXG4gICAgICAgICsgJ3RyaXUgZmxpcGxyIGZsaXB1ZCBmbGlwZGltIHJvdDkwIGZpbmQgc3ViMmluZCBpbmQyc3ViIGJzeGZ1biBuZGdyaWQgcGVybXV0ZSBpcGVybXV0ZSAnXG4gICAgICAgICsgJ3NoaWZ0ZGltIGNpcmNzaGlmdCBzcXVlZXplIGlzc2NhbGFyIGlzdmVjdG9yIGFucyBlcHMgcmVhbG1heCByZWFsbWluIHBpIGl8MCBpbmYgbmFuICdcbiAgICAgICAgKyAnaXNuYW4gaXNpbmYgaXNmaW5pdGUganwwIHdoeSBjb21wYW4gZ2FsbGVyeSBoYWRhbWFyZCBoYW5rZWwgaGlsYiBpbnZoaWxiIG1hZ2ljIHBhc2NhbCAnXG4gICAgICAgICsgJ3Jvc3NlciB0b2VwbGl0eiB2YW5kZXIgd2lsa2luc29uIG1heCBtaW4gbmFubWF4IG5hbm1pbiBtZWFuIG5hbm1lYW4gdHlwZSB0YWJsZSAnXG4gICAgICAgICsgJ3JlYWR0YWJsZSB3cml0ZXRhYmxlIHNvcnRyb3dzIHNvcnQgZmlndXJlIHBsb3QgcGxvdDMgc2NhdHRlciBzY2F0dGVyMyBjZWxsZnVuICdcbiAgICAgICAgKyAnbGVnZW5kIGludGVyc2VjdCBpc21lbWJlciBwcm9jcnVzdGVzIGhvbGQgbnVtMmNlbGwgJ1xuICAgIH0sXG4gICAgaWxsZWdhbDogJygvL3xcInwjfC9cXFxcKnxcXFxccysvXFxcXHcrKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24nLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgICAgICAgICAgICAgIGVuZDogJ1xcXFwpJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46ICdcXFxcWycsXG4gICAgICAgICAgICAgICAgZW5kOiAnXFxcXF0nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46IC90cnVlfGZhbHNlLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBzdGFydHM6IFRSQU5TUE9TRVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdbYS16QS1aXVthLXpBLVpfMC05XSonICsgVFJBTlNQT1NFX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGNvbnRhaW5zOiBbIHsgYmVnaW46ICdcXCdcXCcnIH0gXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXF18XFx9fFxcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgc3RhcnRzOiBUUkFOU1BPU0VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbIHsgYmVnaW46ICdcIlwiJyB9IF0sXG4gICAgICAgIHN0YXJ0czogVFJBTlNQT1NFXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdeXFxcXHMqJVxcXFx7XFxcXHMqJCcsICdeXFxcXHMqJVxcXFx9XFxcXHMqJCcpLFxuICAgICAgaGxqcy5DT01NRU5UKCclJywgJyQnKVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXRsYWI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///384\n")},393:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(2500);\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFdBQVcsbUJBQU8sQ0FBQyxJQUFTOztBQUU1QjtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vanMteWFtbEAzLjE0LjEvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9tYXAuanM/YTBlNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTsgfVxufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///393\n")},486:module=>{eval('/*\nLanguage: Golo\nAuthor: Philippe Charriere \nDescription: a lightweight dynamic language for the JVM\nWebsite: http://golo-lang.org/\nCategory: system\n*/\n\nfunction golo(hljs) {\n const KEYWORDS = [\n "println",\n "readln",\n "print",\n "import",\n "module",\n "function",\n "local",\n "return",\n "let",\n "var",\n "while",\n "for",\n "foreach",\n "times",\n "in",\n "case",\n "when",\n "match",\n "with",\n "break",\n "continue",\n "augment",\n "augmentation",\n "each",\n "find",\n "filter",\n "reduce",\n "if",\n "then",\n "else",\n "otherwise",\n "try",\n "catch",\n "finally",\n "raise",\n "throw",\n "orIfNull",\n "DynamicObject|10",\n "DynamicVariable",\n "struct",\n "Observable",\n "map",\n "set",\n "vector",\n "list",\n "array"\n ];\n\n return {\n name: \'Golo\',\n keywords: {\n keyword: KEYWORDS,\n literal: [\n "true",\n "false",\n "null"\n ]\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: \'meta\',\n begin: \'@[A-Za-z]+\'\n }\n ]\n };\n}\n\nmodule.exports = golo;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDg2LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nb2xvLmpzP2VkMjAiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBHb2xvXG5BdXRob3I6IFBoaWxpcHBlIENoYXJyaWVyZSA8cGguY2hhcnJpZXJlQGdtYWlsLmNvbT5cbkRlc2NyaXB0aW9uOiBhIGxpZ2h0d2VpZ2h0IGR5bmFtaWMgbGFuZ3VhZ2UgZm9yIHRoZSBKVk1cbldlYnNpdGU6IGh0dHA6Ly9nb2xvLWxhbmcub3JnL1xuQ2F0ZWdvcnk6IHN5c3RlbVxuKi9cblxuZnVuY3Rpb24gZ29sbyhobGpzKSB7XG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgIFwicHJpbnRsblwiLFxuICAgIFwicmVhZGxuXCIsXG4gICAgXCJwcmludFwiLFxuICAgIFwiaW1wb3J0XCIsXG4gICAgXCJtb2R1bGVcIixcbiAgICBcImZ1bmN0aW9uXCIsXG4gICAgXCJsb2NhbFwiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJsZXRcIixcbiAgICBcInZhclwiLFxuICAgIFwid2hpbGVcIixcbiAgICBcImZvclwiLFxuICAgIFwiZm9yZWFjaFwiLFxuICAgIFwidGltZXNcIixcbiAgICBcImluXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJ3aGVuXCIsXG4gICAgXCJtYXRjaFwiLFxuICAgIFwid2l0aFwiLFxuICAgIFwiYnJlYWtcIixcbiAgICBcImNvbnRpbnVlXCIsXG4gICAgXCJhdWdtZW50XCIsXG4gICAgXCJhdWdtZW50YXRpb25cIixcbiAgICBcImVhY2hcIixcbiAgICBcImZpbmRcIixcbiAgICBcImZpbHRlclwiLFxuICAgIFwicmVkdWNlXCIsXG4gICAgXCJpZlwiLFxuICAgIFwidGhlblwiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwib3RoZXJ3aXNlXCIsXG4gICAgXCJ0cnlcIixcbiAgICBcImNhdGNoXCIsXG4gICAgXCJmaW5hbGx5XCIsXG4gICAgXCJyYWlzZVwiLFxuICAgIFwidGhyb3dcIixcbiAgICBcIm9ySWZOdWxsXCIsXG4gICAgXCJEeW5hbWljT2JqZWN0fDEwXCIsXG4gICAgXCJEeW5hbWljVmFyaWFibGVcIixcbiAgICBcInN0cnVjdFwiLFxuICAgIFwiT2JzZXJ2YWJsZVwiLFxuICAgIFwibWFwXCIsXG4gICAgXCJzZXRcIixcbiAgICBcInZlY3RvclwiLFxuICAgIFwibGlzdFwiLFxuICAgIFwiYXJyYXlcIlxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0dvbG8nLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6IFtcbiAgICAgICAgXCJ0cnVlXCIsXG4gICAgICAgIFwiZmFsc2VcIixcbiAgICAgICAgXCJudWxsXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ29sbztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///486\n')},509:module=>{eval("/*\nLanguage: Python REPL\nRequires: python.js\nAuthor: Josh Goebel \nCategory: common\n*/\n\nfunction pythonRepl(hljs) {\n return {\n aliases: [ 'pycon' ],\n contains: [\n {\n className: 'meta.prompt',\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: '$',\n subLanguage: 'python'\n }\n },\n variants: [\n { begin: /^>>>(?=[ ]|$)/ },\n { begin: /^\\.\\.\\.(?=[ ]|$)/ }\n ]\n }\n ]\n };\n}\n\nmodule.exports = pythonRepl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTA5LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx3QkFBd0I7QUFDcEMsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B5dGhvbi1yZXBsLmpzPzVkYTkiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBQeXRob24gUkVQTFxuUmVxdWlyZXM6IHB5dGhvbi5qc1xuQXV0aG9yOiBKb3NoIEdvZWJlbCA8aGVsbG9Aam9zaGdvZWJlbC5jb20+XG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG5mdW5jdGlvbiBweXRob25SZXBsKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbICdweWNvbicgXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLnByb21wdCcsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIGEgc3BhY2Ugc2VwYXJhdGVzIHRoZSBSRVBMIHByZWZpeCBmcm9tIHRoZSBhY3R1YWwgY29kZVxuICAgICAgICAgIC8vIHRoaXMgaXMgcHVyZWx5IGZvciBjbGVhbmVyIEhUTUwgb3V0cHV0XG4gICAgICAgICAgZW5kOiAvIHwkLyxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdweXRob24nXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46IC9ePj4+KD89WyBdfCQpLyB9LFxuICAgICAgICAgIHsgYmVnaW46IC9eXFwuXFwuXFwuKD89WyBdfCQpLyB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcHl0aG9uUmVwbDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///509\n")},520:module=>{eval('/*\nLanguage: Clean\nAuthor: Camil Staps \nCategory: functional\nWebsite: http://clean.cs.ru.nl\n*/\n\n/** @type LanguageFn */\nfunction clean(hljs) {\n const KEYWORDS = [\n "if",\n "let",\n "in",\n "with",\n "where",\n "case",\n "of",\n "class",\n "instance",\n "otherwise",\n "implementation",\n "definition",\n "system",\n "module",\n "from",\n "import",\n "qualified",\n "as",\n "special",\n "code",\n "inline",\n "foreign",\n "export",\n "ccall",\n "stdcall",\n "generic",\n "derive",\n "infix",\n "infixl",\n "infixr"\n ];\n return {\n name: \'Clean\',\n aliases: [\n \'icl\',\n \'dcl\'\n ],\n keywords: {\n keyword: KEYWORDS,\n built_in:\n \'Int Real Char Bool\',\n literal:\n \'True False\'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n { // relevance booster\n begin: \'->|<-[|:]?|#!?|>>=|\\\\{\\\\||\\\\|\\\\}|:==|=:|<>\' }\n ]\n };\n}\n\nmodule.exports = clean;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIwLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1Isc0NBQXNDLFVBQVU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbGVhbi5qcz9kYzljIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogQ2xlYW5cbkF1dGhvcjogQ2FtaWwgU3RhcHMgPGluZm9AY2FtaWxzdGFwcy5ubD5cbkNhdGVnb3J5OiBmdW5jdGlvbmFsXG5XZWJzaXRlOiBodHRwOi8vY2xlYW4uY3MucnUubmxcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjbGVhbihobGpzKSB7XG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgIFwiaWZcIixcbiAgICBcImxldFwiLFxuICAgIFwiaW5cIixcbiAgICBcIndpdGhcIixcbiAgICBcIndoZXJlXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJvZlwiLFxuICAgIFwiY2xhc3NcIixcbiAgICBcImluc3RhbmNlXCIsXG4gICAgXCJvdGhlcndpc2VcIixcbiAgICBcImltcGxlbWVudGF0aW9uXCIsXG4gICAgXCJkZWZpbml0aW9uXCIsXG4gICAgXCJzeXN0ZW1cIixcbiAgICBcIm1vZHVsZVwiLFxuICAgIFwiZnJvbVwiLFxuICAgIFwiaW1wb3J0XCIsXG4gICAgXCJxdWFsaWZpZWRcIixcbiAgICBcImFzXCIsXG4gICAgXCJzcGVjaWFsXCIsXG4gICAgXCJjb2RlXCIsXG4gICAgXCJpbmxpbmVcIixcbiAgICBcImZvcmVpZ25cIixcbiAgICBcImV4cG9ydFwiLFxuICAgIFwiY2NhbGxcIixcbiAgICBcInN0ZGNhbGxcIixcbiAgICBcImdlbmVyaWNcIixcbiAgICBcImRlcml2ZVwiLFxuICAgIFwiaW5maXhcIixcbiAgICBcImluZml4bFwiLFxuICAgIFwiaW5maXhyXCJcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQ2xlYW4nLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdpY2wnLFxuICAgICAgJ2RjbCdcbiAgICBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnSW50IFJlYWwgQ2hhciBCb29sJyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdUcnVlIEZhbHNlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgeyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgICBiZWdpbjogJy0+fDwtW3w6XT98IyE/fD4+PXxcXFxce1xcXFx8fFxcXFx8XFxcXH18Oj09fD06fDw+JyB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsZWFuO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///520\n')},554:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(2500);\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTU0LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFdBQVcsbUJBQU8sQ0FBQyxJQUFTOztBQUU1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwwQ0FBMEMsZ0JBQWdCO0FBQzFEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vanMteWFtbEAzLjE0LjEvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9vbWFwLmpzP2Y3NjMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX3RvU3RyaW5nICAgICAgID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxPbWFwKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBvYmplY3RLZXlzID0gW10sIGluZGV4LCBsZW5ndGgsIHBhaXIsIHBhaXJLZXksIHBhaXJIYXNLZXksXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuICAgIHBhaXJIYXNLZXkgPSBmYWxzZTtcblxuICAgIGlmIChfdG9TdHJpbmcuY2FsbChwYWlyKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAocGFpcktleSBpbiBwYWlyKSB7XG4gICAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwocGFpciwgcGFpcktleSkpIHtcbiAgICAgICAgaWYgKCFwYWlySGFzS2V5KSBwYWlySGFzS2V5ID0gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYWlySGFzS2V5KSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqZWN0S2V5cy5pbmRleE9mKHBhaXJLZXkpID09PSAtMSkgb2JqZWN0S2V5cy5wdXNoKHBhaXJLZXkpO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxPbWFwKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm9tYXAnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sT21hcCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sT21hcFxufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///554\n")},584:module=>{eval('/*\nLanguage: Coq\nAuthor: Stephan Boyer \nCategory: functional\nWebsite: https://coq.inria.fr\n*/\n\n/** @type LanguageFn */\nfunction coq(hljs) {\n const KEYWORDS = [\n "_|0",\n "as",\n "at",\n "cofix",\n "else",\n "end",\n "exists",\n "exists2",\n "fix",\n "for",\n "forall",\n "fun",\n "if",\n "IF",\n "in",\n "let",\n "match",\n "mod",\n "Prop",\n "return",\n "Set",\n "then",\n "Type",\n "using",\n "where",\n "with",\n "Abort",\n "About",\n "Add",\n "Admit",\n "Admitted",\n "All",\n "Arguments",\n "Assumptions",\n "Axiom",\n "Back",\n "BackTo",\n "Backtrack",\n "Bind",\n "Blacklist",\n "Canonical",\n "Cd",\n "Check",\n "Class",\n "Classes",\n "Close",\n "Coercion",\n "Coercions",\n "CoFixpoint",\n "CoInductive",\n "Collection",\n "Combined",\n "Compute",\n "Conjecture",\n "Conjectures",\n "Constant",\n "constr",\n "Constraint",\n "Constructors",\n "Context",\n "Corollary",\n "CreateHintDb",\n "Cut",\n "Declare",\n "Defined",\n "Definition",\n "Delimit",\n "Dependencies",\n "Dependent",\n "Derive",\n "Drop",\n "eauto",\n "End",\n "Equality",\n "Eval",\n "Example",\n "Existential",\n "Existentials",\n "Existing",\n "Export",\n "exporting",\n "Extern",\n "Extract",\n "Extraction",\n "Fact",\n "Field",\n "Fields",\n "File",\n "Fixpoint",\n "Focus",\n "for",\n "From",\n "Function",\n "Functional",\n "Generalizable",\n "Global",\n "Goal",\n "Grab",\n "Grammar",\n "Graph",\n "Guarded",\n "Heap",\n "Hint",\n "HintDb",\n "Hints",\n "Hypotheses",\n "Hypothesis",\n "ident",\n "Identity",\n "If",\n "Immediate",\n "Implicit",\n "Import",\n "Include",\n "Inductive",\n "Infix",\n "Info",\n "Initial",\n "Inline",\n "Inspect",\n "Instance",\n "Instances",\n "Intro",\n "Intros",\n "Inversion",\n "Inversion_clear",\n "Language",\n "Left",\n "Lemma",\n "Let",\n "Libraries",\n "Library",\n "Load",\n "LoadPath",\n "Local",\n "Locate",\n "Ltac",\n "ML",\n "Mode",\n "Module",\n "Modules",\n "Monomorphic",\n "Morphism",\n "Next",\n "NoInline",\n "Notation",\n "Obligation",\n "Obligations",\n "Opaque",\n "Open",\n "Optimize",\n "Options",\n "Parameter",\n "Parameters",\n "Parametric",\n "Path",\n "Paths",\n "pattern",\n "Polymorphic",\n "Preterm",\n "Print",\n "Printing",\n "Program",\n "Projections",\n "Proof",\n "Proposition",\n "Pwd",\n "Qed",\n "Quit",\n "Rec",\n "Record",\n "Recursive",\n "Redirect",\n "Relation",\n "Remark",\n "Remove",\n "Require",\n "Reserved",\n "Reset",\n "Resolve",\n "Restart",\n "Rewrite",\n "Right",\n "Ring",\n "Rings",\n "Save",\n "Scheme",\n "Scope",\n "Scopes",\n "Script",\n "Search",\n "SearchAbout",\n "SearchHead",\n "SearchPattern",\n "SearchRewrite",\n "Section",\n "Separate",\n "Set",\n "Setoid",\n "Show",\n "Solve",\n "Sorted",\n "Step",\n "Strategies",\n "Strategy",\n "Structure",\n "SubClass",\n "Table",\n "Tables",\n "Tactic",\n "Term",\n "Test",\n "Theorem",\n "Time",\n "Timeout",\n "Transparent",\n "Type",\n "Typeclasses",\n "Types",\n "Undelimit",\n "Undo",\n "Unfocus",\n "Unfocused",\n "Unfold",\n "Universe",\n "Universes",\n "Unset",\n "Unshelve",\n "using",\n "Variable",\n "Variables",\n "Variant",\n "Verbose",\n "Visibility",\n "where",\n "with"\n ];\n const BUILT_INS = [\n "abstract",\n "absurd",\n "admit",\n "after",\n "apply",\n "as",\n "assert",\n "assumption",\n "at",\n "auto",\n "autorewrite",\n "autounfold",\n "before",\n "bottom",\n "btauto",\n "by",\n "case",\n "case_eq",\n "cbn",\n "cbv",\n "change",\n "classical_left",\n "classical_right",\n "clear",\n "clearbody",\n "cofix",\n "compare",\n "compute",\n "congruence",\n "constr_eq",\n "constructor",\n "contradict",\n "contradiction",\n "cut",\n "cutrewrite",\n "cycle",\n "decide",\n "decompose",\n "dependent",\n "destruct",\n "destruction",\n "dintuition",\n "discriminate",\n "discrR",\n "do",\n "double",\n "dtauto",\n "eapply",\n "eassumption",\n "eauto",\n "ecase",\n "econstructor",\n "edestruct",\n "ediscriminate",\n "eelim",\n "eexact",\n "eexists",\n "einduction",\n "einjection",\n "eleft",\n "elim",\n "elimtype",\n "enough",\n "equality",\n "erewrite",\n "eright",\n "esimplify_eq",\n "esplit",\n "evar",\n "exact",\n "exactly_once",\n "exfalso",\n "exists",\n "f_equal",\n "fail",\n "field",\n "field_simplify",\n "field_simplify_eq",\n "first",\n "firstorder",\n "fix",\n "fold",\n "fourier",\n "functional",\n "generalize",\n "generalizing",\n "gfail",\n "give_up",\n "has_evar",\n "hnf",\n "idtac",\n "in",\n "induction",\n "injection",\n "instantiate",\n "intro",\n "intro_pattern",\n "intros",\n "intuition",\n "inversion",\n "inversion_clear",\n "is_evar",\n "is_var",\n "lapply",\n "lazy",\n "left",\n "lia",\n "lra",\n "move",\n "native_compute",\n "nia",\n "nsatz",\n "omega",\n "once",\n "pattern",\n "pose",\n "progress",\n "proof",\n "psatz",\n "quote",\n "record",\n "red",\n "refine",\n "reflexivity",\n "remember",\n "rename",\n "repeat",\n "replace",\n "revert",\n "revgoals",\n "rewrite",\n "rewrite_strat",\n "right",\n "ring",\n "ring_simplify",\n "rtauto",\n "set",\n "setoid_reflexivity",\n "setoid_replace",\n "setoid_rewrite",\n "setoid_symmetry",\n "setoid_transitivity",\n "shelve",\n "shelve_unifiable",\n "simpl",\n "simple",\n "simplify_eq",\n "solve",\n "specialize",\n "split",\n "split_Rabs",\n "split_Rmult",\n "stepl",\n "stepr",\n "subst",\n "sum",\n "swap",\n "symmetry",\n "tactic",\n "tauto",\n "time",\n "timeout",\n "top",\n "transitivity",\n "trivial",\n "try",\n "tryif",\n "unfold",\n "unify",\n "until",\n "using",\n "vm_compute",\n "with"\n ];\n return {\n name: \'Coq\',\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_INS\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT(\'\\\\(\\\\*\', \'\\\\*\\\\)\'),\n hljs.C_NUMBER_MODE,\n {\n className: \'type\',\n excludeBegin: true,\n begin: \'\\\\|\\\\s*\',\n end: \'\\\\w+\'\n },\n { // relevance booster\n begin: /[-=]>/ }\n ]\n };\n}\n\nmodule.exports = coq;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTg0LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29xLmpzP2NhMDgiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBDb3FcbkF1dGhvcjogU3RlcGhhbiBCb3llciA8c3RlcGhhbkBzdGVwaGFuYm95ZXIuY29tPlxuQ2F0ZWdvcnk6IGZ1bmN0aW9uYWxcbldlYnNpdGU6IGh0dHBzOi8vY29xLmlucmlhLmZyXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gY29xKGhsanMpIHtcbiAgY29uc3QgS0VZV09SRFMgPSBbXG4gICAgXCJffDBcIixcbiAgICBcImFzXCIsXG4gICAgXCJhdFwiLFxuICAgIFwiY29maXhcIixcbiAgICBcImVsc2VcIixcbiAgICBcImVuZFwiLFxuICAgIFwiZXhpc3RzXCIsXG4gICAgXCJleGlzdHMyXCIsXG4gICAgXCJmaXhcIixcbiAgICBcImZvclwiLFxuICAgIFwiZm9yYWxsXCIsXG4gICAgXCJmdW5cIixcbiAgICBcImlmXCIsXG4gICAgXCJJRlwiLFxuICAgIFwiaW5cIixcbiAgICBcImxldFwiLFxuICAgIFwibWF0Y2hcIixcbiAgICBcIm1vZFwiLFxuICAgIFwiUHJvcFwiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJTZXRcIixcbiAgICBcInRoZW5cIixcbiAgICBcIlR5cGVcIixcbiAgICBcInVzaW5nXCIsXG4gICAgXCJ3aGVyZVwiLFxuICAgIFwid2l0aFwiLFxuICAgIFwiQWJvcnRcIixcbiAgICBcIkFib3V0XCIsXG4gICAgXCJBZGRcIixcbiAgICBcIkFkbWl0XCIsXG4gICAgXCJBZG1pdHRlZFwiLFxuICAgIFwiQWxsXCIsXG4gICAgXCJBcmd1bWVudHNcIixcbiAgICBcIkFzc3VtcHRpb25zXCIsXG4gICAgXCJBeGlvbVwiLFxuICAgIFwiQmFja1wiLFxuICAgIFwiQmFja1RvXCIsXG4gICAgXCJCYWNrdHJhY2tcIixcbiAgICBcIkJpbmRcIixcbiAgICBcIkJsYWNrbGlzdFwiLFxuICAgIFwiQ2Fub25pY2FsXCIsXG4gICAgXCJDZFwiLFxuICAgIFwiQ2hlY2tcIixcbiAgICBcIkNsYXNzXCIsXG4gICAgXCJDbGFzc2VzXCIsXG4gICAgXCJDbG9zZVwiLFxuICAgIFwiQ29lcmNpb25cIixcbiAgICBcIkNvZXJjaW9uc1wiLFxuICAgIFwiQ29GaXhwb2ludFwiLFxuICAgIFwiQ29JbmR1Y3RpdmVcIixcbiAgICBcIkNvbGxlY3Rpb25cIixcbiAgICBcIkNvbWJpbmVkXCIsXG4gICAgXCJDb21wdXRlXCIsXG4gICAgXCJDb25qZWN0dXJlXCIsXG4gICAgXCJDb25qZWN0dXJlc1wiLFxuICAgIFwiQ29uc3RhbnRcIixcbiAgICBcImNvbnN0clwiLFxuICAgIFwiQ29uc3RyYWludFwiLFxuICAgIFwiQ29uc3RydWN0b3JzXCIsXG4gICAgXCJDb250ZXh0XCIsXG4gICAgXCJDb3JvbGxhcnlcIixcbiAgICBcIkNyZWF0ZUhpbnREYlwiLFxuICAgIFwiQ3V0XCIsXG4gICAgXCJEZWNsYXJlXCIsXG4gICAgXCJEZWZpbmVkXCIsXG4gICAgXCJEZWZpbml0aW9uXCIsXG4gICAgXCJEZWxpbWl0XCIsXG4gICAgXCJEZXBlbmRlbmNpZXNcIixcbiAgICBcIkRlcGVuZGVudFwiLFxuICAgIFwiRGVyaXZlXCIsXG4gICAgXCJEcm9wXCIsXG4gICAgXCJlYXV0b1wiLFxuICAgIFwiRW5kXCIsXG4gICAgXCJFcXVhbGl0eVwiLFxuICAgIFwiRXZhbFwiLFxuICAgIFwiRXhhbXBsZVwiLFxuICAgIFwiRXhpc3RlbnRpYWxcIixcbiAgICBcIkV4aXN0ZW50aWFsc1wiLFxuICAgIFwiRXhpc3RpbmdcIixcbiAgICBcIkV4cG9ydFwiLFxuICAgIFwiZXhwb3J0aW5nXCIsXG4gICAgXCJFeHRlcm5cIixcbiAgICBcIkV4dHJhY3RcIixcbiAgICBcIkV4dHJhY3Rpb25cIixcbiAgICBcIkZhY3RcIixcbiAgICBcIkZpZWxkXCIsXG4gICAgXCJGaWVsZHNcIixcbiAgICBcIkZpbGVcIixcbiAgICBcIkZpeHBvaW50XCIsXG4gICAgXCJGb2N1c1wiLFxuICAgIFwiZm9yXCIsXG4gICAgXCJGcm9tXCIsXG4gICAgXCJGdW5jdGlvblwiLFxuICAgIFwiRnVuY3Rpb25hbFwiLFxuICAgIFwiR2VuZXJhbGl6YWJsZVwiLFxuICAgIFwiR2xvYmFsXCIsXG4gICAgXCJHb2FsXCIsXG4gICAgXCJHcmFiXCIsXG4gICAgXCJHcmFtbWFyXCIsXG4gICAgXCJHcmFwaFwiLFxuICAgIFwiR3VhcmRlZFwiLFxuICAgIFwiSGVhcFwiLFxuICAgIFwiSGludFwiLFxuICAgIFwiSGludERiXCIsXG4gICAgXCJIaW50c1wiLFxuICAgIFwiSHlwb3RoZXNlc1wiLFxuICAgIFwiSHlwb3RoZXNpc1wiLFxuICAgIFwiaWRlbnRcIixcbiAgICBcIklkZW50aXR5XCIsXG4gICAgXCJJZlwiLFxuICAgIFwiSW1tZWRpYXRlXCIsXG4gICAgXCJJbXBsaWNpdFwiLFxuICAgIFwiSW1wb3J0XCIsXG4gICAgXCJJbmNsdWRlXCIsXG4gICAgXCJJbmR1Y3RpdmVcIixcbiAgICBcIkluZml4XCIsXG4gICAgXCJJbmZvXCIsXG4gICAgXCJJbml0aWFsXCIsXG4gICAgXCJJbmxpbmVcIixcbiAgICBcIkluc3BlY3RcIixcbiAgICBcIkluc3RhbmNlXCIsXG4gICAgXCJJbnN0YW5jZXNcIixcbiAgICBcIkludHJvXCIsXG4gICAgXCJJbnRyb3NcIixcbiAgICBcIkludmVyc2lvblwiLFxuICAgIFwiSW52ZXJzaW9uX2NsZWFyXCIsXG4gICAgXCJMYW5ndWFnZVwiLFxuICAgIFwiTGVmdFwiLFxuICAgIFwiTGVtbWFcIixcbiAgICBcIkxldFwiLFxuICAgIFwiTGlicmFyaWVzXCIsXG4gICAgXCJMaWJyYXJ5XCIsXG4gICAgXCJMb2FkXCIsXG4gICAgXCJMb2FkUGF0aFwiLFxuICAgIFwiTG9jYWxcIixcbiAgICBcIkxvY2F0ZVwiLFxuICAgIFwiTHRhY1wiLFxuICAgIFwiTUxcIixcbiAgICBcIk1vZGVcIixcbiAgICBcIk1vZHVsZVwiLFxuICAgIFwiTW9kdWxlc1wiLFxuICAgIFwiTW9ub21vcnBoaWNcIixcbiAgICBcIk1vcnBoaXNtXCIsXG4gICAgXCJOZXh0XCIsXG4gICAgXCJOb0lubGluZVwiLFxuICAgIFwiTm90YXRpb25cIixcbiAgICBcIk9ibGlnYXRpb25cIixcbiAgICBcIk9ibGlnYXRpb25zXCIsXG4gICAgXCJPcGFxdWVcIixcbiAgICBcIk9wZW5cIixcbiAgICBcIk9wdGltaXplXCIsXG4gICAgXCJPcHRpb25zXCIsXG4gICAgXCJQYXJhbWV0ZXJcIixcbiAgICBcIlBhcmFtZXRlcnNcIixcbiAgICBcIlBhcmFtZXRyaWNcIixcbiAgICBcIlBhdGhcIixcbiAgICBcIlBhdGhzXCIsXG4gICAgXCJwYXR0ZXJuXCIsXG4gICAgXCJQb2x5bW9ycGhpY1wiLFxuICAgIFwiUHJldGVybVwiLFxuICAgIFwiUHJpbnRcIixcbiAgICBcIlByaW50aW5nXCIsXG4gICAgXCJQcm9ncmFtXCIsXG4gICAgXCJQcm9qZWN0aW9uc1wiLFxuICAgIFwiUHJvb2ZcIixcbiAgICBcIlByb3Bvc2l0aW9uXCIsXG4gICAgXCJQd2RcIixcbiAgICBcIlFlZFwiLFxuICAgIFwiUXVpdFwiLFxuICAgIFwiUmVjXCIsXG4gICAgXCJSZWNvcmRcIixcbiAgICBcIlJlY3Vyc2l2ZVwiLFxuICAgIFwiUmVkaXJlY3RcIixcbiAgICBcIlJlbGF0aW9uXCIsXG4gICAgXCJSZW1hcmtcIixcbiAgICBcIlJlbW92ZVwiLFxuICAgIFwiUmVxdWlyZVwiLFxuICAgIFwiUmVzZXJ2ZWRcIixcbiAgICBcIlJlc2V0XCIsXG4gICAgXCJSZXNvbHZlXCIsXG4gICAgXCJSZXN0YXJ0XCIsXG4gICAgXCJSZXdyaXRlXCIsXG4gICAgXCJSaWdodFwiLFxuICAgIFwiUmluZ1wiLFxuICAgIFwiUmluZ3NcIixcbiAgICBcIlNhdmVcIixcbiAgICBcIlNjaGVtZVwiLFxuICAgIFwiU2NvcGVcIixcbiAgICBcIlNjb3Blc1wiLFxuICAgIFwiU2NyaXB0XCIsXG4gICAgXCJTZWFyY2hcIixcbiAgICBcIlNlYXJjaEFib3V0XCIsXG4gICAgXCJTZWFyY2hIZWFkXCIsXG4gICAgXCJTZWFyY2hQYXR0ZXJuXCIsXG4gICAgXCJTZWFyY2hSZXdyaXRlXCIsXG4gICAgXCJTZWN0aW9uXCIsXG4gICAgXCJTZXBhcmF0ZVwiLFxuICAgIFwiU2V0XCIsXG4gICAgXCJTZXRvaWRcIixcbiAgICBcIlNob3dcIixcbiAgICBcIlNvbHZlXCIsXG4gICAgXCJTb3J0ZWRcIixcbiAgICBcIlN0ZXBcIixcbiAgICBcIlN0cmF0ZWdpZXNcIixcbiAgICBcIlN0cmF0ZWd5XCIsXG4gICAgXCJTdHJ1Y3R1cmVcIixcbiAgICBcIlN1YkNsYXNzXCIsXG4gICAgXCJUYWJsZVwiLFxuICAgIFwiVGFibGVzXCIsXG4gICAgXCJUYWN0aWNcIixcbiAgICBcIlRlcm1cIixcbiAgICBcIlRlc3RcIixcbiAgICBcIlRoZW9yZW1cIixcbiAgICBcIlRpbWVcIixcbiAgICBcIlRpbWVvdXRcIixcbiAgICBcIlRyYW5zcGFyZW50XCIsXG4gICAgXCJUeXBlXCIsXG4gICAgXCJUeXBlY2xhc3Nlc1wiLFxuICAgIFwiVHlwZXNcIixcbiAgICBcIlVuZGVsaW1pdFwiLFxuICAgIFwiVW5kb1wiLFxuICAgIFwiVW5mb2N1c1wiLFxuICAgIFwiVW5mb2N1c2VkXCIsXG4gICAgXCJVbmZvbGRcIixcbiAgICBcIlVuaXZlcnNlXCIsXG4gICAgXCJVbml2ZXJzZXNcIixcbiAgICBcIlVuc2V0XCIsXG4gICAgXCJVbnNoZWx2ZVwiLFxuICAgIFwidXNpbmdcIixcbiAgICBcIlZhcmlhYmxlXCIsXG4gICAgXCJWYXJpYWJsZXNcIixcbiAgICBcIlZhcmlhbnRcIixcbiAgICBcIlZlcmJvc2VcIixcbiAgICBcIlZpc2liaWxpdHlcIixcbiAgICBcIndoZXJlXCIsXG4gICAgXCJ3aXRoXCJcbiAgXTtcbiAgY29uc3QgQlVJTFRfSU5TID0gW1xuICAgIFwiYWJzdHJhY3RcIixcbiAgICBcImFic3VyZFwiLFxuICAgIFwiYWRtaXRcIixcbiAgICBcImFmdGVyXCIsXG4gICAgXCJhcHBseVwiLFxuICAgIFwiYXNcIixcbiAgICBcImFzc2VydFwiLFxuICAgIFwiYXNzdW1wdGlvblwiLFxuICAgIFwiYXRcIixcbiAgICBcImF1dG9cIixcbiAgICBcImF1dG9yZXdyaXRlXCIsXG4gICAgXCJhdXRvdW5mb2xkXCIsXG4gICAgXCJiZWZvcmVcIixcbiAgICBcImJvdHRvbVwiLFxuICAgIFwiYnRhdXRvXCIsXG4gICAgXCJieVwiLFxuICAgIFwiY2FzZVwiLFxuICAgIFwiY2FzZV9lcVwiLFxuICAgIFwiY2JuXCIsXG4gICAgXCJjYnZcIixcbiAgICBcImNoYW5nZVwiLFxuICAgIFwiY2xhc3NpY2FsX2xlZnRcIixcbiAgICBcImNsYXNzaWNhbF9yaWdodFwiLFxuICAgIFwiY2xlYXJcIixcbiAgICBcImNsZWFyYm9keVwiLFxuICAgIFwiY29maXhcIixcbiAgICBcImNvbXBhcmVcIixcbiAgICBcImNvbXB1dGVcIixcbiAgICBcImNvbmdydWVuY2VcIixcbiAgICBcImNvbnN0cl9lcVwiLFxuICAgIFwiY29uc3RydWN0b3JcIixcbiAgICBcImNvbnRyYWRpY3RcIixcbiAgICBcImNvbnRyYWRpY3Rpb25cIixcbiAgICBcImN1dFwiLFxuICAgIFwiY3V0cmV3cml0ZVwiLFxuICAgIFwiY3ljbGVcIixcbiAgICBcImRlY2lkZVwiLFxuICAgIFwiZGVjb21wb3NlXCIsXG4gICAgXCJkZXBlbmRlbnRcIixcbiAgICBcImRlc3RydWN0XCIsXG4gICAgXCJkZXN0cnVjdGlvblwiLFxuICAgIFwiZGludHVpdGlvblwiLFxuICAgIFwiZGlzY3JpbWluYXRlXCIsXG4gICAgXCJkaXNjclJcIixcbiAgICBcImRvXCIsXG4gICAgXCJkb3VibGVcIixcbiAgICBcImR0YXV0b1wiLFxuICAgIFwiZWFwcGx5XCIsXG4gICAgXCJlYXNzdW1wdGlvblwiLFxuICAgIFwiZWF1dG9cIixcbiAgICBcImVjYXNlXCIsXG4gICAgXCJlY29uc3RydWN0b3JcIixcbiAgICBcImVkZXN0cnVjdFwiLFxuICAgIFwiZWRpc2NyaW1pbmF0ZVwiLFxuICAgIFwiZWVsaW1cIixcbiAgICBcImVleGFjdFwiLFxuICAgIFwiZWV4aXN0c1wiLFxuICAgIFwiZWluZHVjdGlvblwiLFxuICAgIFwiZWluamVjdGlvblwiLFxuICAgIFwiZWxlZnRcIixcbiAgICBcImVsaW1cIixcbiAgICBcImVsaW10eXBlXCIsXG4gICAgXCJlbm91Z2hcIixcbiAgICBcImVxdWFsaXR5XCIsXG4gICAgXCJlcmV3cml0ZVwiLFxuICAgIFwiZXJpZ2h0XCIsXG4gICAgXCJlc2ltcGxpZnlfZXFcIixcbiAgICBcImVzcGxpdFwiLFxuICAgIFwiZXZhclwiLFxuICAgIFwiZXhhY3RcIixcbiAgICBcImV4YWN0bHlfb25jZVwiLFxuICAgIFwiZXhmYWxzb1wiLFxuICAgIFwiZXhpc3RzXCIsXG4gICAgXCJmX2VxdWFsXCIsXG4gICAgXCJmYWlsXCIsXG4gICAgXCJmaWVsZFwiLFxuICAgIFwiZmllbGRfc2ltcGxpZnlcIixcbiAgICBcImZpZWxkX3NpbXBsaWZ5X2VxXCIsXG4gICAgXCJmaXJzdFwiLFxuICAgIFwiZmlyc3RvcmRlclwiLFxuICAgIFwiZml4XCIsXG4gICAgXCJmb2xkXCIsXG4gICAgXCJmb3VyaWVyXCIsXG4gICAgXCJmdW5jdGlvbmFsXCIsXG4gICAgXCJnZW5lcmFsaXplXCIsXG4gICAgXCJnZW5lcmFsaXppbmdcIixcbiAgICBcImdmYWlsXCIsXG4gICAgXCJnaXZlX3VwXCIsXG4gICAgXCJoYXNfZXZhclwiLFxuICAgIFwiaG5mXCIsXG4gICAgXCJpZHRhY1wiLFxuICAgIFwiaW5cIixcbiAgICBcImluZHVjdGlvblwiLFxuICAgIFwiaW5qZWN0aW9uXCIsXG4gICAgXCJpbnN0YW50aWF0ZVwiLFxuICAgIFwiaW50cm9cIixcbiAgICBcImludHJvX3BhdHRlcm5cIixcbiAgICBcImludHJvc1wiLFxuICAgIFwiaW50dWl0aW9uXCIsXG4gICAgXCJpbnZlcnNpb25cIixcbiAgICBcImludmVyc2lvbl9jbGVhclwiLFxuICAgIFwiaXNfZXZhclwiLFxuICAgIFwiaXNfdmFyXCIsXG4gICAgXCJsYXBwbHlcIixcbiAgICBcImxhenlcIixcbiAgICBcImxlZnRcIixcbiAgICBcImxpYVwiLFxuICAgIFwibHJhXCIsXG4gICAgXCJtb3ZlXCIsXG4gICAgXCJuYXRpdmVfY29tcHV0ZVwiLFxuICAgIFwibmlhXCIsXG4gICAgXCJuc2F0elwiLFxuICAgIFwib21lZ2FcIixcbiAgICBcIm9uY2VcIixcbiAgICBcInBhdHRlcm5cIixcbiAgICBcInBvc2VcIixcbiAgICBcInByb2dyZXNzXCIsXG4gICAgXCJwcm9vZlwiLFxuICAgIFwicHNhdHpcIixcbiAgICBcInF1b3RlXCIsXG4gICAgXCJyZWNvcmRcIixcbiAgICBcInJlZFwiLFxuICAgIFwicmVmaW5lXCIsXG4gICAgXCJyZWZsZXhpdml0eVwiLFxuICAgIFwicmVtZW1iZXJcIixcbiAgICBcInJlbmFtZVwiLFxuICAgIFwicmVwZWF0XCIsXG4gICAgXCJyZXBsYWNlXCIsXG4gICAgXCJyZXZlcnRcIixcbiAgICBcInJldmdvYWxzXCIsXG4gICAgXCJyZXdyaXRlXCIsXG4gICAgXCJyZXdyaXRlX3N0cmF0XCIsXG4gICAgXCJyaWdodFwiLFxuICAgIFwicmluZ1wiLFxuICAgIFwicmluZ19zaW1wbGlmeVwiLFxuICAgIFwicnRhdXRvXCIsXG4gICAgXCJzZXRcIixcbiAgICBcInNldG9pZF9yZWZsZXhpdml0eVwiLFxuICAgIFwic2V0b2lkX3JlcGxhY2VcIixcbiAgICBcInNldG9pZF9yZXdyaXRlXCIsXG4gICAgXCJzZXRvaWRfc3ltbWV0cnlcIixcbiAgICBcInNldG9pZF90cmFuc2l0aXZpdHlcIixcbiAgICBcInNoZWx2ZVwiLFxuICAgIFwic2hlbHZlX3VuaWZpYWJsZVwiLFxuICAgIFwic2ltcGxcIixcbiAgICBcInNpbXBsZVwiLFxuICAgIFwic2ltcGxpZnlfZXFcIixcbiAgICBcInNvbHZlXCIsXG4gICAgXCJzcGVjaWFsaXplXCIsXG4gICAgXCJzcGxpdFwiLFxuICAgIFwic3BsaXRfUmFic1wiLFxuICAgIFwic3BsaXRfUm11bHRcIixcbiAgICBcInN0ZXBsXCIsXG4gICAgXCJzdGVwclwiLFxuICAgIFwic3Vic3RcIixcbiAgICBcInN1bVwiLFxuICAgIFwic3dhcFwiLFxuICAgIFwic3ltbWV0cnlcIixcbiAgICBcInRhY3RpY1wiLFxuICAgIFwidGF1dG9cIixcbiAgICBcInRpbWVcIixcbiAgICBcInRpbWVvdXRcIixcbiAgICBcInRvcFwiLFxuICAgIFwidHJhbnNpdGl2aXR5XCIsXG4gICAgXCJ0cml2aWFsXCIsXG4gICAgXCJ0cnlcIixcbiAgICBcInRyeWlmXCIsXG4gICAgXCJ1bmZvbGRcIixcbiAgICBcInVuaWZ5XCIsXG4gICAgXCJ1bnRpbFwiLFxuICAgIFwidXNpbmdcIixcbiAgICBcInZtX2NvbXB1dGVcIixcbiAgICBcIndpdGhcIlxuICBdO1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdDb3EnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGJ1aWx0X2luOiBCVUlMVF9JTlNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKFxcXFwqJywgJ1xcXFwqXFxcXCknKSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgYmVnaW46ICdcXFxcfFxcXFxzKicsXG4gICAgICAgIGVuZDogJ1xcXFx3KydcbiAgICAgIH0sXG4gICAgICB7IC8vIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICAgIGJlZ2luOiAvWy09XT4vIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29xO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///584\n')},592:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n\n\n\nvar Schema = __webpack_require__(6415);\n\n\nmodule.exports = new Schema({\n include: [\n __webpack_require__(743)\n ],\n implicit: [\n __webpack_require__(2150),\n __webpack_require__(4991),\n __webpack_require__(6685),\n __webpack_require__(1565)\n ]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR2E7OztBQUdiLGFBQWEsbUJBQU8sQ0FBQyxJQUFXOzs7QUFHaEM7QUFDQTtBQUNBLElBQUksbUJBQU8sQ0FBQyxHQUFZO0FBQ3hCO0FBQ0E7QUFDQSxJQUFJLG1CQUFPLENBQUMsSUFBYztBQUMxQixJQUFJLG1CQUFPLENBQUMsSUFBYztBQUMxQixJQUFJLG1CQUFPLENBQUMsSUFBYTtBQUN6QixJQUFJLG1CQUFPLENBQUMsSUFBZTtBQUMzQjtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vanMteWFtbEAzLjE0LjEvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2pzb24uanM/ZjY3YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTdGFuZGFyZCBZQU1MJ3MgSlNPTiBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDMyMzFcbi8vXG4vLyBOT1RFOiBKUy1ZQU1MIGRvZXMgbm90IHN1cHBvcnQgc2NoZW1hLXNwZWNpZmljIHRhZyByZXNvbHV0aW9uIHJlc3RyaWN0aW9ucy5cbi8vIFNvLCB0aGlzIHNjaGVtYSBpcyBub3Qgc3VjaCBzdHJpY3QgYXMgZGVmaW5lZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy8gSXQgYWxsb3dzIG51bWJlcnMgaW4gYmluYXJ5IG5vdGFpb24sIHVzZSBgTnVsbGAgYW5kIGBOVUxMYCBhcyBgbnVsbGAsIGV0Yy5cblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2ZhaWxzYWZlJylcbiAgXSxcbiAgaW1wbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL251bGwnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2Jvb2wnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2ludCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvZmxvYXQnKVxuICBdXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///592\n")},641:module=>{eval('/*\nLanguage: Ceylon\nAuthor: Lucas Werkmeister \nWebsite: https://ceylon-lang.org\nCategory: system\n*/\n\n/** @type LanguageFn */\nfunction ceylon(hljs) {\n // 2.3. Identifiers and keywords\n const KEYWORDS = [\n "assembly",\n "module",\n "package",\n "import",\n "alias",\n "class",\n "interface",\n "object",\n "given",\n "value",\n "assign",\n "void",\n "function",\n "new",\n "of",\n "extends",\n "satisfies",\n "abstracts",\n "in",\n "out",\n "return",\n "break",\n "continue",\n "throw",\n "assert",\n "dynamic",\n "if",\n "else",\n "switch",\n "case",\n "for",\n "while",\n "try",\n "catch",\n "finally",\n "then",\n "let",\n "this",\n "outer",\n "super",\n "is",\n "exists",\n "nonempty"\n ];\n // 7.4.1 Declaration Modifiers\n const DECLARATION_MODIFIERS = [\n "shared",\n "abstract",\n "formal",\n "default",\n "actual",\n "variable",\n "late",\n "native",\n "deprecated",\n "final",\n "sealed",\n "annotation",\n "suppressWarnings",\n "small"\n ];\n // 7.4.2 Documentation\n const DOCUMENTATION = [\n "doc",\n "by",\n "license",\n "see",\n "throws",\n "tagged"\n ];\n const SUBST = {\n className: \'subst\',\n excludeBegin: true,\n excludeEnd: true,\n begin: /``/,\n end: /``/,\n keywords: KEYWORDS,\n relevance: 10\n };\n const EXPRESSIONS = [\n {\n // verbatim string\n className: \'string\',\n begin: \'"""\',\n end: \'"""\',\n relevance: 10\n },\n {\n // string literal or template\n className: \'string\',\n begin: \'"\',\n end: \'"\',\n contains: [ SUBST ]\n },\n {\n // character literal\n className: \'string\',\n begin: "\'",\n end: "\'"\n },\n {\n // numeric literal\n className: \'number\',\n begin: \'#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?\',\n relevance: 0\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n return {\n name: \'Ceylon\',\n keywords: {\n keyword: KEYWORDS.concat(DECLARATION_MODIFIERS),\n meta: DOCUMENTATION\n },\n illegal: \'\\\\$[^01]|#[^0-9a-fA-F]\',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\'/\\\\*\', \'\\\\*/\', { contains: [ \'self\' ] }),\n {\n // compiler annotation\n className: \'meta\',\n begin: \'@[a-z]\\\\w*(?::"[^"]*")?\'\n }\n ].concat(EXPRESSIONS)\n };\n}\n\nmodule.exports = ceylon;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQxLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxzQkFBc0I7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2V5bG9uLmpzPzAyZDUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBDZXlsb25cbkF1dGhvcjogTHVjYXMgV2Vya21laXN0ZXIgPG1haWxAbHVjYXN3ZXJrbWVpc3Rlci5kZT5cbldlYnNpdGU6IGh0dHBzOi8vY2V5bG9uLWxhbmcub3JnXG5DYXRlZ29yeTogc3lzdGVtXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gY2V5bG9uKGhsanMpIHtcbiAgLy8gMi4zLiBJZGVudGlmaWVycyBhbmQga2V5d29yZHNcbiAgY29uc3QgS0VZV09SRFMgPSBbXG4gICAgXCJhc3NlbWJseVwiLFxuICAgIFwibW9kdWxlXCIsXG4gICAgXCJwYWNrYWdlXCIsXG4gICAgXCJpbXBvcnRcIixcbiAgICBcImFsaWFzXCIsXG4gICAgXCJjbGFzc1wiLFxuICAgIFwiaW50ZXJmYWNlXCIsXG4gICAgXCJvYmplY3RcIixcbiAgICBcImdpdmVuXCIsXG4gICAgXCJ2YWx1ZVwiLFxuICAgIFwiYXNzaWduXCIsXG4gICAgXCJ2b2lkXCIsXG4gICAgXCJmdW5jdGlvblwiLFxuICAgIFwibmV3XCIsXG4gICAgXCJvZlwiLFxuICAgIFwiZXh0ZW5kc1wiLFxuICAgIFwic2F0aXNmaWVzXCIsXG4gICAgXCJhYnN0cmFjdHNcIixcbiAgICBcImluXCIsXG4gICAgXCJvdXRcIixcbiAgICBcInJldHVyblwiLFxuICAgIFwiYnJlYWtcIixcbiAgICBcImNvbnRpbnVlXCIsXG4gICAgXCJ0aHJvd1wiLFxuICAgIFwiYXNzZXJ0XCIsXG4gICAgXCJkeW5hbWljXCIsXG4gICAgXCJpZlwiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwic3dpdGNoXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJmb3JcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJ0cnlcIixcbiAgICBcImNhdGNoXCIsXG4gICAgXCJmaW5hbGx5XCIsXG4gICAgXCJ0aGVuXCIsXG4gICAgXCJsZXRcIixcbiAgICBcInRoaXNcIixcbiAgICBcIm91dGVyXCIsXG4gICAgXCJzdXBlclwiLFxuICAgIFwiaXNcIixcbiAgICBcImV4aXN0c1wiLFxuICAgIFwibm9uZW1wdHlcIlxuICBdO1xuICAvLyA3LjQuMSBEZWNsYXJhdGlvbiBNb2RpZmllcnNcbiAgY29uc3QgREVDTEFSQVRJT05fTU9ESUZJRVJTID0gW1xuICAgIFwic2hhcmVkXCIsXG4gICAgXCJhYnN0cmFjdFwiLFxuICAgIFwiZm9ybWFsXCIsXG4gICAgXCJkZWZhdWx0XCIsXG4gICAgXCJhY3R1YWxcIixcbiAgICBcInZhcmlhYmxlXCIsXG4gICAgXCJsYXRlXCIsXG4gICAgXCJuYXRpdmVcIixcbiAgICBcImRlcHJlY2F0ZWRcIixcbiAgICBcImZpbmFsXCIsXG4gICAgXCJzZWFsZWRcIixcbiAgICBcImFubm90YXRpb25cIixcbiAgICBcInN1cHByZXNzV2FybmluZ3NcIixcbiAgICBcInNtYWxsXCJcbiAgXTtcbiAgLy8gNy40LjIgRG9jdW1lbnRhdGlvblxuICBjb25zdCBET0NVTUVOVEFUSU9OID0gW1xuICAgIFwiZG9jXCIsXG4gICAgXCJieVwiLFxuICAgIFwibGljZW5zZVwiLFxuICAgIFwic2VlXCIsXG4gICAgXCJ0aHJvd3NcIixcbiAgICBcInRhZ2dlZFwiXG4gIF07XG4gIGNvbnN0IFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBiZWdpbjogL2BgLyxcbiAgICBlbmQ6IC9gYC8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfTtcbiAgY29uc3QgRVhQUkVTU0lPTlMgPSBbXG4gICAge1xuICAgICAgLy8gdmVyYmF0aW0gc3RyaW5nXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIlwiXCInLFxuICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIHN0cmluZyBsaXRlcmFsIG9yIHRlbXBsYXRlXG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgYmVnaW46ICdcIicsXG4gICAgICBlbmQ6ICdcIicsXG4gICAgICBjb250YWluczogWyBTVUJTVCBdXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBjaGFyYWN0ZXIgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiBcIidcIixcbiAgICAgIGVuZDogXCInXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIG51bWVyaWMgbGl0ZXJhbFxuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAnI1swLTlhLWZBLUZfXSt8XFxcXCRbMDFfXSt8WzAtOV9dKyg/OlxcXFwuWzAtOV9dKD86W2VFXVsrLV0/XFxcXGQrKT8pP1trTUdUUG11bnBmXT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0NleWxvbicsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLmNvbmNhdChERUNMQVJBVElPTl9NT0RJRklFUlMpLFxuICAgICAgbWV0YTogRE9DVU1FTlRBVElPTlxuICAgIH0sXG4gICAgaWxsZWdhbDogJ1xcXFwkW14wMV18I1teMC05YS1mQS1GXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHsgY29udGFpbnM6IFsgJ3NlbGYnIF0gfSksXG4gICAgICB7XG4gICAgICAgIC8vIGNvbXBpbGVyIGFubm90YXRpb25cbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnQFthLXpdXFxcXHcqKD86OlwiW15cIl0qXCIpPydcbiAgICAgIH1cbiAgICBdLmNvbmNhdChFWFBSRVNTSU9OUylcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjZXlsb247XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///641\n')},642:module=>{eval("/*\nLanguage: ERB (Embedded Ruby)\nRequires: xml.js, ruby.js\nAuthor: Lucas Mazza \nContributors: Kassio Borges \nDescription: \"Bridge\" language defining fragments of Ruby in HTML within <% .. %>\nWebsite: https://ruby-doc.org/stdlib-2.6.5/libdoc/erb/rdoc/ERB.html\nCategory: template\n*/\n\n/** @type LanguageFn */\nfunction erb(hljs) {\n return {\n name: 'ERB',\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('<%#', '%>'),\n {\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n}\n\nmodule.exports = erb;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9lcmIuanM/NzZlOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEVSQiAoRW1iZWRkZWQgUnVieSlcblJlcXVpcmVzOiB4bWwuanMsIHJ1YnkuanNcbkF1dGhvcjogTHVjYXMgTWF6emEgPGx1Y2FzdG1henphQGdtYWlsLmNvbT5cbkNvbnRyaWJ1dG9yczogS2Fzc2lvIEJvcmdlcyA8a2Fzc2lvYm9yZ2VzbUBnbWFpbC5jb20+XG5EZXNjcmlwdGlvbjogXCJCcmlkZ2VcIiBsYW5ndWFnZSBkZWZpbmluZyBmcmFnbWVudHMgb2YgUnVieSBpbiBIVE1MIHdpdGhpbiA8JSAuLiAlPlxuV2Vic2l0ZTogaHR0cHM6Ly9ydWJ5LWRvYy5vcmcvc3RkbGliLTIuNi41L2xpYmRvYy9lcmIvcmRvYy9FUkIuaHRtbFxuQ2F0ZWdvcnk6IHRlbXBsYXRlXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gZXJiKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnRVJCJyxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVCgnPCUjJywgJyU+JyksXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnPCVbJT0tXT8nLFxuICAgICAgICBlbmQ6ICdbJS1dPyU+JyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdydWJ5JyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVyYjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///642\n")},681:module=>{eval('/*\nLanguage: Cap’n Proto\nAuthor: Oleg Efimov \nDescription: Cap’n Proto message definition format\nWebsite: https://capnproto.org/capnp-tool.html\nCategory: protocols\n*/\n\n/** @type LanguageFn */\nfunction capnproto(hljs) {\n const KEYWORDS = [\n "struct",\n "enum",\n "interface",\n "union",\n "group",\n "import",\n "using",\n "const",\n "annotation",\n "extends",\n "in",\n "of",\n "on",\n "as",\n "with",\n "from",\n "fixed"\n ];\n const TYPES = [\n "Void",\n "Bool",\n "Int8",\n "Int16",\n "Int32",\n "Int64",\n "UInt8",\n "UInt16",\n "UInt32",\n "UInt64",\n "Float32",\n "Float64",\n "Text",\n "Data",\n "AnyPointer",\n "AnyStruct",\n "Capability",\n "List"\n ];\n const LITERALS = [\n "true",\n "false"\n ];\n const CLASS_DEFINITION = {\n variants: [\n { match: [\n /(struct|enum|interface)/,\n /\\s+/,\n hljs.IDENT_RE\n ] },\n { match: [\n /extends/,\n /\\s*\\(/,\n hljs.IDENT_RE,\n /\\s*\\)/\n ] }\n ],\n scope: {\n 1: "keyword",\n 3: "title.class"\n }\n };\n return {\n name: \'Cap’n Proto\',\n aliases: [ \'capnp\' ],\n keywords: {\n keyword: KEYWORDS,\n type: TYPES,\n literal: LITERALS\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n {\n className: \'meta\',\n begin: /@0x[\\w\\d]{16};/,\n illegal: /\\n/\n },\n {\n className: \'symbol\',\n begin: /@\\d+\\b/\n },\n CLASS_DEFINITION\n ]\n };\n}\n\nmodule.exports = capnproto;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjgxLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLElBQUk7QUFDOUI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jYXBucHJvdG8uanM/MWQyZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IENhcOKAmW4gUHJvdG9cbkF1dGhvcjogT2xlZyBFZmltb3YgPGVmaW1vdm92QGdtYWlsLmNvbT5cbkRlc2NyaXB0aW9uOiBDYXDigJluIFByb3RvIG1lc3NhZ2UgZGVmaW5pdGlvbiBmb3JtYXRcbldlYnNpdGU6IGh0dHBzOi8vY2FwbnByb3RvLm9yZy9jYXBucC10b29sLmh0bWxcbkNhdGVnb3J5OiBwcm90b2NvbHNcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjYXBucHJvdG8oaGxqcykge1xuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICBcInN0cnVjdFwiLFxuICAgIFwiZW51bVwiLFxuICAgIFwiaW50ZXJmYWNlXCIsXG4gICAgXCJ1bmlvblwiLFxuICAgIFwiZ3JvdXBcIixcbiAgICBcImltcG9ydFwiLFxuICAgIFwidXNpbmdcIixcbiAgICBcImNvbnN0XCIsXG4gICAgXCJhbm5vdGF0aW9uXCIsXG4gICAgXCJleHRlbmRzXCIsXG4gICAgXCJpblwiLFxuICAgIFwib2ZcIixcbiAgICBcIm9uXCIsXG4gICAgXCJhc1wiLFxuICAgIFwid2l0aFwiLFxuICAgIFwiZnJvbVwiLFxuICAgIFwiZml4ZWRcIlxuICBdO1xuICBjb25zdCBUWVBFUyA9IFtcbiAgICBcIlZvaWRcIixcbiAgICBcIkJvb2xcIixcbiAgICBcIkludDhcIixcbiAgICBcIkludDE2XCIsXG4gICAgXCJJbnQzMlwiLFxuICAgIFwiSW50NjRcIixcbiAgICBcIlVJbnQ4XCIsXG4gICAgXCJVSW50MTZcIixcbiAgICBcIlVJbnQzMlwiLFxuICAgIFwiVUludDY0XCIsXG4gICAgXCJGbG9hdDMyXCIsXG4gICAgXCJGbG9hdDY0XCIsXG4gICAgXCJUZXh0XCIsXG4gICAgXCJEYXRhXCIsXG4gICAgXCJBbnlQb2ludGVyXCIsXG4gICAgXCJBbnlTdHJ1Y3RcIixcbiAgICBcIkNhcGFiaWxpdHlcIixcbiAgICBcIkxpc3RcIlxuICBdO1xuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICBcInRydWVcIixcbiAgICBcImZhbHNlXCJcbiAgXTtcbiAgY29uc3QgQ0xBU1NfREVGSU5JVElPTiA9IHtcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBtYXRjaDogW1xuICAgICAgICAvKHN0cnVjdHxlbnVtfGludGVyZmFjZSkvLFxuICAgICAgICAvXFxzKy8sXG4gICAgICAgIGhsanMuSURFTlRfUkVcbiAgICAgIF0gfSxcbiAgICAgIHsgbWF0Y2g6IFtcbiAgICAgICAgL2V4dGVuZHMvLFxuICAgICAgICAvXFxzKlxcKC8sXG4gICAgICAgIGhsanMuSURFTlRfUkUsXG4gICAgICAgIC9cXHMqXFwpL1xuICAgICAgXSB9XG4gICAgXSxcbiAgICBzY29wZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcInRpdGxlLmNsYXNzXCJcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0NhcOKAmW4gUHJvdG8nLFxuICAgIGFsaWFzZXM6IFsgJ2NhcG5wJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIHR5cGU6IFRZUEVTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL0AweFtcXHdcXGRdezE2fTsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46IC9AXFxkK1xcYi9cbiAgICAgIH0sXG4gICAgICBDTEFTU19ERUZJTklUSU9OXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhcG5wcm90bztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///681\n')},699:module=>{eval('/*\nLanguage: Dockerfile\nRequires: bash.js\nAuthor: Alexis Hénaut \nDescription: language definition for Dockerfile files\nWebsite: https://docs.docker.com/engine/reference/builder/\nCategory: config\n*/\n\n/** @type LanguageFn */\nfunction dockerfile(hljs) {\n const KEYWORDS = [\n "from",\n "maintainer",\n "expose",\n "env",\n "arg",\n "user",\n "onbuild",\n "stopsignal"\n ];\n return {\n name: \'Dockerfile\',\n aliases: [ \'docker\' ],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n beginKeywords: \'run cmd entrypoint volume add copy workdir label healthcheck shell\',\n starts: {\n end: /[^\\\\]$/,\n subLanguage: \'bash\'\n }\n }\n ],\n illegal: \'{"use strict";eval("// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n\n\n\nvar Schema = __webpack_require__(6415);\n\n\nmodule.exports = new Schema({\n explicit: [\n __webpack_require__(8756),\n __webpack_require__(9396),\n __webpack_require__(393)\n ]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUdhOzs7QUFHYixhQUFhLG1CQUFPLENBQUMsSUFBVzs7O0FBR2hDO0FBQ0E7QUFDQSxJQUFJLG1CQUFPLENBQUMsSUFBYTtBQUN6QixJQUFJLG1CQUFPLENBQUMsSUFBYTtBQUN6QixJQUFJLG1CQUFPLENBQUMsR0FBYTtBQUN6QjtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vanMteWFtbEAzLjE0LjEvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlLmpzPzNhMjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhbmRhcmQgWUFNTCdzIEZhaWxzYWZlIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMjM0NlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL3N0cicpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvc2VxJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9tYXAnKVxuICBdXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///743\n")},867:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar stringifyNumber = __webpack_require__(1232);\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODY3LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLHNCQUFzQixtQkFBTyxDQUFDLElBQW9DOztBQUVsRTtBQUNBLDBDQUEwQyxhQUFhO0FBQ3ZEO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXO0FBQ1gsY0FBYztBQUNkLGNBQWMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L3NjaGVtYS9jb3JlL2ludC5qcz9iMWQzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHN0cmluZ2lmeU51bWJlciA9IHJlcXVpcmUoJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanMnKTtcblxuY29uc3QgaW50SWRlbnRpZnkgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG5jb25zdCBpbnRSZXNvbHZlID0gKHN0ciwgb2Zmc2V0LCByYWRpeCwgeyBpbnRBc0JpZ0ludCB9KSA9PiAoaW50QXNCaWdJbnQgPyBCaWdJbnQoc3RyKSA6IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcob2Zmc2V0KSwgcmFkaXgpKTtcbmZ1bmN0aW9uIGludFN0cmluZ2lmeShub2RlLCByYWRpeCwgcHJlZml4KSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gbm9kZTtcbiAgICBpZiAoaW50SWRlbnRpZnkodmFsdWUpICYmIHZhbHVlID49IDApXG4gICAgICAgIHJldHVybiBwcmVmaXggKyB2YWx1ZS50b1N0cmluZyhyYWRpeCk7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlci5zdHJpbmdpZnlOdW1iZXIobm9kZSk7XG59XG5jb25zdCBpbnRPY3QgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IGludElkZW50aWZ5KHZhbHVlKSAmJiB2YWx1ZSA+PSAwLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdPQ1QnLFxuICAgIHRlc3Q6IC9eMG9bMC03XSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgOCwgb3B0KSxcbiAgICBzdHJpbmdpZnk6IG5vZGUgPT4gaW50U3RyaW5naWZ5KG5vZGUsIDgsICcwbycpXG59O1xuY29uc3QgaW50ID0ge1xuICAgIGlkZW50aWZ5OiBpbnRJZGVudGlmeSxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgdGVzdDogL15bLStdP1swLTldKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAwLCAxMCwgb3B0KSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeU51bWJlci5zdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBpbnRIZXggPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IGludElkZW50aWZ5KHZhbHVlKSAmJiB2YWx1ZSA+PSAwLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdIRVgnLFxuICAgIHRlc3Q6IC9eMHhbMC05YS1mQS1GXSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgMTYsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgJzB4Jylcbn07XG5cbmV4cG9ydHMuaW50ID0gaW50O1xuZXhwb3J0cy5pbnRIZXggPSBpbnRIZXg7XG5leHBvcnRzLmludE9jdCA9IGludE9jdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///867\n")},880:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar stringifyNumber = __webpack_require__(1232);\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODgwLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLHNCQUFzQixtQkFBTyxDQUFDLElBQW9DOztBQUVsRTtBQUNBLDBDQUEwQyxhQUFhO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLElBQUk7QUFDL0I7QUFDQTtBQUNBLDJCQUEyQixJQUFJO0FBQy9CO0FBQ0E7QUFDQSwyQkFBMkIsSUFBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXO0FBQ1gsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9zY2hlbWEveWFtbC0xLjEvaW50LmpzPzM2OGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3RyaW5naWZ5TnVtYmVyID0gcmVxdWlyZSgnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcycpO1xuXG5jb25zdCBpbnRJZGVudGlmeSA9ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyB8fCBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKTtcbmZ1bmN0aW9uIGludFJlc29sdmUoc3RyLCBvZmZzZXQsIHJhZGl4LCB7IGludEFzQmlnSW50IH0pIHtcbiAgICBjb25zdCBzaWduID0gc3RyWzBdO1xuICAgIGlmIChzaWduID09PSAnLScgfHwgc2lnbiA9PT0gJysnKVxuICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKG9mZnNldCkucmVwbGFjZSgvXy9nLCAnJyk7XG4gICAgaWYgKGludEFzQmlnSW50KSB7XG4gICAgICAgIHN3aXRjaCAocmFkaXgpIHtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMGIke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIHN0ciA9IGAwbyR7c3RyfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgIHN0ciA9IGAweCR7c3RyfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IEJpZ0ludChzdHIpO1xuICAgICAgICByZXR1cm4gc2lnbiA9PT0gJy0nID8gQmlnSW50KC0xKSAqIG4gOiBuO1xuICAgIH1cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoc3RyLCByYWRpeCk7XG4gICAgcmV0dXJuIHNpZ24gPT09ICctJyA/IC0xICogbiA6IG47XG59XG5mdW5jdGlvbiBpbnRTdHJpbmdpZnkobm9kZSwgcmFkaXgsIHByZWZpeCkge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IG5vZGU7XG4gICAgaWYgKGludElkZW50aWZ5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBzdHIgPSB2YWx1ZS50b1N0cmluZyhyYWRpeCk7XG4gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyAnLScgKyBwcmVmaXggKyBzdHIuc3Vic3RyKDEpIDogcHJlZml4ICsgc3RyO1xuICAgIH1cbiAgICByZXR1cm4gc3RyaW5naWZ5TnVtYmVyLnN0cmluZ2lmeU51bWJlcihub2RlKTtcbn1cbmNvbnN0IGludEJpbiA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ0JJTicsXG4gICAgdGVzdDogL15bLStdPzBiWzAtMV9dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAyLCAyLCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMiwgJzBiJylcbn07XG5jb25zdCBpbnRPY3QgPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdPQ1QnLFxuICAgIHRlc3Q6IC9eWy0rXT8wWzAtN19dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAxLCA4LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgOCwgJzAnKVxufTtcbmNvbnN0IGludCA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSokLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMCwgMTAsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXIuc3RyaW5naWZ5TnVtYmVyXG59O1xuY29uc3QgaW50SGV4ID0ge1xuICAgIGlkZW50aWZ5OiBpbnRJZGVudGlmeSxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgZm9ybWF0OiAnSEVYJyxcbiAgICB0ZXN0OiAvXlstK10/MHhbMC05YS1mQS1GX10rJC8sXG4gICAgcmVzb2x2ZTogKHN0ciwgX29uRXJyb3IsIG9wdCkgPT4gaW50UmVzb2x2ZShzdHIsIDIsIDE2LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMTYsICcweCcpXG59O1xuXG5leHBvcnRzLmludCA9IGludDtcbmV4cG9ydHMuaW50QmluID0gaW50QmluO1xuZXhwb3J0cy5pbnRIZXggPSBpbnRIZXg7XG5leHBvcnRzLmludE9jdCA9IGludE9jdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///880\n")},963:module=>{eval("/*\n Language: Zephir\n Description: Zephir, an open source, high-level language designed to ease the creation and maintainability of extensions for PHP with a focus on type and memory safety.\n Author: Oleg Efimov \n Website: https://zephir-lang.com/en\n Category: web\n Audit: 2020\n */\n\n/** @type LanguageFn */\nfunction zephir(hljs) {\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null })\n ]\n };\n const TITLE_MODE = hljs.UNDERSCORE_TITLE_MODE;\n const NUMBER = { variants: [\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ] };\n const KEYWORDS =\n // classes and objects\n 'namespace class interface use extends '\n + 'function return '\n + 'abstract final public protected private static deprecated '\n // error handling\n + 'throw try catch Exception '\n // keyword-ish things their website does NOT seem to highlight (in their own snippets)\n // 'typeof fetch in ' +\n // operators/helpers\n + 'echo empty isset instanceof unset '\n // assignment/variables\n + 'let var new const self '\n // control\n + 'require '\n + 'if else elseif switch case default '\n + 'do while loop for continue break '\n + 'likely unlikely '\n // magic constants\n // https://github.com/phalcon/zephir/blob/master/Library/Expression/Constants.php\n + '__LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ '\n // types - https://docs.zephir-lang.com/0.12/en/types\n + 'array boolean float double integer object resource string '\n + 'char long unsigned bool int uint ulong uchar '\n // built-ins\n + 'true false null undefined';\n\n return {\n name: 'Zephir',\n aliases: [ 'zep' ],\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\/\\*/,\n /\\*\\//,\n { contains: [\n {\n className: 'doctag',\n begin: /@[A-Za-z]+/\n }\n ] }\n ),\n {\n className: 'string',\n begin: /<<<['\"]?\\w+['\"]?$/,\n end: /^\\w+;/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/ },\n {\n className: 'function',\n beginKeywords: 'function fn',\n end: /[;{]/,\n excludeEnd: true,\n illegal: /\\$|\\[|%/,\n contains: [\n TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /\\{/,\n excludeEnd: true,\n illegal: /[:($\"]/,\n contains: [\n { beginKeywords: 'extends implements' },\n TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n end: /;/,\n illegal: /[.']/,\n contains: [ TITLE_MODE ]\n },\n {\n beginKeywords: 'use',\n end: /;/,\n contains: [ TITLE_MODE ]\n },\n { begin: /=>/ // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n}\n\nmodule.exports = zephir;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGVBQWU7QUFDM0QsNkNBQTZDLGVBQWU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUVBQW1FO0FBQ25FO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFDQUFxQztBQUNqRDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsT0FBTztBQUNQLFFBQVE7QUFDUixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvemVwaGlyLmpzPzI5MmEiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiBMYW5ndWFnZTogWmVwaGlyXG4gRGVzY3JpcHRpb246IFplcGhpciwgYW4gb3BlbiBzb3VyY2UsIGhpZ2gtbGV2ZWwgbGFuZ3VhZ2UgZGVzaWduZWQgdG8gZWFzZSB0aGUgY3JlYXRpb24gYW5kIG1haW50YWluYWJpbGl0eSBvZiBleHRlbnNpb25zIGZvciBQSFAgd2l0aCBhIGZvY3VzIG9uIHR5cGUgYW5kIG1lbW9yeSBzYWZldHkuXG4gQXV0aG9yOiBPbGVnIEVmaW1vdiA8ZWZpbW92b3ZAZ21haWwuY29tPlxuIFdlYnNpdGU6IGh0dHBzOi8vemVwaGlyLWxhbmcuY29tL2VuXG4gQ2F0ZWdvcnk6IHdlYlxuIEF1ZGl0OiAyMDIwXG4gKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIHplcGhpcihobGpzKSB7XG4gIGNvbnN0IFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSBdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7IGlsbGVnYWw6IG51bGwgfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgeyBpbGxlZ2FsOiBudWxsIH0pXG4gICAgXVxuICB9O1xuICBjb25zdCBUSVRMRV9NT0RFID0gaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREU7XG4gIGNvbnN0IE5VTUJFUiA9IHsgdmFyaWFudHM6IFtcbiAgICBobGpzLkJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgXSB9O1xuICBjb25zdCBLRVlXT1JEUyA9XG4gICAgLy8gY2xhc3NlcyBhbmQgb2JqZWN0c1xuICAgICduYW1lc3BhY2UgY2xhc3MgaW50ZXJmYWNlIHVzZSBleHRlbmRzICdcbiAgICArICdmdW5jdGlvbiByZXR1cm4gJ1xuICAgICsgJ2Fic3RyYWN0IGZpbmFsIHB1YmxpYyBwcm90ZWN0ZWQgcHJpdmF0ZSBzdGF0aWMgZGVwcmVjYXRlZCAnXG4gICAgLy8gZXJyb3IgaGFuZGxpbmdcbiAgICArICd0aHJvdyB0cnkgY2F0Y2ggRXhjZXB0aW9uICdcbiAgICAvLyBrZXl3b3JkLWlzaCB0aGluZ3MgdGhlaXIgd2Vic2l0ZSBkb2VzIE5PVCBzZWVtIHRvIGhpZ2hsaWdodCAoaW4gdGhlaXIgb3duIHNuaXBwZXRzKVxuICAgIC8vICd0eXBlb2YgZmV0Y2ggaW4gJyArXG4gICAgLy8gb3BlcmF0b3JzL2hlbHBlcnNcbiAgICArICdlY2hvIGVtcHR5IGlzc2V0IGluc3RhbmNlb2YgdW5zZXQgJ1xuICAgIC8vIGFzc2lnbm1lbnQvdmFyaWFibGVzXG4gICAgKyAnbGV0IHZhciBuZXcgY29uc3Qgc2VsZiAnXG4gICAgLy8gY29udHJvbFxuICAgICsgJ3JlcXVpcmUgJ1xuICAgICsgJ2lmIGVsc2UgZWxzZWlmIHN3aXRjaCBjYXNlIGRlZmF1bHQgJ1xuICAgICsgJ2RvIHdoaWxlIGxvb3AgZm9yIGNvbnRpbnVlIGJyZWFrICdcbiAgICArICdsaWtlbHkgdW5saWtlbHkgJ1xuICAgIC8vIG1hZ2ljIGNvbnN0YW50c1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9waGFsY29uL3plcGhpci9ibG9iL21hc3Rlci9MaWJyYXJ5L0V4cHJlc3Npb24vQ29uc3RhbnRzLnBocFxuICAgICsgJ19fTElORV9fIF9fRklMRV9fIF9fRElSX18gX19GVU5DVElPTl9fIF9fQ0xBU1NfXyBfX1RSQUlUX18gX19NRVRIT0RfXyBfX05BTUVTUEFDRV9fICdcbiAgICAvLyB0eXBlcyAtIGh0dHBzOi8vZG9jcy56ZXBoaXItbGFuZy5jb20vMC4xMi9lbi90eXBlc1xuICAgICsgJ2FycmF5IGJvb2xlYW4gZmxvYXQgZG91YmxlIGludGVnZXIgb2JqZWN0IHJlc291cmNlIHN0cmluZyAnXG4gICAgKyAnY2hhciBsb25nIHVuc2lnbmVkIGJvb2wgaW50IHVpbnQgdWxvbmcgdWNoYXIgJ1xuICAgIC8vIGJ1aWx0LWluc1xuICAgICsgJ3RydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQnO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1plcGhpcicsXG4gICAgYWxpYXNlczogWyAnemVwJyBdLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAvXFwvXFwqLyxcbiAgICAgICAgL1xcKlxcLy8sXG4gICAgICAgIHsgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgYmVnaW46IC9AW0EtWmEtel0rL1xuICAgICAgICAgIH1cbiAgICAgICAgXSB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogLzw8PFsnXCJdP1xcdytbJ1wiXT8kLyxcbiAgICAgICAgZW5kOiAvXlxcdys7LyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHN3YWxsb3cgY29tcG9zZWQgaWRlbnRpZmllcnMgdG8gYXZvaWQgcGFyc2luZyB0aGVtIGFzIGtleXdvcmRzXG4gICAgICAgIGJlZ2luOiAvKDo6fC0+KStbYS16QS1aX1xceDdmLVxceGZmXVthLXpBLVowLTlfXFx4N2YtXFx4ZmZdKi8gfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuY3Rpb24gZm4nLFxuICAgICAgICBlbmQ6IC9bO3tdLyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogL1xcJHxcXFt8JS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVElUTEVfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIGVuZDogL1xcey8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC9bOigkXCJdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGJlZ2luS2V5d29yZHM6ICdleHRlbmRzIGltcGxlbWVudHMnIH0sXG4gICAgICAgICAgVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmFtZXNwYWNlJyxcbiAgICAgICAgZW5kOiAvOy8sXG4gICAgICAgIGlsbGVnYWw6IC9bLiddLyxcbiAgICAgICAgY29udGFpbnM6IFsgVElUTEVfTU9ERSBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAndXNlJyxcbiAgICAgICAgZW5kOiAvOy8sXG4gICAgICAgIGNvbnRhaW5zOiBbIFRJVExFX01PREUgXVxuICAgICAgfSxcbiAgICAgIHsgYmVnaW46IC89Pi8gLy8gTm8gbWFya3VwLCBqdXN0IGEgcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gemVwaGlyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///963\n")},1005:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\nvar Scalar = __webpack_require__(2042);\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwNS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBeUI7QUFDaEQsYUFBYSxtQkFBTyxDQUFDLElBQXVCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUI7QUFDdkIsa0JBQWtCO0FBQ2xCLGFBQWEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L3NjaGVtYS95YW1sLTEuMS9tZXJnZS5qcz81NmExIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnKTtcbnZhciBTY2FsYXIgPSByZXF1aXJlKCcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnKTtcblxuLy8gSWYgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIG1lcmdlIGtleSBpcyBhIHNpbmdsZSBtYXBwaW5nIG5vZGUsIGVhY2ggb2Zcbi8vIGl0cyBrZXkvdmFsdWUgcGFpcnMgaXMgaW5zZXJ0ZWQgaW50byB0aGUgY3VycmVudCBtYXBwaW5nLCB1bmxlc3MgdGhlIGtleVxuLy8gYWxyZWFkeSBleGlzdHMgaW4gaXQuIElmIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lcmdlIGtleSBpcyBhXG4vLyBzZXF1ZW5jZSwgdGhlbiB0aGlzIHNlcXVlbmNlIGlzIGV4cGVjdGVkIHRvIGNvbnRhaW4gbWFwcGluZyBub2RlcyBhbmQgZWFjaFxuLy8gb2YgdGhlc2Ugbm9kZXMgaXMgbWVyZ2VkIGluIHR1cm4gYWNjb3JkaW5nIHRvIGl0cyBvcmRlciBpbiB0aGUgc2VxdWVuY2UuXG4vLyBLZXlzIGluIG1hcHBpbmcgbm9kZXMgZWFybGllciBpbiB0aGUgc2VxdWVuY2Ugb3ZlcnJpZGUga2V5cyBzcGVjaWZpZWQgaW5cbi8vIGxhdGVyIG1hcHBpbmcgbm9kZXMuIC0tIGh0dHA6Ly95YW1sLm9yZy90eXBlL21lcmdlLmh0bWxcbmNvbnN0IE1FUkdFX0tFWSA9ICc8PCc7XG5jb25zdCBtZXJnZSA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgPT09IE1FUkdFX0tFWSB8fFxuICAgICAgICAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJyAmJiB2YWx1ZS5kZXNjcmlwdGlvbiA9PT0gTUVSR0VfS0VZKSxcbiAgICBkZWZhdWx0OiAna2V5JyxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScsXG4gICAgdGVzdDogL148PCQvLFxuICAgIHJlc29sdmU6ICgpID0+IE9iamVjdC5hc3NpZ24obmV3IFNjYWxhci5TY2FsYXIoU3ltYm9sKE1FUkdFX0tFWSkpLCB7XG4gICAgICAgIGFkZFRvSlNNYXA6IGFkZE1lcmdlVG9KU01hcFxuICAgIH0pLFxuICAgIHN0cmluZ2lmeTogKCkgPT4gTUVSR0VfS0VZXG59O1xuY29uc3QgaXNNZXJnZUtleSA9IChjdHgsIGtleSkgPT4gKG1lcmdlLmlkZW50aWZ5KGtleSkgfHxcbiAgICAoaWRlbnRpdHkuaXNTY2FsYXIoa2V5KSAmJlxuICAgICAgICAoIWtleS50eXBlIHx8IGtleS50eXBlID09PSBTY2FsYXIuU2NhbGFyLlBMQUlOKSAmJlxuICAgICAgICBtZXJnZS5pZGVudGlmeShrZXkudmFsdWUpKSkgJiZcbiAgICBjdHg/LmRvYy5zY2hlbWEudGFncy5zb21lKHRhZyA9PiB0YWcudGFnID09PSBtZXJnZS50YWcgJiYgdGFnLmRlZmF1bHQpO1xuZnVuY3Rpb24gYWRkTWVyZ2VUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIHZhbHVlID0gY3R4ICYmIGlkZW50aXR5LmlzQWxpYXModmFsdWUpID8gdmFsdWUucmVzb2x2ZShjdHguZG9jKSA6IHZhbHVlO1xuICAgIGlmIChpZGVudGl0eS5pc1NlcSh2YWx1ZSkpXG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgdmFsdWUuaXRlbXMpXG4gICAgICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCBpdCk7XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgdmFsdWUpXG4gICAgICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCBpdCk7XG4gICAgZWxzZVxuICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBtZXJnZVZhbHVlKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IGN0eCAmJiBpZGVudGl0eS5pc0FsaWFzKHZhbHVlKSA/IHZhbHVlLnJlc29sdmUoY3R4LmRvYykgOiB2YWx1ZTtcbiAgICBpZiAoIWlkZW50aXR5LmlzTWFwKHNvdXJjZSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXMnKTtcbiAgICBjb25zdCBzcmNNYXAgPSBzb3VyY2UudG9KU09OKG51bGwsIGN0eCwgTWFwKTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBzcmNNYXApIHtcbiAgICAgICAgaWYgKG1hcCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgaWYgKCFtYXAuaGFzKGtleSkpXG4gICAgICAgICAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtYXAgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIG1hcC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1hcCwga2V5LCB7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG59XG5cbmV4cG9ydHMuYWRkTWVyZ2VUb0pTTWFwID0gYWRkTWVyZ2VUb0pTTWFwO1xuZXhwb3J0cy5pc01lcmdlS2V5ID0gaXNNZXJnZUtleTtcbmV4cG9ydHMubWVyZ2UgPSBtZXJnZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1005\n")},1074:module=>{eval("/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '';\n\n/**\n * Determines if a node needs to be wrapped in \n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += ``;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record | Array} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record */\n const emit = {};\n /** @type Record */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record} */\n const languages = Object.create(null);\n /** @type {Record} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3NC5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBLGNBQWMseUNBQXlDO0FBQ3ZELGNBQWMscUNBQXFDO0FBQ25EOztBQUVBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsd0JBQXdCO0FBQ3hCLHdCQUF3QjtBQUN4QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxzQkFBc0I7QUFDakMsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILG9CQUFvQixHQUFHO0FBQ3ZCOztBQUVBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsd0JBQXdCO0FBQ3RDLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsc0JBQXNCO0FBQ3BDLGNBQWMsY0FBYztBQUM1Qjs7QUFFQSxlQUFlLDJEQUEyRDtBQUMxRSxlQUFlLDhCQUE4QjtBQUM3Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0EsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTyxFQUFFLGVBQWU7QUFDakMsa0NBQWtDLEVBQUUsRUFBRSxrQkFBa0I7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPLEVBQUUsS0FBSztBQUMxQjs7QUFFQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkIsY0FBYyxzQkFBc0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDBCQUEwQjtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLG1DQUFtQyxVQUFVO0FBQzdDO0FBQ0E7O0FBRUEsZUFBZSxxREFBcUQsVUFBVTtBQUM5RSxlQUFlLHVEQUF1RDtBQUN0RSxjQUFjLGdDQUFnQztBQUM5Qzs7QUFFQSxjQUFjLFVBQVU7QUFDeEIsMEJBQTBCO0FBQzFCO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGVBQWU7O0FBRWYsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBLDJCQUEyQixPQUFPO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLHFDQUFxQztBQUNyRCxhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLFVBQVU7QUFDdkIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUEsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLFdBQVcsaUJBQWlCO0FBQ3pDLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxLQUFLOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYTtBQUNiOztBQUVBO0FBQ0EsV0FBVyxrQkFBa0I7QUFDN0IsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHVCQUF1QjtBQUNsQyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksa0NBQWtDO0FBQzlDLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IscUJBQXFCOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsb0VBQW9FO0FBQy9FLGFBQWE7QUFDYjtBQUNBO0FBQ0EsY0FBYyxVQUFVLHNCQUFzQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLGlCQUFpQjtBQUM1QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxxQkFBcUI7QUFDaEMsWUFBWSxtQkFBbUI7QUFDL0IsYUFBYTtBQUNiO0FBQ0EsMkNBQTJDLFVBQVU7QUFDckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxnQkFBZ0IsR0FBRztBQUN0Qjs7QUFFQSxjQUFjLDZCQUE2QjtBQUMzQyxjQUFjLHFDQUFxQzs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhGQUE4RjtBQUM5Rix5Q0FBeUM7QUFDekMsK0VBQStFLHNEQUFzRDs7QUFFckk7QUFDQSxXQUFXLGlCQUFpQiw0QkFBNEI7QUFDeEQ7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCLFdBQVcsaUJBQWlCO0FBQzVCLFdBQVcsV0FBVztBQUN0QixhQUFhO0FBQ2I7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLEdBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLEdBQUcsa0VBQWtFLEVBQUU7QUFDL0c7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixjQUFjO0FBQy9CLGlDQUFpQywrQkFBK0I7QUFDaEUsaUJBQWlCLGNBQWM7QUFDL0IsK0JBQStCO0FBQy9CLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFVBQVUseUNBQXlDO0FBQ25ELFVBQVUsb0NBQW9DO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrQkFBa0I7QUFDN0IsV0FBVyxrQkFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDO0FBQ3ZDLHVDQUF1QyxtQkFBbUI7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0JBQWtCO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5REFBeUQ7QUFDcEUsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQSxhQUFhLDRDQUE0QztBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsZUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLEtBQUs7QUFDaEI7QUFDQTtBQUNBLHVCQUF1QixRQUFRO0FBQy9COztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0EsMEJBQTBCLFFBQVEsR0FBRyxRQUFROztBQUU3QyxrQ0FBa0MsUUFBUSxJQUFJLFFBQVE7QUFDdEQsc0JBQXNCLFFBQVEsR0FBRyxRQUFRO0FBQ3pDOztBQUVBOztBQUVBO0FBQ0EsVUFBVSxxQ0FBcUM7QUFDL0M7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLHdCQUF3QjtBQUNuQyxZQUFZLCtCQUErQjtBQUMzQztBQUNBLDBDQUEwQyxLQUFLO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IscUJBQXFCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZFQUE2RTtBQUM3RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxtQkFBbUI7QUFDekQsb0RBQW9ELGNBQWM7QUFDbEU7O0FBRUE7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUVBQXVFO0FBQ3ZFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLGlCQUFpQjtBQUNyRCxnREFBZ0QsY0FBYztBQUM5RDs7QUFFQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBLFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLHNCQUFzQjtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLDZCQUE2QjtBQUN2QyxVQUFVLHFDQUFxQztBQUMvQyxVQUFVLGlDQUFpQztBQUMzQyxVQUFVLG1DQUFtQztBQUM3QyxVQUFVLHlDQUF5QztBQUNuRDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsZUFBZTtBQUNuRjtBQUNBOztBQUVBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxPQUFPO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUEsMkRBQTJELDJCQUEyQjs7QUFFdEY7QUFDQSx1Q0FBdUMsYUFBYTtBQUNwRDtBQUNBO0FBQ0EsaUNBQWlDLGlCQUFpQjtBQUNsRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQixhQUFhLHFCQUFxQjtBQUNsQyxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsaUJBQWlCO0FBQzNFOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0NBQXdDLDRDQUE0Qzs7QUFFcEY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVFQUF1RTs7QUFFdkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0JBQWdCO0FBQy9DLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixxREFBcUQ7QUFDbEY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0EsVUFBVSw2QkFBNkI7QUFDdkMsVUFBVSxxQ0FBcUM7QUFDL0MsVUFBVSxzQ0FBc0M7QUFDaEQsVUFBVSxpQ0FBaUM7QUFDM0MsVUFBVSxnQ0FBZ0M7QUFDMUMsVUFBVSxtQ0FBbUM7QUFDN0MsVUFBVSxvQ0FBb0M7QUFDOUMsVUFBVSxvQ0FBb0M7QUFDOUMsVUFBVSxtQ0FBbUM7QUFDN0MsVUFBVSwrQ0FBK0M7QUFDekQsVUFBVSwrQ0FBK0M7QUFDekQsVUFBVSwwQ0FBMEM7QUFDcEQsVUFBVSw0Q0FBNEM7QUFDdEQsVUFBVSw4Q0FBOEM7QUFDeEQsVUFBVSwrQ0FBK0M7QUFDekQsVUFBVSw0Q0FBNEM7QUFDdEQsVUFBVSx5Q0FBeUM7QUFDbkQsVUFBVSx3Q0FBd0M7QUFDbEQ7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhLDBCQUEwQjtBQUN2QztBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDO0FBQ0EsYUFBYSxjQUFjO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCxhQUFhLFVBQVU7QUFDdkIsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFCQUFxQjtBQUMzQztBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLDJCQUEyQjtBQUN4QyxhQUFhLFNBQVM7QUFDdEI7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQyxnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsY0FBYztBQUM5QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QyxlQUFlLHdCQUF3QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCLGFBQWEsZUFBZTtBQUM1QixlQUFlLGlCQUFpQjtBQUNoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsY0FBYztBQUM3QixlQUFlLFFBQVE7QUFDdkIsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGNBQWM7QUFDbEUsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxlQUFlO0FBQzlCLGVBQWUsa0JBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsS0FBSztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsY0FBYztBQUM3QixlQUFlLGtCQUFrQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQyxVQUFVLGNBQWM7QUFDMUQ7QUFDQTs7QUFFQTtBQUNBLGVBQWUsZUFBZTtBQUM5QixlQUFlLGtCQUFrQjtBQUNqQyxlQUFlLFFBQVE7QUFDdkIsaUJBQWlCLHFCQUFxQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxlQUFlO0FBQzlCLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0JBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4QixzQkFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixpREFBaUQ7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsZUFBZTtBQUM5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdCQUFnQjtBQUNyQyx3REFBd0QsYUFBYTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLFFBQVE7QUFDcEIsWUFBWSxlQUFlO0FBQzNCLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQSxlQUFlLHFCQUFxQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxhQUFhO0FBQzFCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDLFNBQVM7QUFDL0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLFFBQVEsdUJBQXVCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnREFBZ0QsZ0NBQWdDOztBQUVoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLDJCQUEyQjtBQUNoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHNCQUFzQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTix3Q0FBd0MsdUNBQXVDO0FBQy9FO0FBQ0Esd0JBQXdCLGlCQUFpQixPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDLGNBQWM7QUFDcEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QixjQUFjLHVCQUF1QjtBQUNyQztBQUNBLHdDQUF3QyxjQUFjO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw4Q0FBOEM7QUFDL0U7O0FBRUE7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsZ0JBQWdCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixnQkFBZ0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsWUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxhQUFhO0FBQzFCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxnQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2NvcmUuanM/OWZlNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1tdWx0aS1hc3NpZ24gKi9cblxuZnVuY3Rpb24gZGVlcEZyZWV6ZShvYmopIHtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIE1hcCkge1xuICAgIG9iai5jbGVhciA9XG4gICAgICBvYmouZGVsZXRlID1cbiAgICAgIG9iai5zZXQgPVxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtYXAgaXMgcmVhZC1vbmx5Jyk7XG4gICAgICAgIH07XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgb2JqLmFkZCA9XG4gICAgICBvYmouY2xlYXIgPVxuICAgICAgb2JqLmRlbGV0ZSA9XG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldCBpcyByZWFkLW9ubHknKTtcbiAgICAgICAgfTtcbiAgfVxuXG4gIC8vIEZyZWV6ZSBzZWxmXG4gIE9iamVjdC5mcmVlemUob2JqKTtcblxuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICBjb25zdCBwcm9wID0gb2JqW25hbWVdO1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgcHJvcDtcblxuICAgIC8vIEZyZWV6ZSBwcm9wIGlmIGl0IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiBhbmQgYWxzbyBub3QgYWxyZWFkeSBmcm96ZW5cbiAgICBpZiAoKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpICYmICFPYmplY3QuaXNGcm96ZW4ocHJvcCkpIHtcbiAgICAgIGRlZXBGcmVlemUocHJvcCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gb2JqO1xufVxuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ2FsbGJhY2tSZXNwb25zZX0gQ2FsbGJhY2tSZXNwb25zZSAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNvbXBpbGVkTW9kZX0gQ29tcGlsZWRNb2RlICovXG4vKiogQGltcGxlbWVudHMgQ2FsbGJhY2tSZXNwb25zZSAqL1xuXG5jbGFzcyBSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICAgKi9cbiAgY29uc3RydWN0b3IobW9kZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgICBpZiAobW9kZS5kYXRhID09PSB1bmRlZmluZWQpIG1vZGUuZGF0YSA9IHt9O1xuXG4gICAgdGhpcy5kYXRhID0gbW9kZS5kYXRhO1xuICAgIHRoaXMuaXNNYXRjaElnbm9yZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlnbm9yZU1hdGNoKCkge1xuICAgIHRoaXMuaXNNYXRjaElnbm9yZWQgPSB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVIVE1MKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZVxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgLnJlcGxhY2UoLycvZywgJyYjeDI3OycpO1xufVxuXG4vKipcbiAqIHBlcmZvcm1zIGEgc2hhbGxvdyBtZXJnZSBvZiBtdWx0aXBsZSBvYmplY3RzIGludG8gb25lXG4gKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7VH0gb3JpZ2luYWxcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZyxhbnk+W119IG9iamVjdHNcbiAqIEByZXR1cm5zIHtUfSBhIHNpbmdsZSBuZXcgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGluaGVyaXQkMShvcmlnaW5hbCwgLi4ub2JqZWN0cykge1xuICAvKiogQHR5cGUgUmVjb3JkPHN0cmluZyxhbnk+ICovXG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gb3JpZ2luYWwpIHtcbiAgICByZXN1bHRba2V5XSA9IG9yaWdpbmFsW2tleV07XG4gIH1cbiAgb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKG9iaikge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gLyoqIEB0eXBlIHtUfSAqLyAocmVzdWx0KTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBSZW5kZXJlclxuICogQHByb3BlcnR5IHsodGV4dDogc3RyaW5nKSA9PiB2b2lkfSBhZGRUZXh0XG4gKiBAcHJvcGVydHkgeyhub2RlOiBOb2RlKSA9PiB2b2lkfSBvcGVuTm9kZVxuICogQHByb3BlcnR5IHsobm9kZTogTm9kZSkgPT4gdm9pZH0gY2xvc2VOb2RlXG4gKiBAcHJvcGVydHkgeygpID0+IHN0cmluZ30gdmFsdWVcbiAqL1xuXG4vKiogQHR5cGVkZWYge3tzY29wZT86IHN0cmluZywgbGFuZ3VhZ2U/OiBzdHJpbmcsIHN1Ymxhbmd1YWdlPzogYm9vbGVhbn19IE5vZGUgKi9cbi8qKiBAdHlwZWRlZiB7e3dhbGs6IChyOiBSZW5kZXJlcikgPT4gdm9pZH19IFRyZWUgKi9cbi8qKiAqL1xuXG5jb25zdCBTUEFOX0NMT1NFID0gJzwvc3Bhbj4nO1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBub2RlIG5lZWRzIHRvIGJlIHdyYXBwZWQgaW4gPHNwYW4+XG4gKlxuICogQHBhcmFtIHtOb2RlfSBub2RlICovXG5jb25zdCBlbWl0c1dyYXBwaW5nVGFncyA9IChub2RlKSA9PiB7XG4gIC8vIHJhcmVseSB3ZSBjYW4gaGF2ZSBhIHN1Ymxhbmd1YWdlIHdoZXJlIGxhbmd1YWdlIGlzIHVuZGVmaW5lZFxuICAvLyBUT0RPOiB0cmFjayBkb3duIHdoeVxuICByZXR1cm4gISFub2RlLnNjb3BlO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7e3ByZWZpeDpzdHJpbmd9fSBvcHRpb25zXG4gKi9cbmNvbnN0IHNjb3BlVG9DU1NDbGFzcyA9IChuYW1lLCB7IHByZWZpeCB9KSA9PiB7XG4gIC8vIHN1Yi1sYW5ndWFnZVxuICBpZiAobmFtZS5zdGFydHNXaXRoKFwibGFuZ3VhZ2U6XCIpKSB7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZShcImxhbmd1YWdlOlwiLCBcImxhbmd1YWdlLVwiKTtcbiAgfVxuICAvLyB0aWVyZWQgc2NvcGU6IGNvbW1lbnQubGluZVxuICBpZiAobmFtZS5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICBjb25zdCBwaWVjZXMgPSBuYW1lLnNwbGl0KFwiLlwiKTtcbiAgICByZXR1cm4gW1xuICAgICAgYCR7cHJlZml4fSR7cGllY2VzLnNoaWZ0KCl9YCxcbiAgICAgIC4uLihwaWVjZXMubWFwKCh4LCBpKSA9PiBgJHt4fSR7XCJfXCIucmVwZWF0KGkgKyAxKX1gKSlcbiAgICBdLmpvaW4oXCIgXCIpO1xuICB9XG4gIC8vIHNpbXBsZSBzY29wZVxuICByZXR1cm4gYCR7cHJlZml4fSR7bmFtZX1gO1xufTtcblxuLyoqIEB0eXBlIHtSZW5kZXJlcn0gKi9cbmNsYXNzIEhUTUxSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEhUTUxSZW5kZXJlclxuICAgKlxuICAgKiBAcGFyYW0ge1RyZWV9IHBhcnNlVHJlZSAtIHRoZSBwYXJzZSB0cmVlIChtdXN0IHN1cHBvcnQgYHdhbGtgIEFQSSlcbiAgICogQHBhcmFtIHt7Y2xhc3NQcmVmaXg6IHN0cmluZ319IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcnNlVHJlZSwgb3B0aW9ucykge1xuICAgIHRoaXMuYnVmZmVyID0gXCJcIjtcbiAgICB0aGlzLmNsYXNzUHJlZml4ID0gb3B0aW9ucy5jbGFzc1ByZWZpeDtcbiAgICBwYXJzZVRyZWUud2Fsayh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRleHRzIHRvIHRoZSBvdXRwdXQgc3RyZWFtXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICovXG4gIGFkZFRleHQodGV4dCkge1xuICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZUhUTUwodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5vZGUgb3BlbiB0byB0aGUgb3V0cHV0IHN0cmVhbSAoaWYgbmVlZGVkKVxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbiAgb3Blbk5vZGUobm9kZSkge1xuICAgIGlmICghZW1pdHNXcmFwcGluZ1RhZ3Mobm9kZSkpIHJldHVybjtcblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHNjb3BlVG9DU1NDbGFzcyhub2RlLnNjb3BlLFxuICAgICAgeyBwcmVmaXg6IHRoaXMuY2xhc3NQcmVmaXggfSk7XG4gICAgdGhpcy5zcGFuKGNsYXNzTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5vZGUgY2xvc2UgdG8gdGhlIG91dHB1dCBzdHJlYW0gKGlmIG5lZWRlZClcbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlICovXG4gIGNsb3NlTm9kZShub2RlKSB7XG4gICAgaWYgKCFlbWl0c1dyYXBwaW5nVGFncyhub2RlKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5idWZmZXIgKz0gU1BBTl9DTE9TRTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCBidWZmZXJcbiAgKi9cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG5cbiAgLy8gaGVscGVyc1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBzcGFuIGVsZW1lbnRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSAqL1xuICBzcGFuKGNsYXNzTmFtZSkge1xuICAgIHRoaXMuYnVmZmVyICs9IGA8c3BhbiBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiPmA7XG4gIH1cbn1cblxuLyoqIEB0eXBlZGVmIHt7c2NvcGU/OiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nLCBjaGlsZHJlbjogTm9kZVtdfSB8IHN0cmluZ30gTm9kZSAqL1xuLyoqIEB0eXBlZGVmIHt7c2NvcGU/OiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nLCBjaGlsZHJlbjogTm9kZVtdfSB9IERhdGFOb2RlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuRW1pdHRlcn0gRW1pdHRlciAqL1xuLyoqICAqL1xuXG4vKiogQHJldHVybnMge0RhdGFOb2RlfSAqL1xuY29uc3QgbmV3Tm9kZSA9IChvcHRzID0ge30pID0+IHtcbiAgLyoqIEB0eXBlIERhdGFOb2RlICovXG4gIGNvbnN0IHJlc3VsdCA9IHsgY2hpbGRyZW46IFtdIH07XG4gIE9iamVjdC5hc3NpZ24ocmVzdWx0LCBvcHRzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNsYXNzIFRva2VuVHJlZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKiBAdHlwZSBEYXRhTm9kZSAqL1xuICAgIHRoaXMucm9vdE5vZGUgPSBuZXdOb2RlKCk7XG4gICAgdGhpcy5zdGFjayA9IFt0aGlzLnJvb3ROb2RlXTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIGdldCByb290KCkgeyByZXR1cm4gdGhpcy5yb290Tm9kZTsgfVxuXG4gIC8qKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbiAgYWRkKG5vZGUpIHtcbiAgICB0aGlzLnRvcC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7c3RyaW5nfSBzY29wZSAqL1xuICBvcGVuTm9kZShzY29wZSkge1xuICAgIC8qKiBAdHlwZSBOb2RlICovXG4gICAgY29uc3Qgbm9kZSA9IG5ld05vZGUoeyBzY29wZSB9KTtcbiAgICB0aGlzLmFkZChub2RlKTtcbiAgICB0aGlzLnN0YWNrLnB1c2gobm9kZSk7XG4gIH1cblxuICBjbG9zZU5vZGUoKSB7XG4gICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2xvc2VBbGxOb2RlcygpIHtcbiAgICB3aGlsZSAodGhpcy5jbG9zZU5vZGUoKSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMucm9vdE5vZGUsIG51bGwsIDQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIHsgaW1wb3J0KFwiLi9odG1sX3JlbmRlcmVyXCIpLlJlbmRlcmVyIH0gUmVuZGVyZXJcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gYnVpbGRlclxuICAgKi9cbiAgd2FsayhidWlsZGVyKSB7XG4gICAgLy8gdGhpcyBkb2VzIG5vdFxuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLl93YWxrKGJ1aWxkZXIsIHRoaXMucm9vdE5vZGUpO1xuICAgIC8vIHRoaXMgd29ya3NcbiAgICAvLyByZXR1cm4gVG9rZW5UcmVlLl93YWxrKGJ1aWxkZXIsIHRoaXMucm9vdE5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IGJ1aWxkZXJcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAqL1xuICBzdGF0aWMgX3dhbGsoYnVpbGRlciwgbm9kZSkge1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgYnVpbGRlci5hZGRUZXh0KG5vZGUpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgYnVpbGRlci5vcGVuTm9kZShub2RlKTtcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHRoaXMuX3dhbGsoYnVpbGRlciwgY2hpbGQpKTtcbiAgICAgIGJ1aWxkZXIuY2xvc2VOb2RlKG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAgICovXG4gIHN0YXRpYyBfY29sbGFwc2Uobm9kZSkge1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuO1xuICAgIGlmICghbm9kZS5jaGlsZHJlbikgcmV0dXJuO1xuXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4uZXZlcnkoZWwgPT4gdHlwZW9mIGVsID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgLy8gbm9kZS50ZXh0ID0gbm9kZS5jaGlsZHJlbi5qb2luKFwiXCIpO1xuICAgICAgLy8gZGVsZXRlIG5vZGUuY2hpbGRyZW47XG4gICAgICBub2RlLmNoaWxkcmVuID0gW25vZGUuY2hpbGRyZW4uam9pbihcIlwiKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgVG9rZW5UcmVlLl9jb2xsYXBzZShjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gIEN1cnJlbnRseSB0aGlzIGlzIGFsbCBwcml2YXRlIEFQSSwgYnV0IHRoaXMgaXMgdGhlIG1pbmltYWwgQVBJIG5lY2Vzc2FyeVxuICB0aGF0IGFuIEVtaXR0ZXIgbXVzdCBpbXBsZW1lbnQgdG8gZnVsbHkgc3VwcG9ydCB0aGUgcGFyc2VyLlxuXG4gIE1pbmltYWwgaW50ZXJmYWNlOlxuXG4gIC0gYWRkVGV4dCh0ZXh0KVxuICAtIF9fYWRkU3VibGFuZ3VhZ2UoZW1pdHRlciwgc3ViTGFuZ3VhZ2VOYW1lKVxuICAtIHN0YXJ0U2NvcGUoc2NvcGUpXG4gIC0gZW5kU2NvcGUoKVxuICAtIGZpbmFsaXplKClcbiAgLSB0b0hUTUwoKVxuXG4qL1xuXG4vKipcbiAqIEBpbXBsZW1lbnRzIHtFbWl0dGVyfVxuICovXG5jbGFzcyBUb2tlblRyZWVFbWl0dGVyIGV4dGVuZHMgVG9rZW5UcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Kn0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICAgKi9cbiAgYWRkVGV4dCh0ZXh0KSB7XG4gICAgaWYgKHRleHQgPT09IFwiXCIpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLmFkZCh0ZXh0KTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gc2NvcGUgKi9cbiAgc3RhcnRTY29wZShzY29wZSkge1xuICAgIHRoaXMub3Blbk5vZGUoc2NvcGUpO1xuICB9XG5cbiAgZW5kU2NvcGUoKSB7XG4gICAgdGhpcy5jbG9zZU5vZGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0VtaXR0ZXIgJiB7cm9vdDogRGF0YU5vZGV9fSBlbWl0dGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBfX2FkZFN1Ymxhbmd1YWdlKGVtaXR0ZXIsIG5hbWUpIHtcbiAgICAvKiogQHR5cGUgRGF0YU5vZGUgKi9cbiAgICBjb25zdCBub2RlID0gZW1pdHRlci5yb290O1xuICAgIGlmIChuYW1lKSBub2RlLnNjb3BlID0gYGxhbmd1YWdlOiR7bmFtZX1gO1xuXG4gICAgdGhpcy5hZGQobm9kZSk7XG4gIH1cblxuICB0b0hUTUwoKSB7XG4gICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgSFRNTFJlbmRlcmVyKHRoaXMsIHRoaXMub3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlbmRlcmVyLnZhbHVlKCk7XG4gIH1cblxuICBmaW5hbGl6ZSgpIHtcbiAgICB0aGlzLmNsb3NlQWxsTm9kZXMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge1JlZ0V4cH1cbiAqICovXG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc291cmNlKHJlKSB7XG4gIGlmICghcmUpIHJldHVybiBudWxsO1xuICBpZiAodHlwZW9mIHJlID09PSBcInN0cmluZ1wiKSByZXR1cm4gcmU7XG5cbiAgcmV0dXJuIHJlLnNvdXJjZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlZ0V4cCB8IHN0cmluZyB9IHJlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBsb29rYWhlYWQocmUpIHtcbiAgcmV0dXJuIGNvbmNhdCgnKD89JywgcmUsICcpJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gYW55TnVtYmVyT2ZUaW1lcyhyZSkge1xuICByZXR1cm4gY29uY2F0KCcoPzonLCByZSwgJykqJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gb3B0aW9uYWwocmUpIHtcbiAgcmV0dXJuIGNvbmNhdCgnKD86JywgcmUsICcpPycpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Li4uKFJlZ0V4cCB8IHN0cmluZykgfSBhcmdzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjb25jYXQoLi4uYXJncykge1xuICBjb25zdCBqb2luZWQgPSBhcmdzLm1hcCgoeCkgPT4gc291cmNlKHgpKS5qb2luKFwiXCIpO1xuICByZXR1cm4gam9pbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7IEFycmF5PHN0cmluZyB8IFJlZ0V4cCB8IE9iamVjdD4gfSBhcmdzXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBzdHJpcE9wdGlvbnNGcm9tQXJncyhhcmdzKSB7XG4gIGNvbnN0IG9wdHMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnb2JqZWN0JyAmJiBvcHRzLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgICBhcmdzLnNwbGljZShhcmdzLmxlbmd0aCAtIDEsIDEpO1xuICAgIHJldHVybiBvcHRzO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKiogQHR5cGVkZWYgeyB7Y2FwdHVyZT86IGJvb2xlYW59IH0gUmVnZXhFaXRoZXJPcHRpb25zICovXG5cbi8qKlxuICogQW55IG9mIHRoZSBwYXNzZWQgZXhwcmVzc3Npb25zIG1heSBtYXRjaFxuICpcbiAqIENyZWF0ZXMgYSBodWdlIHRoaXMgfCB0aGlzIHwgdGhhdCB8IHRoYXQgbWF0Y2hcbiAqIEBwYXJhbSB7KFJlZ0V4cCB8IHN0cmluZylbXSB8IFsuLi4oUmVnRXhwIHwgc3RyaW5nKVtdLCBSZWdleEVpdGhlck9wdGlvbnNdfSBhcmdzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlaXRoZXIoLi4uYXJncykge1xuICAvKiogQHR5cGUgeyBvYmplY3QgJiB7Y2FwdHVyZT86IGJvb2xlYW59IH0gICovXG4gIGNvbnN0IG9wdHMgPSBzdHJpcE9wdGlvbnNGcm9tQXJncyhhcmdzKTtcbiAgY29uc3Qgam9pbmVkID0gJygnXG4gICAgKyAob3B0cy5jYXB0dXJlID8gXCJcIiA6IFwiPzpcIilcbiAgICArIGFyZ3MubWFwKCh4KSA9PiBzb3VyY2UoeCkpLmpvaW4oXCJ8XCIpICsgXCIpXCI7XG4gIHJldHVybiBqb2luZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmd9IHJlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBjb3VudE1hdGNoR3JvdXBzKHJlKSB7XG4gIHJldHVybiAobmV3IFJlZ0V4cChyZS50b1N0cmluZygpICsgJ3wnKSkuZXhlYygnJykubGVuZ3RoIC0gMTtcbn1cblxuLyoqXG4gKiBEb2VzIGxleGVtZSBzdGFydCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoIGF0IHRoZSBiZWdpbm5pbmdcbiAqIEBwYXJhbSB7UmVnRXhwfSByZVxuICogQHBhcmFtIHtzdHJpbmd9IGxleGVtZVxuICovXG5mdW5jdGlvbiBzdGFydHNXaXRoKHJlLCBsZXhlbWUpIHtcbiAgY29uc3QgbWF0Y2ggPSByZSAmJiByZS5leGVjKGxleGVtZSk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaC5pbmRleCA9PT0gMDtcbn1cblxuLy8gQkFDS1JFRl9SRSBtYXRjaGVzIGFuIG9wZW4gcGFyZW50aGVzaXMgb3IgYmFja3JlZmVyZW5jZS4gVG8gYXZvaWRcbi8vIGFuIGluY29ycmVjdCBwYXJzZSwgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgdGhlIGZvbGxvd2luZzpcbi8vIC0gWy4uLl0gZWxlbWVudHMsIHdoZXJlIHRoZSBtZWFuaW5nIG9mIHBhcmVudGhlc2VzIGFuZCBlc2NhcGVzIGNoYW5nZVxuLy8gLSBvdGhlciBlc2NhcGUgc2VxdWVuY2VzLCBzbyB3ZSBkbyBub3QgbWlzcGFyc2UgZXNjYXBlIHNlcXVlbmNlcyBhc1xuLy8gICBpbnRlcmVzdGluZyBlbGVtZW50c1xuLy8gLSBub24tbWF0Y2hpbmcgb3IgbG9va2FoZWFkIHBhcmVudGhlc2VzLCB3aGljaCBkbyBub3QgY2FwdHVyZS4gVGhlc2Vcbi8vICAgZm9sbG93IHRoZSAnKCcgd2l0aCBhICc/Jy5cbmNvbnN0IEJBQ0tSRUZfUkUgPSAvXFxbKD86W15cXFxcXFxdXXxcXFxcLikqXFxdfFxcKFxcPz98XFxcXChbMS05XVswLTldKil8XFxcXC4vO1xuXG4vLyAqKklOVEVSTkFMKiogTm90IGludGVuZGVkIGZvciBvdXRzaWRlIHVzYWdlXG4vLyBqb2luIGxvZ2ljYWxseSBjb21wdXRlcyByZWdleHBzLmpvaW4oc2VwYXJhdG9yKSwgYnV0IGZpeGVzIHRoZVxuLy8gYmFja3JlZmVyZW5jZXMgc28gdGhleSBjb250aW51ZSB0byBtYXRjaC5cbi8vIGl0IGFsc28gcGxhY2VzIGVhY2ggaW5kaXZpZHVhbCByZWd1bGFyIGV4cHJlc3Npb24gaW50byBpdCdzIG93blxuLy8gbWF0Y2ggZ3JvdXAsIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHNlcXVlbmNpbmcgb2YgdGhvc2UgbWF0Y2ggZ3JvdXBzXG4vLyBpcyBjdXJyZW50bHkgYW4gZXhlcmNpc2UgZm9yIHRoZSBjYWxsZXIuIDotKVxuLyoqXG4gKiBAcGFyYW0geyhzdHJpbmcgfCBSZWdFeHApW119IHJlZ2V4cHNcbiAqIEBwYXJhbSB7e2pvaW5XaXRoOiBzdHJpbmd9fSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBfcmV3cml0ZUJhY2tyZWZlcmVuY2VzKHJlZ2V4cHMsIHsgam9pbldpdGggfSkge1xuICBsZXQgbnVtQ2FwdHVyZXMgPSAwO1xuXG4gIHJldHVybiByZWdleHBzLm1hcCgocmVnZXgpID0+IHtcbiAgICBudW1DYXB0dXJlcyArPSAxO1xuICAgIGNvbnN0IG9mZnNldCA9IG51bUNhcHR1cmVzO1xuICAgIGxldCByZSA9IHNvdXJjZShyZWdleCk7XG4gICAgbGV0IG91dCA9ICcnO1xuXG4gICAgd2hpbGUgKHJlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gQkFDS1JFRl9SRS5leGVjKHJlKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgb3V0ICs9IHJlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG91dCArPSByZS5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpO1xuICAgICAgcmUgPSByZS5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgaWYgKG1hdGNoWzBdWzBdID09PSAnXFxcXCcgJiYgbWF0Y2hbMV0pIHtcbiAgICAgICAgLy8gQWRqdXN0IHRoZSBiYWNrcmVmZXJlbmNlLlxuICAgICAgICBvdXQgKz0gJ1xcXFwnICsgU3RyaW5nKE51bWJlcihtYXRjaFsxXSkgKyBvZmZzZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0ICs9IG1hdGNoWzBdO1xuICAgICAgICBpZiAobWF0Y2hbMF0gPT09ICcoJykge1xuICAgICAgICAgIG51bUNhcHR1cmVzKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfSkubWFwKHJlID0+IGAoJHtyZX0pYCkuam9pbihqb2luV2l0aCk7XG59XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Nb2RlfSBNb2RlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTW9kZUNhbGxiYWNrfSBNb2RlQ2FsbGJhY2sgKi9cblxuLy8gQ29tbW9uIHJlZ2V4cHNcbmNvbnN0IE1BVENIX05PVEhJTkdfUkUgPSAvXFxiXFxCLztcbmNvbnN0IElERU5UX1JFID0gJ1thLXpBLVpdXFxcXHcqJztcbmNvbnN0IFVOREVSU0NPUkVfSURFTlRfUkUgPSAnW2EtekEtWl9dXFxcXHcqJztcbmNvbnN0IE5VTUJFUl9SRSA9ICdcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKyk/JztcbmNvbnN0IENfTlVNQkVSX1JFID0gJygtPykoXFxcXGIwW3hYXVthLWZBLUYwLTldK3woXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCopP3xcXFxcLlxcXFxkKykoW2VFXVstK10/XFxcXGQrKT8pJzsgLy8gMHguLi4sIDAuLi4sIGRlY2ltYWwsIGZsb2F0XG5jb25zdCBCSU5BUllfTlVNQkVSX1JFID0gJ1xcXFxiKDBiWzAxXSspJzsgLy8gMGIuLi5cbmNvbnN0IFJFX1NUQVJURVJTX1JFID0gJyF8IT18IT09fCV8JT18JnwmJnwmPXxcXFxcKnxcXFxcKj18XFxcXCt8XFxcXCs9fCx8LXwtPXwvPXwvfDp8O3w8PHw8PD18PD18PHw9PT18PT18PXw+Pj49fD4+PXw+PXw+Pj58Pj58PnxcXFxcP3xcXFxcW3xcXFxce3xcXFxcKHxcXFxcXnxcXFxcXj18XFxcXHx8XFxcXHw9fFxcXFx8XFxcXHx8fic7XG5cbi8qKlxuKiBAcGFyYW0geyBQYXJ0aWFsPE1vZGU+ICYge2JpbmFyeT86IHN0cmluZyB8IFJlZ0V4cH0gfSBvcHRzXG4qL1xuY29uc3QgU0hFQkFORyA9IChvcHRzID0ge30pID0+IHtcbiAgY29uc3QgYmVnaW5TaGViYW5nID0gL14jIVsgXSpcXC8vO1xuICBpZiAob3B0cy5iaW5hcnkpIHtcbiAgICBvcHRzLmJlZ2luID0gY29uY2F0KFxuICAgICAgYmVnaW5TaGViYW5nLFxuICAgICAgLy4qXFxiLyxcbiAgICAgIG9wdHMuYmluYXJ5LFxuICAgICAgL1xcYi4qLyk7XG4gIH1cbiAgcmV0dXJuIGluaGVyaXQkMSh7XG4gICAgc2NvcGU6ICdtZXRhJyxcbiAgICBiZWdpbjogYmVnaW5TaGViYW5nLFxuICAgIGVuZDogLyQvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICAvKiogQHR5cGUge01vZGVDYWxsYmFja30gKi9cbiAgICBcIm9uOmJlZ2luXCI6IChtLCByZXNwKSA9PiB7XG4gICAgICBpZiAobS5pbmRleCAhPT0gMCkgcmVzcC5pZ25vcmVNYXRjaCgpO1xuICAgIH1cbiAgfSwgb3B0cyk7XG59O1xuXG4vLyBDb21tb24gbW9kZXNcbmNvbnN0IEJBQ0tTTEFTSF9FU0NBUEUgPSB7XG4gIGJlZ2luOiAnXFxcXFxcXFxbXFxcXHNcXFxcU10nLCByZWxldmFuY2U6IDBcbn07XG5jb25zdCBBUE9TX1NUUklOR19NT0RFID0ge1xuICBzY29wZTogJ3N0cmluZycsXG4gIGJlZ2luOiAnXFwnJyxcbiAgZW5kOiAnXFwnJyxcbiAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgY29udGFpbnM6IFtCQUNLU0xBU0hfRVNDQVBFXVxufTtcbmNvbnN0IFFVT1RFX1NUUklOR19NT0RFID0ge1xuICBzY29wZTogJ3N0cmluZycsXG4gIGJlZ2luOiAnXCInLFxuICBlbmQ6ICdcIicsXG4gIGlsbGVnYWw6ICdcXFxcbicsXG4gIGNvbnRhaW5zOiBbQkFDS1NMQVNIX0VTQ0FQRV1cbn07XG5jb25zdCBQSFJBU0FMX1dPUkRTX01PREUgPSB7XG4gIGJlZ2luOiAvXFxiKGF8YW58dGhlfGFyZXxJJ218aXNuJ3R8ZG9uJ3R8ZG9lc24ndHx3b24ndHxidXR8anVzdHxzaG91bGR8cHJldHR5fHNpbXBseXxlbm91Z2h8Z29ubmF8Z29pbmd8d3RmfHNvfHN1Y2h8d2lsbHx5b3V8eW91cnx0aGV5fGxpa2V8bW9yZSlcXGIvXG59O1xuLyoqXG4gKiBDcmVhdGVzIGEgY29tbWVudCBtb2RlXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBSZWdFeHB9IGJlZ2luXG4gKiBAcGFyYW0ge3N0cmluZyB8IFJlZ0V4cH0gZW5kXG4gKiBAcGFyYW0ge01vZGUgfCB7fX0gW21vZGVPcHRpb25zXVxuICogQHJldHVybnMge1BhcnRpYWw8TW9kZT59XG4gKi9cbmNvbnN0IENPTU1FTlQgPSBmdW5jdGlvbihiZWdpbiwgZW5kLCBtb2RlT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IG1vZGUgPSBpbmhlcml0JDEoXG4gICAge1xuICAgICAgc2NvcGU6ICdjb21tZW50JyxcbiAgICAgIGJlZ2luLFxuICAgICAgZW5kLFxuICAgICAgY29udGFpbnM6IFtdXG4gICAgfSxcbiAgICBtb2RlT3B0aW9uc1xuICApO1xuICBtb2RlLmNvbnRhaW5zLnB1c2goe1xuICAgIHNjb3BlOiAnZG9jdGFnJyxcbiAgICAvLyBoYWNrIHRvIGF2b2lkIHRoZSBzcGFjZSBmcm9tIGJlaW5nIGluY2x1ZGVkLiB0aGUgc3BhY2UgaXMgbmVjZXNzYXJ5IHRvXG4gICAgLy8gbWF0Y2ggaGVyZSB0byBwcmV2ZW50IHRoZSBwbGFpbiB0ZXh0IHJ1bGUgYmVsb3cgZnJvbSBnb2JibGluZyB1cCBkb2N0YWdzXG4gICAgYmVnaW46ICdbIF0qKD89KFRPRE98RklYTUV8Tk9URXxCVUd8T1BUSU1JWkV8SEFDS3xYWFgpOiknLFxuICAgIGVuZDogLyhUT0RPfEZJWE1FfE5PVEV8QlVHfE9QVElNSVpFfEhBQ0t8WFhYKTovLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfSk7XG4gIGNvbnN0IEVOR0xJU0hfV09SRCA9IGVpdGhlcihcbiAgICAvLyBsaXN0IG9mIGNvbW1vbiAxIGFuZCAyIGxldHRlciB3b3JkcyBpbiBFbmdsaXNoXG4gICAgXCJJXCIsXG4gICAgXCJhXCIsXG4gICAgXCJpc1wiLFxuICAgIFwic29cIixcbiAgICBcInVzXCIsXG4gICAgXCJ0b1wiLFxuICAgIFwiYXRcIixcbiAgICBcImlmXCIsXG4gICAgXCJpblwiLFxuICAgIFwiaXRcIixcbiAgICBcIm9uXCIsXG4gICAgLy8gbm90ZTogdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0IG9mIGNvbnRyYWN0aW9ucywganVzdCBwb3B1bGFyIG9uZXNcbiAgICAvW0EtWmEtel0rWyddKGR8dmV8cmV8bGx8dHxzfG4pLywgLy8gY29udHJhY3Rpb25zIC0gY2FuJ3Qgd2UnZCB0aGV5J3JlIGxldCdzLCBldGNcbiAgICAvW0EtWmEtel0rWy1dW2Etel0rLywgLy8gYG5vLXdheWAsIGV0Yy5cbiAgICAvW0EtWmEtel1bYS16XXsyLH0vIC8vIGFsbG93IGNhcGl0YWxpemVkIHdvcmRzIGF0IGJlZ2lubmluZyBvZiBzZW50ZW5jZXNcbiAgKTtcbiAgLy8gbG9va2luZyBsaWtlIHBsYWluIHRleHQsIG1vcmUgbGlrZWx5IHRvIGJlIGEgY29tbWVudFxuICBtb2RlLmNvbnRhaW5zLnB1c2goXG4gICAge1xuICAgICAgLy8gVE9ETzogaG93IHRvIGluY2x1ZGUgXCIsICgsICkgd2l0aG91dCBicmVha2luZyBncmFtbWFycyB0aGF0IHVzZSB0aGVzZSBmb3JcbiAgICAgIC8vIGNvbW1lbnQgZGVsaW1pdGVycz9cbiAgICAgIC8vIGJlZ2luOiAvWyBdKyhbKClcIl0/KFtBLVphLXonLV17Myx9fGlzfGF8SXxzb3x1c3xbdFRdW29PXXxhdHxpZnxpbnxpdHxvbilbLl0/WygpXCI6XT8oWy5dWyBdfFsgXXxcXCkpKXszfS9cbiAgICAgIC8vIC0tLVxuXG4gICAgICAvLyB0aGlzIHRyaWVzIHRvIGZpbmQgc2VxdWVuY2VzIG9mIDMgZW5nbGlzaCB3b3JkcyBpbiBhIHJvdyAod2l0aG91dCBhbnlcbiAgICAgIC8vIFwicHJvZ3JhbW1pbmdcIiB0eXBlIHN5bnRheCkgdGhpcyBnaXZlcyB1cyBhIHN0cm9uZyBzaWduYWwgdGhhdCB3ZSd2ZVxuICAgICAgLy8gVFJVTFkgZm91bmQgYSBjb21tZW50IC0gdnMgcGVyaGFwcyBzY2FubmluZyB3aXRoIHRoZSB3cm9uZyBsYW5ndWFnZS5cbiAgICAgIC8vIEl0J3MgcG9zc2libGUgdG8gZmluZCBzb21ldGhpbmcgdGhhdCBMT09LUyBsaWtlIHRoZSBzdGFydCBvZiB0aGVcbiAgICAgIC8vIGNvbW1lbnQgLSBidXQgdGhlbiBpZiB0aGVyZSBpcyBubyByZWFkYWJsZSB0ZXh0IC0gZ29vZCBjaGFuY2UgaXQgaXMgYVxuICAgICAgLy8gZmFsc2UgbWF0Y2ggYW5kIG5vdCBhIGNvbW1lbnQuXG4gICAgICAvL1xuICAgICAgLy8gZm9yIGEgdmlzdWFsIGV4YW1wbGUgcGxlYXNlIHNlZTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzI4MjdcblxuICAgICAgYmVnaW46IGNvbmNhdChcbiAgICAgICAgL1sgXSsvLCAvLyBuZWNlc3NhcnkgdG8gcHJldmVudCB1cyBnb2JibGluZyB1cCBkb2N0YWdzIGxpa2UgLyogQGF1dGhvciBCb2IgTWNnaWxsICovXG4gICAgICAgICcoJyxcbiAgICAgICAgRU5HTElTSF9XT1JELFxuICAgICAgICAvWy5dP1s6XT8oWy5dWyBdfFsgXSkvLFxuICAgICAgICAnKXszfScpIC8vIGxvb2sgZm9yIDMgd29yZHMgaW4gYSByb3dcbiAgICB9XG4gICk7XG4gIHJldHVybiBtb2RlO1xufTtcbmNvbnN0IENfTElORV9DT01NRU5UX01PREUgPSBDT01NRU5UKCcvLycsICckJyk7XG5jb25zdCBDX0JMT0NLX0NPTU1FTlRfTU9ERSA9IENPTU1FTlQoJy9cXFxcKicsICdcXFxcKi8nKTtcbmNvbnN0IEhBU0hfQ09NTUVOVF9NT0RFID0gQ09NTUVOVCgnIycsICckJyk7XG5jb25zdCBOVU1CRVJfTU9ERSA9IHtcbiAgc2NvcGU6ICdudW1iZXInLFxuICBiZWdpbjogTlVNQkVSX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5jb25zdCBDX05VTUJFUl9NT0RFID0ge1xuICBzY29wZTogJ251bWJlcicsXG4gIGJlZ2luOiBDX05VTUJFUl9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgQklOQVJZX05VTUJFUl9NT0RFID0ge1xuICBzY29wZTogJ251bWJlcicsXG4gIGJlZ2luOiBCSU5BUllfTlVNQkVSX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5jb25zdCBSRUdFWFBfTU9ERSA9IHtcbiAgc2NvcGU6IFwicmVnZXhwXCIsXG4gIGJlZ2luOiAvXFwvKD89W14vXFxuXSpcXC8pLyxcbiAgZW5kOiAvXFwvW2dpbXV5XSovLFxuICBjb250YWluczogW1xuICAgIEJBQ0tTTEFTSF9FU0NBUEUsXG4gICAge1xuICAgICAgYmVnaW46IC9cXFsvLFxuICAgICAgZW5kOiAvXFxdLyxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbQkFDS1NMQVNIX0VTQ0FQRV1cbiAgICB9XG4gIF1cbn07XG5jb25zdCBUSVRMRV9NT0RFID0ge1xuICBzY29wZTogJ3RpdGxlJyxcbiAgYmVnaW46IElERU5UX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5jb25zdCBVTkRFUlNDT1JFX1RJVExFX01PREUgPSB7XG4gIHNjb3BlOiAndGl0bGUnLFxuICBiZWdpbjogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgTUVUSE9EX0dVQVJEID0ge1xuICAvLyBleGNsdWRlcyBtZXRob2QgbmFtZXMgZnJvbSBrZXl3b3JkIHByb2Nlc3NpbmdcbiAgYmVnaW46ICdcXFxcLlxcXFxzKicgKyBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5cbi8qKlxuICogQWRkcyBlbmQgc2FtZSBhcyBiZWdpbiBtZWNoYW5pY3MgdG8gYSBtb2RlXG4gKlxuICogWW91ciBtb2RlIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBhIHNpbmdsZSAoKSBtYXRjaCBncm91cCBhcyB0aGF0IGZpcnN0IG1hdGNoXG4gKiBncm91cCBpcyB3aGF0IGlzIHVzZWQgZm9yIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7UGFydGlhbDxNb2RlPn0gbW9kZVxuICovXG5jb25zdCBFTkRfU0FNRV9BU19CRUdJTiA9IGZ1bmN0aW9uKG1vZGUpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obW9kZSxcbiAgICB7XG4gICAgICAvKiogQHR5cGUge01vZGVDYWxsYmFja30gKi9cbiAgICAgICdvbjpiZWdpbic6IChtLCByZXNwKSA9PiB7IHJlc3AuZGF0YS5fYmVnaW5NYXRjaCA9IG1bMV07IH0sXG4gICAgICAvKiogQHR5cGUge01vZGVDYWxsYmFja30gKi9cbiAgICAgICdvbjplbmQnOiAobSwgcmVzcCkgPT4geyBpZiAocmVzcC5kYXRhLl9iZWdpbk1hdGNoICE9PSBtWzFdKSByZXNwLmlnbm9yZU1hdGNoKCk7IH1cbiAgICB9KTtcbn07XG5cbnZhciBNT0RFUyA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgX19wcm90b19fOiBudWxsLFxuICBBUE9TX1NUUklOR19NT0RFOiBBUE9TX1NUUklOR19NT0RFLFxuICBCQUNLU0xBU0hfRVNDQVBFOiBCQUNLU0xBU0hfRVNDQVBFLFxuICBCSU5BUllfTlVNQkVSX01PREU6IEJJTkFSWV9OVU1CRVJfTU9ERSxcbiAgQklOQVJZX05VTUJFUl9SRTogQklOQVJZX05VTUJFUl9SRSxcbiAgQ09NTUVOVDogQ09NTUVOVCxcbiAgQ19CTE9DS19DT01NRU5UX01PREU6IENfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICBDX0xJTkVfQ09NTUVOVF9NT0RFOiBDX0xJTkVfQ09NTUVOVF9NT0RFLFxuICBDX05VTUJFUl9NT0RFOiBDX05VTUJFUl9NT0RFLFxuICBDX05VTUJFUl9SRTogQ19OVU1CRVJfUkUsXG4gIEVORF9TQU1FX0FTX0JFR0lOOiBFTkRfU0FNRV9BU19CRUdJTixcbiAgSEFTSF9DT01NRU5UX01PREU6IEhBU0hfQ09NTUVOVF9NT0RFLFxuICBJREVOVF9SRTogSURFTlRfUkUsXG4gIE1BVENIX05PVEhJTkdfUkU6IE1BVENIX05PVEhJTkdfUkUsXG4gIE1FVEhPRF9HVUFSRDogTUVUSE9EX0dVQVJELFxuICBOVU1CRVJfTU9ERTogTlVNQkVSX01PREUsXG4gIE5VTUJFUl9SRTogTlVNQkVSX1JFLFxuICBQSFJBU0FMX1dPUkRTX01PREU6IFBIUkFTQUxfV09SRFNfTU9ERSxcbiAgUVVPVEVfU1RSSU5HX01PREU6IFFVT1RFX1NUUklOR19NT0RFLFxuICBSRUdFWFBfTU9ERTogUkVHRVhQX01PREUsXG4gIFJFX1NUQVJURVJTX1JFOiBSRV9TVEFSVEVSU19SRSxcbiAgU0hFQkFORzogU0hFQkFORyxcbiAgVElUTEVfTU9ERTogVElUTEVfTU9ERSxcbiAgVU5ERVJTQ09SRV9JREVOVF9SRTogVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgVU5ERVJTQ09SRV9USVRMRV9NT0RFOiBVTkRFUlNDT1JFX1RJVExFX01PREVcbn0pO1xuXG4vKipcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNhbGxiYWNrUmVzcG9uc2V9IENhbGxiYWNrUmVzcG9uc2VcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNvbXBpbGVyRXh0fSBDb21waWxlckV4dFxuKi9cblxuLy8gR3JhbW1hciBleHRlbnNpb25zIC8gcGx1Z2luc1xuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yODMzXG5cbi8vIEdyYW1tYXIgZXh0ZW5zaW9ucyBhbGxvdyBcInN5bnRhY3RpYyBzdWdhclwiIHRvIGJlIGFkZGVkIHRvIHRoZSBncmFtbWFyIG1vZGVzXG4vLyB3aXRob3V0IHJlcXVpcmluZyBhbnkgdW5kZXJseWluZyBjaGFuZ2VzIHRvIHRoZSBjb21waWxlciBpbnRlcm5hbHMuXG5cbi8vIGBjb21waWxlTWF0Y2hgIGJlaW5nIHRoZSBwZXJmZWN0IHNtYWxsIGV4YW1wbGUgb2Ygbm93IGFsbG93aW5nIGEgZ3JhbW1hclxuLy8gYXV0aG9yIHRvIHdyaXRlIGBtYXRjaGAgd2hlbiB0aGV5IGRlc2lyZSB0byBtYXRjaCBhIHNpbmdsZSBleHByZXNzaW9uIHJhdGhlclxuLy8gdGhhbiBiZWluZyBmb3JjZWQgdG8gdXNlIGBiZWdpbmAuICBUaGUgZXh0ZW5zaW9uIHRoZW4ganVzdCBtb3ZlcyBgbWF0Y2hgIGludG9cbi8vIGBiZWdpbmAgd2hlbiBpdCBydW5zLiAgSWUsIG5vIGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZCwgYnV0IHdlJ3ZlIGp1c3QgbWFkZVxuLy8gdGhlIGV4cGVyaWVuY2Ugb2Ygd3JpdGluZyAoYW5kIHJlYWRpbmcgZ3JhbW1hcnMpIGEgbGl0dGxlIGJpdCBuaWNlci5cblxuLy8gLS0tLS0tXG5cbi8vIFRPRE86IFdlIG5lZWQgbmVnYXRpdmUgbG9vay1iZWhpbmQgc3VwcG9ydCB0byBkbyB0aGlzIHByb3Blcmx5XG4vKipcbiAqIFNraXAgYSBtYXRjaCBpZiBpdCBoYXMgYSBwcmVjZWRpbmcgZG90XG4gKlxuICogVGhpcyBpcyB1c2VkIGZvciBgYmVnaW5LZXl3b3Jkc2AgdG8gcHJldmVudCBtYXRjaGluZyBleHByZXNzaW9ucyBzdWNoIGFzXG4gKiBgYm9iLmtleXdvcmQuZG8oKWAuIFRoZSBtb2RlIGNvbXBpbGVyIGF1dG9tYXRpY2FsbHkgd2lyZXMgdGhpcyB1cCBhcyBhXG4gKiBzcGVjaWFsIF9pbnRlcm5hbF8gJ29uOmJlZ2luJyBjYWxsYmFjayBmb3IgbW9kZXMgd2l0aCBgYmVnaW5LZXl3b3Jkc2BcbiAqIEBwYXJhbSB7UmVnRXhwTWF0Y2hBcnJheX0gbWF0Y2hcbiAqIEBwYXJhbSB7Q2FsbGJhY2tSZXNwb25zZX0gcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gc2tpcElmSGFzUHJlY2VkaW5nRG90KG1hdGNoLCByZXNwb25zZSkge1xuICBjb25zdCBiZWZvcmUgPSBtYXRjaC5pbnB1dFttYXRjaC5pbmRleCAtIDFdO1xuICBpZiAoYmVmb3JlID09PSBcIi5cIikge1xuICAgIHJlc3BvbnNlLmlnbm9yZU1hdGNoKCk7XG4gIH1cbn1cblxuLyoqXG4gKlxuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBzY29wZUNsYXNzTmFtZShtb2RlLCBfcGFyZW50KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgaWYgKG1vZGUuY2xhc3NOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBtb2RlLnNjb3BlID0gbW9kZS5jbGFzc05hbWU7XG4gICAgZGVsZXRlIG1vZGUuY2xhc3NOYW1lO1xuICB9XG59XG5cbi8qKlxuICogYGJlZ2luS2V5d29yZHNgIHN5bnRhY3RpYyBzdWdhclxuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBiZWdpbktleXdvcmRzKG1vZGUsIHBhcmVudCkge1xuICBpZiAoIXBhcmVudCkgcmV0dXJuO1xuICBpZiAoIW1vZGUuYmVnaW5LZXl3b3JkcykgcmV0dXJuO1xuXG4gIC8vIGZvciBsYW5ndWFnZXMgd2l0aCBrZXl3b3JkcyB0aGF0IGluY2x1ZGUgbm9uLXdvcmQgY2hhcmFjdGVycyBjaGVja2luZyBmb3JcbiAgLy8gYSB3b3JkIGJvdW5kYXJ5IGlzIG5vdCBzdWZmaWNpZW50LCBzbyBpbnN0ZWFkIHdlIGNoZWNrIGZvciBhIHdvcmQgYm91bmRhcnlcbiAgLy8gb3Igd2hpdGVzcGFjZSAtIHRoaXMgZG9lcyBubyBoYXJtIGluIGFueSBjYXNlIHNpbmNlIG91ciBrZXl3b3JkIGVuZ2luZVxuICAvLyBkb2Vzbid0IGFsbG93IHNwYWNlcyBpbiBrZXl3b3JkcyBhbnl3YXlzIGFuZCB3ZSBzdGlsbCBjaGVjayBmb3IgdGhlIGJvdW5kYXJ5XG4gIC8vIGZpcnN0XG4gIG1vZGUuYmVnaW4gPSAnXFxcXGIoJyArIG1vZGUuYmVnaW5LZXl3b3Jkcy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcpKD8hXFxcXC4pKD89XFxcXGJ8XFxcXHMpJztcbiAgbW9kZS5fX2JlZm9yZUJlZ2luID0gc2tpcElmSGFzUHJlY2VkaW5nRG90O1xuICBtb2RlLmtleXdvcmRzID0gbW9kZS5rZXl3b3JkcyB8fCBtb2RlLmJlZ2luS2V5d29yZHM7XG4gIGRlbGV0ZSBtb2RlLmJlZ2luS2V5d29yZHM7XG5cbiAgLy8gcHJldmVudHMgZG91YmxlIHJlbGV2YW5jZSwgdGhlIGtleXdvcmRzIHRoZW1zZWx2ZXMgcHJvdmlkZVxuICAvLyByZWxldmFuY2UsIHRoZSBtb2RlIGRvZXNuJ3QgbmVlZCB0byBkb3VibGUgaXRcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmaW5lZFxuICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkgbW9kZS5yZWxldmFuY2UgPSAwO1xufVxuXG4vKipcbiAqIEFsbG93IGBpbGxlZ2FsYCB0byBjb250YWluIGFuIGFycmF5IG9mIGlsbGVnYWwgdmFsdWVzXG4gKiBAdHlwZSB7Q29tcGlsZXJFeHR9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVJbGxlZ2FsKG1vZGUsIF9wYXJlbnQpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGUuaWxsZWdhbCkpIHJldHVybjtcblxuICBtb2RlLmlsbGVnYWwgPSBlaXRoZXIoLi4ubW9kZS5pbGxlZ2FsKTtcbn1cblxuLyoqXG4gKiBgbWF0Y2hgIHRvIG1hdGNoIGEgc2luZ2xlIGV4cHJlc3Npb24gZm9yIHJlYWRhYmlsaXR5XG4gKiBAdHlwZSB7Q29tcGlsZXJFeHR9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVNYXRjaChtb2RlLCBfcGFyZW50KSB7XG4gIGlmICghbW9kZS5tYXRjaCkgcmV0dXJuO1xuICBpZiAobW9kZS5iZWdpbiB8fCBtb2RlLmVuZCkgdGhyb3cgbmV3IEVycm9yKFwiYmVnaW4gJiBlbmQgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBtYXRjaFwiKTtcblxuICBtb2RlLmJlZ2luID0gbW9kZS5tYXRjaDtcbiAgZGVsZXRlIG1vZGUubWF0Y2g7XG59XG5cbi8qKlxuICogcHJvdmlkZXMgdGhlIGRlZmF1bHQgMSByZWxldmFuY2UgdG8gYWxsIG1vZGVzXG4gKiBAdHlwZSB7Q29tcGlsZXJFeHR9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVSZWxldmFuY2UobW9kZSwgX3BhcmVudCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gIGlmIChtb2RlLnJlbGV2YW5jZSA9PT0gdW5kZWZpbmVkKSBtb2RlLnJlbGV2YW5jZSA9IDE7XG59XG5cbi8vIGFsbG93IGJlZm9yZU1hdGNoIHRvIGFjdCBhcyBhIFwicXVhbGlmaWVyXCIgZm9yIHRoZSBtYXRjaFxuLy8gdGhlIGZ1bGwgbWF0Y2ggYmVnaW4gbXVzdCBiZSBbYmVmb3JlTWF0Y2hdW2JlZ2luXVxuY29uc3QgYmVmb3JlTWF0Y2hFeHQgPSAobW9kZSwgcGFyZW50KSA9PiB7XG4gIGlmICghbW9kZS5iZWZvcmVNYXRjaCkgcmV0dXJuO1xuICAvLyBzdGFydHMgY29uZmxpY3RzIHdpdGggZW5kc1BhcmVudCB3aGljaCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY2hpbGRcbiAgLy8gcnVsZSBpcyBub3QgbWF0Y2hlZCBtdWx0aXBsZSB0aW1lc1xuICBpZiAobW9kZS5zdGFydHMpIHRocm93IG5ldyBFcnJvcihcImJlZm9yZU1hdGNoIGNhbm5vdCBiZSB1c2VkIHdpdGggc3RhcnRzXCIpO1xuXG4gIGNvbnN0IG9yaWdpbmFsTW9kZSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGUpO1xuICBPYmplY3Qua2V5cyhtb2RlKS5mb3JFYWNoKChrZXkpID0+IHsgZGVsZXRlIG1vZGVba2V5XTsgfSk7XG5cbiAgbW9kZS5rZXl3b3JkcyA9IG9yaWdpbmFsTW9kZS5rZXl3b3JkcztcbiAgbW9kZS5iZWdpbiA9IGNvbmNhdChvcmlnaW5hbE1vZGUuYmVmb3JlTWF0Y2gsIGxvb2thaGVhZChvcmlnaW5hbE1vZGUuYmVnaW4pKTtcbiAgbW9kZS5zdGFydHMgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBPYmplY3QuYXNzaWduKG9yaWdpbmFsTW9kZSwgeyBlbmRzUGFyZW50OiB0cnVlIH0pXG4gICAgXVxuICB9O1xuICBtb2RlLnJlbGV2YW5jZSA9IDA7XG5cbiAgZGVsZXRlIG9yaWdpbmFsTW9kZS5iZWZvcmVNYXRjaDtcbn07XG5cbi8vIGtleXdvcmRzIHRoYXQgc2hvdWxkIGhhdmUgbm8gZGVmYXVsdCByZWxldmFuY2UgdmFsdWVcbmNvbnN0IENPTU1PTl9LRVlXT1JEUyA9IFtcbiAgJ29mJyxcbiAgJ2FuZCcsXG4gICdmb3InLFxuICAnaW4nLFxuICAnbm90JyxcbiAgJ29yJyxcbiAgJ2lmJyxcbiAgJ3RoZW4nLFxuICAncGFyZW50JywgLy8gY29tbW9uIHZhcmlhYmxlIG5hbWVcbiAgJ2xpc3QnLCAvLyBjb21tb24gdmFyaWFibGUgbmFtZVxuICAndmFsdWUnIC8vIGNvbW1vbiB2YXJpYWJsZSBuYW1lXG5dO1xuXG5jb25zdCBERUZBVUxUX0tFWVdPUkRfU0NPUEUgPSBcImtleXdvcmRcIjtcblxuLyoqXG4gKiBHaXZlbiByYXcga2V5d29yZHMgZnJvbSBhIGxhbmd1YWdlIGRlZmluaXRpb24sIGNvbXBpbGUgdGhlbS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8IFJlY29yZDxzdHJpbmcsc3RyaW5nfHN0cmluZ1tdPiB8IEFycmF5PHN0cmluZz59IHJhd0tleXdvcmRzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGNhc2VJbnNlbnNpdGl2ZVxuICovXG5mdW5jdGlvbiBjb21waWxlS2V5d29yZHMocmF3S2V5d29yZHMsIGNhc2VJbnNlbnNpdGl2ZSwgc2NvcGVOYW1lID0gREVGQVVMVF9LRVlXT1JEX1NDT1BFKSB7XG4gIC8qKiBAdHlwZSB7aW1wb3J0KFwiaGlnaGxpZ2h0LmpzL3ByaXZhdGVcIikuS2V5d29yZERpY3R9ICovXG4gIGNvbnN0IGNvbXBpbGVkS2V5d29yZHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIC8vIGlucHV0IGNhbiBiZSBhIHN0cmluZyBvZiBrZXl3b3JkcywgYW4gYXJyYXkgb2Yga2V5d29yZHMsIG9yIGEgb2JqZWN0IHdpdGhcbiAgLy8gbmFtZWQga2V5cyByZXByZXNlbnRpbmcgc2NvcGVOYW1lICh3aGljaCBjYW4gdGhlbiBwb2ludCB0byBhIHN0cmluZyBvciBhcnJheSlcbiAgaWYgKHR5cGVvZiByYXdLZXl3b3JkcyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb21waWxlTGlzdChzY29wZU5hbWUsIHJhd0tleXdvcmRzLnNwbGl0KFwiIFwiKSk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXdLZXl3b3JkcykpIHtcbiAgICBjb21waWxlTGlzdChzY29wZU5hbWUsIHJhd0tleXdvcmRzKTtcbiAgfSBlbHNlIHtcbiAgICBPYmplY3Qua2V5cyhyYXdLZXl3b3JkcykuZm9yRWFjaChmdW5jdGlvbihzY29wZU5hbWUpIHtcbiAgICAgIC8vIGNvbGxhcHNlIGFsbCBvdXIgb2JqZWN0cyBiYWNrIGludG8gdGhlIHBhcmVudCBvYmplY3RcbiAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgIGNvbXBpbGVkS2V5d29yZHMsXG4gICAgICAgIGNvbXBpbGVLZXl3b3JkcyhyYXdLZXl3b3Jkc1tzY29wZU5hbWVdLCBjYXNlSW5zZW5zaXRpdmUsIHNjb3BlTmFtZSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGNvbXBpbGVkS2V5d29yZHM7XG5cbiAgLy8gLS0tXG5cbiAgLyoqXG4gICAqIENvbXBpbGVzIGFuIGluZGl2aWR1YWwgbGlzdCBvZiBrZXl3b3Jkc1xuICAgKlxuICAgKiBFeDogXCJmb3IgaWYgd2hlbiB3aGlsZXw1XCJcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjb3BlTmFtZVxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGtleXdvcmRMaXN0XG4gICAqL1xuICBmdW5jdGlvbiBjb21waWxlTGlzdChzY29wZU5hbWUsIGtleXdvcmRMaXN0KSB7XG4gICAgaWYgKGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgICAga2V5d29yZExpc3QgPSBrZXl3b3JkTGlzdC5tYXAoeCA9PiB4LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICBrZXl3b3JkTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGtleXdvcmQpIHtcbiAgICAgIGNvbnN0IHBhaXIgPSBrZXl3b3JkLnNwbGl0KCd8Jyk7XG4gICAgICBjb21waWxlZEtleXdvcmRzW3BhaXJbMF1dID0gW3Njb3BlTmFtZSwgc2NvcmVGb3JLZXl3b3JkKHBhaXJbMF0sIHBhaXJbMV0pXTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHByb3BlciBzY29yZSBmb3IgYSBnaXZlbiBrZXl3b3JkXG4gKlxuICogQWxzbyB0YWtlcyBpbnRvIGFjY291bnQgY29tbWVudCBrZXl3b3Jkcywgd2hpY2ggd2lsbCBiZSBzY29yZWQgMCBVTkxFU1NcbiAqIGFub3RoZXIgc2NvcmUgaGFzIGJlZW4gbWFudWFsbHkgYXNzaWduZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5d29yZFxuICogQHBhcmFtIHtzdHJpbmd9IFtwcm92aWRlZFNjb3JlXVxuICovXG5mdW5jdGlvbiBzY29yZUZvcktleXdvcmQoa2V5d29yZCwgcHJvdmlkZWRTY29yZSkge1xuICAvLyBtYW51YWwgc2NvcmVzIGFsd2F5cyB3aW4gb3ZlciBjb21tb24ga2V5d29yZHNcbiAgLy8gc28geW91IGNhbiBmb3JjZSBhIHNjb3JlIG9mIDEgaWYgeW91IHJlYWxseSBpbnNpc3RcbiAgaWYgKHByb3ZpZGVkU2NvcmUpIHtcbiAgICByZXR1cm4gTnVtYmVyKHByb3ZpZGVkU2NvcmUpO1xuICB9XG5cbiAgcmV0dXJuIGNvbW1vbktleXdvcmQoa2V5d29yZCkgPyAwIDogMTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4ga2V5d29yZCBpcyBjb21tb24gb3Igbm90XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleXdvcmQgKi9cbmZ1bmN0aW9uIGNvbW1vbktleXdvcmQoa2V5d29yZCkge1xuICByZXR1cm4gQ09NTU9OX0tFWVdPUkRTLmluY2x1ZGVzKGtleXdvcmQudG9Mb3dlckNhc2UoKSk7XG59XG5cbi8qXG5cbkZvciB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBsZWFzZSBzZWU6XG5odHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yODgwI2lzc3VlY29tbWVudC03NDcyNzU0MTlcblxuKi9cblxuLyoqXG4gKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYm9vbGVhbj59XG4gKi9cbmNvbnN0IHNlZW5EZXByZWNhdGlvbnMgPSB7fTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICovXG5jb25zdCBlcnJvciA9IChtZXNzYWdlKSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcGFyYW0ge2FueX0gYXJnc1xuICovXG5jb25zdCB3YXJuID0gKG1lc3NhZ2UsIC4uLmFyZ3MpID0+IHtcbiAgY29uc29sZS5sb2coYFdBUk46ICR7bWVzc2FnZX1gLCAuLi5hcmdzKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKi9cbmNvbnN0IGRlcHJlY2F0ZWQgPSAodmVyc2lvbiwgbWVzc2FnZSkgPT4ge1xuICBpZiAoc2VlbkRlcHJlY2F0aW9uc1tgJHt2ZXJzaW9ufS8ke21lc3NhZ2V9YF0pIHJldHVybjtcblxuICBjb25zb2xlLmxvZyhgRGVwcmVjYXRlZCBhcyBvZiAke3ZlcnNpb259LiAke21lc3NhZ2V9YCk7XG4gIHNlZW5EZXByZWNhdGlvbnNbYCR7dmVyc2lvbn0vJHttZXNzYWdlfWBdID0gdHJ1ZTtcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXRocm93LWxpdGVyYWwgKi9cblxuLyoqXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZE1vZGV9IENvbXBpbGVkTW9kZVxuKi9cblxuY29uc3QgTXVsdGlDbGFzc0Vycm9yID0gbmV3IEVycm9yKCk7XG5cbi8qKlxuICogUmVudW1iZXJzIGxhYmVsZWQgc2NvcGUgbmFtZXMgdG8gYWNjb3VudCBmb3IgYWRkaXRpb25hbCBpbm5lciBtYXRjaFxuICogZ3JvdXBzIHRoYXQgb3RoZXJ3aXNlIHdvdWxkIGJyZWFrIGV2ZXJ5dGhpbmcuXG4gKlxuICogTGV0cyBzYXkgd2UgMyBtYXRjaCBzY29wZXM6XG4gKlxuICogICB7IDEgPT4gLi4uLCAyID0+IC4uLiwgMyA9PiAuLi4gfVxuICpcbiAqIFNvIHdoYXQgd2UgbmVlZCBpcyBhIGNsZWFuIG1hdGNoIGxpa2UgdGhpczpcbiAqXG4gKiAgIChhKShiKShjKSA9PiBbIFwiYVwiLCBcImJcIiwgXCJjXCIgXVxuICpcbiAqIEJ1dCB0aGlzIGZhbGxzIGFwYXJ0IHdpdGggaW5uZXIgbWF0Y2ggZ3JvdXBzOlxuICpcbiAqIChhKSgoKGIpKSkoYykgPT4gW1wiYVwiLCBcImJcIiwgXCJiXCIsIFwiYlwiLCBcImNcIiBdXG4gKlxuICogT3VyIHNjb3BlcyBhcmUgbm93IFwib3V0IG9mIGFsaWdubWVudFwiIGFuZCB3ZSdyZSByZXBlYXRpbmcgYGJgIDMgdGltZXMuXG4gKiBXaGF0IG5lZWRzIHRvIGhhcHBlbiBpcyB0aGUgbnVtYmVycyBhcmUgcmVtYXBwZWQ6XG4gKlxuICogICB7IDEgPT4gLi4uLCAyID0+IC4uLiwgNSA9PiAuLi4gfVxuICpcbiAqIFdlIGFsc28gbmVlZCB0byBrbm93IHRoYXQgdGhlIE9OTFkgZ3JvdXBzIHRoYXQgc2hvdWxkIGJlIG91dHB1dFxuICogYXJlIDEsIDIsIGFuZCA1LiAgVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoaXMgYmVoYXZpb3IuXG4gKlxuICogQHBhcmFtIHtDb21waWxlZE1vZGV9IG1vZGVcbiAqIEBwYXJhbSB7QXJyYXk8UmVnRXhwIHwgc3RyaW5nPn0gcmVnZXhlc1xuICogQHBhcmFtIHt7a2V5OiBcImJlZ2luU2NvcGVcInxcImVuZFNjb3BlXCJ9fSBvcHRzXG4gKi9cbmZ1bmN0aW9uIHJlbWFwU2NvcGVOYW1lcyhtb2RlLCByZWdleGVzLCB7IGtleSB9KSB7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBjb25zdCBzY29wZU5hbWVzID0gbW9kZVtrZXldO1xuICAvKiogQHR5cGUgUmVjb3JkPG51bWJlcixib29sZWFuPiAqL1xuICBjb25zdCBlbWl0ID0ge307XG4gIC8qKiBAdHlwZSBSZWNvcmQ8bnVtYmVyLHN0cmluZz4gKi9cbiAgY29uc3QgcG9zaXRpb25zID0ge307XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gcmVnZXhlcy5sZW5ndGg7IGkrKykge1xuICAgIHBvc2l0aW9uc1tpICsgb2Zmc2V0XSA9IHNjb3BlTmFtZXNbaV07XG4gICAgZW1pdFtpICsgb2Zmc2V0XSA9IHRydWU7XG4gICAgb2Zmc2V0ICs9IGNvdW50TWF0Y2hHcm91cHMocmVnZXhlc1tpIC0gMV0pO1xuICB9XG4gIC8vIHdlIHVzZSBfZW1pdCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIG1hdGNoIGdyb3VwcyBhcmUgXCJ0b3AtbGV2ZWxcIiB0byBhdm9pZCBkb3VibGVcbiAgLy8gb3V0cHV0IGZyb20gaW5zaWRlIG1hdGNoIGdyb3Vwc1xuICBtb2RlW2tleV0gPSBwb3NpdGlvbnM7XG4gIG1vZGVba2V5XS5fZW1pdCA9IGVtaXQ7XG4gIG1vZGVba2V5XS5fbXVsdGkgPSB0cnVlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKi9cbmZ1bmN0aW9uIGJlZ2luTXVsdGlDbGFzcyhtb2RlKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtb2RlLmJlZ2luKSkgcmV0dXJuO1xuXG4gIGlmIChtb2RlLnNraXAgfHwgbW9kZS5leGNsdWRlQmVnaW4gfHwgbW9kZS5yZXR1cm5CZWdpbikge1xuICAgIGVycm9yKFwic2tpcCwgZXhjbHVkZUJlZ2luLCByZXR1cm5CZWdpbiBub3QgY29tcGF0aWJsZSB3aXRoIGJlZ2luU2NvcGU6IHt9XCIpO1xuICAgIHRocm93IE11bHRpQ2xhc3NFcnJvcjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgbW9kZS5iZWdpblNjb3BlICE9PSBcIm9iamVjdFwiIHx8IG1vZGUuYmVnaW5TY29wZSA9PT0gbnVsbCkge1xuICAgIGVycm9yKFwiYmVnaW5TY29wZSBtdXN0IGJlIG9iamVjdFwiKTtcbiAgICB0aHJvdyBNdWx0aUNsYXNzRXJyb3I7XG4gIH1cblxuICByZW1hcFNjb3BlTmFtZXMobW9kZSwgbW9kZS5iZWdpbiwgeyBrZXk6IFwiYmVnaW5TY29wZVwiIH0pO1xuICBtb2RlLmJlZ2luID0gX3Jld3JpdGVCYWNrcmVmZXJlbmNlcyhtb2RlLmJlZ2luLCB7IGpvaW5XaXRoOiBcIlwiIH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKi9cbmZ1bmN0aW9uIGVuZE11bHRpQ2xhc3MobW9kZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZS5lbmQpKSByZXR1cm47XG5cbiAgaWYgKG1vZGUuc2tpcCB8fCBtb2RlLmV4Y2x1ZGVFbmQgfHwgbW9kZS5yZXR1cm5FbmQpIHtcbiAgICBlcnJvcihcInNraXAsIGV4Y2x1ZGVFbmQsIHJldHVybkVuZCBub3QgY29tcGF0aWJsZSB3aXRoIGVuZFNjb3BlOiB7fVwiKTtcbiAgICB0aHJvdyBNdWx0aUNsYXNzRXJyb3I7XG4gIH1cblxuICBpZiAodHlwZW9mIG1vZGUuZW5kU2NvcGUgIT09IFwib2JqZWN0XCIgfHwgbW9kZS5lbmRTY29wZSA9PT0gbnVsbCkge1xuICAgIGVycm9yKFwiZW5kU2NvcGUgbXVzdCBiZSBvYmplY3RcIik7XG4gICAgdGhyb3cgTXVsdGlDbGFzc0Vycm9yO1xuICB9XG5cbiAgcmVtYXBTY29wZU5hbWVzKG1vZGUsIG1vZGUuZW5kLCB7IGtleTogXCJlbmRTY29wZVwiIH0pO1xuICBtb2RlLmVuZCA9IF9yZXdyaXRlQmFja3JlZmVyZW5jZXMobW9kZS5lbmQsIHsgam9pbldpdGg6IFwiXCIgfSk7XG59XG5cbi8qKlxuICogdGhpcyBleGlzdHMgb25seSB0byBhbGxvdyBgc2NvcGU6IHt9YCB0byBiZSB1c2VkIGJlc2lkZSBgbWF0Y2g6YFxuICogT3RoZXJ3aXNlIGBiZWdpblNjb3BlYCB3b3VsZCBuZWNlc3NhcnkgYW5kIHRoYXQgd291bGQgbG9vayB3ZWlyZFxuXG4gIHtcbiAgICBtYXRjaDogWyAvZGVmLywgL1xcdysvIF1cbiAgICBzY29wZTogeyAxOiBcImtleXdvcmRcIiAsIDI6IFwidGl0bGVcIiB9XG4gIH1cblxuICogQHBhcmFtIHtDb21waWxlZE1vZGV9IG1vZGVcbiAqL1xuZnVuY3Rpb24gc2NvcGVTdWdhcihtb2RlKSB7XG4gIGlmIChtb2RlLnNjb3BlICYmIHR5cGVvZiBtb2RlLnNjb3BlID09PSBcIm9iamVjdFwiICYmIG1vZGUuc2NvcGUgIT09IG51bGwpIHtcbiAgICBtb2RlLmJlZ2luU2NvcGUgPSBtb2RlLnNjb3BlO1xuICAgIGRlbGV0ZSBtb2RlLnNjb3BlO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtDb21waWxlZE1vZGV9IG1vZGVcbiAqL1xuZnVuY3Rpb24gTXVsdGlDbGFzcyhtb2RlKSB7XG4gIHNjb3BlU3VnYXIobW9kZSk7XG5cbiAgaWYgKHR5cGVvZiBtb2RlLmJlZ2luU2NvcGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBtb2RlLmJlZ2luU2NvcGUgPSB7IF93cmFwOiBtb2RlLmJlZ2luU2NvcGUgfTtcbiAgfVxuICBpZiAodHlwZW9mIG1vZGUuZW5kU2NvcGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBtb2RlLmVuZFNjb3BlID0geyBfd3JhcDogbW9kZS5lbmRTY29wZSB9O1xuICB9XG5cbiAgYmVnaW5NdWx0aUNsYXNzKG1vZGUpO1xuICBlbmRNdWx0aUNsYXNzKG1vZGUpO1xufVxuXG4vKipcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLk1vZGV9IE1vZGVcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNvbXBpbGVkTW9kZX0gQ29tcGlsZWRNb2RlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5MYW5ndWFnZX0gTGFuZ3VhZ2VcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhMSlNQbHVnaW59IEhMSlNQbHVnaW5cbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNvbXBpbGVkTGFuZ3VhZ2V9IENvbXBpbGVkTGFuZ3VhZ2VcbiovXG5cbi8vIGNvbXBpbGF0aW9uXG5cbi8qKlxuICogQ29tcGlsZXMgYSBsYW5ndWFnZSBkZWZpbml0aW9uIHJlc3VsdFxuICpcbiAqIEdpdmVuIHRoZSByYXcgcmVzdWx0IG9mIGEgbGFuZ3VhZ2UgZGVmaW5pdGlvbiAoTGFuZ3VhZ2UpLCBjb21waWxlcyB0aGlzIHNvXG4gKiB0aGF0IGl0IGlzIHJlYWR5IGZvciBoaWdobGlnaHRpbmcgY29kZS5cbiAqIEBwYXJhbSB7TGFuZ3VhZ2V9IGxhbmd1YWdlXG4gKiBAcmV0dXJucyB7Q29tcGlsZWRMYW5ndWFnZX1cbiAqL1xuZnVuY3Rpb24gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKSB7XG4gIC8qKlxuICAgKiBCdWlsZHMgYSByZWdleCB3aXRoIHRoZSBjYXNlIHNlbnNpdGl2aXR5IG9mIHRoZSBjdXJyZW50IGxhbmd1YWdlXG4gICAqXG4gICAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nfSB2YWx1ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtnbG9iYWxdXG4gICAqL1xuICBmdW5jdGlvbiBsYW5nUmUodmFsdWUsIGdsb2JhbCkge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgc291cmNlKHZhbHVlKSxcbiAgICAgICdtJ1xuICAgICAgKyAobGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSA/ICdpJyA6ICcnKVxuICAgICAgKyAobGFuZ3VhZ2UudW5pY29kZVJlZ2V4ID8gJ3UnIDogJycpXG4gICAgICArIChnbG9iYWwgPyAnZycgOiAnJylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAgU3RvcmVzIG11bHRpcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIGFsbG93cyB5b3UgdG8gcXVpY2tseSBzZWFyY2ggZm9yXG4gICAgdGhlbSBhbGwgaW4gYSBzdHJpbmcgc2ltdWx0YW5lb3VzbHkgLSByZXR1cm5pbmcgdGhlIGZpcnN0IG1hdGNoLiAgSXQgZG9lc1xuICAgIHRoaXMgYnkgY3JlYXRpbmcgYSBodWdlIChhfGJ8YykgcmVnZXggLSBlYWNoIGluZGl2aWR1YWwgaXRlbSB3cmFwcGVkIHdpdGggKClcbiAgICBhbmQgam9pbmVkIGJ5IGB8YCAtIHVzaW5nIG1hdGNoIGdyb3VwcyB0byB0cmFjayBwb3NpdGlvbi4gIFdoZW4gYSBtYXRjaCBpc1xuICAgIGZvdW5kIGNoZWNraW5nIHdoaWNoIHBvc2l0aW9uIGluIHRoZSBhcnJheSBoYXMgY29udGVudCBhbGxvd3MgdXMgdG8gZmlndXJlXG4gICAgb3V0IHdoaWNoIG9mIHRoZSBvcmlnaW5hbCByZWdleGVzIC8gbWF0Y2ggZ3JvdXBzIHRyaWdnZXJlZCB0aGUgbWF0Y2guXG5cbiAgICBUaGUgbWF0Y2ggb2JqZWN0IGl0c2VsZiAodGhlIHJlc3VsdCBvZiBgUmVnZXguZXhlY2ApIGlzIHJldHVybmVkIGJ1dCBhbHNvXG4gICAgZW5oYW5jZWQgYnkgbWVyZ2luZyBpbiBhbnkgbWV0YS1kYXRhIHRoYXQgd2FzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgcmVnZXguXG4gICAgVGhpcyBpcyBob3cgd2Uga2VlcCB0cmFjayBvZiB3aGljaCBtb2RlIG1hdGNoZWQsIGFuZCB3aGF0IHR5cGUgb2YgcnVsZVxuICAgIChgaWxsZWdhbGAsIGBiZWdpbmAsIGVuZCwgZXRjKS5cbiAgKi9cbiAgY2xhc3MgTXVsdGlSZWdleCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLm1hdGNoSW5kZXhlcyA9IHt9O1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5yZWdleGVzID0gW107XG4gICAgICB0aGlzLm1hdGNoQXQgPSAxO1xuICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFkZFJ1bGUocmUsIG9wdHMpIHtcbiAgICAgIG9wdHMucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uKys7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLm1hdGNoSW5kZXhlc1t0aGlzLm1hdGNoQXRdID0gb3B0cztcbiAgICAgIHRoaXMucmVnZXhlcy5wdXNoKFtvcHRzLCByZV0pO1xuICAgICAgdGhpcy5tYXRjaEF0ICs9IGNvdW50TWF0Y2hHcm91cHMocmUpICsgMTtcbiAgICB9XG5cbiAgICBjb21waWxlKCkge1xuICAgICAgaWYgKHRoaXMucmVnZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gYXZvaWRzIHRoZSBuZWVkIHRvIGNoZWNrIGxlbmd0aCBldmVyeSB0aW1lIGV4ZWMgaXMgY2FsbGVkXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5leGVjID0gKCkgPT4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRlcm1pbmF0b3JzID0gdGhpcy5yZWdleGVzLm1hcChlbCA9PiBlbFsxXSk7XG4gICAgICB0aGlzLm1hdGNoZXJSZSA9IGxhbmdSZShfcmV3cml0ZUJhY2tyZWZlcmVuY2VzKHRlcm1pbmF0b3JzLCB7IGpvaW5XaXRoOiAnfCcgfSksIHRydWUpO1xuICAgICAgdGhpcy5sYXN0SW5kZXggPSAwO1xuICAgIH1cblxuICAgIC8qKiBAcGFyYW0ge3N0cmluZ30gcyAqL1xuICAgIGV4ZWMocykge1xuICAgICAgdGhpcy5tYXRjaGVyUmUubGFzdEluZGV4ID0gdGhpcy5sYXN0SW5kZXg7XG4gICAgICBjb25zdCBtYXRjaCA9IHRoaXMubWF0Y2hlclJlLmV4ZWMocyk7XG4gICAgICBpZiAoIW1hdGNoKSB7IHJldHVybiBudWxsOyB9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgICAgIGNvbnN0IGkgPSBtYXRjaC5maW5kSW5kZXgoKGVsLCBpKSA9PiBpID4gMCAmJiBlbCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IG1hdGNoRGF0YSA9IHRoaXMubWF0Y2hJbmRleGVzW2ldO1xuICAgICAgLy8gdHJpbSBvZmYgYW55IGVhcmxpZXIgbm9uLXJlbGV2YW50IG1hdGNoIGdyb3VwcyAoaWUsIHRoZSBvdGhlciByZWdleFxuICAgICAgLy8gbWF0Y2ggZ3JvdXBzIHRoYXQgbWFrZSB1cCB0aGUgbXVsdGktbWF0Y2hlcilcbiAgICAgIG1hdGNoLnNwbGljZSgwLCBpKTtcblxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obWF0Y2gsIG1hdGNoRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICBDcmVhdGVkIHRvIHNvbHZlIHRoZSBrZXkgZGVmaWNpZW50bHkgd2l0aCBNdWx0aVJlZ2V4IC0gdGhlcmUgaXMgbm8gd2F5IHRvXG4gICAgdGVzdCBmb3IgbXVsdGlwbGUgbWF0Y2hlcyBhdCBhIHNpbmdsZSBsb2NhdGlvbi4gIFdoeSB3b3VsZCB3ZSBuZWVkIHRvIGRvXG4gICAgdGhhdD8gIEluIHRoZSBmdXR1cmUgYSBtb3JlIGR5bmFtaWMgZW5naW5lIHdpbGwgYWxsb3cgY2VydGFpbiBtYXRjaGVzIHRvIGJlXG4gICAgaWdub3JlZC4gIEFuIGV4YW1wbGU6IGlmIHdlIG1hdGNoZWQgc2F5IHRoZSAzcmQgcmVnZXggaW4gYSBsYXJnZSBncm91cCBidXRcbiAgICBkZWNpZGVkIHRvIGlnbm9yZSBpdCAtIHdlJ2QgbmVlZCB0byBzdGFydGVkIHRlc3RpbmcgYWdhaW4gYXQgdGhlIDR0aFxuICAgIHJlZ2V4Li4uIGJ1dCBNdWx0aVJlZ2V4IGl0c2VsZiBnaXZlcyB1cyBubyByZWFsIHdheSB0byBkbyB0aGF0LlxuXG4gICAgU28gd2hhdCB0aGlzIGNsYXNzIGNyZWF0ZXMgTXVsdGlSZWdleHMgb24gdGhlIGZseSBmb3Igd2hhdGV2ZXIgc2VhcmNoXG4gICAgcG9zaXRpb24gdGhleSBhcmUgbmVlZGVkLlxuXG4gICAgTk9URTogVGhlc2UgYWRkaXRpb25hbCBNdWx0aVJlZ2V4IG9iamVjdHMgYXJlIGNyZWF0ZWQgZHluYW1pY2FsbHkuICBGb3IgbW9zdFxuICAgIGdyYW1tYXJzIG1vc3Qgb2YgdGhlIHRpbWUgd2Ugd2lsbCBuZXZlciBhY3R1YWxseSBuZWVkIGFueXRoaW5nIG1vcmUgdGhhbiB0aGVcbiAgICBmaXJzdCBNdWx0aVJlZ2V4IC0gc28gdGhpcyBzaG91bGRuJ3QgaGF2ZSB0b28gbXVjaCBvdmVyaGVhZC5cblxuICAgIFNheSB0aGlzIGlzIG91ciBzZWFyY2ggZ3JvdXAsIGFuZCB3ZSBtYXRjaCByZWdleDMsIGJ1dCB3aXNoIHRvIGlnbm9yZSBpdC5cblxuICAgICAgcmVnZXgxIHwgcmVnZXgyIHwgcmVnZXgzIHwgcmVnZXg0IHwgcmVnZXg1ICAgICcgaWUsIHN0YXJ0QXQgPSAwXG5cbiAgICBXaGF0IHdlIG5lZWQgaXMgYSBuZXcgTXVsdGlSZWdleCB0aGF0IG9ubHkgaW5jbHVkZXMgdGhlIHJlbWFpbmluZ1xuICAgIHBvc3NpYmlsaXRpZXM6XG5cbiAgICAgIHJlZ2V4NCB8IHJlZ2V4NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGllLCBzdGFydEF0ID0gM1xuXG4gICAgVGhpcyBjbGFzcyB3cmFwcyBhbGwgdGhhdCBjb21wbGV4aXR5IHVwIGluIGEgc2ltcGxlIEFQSS4uLiBgc3RhcnRBdGAgZGVjaWRlc1xuICAgIHdoZXJlIGluIHRoZSBhcnJheSBvZiBleHByZXNzaW9ucyB0byBzdGFydCBkb2luZyB0aGUgbWF0Y2hpbmcuIEl0XG4gICAgYXV0by1pbmNyZW1lbnRzLCBzbyBpZiBhIG1hdGNoIGlzIGZvdW5kIGF0IHBvc2l0aW9uIDIsIHRoZW4gc3RhcnRBdCB3aWxsIGJlXG4gICAgc2V0IHRvIDMuICBJZiB0aGUgZW5kIGlzIHJlYWNoZWQgc3RhcnRBdCB3aWxsIHJldHVybiB0byAwLlxuXG4gICAgTU9TVCBvZiB0aGUgdGltZSB0aGUgcGFyc2VyIHdpbGwgYmUgc2V0dGluZyBzdGFydEF0IG1hbnVhbGx5IHRvIDAuXG4gICovXG4gIGNsYXNzIFJlc3VtYWJsZU11bHRpUmVnZXgge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5tdWx0aVJlZ2V4ZXMgPSBbXTtcbiAgICAgIHRoaXMuY291bnQgPSAwO1xuXG4gICAgICB0aGlzLmxhc3RJbmRleCA9IDA7XG4gICAgICB0aGlzLnJlZ2V4SW5kZXggPSAwO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXRNYXRjaGVyKGluZGV4KSB7XG4gICAgICBpZiAodGhpcy5tdWx0aVJlZ2V4ZXNbaW5kZXhdKSByZXR1cm4gdGhpcy5tdWx0aVJlZ2V4ZXNbaW5kZXhdO1xuXG4gICAgICBjb25zdCBtYXRjaGVyID0gbmV3IE11bHRpUmVnZXgoKTtcbiAgICAgIHRoaXMucnVsZXMuc2xpY2UoaW5kZXgpLmZvckVhY2goKFtyZSwgb3B0c10pID0+IG1hdGNoZXIuYWRkUnVsZShyZSwgb3B0cykpO1xuICAgICAgbWF0Y2hlci5jb21waWxlKCk7XG4gICAgICB0aGlzLm11bHRpUmVnZXhlc1tpbmRleF0gPSBtYXRjaGVyO1xuICAgICAgcmV0dXJuIG1hdGNoZXI7XG4gICAgfVxuXG4gICAgcmVzdW1pbmdTY2FuQXRTYW1lUG9zaXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdleEluZGV4ICE9PSAwO1xuICAgIH1cblxuICAgIGNvbnNpZGVyQWxsKCkge1xuICAgICAgdGhpcy5yZWdleEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgYWRkUnVsZShyZSwgb3B0cykge1xuICAgICAgdGhpcy5ydWxlcy5wdXNoKFtyZSwgb3B0c10pO1xuICAgICAgaWYgKG9wdHMudHlwZSA9PT0gXCJiZWdpblwiKSB0aGlzLmNvdW50Kys7XG4gICAgfVxuXG4gICAgLyoqIEBwYXJhbSB7c3RyaW5nfSBzICovXG4gICAgZXhlYyhzKSB7XG4gICAgICBjb25zdCBtID0gdGhpcy5nZXRNYXRjaGVyKHRoaXMucmVnZXhJbmRleCk7XG4gICAgICBtLmxhc3RJbmRleCA9IHRoaXMubGFzdEluZGV4O1xuICAgICAgbGV0IHJlc3VsdCA9IG0uZXhlYyhzKTtcblxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBiZWNhdXNlIHdlIGhhdmUgbm8gZWFzeSB3YXkgdG8gc2F5IFwicmVzdW1lIHNjYW5uaW5nIGF0IHRoZVxuICAgICAgLy8gZXhpc3RpbmcgcG9zaXRpb24gYnV0IGFsc28gc2tpcCB0aGUgY3VycmVudCBydWxlIE9OTFlcIi4gV2hhdCBoYXBwZW5zIGlzXG4gICAgICAvLyBhbGwgcHJpb3IgcnVsZXMgYXJlIGFsc28gc2tpcHBlZCB3aGljaCBjYW4gcmVzdWx0IGluIG1hdGNoaW5nIHRoZSB3cm9uZ1xuICAgICAgLy8gdGhpbmcuIEV4YW1wbGUgb2YgbWF0Y2hpbmcgXCJib29nZXJcIjpcblxuICAgICAgLy8gb3VyIG1hdGNoZXIgaXMgW3N0cmluZywgXCJib29nZXJcIiwgbnVtYmVyXVxuICAgICAgLy9cbiAgICAgIC8vIC4uLi5ib29nZXIuLi4uXG5cbiAgICAgIC8vIGlmIFwiYm9vZ2VyXCIgaXMgaWdub3JlZCB0aGVuIHdlJ2QgcmVhbGx5IG5lZWQgYSByZWdleCB0byBzY2FuIGZyb20gdGhlXG4gICAgICAvLyBTQU1FIHBvc2l0aW9uIGZvciBvbmx5OiBbc3RyaW5nLCBudW1iZXJdIGJ1dCBpZ25vcmluZyBcImJvb2dlclwiIChpZiBpdFxuICAgICAgLy8gd2FzIHRoZSBmaXJzdCBtYXRjaCksIGEgc2ltcGxlIHJlc3VtZSB3b3VsZCBzY2FuIGFoZWFkIHdobyBrbm93cyBob3dcbiAgICAgIC8vIGZhciBsb29raW5nIG9ubHkgZm9yIFwibnVtYmVyXCIsIGlnbm9yaW5nIHBvdGVudGlhbCBzdHJpbmcgbWF0Y2hlcyAob3JcbiAgICAgIC8vIGZ1dHVyZSBcImJvb2dlclwiIG1hdGNoZXMgdGhhdCBtaWdodCBiZSB2YWxpZC4pXG5cbiAgICAgIC8vIFNvIHdoYXQgd2UgZG86IFdlIGV4ZWN1dGUgdHdvIG1hdGNoZXJzLCBvbmUgcmVzdW1pbmcgYXQgdGhlIHNhbWVcbiAgICAgIC8vIHBvc2l0aW9uLCBidXQgdGhlIHNlY29uZCBmdWxsIG1hdGNoZXIgc3RhcnRpbmcgYXQgdGhlIHBvc2l0aW9uIGFmdGVyOlxuXG4gICAgICAvLyAgICAgLy0tLSByZXN1bWUgZmlyc3QgcmVnZXggbWF0Y2ggaGVyZSAoZm9yIFtudW1iZXJdKVxuICAgICAgLy8gICAgIHwvLS0tLSBmdWxsIG1hdGNoIGhlcmUgZm9yIFtzdHJpbmcsIFwiYm9vZ2VyXCIsIG51bWJlcl1cbiAgICAgIC8vICAgICB2dlxuICAgICAgLy8gLi4uLmJvb2dlci4uLi5cblxuICAgICAgLy8gV2hpY2ggZXZlciByZXN1bHRzIGluIGEgbWF0Y2ggZmlyc3QgaXMgdGhlbiB1c2VkLiBTbyB0aGlzIDMtNCBzdGVwXG4gICAgICAvLyBwcm9jZXNzIGVzc2VudGlhbGx5IGFsbG93cyB1cyB0byBzYXkgXCJtYXRjaCBhdCB0aGlzIHBvc2l0aW9uLCBleGNsdWRpbmdcbiAgICAgIC8vIGEgcHJpb3IgcnVsZSB0aGF0IHdhcyBpZ25vcmVkXCIuXG4gICAgICAvL1xuICAgICAgLy8gMS4gTWF0Y2ggXCJib29nZXJcIiBmaXJzdCwgaWdub3JlLiBBbHNvIHByb3ZlcyB0aGF0IFtzdHJpbmddIGRvZXMgbm9uIG1hdGNoLlxuICAgICAgLy8gMi4gUmVzdW1lIG1hdGNoaW5nIGZvciBbbnVtYmVyXVxuICAgICAgLy8gMy4gTWF0Y2ggYXQgaW5kZXggKyAxIGZvciBbc3RyaW5nLCBcImJvb2dlclwiLCBudW1iZXJdXG4gICAgICAvLyA0LiBJZiAjMiBhbmQgIzMgcmVzdWx0IGluIG1hdGNoZXMsIHdoaWNoIGNhbWUgZmlyc3Q/XG4gICAgICBpZiAodGhpcy5yZXN1bWluZ1NjYW5BdFNhbWVQb3NpdGlvbigpKSB7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmluZGV4ID09PSB0aGlzLmxhc3RJbmRleCkgOyBlbHNlIHsgLy8gdXNlIHRoZSBzZWNvbmQgbWF0Y2hlciByZXN1bHRcbiAgICAgICAgICBjb25zdCBtMiA9IHRoaXMuZ2V0TWF0Y2hlcigwKTtcbiAgICAgICAgICBtMi5sYXN0SW5kZXggPSB0aGlzLmxhc3RJbmRleCArIDE7XG4gICAgICAgICAgcmVzdWx0ID0gbTIuZXhlYyhzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMucmVnZXhJbmRleCArPSByZXN1bHQucG9zaXRpb24gKyAxO1xuICAgICAgICBpZiAodGhpcy5yZWdleEluZGV4ID09PSB0aGlzLmNvdW50KSB7XG4gICAgICAgICAgLy8gd3JhcC1hcm91bmQgdG8gY29uc2lkZXJpbmcgYWxsIG1hdGNoZXMgYWdhaW5cbiAgICAgICAgICB0aGlzLmNvbnNpZGVyQWxsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBtb2RlLCBidWlsZHMgYSBodWdlIFJlc3VtYWJsZU11bHRpUmVnZXggdGhhdCBjYW4gYmUgdXNlZCB0byB3YWxrXG4gICAqIHRoZSBjb250ZW50IGFuZCBmaW5kIG1hdGNoZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gICAqIEByZXR1cm5zIHtSZXN1bWFibGVNdWx0aVJlZ2V4fVxuICAgKi9cbiAgZnVuY3Rpb24gYnVpbGRNb2RlUmVnZXgobW9kZSkge1xuICAgIGNvbnN0IG1tID0gbmV3IFJlc3VtYWJsZU11bHRpUmVnZXgoKTtcblxuICAgIG1vZGUuY29udGFpbnMuZm9yRWFjaCh0ZXJtID0+IG1tLmFkZFJ1bGUodGVybS5iZWdpbiwgeyBydWxlOiB0ZXJtLCB0eXBlOiBcImJlZ2luXCIgfSkpO1xuXG4gICAgaWYgKG1vZGUudGVybWluYXRvckVuZCkge1xuICAgICAgbW0uYWRkUnVsZShtb2RlLnRlcm1pbmF0b3JFbmQsIHsgdHlwZTogXCJlbmRcIiB9KTtcbiAgICB9XG4gICAgaWYgKG1vZGUuaWxsZWdhbCkge1xuICAgICAgbW0uYWRkUnVsZShtb2RlLmlsbGVnYWwsIHsgdHlwZTogXCJpbGxlZ2FsXCIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1tO1xuICB9XG5cbiAgLyoqIHNraXAgdnMgYWJvcnQgdnMgaWdub3JlXG4gICAqXG4gICAqIEBza2lwICAgLSBUaGUgbW9kZSBpcyBzdGlsbCBlbnRlcmVkIGFuZCBleGl0ZWQgbm9ybWFsbHkgKGFuZCBjb250YWlucyBydWxlcyBhcHBseSksXG4gICAqICAgICAgICAgICBidXQgYWxsIGNvbnRlbnQgaXMgaGVsZCBhbmQgYWRkZWQgdG8gdGhlIHBhcmVudCBidWZmZXIgcmF0aGVyIHRoYW4gYmVpbmdcbiAgICogICAgICAgICAgIG91dHB1dCB3aGVuIHRoZSBtb2RlIGVuZHMuICBNb3N0bHkgdXNlZCB3aXRoIGBzdWJsYW5ndWFnZWAgdG8gYnVpbGQgdXBcbiAgICogICAgICAgICAgIGEgc2luZ2xlIGxhcmdlIGJ1ZmZlciB0aGFuIGNhbiBiZSBwYXJzZWQgYnkgc3VibGFuZ3VhZ2UuXG4gICAqXG4gICAqICAgICAgICAgICAgIC0gVGhlIG1vZGUgYmVnaW4gYW5kcyBlbmRzIG5vcm1hbGx5LlxuICAgKiAgICAgICAgICAgICAtIENvbnRlbnQgbWF0Y2hlZCBpcyBhZGRlZCB0byB0aGUgcGFyZW50IG1vZGUgYnVmZmVyLlxuICAgKiAgICAgICAgICAgICAtIFRoZSBwYXJzZXIgY3Vyc29yIGlzIG1vdmVkIGZvcndhcmQgbm9ybWFsbHkuXG4gICAqXG4gICAqIEBhYm9ydCAgLSBBIGhhY2sgcGxhY2Vob2xkZXIgdW50aWwgd2UgaGF2ZSBpZ25vcmUuICBBYm9ydHMgdGhlIG1vZGUgKGFzIGlmIGl0XG4gICAqICAgICAgICAgICBuZXZlciBtYXRjaGVkKSBidXQgRE9FUyBOT1QgY29udGludWUgdG8gbWF0Y2ggc3Vic2VxdWVudCBgY29udGFpbnNgXG4gICAqICAgICAgICAgICBtb2Rlcy4gIEFib3J0IGlzIGJhZC9zdWJvcHRpbWFsIGJlY2F1c2UgaXQgY2FuIHJlc3VsdCBpbiBtb2Rlc1xuICAgKiAgICAgICAgICAgZmFydGhlciBkb3duIG5vdCBnZXR0aW5nIGFwcGxpZWQgYmVjYXVzZSBhbiBlYXJsaWVyIHJ1bGUgZWF0cyB0aGVcbiAgICogICAgICAgICAgIGNvbnRlbnQgYnV0IHRoZW4gYWJvcnRzLlxuICAgKlxuICAgKiAgICAgICAgICAgICAtIFRoZSBtb2RlIGRvZXMgbm90IGJlZ2luLlxuICAgKiAgICAgICAgICAgICAtIENvbnRlbnQgbWF0Y2hlZCBieSBgYmVnaW5gIGlzIGFkZGVkIHRvIHRoZSBtb2RlIGJ1ZmZlci5cbiAgICogICAgICAgICAgICAgLSBUaGUgcGFyc2VyIGN1cnNvciBpcyBtb3ZlZCBmb3J3YXJkIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBAaWdub3JlIC0gSWdub3JlcyB0aGUgbW9kZSAoYXMgaWYgaXQgbmV2ZXIgbWF0Y2hlZCkgYW5kIGNvbnRpbnVlcyB0byBtYXRjaCBhbnlcbiAgICogICAgICAgICAgIHN1YnNlcXVlbnQgYGNvbnRhaW5zYCBtb2Rlcy4gIElnbm9yZSBpc24ndCB0ZWNobmljYWxseSBwb3NzaWJsZSB3aXRoXG4gICAqICAgICAgICAgICB0aGUgY3VycmVudCBwYXJzZXIgaW1wbGVtZW50YXRpb24uXG4gICAqXG4gICAqICAgICAgICAgICAgIC0gVGhlIG1vZGUgZG9lcyBub3QgYmVnaW4uXG4gICAqICAgICAgICAgICAgIC0gQ29udGVudCBtYXRjaGVkIGJ5IGBiZWdpbmAgaXMgaWdub3JlZC5cbiAgICogICAgICAgICAgICAgLSBUaGUgcGFyc2VyIGN1cnNvciBpcyBub3QgbW92ZWQgZm9yd2FyZC5cbiAgICovXG5cbiAgLyoqXG4gICAqIENvbXBpbGVzIGFuIGluZGl2aWR1YWwgbW9kZVxuICAgKlxuICAgKiBUaGlzIGNhbiByYWlzZSBhbiBlcnJvciBpZiB0aGUgbW9kZSBjb250YWlucyBjZXJ0YWluIGRldGVjdGFibGUga25vd24gbG9naWNcbiAgICogaXNzdWVzLlxuICAgKiBAcGFyYW0ge01vZGV9IG1vZGVcbiAgICogQHBhcmFtIHtDb21waWxlZE1vZGUgfCBudWxsfSBbcGFyZW50XVxuICAgKiBAcmV0dXJucyB7Q29tcGlsZWRNb2RlIHwgbmV2ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBjb21waWxlTW9kZShtb2RlLCBwYXJlbnQpIHtcbiAgICBjb25zdCBjbW9kZSA9IC8qKiBAdHlwZSBDb21waWxlZE1vZGUgKi8gKG1vZGUpO1xuICAgIGlmIChtb2RlLmlzQ29tcGlsZWQpIHJldHVybiBjbW9kZTtcblxuICAgIFtcbiAgICAgIHNjb3BlQ2xhc3NOYW1lLFxuICAgICAgLy8gZG8gdGhpcyBlYXJseSBzbyBjb21waWxlciBleHRlbnNpb25zIGdlbmVyYWxseSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0XG4gICAgICAvLyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBtYXRjaC9iZWdpblxuICAgICAgY29tcGlsZU1hdGNoLFxuICAgICAgTXVsdGlDbGFzcyxcbiAgICAgIGJlZm9yZU1hdGNoRXh0XG4gICAgXS5mb3JFYWNoKGV4dCA9PiBleHQobW9kZSwgcGFyZW50KSk7XG5cbiAgICBsYW5ndWFnZS5jb21waWxlckV4dGVuc2lvbnMuZm9yRWFjaChleHQgPT4gZXh0KG1vZGUsIHBhcmVudCkpO1xuXG4gICAgLy8gX19iZWZvcmVCZWdpbiBpcyBjb25zaWRlcmVkIHByaXZhdGUgQVBJLCBpbnRlcm5hbCB1c2Ugb25seVxuICAgIG1vZGUuX19iZWZvcmVCZWdpbiA9IG51bGw7XG5cbiAgICBbXG4gICAgICBiZWdpbktleXdvcmRzLFxuICAgICAgLy8gZG8gdGhpcyBsYXRlciBzbyBjb21waWxlciBleHRlbnNpb25zIHRoYXQgY29tZSBlYXJsaWVyIGhhdmUgYWNjZXNzIHRvIHRoZVxuICAgICAgLy8gcmF3IGFycmF5IGlmIHRoZXkgd2FudGVkIHRvIHBlcmhhcHMgbWFuaXB1bGF0ZSBpdCwgZXRjLlxuICAgICAgY29tcGlsZUlsbGVnYWwsXG4gICAgICAvLyBkZWZhdWx0IHRvIDEgcmVsZXZhbmNlIGlmIG5vdCBzcGVjaWZpZWRcbiAgICAgIGNvbXBpbGVSZWxldmFuY2VcbiAgICBdLmZvckVhY2goZXh0ID0+IGV4dChtb2RlLCBwYXJlbnQpKTtcblxuICAgIG1vZGUuaXNDb21waWxlZCA9IHRydWU7XG5cbiAgICBsZXQga2V5d29yZFBhdHRlcm4gPSBudWxsO1xuICAgIGlmICh0eXBlb2YgbW9kZS5rZXl3b3JkcyA9PT0gXCJvYmplY3RcIiAmJiBtb2RlLmtleXdvcmRzLiRwYXR0ZXJuKSB7XG4gICAgICAvLyB3ZSBuZWVkIGEgY29weSBiZWNhdXNlIGtleXdvcmRzIG1pZ2h0IGJlIGNvbXBpbGVkIG11bHRpcGxlIHRpbWVzXG4gICAgICAvLyBzbyB3ZSBjYW4ndCBnbyBkZWxldGluZyAkcGF0dGVybiBmcm9tIHRoZSBvcmlnaW5hbCBvbiB0aGUgZmlyc3RcbiAgICAgIC8vIHBhc3NcbiAgICAgIG1vZGUua2V5d29yZHMgPSBPYmplY3QuYXNzaWduKHt9LCBtb2RlLmtleXdvcmRzKTtcbiAgICAgIGtleXdvcmRQYXR0ZXJuID0gbW9kZS5rZXl3b3Jkcy4kcGF0dGVybjtcbiAgICAgIGRlbGV0ZSBtb2RlLmtleXdvcmRzLiRwYXR0ZXJuO1xuICAgIH1cbiAgICBrZXl3b3JkUGF0dGVybiA9IGtleXdvcmRQYXR0ZXJuIHx8IC9cXHcrLztcblxuICAgIGlmIChtb2RlLmtleXdvcmRzKSB7XG4gICAgICBtb2RlLmtleXdvcmRzID0gY29tcGlsZUtleXdvcmRzKG1vZGUua2V5d29yZHMsIGxhbmd1YWdlLmNhc2VfaW5zZW5zaXRpdmUpO1xuICAgIH1cblxuICAgIGNtb2RlLmtleXdvcmRQYXR0ZXJuUmUgPSBsYW5nUmUoa2V5d29yZFBhdHRlcm4sIHRydWUpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgaWYgKCFtb2RlLmJlZ2luKSBtb2RlLmJlZ2luID0gL1xcQnxcXGIvO1xuICAgICAgY21vZGUuYmVnaW5SZSA9IGxhbmdSZShjbW9kZS5iZWdpbik7XG4gICAgICBpZiAoIW1vZGUuZW5kICYmICFtb2RlLmVuZHNXaXRoUGFyZW50KSBtb2RlLmVuZCA9IC9cXEJ8XFxiLztcbiAgICAgIGlmIChtb2RlLmVuZCkgY21vZGUuZW5kUmUgPSBsYW5nUmUoY21vZGUuZW5kKTtcbiAgICAgIGNtb2RlLnRlcm1pbmF0b3JFbmQgPSBzb3VyY2UoY21vZGUuZW5kKSB8fCAnJztcbiAgICAgIGlmIChtb2RlLmVuZHNXaXRoUGFyZW50ICYmIHBhcmVudC50ZXJtaW5hdG9yRW5kKSB7XG4gICAgICAgIGNtb2RlLnRlcm1pbmF0b3JFbmQgKz0gKG1vZGUuZW5kID8gJ3wnIDogJycpICsgcGFyZW50LnRlcm1pbmF0b3JFbmQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtb2RlLmlsbGVnYWwpIGNtb2RlLmlsbGVnYWxSZSA9IGxhbmdSZSgvKiogQHR5cGUge1JlZ0V4cCB8IHN0cmluZ30gKi8gKG1vZGUuaWxsZWdhbCkpO1xuICAgIGlmICghbW9kZS5jb250YWlucykgbW9kZS5jb250YWlucyA9IFtdO1xuXG4gICAgbW9kZS5jb250YWlucyA9IFtdLmNvbmNhdCguLi5tb2RlLmNvbnRhaW5zLm1hcChmdW5jdGlvbihjKSB7XG4gICAgICByZXR1cm4gZXhwYW5kT3JDbG9uZU1vZGUoYyA9PT0gJ3NlbGYnID8gbW9kZSA6IGMpO1xuICAgIH0pKTtcbiAgICBtb2RlLmNvbnRhaW5zLmZvckVhY2goZnVuY3Rpb24oYykgeyBjb21waWxlTW9kZSgvKiogQHR5cGUgTW9kZSAqLyAoYyksIGNtb2RlKTsgfSk7XG5cbiAgICBpZiAobW9kZS5zdGFydHMpIHtcbiAgICAgIGNvbXBpbGVNb2RlKG1vZGUuc3RhcnRzLCBwYXJlbnQpO1xuICAgIH1cblxuICAgIGNtb2RlLm1hdGNoZXIgPSBidWlsZE1vZGVSZWdleChjbW9kZSk7XG4gICAgcmV0dXJuIGNtb2RlO1xuICB9XG5cbiAgaWYgKCFsYW5ndWFnZS5jb21waWxlckV4dGVuc2lvbnMpIGxhbmd1YWdlLmNvbXBpbGVyRXh0ZW5zaW9ucyA9IFtdO1xuXG4gIC8vIHNlbGYgaXMgbm90IHZhbGlkIGF0IHRoZSB0b3AtbGV2ZWxcbiAgaWYgKGxhbmd1YWdlLmNvbnRhaW5zICYmIGxhbmd1YWdlLmNvbnRhaW5zLmluY2x1ZGVzKCdzZWxmJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFUlI6IGNvbnRhaW5zIGBzZWxmYCBpcyBub3Qgc3VwcG9ydGVkIGF0IHRoZSB0b3AtbGV2ZWwgb2YgYSBsYW5ndWFnZS4gIFNlZSBkb2N1bWVudGF0aW9uLlwiKTtcbiAgfVxuXG4gIC8vIHdlIG5lZWQgYSBudWxsIG9iamVjdCwgd2hpY2ggaW5oZXJpdCB3aWxsIGd1YXJhbnRlZVxuICBsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzID0gaW5oZXJpdCQxKGxhbmd1YWdlLmNsYXNzTmFtZUFsaWFzZXMgfHwge30pO1xuXG4gIHJldHVybiBjb21waWxlTW9kZSgvKiogQHR5cGUgTW9kZSAqLyAobGFuZ3VhZ2UpKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgbW9kZSBoYXMgYSBkZXBlbmRlbmN5IG9uIGl0J3MgcGFyZW50IG9yIG5vdFxuICpcbiAqIElmIGEgbW9kZSBkb2VzIGhhdmUgYSBwYXJlbnQgZGVwZW5kZW5jeSB0aGVuIG9mdGVuIHdlIG5lZWQgdG8gY2xvbmUgaXQgaWZcbiAqIGl0J3MgdXNlZCBpbiBtdWx0aXBsZSBwbGFjZXMgc28gdGhhdCBlYWNoIGNvcHkgcG9pbnRzIHRvIHRoZSBjb3JyZWN0IHBhcmVudCxcbiAqIHdoZXJlLWFzIG1vZGVzIHdpdGhvdXQgYSBwYXJlbnQgY2FuIG9mdGVuIHNhZmVseSBiZSByZS11c2VkIGF0IHRoZSBib3R0b20gb2ZcbiAqIGEgbW9kZSBjaGFpbi5cbiAqXG4gKiBAcGFyYW0ge01vZGUgfCBudWxsfSBtb2RlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBpcyB0aGVyZSBhIGRlcGVuZGVuY3kgb24gdGhlIHBhcmVudD9cbiAqICovXG5mdW5jdGlvbiBkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkge1xuICBpZiAoIW1vZGUpIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gbW9kZS5lbmRzV2l0aFBhcmVudCB8fCBkZXBlbmRlbmN5T25QYXJlbnQobW9kZS5zdGFydHMpO1xufVxuXG4vKipcbiAqIEV4cGFuZHMgYSBtb2RlIG9yIGNsb25lcyBpdCBpZiBuZWNlc3NhcnlcbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbW9kZXMgd2l0aCBwYXJlbnRhbCBkZXBlbmRlbmNlaXMgKHNlZSBub3RlcyBvblxuICogYGRlcGVuZGVuY3lPblBhcmVudGApIGFuZCBmb3Igbm9kZXMgdGhhdCBoYXZlIGB2YXJpYW50c2AgLSB3aGljaCBtdXN0IHRoZW4gYmVcbiAqIGV4cGxvZGVkIGludG8gdGhlaXIgb3duIGluZGl2aWR1YWwgbW9kZXMgYXQgY29tcGlsZSB0aW1lLlxuICpcbiAqIEBwYXJhbSB7TW9kZX0gbW9kZVxuICogQHJldHVybnMge01vZGUgfCBNb2RlW119XG4gKiAqL1xuZnVuY3Rpb24gZXhwYW5kT3JDbG9uZU1vZGUobW9kZSkge1xuICBpZiAobW9kZS52YXJpYW50cyAmJiAhbW9kZS5jYWNoZWRWYXJpYW50cykge1xuICAgIG1vZGUuY2FjaGVkVmFyaWFudHMgPSBtb2RlLnZhcmlhbnRzLm1hcChmdW5jdGlvbih2YXJpYW50KSB7XG4gICAgICByZXR1cm4gaW5oZXJpdCQxKG1vZGUsIHsgdmFyaWFudHM6IG51bGwgfSwgdmFyaWFudCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBFWFBBTkRcbiAgLy8gaWYgd2UgaGF2ZSB2YXJpYW50cyB0aGVuIGVzc2VudGlhbGx5IFwicmVwbGFjZVwiIHRoZSBtb2RlIHdpdGggdGhlIHZhcmlhbnRzXG4gIC8vIHRoaXMgaGFwcGVucyBpbiBjb21waWxlTW9kZSwgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbVxuICBpZiAobW9kZS5jYWNoZWRWYXJpYW50cykge1xuICAgIHJldHVybiBtb2RlLmNhY2hlZFZhcmlhbnRzO1xuICB9XG5cbiAgLy8gQ0xPTkVcbiAgLy8gaWYgd2UgaGF2ZSBkZXBlbmRlbmNpZXMgb24gcGFyZW50cyB0aGVuIHdlIG5lZWQgYSB1bmlxdWVcbiAgLy8gaW5zdGFuY2Ugb2Ygb3Vyc2VsdmVzLCBzbyB3ZSBjYW4gYmUgcmV1c2VkIHdpdGggbWFueVxuICAvLyBkaWZmZXJlbnQgcGFyZW50cyB3aXRob3V0IGlzc3VlXG4gIGlmIChkZXBlbmRlbmN5T25QYXJlbnQobW9kZSkpIHtcbiAgICByZXR1cm4gaW5oZXJpdCQxKG1vZGUsIHsgc3RhcnRzOiBtb2RlLnN0YXJ0cyA/IGluaGVyaXQkMShtb2RlLnN0YXJ0cykgOiBudWxsIH0pO1xuICB9XG5cbiAgaWYgKE9iamVjdC5pc0Zyb3plbihtb2RlKSkge1xuICAgIHJldHVybiBpbmhlcml0JDEobW9kZSk7XG4gIH1cblxuICAvLyBubyBzcGVjaWFsIGRlcGVuZGVuY3kgaXNzdWVzLCBqdXN0IHJldHVybiBvdXJzZWx2ZXNcbiAgcmV0dXJuIG1vZGU7XG59XG5cbnZhciB2ZXJzaW9uID0gXCIxMS4xMS4xXCI7XG5cbmNsYXNzIEhUTUxJbmplY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uLCBodG1sKSB7XG4gICAgc3VwZXIocmVhc29uKTtcbiAgICB0aGlzLm5hbWUgPSBcIkhUTUxJbmplY3Rpb25FcnJvclwiO1xuICAgIHRoaXMuaHRtbCA9IGh0bWw7XG4gIH1cbn1cblxuLypcblN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBhdXRvZGV0ZWN0aW9uLlxuaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4qL1xuXG5cblxuLyoqXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Nb2RlfSBNb2RlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZE1vZGV9IENvbXBpbGVkTW9kZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ29tcGlsZWRTY29wZX0gQ29tcGlsZWRTY29wZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTGFuZ3VhZ2V9IExhbmd1YWdlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5ITEpTQXBpfSBITEpTQXBpXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5ITEpTUGx1Z2lufSBITEpTUGx1Z2luXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5QbHVnaW5FdmVudH0gUGx1Z2luRXZlbnRcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhMSlNPcHRpb25zfSBITEpTT3B0aW9uc1xuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTGFuZ3VhZ2VGbn0gTGFuZ3VhZ2VGblxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuSGlnaGxpZ2h0ZWRIVE1MRWxlbWVudH0gSGlnaGxpZ2h0ZWRIVE1MRWxlbWVudFxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQmVmb3JlSGlnaGxpZ2h0Q29udGV4dH0gQmVmb3JlSGlnaGxpZ2h0Q29udGV4dFxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzL3ByaXZhdGUnKS5NYXRjaFR5cGV9IE1hdGNoVHlwZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzL3ByaXZhdGUnKS5LZXl3b3JkRGF0YX0gS2V5d29yZERhdGFcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcy9wcml2YXRlJykuRW5oYW5jZWRNYXRjaH0gRW5oYW5jZWRNYXRjaFxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzL3ByaXZhdGUnKS5Bbm5vdGF0ZWRFcnJvcn0gQW5ub3RhdGVkRXJyb3JcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkF1dG9IaWdobGlnaHRSZXN1bHR9IEF1dG9IaWdobGlnaHRSZXN1bHRcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhpZ2hsaWdodE9wdGlvbnN9IEhpZ2hsaWdodE9wdGlvbnNcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhpZ2hsaWdodFJlc3VsdH0gSGlnaGxpZ2h0UmVzdWx0XG4qL1xuXG5cbmNvbnN0IGVzY2FwZSA9IGVzY2FwZUhUTUw7XG5jb25zdCBpbmhlcml0ID0gaW5oZXJpdCQxO1xuY29uc3QgTk9fTUFUQ0ggPSBTeW1ib2woXCJub21hdGNoXCIpO1xuY29uc3QgTUFYX0tFWVdPUkRfSElUUyA9IDc7XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IGhsanMgLSBvYmplY3QgdGhhdCBpcyBleHRlbmRlZCAobGVnYWN5KVxuICogQHJldHVybnMge0hMSlNBcGl9XG4gKi9cbmNvbnN0IEhMSlMgPSBmdW5jdGlvbihobGpzKSB7XG4gIC8vIEdsb2JhbCBpbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCB3aXRoaW4gdGhlIGhpZ2hsaWdodC5qcyBsaWJyYXJ5LlxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIExhbmd1YWdlPn0gKi9cbiAgY29uc3QgbGFuZ3VhZ2VzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICBjb25zdCBhbGlhc2VzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLyoqIEB0eXBlIHtITEpTUGx1Z2luW119ICovXG4gIGNvbnN0IHBsdWdpbnMgPSBbXTtcblxuICAvLyBzYWZlL3Byb2R1Y3Rpb24gbW9kZSAtIHN3YWxsb3dzIG1vcmUgZXJyb3JzLCB0cmllcyB0byBrZWVwIHJ1bm5pbmdcbiAgLy8gZXZlbiBpZiBhIHNpbmdsZSBzeW50YXggb3IgcGFyc2UgaGl0cyBhIGZhdGFsIGVycm9yXG4gIGxldCBTQUZFX01PREUgPSB0cnVlO1xuICBjb25zdCBMQU5HVUFHRV9OT1RfRk9VTkQgPSBcIkNvdWxkIG5vdCBmaW5kIHRoZSBsYW5ndWFnZSAne30nLCBkaWQgeW91IGZvcmdldCB0byBsb2FkL2luY2x1ZGUgYSBsYW5ndWFnZSBtb2R1bGU/XCI7XG4gIC8qKiBAdHlwZSB7TGFuZ3VhZ2V9ICovXG4gIGNvbnN0IFBMQUlOVEVYVF9MQU5HVUFHRSA9IHsgZGlzYWJsZUF1dG9kZXRlY3Q6IHRydWUsIG5hbWU6ICdQbGFpbiB0ZXh0JywgY29udGFpbnM6IFtdIH07XG5cbiAgLy8gR2xvYmFsIG9wdGlvbnMgdXNlZCB3aGVuIHdpdGhpbiBleHRlcm5hbCBBUElzLiBUaGlzIGlzIG1vZGlmaWVkIHdoZW5cbiAgLy8gY2FsbGluZyB0aGUgYGhsanMuY29uZmlndXJlYCBmdW5jdGlvbi5cbiAgLyoqIEB0eXBlIEhMSlNPcHRpb25zICovXG4gIGxldCBvcHRpb25zID0ge1xuICAgIGlnbm9yZVVuZXNjYXBlZEhUTUw6IGZhbHNlLFxuICAgIHRocm93VW5lc2NhcGVkSFRNTDogZmFsc2UsXG4gICAgbm9IaWdobGlnaHRSZTogL14obm8tP2hpZ2hsaWdodCkkL2ksXG4gICAgbGFuZ3VhZ2VEZXRlY3RSZTogL1xcYmxhbmcoPzp1YWdlKT8tKFtcXHctXSspXFxiL2ksXG4gICAgY2xhc3NQcmVmaXg6ICdobGpzLScsXG4gICAgY3NzU2VsZWN0b3I6ICdwcmUgY29kZScsXG4gICAgbGFuZ3VhZ2VzOiBudWxsLFxuICAgIC8vIGJldGEgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzdWJqZWN0IHRvIGNoYW5nZSwgd2VsY29tZSB0byBkaXNjdXNzXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMTA4NlxuICAgIF9fZW1pdHRlcjogVG9rZW5UcmVlRW1pdHRlclxuICB9O1xuXG4gIC8qIFV0aWxpdHkgZnVuY3Rpb25zICovXG5cbiAgLyoqXG4gICAqIFRlc3RzIGEgbGFuZ3VhZ2UgbmFtZSB0byBzZWUgaWYgaGlnaGxpZ2h0aW5nIHNob3VsZCBiZSBza2lwcGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZU5hbWVcbiAgICovXG4gIGZ1bmN0aW9uIHNob3VsZE5vdEhpZ2hsaWdodChsYW5ndWFnZU5hbWUpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5ub0hpZ2hsaWdodFJlLnRlc3QobGFuZ3VhZ2VOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0hpZ2hsaWdodGVkSFRNTEVsZW1lbnR9IGJsb2NrIC0gdGhlIEhUTUwgZWxlbWVudCB0byBkZXRlcm1pbmUgbGFuZ3VhZ2UgZm9yXG4gICAqL1xuICBmdW5jdGlvbiBibG9ja0xhbmd1YWdlKGJsb2NrKSB7XG4gICAgbGV0IGNsYXNzZXMgPSBibG9jay5jbGFzc05hbWUgKyAnICc7XG5cbiAgICBjbGFzc2VzICs9IGJsb2NrLnBhcmVudE5vZGUgPyBibG9jay5wYXJlbnROb2RlLmNsYXNzTmFtZSA6ICcnO1xuXG4gICAgLy8gbGFuZ3VhZ2UtKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbm9uLXByZWZpeGVkIGNsYXNzIG5hbWVzLlxuICAgIGNvbnN0IG1hdGNoID0gb3B0aW9ucy5sYW5ndWFnZURldGVjdFJlLmV4ZWMoY2xhc3Nlcyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKG1hdGNoWzFdKTtcbiAgICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgICAgd2FybihMQU5HVUFHRV9OT1RfRk9VTkQucmVwbGFjZShcInt9XCIsIG1hdGNoWzFdKSk7XG4gICAgICAgIHdhcm4oXCJGYWxsaW5nIGJhY2sgdG8gbm8taGlnaGxpZ2h0IG1vZGUgZm9yIHRoaXMgYmxvY2suXCIsIGJsb2NrKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsYW5ndWFnZSA/IG1hdGNoWzFdIDogJ25vLWhpZ2hsaWdodCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXNcbiAgICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgICAuZmluZCgoX2NsYXNzKSA9PiBzaG91bGROb3RIaWdobGlnaHQoX2NsYXNzKSB8fCBnZXRMYW5ndWFnZShfY2xhc3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3JlIGhpZ2hsaWdodGluZyBmdW5jdGlvbi5cbiAgICpcbiAgICogT0xEIEFQSVxuICAgKiBoaWdobGlnaHQobGFuZywgY29kZSwgaWdub3JlSWxsZWdhbHMsIGNvbnRpbnVhdGlvbilcbiAgICpcbiAgICogTkVXIEFQSVxuICAgKiBoaWdobGlnaHQoY29kZSwge2xhbmcsIGlnbm9yZUlsbGVnYWxzfSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvZGVPckxhbmd1YWdlTmFtZSAtIHRoZSBsYW5ndWFnZSB0byB1c2UgZm9yIGhpZ2hsaWdodGluZ1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IEhpZ2hsaWdodE9wdGlvbnN9IG9wdGlvbnNPckNvZGUgLSB0aGUgY29kZSB0byBoaWdobGlnaHRcbiAgICogQHBhcmFtIHtib29sZWFufSBbaWdub3JlSWxsZWdhbHNdIC0gd2hldGhlciB0byBpZ25vcmUgaWxsZWdhbCBtYXRjaGVzLCBkZWZhdWx0IGlzIHRvIGJhaWxcbiAgICpcbiAgICogQHJldHVybnMge0hpZ2hsaWdodFJlc3VsdH0gUmVzdWx0IC0gYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgcmVzdWx0XG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsYW5ndWFnZSAtIHRoZSBsYW5ndWFnZSBuYW1lXG4gICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZWxldmFuY2UgLSB0aGUgcmVsZXZhbmNlIHNjb3JlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2YWx1ZSAtIHRoZSBoaWdobGlnaHRlZCBIVE1MIGNvZGVcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGNvZGUgLSB0aGUgb3JpZ2luYWwgcmF3IGNvZGVcbiAgICogQHByb3BlcnR5IHtDb21waWxlZE1vZGV9IHRvcCAtIHRvcCBvZiB0aGUgY3VycmVudCBtb2RlIHN0YWNrXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaWxsZWdhbCAtIGluZGljYXRlcyB3aGV0aGVyIGFueSBpbGxlZ2FsIG1hdGNoZXMgd2VyZSBmb3VuZFxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHQoY29kZU9yTGFuZ3VhZ2VOYW1lLCBvcHRpb25zT3JDb2RlLCBpZ25vcmVJbGxlZ2Fscykge1xuICAgIGxldCBjb2RlID0gXCJcIjtcbiAgICBsZXQgbGFuZ3VhZ2VOYW1lID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNPckNvZGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGNvZGUgPSBjb2RlT3JMYW5ndWFnZU5hbWU7XG4gICAgICBpZ25vcmVJbGxlZ2FscyA9IG9wdGlvbnNPckNvZGUuaWdub3JlSWxsZWdhbHM7XG4gICAgICBsYW5ndWFnZU5hbWUgPSBvcHRpb25zT3JDb2RlLmxhbmd1YWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvbGQgQVBJXG4gICAgICBkZXByZWNhdGVkKFwiMTAuNy4wXCIsIFwiaGlnaGxpZ2h0KGxhbmcsIGNvZGUsIC4uLmFyZ3MpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuXCIpO1xuICAgICAgZGVwcmVjYXRlZChcIjEwLjcuMFwiLCBcIlBsZWFzZSB1c2UgaGlnaGxpZ2h0KGNvZGUsIG9wdGlvbnMpIGluc3RlYWQuXFxuaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjI3N1wiKTtcbiAgICAgIGxhbmd1YWdlTmFtZSA9IGNvZGVPckxhbmd1YWdlTmFtZTtcbiAgICAgIGNvZGUgPSBvcHRpb25zT3JDb2RlO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzMxNDlcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gICAgaWYgKGlnbm9yZUlsbGVnYWxzID09PSB1bmRlZmluZWQpIHsgaWdub3JlSWxsZWdhbHMgPSB0cnVlOyB9XG5cbiAgICAvKiogQHR5cGUge0JlZm9yZUhpZ2hsaWdodENvbnRleHR9ICovXG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIGNvZGUsXG4gICAgICBsYW5ndWFnZTogbGFuZ3VhZ2VOYW1lXG4gICAgfTtcbiAgICAvLyB0aGUgcGx1Z2luIGNhbiBjaGFuZ2UgdGhlIGRlc2lyZWQgbGFuZ3VhZ2Ugb3IgdGhlIGNvZGUgdG8gYmUgaGlnaGxpZ2h0ZWRcbiAgICAvLyBqdXN0IGJlIGNoYW5naW5nIHRoZSBvYmplY3QgaXQgd2FzIHBhc3NlZFxuICAgIGZpcmUoXCJiZWZvcmU6aGlnaGxpZ2h0XCIsIGNvbnRleHQpO1xuXG4gICAgLy8gYSBiZWZvcmUgcGx1Z2luIGNhbiB1c3VycCB0aGUgcmVzdWx0IGNvbXBsZXRlbHkgYnkgcHJvdmlkaW5nIGl0J3Mgb3duXG4gICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBldmVuIG5lZWQgdG8gY2FsbCBoaWdobGlnaHRcbiAgICBjb25zdCByZXN1bHQgPSBjb250ZXh0LnJlc3VsdFxuICAgICAgPyBjb250ZXh0LnJlc3VsdFxuICAgICAgOiBfaGlnaGxpZ2h0KGNvbnRleHQubGFuZ3VhZ2UsIGNvbnRleHQuY29kZSwgaWdub3JlSWxsZWdhbHMpO1xuXG4gICAgcmVzdWx0LmNvZGUgPSBjb250ZXh0LmNvZGU7XG4gICAgLy8gdGhlIHBsdWdpbiBjYW4gY2hhbmdlIGFueXRoaW5nIGluIHJlc3VsdCB0byBzdWl0ZSBpdFxuICAgIGZpcmUoXCJhZnRlcjpoaWdobGlnaHRcIiwgcmVzdWx0KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogcHJpdmF0ZSBoaWdobGlnaHQgdGhhdCdzIHVzZWQgaW50ZXJuYWxseSBhbmQgZG9lcyBub3QgZmlyZSBjYWxsYmFja3NcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlTmFtZSAtIHRoZSBsYW5ndWFnZSB0byB1c2UgZm9yIGhpZ2hsaWdodGluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZVRvSGlnaGxpZ2h0IC0gdGhlIGNvZGUgdG8gaGlnaGxpZ2h0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbj99IFtpZ25vcmVJbGxlZ2Fsc10gLSB3aGV0aGVyIHRvIGlnbm9yZSBpbGxlZ2FsIG1hdGNoZXMsIGRlZmF1bHQgaXMgdG8gYmFpbFxuICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZT99IFtjb250aW51YXRpb25dIC0gY3VycmVudCBjb250aW51YXRpb24gbW9kZSwgaWYgYW55XG4gICAqIEByZXR1cm5zIHtIaWdobGlnaHRSZXN1bHR9IC0gcmVzdWx0IG9mIHRoZSBoaWdobGlnaHQgb3BlcmF0aW9uXG4gICovXG4gIGZ1bmN0aW9uIF9oaWdobGlnaHQobGFuZ3VhZ2VOYW1lLCBjb2RlVG9IaWdobGlnaHQsIGlnbm9yZUlsbGVnYWxzLCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBrZXl3b3JkSGl0cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4ga2V5d29yZCBkYXRhIGlmIGEgbWF0Y2ggaXMgYSBrZXl3b3JkXG4gICAgICogQHBhcmFtIHtDb21waWxlZE1vZGV9IG1vZGUgLSBjdXJyZW50IG1vZGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hUZXh0IC0gdGhlIHRleHR1YWwgbWF0Y2hcbiAgICAgKiBAcmV0dXJucyB7S2V5d29yZERhdGEgfCBmYWxzZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXl3b3JkRGF0YShtb2RlLCBtYXRjaFRleHQpIHtcbiAgICAgIHJldHVybiBtb2RlLmtleXdvcmRzW21hdGNoVGV4dF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0tleXdvcmRzKCkge1xuICAgICAgaWYgKCF0b3Aua2V5d29yZHMpIHtcbiAgICAgICAgZW1pdHRlci5hZGRUZXh0KG1vZGVCdWZmZXIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBsYXN0SW5kZXggPSAwO1xuICAgICAgdG9wLmtleXdvcmRQYXR0ZXJuUmUubGFzdEluZGV4ID0gMDtcbiAgICAgIGxldCBtYXRjaCA9IHRvcC5rZXl3b3JkUGF0dGVyblJlLmV4ZWMobW9kZUJ1ZmZlcik7XG4gICAgICBsZXQgYnVmID0gXCJcIjtcblxuICAgICAgd2hpbGUgKG1hdGNoKSB7XG4gICAgICAgIGJ1ZiArPSBtb2RlQnVmZmVyLnN1YnN0cmluZyhsYXN0SW5kZXgsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgY29uc3Qgd29yZCA9IGxhbmd1YWdlLmNhc2VfaW5zZW5zaXRpdmUgPyBtYXRjaFswXS50b0xvd2VyQ2FzZSgpIDogbWF0Y2hbMF07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBrZXl3b3JkRGF0YSh0b3AsIHdvcmQpO1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIGNvbnN0IFtraW5kLCBrZXl3b3JkUmVsZXZhbmNlXSA9IGRhdGE7XG4gICAgICAgICAgZW1pdHRlci5hZGRUZXh0KGJ1Zik7XG4gICAgICAgICAgYnVmID0gXCJcIjtcblxuICAgICAgICAgIGtleXdvcmRIaXRzW3dvcmRdID0gKGtleXdvcmRIaXRzW3dvcmRdIHx8IDApICsgMTtcbiAgICAgICAgICBpZiAoa2V5d29yZEhpdHNbd29yZF0gPD0gTUFYX0tFWVdPUkRfSElUUykgcmVsZXZhbmNlICs9IGtleXdvcmRSZWxldmFuY2U7XG4gICAgICAgICAgaWYgKGtpbmQuc3RhcnRzV2l0aChcIl9cIikpIHtcbiAgICAgICAgICAgIC8vIF8gaW1wbGllZCBmb3IgcmVsZXZhbmNlIG9ubHksIGRvIG5vdCBoaWdobGlnaHRcbiAgICAgICAgICAgIC8vIGJ5IGFwcGx5aW5nIGEgY2xhc3MgbmFtZVxuICAgICAgICAgICAgYnVmICs9IG1hdGNoWzBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjc3NDbGFzcyA9IGxhbmd1YWdlLmNsYXNzTmFtZUFsaWFzZXNba2luZF0gfHwga2luZDtcbiAgICAgICAgICAgIGVtaXRLZXl3b3JkKG1hdGNoWzBdLCBjc3NDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1ZiArPSBtYXRjaFswXTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0SW5kZXggPSB0b3Aua2V5d29yZFBhdHRlcm5SZS5sYXN0SW5kZXg7XG4gICAgICAgIG1hdGNoID0gdG9wLmtleXdvcmRQYXR0ZXJuUmUuZXhlYyhtb2RlQnVmZmVyKTtcbiAgICAgIH1cbiAgICAgIGJ1ZiArPSBtb2RlQnVmZmVyLnN1YnN0cmluZyhsYXN0SW5kZXgpO1xuICAgICAgZW1pdHRlci5hZGRUZXh0KGJ1Zik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkge1xuICAgICAgaWYgKG1vZGVCdWZmZXIgPT09IFwiXCIpIHJldHVybjtcbiAgICAgIC8qKiBAdHlwZSBIaWdobGlnaHRSZXN1bHQgKi9cbiAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuXG4gICAgICBpZiAodHlwZW9mIHRvcC5zdWJMYW5ndWFnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCFsYW5ndWFnZXNbdG9wLnN1Ykxhbmd1YWdlXSkge1xuICAgICAgICAgIGVtaXR0ZXIuYWRkVGV4dChtb2RlQnVmZmVyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gX2hpZ2hsaWdodCh0b3Auc3ViTGFuZ3VhZ2UsIG1vZGVCdWZmZXIsIHRydWUsIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSk7XG4gICAgICAgIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSA9IC8qKiBAdHlwZSB7Q29tcGlsZWRNb2RlfSAqLyAocmVzdWx0Ll90b3ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gaGlnaGxpZ2h0QXV0byhtb2RlQnVmZmVyLCB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID8gdG9wLnN1Ykxhbmd1YWdlIDogbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENvdW50aW5nIGVtYmVkZGVkIGxhbmd1YWdlIHNjb3JlIHRvd2FyZHMgdGhlIGhvc3QgbGFuZ3VhZ2UgbWF5IGJlIGRpc2FibGVkXG4gICAgICAvLyB3aXRoIHplcm9pbmcgdGhlIGNvbnRhaW5pbmcgbW9kZSByZWxldmFuY2UuIFVzZSBjYXNlIGluIHBvaW50IGlzIE1hcmtkb3duIHRoYXRcbiAgICAgIC8vIGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnkgWE1MIHNuaXBwZXQgdG8gaGF2ZSBhIG11Y2ggbGFyZ2VyIE1hcmtkb3duXG4gICAgICAvLyBzY29yZS5cbiAgICAgIGlmICh0b3AucmVsZXZhbmNlID4gMCkge1xuICAgICAgICByZWxldmFuY2UgKz0gcmVzdWx0LnJlbGV2YW5jZTtcbiAgICAgIH1cbiAgICAgIGVtaXR0ZXIuX19hZGRTdWJsYW5ndWFnZShyZXN1bHQuX2VtaXR0ZXIsIHJlc3VsdC5sYW5ndWFnZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0J1ZmZlcigpIHtcbiAgICAgIGlmICh0b3Auc3ViTGFuZ3VhZ2UgIT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzU3ViTGFuZ3VhZ2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3NLZXl3b3JkcygpO1xuICAgICAgfVxuICAgICAgbW9kZUJ1ZmZlciA9ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNjb3BlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW1pdEtleXdvcmQoa2V5d29yZCwgc2NvcGUpIHtcbiAgICAgIGlmIChrZXl3b3JkID09PSBcIlwiKSByZXR1cm47XG5cbiAgICAgIGVtaXR0ZXIuc3RhcnRTY29wZShzY29wZSk7XG4gICAgICBlbWl0dGVyLmFkZFRleHQoa2V5d29yZCk7XG4gICAgICBlbWl0dGVyLmVuZFNjb3BlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb21waWxlZFNjb3BlfSBzY29wZVxuICAgICAqIEBwYXJhbSB7UmVnRXhwTWF0Y2hBcnJheX0gbWF0Y2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlbWl0TXVsdGlDbGFzcyhzY29wZSwgbWF0Y2gpIHtcbiAgICAgIGxldCBpID0gMTtcbiAgICAgIGNvbnN0IG1heCA9IG1hdGNoLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA8PSBtYXgpIHtcbiAgICAgICAgaWYgKCFzY29wZS5fZW1pdFtpXSkgeyBpKys7IGNvbnRpbnVlOyB9XG4gICAgICAgIGNvbnN0IGtsYXNzID0gbGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlc1tzY29wZVtpXV0gfHwgc2NvcGVbaV07XG4gICAgICAgIGNvbnN0IHRleHQgPSBtYXRjaFtpXTtcbiAgICAgICAgaWYgKGtsYXNzKSB7XG4gICAgICAgICAgZW1pdEtleXdvcmQodGV4dCwga2xhc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSB0ZXh0O1xuICAgICAgICAgIHByb2Nlc3NLZXl3b3JkcygpO1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZSAtIG5ldyBtb2RlIHRvIHN0YXJ0XG4gICAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlLCBtYXRjaCkge1xuICAgICAgaWYgKG1vZGUuc2NvcGUgJiYgdHlwZW9mIG1vZGUuc2NvcGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZW1pdHRlci5vcGVuTm9kZShsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzW21vZGUuc2NvcGVdIHx8IG1vZGUuc2NvcGUpO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGUuYmVnaW5TY29wZSkge1xuICAgICAgICAvLyBiZWdpblNjb3BlIGp1c3Qgd3JhcHMgdGhlIGJlZ2luIG1hdGNoIGl0c2VsZiBpbiBhIHNjb3BlXG4gICAgICAgIGlmIChtb2RlLmJlZ2luU2NvcGUuX3dyYXApIHtcbiAgICAgICAgICBlbWl0S2V5d29yZChtb2RlQnVmZmVyLCBsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzW21vZGUuYmVnaW5TY29wZS5fd3JhcF0gfHwgbW9kZS5iZWdpblNjb3BlLl93cmFwKTtcbiAgICAgICAgICBtb2RlQnVmZmVyID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlLmJlZ2luU2NvcGUuX211bHRpKSB7XG4gICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBtb2RlQnVmZmVyIHNob3VsZCBqdXN0IGJlIHRoZSBtYXRjaFxuICAgICAgICAgIGVtaXRNdWx0aUNsYXNzKG1vZGUuYmVnaW5TY29wZSwgbWF0Y2gpO1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRvcCA9IE9iamVjdC5jcmVhdGUobW9kZSwgeyBwYXJlbnQ6IHsgdmFsdWU6IHRvcCB9IH0pO1xuICAgICAgcmV0dXJuIHRvcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZSB9IG1vZGUgLSB0aGUgbW9kZSB0byBwb3RlbnRpYWxseSBlbmRcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoIC0gdGhlIGxhdGVzdCBtYXRjaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaFBsdXNSZW1haW5kZXIgLSBtYXRjaCBwbHVzIHJlbWFpbmRlciBvZiBjb250ZW50XG4gICAgICogQHJldHVybnMge0NvbXBpbGVkTW9kZSB8IHZvaWR9IC0gdGhlIG5leHQgbW9kZSwgb3IgaWYgdm9pZCBjb250aW51ZSBvbiBpbiBjdXJyZW50IG1vZGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlbmRPZk1vZGUobW9kZSwgbWF0Y2gsIG1hdGNoUGx1c1JlbWFpbmRlcikge1xuICAgICAgbGV0IG1hdGNoZWQgPSBzdGFydHNXaXRoKG1vZGUuZW5kUmUsIG1hdGNoUGx1c1JlbWFpbmRlcik7XG5cbiAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgIGlmIChtb2RlW1wib246ZW5kXCJdKSB7XG4gICAgICAgICAgY29uc3QgcmVzcCA9IG5ldyBSZXNwb25zZShtb2RlKTtcbiAgICAgICAgICBtb2RlW1wib246ZW5kXCJdKG1hdGNoLCByZXNwKTtcbiAgICAgICAgICBpZiAocmVzcC5pc01hdGNoSWdub3JlZCkgbWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICB3aGlsZSAobW9kZS5lbmRzUGFyZW50ICYmIG1vZGUucGFyZW50KSB7XG4gICAgICAgICAgICBtb2RlID0gbW9kZS5wYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtb2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBldmVuIGlmIG9uOmVuZCBmaXJlcyBhbiBgaWdub3JlYCBpdCdzIHN0aWxsIHBvc3NpYmxlXG4gICAgICAvLyB0aGF0IHdlIG1pZ2h0IHRyaWdnZXIgdGhlIGVuZCBub2RlIGJlY2F1c2Ugb2YgYSBwYXJlbnQgbW9kZVxuICAgICAgaWYgKG1vZGUuZW5kc1dpdGhQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGVuZE9mTW9kZShtb2RlLnBhcmVudCwgbWF0Y2gsIG1hdGNoUGx1c1JlbWFpbmRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG1hdGNoaW5nIGJ1dCB0aGVuIGlnbm9yaW5nIGEgc2VxdWVuY2Ugb2YgdGV4dFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxleGVtZSAtIHN0cmluZyBjb250YWluaW5nIGZ1bGwgbWF0Y2ggdGV4dFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRvSWdub3JlKGxleGVtZSkge1xuICAgICAgaWYgKHRvcC5tYXRjaGVyLnJlZ2V4SW5kZXggPT09IDApIHtcbiAgICAgICAgLy8gbm8gbW9yZSByZWdleGVzIHRvIHBvdGVudGlhbGx5IG1hdGNoIGhlcmUsIHNvIHdlIG1vdmUgdGhlIGN1cnNvciBmb3J3YXJkIG9uZVxuICAgICAgICAvLyBzcGFjZVxuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZVswXTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBubyBuZWVkIHRvIG1vdmUgdGhlIGN1cnNvciwgd2Ugc3RpbGwgaGF2ZSBhZGRpdGlvbmFsIHJlZ2V4ZXMgdG8gdHJ5IGFuZFxuICAgICAgICAvLyBtYXRjaCBhdCB0aGlzIHZlcnkgc3BvdFxuICAgICAgICByZXN1bWVTY2FuQXRTYW1lUG9zaXRpb24gPSB0cnVlO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHBvdGVudGlhbCBtb2RlIG1hdGNoXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VuaGFuY2VkTWF0Y2h9IG1hdGNoIC0gdGhlIGN1cnJlbnQgbWF0Y2hcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBob3cgZmFyIHRvIGFkdmFuY2UgdGhlIHBhcnNlIGN1cnNvclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRvQmVnaW5NYXRjaChtYXRjaCkge1xuICAgICAgY29uc3QgbGV4ZW1lID0gbWF0Y2hbMF07XG4gICAgICBjb25zdCBuZXdNb2RlID0gbWF0Y2gucnVsZTtcblxuICAgICAgY29uc3QgcmVzcCA9IG5ldyBSZXNwb25zZShuZXdNb2RlKTtcbiAgICAgIC8vIGZpcnN0IGludGVybmFsIGJlZm9yZSBjYWxsYmFja3MsIHRoZW4gdGhlIHB1YmxpYyBvbmVzXG4gICAgICBjb25zdCBiZWZvcmVDYWxsYmFja3MgPSBbbmV3TW9kZS5fX2JlZm9yZUJlZ2luLCBuZXdNb2RlW1wib246YmVnaW5cIl1dO1xuICAgICAgZm9yIChjb25zdCBjYiBvZiBiZWZvcmVDYWxsYmFja3MpIHtcbiAgICAgICAgaWYgKCFjYikgY29udGludWU7XG4gICAgICAgIGNiKG1hdGNoLCByZXNwKTtcbiAgICAgICAgaWYgKHJlc3AuaXNNYXRjaElnbm9yZWQpIHJldHVybiBkb0lnbm9yZShsZXhlbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3TW9kZS5za2lwKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5ld01vZGUuZXhjbHVkZUJlZ2luKSB7XG4gICAgICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBpZiAoIW5ld01vZGUucmV0dXJuQmVnaW4gJiYgIW5ld01vZGUuZXhjbHVkZUJlZ2luKSB7XG4gICAgICAgICAgbW9kZUJ1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhcnROZXdNb2RlKG5ld01vZGUsIG1hdGNoKTtcbiAgICAgIHJldHVybiBuZXdNb2RlLnJldHVybkJlZ2luID8gMCA6IGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHRoZSBwb3RlbnRpYWwgZW5kIG9mIG1vZGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVnRXhwTWF0Y2hBcnJheX0gbWF0Y2ggLSB0aGUgY3VycmVudCBtYXRjaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRvRW5kTWF0Y2gobWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxleGVtZSA9IG1hdGNoWzBdO1xuICAgICAgY29uc3QgbWF0Y2hQbHVzUmVtYWluZGVyID0gY29kZVRvSGlnaGxpZ2h0LnN1YnN0cmluZyhtYXRjaC5pbmRleCk7XG5cbiAgICAgIGNvbnN0IGVuZE1vZGUgPSBlbmRPZk1vZGUodG9wLCBtYXRjaCwgbWF0Y2hQbHVzUmVtYWluZGVyKTtcbiAgICAgIGlmICghZW5kTW9kZSkgeyByZXR1cm4gTk9fTUFUQ0g7IH1cblxuICAgICAgY29uc3Qgb3JpZ2luID0gdG9wO1xuICAgICAgaWYgKHRvcC5lbmRTY29wZSAmJiB0b3AuZW5kU2NvcGUuX3dyYXApIHtcbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBlbWl0S2V5d29yZChsZXhlbWUsIHRvcC5lbmRTY29wZS5fd3JhcCk7XG4gICAgICB9IGVsc2UgaWYgKHRvcC5lbmRTY29wZSAmJiB0b3AuZW5kU2NvcGUuX211bHRpKSB7XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgZW1pdE11bHRpQ2xhc3ModG9wLmVuZFNjb3BlLCBtYXRjaCk7XG4gICAgICB9IGVsc2UgaWYgKG9yaWdpbi5za2lwKSB7XG4gICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCEob3JpZ2luLnJldHVybkVuZCB8fCBvcmlnaW4uZXhjbHVkZUVuZCkpIHtcbiAgICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIGlmIChvcmlnaW4uZXhjbHVkZUVuZCkge1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHRvcC5zY29wZSkge1xuICAgICAgICAgIGVtaXR0ZXIuY2xvc2VOb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b3Auc2tpcCAmJiAhdG9wLnN1Ykxhbmd1YWdlKSB7XG4gICAgICAgICAgcmVsZXZhbmNlICs9IHRvcC5yZWxldmFuY2U7XG4gICAgICAgIH1cbiAgICAgICAgdG9wID0gdG9wLnBhcmVudDtcbiAgICAgIH0gd2hpbGUgKHRvcCAhPT0gZW5kTW9kZS5wYXJlbnQpO1xuICAgICAgaWYgKGVuZE1vZGUuc3RhcnRzKSB7XG4gICAgICAgIHN0YXJ0TmV3TW9kZShlbmRNb2RlLnN0YXJ0cywgbWF0Y2gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdpbi5yZXR1cm5FbmQgPyAwIDogbGV4ZW1lLmxlbmd0aDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzQ29udGludWF0aW9ucygpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSBbXTtcbiAgICAgIGZvciAobGV0IGN1cnJlbnQgPSB0b3A7IGN1cnJlbnQgIT09IGxhbmd1YWdlOyBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQuc2NvcGUpIHtcbiAgICAgICAgICBsaXN0LnVuc2hpZnQoY3VycmVudC5zY29wZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IGVtaXR0ZXIub3Blbk5vZGUoaXRlbSkpO1xuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7e3R5cGU/OiBNYXRjaFR5cGUsIGluZGV4PzogbnVtYmVyLCBydWxlPzogTW9kZX19fSAqL1xuICAgIGxldCBsYXN0TWF0Y2ggPSB7fTtcblxuICAgIC8qKlxuICAgICAqICBQcm9jZXNzIGFuIGluZGl2aWR1YWwgbWF0Y2hcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0QmVmb3JlTWF0Y2ggLSB0ZXh0IHByZWNlZGluZyB0aGUgbWF0Y2ggKHNpbmNlIHRoZSBsYXN0IG1hdGNoKVxuICAgICAqIEBwYXJhbSB7RW5oYW5jZWRNYXRjaH0gW21hdGNoXSAtIHRoZSBtYXRjaCBpdHNlbGZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9jZXNzTGV4ZW1lKHRleHRCZWZvcmVNYXRjaCwgbWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxleGVtZSA9IG1hdGNoICYmIG1hdGNoWzBdO1xuXG4gICAgICAvLyBhZGQgbm9uLW1hdGNoZWQgdGV4dCB0byB0aGUgY3VycmVudCBtb2RlIGJ1ZmZlclxuICAgICAgbW9kZUJ1ZmZlciArPSB0ZXh0QmVmb3JlTWF0Y2g7XG5cbiAgICAgIGlmIChsZXhlbWUgPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzQnVmZmVyKCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICAvLyB3ZSd2ZSBmb3VuZCBhIDAgd2lkdGggbWF0Y2ggYW5kIHdlJ3JlIHN0dWNrLCBzbyB3ZSBuZWVkIHRvIGFkdmFuY2VcbiAgICAgIC8vIHRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYmFkbHkgYmVoYXZlZCBydWxlcyB0aGF0IGhhdmUgb3B0aW9uYWwgbWF0Y2hlcnMgdG8gdGhlIGRlZ3JlZSB0aGF0XG4gICAgICAvLyBzb21ldGltZXMgdGhleSBjYW4gZW5kIHVwIG1hdGNoaW5nIG5vdGhpbmcgYXQgYWxsXG4gICAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzIxNDBcbiAgICAgIGlmIChsYXN0TWF0Y2gudHlwZSA9PT0gXCJiZWdpblwiICYmIG1hdGNoLnR5cGUgPT09IFwiZW5kXCIgJiYgbGFzdE1hdGNoLmluZGV4ID09PSBtYXRjaC5pbmRleCAmJiBsZXhlbWUgPT09IFwiXCIpIHtcbiAgICAgICAgLy8gc3BpdCB0aGUgXCJza2lwcGVkXCIgY2hhcmFjdGVyIHRoYXQgb3VyIHJlZ2V4IGNob2tlZCBvbiBiYWNrIGludG8gdGhlIG91dHB1dCBzZXF1ZW5jZVxuICAgICAgICBtb2RlQnVmZmVyICs9IGNvZGVUb0hpZ2hsaWdodC5zbGljZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyAxKTtcbiAgICAgICAgaWYgKCFTQUZFX01PREUpIHtcbiAgICAgICAgICAvKiogQHR5cGUge0Fubm90YXRlZEVycm9yfSAqL1xuICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgMCB3aWR0aCBtYXRjaCByZWdleCAoJHtsYW5ndWFnZU5hbWV9KWApO1xuICAgICAgICAgIGVyci5sYW5ndWFnZU5hbWUgPSBsYW5ndWFnZU5hbWU7XG4gICAgICAgICAgZXJyLmJhZFJ1bGUgPSBsYXN0TWF0Y2gucnVsZTtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBsYXN0TWF0Y2ggPSBtYXRjaDtcblxuICAgICAgaWYgKG1hdGNoLnR5cGUgPT09IFwiYmVnaW5cIikge1xuICAgICAgICByZXR1cm4gZG9CZWdpbk1hdGNoKG1hdGNoKTtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gudHlwZSA9PT0gXCJpbGxlZ2FsXCIgJiYgIWlnbm9yZUlsbGVnYWxzKSB7XG4gICAgICAgIC8vIGlsbGVnYWwgbWF0Y2gsIHdlIGRvIG5vdCBjb250aW51ZSBwcm9jZXNzaW5nXG4gICAgICAgIC8qKiBAdHlwZSB7QW5ub3RhdGVkRXJyb3J9ICovXG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignSWxsZWdhbCBsZXhlbWUgXCInICsgbGV4ZW1lICsgJ1wiIGZvciBtb2RlIFwiJyArICh0b3Auc2NvcGUgfHwgJzx1bm5hbWVkPicpICsgJ1wiJyk7XG4gICAgICAgIGVyci5tb2RlID0gdG9wO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoLnR5cGUgPT09IFwiZW5kXCIpIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkID0gZG9FbmRNYXRjaChtYXRjaCk7XG4gICAgICAgIGlmIChwcm9jZXNzZWQgIT09IE5PX01BVENIKSB7XG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBlZGdlIGNhc2UgZm9yIHdoZW4gaWxsZWdhbCBtYXRjaGVzICQgKGVuZCBvZiBsaW5lKSB3aGljaCBpcyB0ZWNobmljYWxseVxuICAgICAgLy8gYSAwIHdpZHRoIG1hdGNoIGJ1dCBub3QgYSBiZWdpbi9lbmQgbWF0Y2ggc28gaXQncyBub3QgY2F1Z2h0IGJ5IHRoZVxuICAgICAgLy8gZmlyc3QgaGFuZGxlciAod2hlbiBpZ25vcmVJbGxlZ2FscyBpcyB0cnVlKVxuICAgICAgaWYgKG1hdGNoLnR5cGUgPT09IFwiaWxsZWdhbFwiICYmIGxleGVtZSA9PT0gXCJcIikge1xuICAgICAgICAvLyBhZHZhbmNlIHNvIHdlIGFyZW4ndCBzdHVjayBpbiBhbiBpbmZpbml0ZSBsb29wXG4gICAgICAgIG1vZGVCdWZmZXIgKz0gXCJcXG5cIjtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIC8vIGluZmluaXRlIGxvb3BzIGFyZSBCQUQsIHRoaXMgaXMgYSBsYXN0IGRpdGNoIGNhdGNoIGFsbC4gaWYgd2UgaGF2ZSBhXG4gICAgICAvLyBkZWNlbnQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgeWV0IG91ciBpbmRleCAoY3Vyc29yIHBvc2l0aW9uIGluIG91clxuICAgICAgLy8gcGFyc2luZykgc3RpbGwgM3ggYmVoaW5kIG91ciBpbmRleCB0aGVuIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nXG4gICAgICAvLyBzbyB3ZSBiYWlsXG4gICAgICBpZiAoaXRlcmF0aW9ucyA+IDEwMDAwMCAmJiBpdGVyYXRpb25zID4gbWF0Y2guaW5kZXggKiAzKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcigncG90ZW50aWFsIGluZmluaXRlIGxvb3AsIHdheSBtb3JlIGl0ZXJhdGlvbnMgdGhhbiBtYXRjaGVzJyk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlPyAgQW4gcG90ZW50aWFsIGVuZCBtYXRjaCB0aGF0IHdhc1xuICAgICAgdHJpZ2dlcmVkIGJ1dCBjb3VsZCBub3QgYmUgY29tcGxldGVkLiAgSUUsIGBkb0VuZE1hdGNoYCByZXR1cm5lZCBOT19NQVRDSC5cbiAgICAgICh0aGlzIGNvdWxkIGJlIGJlY2F1c2UgYSBjYWxsYmFjayByZXF1ZXN0cyB0aGUgbWF0Y2ggYmUgaWdub3JlZCwgZXRjKVxuXG4gICAgICBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICAgICovXG5cbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgcmV0dXJuIGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShsYW5ndWFnZU5hbWUpO1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIGVycm9yKExBTkdVQUdFX05PVF9GT1VORC5yZXBsYWNlKFwie31cIiwgbGFuZ3VhZ2VOYW1lKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGFuZ3VhZ2U6IFwiJyArIGxhbmd1YWdlTmFtZSArICdcIicpO1xuICAgIH1cblxuICAgIGNvbnN0IG1kID0gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgLyoqIEB0eXBlIHtDb21waWxlZE1vZGV9ICovXG4gICAgbGV0IHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBtZDtcbiAgICAvKiogQHR5cGUgUmVjb3JkPHN0cmluZyxDb21waWxlZE1vZGU+ICovXG4gICAgY29uc3QgY29udGludWF0aW9ucyA9IHt9OyAvLyBrZWVwIGNvbnRpbnVhdGlvbnMgZm9yIHN1Yi1sYW5ndWFnZXNcbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IG9wdGlvbnMuX19lbWl0dGVyKG9wdGlvbnMpO1xuICAgIHByb2Nlc3NDb250aW51YXRpb25zKCk7XG4gICAgbGV0IG1vZGVCdWZmZXIgPSAnJztcbiAgICBsZXQgcmVsZXZhbmNlID0gMDtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGxldCBpdGVyYXRpb25zID0gMDtcbiAgICBsZXQgcmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFsYW5ndWFnZS5fX2VtaXRUb2tlbnMpIHtcbiAgICAgICAgdG9wLm1hdGNoZXIuY29uc2lkZXJBbGwoKTtcblxuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaXRlcmF0aW9ucysrO1xuICAgICAgICAgIGlmIChyZXN1bWVTY2FuQXRTYW1lUG9zaXRpb24pIHtcbiAgICAgICAgICAgIC8vIG9ubHkgcmVnZXhlcyBub3QgbWF0Y2hlZCBwcmV2aW91c2x5IHdpbGwgbm93IGJlXG4gICAgICAgICAgICAvLyBjb25zaWRlcmVkIGZvciBhIHBvdGVudGlhbCBtYXRjaFxuICAgICAgICAgICAgcmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uID0gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvcC5tYXRjaGVyLmNvbnNpZGVyQWxsKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRvcC5tYXRjaGVyLmxhc3RJbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSB0b3AubWF0Y2hlci5leGVjKGNvZGVUb0hpZ2hsaWdodCk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJtYXRjaFwiLCBtYXRjaFswXSwgbWF0Y2gucnVsZSAmJiBtYXRjaC5ydWxlLmJlZ2luKVxuXG4gICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWs7XG5cbiAgICAgICAgICBjb25zdCBiZWZvcmVNYXRjaCA9IGNvZGVUb0hpZ2hsaWdodC5zdWJzdHJpbmcoaW5kZXgsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgICBjb25zdCBwcm9jZXNzZWRDb3VudCA9IHByb2Nlc3NMZXhlbWUoYmVmb3JlTWF0Y2gsIG1hdGNoKTtcbiAgICAgICAgICBpbmRleCA9IG1hdGNoLmluZGV4ICsgcHJvY2Vzc2VkQ291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0xleGVtZShjb2RlVG9IaWdobGlnaHQuc3Vic3RyaW5nKGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYW5ndWFnZS5fX2VtaXRUb2tlbnMoY29kZVRvSGlnaGxpZ2h0LCBlbWl0dGVyKTtcbiAgICAgIH1cblxuICAgICAgZW1pdHRlci5maW5hbGl6ZSgpO1xuICAgICAgcmVzdWx0ID0gZW1pdHRlci50b0hUTUwoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlTmFtZSxcbiAgICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICAgICAgcmVsZXZhbmNlLFxuICAgICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgICAgX2VtaXR0ZXI6IGVtaXR0ZXIsXG4gICAgICAgIF90b3A6IHRvcFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnSWxsZWdhbCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlTmFtZSxcbiAgICAgICAgICB2YWx1ZTogZXNjYXBlKGNvZGVUb0hpZ2hsaWdodCksXG4gICAgICAgICAgaWxsZWdhbDogdHJ1ZSxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgX2lsbGVnYWxCeToge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvZGVUb0hpZ2hsaWdodC5zbGljZShpbmRleCAtIDEwMCwgaW5kZXggKyAxMDApLFxuICAgICAgICAgICAgbW9kZTogZXJyLm1vZGUsXG4gICAgICAgICAgICByZXN1bHRTb0ZhcjogcmVzdWx0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBfZW1pdHRlcjogZW1pdHRlclxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChTQUZFX01PREUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2VOYW1lLFxuICAgICAgICAgIHZhbHVlOiBlc2NhcGUoY29kZVRvSGlnaGxpZ2h0KSxcbiAgICAgICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgZXJyb3JSYWlzZWQ6IGVycixcbiAgICAgICAgICBfZW1pdHRlcjogZW1pdHRlcixcbiAgICAgICAgICBfdG9wOiB0b3BcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJucyBhIHZhbGlkIGhpZ2hsaWdodCByZXN1bHQsIHdpdGhvdXQgYWN0dWFsbHkgZG9pbmcgYW55IGFjdHVhbCB3b3JrLFxuICAgKiBhdXRvIGhpZ2hsaWdodCBzdGFydHMgd2l0aCB0aGlzIGFuZCBpdCdzIHBvc3NpYmxlIGZvciBzbWFsbCBzbmlwcGV0cyB0aGF0XG4gICAqIGF1dG8tZGV0ZWN0aW9uIG1heSBub3QgZmluZCBhIGJldHRlciBtYXRjaFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZVxuICAgKiBAcmV0dXJucyB7SGlnaGxpZ2h0UmVzdWx0fVxuICAgKi9cbiAgZnVuY3Rpb24ganVzdFRleHRIaWdobGlnaHRSZXN1bHQoY29kZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHZhbHVlOiBlc2NhcGUoY29kZSksXG4gICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIF90b3A6IFBMQUlOVEVYVF9MQU5HVUFHRSxcbiAgICAgIF9lbWl0dGVyOiBuZXcgb3B0aW9ucy5fX2VtaXR0ZXIob3B0aW9ucylcbiAgICB9O1xuICAgIHJlc3VsdC5fZW1pdHRlci5hZGRUZXh0KGNvZGUpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgSGlnaGxpZ2h0aW5nIHdpdGggbGFuZ3VhZ2UgZGV0ZWN0aW9uLiBBY2NlcHRzIGEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG9cbiAgaGlnaGxpZ2h0LiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcblxuICAtIGxhbmd1YWdlIChkZXRlY3RlZCBsYW5ndWFnZSlcbiAgLSByZWxldmFuY2UgKGludClcbiAgLSB2YWx1ZSAoYW4gSFRNTCBzdHJpbmcgd2l0aCBoaWdobGlnaHRpbmcgbWFya3VwKVxuICAtIHNlY29uZEJlc3QgKG9iamVjdCB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBmb3Igc2Vjb25kLWJlc3QgaGV1cmlzdGljYWxseVxuICAgIGRldGVjdGVkIGxhbmd1YWdlLCBtYXkgYmUgYWJzZW50KVxuXG4gICAgQHBhcmFtIHtzdHJpbmd9IGNvZGVcbiAgICBAcGFyYW0ge0FycmF5PHN0cmluZz59IFtsYW5ndWFnZVN1YnNldF1cbiAgICBAcmV0dXJucyB7QXV0b0hpZ2hsaWdodFJlc3VsdH1cbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0QXV0byhjb2RlLCBsYW5ndWFnZVN1YnNldCkge1xuICAgIGxhbmd1YWdlU3Vic2V0ID0gbGFuZ3VhZ2VTdWJzZXQgfHwgb3B0aW9ucy5sYW5ndWFnZXMgfHwgT2JqZWN0LmtleXMobGFuZ3VhZ2VzKTtcbiAgICBjb25zdCBwbGFpbnRleHQgPSBqdXN0VGV4dEhpZ2hsaWdodFJlc3VsdChjb2RlKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBsYW5ndWFnZVN1YnNldC5maWx0ZXIoZ2V0TGFuZ3VhZ2UpLmZpbHRlcihhdXRvRGV0ZWN0aW9uKS5tYXAobmFtZSA9PlxuICAgICAgX2hpZ2hsaWdodChuYW1lLCBjb2RlLCBmYWxzZSlcbiAgICApO1xuICAgIHJlc3VsdHMudW5zaGlmdChwbGFpbnRleHQpOyAvLyBwbGFpbnRleHQgaXMgYWx3YXlzIGFuIG9wdGlvblxuXG4gICAgY29uc3Qgc29ydGVkID0gcmVzdWx0cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAvLyBzb3J0IGJhc2Ugb24gcmVsZXZhbmNlXG4gICAgICBpZiAoYS5yZWxldmFuY2UgIT09IGIucmVsZXZhbmNlKSByZXR1cm4gYi5yZWxldmFuY2UgLSBhLnJlbGV2YW5jZTtcblxuICAgICAgLy8gYWx3YXlzIGF3YXJkIHRoZSB0aWUgdG8gdGhlIGJhc2UgbGFuZ3VhZ2VcbiAgICAgIC8vIGllIGlmIEMrKyBhbmQgQXJkdWlubyBhcmUgdGllZCwgaXQncyBtb3JlIGxpa2VseSB0byBiZSBDKytcbiAgICAgIGlmIChhLmxhbmd1YWdlICYmIGIubGFuZ3VhZ2UpIHtcbiAgICAgICAgaWYgKGdldExhbmd1YWdlKGEubGFuZ3VhZ2UpLnN1cGVyc2V0T2YgPT09IGIubGFuZ3VhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmIChnZXRMYW5ndWFnZShiLmxhbmd1YWdlKS5zdXBlcnNldE9mID09PSBhLmxhbmd1YWdlKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG90aGVyd2lzZSBzYXkgdGhleSBhcmUgZXF1YWwsIHdoaWNoIGhhcyB0aGUgZWZmZWN0IG9mIHNvcnRpbmcgb25cbiAgICAgIC8vIHJlbGV2YW5jZSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCBvcmRlcmluZyAtIHdoaWNoIGlzIGhvdyB0aWVzXG4gICAgICAvLyBoYXZlIGhpc3RvcmljYWxseSBiZWVuIHNldHRsZWQsIGllIHRoZSBsYW5ndWFnZSB0aGF0IGNvbWVzIGZpcnN0IGFsd2F5c1xuICAgICAgLy8gd2lucyBpbiB0aGUgY2FzZSBvZiBhIHRpZVxuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG5cbiAgICBjb25zdCBbYmVzdCwgc2Vjb25kQmVzdF0gPSBzb3J0ZWQ7XG5cbiAgICAvKiogQHR5cGUge0F1dG9IaWdobGlnaHRSZXN1bHR9ICovXG4gICAgY29uc3QgcmVzdWx0ID0gYmVzdDtcbiAgICByZXN1bHQuc2Vjb25kQmVzdCA9IHNlY29uZEJlc3Q7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBuZXcgY2xhc3MgbmFtZSBmb3IgYmxvY2sgZ2l2ZW4gdGhlIGxhbmd1YWdlIG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2N1cnJlbnRMYW5nXVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3Jlc3VsdExhbmddXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVDbGFzc05hbWUoZWxlbWVudCwgY3VycmVudExhbmcsIHJlc3VsdExhbmcpIHtcbiAgICBjb25zdCBsYW5ndWFnZSA9IChjdXJyZW50TGFuZyAmJiBhbGlhc2VzW2N1cnJlbnRMYW5nXSkgfHwgcmVzdWx0TGFuZztcblxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImhsanNcIik7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBsYW5ndWFnZS0ke2xhbmd1YWdlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaGlnaGxpZ2h0aW5nIHRvIGEgRE9NIG5vZGUgY29udGFpbmluZyBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0hpZ2hsaWdodGVkSFRNTEVsZW1lbnR9IGVsZW1lbnQgLSB0aGUgSFRNTCBlbGVtZW50IHRvIGhpZ2hsaWdodFxuICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAvKiogQHR5cGUgSFRNTEVsZW1lbnQgKi9cbiAgICBsZXQgbm9kZSA9IG51bGw7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSBibG9ja0xhbmd1YWdlKGVsZW1lbnQpO1xuXG4gICAgaWYgKHNob3VsZE5vdEhpZ2hsaWdodChsYW5ndWFnZSkpIHJldHVybjtcblxuICAgIGZpcmUoXCJiZWZvcmU6aGlnaGxpZ2h0RWxlbWVudFwiLFxuICAgICAgeyBlbDogZWxlbWVudCwgbGFuZ3VhZ2UgfSk7XG5cbiAgICBpZiAoZWxlbWVudC5kYXRhc2V0LmhpZ2hsaWdodGVkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkVsZW1lbnQgcHJldmlvdXNseSBoaWdobGlnaHRlZC4gVG8gaGlnaGxpZ2h0IGFnYWluLCBmaXJzdCB1bnNldCBgZGF0YXNldC5oaWdobGlnaHRlZGAuXCIsIGVsZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHdlIHNob3VsZCBiZSBhbGwgdGV4dCwgbm8gY2hpbGQgbm9kZXMgKHVuZXNjYXBlZCBIVE1MKSAtIHRoaXMgaXMgcG9zc2libHlcbiAgICAvLyBhbiBIVE1MIGluamVjdGlvbiBhdHRhY2sgLSBpdCdzIGxpa2VseSB0b28gbGF0ZSBpZiB0aGlzIGlzIGFscmVhZHkgaW5cbiAgICAvLyBwcm9kdWN0aW9uICh0aGUgY29kZSBoYXMgbGlrZWx5IGFscmVhZHkgZG9uZSBpdHMgZGFtYWdlIGJ5IHRoZSB0aW1lXG4gICAgLy8gd2UncmUgc2VlaW5nIGl0KS4uLiBidXQgd2UgeWVsbCBsb3VkbHkgYWJvdXQgdGhpcyBzbyB0aGF0IGhvcGVmdWxseSBpdCdzXG4gICAgLy8gbW9yZSBsaWtlbHkgdG8gYmUgY2F1Z2h0IGluIGRldmVsb3BtZW50IGJlZm9yZSBtYWtpbmcgaXQgdG8gcHJvZHVjdGlvblxuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5pZ25vcmVVbmVzY2FwZWRIVE1MKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIk9uZSBvZiB5b3VyIGNvZGUgYmxvY2tzIGluY2x1ZGVzIHVuZXNjYXBlZCBIVE1MLiBUaGlzIGlzIGEgcG90ZW50aWFsbHkgc2VyaW91cyBzZWN1cml0eSByaXNrLlwiKTtcbiAgICAgICAgY29uc29sZS53YXJuKFwiaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy93aWtpL3NlY3VyaXR5XCIpO1xuICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgZWxlbWVudCB3aXRoIHVuZXNjYXBlZCBIVE1MOlwiKTtcbiAgICAgICAgY29uc29sZS53YXJuKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMudGhyb3dVbmVzY2FwZWRIVE1MKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBIVE1MSW5qZWN0aW9uRXJyb3IoXG4gICAgICAgICAgXCJPbmUgb2YgeW91ciBjb2RlIGJsb2NrcyBpbmNsdWRlcyB1bmVzY2FwZWQgSFRNTC5cIixcbiAgICAgICAgICBlbGVtZW50LmlubmVySFRNTFxuICAgICAgICApO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZSA9IGVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgY29uc3QgcmVzdWx0ID0gbGFuZ3VhZ2UgPyBoaWdobGlnaHQodGV4dCwgeyBsYW5ndWFnZSwgaWdub3JlSWxsZWdhbHM6IHRydWUgfSkgOiBoaWdobGlnaHRBdXRvKHRleHQpO1xuXG4gICAgZWxlbWVudC5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgZWxlbWVudC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gXCJ5ZXNcIjtcbiAgICB1cGRhdGVDbGFzc05hbWUoZWxlbWVudCwgbGFuZ3VhZ2UsIHJlc3VsdC5sYW5ndWFnZSk7XG4gICAgZWxlbWVudC5yZXN1bHQgPSB7XG4gICAgICBsYW5ndWFnZTogcmVzdWx0Lmxhbmd1YWdlLFxuICAgICAgLy8gVE9ETzogcmVtb3ZlIHdpdGggdmVyc2lvbiAxMS4wXG4gICAgICByZTogcmVzdWx0LnJlbGV2YW5jZSxcbiAgICAgIHJlbGV2YW5jZTogcmVzdWx0LnJlbGV2YW5jZVxuICAgIH07XG4gICAgaWYgKHJlc3VsdC5zZWNvbmRCZXN0KSB7XG4gICAgICBlbGVtZW50LnNlY29uZEJlc3QgPSB7XG4gICAgICAgIGxhbmd1YWdlOiByZXN1bHQuc2Vjb25kQmVzdC5sYW5ndWFnZSxcbiAgICAgICAgcmVsZXZhbmNlOiByZXN1bHQuc2Vjb25kQmVzdC5yZWxldmFuY2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZmlyZShcImFmdGVyOmhpZ2hsaWdodEVsZW1lbnRcIiwgeyBlbDogZWxlbWVudCwgcmVzdWx0LCB0ZXh0IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgaGlnaGxpZ2h0LmpzIGdsb2JhbCBvcHRpb25zIHdpdGggdGhlIHBhc3NlZCBvcHRpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxITEpTT3B0aW9ucz59IHVzZXJPcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBjb25maWd1cmUodXNlck9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gaW5oZXJpdChvcHRpb25zLCB1c2VyT3B0aW9ucyk7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgdjEyLCBkZXByZWNhdGVkXG4gIGNvbnN0IGluaXRIaWdobGlnaHRpbmcgPSAoKSA9PiB7XG4gICAgaGlnaGxpZ2h0QWxsKCk7XG4gICAgZGVwcmVjYXRlZChcIjEwLjYuMFwiLCBcImluaXRIaWdobGlnaHRpbmcoKSBkZXByZWNhdGVkLiAgVXNlIGhpZ2hsaWdodEFsbCgpIG5vdy5cIik7XG4gIH07XG5cbiAgLy8gVE9ETzogcmVtb3ZlIHYxMiwgZGVwcmVjYXRlZFxuICBmdW5jdGlvbiBpbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCkge1xuICAgIGhpZ2hsaWdodEFsbCgpO1xuICAgIGRlcHJlY2F0ZWQoXCIxMC42LjBcIiwgXCJpbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCkgZGVwcmVjYXRlZC4gIFVzZSBoaWdobGlnaHRBbGwoKSBub3cuXCIpO1xuICB9XG5cbiAgbGV0IHdhbnRzSGlnaGxpZ2h0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGF1dG8taGlnaGxpZ2h0cyBhbGwgcHJlPmNvZGUgZWxlbWVudHMgb24gdGhlIHBhZ2VcbiAgICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEFsbCgpIHtcbiAgICBmdW5jdGlvbiBib290KCkge1xuICAgICAgLy8gaWYgYSBoaWdobGlnaHQgd2FzIHJlcXVlc3RlZCBiZWZvcmUgRE9NIHdhcyBsb2FkZWQsIGRvIG5vd1xuICAgICAgaGlnaGxpZ2h0QWxsKCk7XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgYXJlIGNhbGxlZCB0b28gZWFybHkgaW4gdGhlIGxvYWRpbmcgcHJvY2Vzc1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgLy8gbWFrZSBzdXJlIHRoZSBldmVudCBsaXN0ZW5lciBpcyBvbmx5IGFkZGVkIG9uY2VcbiAgICAgIGlmICghd2FudHNIaWdobGlnaHQpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBib290LCBmYWxzZSk7XG4gICAgICB9XG4gICAgICB3YW50c0hpZ2hsaWdodCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmxvY2tzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChvcHRpb25zLmNzc1NlbGVjdG9yKTtcbiAgICBibG9ja3MuZm9yRWFjaChoaWdobGlnaHRFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxhbmd1YWdlIGdyYW1tYXIgbW9kdWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZU5hbWVcbiAgICogQHBhcmFtIHtMYW5ndWFnZUZufSBsYW5ndWFnZURlZmluaXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobGFuZ3VhZ2VOYW1lLCBsYW5ndWFnZURlZmluaXRpb24pIHtcbiAgICBsZXQgbGFuZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGxhbmcgPSBsYW5ndWFnZURlZmluaXRpb24oaGxqcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IkMSkge1xuICAgICAgZXJyb3IoXCJMYW5ndWFnZSBkZWZpbml0aW9uIGZvciAne30nIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkLlwiLnJlcGxhY2UoXCJ7fVwiLCBsYW5ndWFnZU5hbWUpKTtcbiAgICAgIC8vIGhhcmQgb3Igc29mdCBlcnJvclxuICAgICAgaWYgKCFTQUZFX01PREUpIHsgdGhyb3cgZXJyb3IkMTsgfSBlbHNlIHsgZXJyb3IoZXJyb3IkMSk7IH1cbiAgICAgIC8vIGxhbmd1YWdlcyB0aGF0IGhhdmUgc2VyaW91cyBlcnJvcnMgYXJlIHJlcGxhY2VkIHdpdGggZXNzZW50aWFsbHkgYVxuICAgICAgLy8gXCJwbGFpbnRleHRcIiBzdGFuZC1pbiBzbyB0aGF0IHRoZSBjb2RlIGJsb2NrcyB3aWxsIHN0aWxsIGdldCBub3JtYWxcbiAgICAgIC8vIGNzcyBjbGFzc2VzIGFwcGxpZWQgdG8gdGhlbSAtIGFuZCBvbmUgYmFkIGxhbmd1YWdlIHdvbid0IGJyZWFrIHRoZVxuICAgICAgLy8gZW50aXJlIGhpZ2hsaWdodGVyXG4gICAgICBsYW5nID0gUExBSU5URVhUX0xBTkdVQUdFO1xuICAgIH1cbiAgICAvLyBnaXZlIGl0IGEgdGVtcG9yYXJ5IG5hbWUgaWYgaXQgZG9lc24ndCBoYXZlIG9uZSBpbiB0aGUgbWV0YS1kYXRhXG4gICAgaWYgKCFsYW5nLm5hbWUpIGxhbmcubmFtZSA9IGxhbmd1YWdlTmFtZTtcbiAgICBsYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXSA9IGxhbmc7XG4gICAgbGFuZy5yYXdEZWZpbml0aW9uID0gbGFuZ3VhZ2VEZWZpbml0aW9uLmJpbmQobnVsbCwgaGxqcyk7XG5cbiAgICBpZiAobGFuZy5hbGlhc2VzKSB7XG4gICAgICByZWdpc3RlckFsaWFzZXMobGFuZy5hbGlhc2VzLCB7IGxhbmd1YWdlTmFtZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgbGFuZ3VhZ2UgZ3JhbW1hciBtb2R1bGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlTmFtZVxuICAgKi9cbiAgZnVuY3Rpb24gdW5yZWdpc3Rlckxhbmd1YWdlKGxhbmd1YWdlTmFtZSkge1xuICAgIGRlbGV0ZSBsYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXTtcbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGFsaWFzZXMpKSB7XG4gICAgICBpZiAoYWxpYXNlc1thbGlhc10gPT09IGxhbmd1YWdlTmFtZSkge1xuICAgICAgICBkZWxldGUgYWxpYXNlc1thbGlhc107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gTGlzdCBvZiBsYW5ndWFnZSBpbnRlcm5hbCBuYW1lc1xuICAgKi9cbiAgZnVuY3Rpb24gbGlzdExhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm5zIHtMYW5ndWFnZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IGFsaWFzTGlzdCAtIHNpbmdsZSBhbGlhcyBvciBsaXN0IG9mIGFsaWFzZXNcbiAgICogQHBhcmFtIHt7bGFuZ3VhZ2VOYW1lOiBzdHJpbmd9fSBvcHRzXG4gICAqL1xuICBmdW5jdGlvbiByZWdpc3RlckFsaWFzZXMoYWxpYXNMaXN0LCB7IGxhbmd1YWdlTmFtZSB9KSB7XG4gICAgaWYgKHR5cGVvZiBhbGlhc0xpc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICBhbGlhc0xpc3QgPSBbYWxpYXNMaXN0XTtcbiAgICB9XG4gICAgYWxpYXNMaXN0LmZvckVhY2goYWxpYXMgPT4geyBhbGlhc2VzW2FsaWFzLnRvTG93ZXJDYXNlKCldID0gbGFuZ3VhZ2VOYW1lOyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gbGFuZ3VhZ2UgaGFzIGF1dG8tZGV0ZWN0aW9uIGVuYWJsZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBuYW1lIG9mIHRoZSBsYW5ndWFnZVxuICAgKi9cbiAgZnVuY3Rpb24gYXV0b0RldGVjdGlvbihuYW1lKSB7XG4gICAgY29uc3QgbGFuZyA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIHJldHVybiBsYW5nICYmICFsYW5nLmRpc2FibGVBdXRvZGV0ZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGVzIHRoZSBvbGQgaGlnaGxpZ2h0QmxvY2sgcGx1Z2lucyB0byB0aGUgbmV3XG4gICAqIGhpZ2hsaWdodEVsZW1lbnQgQVBJXG4gICAqIEBwYXJhbSB7SExKU1BsdWdpbn0gcGx1Z2luXG4gICAqL1xuICBmdW5jdGlvbiB1cGdyYWRlUGx1Z2luQVBJKHBsdWdpbikge1xuICAgIC8vIFRPRE86IHJlbW92ZSB3aXRoIHYxMlxuICAgIGlmIChwbHVnaW5bXCJiZWZvcmU6aGlnaGxpZ2h0QmxvY2tcIl0gJiYgIXBsdWdpbltcImJlZm9yZTpoaWdobGlnaHRFbGVtZW50XCJdKSB7XG4gICAgICBwbHVnaW5bXCJiZWZvcmU6aGlnaGxpZ2h0RWxlbWVudFwiXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHBsdWdpbltcImJlZm9yZTpoaWdobGlnaHRCbG9ja1wiXShcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHsgYmxvY2s6IGRhdGEuZWwgfSwgZGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChwbHVnaW5bXCJhZnRlcjpoaWdobGlnaHRCbG9ja1wiXSAmJiAhcGx1Z2luW1wiYWZ0ZXI6aGlnaGxpZ2h0RWxlbWVudFwiXSkge1xuICAgICAgcGx1Z2luW1wiYWZ0ZXI6aGlnaGxpZ2h0RWxlbWVudFwiXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHBsdWdpbltcImFmdGVyOmhpZ2hsaWdodEJsb2NrXCJdKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBibG9jazogZGF0YS5lbCB9LCBkYXRhKVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtITEpTUGx1Z2lufSBwbHVnaW5cbiAgICovXG4gIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4pIHtcbiAgICB1cGdyYWRlUGx1Z2luQVBJKHBsdWdpbik7XG4gICAgcGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtITEpTUGx1Z2lufSBwbHVnaW5cbiAgICovXG4gIGZ1bmN0aW9uIHJlbW92ZVBsdWdpbihwbHVnaW4pIHtcbiAgICBjb25zdCBpbmRleCA9IHBsdWdpbnMuaW5kZXhPZihwbHVnaW4pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHBsdWdpbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtQbHVnaW5FdmVudH0gZXZlbnRcbiAgICogQHBhcmFtIHthbnl9IGFyZ3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpcmUoZXZlbnQsIGFyZ3MpIHtcbiAgICBjb25zdCBjYiA9IGV2ZW50O1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbihwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW5bY2JdKSB7XG4gICAgICAgIHBsdWdpbltjYl0oYXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogREVQUkVDQVRFRFxuICAgKiBAcGFyYW0ge0hpZ2hsaWdodGVkSFRNTEVsZW1lbnR9IGVsXG4gICAqL1xuICBmdW5jdGlvbiBkZXByZWNhdGVIaWdobGlnaHRCbG9jayhlbCkge1xuICAgIGRlcHJlY2F0ZWQoXCIxMC43LjBcIiwgXCJoaWdobGlnaHRCbG9jayB3aWxsIGJlIHJlbW92ZWQgZW50aXJlbHkgaW4gdjEyLjBcIik7XG4gICAgZGVwcmVjYXRlZChcIjEwLjcuMFwiLCBcIlBsZWFzZSB1c2UgaGlnaGxpZ2h0RWxlbWVudCBub3cuXCIpO1xuXG4gICAgcmV0dXJuIGhpZ2hsaWdodEVsZW1lbnQoZWwpO1xuICB9XG5cbiAgLyogSW50ZXJmYWNlIGRlZmluaXRpb24gKi9cbiAgT2JqZWN0LmFzc2lnbihobGpzLCB7XG4gICAgaGlnaGxpZ2h0LFxuICAgIGhpZ2hsaWdodEF1dG8sXG4gICAgaGlnaGxpZ2h0QWxsLFxuICAgIGhpZ2hsaWdodEVsZW1lbnQsXG4gICAgLy8gVE9ETzogUmVtb3ZlIHdpdGggdjEyIEFQSVxuICAgIGhpZ2hsaWdodEJsb2NrOiBkZXByZWNhdGVIaWdobGlnaHRCbG9jayxcbiAgICBjb25maWd1cmUsXG4gICAgaW5pdEhpZ2hsaWdodGluZyxcbiAgICBpbml0SGlnaGxpZ2h0aW5nT25Mb2FkLFxuICAgIHJlZ2lzdGVyTGFuZ3VhZ2UsXG4gICAgdW5yZWdpc3Rlckxhbmd1YWdlLFxuICAgIGxpc3RMYW5ndWFnZXMsXG4gICAgZ2V0TGFuZ3VhZ2UsXG4gICAgcmVnaXN0ZXJBbGlhc2VzLFxuICAgIGF1dG9EZXRlY3Rpb24sXG4gICAgaW5oZXJpdCxcbiAgICBhZGRQbHVnaW4sXG4gICAgcmVtb3ZlUGx1Z2luXG4gIH0pO1xuXG4gIGhsanMuZGVidWdNb2RlID0gZnVuY3Rpb24oKSB7IFNBRkVfTU9ERSA9IGZhbHNlOyB9O1xuICBobGpzLnNhZmVNb2RlID0gZnVuY3Rpb24oKSB7IFNBRkVfTU9ERSA9IHRydWU7IH07XG4gIGhsanMudmVyc2lvblN0cmluZyA9IHZlcnNpb247XG5cbiAgaGxqcy5yZWdleCA9IHtcbiAgICBjb25jYXQ6IGNvbmNhdCxcbiAgICBsb29rYWhlYWQ6IGxvb2thaGVhZCxcbiAgICBlaXRoZXI6IGVpdGhlcixcbiAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgYW55TnVtYmVyT2ZUaW1lczogYW55TnVtYmVyT2ZUaW1lc1xuICB9O1xuXG4gIGZvciAoY29uc3Qga2V5IGluIE1PREVTKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0eXBlb2YgTU9ERVNba2V5XSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGVlcEZyZWV6ZShNT0RFU1trZXldKTtcbiAgICB9XG4gIH1cblxuICAvLyBtZXJnZSBhbGwgdGhlIG1vZGVzL3JlZ2V4ZXMgaW50byBvdXIgbWFpbiBvYmplY3RcbiAgT2JqZWN0LmFzc2lnbihobGpzLCBNT0RFUyk7XG5cbiAgcmV0dXJuIGhsanM7XG59O1xuXG4vLyBPdGhlciBuYW1lcyBmb3IgdGhlIHZhcmlhYmxlIG1heSBicmVhayBidWlsZCBzY3JpcHRcbmNvbnN0IGhpZ2hsaWdodCA9IEhMSlMoe30pO1xuXG4vLyByZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBoaWdobGlnaHRlciB0byBiZSB1c2VkIGZvciBleHRlbnNpb25zXG4vLyBjaGVjayBodHRwczovL2dpdGh1Yi5jb20vd29vb3JtL2xvd2xpZ2h0L2lzc3Vlcy80N1xuaGlnaGxpZ2h0Lm5ld0luc3RhbmNlID0gKCkgPT4gSExKUyh7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaGlnaGxpZ2h0O1xuaGlnaGxpZ2h0LkhpZ2hsaWdodEpTID0gaGlnaGxpZ2h0O1xuaGlnaGxpZ2h0LmRlZmF1bHQgPSBoaWdobGlnaHQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1074\n")},1079:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\nvar YAMLSeq = __webpack_require__(6626);\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3OS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBeUI7QUFDaEQsY0FBYyxtQkFBTyxDQUFDLElBQXdCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxXQUFXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9zY2hlbWEvY29tbW9uL3NlcS5qcz8wNGU1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnKTtcbnZhciBZQU1MU2VxID0gcmVxdWlyZSgnLi4vLi4vbm9kZXMvWUFNTFNlcS5qcycpO1xuXG5jb25zdCBzZXEgPSB7XG4gICAgY29sbGVjdGlvbjogJ3NlcScsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICBub2RlQ2xhc3M6IFlBTUxTZXEuWUFNTFNlcSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzZXEnLFxuICAgIHJlc29sdmUoc2VxLCBvbkVycm9yKSB7XG4gICAgICAgIGlmICghaWRlbnRpdHkuaXNTZXEoc2VxKSlcbiAgICAgICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgc2VxdWVuY2UgZm9yIHRoaXMgdGFnJyk7XG4gICAgICAgIHJldHVybiBzZXE7XG4gICAgfSxcbiAgICBjcmVhdGVOb2RlOiAoc2NoZW1hLCBvYmosIGN0eCkgPT4gWUFNTFNlcS5ZQU1MU2VxLmZyb20oc2NoZW1hLCBvYmosIGN0eClcbn07XG5cbmV4cG9ydHMuc2VxID0gc2VxO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1079\n")},1094:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar createNode = __webpack_require__(3547);\nvar stringifyPair = __webpack_require__(6265);\nvar addPairToJSMap = __webpack_require__(5835);\nvar identity = __webpack_require__(5900);\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5NC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixpQkFBaUIsbUJBQU8sQ0FBQyxJQUFzQjtBQUMvQyxvQkFBb0IsbUJBQU8sQ0FBQyxJQUErQjtBQUMzRCxxQkFBcUIsbUJBQU8sQ0FBQyxJQUFxQjtBQUNsRCxlQUFlLG1CQUFPLENBQUMsSUFBZTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsc0JBQXNCO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxhQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVk7QUFDWixrQkFBa0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L25vZGVzL1BhaXIuanM/YWY2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVOb2RlID0gcmVxdWlyZSgnLi4vZG9jL2NyZWF0ZU5vZGUuanMnKTtcbnZhciBzdHJpbmdpZnlQYWlyID0gcmVxdWlyZSgnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeVBhaXIuanMnKTtcbnZhciBhZGRQYWlyVG9KU01hcCA9IHJlcXVpcmUoJy4vYWRkUGFpclRvSlNNYXAuanMnKTtcbnZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHkuanMnKTtcblxuZnVuY3Rpb24gY3JlYXRlUGFpcihrZXksIHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCBrID0gY3JlYXRlTm9kZS5jcmVhdGVOb2RlKGtleSwgdW5kZWZpbmVkLCBjdHgpO1xuICAgIGNvbnN0IHYgPSBjcmVhdGVOb2RlLmNyZWF0ZU5vZGUodmFsdWUsIHVuZGVmaW5lZCwgY3R4KTtcbiAgICByZXR1cm4gbmV3IFBhaXIoaywgdik7XG59XG5jbGFzcyBQYWlyIHtcbiAgICBjb25zdHJ1Y3RvcihrZXksIHZhbHVlID0gbnVsbCkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgaWRlbnRpdHkuTk9ERV9UWVBFLCB7IHZhbHVlOiBpZGVudGl0eS5QQUlSIH0pO1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBjbG9uZShzY2hlbWEpIHtcbiAgICAgICAgbGV0IHsga2V5LCB2YWx1ZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGlkZW50aXR5LmlzTm9kZShrZXkpKVxuICAgICAgICAgICAga2V5ID0ga2V5LmNsb25lKHNjaGVtYSk7XG4gICAgICAgIGlmIChpZGVudGl0eS5pc05vZGUodmFsdWUpKVxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5jbG9uZShzY2hlbWEpO1xuICAgICAgICByZXR1cm4gbmV3IFBhaXIoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIHRvSlNPTihfLCBjdHgpIHtcbiAgICAgICAgY29uc3QgcGFpciA9IGN0eD8ubWFwQXNNYXAgPyBuZXcgTWFwKCkgOiB7fTtcbiAgICAgICAgcmV0dXJuIGFkZFBhaXJUb0pTTWFwLmFkZFBhaXJUb0pTTWFwKGN0eCwgcGFpciwgdGhpcyk7XG4gICAgfVxuICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICByZXR1cm4gY3R4Py5kb2NcbiAgICAgICAgICAgID8gc3RyaW5naWZ5UGFpci5zdHJpbmdpZnlQYWlyKHRoaXMsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnRzLlBhaXIgPSBQYWlyO1xuZXhwb3J0cy5jcmVhdGVQYWlyID0gY3JlYXRlUGFpcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1094\n")},1147:module=>{eval("/*\nLanguage: R\nDescription: R is a free software environment for statistical computing and graphics.\nAuthor: Joe Cheng \nContributors: Konrad Rudolph \nWebsite: https://www.r-project.org\nCategory: common,scientific\n*/\n\n/** @type LanguageFn */\nfunction r(hljs) {\n const regex = hljs.regex;\n // Identifiers in R cannot start with `_`, but they can start with `.` if it\n // is not immediately followed by a digit.\n // R also supports quoted identifiers, which are near-arbitrary sequences\n // delimited by backticks (`…`), which may contain escape sequences. These are\n // handled in a separate mode. See `test/markup/r/names.txt` for examples.\n // FIXME: Support Unicode identifiers.\n const IDENT_RE = /(?:(?:[a-zA-Z]|\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\.(?!\\d)/;\n const NUMBER_TYPES_RE = regex.either(\n // Special case: only hexadecimal binary powers can contain fractions\n /0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/,\n // Hexadecimal numbers without fraction and optional binary power\n /0[xX][0-9a-fA-F]+(?:[pP][+-]?\\d+)?[Li]?/,\n // Decimal numbers\n /(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?[Li]?/\n );\n const OPERATORS_RE = /[=!<>:]=|\\|\\||&&|:::?|<-|<<-|->>|->|\\|>|[-+*\\/?!$&|:<=>@^~]|\\*\\*/;\n const PUNCTUATION_RE = regex.either(\n /[()]/,\n /[{}]/,\n /\\[\\[/,\n /[[\\]]/,\n /\\\\/,\n /,/\n );\n\n return {\n name: 'R',\n\n keywords: {\n $pattern: IDENT_RE,\n keyword:\n 'function if in break next repeat else for while',\n literal:\n 'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 '\n + 'NA_character_|10 NA_complex_|10',\n built_in:\n // Builtin constants\n 'LETTERS letters month.abb month.name pi T F '\n // Primitive functions\n // These are all the functions in `base` that are implemented as a\n // `.Primitive`, minus those functions that are also keywords.\n + 'abs acos acosh all any anyNA Arg as.call as.character '\n + 'as.complex as.double as.environment as.integer as.logical '\n + 'as.null.default as.numeric as.raw asin asinh atan atanh attr '\n + 'attributes baseenv browser c call ceiling class Conj cos cosh '\n + 'cospi cummax cummin cumprod cumsum digamma dim dimnames '\n + 'emptyenv exp expression floor forceAndCall gamma gc.time '\n + 'globalenv Im interactive invisible is.array is.atomic is.call '\n + 'is.character is.complex is.double is.environment is.expression '\n + 'is.finite is.function is.infinite is.integer is.language '\n + 'is.list is.logical is.matrix is.na is.name is.nan is.null '\n + 'is.numeric is.object is.pairlist is.raw is.recursive is.single '\n + 'is.symbol lazyLoadDBfetch length lgamma list log max min '\n + 'missing Mod names nargs nzchar oldClass on.exit pos.to.env '\n + 'proc.time prod quote range Re rep retracemem return round '\n + 'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt '\n + 'standardGeneric substitute sum switch tan tanh tanpi tracemem '\n + 'trigamma trunc unclass untracemem UseMethod xtfrm',\n },\n\n contains: [\n // Roxygen comments\n hljs.COMMENT(\n /#'/,\n /$/,\n { contains: [\n {\n // Handle `@examples` separately to cause all subsequent code\n // until the next `@`-tag on its own line to be kept as-is,\n // preventing highlighting. This code is example R code, so nested\n // doctags shouldn’t be treated as such. See\n // `test/markup/r/roxygen.txt` for an example.\n scope: 'doctag',\n match: /@examples/,\n starts: {\n end: regex.lookahead(regex.either(\n // end if another doc comment\n /\\n^#'\\s*(?=@[a-zA-Z]+)/,\n // or a line with no comment\n /\\n^(?!#')/\n )),\n endsParent: true\n }\n },\n {\n // Handle `@param` to highlight the parameter name following\n // after.\n scope: 'doctag',\n begin: '@param',\n end: /$/,\n contains: [\n {\n scope: 'variable',\n variants: [\n { match: IDENT_RE },\n { match: /`(?:\\\\.|[^`\\\\])+`/ }\n ],\n endsParent: true\n }\n ]\n },\n {\n scope: 'doctag',\n match: /@[a-zA-Z]+/\n },\n {\n scope: 'keyword',\n match: /\\\\[a-zA-Z]+/\n }\n ] }\n ),\n\n hljs.HASH_COMMENT_MODE,\n\n {\n scope: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\(/,\n end: /\\)(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\{/,\n end: /\\}(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\[/,\n end: /\\](-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\(/,\n end: /\\)(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\{/,\n end: /\\}(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\[/,\n end: /\\](-*)'/\n }),\n {\n begin: '\"',\n end: '\"',\n relevance: 0\n },\n {\n begin: \"'\",\n end: \"'\",\n relevance: 0\n }\n ],\n },\n\n // Matching numbers immediately following punctuation and operators is\n // tricky since we need to look at the character ahead of a number to\n // ensure the number is not part of an identifier, and we cannot use\n // negative look-behind assertions. So instead we explicitly handle all\n // possible combinations of (operator|punctuation), number.\n // TODO: replace with negative look-behind when available\n // { begin: /(?{eval("/*\nLanguage: MoonScript\nAuthor: Billy Quith \nDescription: MoonScript is a programming language that transcompiles to Lua.\nOrigin: coffeescript.js\nWebsite: http://moonscript.org/\nCategory: scripting\n*/\n\nfunction moonscript(hljs) {\n const KEYWORDS = {\n keyword:\n // Moonscript keywords\n 'if then not for in while do return else elseif break continue switch and or '\n + 'unless when class extends super local import export from using',\n literal:\n 'true false nil',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load '\n + 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require '\n + 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug '\n + 'io math os package string table'\n };\n const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const EXPRESSIONS = [\n hljs.inherit(hljs.C_NUMBER_MODE,\n { starts: {\n end: '(\\\\s*/)?',\n relevance: 0\n } }), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: '@__' + hljs.IDENT_RE\n },\n { begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n },\n { begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE });\n const POSSIBLE_PARAMS_RE = '(\\\\(.*\\\\)\\\\s*)?\\\\B[-=]>';\n const PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]',\n returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [ 'self' ].concat(EXPRESSIONS)\n }\n ]\n };\n\n return {\n name: 'MoonScript',\n aliases: [ 'moon' ],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('--', '$'),\n {\n className: 'function', // function: -> =>\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + POSSIBLE_PARAMS_RE,\n end: '[-=]>',\n returnBegin: true,\n contains: [\n TITLE,\n PARAMS\n ]\n },\n {\n begin: /[\\(,:=]\\s*/, // anonymous function start\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: POSSIBLE_PARAMS_RE,\n end: '[-=]>',\n returnBegin: true,\n contains: [ PARAMS ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [ TITLE ]\n },\n TITLE\n ]\n },\n {\n className: 'name', // table\n begin: JS_IDENT_RE + ':',\n end: ':',\n returnBegin: true,\n returnEnd: true,\n relevance: 0\n }\n ])\n };\n}\n\nmodule.exports = moonscript;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3MS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxNQUFNO0FBQ04sS0FBSztBQUNMLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdELG9CQUFvQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21vb25zY3JpcHQuanM/ZWViOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE1vb25TY3JpcHRcbkF1dGhvcjogQmlsbHkgUXVpdGggPGNoaW5iaWxseWJpbGJvQGdtYWlsLmNvbT5cbkRlc2NyaXB0aW9uOiBNb29uU2NyaXB0IGlzIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhhdCB0cmFuc2NvbXBpbGVzIHRvIEx1YS5cbk9yaWdpbjogY29mZmVlc2NyaXB0LmpzXG5XZWJzaXRlOiBodHRwOi8vbW9vbnNjcmlwdC5vcmcvXG5DYXRlZ29yeTogc2NyaXB0aW5nXG4qL1xuXG5mdW5jdGlvbiBtb29uc2NyaXB0KGhsanMpIHtcbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgIC8vIE1vb25zY3JpcHQga2V5d29yZHNcbiAgICAgICdpZiB0aGVuIG5vdCBmb3IgaW4gd2hpbGUgZG8gcmV0dXJuIGVsc2UgZWxzZWlmIGJyZWFrIGNvbnRpbnVlIHN3aXRjaCBhbmQgb3IgJ1xuICAgICAgKyAndW5sZXNzIHdoZW4gY2xhc3MgZXh0ZW5kcyBzdXBlciBsb2NhbCBpbXBvcnQgZXhwb3J0IGZyb20gdXNpbmcnLFxuICAgIGxpdGVyYWw6XG4gICAgICAndHJ1ZSBmYWxzZSBuaWwnLFxuICAgIGJ1aWx0X2luOlxuICAgICAgJ19HIF9WRVJTSU9OIGFzc2VydCBjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgJ1xuICAgICAgKyAnbG9hZGZpbGUgbG9hZHN0cmluZyBtb2R1bGUgbmV4dCBwYWlycyBwY2FsbCBwcmludCByYXdlcXVhbCByYXdnZXQgcmF3c2V0IHJlcXVpcmUgJ1xuICAgICAgKyAnc2VsZWN0IHNldGZlbnYgc2V0bWV0YXRhYmxlIHRvbnVtYmVyIHRvc3RyaW5nIHR5cGUgdW5wYWNrIHhwY2FsbCBjb3JvdXRpbmUgZGVidWcgJ1xuICAgICAgKyAnaW8gbWF0aCBvcyBwYWNrYWdlIHN0cmluZyB0YWJsZSdcbiAgfTtcbiAgY29uc3QgSlNfSURFTlRfUkUgPSAnW0EtWmEteiRfXVswLTlBLVphLXokX10qJztcbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgY29uc3QgRVhQUkVTU0lPTlMgPSBbXG4gICAgaGxqcy5pbmhlcml0KGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHsgc3RhcnRzOiB7XG4gICAgICAgIGVuZDogJyhcXFxccyovKT8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0gfSksIC8vIGEgbnVtYmVyIHRyaWVzIHRvIGVhdCB0aGUgZm9sbG93aW5nIHNsYXNoIHRvIHByZXZlbnQgdHJlYXRpbmcgaXQgYXMgYSByZWdleHBcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgICAgZW5kOiAvJy8sXG4gICAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICAgIGVuZDogL1wiLyxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgICAgU1VCU1RcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgIGJlZ2luOiAnQF9fJyArIGhsanMuSURFTlRfUkVcbiAgICB9LFxuICAgIHsgYmVnaW46ICdAJyArIGhsanMuSURFTlRfUkUgLy8gcmVsZXZhbmNlIGJvb3N0ZXIgb24gcGFyIHdpdGggQ29mZmVlU2NyaXB0XG4gICAgfSxcbiAgICB7IGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxcXFxcJyArIGhsanMuSURFTlRfUkUgLy8gaW5zdFxcbWV0aG9kXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IEVYUFJFU1NJT05TO1xuXG4gIGNvbnN0IFRJVExFID0gaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwgeyBiZWdpbjogSlNfSURFTlRfUkUgfSk7XG4gIGNvbnN0IFBPU1NJQkxFX1BBUkFNU19SRSA9ICcoXFxcXCguKlxcXFwpXFxcXHMqKT9cXFxcQlstPV0+JztcbiAgY29uc3QgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46ICdcXFxcKFteXFxcXChdJyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAvKiBXZSBuZWVkIGFub3RoZXIgY29udGFpbmVkIG5hbWVsZXNzIG1vZGUgdG8gbm90IGhhdmUgZXZlcnkgbmVzdGVkXG4gICAgcGFpciBvZiBwYXJlbnMgdG8gYmUgY2FsbGVkIFwicGFyYW1zXCIgKi9cbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFsgJ3NlbGYnIF0uY29uY2F0KEVYUFJFU1NJT05TKVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdNb29uU2NyaXB0JyxcbiAgICBhbGlhc2VzOiBbICdtb29uJyBdLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogRVhQUkVTU0lPTlMuY29uY2F0KFtcbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsIC8vIGZ1bmN0aW9uOiAtPiA9PlxuICAgICAgICBiZWdpbjogJ15cXFxccyonICsgSlNfSURFTlRfUkUgKyAnXFxcXHMqPVxcXFxzKicgKyBQT1NTSUJMRV9QQVJBTVNfUkUsXG4gICAgICAgIGVuZDogJ1stPV0+JyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVElUTEUsXG4gICAgICAgICAgUEFSQU1TXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvW1xcKCw6PV1cXHMqLywgLy8gYW5vbnltb3VzIGZ1bmN0aW9uIHN0YXJ0XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICBiZWdpbjogUE9TU0lCTEVfUEFSQU1TX1JFLFxuICAgICAgICAgICAgZW5kOiAnWy09XT4nLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBjb250YWluczogWyBQQVJBTVMgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogL1s6PVwiXFxbXFxdXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMnLFxuICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBpbGxlZ2FsOiAvWzo9XCJcXFtcXF1dLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbIFRJVExFIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFRJVExFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLCAvLyB0YWJsZVxuICAgICAgICBiZWdpbjogSlNfSURFTlRfUkUgKyAnOicsXG4gICAgICAgIGVuZDogJzonLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdKVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1vb25zY3JpcHQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1171\n")},1214:module=>{eval('const IDENT_RE = \'[A-Za-z$_][0-9A-Za-z$_]*\';\nconst KEYWORDS = [\n "as", // for exports\n "in",\n "of",\n "if",\n "for",\n "while",\n "finally",\n "var",\n "new",\n "function",\n "do",\n "return",\n "void",\n "else",\n "break",\n "catch",\n "instanceof",\n "with",\n "throw",\n "case",\n "default",\n "try",\n "switch",\n "continue",\n "typeof",\n "delete",\n "let",\n "yield",\n "const",\n "class",\n // JS handles these with a special rule\n // "get",\n // "set",\n "debugger",\n "async",\n "await",\n "static",\n "import",\n "from",\n "export",\n "extends",\n // It\'s reached stage 3, which is "recommended for implementation":\n "using"\n];\nconst LITERALS = [\n "true",\n "false",\n "null",\n "undefined",\n "NaN",\n "Infinity"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n "Object",\n "Function",\n "Boolean",\n "Symbol",\n // numbers and dates\n "Math",\n "Date",\n "Number",\n "BigInt",\n // text\n "String",\n "RegExp",\n // Indexed collections\n "Array",\n "Float32Array",\n "Float64Array",\n "Int8Array",\n "Uint8Array",\n "Uint8ClampedArray",\n "Int16Array",\n "Int32Array",\n "Uint16Array",\n "Uint32Array",\n "BigInt64Array",\n "BigUint64Array",\n // Keyed collections\n "Set",\n "Map",\n "WeakSet",\n "WeakMap",\n // Structured data\n "ArrayBuffer",\n "SharedArrayBuffer",\n "Atomics",\n "DataView",\n "JSON",\n // Control abstraction objects\n "Promise",\n "Generator",\n "GeneratorFunction",\n "AsyncFunction",\n // Reflection\n "Reflect",\n "Proxy",\n // Internationalization\n "Intl",\n // WebAssembly\n "WebAssembly"\n];\n\nconst ERROR_TYPES = [\n "Error",\n "EvalError",\n "InternalError",\n "RangeError",\n "ReferenceError",\n "SyntaxError",\n "TypeError",\n "URIError"\n];\n\nconst BUILT_IN_GLOBALS = [\n "setInterval",\n "setTimeout",\n "clearInterval",\n "clearTimeout",\n\n "require",\n "exports",\n\n "eval",\n "isFinite",\n "isNaN",\n "parseFloat",\n "parseInt",\n "decodeURI",\n "decodeURIComponent",\n "encodeURI",\n "encodeURIComponent",\n "escape",\n "unescape"\n];\n\nconst BUILT_IN_VARIABLES = [\n "arguments",\n "this",\n "super",\n "console",\n "window",\n "document",\n "localStorage",\n "sessionStorage",\n "module",\n "global" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like " {\n const tag = "\',\n end: \'\'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `>`, etc.\n nextChar === "<" ||\n // the , gives away that this is not HTML\n // ``\n nextChar === ","\n ) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === ">") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // (key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // ``\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n "variable.language": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = \'[0-9](_?[0-9])*\';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: \'number\',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: "\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b" },\n { begin: "\\\\b0[bB][0-1](_?[0-1])*n?\\\\b" },\n { begin: "\\\\b0[oO][0-7](_?[0-7])*n?\\\\b" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: "\\\\b0[0-7]+n?\\\\b" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: \'subst\',\n begin: \'\\\\$\\\\{\',\n end: \'\\\\}\',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: \'\\.?html`\',\n end: \'\',\n starts: {\n end: \'`\',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \'xml\'\n }\n };\n const CSS_TEMPLATE = {\n begin: \'\\.?css`\',\n end: \'\',\n starts: {\n end: \'`\',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \'css\'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: \'\\.?gql`\',\n end: \'\',\n starts: {\n end: \'`\',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \'graphql\'\n }\n };\n const TEMPLATE_STRING = {\n className: \'string\',\n begin: \'`\',\n end: \'`\',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n \'\\\\*/\',\n {\n relevance: 0,\n contains: [\n {\n begin: \'(?=@[A-Za-z]+)\',\n relevance: 0,\n contains: [\n {\n className: \'doctag\',\n begin: \'@[A-Za-z]+\'\n },\n {\n className: \'type\',\n begin: \'\\\\{\',\n end: \'\\\\}\',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: \'variable\',\n begin: IDENT_RE$1 + \'(?=\\\\s*(-)|$)\',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: "comment",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n "self"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: ["self"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: \'params\',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, "(", regex.concat(/\\./, IDENT_RE$1), ")*")\n ],\n scope: {\n 1: "keyword",\n 3: "title.class",\n 5: "keyword",\n 7: "title.class.inherited"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: "keyword",\n 3: "title.class"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: "title.class",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: "use_strict",\n className: \'meta\',\n relevance: 10,\n begin: /^\\s*[\'"]use (strict|asm)[\'"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: "keyword",\n 3: "title.function"\n },\n label: "func.def",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: "variable.constant"\n };\n\n function noneOf(list) {\n return regex.concat("(?!", list.join("|"), ")");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n "super",\n "import"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: "title.function",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: "prototype",\n className: "property",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: "keyword",\n 3: "title.function"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = \'(\\\\(\' +\n \'[^()]*(\\\\(\' +\n \'[^()]*(\\\\(\' +\n \'[^()]*\' +\n \'\\\\)[^()]*)*\' +\n \'\\\\)[^()]*)*\' +\n \'\\\\)|\' + hljs.UNDERSCORE_IDENT_RE + \')\\\\s*=>\';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: "async",\n className: {\n 1: "keyword",\n 3: "title.function"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: \'JavaScript\',\n aliases: [\'js\', \'jsx\', \'mjs\', \'cjs\'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: "shebang",\n binary: "node",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: \'attr\',\n match: IDENT_RE$1 + regex.lookahead(\':\'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // "value" container\n begin: \'(\' + hljs.RE_STARTERS_RE + \'|\\\\b(case|return|throw)\\\\b)\\\\s*\',\n keywords: \'return throw case\',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: \'function\',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: \'\\\\s*=>\',\n contains: [\n {\n className: \'params\',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n \'on:begin\': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: \'xml\',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: [\'self\']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear "function like"\n beginKeywords: "while if switch catch for"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: \'\\\\b(?!function)\' + hljs.UNDERSCORE_IDENT_RE +\n \'\\\\(\' + // first parens\n \'[^()]*(\\\\(\' +\n \'[^()]*(\\\\(\' +\n \'[^()]*\' +\n \'\\\\)[^()]*)*\' +\n \'\\\\)[^()]*)*\' +\n \'\\\\)\\\\s*\\\\{\', // end parens\n returnBegin:true,\n label: "func.def",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: "title.function" })\n ]\n },\n // catch ... so it won\'t trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: \'\\\\$\' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: "title.function" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti \nContributors: Ike Ku \nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/\n\n\n/** @type LanguageFn */\nfunction typescript(hljs) {\n const regex = hljs.regex;\n const tsLanguage = javascript(hljs);\n\n const IDENT_RE$1 = IDENT_RE;\n const TYPES = [\n "any",\n "void",\n "number",\n "boolean",\n "string",\n "object",\n "never",\n "symbol",\n "bigint",\n "unknown"\n ];\n const NAMESPACE = {\n begin: [\n /namespace/,\n /\\s+/,\n hljs.IDENT_RE\n ],\n beginScope: {\n 1: "keyword",\n 3: "title.class"\n }\n };\n const INTERFACE = {\n beginKeywords: \'interface\',\n end: /\\{/,\n excludeEnd: true,\n keywords: {\n keyword: \'interface extends\',\n built_in: TYPES\n },\n contains: [ tsLanguage.exports.CLASS_REFERENCE ]\n };\n const USE_STRICT = {\n className: \'meta\',\n relevance: 10,\n begin: /^\\s*[\'"]use strict[\'"]/\n };\n const TS_SPECIFIC_KEYWORDS = [\n "type",\n // "namespace",\n "interface",\n "public",\n "private",\n "protected",\n "implements",\n "declare",\n "abstract",\n "readonly",\n "enum",\n "override",\n "satisfies"\n ];\n /*\n namespace is a TS keyword but it\'s fine to use it as a variable name too.\n const message = \'foo\';\n const namespace = \'bar\';\n */\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES),\n "variable.language": BUILT_IN_VARIABLES\n };\n\n const DECORATOR = {\n className: \'meta\',\n begin: \'@\' + IDENT_RE$1,\n };\n\n const swapMode = (mode, label, replacement) => {\n const indx = mode.contains.findIndex(m => m.label === label);\n if (indx === -1) { throw new Error("can not find mode to replace"); }\n\n mode.contains.splice(indx, 1, replacement);\n };\n\n\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n\n // highlight the function params\n const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === "attr");\n\n // take default attr rule and extend it to support optionals\n const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({},\n ATTRIBUTE_HIGHLIGHT,\n { match: regex.concat(IDENT_RE$1, regex.lookahead(/\\s*\\?:/)) }\n );\n tsLanguage.exports.PARAMS_CONTAINS.push([\n tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types\n ATTRIBUTE_HIGHLIGHT, // highlight the params key\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // Add the optional property assignment highlighting for objects or classes\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE,\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, "shebang", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, "use_strict", USE_STRICT);\n\n const functionDeclaration = tsLanguage.contains.find(m => m.label === "func.def");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n\n Object.assign(tsLanguage, {\n name: \'TypeScript\',\n aliases: [\n \'ts\',\n \'tsx\',\n \'mts\',\n \'cts\'\n ]\n });\n\n return tsLanguage;\n}\n\nmodule.exports = typescript;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxNC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxrQkFBa0I7QUFDL0IsY0FBYyxlQUFlO0FBQzdCO0FBQ0Esa0NBQWtDLE9BQU87QUFDekM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0JBQWtCO0FBQ2pDLGVBQWUsa0JBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msd0JBQXdCO0FBQzVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZUFBZSxlQUFlLEtBQUssS0FBSyxXQUFXLEtBQUs7QUFDaEUscUJBQXFCLGNBQWMsT0FBTztBQUMxQyxRQUFRLGNBQWMsZUFBZSxRQUFRLEtBQUssY0FBYyxLQUFLLE9BQU87O0FBRTVFO0FBQ0EsUUFBUSxxQ0FBcUM7O0FBRTdDO0FBQ0EsUUFBUSxtREFBbUQ7QUFDM0QsUUFBUSx1Q0FBdUM7QUFDL0MsUUFBUSx1Q0FBdUM7O0FBRS9DO0FBQ0E7QUFDQSxRQUFRLDBCQUEwQjtBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxnQkFBZ0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSxnQkFBZ0I7QUFDaEIsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsR0FBRztBQUNsQjtBQUNBLGVBQWUsR0FBRztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixFQUFFO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0NBQWtDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGdCQUFnQjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsWUFBWTtBQUNaO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFlBQVk7QUFDWjtBQUNBLGdCQUFnQiwwQ0FBMEM7QUFDMUQsZ0JBQWdCLHlCQUF5QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsZ0RBQWdEO0FBQzFGO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLFlBQVk7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3R5cGVzY3JpcHQuanM/MGFlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBJREVOVF9SRSA9ICdbQS1aYS16JF9dWzAtOUEtWmEteiRfXSonO1xuY29uc3QgS0VZV09SRFMgPSBbXG4gIFwiYXNcIiwgLy8gZm9yIGV4cG9ydHNcbiAgXCJpblwiLFxuICBcIm9mXCIsXG4gIFwiaWZcIixcbiAgXCJmb3JcIixcbiAgXCJ3aGlsZVwiLFxuICBcImZpbmFsbHlcIixcbiAgXCJ2YXJcIixcbiAgXCJuZXdcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcImRvXCIsXG4gIFwicmV0dXJuXCIsXG4gIFwidm9pZFwiLFxuICBcImVsc2VcIixcbiAgXCJicmVha1wiLFxuICBcImNhdGNoXCIsXG4gIFwiaW5zdGFuY2VvZlwiLFxuICBcIndpdGhcIixcbiAgXCJ0aHJvd1wiLFxuICBcImNhc2VcIixcbiAgXCJkZWZhdWx0XCIsXG4gIFwidHJ5XCIsXG4gIFwic3dpdGNoXCIsXG4gIFwiY29udGludWVcIixcbiAgXCJ0eXBlb2ZcIixcbiAgXCJkZWxldGVcIixcbiAgXCJsZXRcIixcbiAgXCJ5aWVsZFwiLFxuICBcImNvbnN0XCIsXG4gIFwiY2xhc3NcIixcbiAgLy8gSlMgaGFuZGxlcyB0aGVzZSB3aXRoIGEgc3BlY2lhbCBydWxlXG4gIC8vIFwiZ2V0XCIsXG4gIC8vIFwic2V0XCIsXG4gIFwiZGVidWdnZXJcIixcbiAgXCJhc3luY1wiLFxuICBcImF3YWl0XCIsXG4gIFwic3RhdGljXCIsXG4gIFwiaW1wb3J0XCIsXG4gIFwiZnJvbVwiLFxuICBcImV4cG9ydFwiLFxuICBcImV4dGVuZHNcIixcbiAgLy8gSXQncyByZWFjaGVkIHN0YWdlIDMsIHdoaWNoIGlzIFwicmVjb21tZW5kZWQgZm9yIGltcGxlbWVudGF0aW9uXCI6XG4gIFwidXNpbmdcIlxuXTtcbmNvbnN0IExJVEVSQUxTID0gW1xuICBcInRydWVcIixcbiAgXCJmYWxzZVwiLFxuICBcIm51bGxcIixcbiAgXCJ1bmRlZmluZWRcIixcbiAgXCJOYU5cIixcbiAgXCJJbmZpbml0eVwiXG5dO1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0c1xuY29uc3QgVFlQRVMgPSBbXG4gIC8vIEZ1bmRhbWVudGFsIG9iamVjdHNcbiAgXCJPYmplY3RcIixcbiAgXCJGdW5jdGlvblwiLFxuICBcIkJvb2xlYW5cIixcbiAgXCJTeW1ib2xcIixcbiAgLy8gbnVtYmVycyBhbmQgZGF0ZXNcbiAgXCJNYXRoXCIsXG4gIFwiRGF0ZVwiLFxuICBcIk51bWJlclwiLFxuICBcIkJpZ0ludFwiLFxuICAvLyB0ZXh0XG4gIFwiU3RyaW5nXCIsXG4gIFwiUmVnRXhwXCIsXG4gIC8vIEluZGV4ZWQgY29sbGVjdGlvbnNcbiAgXCJBcnJheVwiLFxuICBcIkZsb2F0MzJBcnJheVwiLFxuICBcIkZsb2F0NjRBcnJheVwiLFxuICBcIkludDhBcnJheVwiLFxuICBcIlVpbnQ4QXJyYXlcIixcbiAgXCJVaW50OENsYW1wZWRBcnJheVwiLFxuICBcIkludDE2QXJyYXlcIixcbiAgXCJJbnQzMkFycmF5XCIsXG4gIFwiVWludDE2QXJyYXlcIixcbiAgXCJVaW50MzJBcnJheVwiLFxuICBcIkJpZ0ludDY0QXJyYXlcIixcbiAgXCJCaWdVaW50NjRBcnJheVwiLFxuICAvLyBLZXllZCBjb2xsZWN0aW9uc1xuICBcIlNldFwiLFxuICBcIk1hcFwiLFxuICBcIldlYWtTZXRcIixcbiAgXCJXZWFrTWFwXCIsXG4gIC8vIFN0cnVjdHVyZWQgZGF0YVxuICBcIkFycmF5QnVmZmVyXCIsXG4gIFwiU2hhcmVkQXJyYXlCdWZmZXJcIixcbiAgXCJBdG9taWNzXCIsXG4gIFwiRGF0YVZpZXdcIixcbiAgXCJKU09OXCIsXG4gIC8vIENvbnRyb2wgYWJzdHJhY3Rpb24gb2JqZWN0c1xuICBcIlByb21pc2VcIixcbiAgXCJHZW5lcmF0b3JcIixcbiAgXCJHZW5lcmF0b3JGdW5jdGlvblwiLFxuICBcIkFzeW5jRnVuY3Rpb25cIixcbiAgLy8gUmVmbGVjdGlvblxuICBcIlJlZmxlY3RcIixcbiAgXCJQcm94eVwiLFxuICAvLyBJbnRlcm5hdGlvbmFsaXphdGlvblxuICBcIkludGxcIixcbiAgLy8gV2ViQXNzZW1ibHlcbiAgXCJXZWJBc3NlbWJseVwiXG5dO1xuXG5jb25zdCBFUlJPUl9UWVBFUyA9IFtcbiAgXCJFcnJvclwiLFxuICBcIkV2YWxFcnJvclwiLFxuICBcIkludGVybmFsRXJyb3JcIixcbiAgXCJSYW5nZUVycm9yXCIsXG4gIFwiUmVmZXJlbmNlRXJyb3JcIixcbiAgXCJTeW50YXhFcnJvclwiLFxuICBcIlR5cGVFcnJvclwiLFxuICBcIlVSSUVycm9yXCJcbl07XG5cbmNvbnN0IEJVSUxUX0lOX0dMT0JBTFMgPSBbXG4gIFwic2V0SW50ZXJ2YWxcIixcbiAgXCJzZXRUaW1lb3V0XCIsXG4gIFwiY2xlYXJJbnRlcnZhbFwiLFxuICBcImNsZWFyVGltZW91dFwiLFxuXG4gIFwicmVxdWlyZVwiLFxuICBcImV4cG9ydHNcIixcblxuICBcImV2YWxcIixcbiAgXCJpc0Zpbml0ZVwiLFxuICBcImlzTmFOXCIsXG4gIFwicGFyc2VGbG9hdFwiLFxuICBcInBhcnNlSW50XCIsXG4gIFwiZGVjb2RlVVJJXCIsXG4gIFwiZGVjb2RlVVJJQ29tcG9uZW50XCIsXG4gIFwiZW5jb2RlVVJJXCIsXG4gIFwiZW5jb2RlVVJJQ29tcG9uZW50XCIsXG4gIFwiZXNjYXBlXCIsXG4gIFwidW5lc2NhcGVcIlxuXTtcblxuY29uc3QgQlVJTFRfSU5fVkFSSUFCTEVTID0gW1xuICBcImFyZ3VtZW50c1wiLFxuICBcInRoaXNcIixcbiAgXCJzdXBlclwiLFxuICBcImNvbnNvbGVcIixcbiAgXCJ3aW5kb3dcIixcbiAgXCJkb2N1bWVudFwiLFxuICBcImxvY2FsU3RvcmFnZVwiLFxuICBcInNlc3Npb25TdG9yYWdlXCIsXG4gIFwibW9kdWxlXCIsXG4gIFwiZ2xvYmFsXCIgLy8gTm9kZS5qc1xuXTtcblxuY29uc3QgQlVJTFRfSU5TID0gW10uY29uY2F0KFxuICBCVUlMVF9JTl9HTE9CQUxTLFxuICBUWVBFUyxcbiAgRVJST1JfVFlQRVNcbik7XG5cbi8qXG5MYW5ndWFnZTogSmF2YVNjcmlwdFxuRGVzY3JpcHRpb246IEphdmFTY3JpcHQgKEpTKSBpcyBhIGxpZ2h0d2VpZ2h0LCBpbnRlcnByZXRlZCwgb3IganVzdC1pbi10aW1lIGNvbXBpbGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIHdpdGggZmlyc3QtY2xhc3MgZnVuY3Rpb25zLlxuQ2F0ZWdvcnk6IGNvbW1vbiwgc2NyaXB0aW5nLCB3ZWJcbldlYnNpdGU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHRcbiovXG5cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGphdmFzY3JpcHQoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIC8qKlxuICAgKiBUYWtlcyBhIHN0cmluZyBsaWtlIFwiPEJvb2dlclwiIGFuZCBjaGVja3MgdG8gc2VlXG4gICAqIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgXCI8L0Jvb2dlclwiIGxhdGVyIGluIHRoZVxuICAgKiBjb250ZW50LlxuICAgKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoXG4gICAqIEBwYXJhbSB7e2FmdGVyOm51bWJlcn19IHBhcmFtMVxuICAgKi9cbiAgY29uc3QgaGFzQ2xvc2luZ1RhZyA9IChtYXRjaCwgeyBhZnRlciB9KSA9PiB7XG4gICAgY29uc3QgdGFnID0gXCI8L1wiICsgbWF0Y2hbMF0uc2xpY2UoMSk7XG4gICAgY29uc3QgcG9zID0gbWF0Y2guaW5wdXQuaW5kZXhPZih0YWcsIGFmdGVyKTtcbiAgICByZXR1cm4gcG9zICE9PSAtMTtcbiAgfTtcblxuICBjb25zdCBJREVOVF9SRSQxID0gSURFTlRfUkU7XG4gIGNvbnN0IEZSQUdNRU5UID0ge1xuICAgIGJlZ2luOiAnPD4nLFxuICAgIGVuZDogJzwvPidcbiAgfTtcbiAgLy8gdG8gYXZvaWQgc29tZSBzcGVjaWFsIGNhc2VzIGluc2lkZSBpc1RydWx5T3BlbmluZ1RhZ1xuICBjb25zdCBYTUxfU0VMRl9DTE9TSU5HID0gLzxbQS1aYS16MC05XFxcXC5fOi1dK1xccypcXC8+LztcbiAgY29uc3QgWE1MX1RBRyA9IHtcbiAgICBiZWdpbjogLzxbQS1aYS16MC05XFxcXC5fOi1dKy8sXG4gICAgZW5kOiAvXFwvW0EtWmEtejAtOVxcXFwuXzotXSs+fFxcLz4vLFxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7UmVnRXhwTWF0Y2hBcnJheX0gbWF0Y2hcbiAgICAgKiBAcGFyYW0ge0NhbGxiYWNrUmVzcG9uc2V9IHJlc3BvbnNlXG4gICAgICovXG4gICAgaXNUcnVseU9wZW5pbmdUYWc6IChtYXRjaCwgcmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IGFmdGVyTWF0Y2hJbmRleCA9IG1hdGNoWzBdLmxlbmd0aCArIG1hdGNoLmluZGV4O1xuICAgICAgY29uc3QgbmV4dENoYXIgPSBtYXRjaC5pbnB1dFthZnRlck1hdGNoSW5kZXhdO1xuICAgICAgaWYgKFxuICAgICAgICAvLyBIVE1MIHNob3VsZCBub3QgaW5jbHVkZSBhbm90aGVyIHJhdyBgPGAgaW5zaWRlIGEgdGFnXG4gICAgICAgIC8vIG5lc3RlZCB0eXBlP1xuICAgICAgICAvLyBgPEFycmF5PEFycmF5PG51bWJlcj4+YCwgZXRjLlxuICAgICAgICBuZXh0Q2hhciA9PT0gXCI8XCIgfHxcbiAgICAgICAgLy8gdGhlICwgZ2l2ZXMgYXdheSB0aGF0IHRoaXMgaXMgbm90IEhUTUxcbiAgICAgICAgLy8gYDxULCBBIGV4dGVuZHMga2V5b2YgVCwgVj5gXG4gICAgICAgIG5leHRDaGFyID09PSBcIixcIlxuICAgICAgICApIHtcbiAgICAgICAgcmVzcG9uc2UuaWdub3JlTWF0Y2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBgPHNvbWV0aGluZz5gXG4gICAgICAvLyBRdWl0ZSBwb3NzaWJseSBhIHRhZywgbGV0cyBsb29rIGZvciBhIG1hdGNoaW5nIGNsb3NpbmcgdGFnLi4uXG4gICAgICBpZiAobmV4dENoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIC8vIGlmIHdlIGNhbm5vdCBmaW5kIGEgbWF0Y2hpbmcgY2xvc2luZyB0YWcsIHRoZW4gd2VcbiAgICAgICAgLy8gd2lsbCBpZ25vcmUgaXRcbiAgICAgICAgaWYgKCFoYXNDbG9zaW5nVGFnKG1hdGNoLCB7IGFmdGVyOiBhZnRlck1hdGNoSW5kZXggfSkpIHtcbiAgICAgICAgICByZXNwb25zZS5pZ25vcmVNYXRjaCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGA8YmxhaCAvPmAgKHNlbGYtY2xvc2luZylcbiAgICAgIC8vIGhhbmRsZWQgYnkgc2ltcGxlU2VsZkNsb3NpbmcgcnVsZVxuXG4gICAgICBsZXQgbTtcbiAgICAgIGNvbnN0IGFmdGVyTWF0Y2ggPSBtYXRjaC5pbnB1dC5zdWJzdHJpbmcoYWZ0ZXJNYXRjaEluZGV4KTtcblxuICAgICAgLy8gc29tZSBtb3JlIHRlbXBsYXRlIHR5cGluZyBzdHVmZlxuICAgICAgLy8gIDxUID0gYW55PihrZXk/OiBzdHJpbmcpID0+IE1vZGlmeTxcbiAgICAgIGlmICgobSA9IGFmdGVyTWF0Y2gubWF0Y2goL15cXHMqPS8pKSkge1xuICAgICAgICByZXNwb25zZS5pZ25vcmVNYXRjaCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGA8RnJvbSBleHRlbmRzIHN0cmluZz5gXG4gICAgICAvLyB0ZWNobmljYWxseSB0aGlzIGNvdWxkIGJlIEhUTUwsIGJ1dCBpdCBzbWVsbHMgbGlrZSBhIHR5cGVcbiAgICAgIC8vIE5PVEU6IFRoaXMgaXMgdWdoLCBidXQgYWRkZWQgc3BlY2lmaWNhbGx5IGZvciBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8zMjc2XG4gICAgICBpZiAoKG0gPSBhZnRlck1hdGNoLm1hdGNoKC9eXFxzK2V4dGVuZHNcXHMrLykpKSB7XG4gICAgICAgIGlmIChtLmluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcmVzcG9uc2UuaWdub3JlTWF0Y2goKTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1yZXR1cm5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IEtFWVdPUkRTJDEgPSB7XG4gICAgJHBhdHRlcm46IElERU5UX1JFLFxuICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTlMsXG4gICAgXCJ2YXJpYWJsZS5sYW5ndWFnZVwiOiBCVUlMVF9JTl9WQVJJQUJMRVNcbiAgfTtcblxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxpdGVyYWxzLW51bWVyaWMtbGl0ZXJhbHNcbiAgY29uc3QgZGVjaW1hbERpZ2l0cyA9ICdbMC05XShfP1swLTldKSonO1xuICBjb25zdCBmcmFjID0gYFxcXFwuKCR7ZGVjaW1hbERpZ2l0c30pYDtcbiAgLy8gRGVjaW1hbEludGVnZXJMaXRlcmFsLCBpbmNsdWRpbmcgQW5uZXggQiBOb25PY3RhbERlY2ltYWxJbnRlZ2VyTGl0ZXJhbFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkZGl0aW9uYWwtc3ludGF4LW51bWVyaWMtbGl0ZXJhbHNcbiAgY29uc3QgZGVjaW1hbEludGVnZXIgPSBgMHxbMS05XShfP1swLTldKSp8MFswLTddKls4OV1bMC05XSpgO1xuICBjb25zdCBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgLy8gRGVjaW1hbExpdGVyYWxcbiAgICAgIHsgYmVnaW46IGAoXFxcXGIoJHtkZWNpbWFsSW50ZWdlcn0pKCgke2ZyYWN9KXxcXFxcLik/fCgke2ZyYWN9KSlgICtcbiAgICAgICAgYFtlRV1bKy1dPygke2RlY2ltYWxEaWdpdHN9KVxcXFxiYCB9LFxuICAgICAgeyBiZWdpbjogYFxcXFxiKCR7ZGVjaW1hbEludGVnZXJ9KVxcXFxiKCgke2ZyYWN9KVxcXFxifFxcXFwuKT98KCR7ZnJhY30pXFxcXGJgIH0sXG5cbiAgICAgIC8vIERlY2ltYWxCaWdJbnRlZ2VyTGl0ZXJhbFxuICAgICAgeyBiZWdpbjogYFxcXFxiKDB8WzEtOV0oXz9bMC05XSkqKW5cXFxcYmAgfSxcblxuICAgICAgLy8gTm9uRGVjaW1hbEludGVnZXJMaXRlcmFsXG4gICAgICB7IGJlZ2luOiBcIlxcXFxiMFt4WF1bMC05YS1mQS1GXShfP1swLTlhLWZBLUZdKSpuP1xcXFxiXCIgfSxcbiAgICAgIHsgYmVnaW46IFwiXFxcXGIwW2JCXVswLTFdKF8/WzAtMV0pKm4/XFxcXGJcIiB9LFxuICAgICAgeyBiZWdpbjogXCJcXFxcYjBbb09dWzAtN10oXz9bMC03XSkqbj9cXFxcYlwiIH0sXG5cbiAgICAgIC8vIExlZ2FjeU9jdGFsSW50ZWdlckxpdGVyYWwgKGRvZXMgbm90IGluY2x1ZGUgdW5kZXJzY29yZSBzZXBhcmF0b3JzKVxuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZGRpdGlvbmFsLXN5bnRheC1udW1lcmljLWxpdGVyYWxzXG4gICAgICB7IGJlZ2luOiBcIlxcXFxiMFswLTddK24/XFxcXGJcIiB9LFxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnXFxcXCRcXFxceycsXG4gICAgZW5kOiAnXFxcXH0nLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgIGNvbnRhaW5zOiBbXSAvLyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIGNvbnN0IEhUTUxfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdcXC4/aHRtbGAnLFxuICAgIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJyxcbiAgICAgIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnXG4gICAgfVxuICB9O1xuICBjb25zdCBDU1NfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdcXC4/Y3NzYCcsXG4gICAgZW5kOiAnJyxcbiAgICBzdGFydHM6IHtcbiAgICAgIGVuZDogJ2AnLFxuICAgICAgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ2NzcydcbiAgICB9XG4gIH07XG4gIGNvbnN0IEdSQVBIUUxfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdcXC4/Z3FsYCcsXG4gICAgZW5kOiAnJyxcbiAgICBzdGFydHM6IHtcbiAgICAgIGVuZDogJ2AnLFxuICAgICAgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ2dyYXBocWwnXG4gICAgfVxuICB9O1xuICBjb25zdCBURU1QTEFURV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ2AnLFxuICAgIGVuZDogJ2AnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgY29uc3QgSlNET0NfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAvXFwvXFwqXFwqKD8hXFwvKS8sXG4gICAgJ1xcXFwqLycsXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnKD89QFtBLVphLXpdKyknLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdcXFxceycsXG4gICAgICAgICAgICAgIGVuZDogJ1xcXFx9JyxcbiAgICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgICAgICAgYmVnaW46IElERU5UX1JFJDEgKyAnKD89XFxcXHMqKC0pfCQpJyxcbiAgICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gZWF0IHNwYWNlcyAobm90IG5ld2xpbmVzKSBzbyB3ZSBjYW4gZmluZFxuICAgICAgICAgICAgLy8gdHlwZXMgb3IgdmFyaWFibGVzXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAvKD89W15cXG5dKVxccy8sXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgKTtcbiAgY29uc3QgQ09NTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICBKU0RPQ19DT01NRU5ULFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcbiAgY29uc3QgU1VCU1RfSU5URVJOQUxTID0gW1xuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIEhUTUxfVEVNUExBVEUsXG4gICAgQ1NTX1RFTVBMQVRFLFxuICAgIEdSQVBIUUxfVEVNUExBVEUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIC8vIFNraXAgbnVtYmVycyB3aGVuIHRoZXkgYXJlIHBhcnQgb2YgYSB2YXJpYWJsZSBuYW1lXG4gICAgeyBtYXRjaDogL1xcJFxcZCsvIH0sXG4gICAgTlVNQkVSLFxuICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWw6XG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzMyODhcbiAgICAvLyBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gU1VCU1RfSU5URVJOQUxTXG4gICAgLmNvbmNhdCh7XG4gICAgICAvLyB3ZSBuZWVkIHRvIHBhaXIgdXAge30gaW5zaWRlIG91ciBzdWJzdCB0byBwcmV2ZW50XG4gICAgICAvLyBpdCBmcm9tIGVuZGluZyB0b28gZWFybHkgYnkgbWF0Y2hpbmcgYW5vdGhlciB9XG4gICAgICBiZWdpbjogL1xcey8sXG4gICAgICBlbmQ6IC9cXH0vLFxuICAgICAga2V5d29yZHM6IEtFWVdPUkRTJDEsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBcInNlbGZcIlxuICAgICAgXS5jb25jYXQoU1VCU1RfSU5URVJOQUxTKVxuICAgIH0pO1xuICBjb25zdCBTVUJTVF9BTkRfQ09NTUVOVFMgPSBbXS5jb25jYXQoQ09NTUVOVCwgU1VCU1QuY29udGFpbnMpO1xuICBjb25zdCBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVF9BTkRfQ09NTUVOVFMuY29uY2F0KFtcbiAgICAvLyBlYXQgcmVjdXJzaXZlIHBhcmVucyBpbiBzdWIgZXhwcmVzc2lvbnNcbiAgICB7XG4gICAgICBiZWdpbjogLyhcXHMqKVxcKC8sXG4gICAgICBlbmQ6IC9cXCkvLFxuICAgICAga2V5d29yZHM6IEtFWVdPUkRTJDEsXG4gICAgICBjb250YWluczogW1wic2VsZlwiXS5jb25jYXQoU1VCU1RfQU5EX0NPTU1FTlRTKVxuICAgIH1cbiAgXSk7XG4gIGNvbnN0IFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIC8vIGNvbnZlcnQgdGhpcyB0byBuZWdhdGl2ZSBsb29rYmVoaW5kIGluIHYxMlxuICAgIGJlZ2luOiAvKFxccyopXFwoLywgLy8gdG8gbWF0Y2ggdGhlIHBhcm1zIHdpdGhcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgfTtcblxuICAvLyBFUzYgY2xhc3Nlc1xuICBjb25zdCBDTEFTU19PUl9FWFRFTkRTID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBjbGFzcyBDYXIgZXh0ZW5kcyB2ZWhpY2xlXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2NsYXNzLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUkMSxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgL2V4dGVuZHMvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICByZWdleC5jb25jYXQoSURFTlRfUkUkMSwgXCIoXCIsIHJlZ2V4LmNvbmNhdCgvXFwuLywgSURFTlRfUkUkMSksIFwiKSpcIilcbiAgICAgICAgXSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmNsYXNzXCIsXG4gICAgICAgICAgNTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgNzogXCJ0aXRsZS5jbGFzcy5pbmhlcml0ZWRcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gY2xhc3MgQ2FyXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2NsYXNzLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUkMVxuICAgICAgICBdLFxuICAgICAgICBzY29wZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidGl0bGUuY2xhc3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IENMQVNTX1JFRkVSRU5DRSA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgbWF0Y2g6XG4gICAgcmVnZXguZWl0aGVyKFxuICAgICAgLy8gSGFyZCBjb2RlZCBleGNlcHRpb25zXG4gICAgICAvXFxiSlNPTi8sXG4gICAgICAvLyBGbG9hdDMyQXJyYXksIE91dFRcbiAgICAgIC9cXGJbQS1aXVthLXpdKyhbQS1aXVthLXpdKnxcXGQpKi8sXG4gICAgICAvLyBDU1NGYWN0b3J5LCBDU1NGYWN0b3J5VFxuICAgICAgL1xcYltBLVpdezIsfShbQS1aXVthLXpdK3xcXGQpKyhbQS1aXVthLXpdKikqLyxcbiAgICAgIC8vIEZQcywgRlBzVFxuICAgICAgL1xcYltBLVpdezIsfVthLXpdKyhbQS1aXVthLXpdK3xcXGQpKihbQS1aXVthLXpdKikqLyxcbiAgICAgIC8vIFBcbiAgICAgIC8vIHNpbmdsZSBsZXR0ZXJzIGFyZSBub3QgaGlnaGxpZ2h0ZWRcbiAgICAgIC8vIEJMQUhcbiAgICAgIC8vIHRoaXMgd2lsbCBiZSBmbGFnZ2VkIGFzIGEgVVBQRVJfQ0FTRV9DT05TVEFOVCBpbnN0ZWFkXG4gICAgKSxcbiAgICBjbGFzc05hbWU6IFwidGl0bGUuY2xhc3NcIixcbiAgICBrZXl3b3Jkczoge1xuICAgICAgXzogW1xuICAgICAgICAvLyBzZSB3ZSBzdGlsbCBnZXQgcmVsZXZhbmNlIGNyZWRpdCBmb3IgSlMgbGlicmFyeSBjbGFzc2VzXG4gICAgICAgIC4uLlRZUEVTLFxuICAgICAgICAuLi5FUlJPUl9UWVBFU1xuICAgICAgXVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBVU0VfU1RSSUNUID0ge1xuICAgIGxhYmVsOiBcInVzZV9zdHJpY3RcIixcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgfTtcblxuICBjb25zdCBGVU5DVElPTl9ERUZJTklUSU9OID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2Z1bmN0aW9uLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUkMSxcbiAgICAgICAgICAvKD89XFxzKlxcKCkvXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBhbm9ueW1vdXMgZnVuY3Rpb25cbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvZnVuY3Rpb24vLFxuICAgICAgICAgIC9cXHMqKD89XFwoKS9cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH0sXG4gICAgbGFiZWw6IFwiZnVuYy5kZWZcIixcbiAgICBjb250YWluczogWyBQQVJBTVMgXSxcbiAgICBpbGxlZ2FsOiAvJS9cbiAgfTtcblxuICBjb25zdCBVUFBFUl9DQVNFX0NPTlNUQU5UID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBtYXRjaDogL1xcYltBLVpdW0EtWl8wLTldK1xcYi8sXG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlLmNvbnN0YW50XCJcbiAgfTtcblxuICBmdW5jdGlvbiBub25lT2YobGlzdCkge1xuICAgIHJldHVybiByZWdleC5jb25jYXQoXCIoPyFcIiwgbGlzdC5qb2luKFwifFwiKSwgXCIpXCIpO1xuICB9XG5cbiAgY29uc3QgRlVOQ1RJT05fQ0FMTCA9IHtcbiAgICBtYXRjaDogcmVnZXguY29uY2F0KFxuICAgICAgL1xcYi8sXG4gICAgICBub25lT2YoW1xuICAgICAgICAuLi5CVUlMVF9JTl9HTE9CQUxTLFxuICAgICAgICBcInN1cGVyXCIsXG4gICAgICAgIFwiaW1wb3J0XCJcbiAgICAgIF0ubWFwKHggPT4gYCR7eH1cXFxccypcXFxcKGApKSxcbiAgICAgIElERU5UX1JFJDEsIHJlZ2V4Lmxvb2thaGVhZCgvXFxzKlxcKC8pKSxcbiAgICBjbGFzc05hbWU6IFwidGl0bGUuZnVuY3Rpb25cIixcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBQUk9QRVJUWV9BQ0NFU1MgPSB7XG4gICAgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFwuLywgcmVnZXgubG9va2FoZWFkKFxuICAgICAgcmVnZXguY29uY2F0KElERU5UX1JFJDEsIC8oPyFbMC05QS1aYS16JF8oXSkvKVxuICAgICkpLFxuICAgIGVuZDogSURFTlRfUkUkMSxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAga2V5d29yZHM6IFwicHJvdG90eXBlXCIsXG4gICAgY2xhc3NOYW1lOiBcInByb3BlcnR5XCIsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgR0VUVEVSX09SX1NFVFRFUiA9IHtcbiAgICBtYXRjaDogW1xuICAgICAgL2dldHxzZXQvLFxuICAgICAgL1xccysvLFxuICAgICAgSURFTlRfUkUkMSxcbiAgICAgIC8oPz1cXCgpL1xuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8gZWF0IHRvIGF2b2lkIGVtcHR5IHBhcmFtc1xuICAgICAgICBiZWdpbjogL1xcKFxcKS9cbiAgICAgIH0sXG4gICAgICBQQVJBTVNcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgRlVOQ19MRUFEX0lOX1JFID0gJyhcXFxcKCcgK1xuICAgICdbXigpXSooXFxcXCgnICtcbiAgICAnW14oKV0qKFxcXFwoJyArXG4gICAgJ1teKCldKicgK1xuICAgICdcXFxcKVteKCldKikqJyArXG4gICAgJ1xcXFwpW14oKV0qKSonICtcbiAgICAnXFxcXCl8JyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICcpXFxcXHMqPT4nO1xuXG4gIGNvbnN0IEZVTkNUSU9OX1ZBUklBQkxFID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvY29uc3R8dmFyfGxldC8sIC9cXHMrLyxcbiAgICAgIElERU5UX1JFJDEsIC9cXHMqLyxcbiAgICAgIC89XFxzKi8sXG4gICAgICAvKGFzeW5jXFxzKik/LywgLy8gYXN5bmMgaXMgb3B0aW9uYWxcbiAgICAgIHJlZ2V4Lmxvb2thaGVhZChGVU5DX0xFQURfSU5fUkUpXG4gICAgXSxcbiAgICBrZXl3b3JkczogXCJhc3luY1wiLFxuICAgIGNsYXNzTmFtZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcInRpdGxlLmZ1bmN0aW9uXCJcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQQVJBTVNcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnSmF2YVNjcmlwdCcsXG4gICAgYWxpYXNlczogWydqcycsICdqc3gnLCAnbWpzJywgJ2NqcyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgIC8vIHRoaXMgd2lsbCBiZSBleHRlbmRlZCBieSBUeXBlU2NyaXB0XG4gICAgZXhwb3J0czogeyBQQVJBTVNfQ09OVEFJTlMsIENMQVNTX1JFRkVSRU5DRSB9LFxuICAgIGlsbGVnYWw6IC8jKD8hWyRfQS16XSkvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlNIRUJBTkcoe1xuICAgICAgICBsYWJlbDogXCJzaGViYW5nXCIsXG4gICAgICAgIGJpbmFyeTogXCJub2RlXCIsXG4gICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgfSksXG4gICAgICBVU0VfU1RSSUNULFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBHUkFQSFFMX1RFTVBMQVRFLFxuICAgICAgVEVNUExBVEVfU1RSSU5HLFxuICAgICAgQ09NTUVOVCxcbiAgICAgIC8vIFNraXAgbnVtYmVycyB3aGVuIHRoZXkgYXJlIHBhcnQgb2YgYSB2YXJpYWJsZSBuYW1lXG4gICAgICB7IG1hdGNoOiAvXFwkXFxkKy8gfSxcbiAgICAgIE5VTUJFUixcbiAgICAgIENMQVNTX1JFRkVSRU5DRSxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6ICdhdHRyJyxcbiAgICAgICAgbWF0Y2g6IElERU5UX1JFJDEgKyByZWdleC5sb29rYWhlYWQoJzonKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fVkFSSUFCTEUsXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKGNhc2V8cmV0dXJufHRocm93KVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuIHRocm93IGNhc2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gY291bnQgdGhlIHBhcmVucyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGF2ZSB0aGVcbiAgICAgICAgICAgIC8vIGNvcnJlY3QgYm91bmRpbmcgKCApIGJlZm9yZSB0aGUgPT4uICBUaGVyZSBjb3VsZCBiZSBhbnkgbnVtYmVyIG9mXG4gICAgICAgICAgICAvLyBzdWItZXhwcmVzc2lvbnMgaW5zaWRlIGFsc28gc3Vycm91bmRlZCBieSBwYXJlbnMuXG4gICAgICAgICAgICBiZWdpbjogRlVOQ19MRUFEX0lOX1JFLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC8oXFxzKilcXCgvLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogUEFSQU1TX0NPTlRBSU5TXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IC8vIGNvdWxkIGJlIGEgY29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgcGFyYW1zIHRvIGEgZnVuY3Rpb24gY2FsbFxuICAgICAgICAgICAgYmVnaW46IC8sLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF0Y2g6IC9cXHMrLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBKU1hcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46IEZSQUdNRU5ULmJlZ2luLCBlbmQ6IEZSQUdNRU5ULmVuZCB9LFxuICAgICAgICAgICAgICB7IG1hdGNoOiBYTUxfU0VMRl9DTE9TSU5HIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogWE1MX1RBRy5iZWdpbixcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYXJlZnVsbHkgY2hlY2sgdGhlIG9wZW5pbmcgdGFnIHRvIHNlZSBpZiBpdCB0cnVseVxuICAgICAgICAgICAgICAgIC8vIGlzIGEgdGFnIGFuZCBub3QgYSBmYWxzZSBwb3NpdGl2ZVxuICAgICAgICAgICAgICAgICdvbjpiZWdpbic6IFhNTF9UQUcuaXNUcnVseU9wZW5pbmdUYWcsXG4gICAgICAgICAgICAgICAgZW5kOiBYTUxfVEFHLmVuZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiBYTUxfVEFHLmJlZ2luLFxuICAgICAgICAgICAgICAgIGVuZDogWE1MX1RBRy5lbmQsXG4gICAgICAgICAgICAgICAgc2tpcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBGVU5DVElPTl9ERUZJTklUSU9OLFxuICAgICAge1xuICAgICAgICAvLyBwcmV2ZW50IHRoaXMgZnJvbSBnZXR0aW5nIHN3YWxsb3dlZCB1cCBieSBmdW5jdGlvblxuICAgICAgICAvLyBzaW5jZSB0aGV5IGFwcGVhciBcImZ1bmN0aW9uIGxpa2VcIlxuICAgICAgICBiZWdpbktleXdvcmRzOiBcIndoaWxlIGlmIHN3aXRjaCBjYXRjaCBmb3JcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gd2UgaGF2ZSB0byBjb3VudCB0aGUgcGFyZW5zIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYXZlIHRoZSBjb3JyZWN0XG4gICAgICAgIC8vIGJvdW5kaW5nICggKS4gIFRoZXJlIGNvdWxkIGJlIGFueSBudW1iZXIgb2Ygc3ViLWV4cHJlc3Npb25zIGluc2lkZVxuICAgICAgICAvLyBhbHNvIHN1cnJvdW5kZWQgYnkgcGFyZW5zLlxuICAgICAgICBiZWdpbjogJ1xcXFxiKD8hZnVuY3Rpb24pJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArXG4gICAgICAgICAgJ1xcXFwoJyArIC8vIGZpcnN0IHBhcmVuc1xuICAgICAgICAgICdbXigpXSooXFxcXCgnICtcbiAgICAgICAgICAgICdbXigpXSooXFxcXCgnICtcbiAgICAgICAgICAgICAgJ1teKCldKicgK1xuICAgICAgICAgICAgJ1xcXFwpW14oKV0qKSonICtcbiAgICAgICAgICAnXFxcXClbXigpXSopKicgK1xuICAgICAgICAgICdcXFxcKVxcXFxzKlxcXFx7JywgLy8gZW5kIHBhcmVuc1xuICAgICAgICByZXR1cm5CZWdpbjp0cnVlLFxuICAgICAgICBsYWJlbDogXCJmdW5jLmRlZlwiLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7IGJlZ2luOiBJREVOVF9SRSQxLCBjbGFzc05hbWU6IFwidGl0bGUuZnVuY3Rpb25cIiB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gY2F0Y2ggLi4uIHNvIGl0IHdvbid0IHRyaWdnZXIgdGhlIHByb3BlcnR5IHJ1bGUgYmVsb3dcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9cXC5cXC5cXC4vLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBQUk9QRVJUWV9BQ0NFU1MsXG4gICAgICAvLyBoYWNrOiBwcmV2ZW50cyBkZXRlY3Rpb24gb2Yga2V5d29yZHMgaW4gc29tZSBjaXJjdW1zdGFuY2VzXG4gICAgICAvLyAua2V5d29yZCgpXG4gICAgICAvLyAka2V5d29yZCA9IHhcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICdcXFxcJCcgKyBJREVOVF9SRSQxLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbIC9cXGJjb25zdHJ1Y3Rvcig/PVxccypcXCgpLyBdLFxuICAgICAgICBjbGFzc05hbWU6IHsgMTogXCJ0aXRsZS5mdW5jdGlvblwiIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbIFBBUkFNUyBdXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fQ0FMTCxcbiAgICAgIFVQUEVSX0NBU0VfQ09OU1RBTlQsXG4gICAgICBDTEFTU19PUl9FWFRFTkRTLFxuICAgICAgR0VUVEVSX09SX1NFVFRFUixcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn1cblxuLypcbkxhbmd1YWdlOiBUeXBlU2NyaXB0XG5BdXRob3I6IFBhbnUgSG9yc21hbGFodGkgPHBhbnUuaG9yc21hbGFodGlAaWtpLmZpPlxuQ29udHJpYnV0b3JzOiBJa2UgS3UgPGRlbXBmaUB5YWhvby5jb20+XG5EZXNjcmlwdGlvbjogVHlwZVNjcmlwdCBpcyBhIHN0cmljdCBzdXBlcnNldCBvZiBKYXZhU2NyaXB0XG5XZWJzaXRlOiBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmdcbkNhdGVnb3J5OiBjb21tb24sIHNjcmlwdGluZ1xuKi9cblxuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gdHlwZXNjcmlwdChobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgdHNMYW5ndWFnZSA9IGphdmFzY3JpcHQoaGxqcyk7XG5cbiAgY29uc3QgSURFTlRfUkUkMSA9IElERU5UX1JFO1xuICBjb25zdCBUWVBFUyA9IFtcbiAgICBcImFueVwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwibnVtYmVyXCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJzdHJpbmdcIixcbiAgICBcIm9iamVjdFwiLFxuICAgIFwibmV2ZXJcIixcbiAgICBcInN5bWJvbFwiLFxuICAgIFwiYmlnaW50XCIsXG4gICAgXCJ1bmtub3duXCJcbiAgXTtcbiAgY29uc3QgTkFNRVNQQUNFID0ge1xuICAgIGJlZ2luOiBbXG4gICAgICAvbmFtZXNwYWNlLyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIGhsanMuSURFTlRfUkVcbiAgICBdLFxuICAgIGJlZ2luU2NvcGU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5jbGFzc1wiXG4gICAgfVxuICB9O1xuICBjb25zdCBJTlRFUkZBQ0UgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ2ludGVyZmFjZScsXG4gICAgZW5kOiAvXFx7LyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnaW50ZXJmYWNlIGV4dGVuZHMnLFxuICAgICAgYnVpbHRfaW46IFRZUEVTXG4gICAgfSxcbiAgICBjb250YWluczogWyB0c0xhbmd1YWdlLmV4cG9ydHMuQ0xBU1NfUkVGRVJFTkNFIF1cbiAgfTtcbiAgY29uc3QgVVNFX1NUUklDVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSBzdHJpY3RbJ1wiXS9cbiAgfTtcbiAgY29uc3QgVFNfU1BFQ0lGSUNfS0VZV09SRFMgPSBbXG4gICAgXCJ0eXBlXCIsXG4gICAgLy8gXCJuYW1lc3BhY2VcIixcbiAgICBcImludGVyZmFjZVwiLFxuICAgIFwicHVibGljXCIsXG4gICAgXCJwcml2YXRlXCIsXG4gICAgXCJwcm90ZWN0ZWRcIixcbiAgICBcImltcGxlbWVudHNcIixcbiAgICBcImRlY2xhcmVcIixcbiAgICBcImFic3RyYWN0XCIsXG4gICAgXCJyZWFkb25seVwiLFxuICAgIFwiZW51bVwiLFxuICAgIFwib3ZlcnJpZGVcIixcbiAgICBcInNhdGlzZmllc1wiXG4gIF07XG4gIC8qXG4gICAgbmFtZXNwYWNlIGlzIGEgVFMga2V5d29yZCBidXQgaXQncyBmaW5lIHRvIHVzZSBpdCBhcyBhIHZhcmlhYmxlIG5hbWUgdG9vLlxuICAgIGNvbnN0IG1lc3NhZ2UgPSAnZm9vJztcbiAgICBjb25zdCBuYW1lc3BhY2UgPSAnYmFyJztcbiAgKi9cbiAgY29uc3QgS0VZV09SRFMkMSA9IHtcbiAgICAkcGF0dGVybjogSURFTlRfUkUsXG4gICAga2V5d29yZDogS0VZV09SRFMuY29uY2F0KFRTX1NQRUNJRklDX0tFWVdPUkRTKSxcbiAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICBidWlsdF9pbjogQlVJTFRfSU5TLmNvbmNhdChUWVBFUyksXG4gICAgXCJ2YXJpYWJsZS5sYW5ndWFnZVwiOiBCVUlMVF9JTl9WQVJJQUJMRVNcbiAgfTtcblxuICBjb25zdCBERUNPUkFUT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAJyArIElERU5UX1JFJDEsXG4gIH07XG5cbiAgY29uc3Qgc3dhcE1vZGUgPSAobW9kZSwgbGFiZWwsIHJlcGxhY2VtZW50KSA9PiB7XG4gICAgY29uc3QgaW5keCA9IG1vZGUuY29udGFpbnMuZmluZEluZGV4KG0gPT4gbS5sYWJlbCA9PT0gbGFiZWwpO1xuICAgIGlmIChpbmR4ID09PSAtMSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJjYW4gbm90IGZpbmQgbW9kZSB0byByZXBsYWNlXCIpOyB9XG5cbiAgICBtb2RlLmNvbnRhaW5zLnNwbGljZShpbmR4LCAxLCByZXBsYWNlbWVudCk7XG4gIH07XG5cblxuICAvLyB0aGlzIHNob3VsZCB1cGRhdGUgYW55d2hlcmUga2V5d29yZHMgaXMgdXNlZCBzaW5jZVxuICAvLyBpdCB3aWxsIGJlIHRoZSBzYW1lIGFjdHVhbCBKUyBvYmplY3RcbiAgT2JqZWN0LmFzc2lnbih0c0xhbmd1YWdlLmtleXdvcmRzLCBLRVlXT1JEUyQxKTtcblxuICB0c0xhbmd1YWdlLmV4cG9ydHMuUEFSQU1TX0NPTlRBSU5TLnB1c2goREVDT1JBVE9SKTtcblxuICAvLyBoaWdobGlnaHQgdGhlIGZ1bmN0aW9uIHBhcmFtc1xuICBjb25zdCBBVFRSSUJVVEVfSElHSExJR0hUID0gdHNMYW5ndWFnZS5jb250YWlucy5maW5kKGMgPT4gYy5zY29wZSA9PT0gXCJhdHRyXCIpO1xuXG4gIC8vIHRha2UgZGVmYXVsdCBhdHRyIHJ1bGUgYW5kIGV4dGVuZCBpdCB0byBzdXBwb3J0IG9wdGlvbmFsc1xuICBjb25zdCBPUFRJT05BTF9LRVlfT1JfQVJHVU1FTlQgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgIEFUVFJJQlVURV9ISUdITElHSFQsXG4gICAgeyBtYXRjaDogcmVnZXguY29uY2F0KElERU5UX1JFJDEsIHJlZ2V4Lmxvb2thaGVhZCgvXFxzKlxcPzovKSkgfVxuICApO1xuICB0c0xhbmd1YWdlLmV4cG9ydHMuUEFSQU1TX0NPTlRBSU5TLnB1c2goW1xuICAgIHRzTGFuZ3VhZ2UuZXhwb3J0cy5DTEFTU19SRUZFUkVOQ0UsIC8vIGNsYXNzIHJlZmVyZW5jZSBmb3IgaGlnaGxpZ2h0aW5nIHRoZSBwYXJhbXMgdHlwZXNcbiAgICBBVFRSSUJVVEVfSElHSExJR0hULCAvLyBoaWdobGlnaHQgdGhlIHBhcmFtcyBrZXlcbiAgICBPUFRJT05BTF9LRVlfT1JfQVJHVU1FTlQsIC8vIEFkZGVkIGZvciBvcHRpb25hbCBwcm9wZXJ0eSBhc3NpZ25tZW50IGhpZ2hsaWdodGluZ1xuICBdKTtcblxuICAvLyBBZGQgdGhlIG9wdGlvbmFsIHByb3BlcnR5IGFzc2lnbm1lbnQgaGlnaGxpZ2h0aW5nIGZvciBvYmplY3RzIG9yIGNsYXNzZXNcbiAgdHNMYW5ndWFnZS5jb250YWlucyA9IHRzTGFuZ3VhZ2UuY29udGFpbnMuY29uY2F0KFtcbiAgICBERUNPUkFUT1IsXG4gICAgTkFNRVNQQUNFLFxuICAgIElOVEVSRkFDRSxcbiAgICBPUFRJT05BTF9LRVlfT1JfQVJHVU1FTlQsIC8vIEFkZGVkIGZvciBvcHRpb25hbCBwcm9wZXJ0eSBhc3NpZ25tZW50IGhpZ2hsaWdodGluZ1xuICBdKTtcblxuICAvLyBUUyBnZXRzIGEgc2ltcGxlciBzaGViYW5nIHJ1bGUgdGhhbiBKU1xuICBzd2FwTW9kZSh0c0xhbmd1YWdlLCBcInNoZWJhbmdcIiwgaGxqcy5TSEVCQU5HKCkpO1xuICAvLyBKUyB1c2Ugc3RyaWN0IHJ1bGUgcHVycG9zZWx5IGV4Y2x1ZGVzIGBhc21gIHdoaWNoIG1ha2VzIG5vIHNlbnNlXG4gIHN3YXBNb2RlKHRzTGFuZ3VhZ2UsIFwidXNlX3N0cmljdFwiLCBVU0VfU1RSSUNUKTtcblxuICBjb25zdCBmdW5jdGlvbkRlY2xhcmF0aW9uID0gdHNMYW5ndWFnZS5jb250YWlucy5maW5kKG0gPT4gbS5sYWJlbCA9PT0gXCJmdW5jLmRlZlwiKTtcbiAgZnVuY3Rpb25EZWNsYXJhdGlvbi5yZWxldmFuY2UgPSAwOyAvLyAoKSA9PiB7fSBpcyBtb3JlIHR5cGljYWwgaW4gVHlwZVNjcmlwdFxuXG4gIE9iamVjdC5hc3NpZ24odHNMYW5ndWFnZSwge1xuICAgIG5hbWU6ICdUeXBlU2NyaXB0JyxcbiAgICBhbGlhc2VzOiBbXG4gICAgICAndHMnLFxuICAgICAgJ3RzeCcsXG4gICAgICAnbXRzJyxcbiAgICAgICdjdHMnXG4gICAgXVxuICB9KTtcblxuICByZXR1cm4gdHNMYW5ndWFnZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlc2NyaXB0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1214\n')},1217:module=>{eval("/*\nLanguage: Parser3\nRequires: xml.js\nAuthor: Oleg Volchkov \nWebsite: https://www.parser.ru/en/\nCategory: template\n*/\n\nfunction parser3(hljs) {\n const CURLY_SUBCOMMENT = hljs.COMMENT(\n /\\{/,\n /\\}/,\n { contains: [ 'self' ] }\n );\n return {\n name: 'Parser3',\n subLanguage: 'xml',\n relevance: 0,\n contains: [\n hljs.COMMENT('^#', '$'),\n hljs.COMMENT(\n /\\^rem\\{/,\n /\\}/,\n {\n relevance: 10,\n contains: [ CURLY_SUBCOMMENT ]\n }\n ),\n {\n className: 'meta',\n begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\n relevance: 10\n },\n {\n className: 'title',\n begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\n },\n {\n className: 'variable',\n begin: /\\$\\{?[\\w\\-.:]+\\}?/\n },\n {\n className: 'keyword',\n begin: /\\^[\\w\\-.:]+/\n },\n {\n className: 'number',\n begin: '\\\\^#[0-9a-fA-F]+'\n },\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = parser3;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxNy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxtQ0FBbUMsb0JBQW9CO0FBQ3ZELE9BQU87QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLFlBQVk7QUFDaEMsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BhcnNlcjMuanM/ODljMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFBhcnNlcjNcblJlcXVpcmVzOiB4bWwuanNcbkF1dGhvcjogT2xlZyBWb2xjaGtvdiA8b2xlZ0B2b2xjaGtvdi5uZXQ+XG5XZWJzaXRlOiBodHRwczovL3d3dy5wYXJzZXIucnUvZW4vXG5DYXRlZ29yeTogdGVtcGxhdGVcbiovXG5cbmZ1bmN0aW9uIHBhcnNlcjMoaGxqcykge1xuICBjb25zdCBDVVJMWV9TVUJDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgIC9cXHsvLFxuICAgIC9cXH0vLFxuICAgIHsgY29udGFpbnM6IFsgJ3NlbGYnIF0gfVxuICApO1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdQYXJzZXIzJyxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJ14jJywgJyQnKSxcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgL1xcXnJlbVxcey8sXG4gICAgICAgIC9cXH0vLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgICBjb250YWluczogWyBDVVJMWV9TVUJDT01NRU5UIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXkAoPzpCQVNFfFVTRXxDTEFTU3xPUFRJT05TKSQnLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnQFtcXFxcd1xcXFwtXStcXFxcW1tcXFxcd147XFxcXC1dKlxcXFxdKD86XFxcXFtbXFxcXHdeO1xcXFwtXSpcXFxcXSk/KD86LiopJCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXHs/W1xcd1xcLS46XStcXH0/L1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiAvXFxeW1xcd1xcLS46XSsvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxeI1swLTlhLWZBLUZdKydcbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VyMztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1217\n")},1223:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar node_process = __webpack_require__(1708);\nvar directives = __webpack_require__(2665);\nvar Document = __webpack_require__(3166);\nvar errors = __webpack_require__(6539);\nvar identity = __webpack_require__(5900);\nvar composeDoc = __webpack_require__(9814);\nvar resolveEnd = __webpack_require__(9013);\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIyMy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxJQUFjO0FBQ3pDLGlCQUFpQixtQkFBTyxDQUFDLElBQXNCO0FBQy9DLGVBQWUsbUJBQU8sQ0FBQyxJQUFvQjtBQUMzQyxhQUFhLG1CQUFPLENBQUMsSUFBYztBQUNuQyxlQUFlLG1CQUFPLENBQUMsSUFBc0I7QUFDN0MsaUJBQWlCLG1CQUFPLENBQUMsSUFBa0I7QUFDM0MsaUJBQWlCLG1CQUFPLENBQUMsSUFBa0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGlCQUFpQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxtQkFBbUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsbUNBQW1DO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwQkFBMEI7QUFDMUMsd0JBQXdCLG1DQUFtQztBQUMzRDtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsWUFBWSxJQUFJLFFBQVE7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLFFBQVEsSUFBSSxHQUFHO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxRQUFRLElBQUksR0FBRztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsY0FBYyxJQUFJLDZCQUE2QjtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxHQUFHLElBQUksWUFBWTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0hBQXdILFdBQVc7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDhCQUE4QjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9jb21wb3NlL2NvbXBvc2VyLmpzP2Q2ZTgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbm9kZV9wcm9jZXNzID0gcmVxdWlyZSgnbm9kZTpwcm9jZXNzJyk7XG52YXIgZGlyZWN0aXZlcyA9IHJlcXVpcmUoJy4uL2RvYy9kaXJlY3RpdmVzLmpzJyk7XG52YXIgRG9jdW1lbnQgPSByZXF1aXJlKCcuLi9kb2MvRG9jdW1lbnQuanMnKTtcbnZhciBlcnJvcnMgPSByZXF1aXJlKCcuLi9lcnJvcnMuanMnKTtcbnZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4uL25vZGVzL2lkZW50aXR5LmpzJyk7XG52YXIgY29tcG9zZURvYyA9IHJlcXVpcmUoJy4vY29tcG9zZS1kb2MuanMnKTtcbnZhciByZXNvbHZlRW5kID0gcmVxdWlyZSgnLi9yZXNvbHZlLWVuZC5qcycpO1xuXG5mdW5jdGlvbiBnZXRFcnJvclBvcyhzcmMpIHtcbiAgICBpZiAodHlwZW9mIHNyYyA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBbc3JjLCBzcmMgKyAxXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzcmMpKVxuICAgICAgICByZXR1cm4gc3JjLmxlbmd0aCA9PT0gMiA/IHNyYyA6IFtzcmNbMF0sIHNyY1sxXV07XG4gICAgY29uc3QgeyBvZmZzZXQsIHNvdXJjZSB9ID0gc3JjO1xuICAgIHJldHVybiBbb2Zmc2V0LCBvZmZzZXQgKyAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycgPyBzb3VyY2UubGVuZ3RoIDogMSldO1xufVxuZnVuY3Rpb24gcGFyc2VQcmVsdWRlKHByZWx1ZGUpIHtcbiAgICBsZXQgY29tbWVudCA9ICcnO1xuICAgIGxldCBhdENvbW1lbnQgPSBmYWxzZTtcbiAgICBsZXQgYWZ0ZXJFbXB0eUxpbmUgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWx1ZGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gcHJlbHVkZVtpXTtcbiAgICAgICAgc3dpdGNoIChzb3VyY2VbMF0pIHtcbiAgICAgICAgICAgIGNhc2UgJyMnOlxuICAgICAgICAgICAgICAgIGNvbW1lbnQgKz1cbiAgICAgICAgICAgICAgICAgICAgKGNvbW1lbnQgPT09ICcnID8gJycgOiBhZnRlckVtcHR5TGluZSA/ICdcXG5cXG4nIDogJ1xcbicpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2Uuc3Vic3RyaW5nKDEpIHx8ICcgJyk7XG4gICAgICAgICAgICAgICAgYXRDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhZnRlckVtcHR5TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAgICAgaWYgKHByZWx1ZGVbaSArIDFdPy5bMF0gIT09ICcjJylcbiAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICAgIGF0Q29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBUaGlzIG1heSBiZSB3cm9uZyBhZnRlciBkb2MtZW5kLCBidXQgaW4gdGhhdCBjYXNlIGl0IGRvZXNuJ3QgbWF0dGVyXG4gICAgICAgICAgICAgICAgaWYgKCFhdENvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyRW1wdHlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhdENvbW1lbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBjb21tZW50LCBhZnRlckVtcHR5TGluZSB9O1xufVxuLyoqXG4gKiBDb21wb3NlIGEgc3RyZWFtIG9mIENTVCBub2RlcyBpbnRvIGEgc3RyZWFtIG9mIFlBTUwgRG9jdW1lbnRzLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDb21wb3NlciwgUGFyc2VyIH0gZnJvbSAneWFtbCdcbiAqXG4gKiBjb25zdCBzcmM6IHN0cmluZyA9IC4uLlxuICogY29uc3QgdG9rZW5zID0gbmV3IFBhcnNlcigpLnBhcnNlKHNyYylcbiAqIGNvbnN0IGRvY3MgPSBuZXcgQ29tcG9zZXIoKS5jb21wb3NlKHRva2VucylcbiAqIGBgYFxuICovXG5jbGFzcyBDb21wb3NlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuZG9jID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdERpcmVjdGl2ZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVsdWRlID0gW107XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMud2FybmluZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5vbkVycm9yID0gKHNvdXJjZSwgY29kZSwgbWVzc2FnZSwgd2FybmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gZ2V0RXJyb3JQb3Moc291cmNlKTtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nKVxuICAgICAgICAgICAgICAgIHRoaXMud2FybmluZ3MucHVzaChuZXcgZXJyb3JzLllBTUxXYXJuaW5nKHBvcywgY29kZSwgbWVzc2FnZSkpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2gobmV3IGVycm9ycy5ZQU1MUGFyc2VFcnJvcihwb3MsIGNvZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBkaXJlY3RpdmVzLkRpcmVjdGl2ZXMoeyB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gfHwgJzEuMicgfSk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIGRlY29yYXRlKGRvYywgYWZ0ZXJEb2MpIHtcbiAgICAgICAgY29uc3QgeyBjb21tZW50LCBhZnRlckVtcHR5TGluZSB9ID0gcGFyc2VQcmVsdWRlKHRoaXMucHJlbHVkZSk7XG4gICAgICAgIC8vY29uc29sZS5sb2coeyBkYzogZG9jLmNvbW1lbnQsIHByZWx1ZGUsIGNvbW1lbnQgfSlcbiAgICAgICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRjID0gZG9jLmNvbnRlbnRzO1xuICAgICAgICAgICAgaWYgKGFmdGVyRG9jKSB7XG4gICAgICAgICAgICAgICAgZG9jLmNvbW1lbnQgPSBkb2MuY29tbWVudCA/IGAke2RvYy5jb21tZW50fVxcbiR7Y29tbWVudH1gIDogY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFmdGVyRW1wdHlMaW5lIHx8IGRvYy5kaXJlY3RpdmVzLmRvY1N0YXJ0IHx8ICFkYykge1xuICAgICAgICAgICAgICAgIGRvYy5jb21tZW50QmVmb3JlID0gY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlkZW50aXR5LmlzQ29sbGVjdGlvbihkYykgJiYgIWRjLmZsb3cgJiYgZGMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBpdCA9IGRjLml0ZW1zWzBdO1xuICAgICAgICAgICAgICAgIGlmIChpZGVudGl0eS5pc1BhaXIoaXQpKVxuICAgICAgICAgICAgICAgICAgICBpdCA9IGl0LmtleTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYiA9IGl0LmNvbW1lbnRCZWZvcmU7XG4gICAgICAgICAgICAgICAgaXQuY29tbWVudEJlZm9yZSA9IGNiID8gYCR7Y29tbWVudH1cXG4ke2NifWAgOiBjb21tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSBkYy5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGRjLmNvbW1lbnRCZWZvcmUgPSBjYiA/IGAke2NvbW1lbnR9XFxuJHtjYn1gIDogY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWZ0ZXJEb2MpIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGRvYy5lcnJvcnMsIHRoaXMuZXJyb3JzKTtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGRvYy53YXJuaW5ncywgdGhpcy53YXJuaW5ncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkb2MuZXJyb3JzID0gdGhpcy5lcnJvcnM7XG4gICAgICAgICAgICBkb2Mud2FybmluZ3MgPSB0aGlzLndhcm5pbmdzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJlbHVkZSA9IFtdO1xuICAgICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgICB0aGlzLndhcm5pbmdzID0gW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgc3RyZWFtIHN0YXR1cyBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIE1vc3RseSB1c2VmdWwgYXQgdGhlIGVuZCBvZiBpbnB1dCBmb3IgYW4gZW1wdHkgc3RyZWFtLlxuICAgICAqL1xuICAgIHN0cmVhbUluZm8oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb21tZW50OiBwYXJzZVByZWx1ZGUodGhpcy5wcmVsdWRlKS5jb21tZW50LFxuICAgICAgICAgICAgZGlyZWN0aXZlczogdGhpcy5kaXJlY3RpdmVzLFxuICAgICAgICAgICAgZXJyb3JzOiB0aGlzLmVycm9ycyxcbiAgICAgICAgICAgIHdhcm5pbmdzOiB0aGlzLndhcm5pbmdzXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXBvc2UgdG9rZW5zIGludG8gZG9jdW1lbnRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcmNlRG9jIC0gSWYgdGhlIHN0cmVhbSBjb250YWlucyBubyBkb2N1bWVudCwgc3RpbGwgZW1pdCBhIGZpbmFsIGRvY3VtZW50IGluY2x1ZGluZyBhbnkgY29tbWVudHMgYW5kIGRpcmVjdGl2ZXMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIHRvIGEgc3Vic2VxdWVudCBkb2N1bWVudC5cbiAgICAgKiBAcGFyYW0gZW5kT2Zmc2V0IC0gU2hvdWxkIGJlIHNldCBpZiBgZm9yY2VEb2NgIGlzIGFsc28gc2V0LCB0byBzZXQgdGhlIGRvY3VtZW50IHJhbmdlIGVuZCBhbmQgdG8gaW5kaWNhdGUgZXJyb3JzIGNvcnJlY3RseS5cbiAgICAgKi9cbiAgICAqY29tcG9zZSh0b2tlbnMsIGZvcmNlRG9jID0gZmFsc2UsIGVuZE9mZnNldCA9IC0xKSB7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMubmV4dCh0b2tlbik7XG4gICAgICAgIHlpZWxkKiB0aGlzLmVuZChmb3JjZURvYywgZW5kT2Zmc2V0KTtcbiAgICB9XG4gICAgLyoqIEFkdmFuY2UgdGhlIGNvbXBvc2VyIGJ5IG9uZSBDU1QgdG9rZW4uICovXG4gICAgKm5leHQodG9rZW4pIHtcbiAgICAgICAgaWYgKG5vZGVfcHJvY2Vzcy5lbnYuTE9HX1NUUkVBTSlcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKHRva2VuLCB7IGRlcHRoOiBudWxsIH0pO1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RpcmVjdGl2ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzLmFkZCh0b2tlbi5zb3VyY2UsIChvZmZzZXQsIG1lc3NhZ2UsIHdhcm5pbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zID0gZ2V0RXJyb3JQb3ModG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBwb3NbMF0gKz0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IocG9zLCAnQkFEX0RJUkVDVElWRScsIG1lc3NhZ2UsIHdhcm5pbmcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlbHVkZS5wdXNoKHRva2VuLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdERpcmVjdGl2ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZG9jdW1lbnQnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9jID0gY29tcG9zZURvYy5jb21wb3NlRG9jKHRoaXMub3B0aW9ucywgdGhpcy5kaXJlY3RpdmVzLCB0b2tlbiwgdGhpcy5vbkVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdERpcmVjdGl2ZXMgJiYgIWRvYy5kaXJlY3RpdmVzLmRvY1N0YXJ0KVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBkaXJlY3RpdmVzLWVuZC9kb2Mtc3RhcnQgaW5kaWNhdG9yIGxpbmUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlY29yYXRlKGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvYylcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpcy5kb2M7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICAgICAgICAgICAgdGhpcy5hdERpcmVjdGl2ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2J5dGUtb3JkZXItbWFyayc6XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIHRoaXMucHJlbHVkZS5wdXNoKHRva2VuLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlcnJvcic6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSB0b2tlbi5zb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgPyBgJHt0b2tlbi5tZXNzYWdlfTogJHtKU09OLnN0cmluZ2lmeSh0b2tlbi5zb3VyY2UpfWBcbiAgICAgICAgICAgICAgICAgICAgOiB0b2tlbi5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IGVycm9ycy5ZQU1MUGFyc2VFcnJvcihnZXRFcnJvclBvcyh0b2tlbiksICdVTkVYUEVDVEVEX1RPS0VOJywgbXNnKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdERpcmVjdGl2ZXMgfHwgIXRoaXMuZG9jKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jLmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2RvYy1lbmQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRvYykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSAnVW5leHBlY3RlZCBkb2MtZW5kIHdpdGhvdXQgcHJlY2VkaW5nIGRvY3VtZW50JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaChuZXcgZXJyb3JzLllBTUxQYXJzZUVycm9yKGdldEVycm9yUG9zKHRva2VuKSwgJ1VORVhQRUNURURfVE9LRU4nLCBtc2cpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZG9jLmRpcmVjdGl2ZXMuZG9jRW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSByZXNvbHZlRW5kLnJlc29sdmVFbmQodG9rZW4uZW5kLCB0b2tlbi5vZmZzZXQgKyB0b2tlbi5zb3VyY2UubGVuZ3RoLCB0aGlzLmRvYy5vcHRpb25zLnN0cmljdCwgdGhpcy5vbkVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlY29yYXRlKHRoaXMuZG9jLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAoZW5kLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGMgPSB0aGlzLmRvYy5jb21tZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvYy5jb21tZW50ID0gZGMgPyBgJHtkY31cXG4ke2VuZC5jb21tZW50fWAgOiBlbmQuY29tbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kb2MucmFuZ2VbMl0gPSBlbmQub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBlcnJvcnMuWUFNTFBhcnNlRXJyb3IoZ2V0RXJyb3JQb3ModG9rZW4pLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbnN1cHBvcnRlZCB0b2tlbiAke3Rva2VuLnR5cGV9YCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGwgYXQgZW5kIG9mIGlucHV0IHRvIHlpZWxkIGFueSByZW1haW5pbmcgZG9jdW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9yY2VEb2MgLSBJZiB0aGUgc3RyZWFtIGNvbnRhaW5zIG5vIGRvY3VtZW50LCBzdGlsbCBlbWl0IGEgZmluYWwgZG9jdW1lbnQgaW5jbHVkaW5nIGFueSBjb21tZW50cyBhbmQgZGlyZWN0aXZlcyB0aGF0IHdvdWxkIGJlIGFwcGxpZWQgdG8gYSBzdWJzZXF1ZW50IGRvY3VtZW50LlxuICAgICAqIEBwYXJhbSBlbmRPZmZzZXQgLSBTaG91bGQgYmUgc2V0IGlmIGBmb3JjZURvY2AgaXMgYWxzbyBzZXQsIHRvIHNldCB0aGUgZG9jdW1lbnQgcmFuZ2UgZW5kIGFuZCB0byBpbmRpY2F0ZSBlcnJvcnMgY29ycmVjdGx5LlxuICAgICAqL1xuICAgICplbmQoZm9yY2VEb2MgPSBmYWxzZSwgZW5kT2Zmc2V0ID0gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jKSB7XG4gICAgICAgICAgICB0aGlzLmRlY29yYXRlKHRoaXMuZG9jLCB0cnVlKTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuZG9jO1xuICAgICAgICAgICAgdGhpcy5kb2MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZvcmNlRG9jKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7IF9kaXJlY3RpdmVzOiB0aGlzLmRpcmVjdGl2ZXMgfSwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBEb2N1bWVudC5Eb2N1bWVudCh1bmRlZmluZWQsIG9wdHMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXREaXJlY3RpdmVzKVxuICAgICAgICAgICAgICAgIHRoaXMub25FcnJvcihlbmRPZmZzZXQsICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBkaXJlY3RpdmVzLWVuZCBpbmRpY2F0b3IgbGluZScpO1xuICAgICAgICAgICAgZG9jLnJhbmdlID0gWzAsIGVuZE9mZnNldCwgZW5kT2Zmc2V0XTtcbiAgICAgICAgICAgIHRoaXMuZGVjb3JhdGUoZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICB5aWVsZCBkb2M7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydHMuQ29tcG9zZXIgPSBDb21wb3NlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1223\n")},1232:(__unused_webpack_module,exports)=>{"use strict";eval("\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIzMi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYiwyQkFBMkIsdUNBQXVDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanM/NDVjZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeU51bWJlcih7IGZvcm1hdCwgbWluRnJhY3Rpb25EaWdpdHMsIHRhZywgdmFsdWUgfSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBjb25zdCBudW0gPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiBOdW1iZXIodmFsdWUpO1xuICAgIGlmICghaXNGaW5pdGUobnVtKSlcbiAgICAgICAgcmV0dXJuIGlzTmFOKG51bSkgPyAnLm5hbicgOiBudW0gPCAwID8gJy0uaW5mJyA6ICcuaW5mJztcbiAgICBsZXQgbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoIWZvcm1hdCAmJlxuICAgICAgICBtaW5GcmFjdGlvbkRpZ2l0cyAmJlxuICAgICAgICAoIXRhZyB8fCB0YWcgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcpICYmXG4gICAgICAgIC9eXFxkLy50ZXN0KG4pKSB7XG4gICAgICAgIGxldCBpID0gbi5pbmRleE9mKCcuJyk7XG4gICAgICAgIGlmIChpIDwgMCkge1xuICAgICAgICAgICAgaSA9IG4ubGVuZ3RoO1xuICAgICAgICAgICAgbiArPSAnLic7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGQgPSBtaW5GcmFjdGlvbkRpZ2l0cyAtIChuLmxlbmd0aCAtIGkgLSAxKTtcbiAgICAgICAgd2hpbGUgKGQtLSA+IDApXG4gICAgICAgICAgICBuICs9ICcwJztcbiAgICB9XG4gICAgcmV0dXJuIG47XG59XG5cbmV4cG9ydHMuc3RyaW5naWZ5TnVtYmVyID0gc3RyaW5naWZ5TnVtYmVyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1232\n")},1278:module=>{eval('/*\n Language: Flix\n Category: functional\n Author: Magnus Madsen \n Website: https://flix.dev/\n */\n\n/** @type LanguageFn */\nfunction flix(hljs) {\n const CHAR = {\n className: \'string\',\n begin: /\'(.|\\\\[xXuU][a-zA-Z0-9]+)\'/\n };\n\n const STRING = {\n className: \'string\',\n variants: [\n {\n begin: \'"\',\n end: \'"\'\n }\n ]\n };\n\n const NAME = {\n className: \'title\',\n relevance: 0,\n begin: /[^0-9\\n\\t "\'(),.`{}\\[\\]:;][^\\n\\t "\'(),.`{}\\[\\]:;]+|[^0-9\\n\\t "\'(),.`{}\\[\\]:;=]/\n };\n\n const METHOD = {\n className: \'function\',\n beginKeywords: \'def\',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [ NAME ]\n };\n\n return {\n name: \'Flix\',\n keywords: {\n keyword: [\n "case",\n "class",\n "def",\n "else",\n "enum",\n "if",\n "impl",\n "import",\n "in",\n "lat",\n "rel",\n "index",\n "let",\n "match",\n "namespace",\n "switch",\n "type",\n "yield",\n "with"\n ],\n literal: [\n "true",\n "false"\n ]\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n CHAR,\n STRING,\n METHOD,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = flix;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI3OC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsTUFBTSxpQkFBaUIsTUFBTSxzQkFBc0IsTUFBTTtBQUN4Rjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9mbGl4LmpzP2UyZDAiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiBMYW5ndWFnZTogRmxpeFxuIENhdGVnb3J5OiBmdW5jdGlvbmFsXG4gQXV0aG9yOiBNYWdudXMgTWFkc2VuIDxtbWFkc2VuQHV3YXRlcmxvby5jYT5cbiBXZWJzaXRlOiBodHRwczovL2ZsaXguZGV2L1xuICovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBmbGl4KGhsanMpIHtcbiAgY29uc3QgQ0hBUiA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvJygufFxcXFxbeFh1VV1bYS16QS1aMC05XSspJy9cbiAgfTtcblxuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgZW5kOiAnXCInXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IE5BTUUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBiZWdpbjogL1teMC05XFxuXFx0IFwiJygpLC5ge31cXFtcXF06O11bXlxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdK3xbXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjs9XS9cbiAgfTtcblxuICBjb25zdCBNRVRIT0QgPSB7XG4gICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgIGJlZ2luS2V5d29yZHM6ICdkZWYnLFxuICAgIGVuZDogL1s6PXtcXFsoXFxuO10vLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgY29udGFpbnM6IFsgTkFNRSBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnRmxpeCcsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IFtcbiAgICAgICAgXCJjYXNlXCIsXG4gICAgICAgIFwiY2xhc3NcIixcbiAgICAgICAgXCJkZWZcIixcbiAgICAgICAgXCJlbHNlXCIsXG4gICAgICAgIFwiZW51bVwiLFxuICAgICAgICBcImlmXCIsXG4gICAgICAgIFwiaW1wbFwiLFxuICAgICAgICBcImltcG9ydFwiLFxuICAgICAgICBcImluXCIsXG4gICAgICAgIFwibGF0XCIsXG4gICAgICAgIFwicmVsXCIsXG4gICAgICAgIFwiaW5kZXhcIixcbiAgICAgICAgXCJsZXRcIixcbiAgICAgICAgXCJtYXRjaFwiLFxuICAgICAgICBcIm5hbWVzcGFjZVwiLFxuICAgICAgICBcInN3aXRjaFwiLFxuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJ5aWVsZFwiLFxuICAgICAgICBcIndpdGhcIlxuICAgICAgXSxcbiAgICAgIGxpdGVyYWw6IFtcbiAgICAgICAgXCJ0cnVlXCIsXG4gICAgICAgIFwiZmFsc2VcIlxuICAgICAgXVxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBDSEFSLFxuICAgICAgU1RSSU5HLFxuICAgICAgTUVUSE9ELFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsaXg7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1278\n')},1298:module=>{eval("/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n return {\n name: 'Plain text',\n aliases: [\n 'text',\n 'txt'\n ],\n disableAutodetect: true\n };\n}\n\nmodule.exports = plaintext;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI5OC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3BsYWludGV4dC5qcz9kMDJiIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUGxhaW4gdGV4dFxuQXV0aG9yOiBFZ29yIFJvZ292IChlLnJvZ292QHBvc3RncmVzcHJvLnJ1KVxuRGVzY3JpcHRpb246IFBsYWluIHRleHQgd2l0aG91dCBhbnkgaGlnaGxpZ2h0aW5nLlxuQ2F0ZWdvcnk6IGNvbW1vblxuKi9cblxuZnVuY3Rpb24gcGxhaW50ZXh0KGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnUGxhaW4gdGV4dCcsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ3RleHQnLFxuICAgICAgJ3R4dCdcbiAgICBdLFxuICAgIGRpc2FibGVBdXRvZGV0ZWN0OiB0cnVlXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGxhaW50ZXh0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1298\n")},1303:module=>{eval("/*\nLanguage: Python\nDescription: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.\nWebsite: https://www.python.org\nCategory: common\n*/\n\nfunction python(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = /[\\p{XID_Start}_]\\p{XID_Continue}*/u;\n const RESERVED_WORDS = [\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'case',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'match',\n 'nonlocal|10',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield'\n ];\n\n const BUILT_INS = [\n '__import__',\n 'abs',\n 'all',\n 'any',\n 'ascii',\n 'bin',\n 'bool',\n 'breakpoint',\n 'bytearray',\n 'bytes',\n 'callable',\n 'chr',\n 'classmethod',\n 'compile',\n 'complex',\n 'delattr',\n 'dict',\n 'dir',\n 'divmod',\n 'enumerate',\n 'eval',\n 'exec',\n 'filter',\n 'float',\n 'format',\n 'frozenset',\n 'getattr',\n 'globals',\n 'hasattr',\n 'hash',\n 'help',\n 'hex',\n 'id',\n 'input',\n 'int',\n 'isinstance',\n 'issubclass',\n 'iter',\n 'len',\n 'list',\n 'locals',\n 'map',\n 'max',\n 'memoryview',\n 'min',\n 'next',\n 'object',\n 'oct',\n 'open',\n 'ord',\n 'pow',\n 'print',\n 'property',\n 'range',\n 'repr',\n 'reversed',\n 'round',\n 'set',\n 'setattr',\n 'slice',\n 'sorted',\n 'staticmethod',\n 'str',\n 'sum',\n 'super',\n 'tuple',\n 'type',\n 'vars',\n 'zip'\n ];\n\n const LITERALS = [\n '__debug__',\n 'Ellipsis',\n 'False',\n 'None',\n 'NotImplemented',\n 'True'\n ];\n\n // https://docs.python.org/3/library/typing.html\n // TODO: Could these be supplemented by a CamelCase matcher in certain\n // contexts, leaving these remaining only for relevance hinting?\n const TYPES = [\n \"Any\",\n \"Callable\",\n \"Coroutine\",\n \"Dict\",\n \"List\",\n \"Literal\",\n \"Generic\",\n \"Optional\",\n \"Sequence\",\n \"Set\",\n \"Tuple\",\n \"Type\",\n \"Union\"\n ];\n\n const KEYWORDS = {\n $pattern: /[A-Za-z]\\w+|__\\w+__/,\n keyword: RESERVED_WORDS,\n built_in: BUILT_INS,\n literal: LITERALS,\n type: TYPES\n };\n\n const PROMPT = {\n className: 'meta',\n begin: /^(>>>|\\.\\.\\.) /\n };\n\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n\n const LITERAL_BRACKET = {\n begin: /\\{\\{/,\n relevance: 0\n };\n\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([uU]|[rR])'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /([uU]|[rR])\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])'/,\n end: /'/\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])\"/,\n end: /\"/\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'/,\n end: /'/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals\n const digitpart = '[0-9](_?[0-9])*';\n const pointfloat = `(\\\\b(${digitpart}))?\\\\.(${digitpart})|\\\\b(${digitpart})\\\\.`;\n // Whitespace after a number (or any lexical token) is needed only if its absence\n // would change the tokenization\n // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens\n // We deviate slightly, requiring a word boundary or a keyword\n // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`)\n const lookahead = `\\\\b|${RESERVED_WORDS.join('|')}`;\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // exponentfloat, pointfloat\n // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals\n // optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n // Note: no leading \\b because floats can start with a decimal point\n // and we don't want to mishandle e.g. `fn(.5)`,\n // no trailing \\b for pointfloat because it can end with a decimal point\n // and we don't want to mishandle e.g. `0..hex()`; this should be safe\n // because both MUST contain a decimal point and so cannot be confused with\n // the interior part of an identifier\n {\n begin: `(\\\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})`\n },\n {\n begin: `(${pointfloat})[jJ]?`\n },\n\n // decinteger, bininteger, octinteger, hexinteger\n // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals\n // optionally \"long\" in Python 2\n // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals\n // decinteger is optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[bB](_?[01])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})`\n },\n\n // imagnumber (digitpart-based)\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b(${digitpart})[jJ](?=${lookahead})`\n }\n ]\n };\n const COMMENT_TYPE = {\n className: \"comment\",\n begin: regex.lookahead(/# type:/),\n end: /$/,\n keywords: KEYWORDS,\n contains: [\n { // prevent keywords from coloring `type`\n begin: /# type:/\n },\n // comment within a datatype comment includes no keywords\n {\n begin: /#/,\n end: /\\b\\B/,\n endsWithParent: true\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n variants: [\n // Exclude params in functions without params\n {\n className: \"\",\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE\n ]\n }\n ]\n };\n SUBST.contains = [\n STRING,\n NUMBER,\n PROMPT\n ];\n\n return {\n name: 'Python',\n aliases: [\n 'py',\n 'gyp',\n 'ipython'\n ],\n unicodeRegex: true,\n keywords: KEYWORDS,\n illegal: /(<\\/|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n {\n // very common convention\n scope: 'variable.language',\n match: /\\bself\\b/\n },\n {\n // eat \"if\" prior to string so that it won't accidentally be\n // labeled as an f-string\n beginKeywords: \"if\",\n relevance: 0\n },\n { match: /\\bor\\b/, scope: \"keyword\" },\n STRING,\n COMMENT_TYPE,\n hljs.HASH_COMMENT_MODE,\n {\n match: [\n /\\bdef/, /\\s+/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [ PARAMS ]\n },\n {\n variants: [\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE, /\\s*/,\n /\\(\\s*/, IDENT_RE,/\\s*\\)/\n ],\n },\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE\n ],\n }\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 6: \"title.class.inherited\",\n }\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/,\n end: /(?=#)|$/,\n contains: [\n NUMBER,\n PARAMS,\n STRING\n ]\n }\n ]\n };\n}\n\nmodule.exports = python;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwMy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixVQUFVLEtBQUssYUFBYTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLEVBQUU7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2QkFBNkIsVUFBVSxTQUFTLFVBQVUsUUFBUSxVQUFVO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFVBQVUsS0FBSyxXQUFXLGNBQWMsVUFBVSxXQUFXLFVBQVU7QUFDOUYsT0FBTztBQUNQO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUIsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxVQUFVO0FBQ25FLE9BQU87QUFDUDtBQUNBLDJDQUEyQyxVQUFVO0FBQ3JELE9BQU87QUFDUDtBQUNBLDRDQUE0QyxVQUFVO0FBQ3RELE9BQU87QUFDUDtBQUNBLGtEQUFrRCxVQUFVO0FBQzVELE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLFVBQVUsVUFBVSxVQUFVO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVEsbUNBQW1DO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3B5dGhvbi5qcz82ODA1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUHl0aG9uXG5EZXNjcmlwdGlvbjogUHl0aG9uIGlzIGFuIGludGVycHJldGVkLCBvYmplY3Qtb3JpZW50ZWQsIGhpZ2gtbGV2ZWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugd2l0aCBkeW5hbWljIHNlbWFudGljcy5cbldlYnNpdGU6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmdcbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbmZ1bmN0aW9uIHB5dGhvbihobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgSURFTlRfUkUgPSAvW1xccHtYSURfU3RhcnR9X11cXHB7WElEX0NvbnRpbnVlfSovdTtcbiAgY29uc3QgUkVTRVJWRURfV09SRFMgPSBbXG4gICAgJ2FuZCcsXG4gICAgJ2FzJyxcbiAgICAnYXNzZXJ0JyxcbiAgICAnYXN5bmMnLFxuICAgICdhd2FpdCcsXG4gICAgJ2JyZWFrJyxcbiAgICAnY2FzZScsXG4gICAgJ2NsYXNzJyxcbiAgICAnY29udGludWUnLFxuICAgICdkZWYnLFxuICAgICdkZWwnLFxuICAgICdlbGlmJyxcbiAgICAnZWxzZScsXG4gICAgJ2V4Y2VwdCcsXG4gICAgJ2ZpbmFsbHknLFxuICAgICdmb3InLFxuICAgICdmcm9tJyxcbiAgICAnZ2xvYmFsJyxcbiAgICAnaWYnLFxuICAgICdpbXBvcnQnLFxuICAgICdpbicsXG4gICAgJ2lzJyxcbiAgICAnbGFtYmRhJyxcbiAgICAnbWF0Y2gnLFxuICAgICdub25sb2NhbHwxMCcsXG4gICAgJ25vdCcsXG4gICAgJ29yJyxcbiAgICAncGFzcycsXG4gICAgJ3JhaXNlJyxcbiAgICAncmV0dXJuJyxcbiAgICAndHJ5JyxcbiAgICAnd2hpbGUnLFxuICAgICd3aXRoJyxcbiAgICAneWllbGQnXG4gIF07XG5cbiAgY29uc3QgQlVJTFRfSU5TID0gW1xuICAgICdfX2ltcG9ydF9fJyxcbiAgICAnYWJzJyxcbiAgICAnYWxsJyxcbiAgICAnYW55JyxcbiAgICAnYXNjaWknLFxuICAgICdiaW4nLFxuICAgICdib29sJyxcbiAgICAnYnJlYWtwb2ludCcsXG4gICAgJ2J5dGVhcnJheScsXG4gICAgJ2J5dGVzJyxcbiAgICAnY2FsbGFibGUnLFxuICAgICdjaHInLFxuICAgICdjbGFzc21ldGhvZCcsXG4gICAgJ2NvbXBpbGUnLFxuICAgICdjb21wbGV4JyxcbiAgICAnZGVsYXR0cicsXG4gICAgJ2RpY3QnLFxuICAgICdkaXInLFxuICAgICdkaXZtb2QnLFxuICAgICdlbnVtZXJhdGUnLFxuICAgICdldmFsJyxcbiAgICAnZXhlYycsXG4gICAgJ2ZpbHRlcicsXG4gICAgJ2Zsb2F0JyxcbiAgICAnZm9ybWF0JyxcbiAgICAnZnJvemVuc2V0JyxcbiAgICAnZ2V0YXR0cicsXG4gICAgJ2dsb2JhbHMnLFxuICAgICdoYXNhdHRyJyxcbiAgICAnaGFzaCcsXG4gICAgJ2hlbHAnLFxuICAgICdoZXgnLFxuICAgICdpZCcsXG4gICAgJ2lucHV0JyxcbiAgICAnaW50JyxcbiAgICAnaXNpbnN0YW5jZScsXG4gICAgJ2lzc3ViY2xhc3MnLFxuICAgICdpdGVyJyxcbiAgICAnbGVuJyxcbiAgICAnbGlzdCcsXG4gICAgJ2xvY2FscycsXG4gICAgJ21hcCcsXG4gICAgJ21heCcsXG4gICAgJ21lbW9yeXZpZXcnLFxuICAgICdtaW4nLFxuICAgICduZXh0JyxcbiAgICAnb2JqZWN0JyxcbiAgICAnb2N0JyxcbiAgICAnb3BlbicsXG4gICAgJ29yZCcsXG4gICAgJ3BvdycsXG4gICAgJ3ByaW50JyxcbiAgICAncHJvcGVydHknLFxuICAgICdyYW5nZScsXG4gICAgJ3JlcHInLFxuICAgICdyZXZlcnNlZCcsXG4gICAgJ3JvdW5kJyxcbiAgICAnc2V0JyxcbiAgICAnc2V0YXR0cicsXG4gICAgJ3NsaWNlJyxcbiAgICAnc29ydGVkJyxcbiAgICAnc3RhdGljbWV0aG9kJyxcbiAgICAnc3RyJyxcbiAgICAnc3VtJyxcbiAgICAnc3VwZXInLFxuICAgICd0dXBsZScsXG4gICAgJ3R5cGUnLFxuICAgICd2YXJzJyxcbiAgICAnemlwJ1xuICBdO1xuXG4gIGNvbnN0IExJVEVSQUxTID0gW1xuICAgICdfX2RlYnVnX18nLFxuICAgICdFbGxpcHNpcycsXG4gICAgJ0ZhbHNlJyxcbiAgICAnTm9uZScsXG4gICAgJ05vdEltcGxlbWVudGVkJyxcbiAgICAnVHJ1ZSdcbiAgXTtcblxuICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdHlwaW5nLmh0bWxcbiAgLy8gVE9ETzogQ291bGQgdGhlc2UgYmUgc3VwcGxlbWVudGVkIGJ5IGEgQ2FtZWxDYXNlIG1hdGNoZXIgaW4gY2VydGFpblxuICAvLyBjb250ZXh0cywgbGVhdmluZyB0aGVzZSByZW1haW5pbmcgb25seSBmb3IgcmVsZXZhbmNlIGhpbnRpbmc/XG4gIGNvbnN0IFRZUEVTID0gW1xuICAgIFwiQW55XCIsXG4gICAgXCJDYWxsYWJsZVwiLFxuICAgIFwiQ29yb3V0aW5lXCIsXG4gICAgXCJEaWN0XCIsXG4gICAgXCJMaXN0XCIsXG4gICAgXCJMaXRlcmFsXCIsXG4gICAgXCJHZW5lcmljXCIsXG4gICAgXCJPcHRpb25hbFwiLFxuICAgIFwiU2VxdWVuY2VcIixcbiAgICBcIlNldFwiLFxuICAgIFwiVHVwbGVcIixcbiAgICBcIlR5cGVcIixcbiAgICBcIlVuaW9uXCJcbiAgXTtcblxuICBjb25zdCBLRVlXT1JEUyA9IHtcbiAgICAkcGF0dGVybjogL1tBLVphLXpdXFx3K3xfX1xcdytfXy8sXG4gICAga2V5d29yZDogUkVTRVJWRURfV09SRFMsXG4gICAgYnVpbHRfaW46IEJVSUxUX0lOUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICB0eXBlOiBUWVBFU1xuICB9O1xuXG4gIGNvbnN0IFBST01QVCA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogL14oPj4+fFxcLlxcLlxcLikgL1xuICB9O1xuXG4gIGNvbnN0IFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLyMvXG4gIH07XG5cbiAgY29uc3QgTElURVJBTF9CUkFDS0VUID0ge1xuICAgIGJlZ2luOiAvXFx7XFx7LyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXSxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbdVVdfFtiQl18W3JSXXxbYkJdW3JSXXxbclJdW2JCXSk/JycnLyxcbiAgICAgICAgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgUFJPTVBUXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFt1VV18W2JCXXxbclJdfFtiQl1bclJdfFtyUl1bYkJdKT9cIlwiXCIvLFxuICAgICAgICBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICBQUk9NUFRcbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW2ZGXVtyUl18W3JSXVtmRl18W2ZGXSknJycvLFxuICAgICAgICBlbmQ6IC8nJycvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICBQUk9NUFQsXG4gICAgICAgICAgTElURVJBTF9CUkFDS0VULFxuICAgICAgICAgIFNVQlNUXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFtmRl1bclJdfFtyUl1bZkZdfFtmRl0pXCJcIlwiLyxcbiAgICAgICAgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgUFJPTVBULFxuICAgICAgICAgIExJVEVSQUxfQlJBQ0tFVCxcbiAgICAgICAgICBTVUJTVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbdVVdfFtyUl0pJy8sXG4gICAgICAgIGVuZDogLycvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbdVVdfFtyUl0pXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFtiQl18W2JCXVtyUl18W3JSXVtiQl0pJy8sXG4gICAgICAgIGVuZDogLycvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbYkJdfFtiQl1bclJdfFtyUl1bYkJdKVwiLyxcbiAgICAgICAgZW5kOiAvXCIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbZkZdW3JSXXxbclJdW2ZGXXxbZkZdKScvLFxuICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgTElURVJBTF9CUkFDS0VULFxuICAgICAgICAgIFNVQlNUXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFtmRl1bclJdfFtyUl1bZkZdfFtmRl0pXCIvLFxuICAgICAgICBlbmQ6IC9cIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIExJVEVSQUxfQlJBQ0tFVCxcbiAgICAgICAgICBTVUJTVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgIF1cbiAgfTtcblxuICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjkvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCNudW1lcmljLWxpdGVyYWxzXG4gIGNvbnN0IGRpZ2l0cGFydCA9ICdbMC05XShfP1swLTldKSonO1xuICBjb25zdCBwb2ludGZsb2F0ID0gYChcXFxcYigke2RpZ2l0cGFydH0pKT9cXFxcLigke2RpZ2l0cGFydH0pfFxcXFxiKCR7ZGlnaXRwYXJ0fSlcXFxcLmA7XG4gIC8vIFdoaXRlc3BhY2UgYWZ0ZXIgYSBudW1iZXIgKG9yIGFueSBsZXhpY2FsIHRva2VuKSBpcyBuZWVkZWQgb25seSBpZiBpdHMgYWJzZW5jZVxuICAvLyB3b3VsZCBjaGFuZ2UgdGhlIHRva2VuaXphdGlvblxuICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjkvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCN3aGl0ZXNwYWNlLWJldHdlZW4tdG9rZW5zXG4gIC8vIFdlIGRldmlhdGUgc2xpZ2h0bHksIHJlcXVpcmluZyBhIHdvcmQgYm91bmRhcnkgb3IgYSBrZXl3b3JkXG4gIC8vIHRvIGF2b2lkIGFjY2lkZW50YWxseSByZWNvZ25pemluZyAqcHJlZml4ZXMqIChlLmcuLCBgMGAgaW4gYDB4NDFgIG9yIGAwOGAgb3IgYDBfXzFgKVxuICBjb25zdCBsb29rYWhlYWQgPSBgXFxcXGJ8JHtSRVNFUlZFRF9XT1JEUy5qb2luKCd8Jyl9YDtcbiAgY29uc3QgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBleHBvbmVudGZsb2F0LCBwb2ludGZsb2F0XG4gICAgICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjkvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCNmbG9hdGluZy1wb2ludC1saXRlcmFsc1xuICAgICAgLy8gb3B0aW9uYWxseSBpbWFnaW5hcnlcbiAgICAgIC8vIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuOS9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5odG1sI2ltYWdpbmFyeS1saXRlcmFsc1xuICAgICAgLy8gTm90ZTogbm8gbGVhZGluZyBcXGIgYmVjYXVzZSBmbG9hdHMgY2FuIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50XG4gICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBtaXNoYW5kbGUgZS5nLiBgZm4oLjUpYCxcbiAgICAgIC8vIG5vIHRyYWlsaW5nIFxcYiBmb3IgcG9pbnRmbG9hdCBiZWNhdXNlIGl0IGNhbiBlbmQgd2l0aCBhIGRlY2ltYWwgcG9pbnRcbiAgICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIG1pc2hhbmRsZSBlLmcuIGAwLi5oZXgoKWA7IHRoaXMgc2hvdWxkIGJlIHNhZmVcbiAgICAgIC8vIGJlY2F1c2UgYm90aCBNVVNUIGNvbnRhaW4gYSBkZWNpbWFsIHBvaW50IGFuZCBzbyBjYW5ub3QgYmUgY29uZnVzZWQgd2l0aFxuICAgICAgLy8gdGhlIGludGVyaW9yIHBhcnQgb2YgYW4gaWRlbnRpZmllclxuICAgICAge1xuICAgICAgICBiZWdpbjogYChcXFxcYigke2RpZ2l0cGFydH0pfCgke3BvaW50ZmxvYXR9KSlbZUVdWystXT8oJHtkaWdpdHBhcnR9KVtqSl0/KD89JHtsb29rYWhlYWR9KWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBgKCR7cG9pbnRmbG9hdH0pW2pKXT9gXG4gICAgICB9LFxuXG4gICAgICAvLyBkZWNpbnRlZ2VyLCBiaW5pbnRlZ2VyLCBvY3RpbnRlZ2VyLCBoZXhpbnRlZ2VyXG4gICAgICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjkvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCNpbnRlZ2VyLWxpdGVyYWxzXG4gICAgICAvLyBvcHRpb25hbGx5IFwibG9uZ1wiIGluIFB5dGhvbiAyXG4gICAgICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yLjcvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCNpbnRlZ2VyLWFuZC1sb25nLWludGVnZXItbGl0ZXJhbHNcbiAgICAgIC8vIGRlY2ludGVnZXIgaXMgb3B0aW9uYWxseSBpbWFnaW5hcnlcbiAgICAgIC8vIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuOS9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5odG1sI2ltYWdpbmFyeS1saXRlcmFsc1xuICAgICAge1xuICAgICAgICBiZWdpbjogYFxcXFxiKFsxLTldKF8/WzAtOV0pKnwwKyhfPzApKilbbExqSl0/KD89JHtsb29rYWhlYWR9KWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBgXFxcXGIwW2JCXShfP1swMV0pK1tsTF0/KD89JHtsb29rYWhlYWR9KWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBgXFxcXGIwW29PXShfP1swLTddKStbbExdPyg/PSR7bG9va2FoZWFkfSlgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogYFxcXFxiMFt4WF0oXz9bMC05YS1mQS1GXSkrW2xMXT8oPz0ke2xvb2thaGVhZH0pYFxuICAgICAgfSxcblxuICAgICAgLy8gaW1hZ251bWJlciAoZGlnaXRwYXJ0LWJhc2VkKVxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy45L3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLmh0bWwjaW1hZ2luYXJ5LWxpdGVyYWxzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBgXFxcXGIoJHtkaWdpdHBhcnR9KVtqSl0oPz0ke2xvb2thaGVhZH0pYFxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgQ09NTUVOVF9UWVBFID0ge1xuICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgYmVnaW46IHJlZ2V4Lmxvb2thaGVhZCgvIyB0eXBlOi8pLFxuICAgIGVuZDogLyQvLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgeyAvLyBwcmV2ZW50IGtleXdvcmRzIGZyb20gY29sb3JpbmcgYHR5cGVgXG4gICAgICAgIGJlZ2luOiAvIyB0eXBlOi9cbiAgICAgIH0sXG4gICAgICAvLyBjb21tZW50IHdpdGhpbiBhIGRhdGF0eXBlIGNvbW1lbnQgaW5jbHVkZXMgbm8ga2V5d29yZHNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8jLyxcbiAgICAgICAgZW5kOiAvXFxiXFxCLyxcbiAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBFeGNsdWRlIHBhcmFtcyBpbiBmdW5jdGlvbnMgd2l0aG91dCBwYXJhbXNcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLFxuICAgICAgICBiZWdpbjogL1xcKFxccypcXCkvLFxuICAgICAgICBza2lwOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICBQUk9NUFQsXG4gICAgICAgICAgTlVNQkVSLFxuICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zID0gW1xuICAgIFNUUklORyxcbiAgICBOVU1CRVIsXG4gICAgUFJPTVBUXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnUHl0aG9uJyxcbiAgICBhbGlhc2VzOiBbXG4gICAgICAncHknLFxuICAgICAgJ2d5cCcsXG4gICAgICAnaXB5dGhvbidcbiAgICBdLFxuICAgIHVuaWNvZGVSZWdleDogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLyg8XFwvfFxcPyl8PT4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQUk9NUFQsXG4gICAgICBOVU1CRVIsXG4gICAgICB7XG4gICAgICAgIC8vIHZlcnkgY29tbW9uIGNvbnZlbnRpb25cbiAgICAgICAgc2NvcGU6ICd2YXJpYWJsZS5sYW5ndWFnZScsXG4gICAgICAgIG1hdGNoOiAvXFxic2VsZlxcYi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGVhdCBcImlmXCIgcHJpb3IgdG8gc3RyaW5nIHNvIHRoYXQgaXQgd29uJ3QgYWNjaWRlbnRhbGx5IGJlXG4gICAgICAgIC8vIGxhYmVsZWQgYXMgYW4gZi1zdHJpbmdcbiAgICAgICAgYmVnaW5LZXl3b3JkczogXCJpZlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IG1hdGNoOiAvXFxib3JcXGIvLCBzY29wZTogXCJrZXl3b3JkXCIgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIENPTU1FTlRfVFlQRSxcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL1xcYmRlZi8sIC9cXHMrLyxcbiAgICAgICAgICBJREVOVF9SRSxcbiAgICAgICAgXSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmZ1bmN0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFsgUEFSQU1TIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAgICAgL1xcYmNsYXNzLywgL1xccysvLFxuICAgICAgICAgICAgICBJREVOVF9SRSwgL1xccyovLFxuICAgICAgICAgICAgICAvXFwoXFxzKi8sIElERU5UX1JFLC9cXHMqXFwpL1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgICAgIC9cXGJjbGFzcy8sIC9cXHMrLyxcbiAgICAgICAgICAgICAgSURFTlRfUkVcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBzY29wZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidGl0bGUuY2xhc3NcIixcbiAgICAgICAgICA2OiBcInRpdGxlLmNsYXNzLmluaGVyaXRlZFwiLFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eW1xcdCBdKkAvLFxuICAgICAgICBlbmQ6IC8oPz0jKXwkLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBOVU1CRVIsXG4gICAgICAgICAgUEFSQU1TLFxuICAgICAgICAgIFNUUklOR1xuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHB5dGhvbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1303\n")},1330:module=>{eval('/*\nLanguage: Excel formulae\nAuthor: Victor Zhou \nDescription: Excel formulae\nWebsite: https://products.office.com/en-us/excel/\nCategory: enterprise\n*/\n\n/** @type LanguageFn */\nfunction excel(hljs) {\n // built-in functions imported from https://web.archive.org/web/20241205190205/https://support.microsoft.com/en-us/office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\n const BUILT_INS = [\n "ABS",\n "ACCRINT",\n "ACCRINTM",\n "ACOS",\n "ACOSH",\n "ACOT",\n "ACOTH",\n "AGGREGATE",\n "ADDRESS",\n "AMORDEGRC",\n "AMORLINC",\n "AND",\n "ARABIC",\n "AREAS",\n "ARRAYTOTEXT",\n "ASC",\n "ASIN",\n "ASINH",\n "ATAN",\n "ATAN2",\n "ATANH",\n "AVEDEV",\n "AVERAGE",\n "AVERAGEA",\n "AVERAGEIF",\n "AVERAGEIFS",\n "BAHTTEXT",\n "BASE",\n "BESSELI",\n "BESSELJ",\n "BESSELK",\n "BESSELY",\n "BETADIST",\n "BETA.DIST",\n "BETAINV",\n "BETA.INV",\n "BIN2DEC",\n "BIN2HEX",\n "BIN2OCT",\n "BINOMDIST",\n "BINOM.DIST",\n "BINOM.DIST.RANGE",\n "BINOM.INV",\n "BITAND",\n "BITLSHIFT",\n "BITOR",\n "BITRSHIFT",\n "BITXOR",\n "BYCOL",\n "BYROW",\n "CALL",\n "CEILING",\n "CEILING.MATH",\n "CEILING.PRECISE",\n "CELL",\n "CHAR",\n "CHIDIST",\n "CHIINV",\n "CHITEST",\n "CHISQ.DIST",\n "CHISQ.DIST.RT",\n "CHISQ.INV",\n "CHISQ.INV.RT",\n "CHISQ.TEST",\n "CHOOSE",\n "CHOOSECOLS",\n "CHOOSEROWS",\n "CLEAN",\n "CODE",\n "COLUMN",\n "COLUMNS",\n "COMBIN",\n "COMBINA",\n "COMPLEX",\n "CONCAT",\n "CONCATENATE",\n "CONFIDENCE",\n "CONFIDENCE.NORM",\n "CONFIDENCE.T",\n "CONVERT",\n "CORREL",\n "COS",\n "COSH",\n "COT",\n "COTH",\n "COUNT",\n "COUNTA",\n "COUNTBLANK",\n "COUNTIF",\n "COUNTIFS",\n "COUPDAYBS",\n "COUPDAYS",\n "COUPDAYSNC",\n "COUPNCD",\n "COUPNUM",\n "COUPPCD",\n "COVAR",\n "COVARIANCE.P",\n "COVARIANCE.S",\n "CRITBINOM",\n "CSC",\n "CSCH",\n "CUBEKPIMEMBER",\n "CUBEMEMBER",\n "CUBEMEMBERPROPERTY",\n "CUBERANKEDMEMBER",\n "CUBESET",\n "CUBESETCOUNT",\n "CUBEVALUE",\n "CUMIPMT",\n "CUMPRINC",\n "DATE",\n "DATEDIF",\n "DATEVALUE",\n "DAVERAGE",\n "DAY",\n "DAYS",\n "DAYS360",\n "DB",\n "DBCS",\n "DCOUNT",\n "DCOUNTA",\n "DDB",\n "DEC2BIN",\n "DEC2HEX",\n "DEC2OCT",\n "DECIMAL",\n "DEGREES",\n "DELTA",\n "DEVSQ",\n "DGET",\n "DISC",\n "DMAX",\n "DMIN",\n "DOLLAR",\n "DOLLARDE",\n "DOLLARFR",\n "DPRODUCT",\n "DROP",\n "DSTDEV",\n "DSTDEVP",\n "DSUM",\n "DURATION",\n "DVAR",\n "DVARP",\n "EDATE",\n "EFFECT",\n "ENCODEURL",\n "EOMONTH",\n "ERF",\n "ERF.PRECISE",\n "ERFC",\n "ERFC.PRECISE",\n "ERROR.TYPE",\n "EUROCONVERT",\n "EVEN",\n "EXACT",\n "EXP",\n "EXPAND",\n "EXPON.DIST",\n "EXPONDIST",\n "FACT",\n "FACTDOUBLE",\n "FALSE",\n "F.DIST",\n "FDIST",\n "F.DIST.RT",\n "FILTER",\n "FILTERXML",\n "FIND",\n "FINDB",\n "F.INV",\n "F.INV.RT",\n "FINV",\n "FISHER",\n "FISHERINV",\n "FIXED",\n "FLOOR",\n "FLOOR.MATH",\n "FLOOR.PRECISE",\n "FORECAST",\n "FORECAST.ETS",\n "FORECAST.ETS.CONFINT",\n "FORECAST.ETS.SEASONALITY",\n "FORECAST.ETS.STAT",\n "FORECAST.LINEAR",\n "FORMULATEXT",\n "FREQUENCY",\n "F.TEST",\n "FTEST",\n "FV",\n "FVSCHEDULE",\n "GAMMA",\n "GAMMA.DIST",\n "GAMMADIST",\n "GAMMA.INV",\n "GAMMAINV",\n "GAMMALN",\n "GAMMALN.PRECISE",\n "GAUSS",\n "GCD",\n "GEOMEAN",\n "GESTEP",\n "GETPIVOTDATA",\n "GROWTH",\n "HARMEAN",\n "HEX2BIN",\n "HEX2DEC",\n "HEX2OCT",\n "HLOOKUP",\n "HOUR",\n "HSTACK",\n "HYPERLINK",\n "HYPGEOM.DIST",\n "HYPGEOMDIST",\n "IF",\n "IFERROR",\n "IFNA",\n "IFS",\n "IMABS",\n "IMAGE",\n "IMAGINARY",\n "IMARGUMENT",\n "IMCONJUGATE",\n "IMCOS",\n "IMCOSH",\n "IMCOT",\n "IMCSC",\n "IMCSCH",\n "IMDIV",\n "IMEXP",\n "IMLN",\n "IMLOG10",\n "IMLOG2",\n "IMPOWER",\n "IMPRODUCT",\n "IMREAL",\n "IMSEC",\n "IMSECH",\n "IMSIN",\n "IMSINH",\n "IMSQRT",\n "IMSUB",\n "IMSUM",\n "IMTAN",\n "INDEX",\n "INDIRECT",\n "INFO",\n "INT",\n "INTERCEPT",\n "INTRATE",\n "IPMT",\n "IRR",\n "ISBLANK",\n "ISERR",\n "ISERROR",\n "ISEVEN",\n "ISFORMULA",\n "ISLOGICAL",\n "ISNA",\n "ISNONTEXT",\n "ISNUMBER",\n "ISODD",\n "ISOMITTED",\n "ISREF",\n "ISTEXT",\n "ISO.CEILING",\n "ISOWEEKNUM",\n "ISPMT",\n "JIS",\n "KURT",\n "LAMBDA",\n "LARGE",\n "LCM",\n "LEFT",\n "LEFTB",\n "LEN",\n "LENB",\n "LET",\n "LINEST",\n "LN",\n "LOG",\n "LOG10",\n "LOGEST",\n "LOGINV",\n "LOGNORM.DIST",\n "LOGNORMDIST",\n "LOGNORM.INV",\n "LOOKUP",\n "LOWER",\n "MAKEARRAY",\n "MAP",\n "MATCH",\n "MAX",\n "MAXA",\n "MAXIFS",\n "MDETERM",\n "MDURATION",\n "MEDIAN",\n "MID",\n "MIDB",\n "MIN",\n "MINIFS",\n "MINA",\n "MINUTE",\n "MINVERSE",\n "MIRR",\n "MMULT",\n "MOD",\n "MODE",\n "MODE.MULT",\n "MODE.SNGL",\n "MONTH",\n "MROUND",\n "MULTINOMIAL",\n "MUNIT",\n "N",\n "NA",\n "NEGBINOM.DIST",\n "NEGBINOMDIST",\n "NETWORKDAYS",\n "NETWORKDAYS.INTL",\n "NOMINAL",\n "NORM.DIST",\n "NORMDIST",\n "NORMINV",\n "NORM.INV",\n "NORM.S.DIST",\n "NORMSDIST",\n "NORM.S.INV",\n "NORMSINV",\n "NOT",\n "NOW",\n "NPER",\n "NPV",\n "NUMBERVALUE",\n "OCT2BIN",\n "OCT2DEC",\n "OCT2HEX",\n "ODD",\n "ODDFPRICE",\n "ODDFYIELD",\n "ODDLPRICE",\n "ODDLYIELD",\n "OFFSET",\n "OR",\n "PDURATION",\n "PEARSON",\n "PERCENTILE.EXC",\n "PERCENTILE.INC",\n "PERCENTILE",\n "PERCENTRANK.EXC",\n "PERCENTRANK.INC",\n "PERCENTRANK",\n "PERMUT",\n "PERMUTATIONA",\n "PHI",\n "PHONETIC",\n "PI",\n "PMT",\n "POISSON.DIST",\n "POISSON",\n "POWER",\n "PPMT",\n "PRICE",\n "PRICEDISC",\n "PRICEMAT",\n "PROB",\n "PRODUCT",\n "PROPER",\n "PV",\n "QUARTILE",\n "QUARTILE.EXC",\n "QUARTILE.INC",\n "QUOTIENT",\n "RADIANS",\n "RAND",\n "RANDARRAY",\n "RANDBETWEEN",\n "RANK.AVG",\n "RANK.EQ",\n "RANK",\n "RATE",\n "RECEIVED",\n "REDUCE",\n "REGISTER.ID",\n "REPLACE",\n "REPLACEB",\n "REPT",\n "RIGHT",\n "RIGHTB",\n "ROMAN",\n "ROUND",\n "ROUNDDOWN",\n "ROUNDUP",\n "ROW",\n "ROWS",\n "RRI",\n "RSQ",\n "RTD",\n "SCAN",\n "SEARCH",\n "SEARCHB",\n "SEC",\n "SECH",\n "SECOND",\n "SEQUENCE",\n "SERIESSUM",\n "SHEET",\n "SHEETS",\n "SIGN",\n "SIN",\n "SINH",\n "SKEW",\n "SKEW.P",\n "SLN",\n "SLOPE",\n "SMALL",\n "SORT",\n "SORTBY",\n "SQRT",\n "SQRTPI",\n "SQL.REQUEST",\n "STANDARDIZE",\n "STOCKHISTORY",\n "STDEV",\n "STDEV.P",\n "STDEV.S",\n "STDEVA",\n "STDEVP",\n "STDEVPA",\n "STEYX",\n "SUBSTITUTE",\n "SUBTOTAL",\n "SUM",\n "SUMIF",\n "SUMIFS",\n "SUMPRODUCT",\n "SUMSQ",\n "SUMX2MY2",\n "SUMX2PY2",\n "SUMXMY2",\n "SWITCH",\n "SYD",\n "T",\n "TAN",\n "TANH",\n "TAKE",\n "TBILLEQ",\n "TBILLPRICE",\n "TBILLYIELD",\n "T.DIST",\n "T.DIST.2T",\n "T.DIST.RT",\n "TDIST",\n "TEXT",\n "TEXTAFTER",\n "TEXTBEFORE",\n "TEXTJOIN",\n "TEXTSPLIT",\n "TIME",\n "TIMEVALUE",\n "T.INV",\n "T.INV.2T",\n "TINV",\n "TOCOL",\n "TOROW",\n "TODAY",\n "TRANSPOSE",\n "TREND",\n "TRIM",\n "TRIMMEAN",\n "TRUE",\n "TRUNC",\n "T.TEST",\n "TTEST",\n "TYPE",\n "UNICHAR",\n "UNICODE",\n "UNIQUE",\n "UPPER",\n "VALUE",\n "VALUETOTEXT",\n "VAR",\n "VAR.P",\n "VAR.S",\n "VARA",\n "VARP",\n "VARPA",\n "VDB",\n "VLOOKUP",\n "VSTACK",\n "WEBSERVICE",\n "WEEKDAY",\n "WEEKNUM",\n "WEIBULL",\n "WEIBULL.DIST",\n "WORKDAY",\n "WORKDAY.INTL",\n "WRAPCOLS",\n "WRAPROWS",\n "XIRR",\n "XLOOKUP",\n "XMATCH",\n "XNPV",\n "XOR",\n "YEAR",\n "YEARFRAC",\n "YIELD",\n "YIELDDISC",\n "YIELDMAT",\n "Z.TEST",\n "ZTEST"\n ];\n return {\n name: \'Excel formulae\',\n aliases: [\n \'xlsx\',\n \'xls\'\n ],\n case_insensitive: true,\n keywords: {\n $pattern: /[a-zA-Z][\\w\\.]*/,\n built_in: BUILT_INS\n },\n contains: [\n {\n /* matches a beginning equal sign found in Excel formula examples */\n begin: /^=/,\n end: /[^=]/,\n returnEnd: true,\n illegal: /=/, /* only allow single equal sign at front of line */\n relevance: 10\n },\n /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\n {\n /* matches a reference to a single cell */\n className: \'symbol\',\n begin: /\\b[A-Z]{1,2}\\d+\\b/,\n end: /[^\\d]/,\n excludeEnd: true,\n relevance: 0\n },\n {\n /* matches a reference to a range of cells */\n className: \'symbol\',\n begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\n relevance: 0\n },\n hljs.BACKSLASH_ESCAPE,\n hljs.QUOTE_STRING_MODE,\n {\n className: \'number\',\n begin: hljs.NUMBER_RE + \'(%)?\',\n relevance: 0\n },\n /* Excel formula comments are done by putting the comment in a function call to N() */\n hljs.COMMENT(/\\bN\\(/, /\\)/,\n {\n excludeBegin: true,\n excludeEnd: true,\n illegal: /\\n/\n })\n ]\n };\n}\n\nmodule.exports = excel;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMzMC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixJQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsSUFBSSxVQUFVLElBQUk7QUFDeEM7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2V4Y2VsLmpzP2VmNjAiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBFeGNlbCBmb3JtdWxhZVxuQXV0aG9yOiBWaWN0b3IgWmhvdSA8T2lDTXVka2lwc0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+XG5EZXNjcmlwdGlvbjogRXhjZWwgZm9ybXVsYWVcbldlYnNpdGU6IGh0dHBzOi8vcHJvZHVjdHMub2ZmaWNlLmNvbS9lbi11cy9leGNlbC9cbkNhdGVnb3J5OiBlbnRlcnByaXNlXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gZXhjZWwoaGxqcykge1xuICAvLyBidWlsdC1pbiBmdW5jdGlvbnMgaW1wb3J0ZWQgZnJvbSBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyNDEyMDUxOTAyMDUvaHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20vZW4tdXMvb2ZmaWNlL2V4Y2VsLWZ1bmN0aW9ucy1hbHBoYWJldGljYWwtYjM5NDQ1NzItMjU1ZC00ZWZiLWJiOTYtYzZkOTAwMzNlMTg4XG4gIGNvbnN0IEJVSUxUX0lOUyA9IFtcbiAgICBcIkFCU1wiLFxuICAgIFwiQUNDUklOVFwiLFxuICAgIFwiQUNDUklOVE1cIixcbiAgICBcIkFDT1NcIixcbiAgICBcIkFDT1NIXCIsXG4gICAgXCJBQ09UXCIsXG4gICAgXCJBQ09USFwiLFxuICAgIFwiQUdHUkVHQVRFXCIsXG4gICAgXCJBRERSRVNTXCIsXG4gICAgXCJBTU9SREVHUkNcIixcbiAgICBcIkFNT1JMSU5DXCIsXG4gICAgXCJBTkRcIixcbiAgICBcIkFSQUJJQ1wiLFxuICAgIFwiQVJFQVNcIixcbiAgICBcIkFSUkFZVE9URVhUXCIsXG4gICAgXCJBU0NcIixcbiAgICBcIkFTSU5cIixcbiAgICBcIkFTSU5IXCIsXG4gICAgXCJBVEFOXCIsXG4gICAgXCJBVEFOMlwiLFxuICAgIFwiQVRBTkhcIixcbiAgICBcIkFWRURFVlwiLFxuICAgIFwiQVZFUkFHRVwiLFxuICAgIFwiQVZFUkFHRUFcIixcbiAgICBcIkFWRVJBR0VJRlwiLFxuICAgIFwiQVZFUkFHRUlGU1wiLFxuICAgIFwiQkFIVFRFWFRcIixcbiAgICBcIkJBU0VcIixcbiAgICBcIkJFU1NFTElcIixcbiAgICBcIkJFU1NFTEpcIixcbiAgICBcIkJFU1NFTEtcIixcbiAgICBcIkJFU1NFTFlcIixcbiAgICBcIkJFVEFESVNUXCIsXG4gICAgXCJCRVRBLkRJU1RcIixcbiAgICBcIkJFVEFJTlZcIixcbiAgICBcIkJFVEEuSU5WXCIsXG4gICAgXCJCSU4yREVDXCIsXG4gICAgXCJCSU4ySEVYXCIsXG4gICAgXCJCSU4yT0NUXCIsXG4gICAgXCJCSU5PTURJU1RcIixcbiAgICBcIkJJTk9NLkRJU1RcIixcbiAgICBcIkJJTk9NLkRJU1QuUkFOR0VcIixcbiAgICBcIkJJTk9NLklOVlwiLFxuICAgIFwiQklUQU5EXCIsXG4gICAgXCJCSVRMU0hJRlRcIixcbiAgICBcIkJJVE9SXCIsXG4gICAgXCJCSVRSU0hJRlRcIixcbiAgICBcIkJJVFhPUlwiLFxuICAgIFwiQllDT0xcIixcbiAgICBcIkJZUk9XXCIsXG4gICAgXCJDQUxMXCIsXG4gICAgXCJDRUlMSU5HXCIsXG4gICAgXCJDRUlMSU5HLk1BVEhcIixcbiAgICBcIkNFSUxJTkcuUFJFQ0lTRVwiLFxuICAgIFwiQ0VMTFwiLFxuICAgIFwiQ0hBUlwiLFxuICAgIFwiQ0hJRElTVFwiLFxuICAgIFwiQ0hJSU5WXCIsXG4gICAgXCJDSElURVNUXCIsXG4gICAgXCJDSElTUS5ESVNUXCIsXG4gICAgXCJDSElTUS5ESVNULlJUXCIsXG4gICAgXCJDSElTUS5JTlZcIixcbiAgICBcIkNISVNRLklOVi5SVFwiLFxuICAgIFwiQ0hJU1EuVEVTVFwiLFxuICAgIFwiQ0hPT1NFXCIsXG4gICAgXCJDSE9PU0VDT0xTXCIsXG4gICAgXCJDSE9PU0VST1dTXCIsXG4gICAgXCJDTEVBTlwiLFxuICAgIFwiQ09ERVwiLFxuICAgIFwiQ09MVU1OXCIsXG4gICAgXCJDT0xVTU5TXCIsXG4gICAgXCJDT01CSU5cIixcbiAgICBcIkNPTUJJTkFcIixcbiAgICBcIkNPTVBMRVhcIixcbiAgICBcIkNPTkNBVFwiLFxuICAgIFwiQ09OQ0FURU5BVEVcIixcbiAgICBcIkNPTkZJREVOQ0VcIixcbiAgICBcIkNPTkZJREVOQ0UuTk9STVwiLFxuICAgIFwiQ09ORklERU5DRS5UXCIsXG4gICAgXCJDT05WRVJUXCIsXG4gICAgXCJDT1JSRUxcIixcbiAgICBcIkNPU1wiLFxuICAgIFwiQ09TSFwiLFxuICAgIFwiQ09UXCIsXG4gICAgXCJDT1RIXCIsXG4gICAgXCJDT1VOVFwiLFxuICAgIFwiQ09VTlRBXCIsXG4gICAgXCJDT1VOVEJMQU5LXCIsXG4gICAgXCJDT1VOVElGXCIsXG4gICAgXCJDT1VOVElGU1wiLFxuICAgIFwiQ09VUERBWUJTXCIsXG4gICAgXCJDT1VQREFZU1wiLFxuICAgIFwiQ09VUERBWVNOQ1wiLFxuICAgIFwiQ09VUE5DRFwiLFxuICAgIFwiQ09VUE5VTVwiLFxuICAgIFwiQ09VUFBDRFwiLFxuICAgIFwiQ09WQVJcIixcbiAgICBcIkNPVkFSSUFOQ0UuUFwiLFxuICAgIFwiQ09WQVJJQU5DRS5TXCIsXG4gICAgXCJDUklUQklOT01cIixcbiAgICBcIkNTQ1wiLFxuICAgIFwiQ1NDSFwiLFxuICAgIFwiQ1VCRUtQSU1FTUJFUlwiLFxuICAgIFwiQ1VCRU1FTUJFUlwiLFxuICAgIFwiQ1VCRU1FTUJFUlBST1BFUlRZXCIsXG4gICAgXCJDVUJFUkFOS0VETUVNQkVSXCIsXG4gICAgXCJDVUJFU0VUXCIsXG4gICAgXCJDVUJFU0VUQ09VTlRcIixcbiAgICBcIkNVQkVWQUxVRVwiLFxuICAgIFwiQ1VNSVBNVFwiLFxuICAgIFwiQ1VNUFJJTkNcIixcbiAgICBcIkRBVEVcIixcbiAgICBcIkRBVEVESUZcIixcbiAgICBcIkRBVEVWQUxVRVwiLFxuICAgIFwiREFWRVJBR0VcIixcbiAgICBcIkRBWVwiLFxuICAgIFwiREFZU1wiLFxuICAgIFwiREFZUzM2MFwiLFxuICAgIFwiREJcIixcbiAgICBcIkRCQ1NcIixcbiAgICBcIkRDT1VOVFwiLFxuICAgIFwiRENPVU5UQVwiLFxuICAgIFwiRERCXCIsXG4gICAgXCJERUMyQklOXCIsXG4gICAgXCJERUMySEVYXCIsXG4gICAgXCJERUMyT0NUXCIsXG4gICAgXCJERUNJTUFMXCIsXG4gICAgXCJERUdSRUVTXCIsXG4gICAgXCJERUxUQVwiLFxuICAgIFwiREVWU1FcIixcbiAgICBcIkRHRVRcIixcbiAgICBcIkRJU0NcIixcbiAgICBcIkRNQVhcIixcbiAgICBcIkRNSU5cIixcbiAgICBcIkRPTExBUlwiLFxuICAgIFwiRE9MTEFSREVcIixcbiAgICBcIkRPTExBUkZSXCIsXG4gICAgXCJEUFJPRFVDVFwiLFxuICAgIFwiRFJPUFwiLFxuICAgIFwiRFNUREVWXCIsXG4gICAgXCJEU1RERVZQXCIsXG4gICAgXCJEU1VNXCIsXG4gICAgXCJEVVJBVElPTlwiLFxuICAgIFwiRFZBUlwiLFxuICAgIFwiRFZBUlBcIixcbiAgICBcIkVEQVRFXCIsXG4gICAgXCJFRkZFQ1RcIixcbiAgICBcIkVOQ09ERVVSTFwiLFxuICAgIFwiRU9NT05USFwiLFxuICAgIFwiRVJGXCIsXG4gICAgXCJFUkYuUFJFQ0lTRVwiLFxuICAgIFwiRVJGQ1wiLFxuICAgIFwiRVJGQy5QUkVDSVNFXCIsXG4gICAgXCJFUlJPUi5UWVBFXCIsXG4gICAgXCJFVVJPQ09OVkVSVFwiLFxuICAgIFwiRVZFTlwiLFxuICAgIFwiRVhBQ1RcIixcbiAgICBcIkVYUFwiLFxuICAgIFwiRVhQQU5EXCIsXG4gICAgXCJFWFBPTi5ESVNUXCIsXG4gICAgXCJFWFBPTkRJU1RcIixcbiAgICBcIkZBQ1RcIixcbiAgICBcIkZBQ1RET1VCTEVcIixcbiAgICBcIkZBTFNFXCIsXG4gICAgXCJGLkRJU1RcIixcbiAgICBcIkZESVNUXCIsXG4gICAgXCJGLkRJU1QuUlRcIixcbiAgICBcIkZJTFRFUlwiLFxuICAgIFwiRklMVEVSWE1MXCIsXG4gICAgXCJGSU5EXCIsXG4gICAgXCJGSU5EQlwiLFxuICAgIFwiRi5JTlZcIixcbiAgICBcIkYuSU5WLlJUXCIsXG4gICAgXCJGSU5WXCIsXG4gICAgXCJGSVNIRVJcIixcbiAgICBcIkZJU0hFUklOVlwiLFxuICAgIFwiRklYRURcIixcbiAgICBcIkZMT09SXCIsXG4gICAgXCJGTE9PUi5NQVRIXCIsXG4gICAgXCJGTE9PUi5QUkVDSVNFXCIsXG4gICAgXCJGT1JFQ0FTVFwiLFxuICAgIFwiRk9SRUNBU1QuRVRTXCIsXG4gICAgXCJGT1JFQ0FTVC5FVFMuQ09ORklOVFwiLFxuICAgIFwiRk9SRUNBU1QuRVRTLlNFQVNPTkFMSVRZXCIsXG4gICAgXCJGT1JFQ0FTVC5FVFMuU1RBVFwiLFxuICAgIFwiRk9SRUNBU1QuTElORUFSXCIsXG4gICAgXCJGT1JNVUxBVEVYVFwiLFxuICAgIFwiRlJFUVVFTkNZXCIsXG4gICAgXCJGLlRFU1RcIixcbiAgICBcIkZURVNUXCIsXG4gICAgXCJGVlwiLFxuICAgIFwiRlZTQ0hFRFVMRVwiLFxuICAgIFwiR0FNTUFcIixcbiAgICBcIkdBTU1BLkRJU1RcIixcbiAgICBcIkdBTU1BRElTVFwiLFxuICAgIFwiR0FNTUEuSU5WXCIsXG4gICAgXCJHQU1NQUlOVlwiLFxuICAgIFwiR0FNTUFMTlwiLFxuICAgIFwiR0FNTUFMTi5QUkVDSVNFXCIsXG4gICAgXCJHQVVTU1wiLFxuICAgIFwiR0NEXCIsXG4gICAgXCJHRU9NRUFOXCIsXG4gICAgXCJHRVNURVBcIixcbiAgICBcIkdFVFBJVk9UREFUQVwiLFxuICAgIFwiR1JPV1RIXCIsXG4gICAgXCJIQVJNRUFOXCIsXG4gICAgXCJIRVgyQklOXCIsXG4gICAgXCJIRVgyREVDXCIsXG4gICAgXCJIRVgyT0NUXCIsXG4gICAgXCJITE9PS1VQXCIsXG4gICAgXCJIT1VSXCIsXG4gICAgXCJIU1RBQ0tcIixcbiAgICBcIkhZUEVSTElOS1wiLFxuICAgIFwiSFlQR0VPTS5ESVNUXCIsXG4gICAgXCJIWVBHRU9NRElTVFwiLFxuICAgIFwiSUZcIixcbiAgICBcIklGRVJST1JcIixcbiAgICBcIklGTkFcIixcbiAgICBcIklGU1wiLFxuICAgIFwiSU1BQlNcIixcbiAgICBcIklNQUdFXCIsXG4gICAgXCJJTUFHSU5BUllcIixcbiAgICBcIklNQVJHVU1FTlRcIixcbiAgICBcIklNQ09OSlVHQVRFXCIsXG4gICAgXCJJTUNPU1wiLFxuICAgIFwiSU1DT1NIXCIsXG4gICAgXCJJTUNPVFwiLFxuICAgIFwiSU1DU0NcIixcbiAgICBcIklNQ1NDSFwiLFxuICAgIFwiSU1ESVZcIixcbiAgICBcIklNRVhQXCIsXG4gICAgXCJJTUxOXCIsXG4gICAgXCJJTUxPRzEwXCIsXG4gICAgXCJJTUxPRzJcIixcbiAgICBcIklNUE9XRVJcIixcbiAgICBcIklNUFJPRFVDVFwiLFxuICAgIFwiSU1SRUFMXCIsXG4gICAgXCJJTVNFQ1wiLFxuICAgIFwiSU1TRUNIXCIsXG4gICAgXCJJTVNJTlwiLFxuICAgIFwiSU1TSU5IXCIsXG4gICAgXCJJTVNRUlRcIixcbiAgICBcIklNU1VCXCIsXG4gICAgXCJJTVNVTVwiLFxuICAgIFwiSU1UQU5cIixcbiAgICBcIklOREVYXCIsXG4gICAgXCJJTkRJUkVDVFwiLFxuICAgIFwiSU5GT1wiLFxuICAgIFwiSU5UXCIsXG4gICAgXCJJTlRFUkNFUFRcIixcbiAgICBcIklOVFJBVEVcIixcbiAgICBcIklQTVRcIixcbiAgICBcIklSUlwiLFxuICAgIFwiSVNCTEFOS1wiLFxuICAgIFwiSVNFUlJcIixcbiAgICBcIklTRVJST1JcIixcbiAgICBcIklTRVZFTlwiLFxuICAgIFwiSVNGT1JNVUxBXCIsXG4gICAgXCJJU0xPR0lDQUxcIixcbiAgICBcIklTTkFcIixcbiAgICBcIklTTk9OVEVYVFwiLFxuICAgIFwiSVNOVU1CRVJcIixcbiAgICBcIklTT0REXCIsXG4gICAgXCJJU09NSVRURURcIixcbiAgICBcIklTUkVGXCIsXG4gICAgXCJJU1RFWFRcIixcbiAgICBcIklTTy5DRUlMSU5HXCIsXG4gICAgXCJJU09XRUVLTlVNXCIsXG4gICAgXCJJU1BNVFwiLFxuICAgIFwiSklTXCIsXG4gICAgXCJLVVJUXCIsXG4gICAgXCJMQU1CREFcIixcbiAgICBcIkxBUkdFXCIsXG4gICAgXCJMQ01cIixcbiAgICBcIkxFRlRcIixcbiAgICBcIkxFRlRCXCIsXG4gICAgXCJMRU5cIixcbiAgICBcIkxFTkJcIixcbiAgICBcIkxFVFwiLFxuICAgIFwiTElORVNUXCIsXG4gICAgXCJMTlwiLFxuICAgIFwiTE9HXCIsXG4gICAgXCJMT0cxMFwiLFxuICAgIFwiTE9HRVNUXCIsXG4gICAgXCJMT0dJTlZcIixcbiAgICBcIkxPR05PUk0uRElTVFwiLFxuICAgIFwiTE9HTk9STURJU1RcIixcbiAgICBcIkxPR05PUk0uSU5WXCIsXG4gICAgXCJMT09LVVBcIixcbiAgICBcIkxPV0VSXCIsXG4gICAgXCJNQUtFQVJSQVlcIixcbiAgICBcIk1BUFwiLFxuICAgIFwiTUFUQ0hcIixcbiAgICBcIk1BWFwiLFxuICAgIFwiTUFYQVwiLFxuICAgIFwiTUFYSUZTXCIsXG4gICAgXCJNREVURVJNXCIsXG4gICAgXCJNRFVSQVRJT05cIixcbiAgICBcIk1FRElBTlwiLFxuICAgIFwiTUlEXCIsXG4gICAgXCJNSURCXCIsXG4gICAgXCJNSU5cIixcbiAgICBcIk1JTklGU1wiLFxuICAgIFwiTUlOQVwiLFxuICAgIFwiTUlOVVRFXCIsXG4gICAgXCJNSU5WRVJTRVwiLFxuICAgIFwiTUlSUlwiLFxuICAgIFwiTU1VTFRcIixcbiAgICBcIk1PRFwiLFxuICAgIFwiTU9ERVwiLFxuICAgIFwiTU9ERS5NVUxUXCIsXG4gICAgXCJNT0RFLlNOR0xcIixcbiAgICBcIk1PTlRIXCIsXG4gICAgXCJNUk9VTkRcIixcbiAgICBcIk1VTFRJTk9NSUFMXCIsXG4gICAgXCJNVU5JVFwiLFxuICAgIFwiTlwiLFxuICAgIFwiTkFcIixcbiAgICBcIk5FR0JJTk9NLkRJU1RcIixcbiAgICBcIk5FR0JJTk9NRElTVFwiLFxuICAgIFwiTkVUV09SS0RBWVNcIixcbiAgICBcIk5FVFdPUktEQVlTLklOVExcIixcbiAgICBcIk5PTUlOQUxcIixcbiAgICBcIk5PUk0uRElTVFwiLFxuICAgIFwiTk9STURJU1RcIixcbiAgICBcIk5PUk1JTlZcIixcbiAgICBcIk5PUk0uSU5WXCIsXG4gICAgXCJOT1JNLlMuRElTVFwiLFxuICAgIFwiTk9STVNESVNUXCIsXG4gICAgXCJOT1JNLlMuSU5WXCIsXG4gICAgXCJOT1JNU0lOVlwiLFxuICAgIFwiTk9UXCIsXG4gICAgXCJOT1dcIixcbiAgICBcIk5QRVJcIixcbiAgICBcIk5QVlwiLFxuICAgIFwiTlVNQkVSVkFMVUVcIixcbiAgICBcIk9DVDJCSU5cIixcbiAgICBcIk9DVDJERUNcIixcbiAgICBcIk9DVDJIRVhcIixcbiAgICBcIk9ERFwiLFxuICAgIFwiT0RERlBSSUNFXCIsXG4gICAgXCJPRERGWUlFTERcIixcbiAgICBcIk9ERExQUklDRVwiLFxuICAgIFwiT0RETFlJRUxEXCIsXG4gICAgXCJPRkZTRVRcIixcbiAgICBcIk9SXCIsXG4gICAgXCJQRFVSQVRJT05cIixcbiAgICBcIlBFQVJTT05cIixcbiAgICBcIlBFUkNFTlRJTEUuRVhDXCIsXG4gICAgXCJQRVJDRU5USUxFLklOQ1wiLFxuICAgIFwiUEVSQ0VOVElMRVwiLFxuICAgIFwiUEVSQ0VOVFJBTksuRVhDXCIsXG4gICAgXCJQRVJDRU5UUkFOSy5JTkNcIixcbiAgICBcIlBFUkNFTlRSQU5LXCIsXG4gICAgXCJQRVJNVVRcIixcbiAgICBcIlBFUk1VVEFUSU9OQVwiLFxuICAgIFwiUEhJXCIsXG4gICAgXCJQSE9ORVRJQ1wiLFxuICAgIFwiUElcIixcbiAgICBcIlBNVFwiLFxuICAgIFwiUE9JU1NPTi5ESVNUXCIsXG4gICAgXCJQT0lTU09OXCIsXG4gICAgXCJQT1dFUlwiLFxuICAgIFwiUFBNVFwiLFxuICAgIFwiUFJJQ0VcIixcbiAgICBcIlBSSUNFRElTQ1wiLFxuICAgIFwiUFJJQ0VNQVRcIixcbiAgICBcIlBST0JcIixcbiAgICBcIlBST0RVQ1RcIixcbiAgICBcIlBST1BFUlwiLFxuICAgIFwiUFZcIixcbiAgICBcIlFVQVJUSUxFXCIsXG4gICAgXCJRVUFSVElMRS5FWENcIixcbiAgICBcIlFVQVJUSUxFLklOQ1wiLFxuICAgIFwiUVVPVElFTlRcIixcbiAgICBcIlJBRElBTlNcIixcbiAgICBcIlJBTkRcIixcbiAgICBcIlJBTkRBUlJBWVwiLFxuICAgIFwiUkFOREJFVFdFRU5cIixcbiAgICBcIlJBTksuQVZHXCIsXG4gICAgXCJSQU5LLkVRXCIsXG4gICAgXCJSQU5LXCIsXG4gICAgXCJSQVRFXCIsXG4gICAgXCJSRUNFSVZFRFwiLFxuICAgIFwiUkVEVUNFXCIsXG4gICAgXCJSRUdJU1RFUi5JRFwiLFxuICAgIFwiUkVQTEFDRVwiLFxuICAgIFwiUkVQTEFDRUJcIixcbiAgICBcIlJFUFRcIixcbiAgICBcIlJJR0hUXCIsXG4gICAgXCJSSUdIVEJcIixcbiAgICBcIlJPTUFOXCIsXG4gICAgXCJST1VORFwiLFxuICAgIFwiUk9VTkRET1dOXCIsXG4gICAgXCJST1VORFVQXCIsXG4gICAgXCJST1dcIixcbiAgICBcIlJPV1NcIixcbiAgICBcIlJSSVwiLFxuICAgIFwiUlNRXCIsXG4gICAgXCJSVERcIixcbiAgICBcIlNDQU5cIixcbiAgICBcIlNFQVJDSFwiLFxuICAgIFwiU0VBUkNIQlwiLFxuICAgIFwiU0VDXCIsXG4gICAgXCJTRUNIXCIsXG4gICAgXCJTRUNPTkRcIixcbiAgICBcIlNFUVVFTkNFXCIsXG4gICAgXCJTRVJJRVNTVU1cIixcbiAgICBcIlNIRUVUXCIsXG4gICAgXCJTSEVFVFNcIixcbiAgICBcIlNJR05cIixcbiAgICBcIlNJTlwiLFxuICAgIFwiU0lOSFwiLFxuICAgIFwiU0tFV1wiLFxuICAgIFwiU0tFVy5QXCIsXG4gICAgXCJTTE5cIixcbiAgICBcIlNMT1BFXCIsXG4gICAgXCJTTUFMTFwiLFxuICAgIFwiU09SVFwiLFxuICAgIFwiU09SVEJZXCIsXG4gICAgXCJTUVJUXCIsXG4gICAgXCJTUVJUUElcIixcbiAgICBcIlNRTC5SRVFVRVNUXCIsXG4gICAgXCJTVEFOREFSRElaRVwiLFxuICAgIFwiU1RPQ0tISVNUT1JZXCIsXG4gICAgXCJTVERFVlwiLFxuICAgIFwiU1RERVYuUFwiLFxuICAgIFwiU1RERVYuU1wiLFxuICAgIFwiU1RERVZBXCIsXG4gICAgXCJTVERFVlBcIixcbiAgICBcIlNUREVWUEFcIixcbiAgICBcIlNURVlYXCIsXG4gICAgXCJTVUJTVElUVVRFXCIsXG4gICAgXCJTVUJUT1RBTFwiLFxuICAgIFwiU1VNXCIsXG4gICAgXCJTVU1JRlwiLFxuICAgIFwiU1VNSUZTXCIsXG4gICAgXCJTVU1QUk9EVUNUXCIsXG4gICAgXCJTVU1TUVwiLFxuICAgIFwiU1VNWDJNWTJcIixcbiAgICBcIlNVTVgyUFkyXCIsXG4gICAgXCJTVU1YTVkyXCIsXG4gICAgXCJTV0lUQ0hcIixcbiAgICBcIlNZRFwiLFxuICAgIFwiVFwiLFxuICAgIFwiVEFOXCIsXG4gICAgXCJUQU5IXCIsXG4gICAgXCJUQUtFXCIsXG4gICAgXCJUQklMTEVRXCIsXG4gICAgXCJUQklMTFBSSUNFXCIsXG4gICAgXCJUQklMTFlJRUxEXCIsXG4gICAgXCJULkRJU1RcIixcbiAgICBcIlQuRElTVC4yVFwiLFxuICAgIFwiVC5ESVNULlJUXCIsXG4gICAgXCJURElTVFwiLFxuICAgIFwiVEVYVFwiLFxuICAgIFwiVEVYVEFGVEVSXCIsXG4gICAgXCJURVhUQkVGT1JFXCIsXG4gICAgXCJURVhUSk9JTlwiLFxuICAgIFwiVEVYVFNQTElUXCIsXG4gICAgXCJUSU1FXCIsXG4gICAgXCJUSU1FVkFMVUVcIixcbiAgICBcIlQuSU5WXCIsXG4gICAgXCJULklOVi4yVFwiLFxuICAgIFwiVElOVlwiLFxuICAgIFwiVE9DT0xcIixcbiAgICBcIlRPUk9XXCIsXG4gICAgXCJUT0RBWVwiLFxuICAgIFwiVFJBTlNQT1NFXCIsXG4gICAgXCJUUkVORFwiLFxuICAgIFwiVFJJTVwiLFxuICAgIFwiVFJJTU1FQU5cIixcbiAgICBcIlRSVUVcIixcbiAgICBcIlRSVU5DXCIsXG4gICAgXCJULlRFU1RcIixcbiAgICBcIlRURVNUXCIsXG4gICAgXCJUWVBFXCIsXG4gICAgXCJVTklDSEFSXCIsXG4gICAgXCJVTklDT0RFXCIsXG4gICAgXCJVTklRVUVcIixcbiAgICBcIlVQUEVSXCIsXG4gICAgXCJWQUxVRVwiLFxuICAgIFwiVkFMVUVUT1RFWFRcIixcbiAgICBcIlZBUlwiLFxuICAgIFwiVkFSLlBcIixcbiAgICBcIlZBUi5TXCIsXG4gICAgXCJWQVJBXCIsXG4gICAgXCJWQVJQXCIsXG4gICAgXCJWQVJQQVwiLFxuICAgIFwiVkRCXCIsXG4gICAgXCJWTE9PS1VQXCIsXG4gICAgXCJWU1RBQ0tcIixcbiAgICBcIldFQlNFUlZJQ0VcIixcbiAgICBcIldFRUtEQVlcIixcbiAgICBcIldFRUtOVU1cIixcbiAgICBcIldFSUJVTExcIixcbiAgICBcIldFSUJVTEwuRElTVFwiLFxuICAgIFwiV09SS0RBWVwiLFxuICAgIFwiV09SS0RBWS5JTlRMXCIsXG4gICAgXCJXUkFQQ09MU1wiLFxuICAgIFwiV1JBUFJPV1NcIixcbiAgICBcIlhJUlJcIixcbiAgICBcIlhMT09LVVBcIixcbiAgICBcIlhNQVRDSFwiLFxuICAgIFwiWE5QVlwiLFxuICAgIFwiWE9SXCIsXG4gICAgXCJZRUFSXCIsXG4gICAgXCJZRUFSRlJBQ1wiLFxuICAgIFwiWUlFTERcIixcbiAgICBcIllJRUxERElTQ1wiLFxuICAgIFwiWUlFTERNQVRcIixcbiAgICBcIlouVEVTVFwiLFxuICAgIFwiWlRFU1RcIlxuICBdO1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdFeGNlbCBmb3JtdWxhZScsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ3hsc3gnLFxuICAgICAgJ3hscydcbiAgICBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAvW2EtekEtWl1bXFx3XFwuXSovLFxuICAgICAgYnVpbHRfaW46IEJVSUxUX0lOU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIGJlZ2lubmluZyBlcXVhbCBzaWduIGZvdW5kIGluIEV4Y2VsIGZvcm11bGEgZXhhbXBsZXMgKi9cbiAgICAgICAgYmVnaW46IC9ePS8sXG4gICAgICAgIGVuZDogL1tePV0vLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6IC89LywgLyogb25seSBhbGxvdyBzaW5nbGUgZXF1YWwgc2lnbiBhdCBmcm9udCBvZiBsaW5lICovXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICAvKiB0ZWNobmljYWxseSwgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiAyIGxldHRlcnMgaW4gY29sdW1uIG5hbWVzLCBidXQgdGhpcyBwcmV2ZW50cyBjb25mbGljdCB3aXRoIHNvbWUga2V5d29yZHMgKi9cbiAgICAgIHtcbiAgICAgICAgLyogbWF0Y2hlcyBhIHJlZmVyZW5jZSB0byBhIHNpbmdsZSBjZWxsICovXG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvXFxiW0EtWl17MSwyfVxcZCtcXGIvLFxuICAgICAgICBlbmQ6IC9bXlxcZF0vLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIG1hdGNoZXMgYSByZWZlcmVuY2UgdG8gYSByYW5nZSBvZiBjZWxscyAqL1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL1tBLVpdezAsMn1cXGQqOltBLVpdezAsMn1cXGQqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJyglKT8nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICAvKiBFeGNlbCBmb3JtdWxhIGNvbW1lbnRzIGFyZSBkb25lIGJ5IHB1dHRpbmcgdGhlIGNvbW1lbnQgaW4gYSBmdW5jdGlvbiBjYWxsIHRvIE4oKSAqL1xuICAgICAgaGxqcy5DT01NRU5UKC9cXGJOXFwoLywgL1xcKS8sXG4gICAgICAgIHtcbiAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICBpbGxlZ2FsOiAvXFxuL1xuICAgICAgICB9KVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleGNlbDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1330\n')},1353:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n\n\n\nvar Schema = __webpack_require__(6415);\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n __webpack_require__(1961)\n ],\n explicit: [\n __webpack_require__(9091),\n __webpack_require__(8150),\n __webpack_require__(4391)\n ]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1My5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR2E7OztBQUdiLGFBQWEsbUJBQU8sQ0FBQyxJQUFXOzs7QUFHaEM7QUFDQTtBQUNBLElBQUksbUJBQU8sQ0FBQyxJQUFnQjtBQUM1QjtBQUNBO0FBQ0EsSUFBSSxtQkFBTyxDQUFDLElBQXNCO0FBQ2xDLElBQUksbUJBQU8sQ0FBQyxJQUFtQjtBQUMvQixJQUFJLG1CQUFPLENBQUMsSUFBcUI7QUFDakM7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzLXlhbWxAMy4xNC4xL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwuanM/NjVlYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBKUy1ZQU1MJ3MgZGVmYXVsdCBzY2hlbWEgZm9yIGBsb2FkYCBmdW5jdGlvbi5cbi8vIEl0IGlzIG5vdCBkZXNjcmliZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGlzIHNjaGVtYSBpcyBiYXNlZCBvbiBKUy1ZQU1MJ3MgZGVmYXVsdCBzYWZlIHNjaGVtYSBhbmQgaW5jbHVkZXNcbi8vIEphdmFTY3JpcHQtc3BlY2lmaWMgdHlwZXM6ICEhanMvdW5kZWZpbmVkLCAhIWpzL3JlZ2V4cCBhbmQgISFqcy9mdW5jdGlvbi5cbi8vXG4vLyBBbHNvIHRoaXMgc2NoZW1hIGlzIHVzZWQgYXMgZGVmYXVsdCBiYXNlIHNjaGVtYSBhdCBgU2NoZW1hLmNyZWF0ZWAgZnVuY3Rpb24uXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFNjaGVtYS5ERUZBVUxUID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2RlZmF1bHRfc2FmZScpXG4gIF0sXG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy91bmRlZmluZWQnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL3JlZ2V4cCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvZnVuY3Rpb24nKVxuICBdXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1353\n")},1356:function(module){eval("(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_583__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_583__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__nested_webpack_require_583__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_583__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_583__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_583__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __nested_webpack_require_1808__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __nested_webpack_require_1808__(1);\n\tvar jsx_parser_1 = __nested_webpack_require_1808__(3);\n\tvar parser_1 = __nested_webpack_require_1808__(8);\n\tvar tokenizer_1 = __nested_webpack_require_1808__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __nested_webpack_require_1808__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __nested_webpack_require_6456__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __nested_webpack_require_6456__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __nested_webpack_require_15019__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __nested_webpack_require_15019__(4);\n\tvar JSXNode = __nested_webpack_require_15019__(5);\n\tvar jsx_syntax_1 = __nested_webpack_require_15019__(6);\n\tvar Node = __nested_webpack_require_15019__(7);\n\tvar parser_1 = __nested_webpack_require_15019__(8);\n\tvar token_1 = __nested_webpack_require_15019__(13);\n\tvar xhtml_entities_1 = __nested_webpack_require_15019__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '{'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. 'A'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. 'A' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __nested_webpack_require_54354__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __nested_webpack_require_54354__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __nested_webpack_require_58416__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __nested_webpack_require_58416__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __nested_webpack_require_80491__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __nested_webpack_require_80491__(9);\n\tvar error_handler_1 = __nested_webpack_require_80491__(10);\n\tvar messages_1 = __nested_webpack_require_80491__(11);\n\tvar Node = __nested_webpack_require_80491__(7);\n\tvar scanner_1 = __nested_webpack_require_80491__(12);\n\tvar syntax_1 = __nested_webpack_require_80491__(2);\n\tvar token_1 = __nested_webpack_require_80491__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __nested_webpack_require_226595__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __nested_webpack_require_226595__(9);\n\tvar character_1 = __nested_webpack_require_226595__(4);\n\tvar messages_1 = __nested_webpack_require_226595__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '--\x3e' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `\x3c!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __nested_webpack_require_277122__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __nested_webpack_require_277122__(10);\n\tvar scanner_1 = __nested_webpack_require_277122__(12);\n\tvar token_1 = __nested_webpack_require_277122__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1Ni5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsSUFBSSxJQUF5RDtBQUM3RDtBQUNBLE1BQU0sRUFNd0I7QUFDOUIsQ0FBQztBQUNELHFDQUFxQztBQUNyQztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLDhCQUFtQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwRUFBMEUsOEJBQW1COztBQUU3RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxVQUFVLDhCQUFtQjs7QUFFN0I7QUFDQSxVQUFVLDhCQUFtQjs7QUFFN0I7QUFDQSxVQUFVLDhCQUFtQjs7QUFFN0I7QUFDQSxpQkFBaUIsOEJBQW1CO0FBQ3BDLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsK0JBQW1COztBQUVuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxhQUFhO0FBQzdELHlCQUF5QiwrQkFBbUI7QUFDNUMsb0JBQW9CLCtCQUFtQjtBQUN2QyxnQkFBZ0IsK0JBQW1CO0FBQ25DLG1CQUFtQiwrQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLCtCQUFtQjtBQUNuQztBQUNBO0FBQ0E7OztBQUdBLE9BQU87QUFDUDtBQUNBLGdDQUFnQywrQkFBbUI7O0FBRW5EO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0QsZ0JBQWdCLCtCQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrQkFBa0I7QUFDOUM7QUFDQTtBQUNBLG1EQUFtRCxRQUFRO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxRQUFRO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxRQUFRO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxPQUFPO0FBQ1A7QUFDQSxnQ0FBZ0MsZ0NBQW1COztBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0JBQWdCLHNDQUFzQyxrQkFBa0I7QUFDcEYsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLEVBQUU7QUFDRixnREFBZ0QsYUFBYTtBQUM3RCxtQkFBbUIsZ0NBQW1CO0FBQ3RDLGVBQWUsZ0NBQW1CO0FBQ2xDLG9CQUFvQixnQ0FBbUI7QUFDdkMsWUFBWSxnQ0FBbUI7QUFDL0IsZ0JBQWdCLGdDQUFtQjtBQUNuQyxlQUFlLGdDQUFtQjtBQUNsQyx3QkFBd0IsZ0NBQW1CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxvRUFBb0U7QUFDeEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUMsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QyxNQUFNO0FBQ047QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTs7O0FBR0EsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGdDQUFtQjs7QUFFbkQ7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RCxvQkFBb0IsZ0NBQW1CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxnQ0FBbUI7O0FBRW5EO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0QsZ0JBQWdCLGdDQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBLE9BQU87QUFDUDtBQUNBLGdDQUFnQyxnQ0FBbUI7O0FBRW5EO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0QsZ0JBQWdCLGdDQUFtQjtBQUNuQyx1QkFBdUIsZ0NBQW1CO0FBQzFDLGtCQUFrQixnQ0FBbUI7QUFDckMsWUFBWSxnQ0FBbUI7QUFDL0IsaUJBQWlCLGdDQUFtQjtBQUNwQyxnQkFBZ0IsZ0NBQW1CO0FBQ25DLGVBQWUsZ0NBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsdUJBQXVCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix1QkFBdUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMscUJBQXFCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUFBNkU7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBLDBCQUEwQjtBQUMxQiw4QkFBOEI7QUFDOUI7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCwwQkFBMEI7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELDBCQUEwQjtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywwQkFBMEI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsNEJBQTRCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qyx3QkFBd0I7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsd0JBQXdCO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCw2QkFBNkI7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsaUJBQWlCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywyQkFBMkI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDZCQUE2QjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixtQkFBbUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLGNBQWM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhGQUE4RixjQUFjO0FBQzVHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDhCQUE4QjtBQUM5QjtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLGNBQWM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsYUFBYTtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsYUFBYTtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxvQkFBb0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsbUVBQW1FO0FBQy9IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLHVCQUF1QjtBQUN2Qiw4QkFBOEI7QUFDOUIsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsY0FBYztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQixrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSw0QkFBNEIsU0FBUztBQUNyQyw0QkFBNEIsS0FBSztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFVBQVU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdEQUFnRCxhQUFhO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELGVBQWU7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0EsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQ7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RCxnQkFBZ0IsaUNBQW1CO0FBQ25DLG1CQUFtQixpQ0FBbUI7QUFDdEMsa0JBQWtCLGlDQUFtQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixTQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQiwrQkFBK0I7QUFDL0IsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxpQkFBaUI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDtBQUNuRCw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsTUFBTSxJQUFJLE1BQU07QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGdCQUFnQixpQkFBaUIsRUFBRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxzQkFBc0I7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQiwrRkFBK0Y7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0RBQWdELGFBQWE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0EsT0FBTztBQUNQO0FBQ0EsZ0NBQWdDLGlDQUFtQjs7QUFFbkQ7QUFDQSxnREFBZ0QsYUFBYTtBQUM3RCx1QkFBdUIsaUNBQW1CO0FBQzFDLGlCQUFpQixpQ0FBbUI7QUFDcEMsZUFBZSxpQ0FBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMscUJBQXFCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vZXNwcmltYUA0LjAuMS9ub2RlX21vZHVsZXMvZXNwcmltYS9kaXN0L2VzcHJpbWEuanM/YWYxMiJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImVzcHJpbWFcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiZXNwcmltYVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcblxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cblxuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHQvKlxuXHQgIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMsIGh0dHBzOi8vanMuZm91bmRhdGlvbi9cblxuXHQgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuXHQgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG5cdCAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG5cdCAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblx0ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcblx0ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuXHQgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG5cdCAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcblx0ICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFXG5cdCAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Vcblx0ICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZXG5cdCAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcblx0ICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7XG5cdCAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EXG5cdCAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcblx0ICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Zcblx0ICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuXHQqL1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cdHZhciBjb21tZW50X2hhbmRsZXJfMSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBqc3hfcGFyc2VyXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHR2YXIgcGFyc2VyXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgdG9rZW5pemVyXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0ZnVuY3Rpb24gcGFyc2UoY29kZSwgb3B0aW9ucywgZGVsZWdhdGUpIHtcblx0ICAgIHZhciBjb21tZW50SGFuZGxlciA9IG51bGw7XG5cdCAgICB2YXIgcHJveHlEZWxlZ2F0ZSA9IGZ1bmN0aW9uIChub2RlLCBtZXRhZGF0YSkge1xuXHQgICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuXHQgICAgICAgICAgICBkZWxlZ2F0ZShub2RlLCBtZXRhZGF0YSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChjb21tZW50SGFuZGxlcikge1xuXHQgICAgICAgICAgICBjb21tZW50SGFuZGxlci52aXNpdChub2RlLCBtZXRhZGF0YSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIHZhciBwYXJzZXJEZWxlZ2F0ZSA9ICh0eXBlb2YgZGVsZWdhdGUgPT09ICdmdW5jdGlvbicpID8gcHJveHlEZWxlZ2F0ZSA6IG51bGw7XG5cdCAgICB2YXIgY29sbGVjdENvbW1lbnQgPSBmYWxzZTtcblx0ICAgIGlmIChvcHRpb25zKSB7XG5cdCAgICAgICAgY29sbGVjdENvbW1lbnQgPSAodHlwZW9mIG9wdGlvbnMuY29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMuY29tbWVudCk7XG5cdCAgICAgICAgdmFyIGF0dGFjaENvbW1lbnQgPSAodHlwZW9mIG9wdGlvbnMuYXR0YWNoQ29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMuYXR0YWNoQ29tbWVudCk7XG5cdCAgICAgICAgaWYgKGNvbGxlY3RDb21tZW50IHx8IGF0dGFjaENvbW1lbnQpIHtcblx0ICAgICAgICAgICAgY29tbWVudEhhbmRsZXIgPSBuZXcgY29tbWVudF9oYW5kbGVyXzEuQ29tbWVudEhhbmRsZXIoKTtcblx0ICAgICAgICAgICAgY29tbWVudEhhbmRsZXIuYXR0YWNoID0gYXR0YWNoQ29tbWVudDtcblx0ICAgICAgICAgICAgb3B0aW9ucy5jb21tZW50ID0gdHJ1ZTtcblx0ICAgICAgICAgICAgcGFyc2VyRGVsZWdhdGUgPSBwcm94eURlbGVnYXRlO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0ICAgIHZhciBpc01vZHVsZSA9IGZhbHNlO1xuXHQgICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMuc291cmNlVHlwZSA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICBpc01vZHVsZSA9IChvcHRpb25zLnNvdXJjZVR5cGUgPT09ICdtb2R1bGUnKTtcblx0ICAgIH1cblx0ICAgIHZhciBwYXJzZXI7XG5cdCAgICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5qc3ggPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmpzeCkge1xuXHQgICAgICAgIHBhcnNlciA9IG5ldyBqc3hfcGFyc2VyXzEuSlNYUGFyc2VyKGNvZGUsIG9wdGlvbnMsIHBhcnNlckRlbGVnYXRlKTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICAgIHBhcnNlciA9IG5ldyBwYXJzZXJfMS5QYXJzZXIoY29kZSwgb3B0aW9ucywgcGFyc2VyRGVsZWdhdGUpO1xuXHQgICAgfVxuXHQgICAgdmFyIHByb2dyYW0gPSBpc01vZHVsZSA/IHBhcnNlci5wYXJzZU1vZHVsZSgpIDogcGFyc2VyLnBhcnNlU2NyaXB0KCk7XG5cdCAgICB2YXIgYXN0ID0gcHJvZ3JhbTtcblx0ICAgIGlmIChjb2xsZWN0Q29tbWVudCAmJiBjb21tZW50SGFuZGxlcikge1xuXHQgICAgICAgIGFzdC5jb21tZW50cyA9IGNvbW1lbnRIYW5kbGVyLmNvbW1lbnRzO1xuXHQgICAgfVxuXHQgICAgaWYgKHBhcnNlci5jb25maWcudG9rZW5zKSB7XG5cdCAgICAgICAgYXN0LnRva2VucyA9IHBhcnNlci50b2tlbnM7XG5cdCAgICB9XG5cdCAgICBpZiAocGFyc2VyLmNvbmZpZy50b2xlcmFudCkge1xuXHQgICAgICAgIGFzdC5lcnJvcnMgPSBwYXJzZXIuZXJyb3JIYW5kbGVyLmVycm9ycztcblx0ICAgIH1cblx0ICAgIHJldHVybiBhc3Q7XG5cdH1cblx0ZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuXHRmdW5jdGlvbiBwYXJzZU1vZHVsZShjb2RlLCBvcHRpb25zLCBkZWxlZ2F0ZSkge1xuXHQgICAgdmFyIHBhcnNpbmdPcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0ICAgIHBhcnNpbmdPcHRpb25zLnNvdXJjZVR5cGUgPSAnbW9kdWxlJztcblx0ICAgIHJldHVybiBwYXJzZShjb2RlLCBwYXJzaW5nT3B0aW9ucywgZGVsZWdhdGUpO1xuXHR9XG5cdGV4cG9ydHMucGFyc2VNb2R1bGUgPSBwYXJzZU1vZHVsZTtcblx0ZnVuY3Rpb24gcGFyc2VTY3JpcHQoY29kZSwgb3B0aW9ucywgZGVsZWdhdGUpIHtcblx0ICAgIHZhciBwYXJzaW5nT3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cdCAgICBwYXJzaW5nT3B0aW9ucy5zb3VyY2VUeXBlID0gJ3NjcmlwdCc7XG5cdCAgICByZXR1cm4gcGFyc2UoY29kZSwgcGFyc2luZ09wdGlvbnMsIGRlbGVnYXRlKTtcblx0fVxuXHRleHBvcnRzLnBhcnNlU2NyaXB0ID0gcGFyc2VTY3JpcHQ7XG5cdGZ1bmN0aW9uIHRva2VuaXplKGNvZGUsIG9wdGlvbnMsIGRlbGVnYXRlKSB7XG5cdCAgICB2YXIgdG9rZW5pemVyID0gbmV3IHRva2VuaXplcl8xLlRva2VuaXplcihjb2RlLCBvcHRpb25zKTtcblx0ICAgIHZhciB0b2tlbnM7XG5cdCAgICB0b2tlbnMgPSBbXTtcblx0ICAgIHRyeSB7XG5cdCAgICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICAgICAgdmFyIHRva2VuID0gdG9rZW5pemVyLmdldE5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICBpZiAoIXRva2VuKSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoZGVsZWdhdGUpIHtcblx0ICAgICAgICAgICAgICAgIHRva2VuID0gZGVsZWdhdGUodG9rZW4pO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdCAgICBjYXRjaCAoZSkge1xuXHQgICAgICAgIHRva2VuaXplci5lcnJvckhhbmRsZXIudG9sZXJhdGUoZSk7XG5cdCAgICB9XG5cdCAgICBpZiAodG9rZW5pemVyLmVycm9ySGFuZGxlci50b2xlcmFudCkge1xuXHQgICAgICAgIHRva2Vucy5lcnJvcnMgPSB0b2tlbml6ZXIuZXJyb3JzKCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gdG9rZW5zO1xuXHR9XG5cdGV4cG9ydHMudG9rZW5pemUgPSB0b2tlbml6ZTtcblx0dmFyIHN5bnRheF8xID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0ZXhwb3J0cy5TeW50YXggPSBzeW50YXhfMS5TeW50YXg7XG5cdC8vIFN5bmMgd2l0aCAqLmpzb24gbWFuaWZlc3RzLlxuXHRleHBvcnRzLnZlcnNpb24gPSAnNC4wLjEnO1xuXG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuXHR2YXIgc3ludGF4XzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIgQ29tbWVudEhhbmRsZXIgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQ29tbWVudEhhbmRsZXIoKSB7XG5cdCAgICAgICAgdGhpcy5hdHRhY2ggPSBmYWxzZTtcblx0ICAgICAgICB0aGlzLmNvbW1lbnRzID0gW107XG5cdCAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuXHQgICAgICAgIHRoaXMubGVhZGluZyA9IFtdO1xuXHQgICAgICAgIHRoaXMudHJhaWxpbmcgPSBbXTtcblx0ICAgIH1cblx0ICAgIENvbW1lbnRIYW5kbGVyLnByb3RvdHlwZS5pbnNlcnRJbm5lckNvbW1lbnRzID0gZnVuY3Rpb24gKG5vZGUsIG1ldGFkYXRhKSB7XG5cdCAgICAgICAgLy8gIGlubm5lckNvbW1lbnRzIGZvciBwcm9wZXJ0aWVzIGVtcHR5IGJsb2NrXG5cdCAgICAgICAgLy8gIGBmdW5jdGlvbiBhKCkgey8qKiBjb21tZW50cyAqKlxcL31gXG5cdCAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gc3ludGF4XzEuU3ludGF4LkJsb2NrU3RhdGVtZW50ICYmIG5vZGUuYm9keS5sZW5ndGggPT09IDApIHtcblx0ICAgICAgICAgICAgdmFyIGlubmVyQ29tbWVudHMgPSBbXTtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMubGVhZGluZy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5sZWFkaW5nW2ldO1xuXHQgICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmVuZC5vZmZzZXQgPj0gZW50cnkuc3RhcnQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbm5lckNvbW1lbnRzLnVuc2hpZnQoZW50cnkuY29tbWVudCk7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWFkaW5nLnNwbGljZShpLCAxKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWlsaW5nLnNwbGljZShpLCAxKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoaW5uZXJDb21tZW50cy5sZW5ndGgpIHtcblx0ICAgICAgICAgICAgICAgIG5vZGUuaW5uZXJDb21tZW50cyA9IGlubmVyQ29tbWVudHM7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgQ29tbWVudEhhbmRsZXIucHJvdG90eXBlLmZpbmRUcmFpbGluZ0NvbW1lbnRzID0gZnVuY3Rpb24gKG1ldGFkYXRhKSB7XG5cdCAgICAgICAgdmFyIHRyYWlsaW5nQ29tbWVudHMgPSBbXTtcblx0ICAgICAgICBpZiAodGhpcy50cmFpbGluZy5sZW5ndGggPiAwKSB7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyYWlsaW5nLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgZW50cnlfMSA9IHRoaXMudHJhaWxpbmdbaV07XG5cdCAgICAgICAgICAgICAgICBpZiAoZW50cnlfMS5zdGFydCA+PSBtZXRhZGF0YS5lbmQub2Zmc2V0KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cy51bnNoaWZ0KGVudHJ5XzEuY29tbWVudCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy50cmFpbGluZy5sZW5ndGggPSAwO1xuXHQgICAgICAgICAgICByZXR1cm4gdHJhaWxpbmdDb21tZW50cztcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdO1xuXHQgICAgICAgIGlmIChlbnRyeSAmJiBlbnRyeS5ub2RlLnRyYWlsaW5nQ29tbWVudHMpIHtcblx0ICAgICAgICAgICAgdmFyIGZpcnN0Q29tbWVudCA9IGVudHJ5Lm5vZGUudHJhaWxpbmdDb21tZW50c1swXTtcblx0ICAgICAgICAgICAgaWYgKGZpcnN0Q29tbWVudCAmJiBmaXJzdENvbW1lbnQucmFuZ2VbMF0gPj0gbWV0YWRhdGEuZW5kLm9mZnNldCkge1xuXHQgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGVudHJ5Lm5vZGUudHJhaWxpbmdDb21tZW50cztcblx0ICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5ub2RlLnRyYWlsaW5nQ29tbWVudHM7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRyYWlsaW5nQ29tbWVudHM7XG5cdCAgICB9O1xuXHQgICAgQ29tbWVudEhhbmRsZXIucHJvdG90eXBlLmZpbmRMZWFkaW5nQ29tbWVudHMgPSBmdW5jdGlvbiAobWV0YWRhdGEpIHtcblx0ICAgICAgICB2YXIgbGVhZGluZ0NvbW1lbnRzID0gW107XG5cdCAgICAgICAgdmFyIHRhcmdldDtcblx0ICAgICAgICB3aGlsZSAodGhpcy5zdGFjay5sZW5ndGggPiAwKSB7XG5cdCAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcblx0ICAgICAgICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5LnN0YXJ0ID49IG1ldGFkYXRhLnN0YXJ0Lm9mZnNldCkge1xuXHQgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZW50cnkubm9kZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGFyZ2V0KSB7XG5cdCAgICAgICAgICAgIHZhciBjb3VudCA9IHRhcmdldC5sZWFkaW5nQ29tbWVudHMgPyB0YXJnZXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA6IDA7XG5cdCAgICAgICAgICAgIGZvciAodmFyIGkgPSBjb3VudCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgY29tbWVudCA9IHRhcmdldC5sZWFkaW5nQ29tbWVudHNbaV07XG5cdCAgICAgICAgICAgICAgICBpZiAoY29tbWVudC5yYW5nZVsxXSA8PSBtZXRhZGF0YS5zdGFydC5vZmZzZXQpIHtcblx0ICAgICAgICAgICAgICAgICAgICBsZWFkaW5nQ29tbWVudHMudW5zaGlmdChjb21tZW50KTtcblx0ICAgICAgICAgICAgICAgICAgICB0YXJnZXQubGVhZGluZ0NvbW1lbnRzLnNwbGljZShpLCAxKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAodGFyZ2V0LmxlYWRpbmdDb21tZW50cyAmJiB0YXJnZXQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgICAgICAgICAgICAgZGVsZXRlIHRhcmdldC5sZWFkaW5nQ29tbWVudHM7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgcmV0dXJuIGxlYWRpbmdDb21tZW50cztcblx0ICAgICAgICB9XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMubGVhZGluZy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLmxlYWRpbmdbaV07XG5cdCAgICAgICAgICAgIGlmIChlbnRyeS5zdGFydCA8PSBtZXRhZGF0YS5zdGFydC5vZmZzZXQpIHtcblx0ICAgICAgICAgICAgICAgIGxlYWRpbmdDb21tZW50cy51bnNoaWZ0KGVudHJ5LmNvbW1lbnQpO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5sZWFkaW5nLnNwbGljZShpLCAxKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gbGVhZGluZ0NvbW1lbnRzO1xuXHQgICAgfTtcblx0ICAgIENvbW1lbnRIYW5kbGVyLnByb3RvdHlwZS52aXNpdE5vZGUgPSBmdW5jdGlvbiAobm9kZSwgbWV0YWRhdGEpIHtcblx0ICAgICAgICBpZiAobm9kZS50eXBlID09PSBzeW50YXhfMS5TeW50YXguUHJvZ3JhbSAmJiBub2RlLmJvZHkubGVuZ3RoID4gMCkge1xuXHQgICAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuaW5zZXJ0SW5uZXJDb21tZW50cyhub2RlLCBtZXRhZGF0YSk7XG5cdCAgICAgICAgdmFyIHRyYWlsaW5nQ29tbWVudHMgPSB0aGlzLmZpbmRUcmFpbGluZ0NvbW1lbnRzKG1ldGFkYXRhKTtcblx0ICAgICAgICB2YXIgbGVhZGluZ0NvbW1lbnRzID0gdGhpcy5maW5kTGVhZGluZ0NvbW1lbnRzKG1ldGFkYXRhKTtcblx0ICAgICAgICBpZiAobGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA+IDApIHtcblx0ICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBsZWFkaW5nQ29tbWVudHM7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICh0cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA+IDApIHtcblx0ICAgICAgICAgICAgbm9kZS50cmFpbGluZ0NvbW1lbnRzID0gdHJhaWxpbmdDb21tZW50cztcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcblx0ICAgICAgICAgICAgbm9kZTogbm9kZSxcblx0ICAgICAgICAgICAgc3RhcnQ6IG1ldGFkYXRhLnN0YXJ0Lm9mZnNldFxuXHQgICAgICAgIH0pO1xuXHQgICAgfTtcblx0ICAgIENvbW1lbnRIYW5kbGVyLnByb3RvdHlwZS52aXNpdENvbW1lbnQgPSBmdW5jdGlvbiAobm9kZSwgbWV0YWRhdGEpIHtcblx0ICAgICAgICB2YXIgdHlwZSA9IChub2RlLnR5cGVbMF0gPT09ICdMJykgPyAnTGluZScgOiAnQmxvY2snO1xuXHQgICAgICAgIHZhciBjb21tZW50ID0ge1xuXHQgICAgICAgICAgICB0eXBlOiB0eXBlLFxuXHQgICAgICAgICAgICB2YWx1ZTogbm9kZS52YWx1ZVxuXHQgICAgICAgIH07XG5cdCAgICAgICAgaWYgKG5vZGUucmFuZ2UpIHtcblx0ICAgICAgICAgICAgY29tbWVudC5yYW5nZSA9IG5vZGUucmFuZ2U7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChub2RlLmxvYykge1xuXHQgICAgICAgICAgICBjb21tZW50LmxvYyA9IG5vZGUubG9jO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmNvbW1lbnRzLnB1c2goY29tbWVudCk7XG5cdCAgICAgICAgaWYgKHRoaXMuYXR0YWNoKSB7XG5cdCAgICAgICAgICAgIHZhciBlbnRyeSA9IHtcblx0ICAgICAgICAgICAgICAgIGNvbW1lbnQ6IHtcblx0ICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuXHQgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBub2RlLnZhbHVlLFxuXHQgICAgICAgICAgICAgICAgICAgIHJhbmdlOiBbbWV0YWRhdGEuc3RhcnQub2Zmc2V0LCBtZXRhZGF0YS5lbmQub2Zmc2V0XVxuXHQgICAgICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAgICAgIHN0YXJ0OiBtZXRhZGF0YS5zdGFydC5vZmZzZXRcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgaWYgKG5vZGUubG9jKSB7XG5cdCAgICAgICAgICAgICAgICBlbnRyeS5jb21tZW50LmxvYyA9IG5vZGUubG9jO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIG5vZGUudHlwZSA9IHR5cGU7XG5cdCAgICAgICAgICAgIHRoaXMubGVhZGluZy5wdXNoKGVudHJ5KTtcblx0ICAgICAgICAgICAgdGhpcy50cmFpbGluZy5wdXNoKGVudHJ5KTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgQ29tbWVudEhhbmRsZXIucHJvdG90eXBlLnZpc2l0ID0gZnVuY3Rpb24gKG5vZGUsIG1ldGFkYXRhKSB7XG5cdCAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0xpbmVDb21tZW50Jykge1xuXHQgICAgICAgICAgICB0aGlzLnZpc2l0Q29tbWVudChub2RlLCBtZXRhZGF0YSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ0Jsb2NrQ29tbWVudCcpIHtcblx0ICAgICAgICAgICAgdGhpcy52aXNpdENvbW1lbnQobm9kZSwgbWV0YWRhdGEpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICh0aGlzLmF0dGFjaCkge1xuXHQgICAgICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLCBtZXRhZGF0YSk7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIHJldHVybiBDb21tZW50SGFuZGxlcjtcblx0fSgpKTtcblx0ZXhwb3J0cy5Db21tZW50SGFuZGxlciA9IENvbW1lbnRIYW5kbGVyO1xuXG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuXHRleHBvcnRzLlN5bnRheCA9IHtcblx0ICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAnQXNzaWdubWVudEV4cHJlc3Npb24nLFxuXHQgICAgQXNzaWdubWVudFBhdHRlcm46ICdBc3NpZ25tZW50UGF0dGVybicsXG5cdCAgICBBcnJheUV4cHJlc3Npb246ICdBcnJheUV4cHJlc3Npb24nLFxuXHQgICAgQXJyYXlQYXR0ZXJuOiAnQXJyYXlQYXR0ZXJuJyxcblx0ICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nLFxuXHQgICAgQXdhaXRFeHByZXNzaW9uOiAnQXdhaXRFeHByZXNzaW9uJyxcblx0ICAgIEJsb2NrU3RhdGVtZW50OiAnQmxvY2tTdGF0ZW1lbnQnLFxuXHQgICAgQmluYXJ5RXhwcmVzc2lvbjogJ0JpbmFyeUV4cHJlc3Npb24nLFxuXHQgICAgQnJlYWtTdGF0ZW1lbnQ6ICdCcmVha1N0YXRlbWVudCcsXG5cdCAgICBDYWxsRXhwcmVzc2lvbjogJ0NhbGxFeHByZXNzaW9uJyxcblx0ICAgIENhdGNoQ2xhdXNlOiAnQ2F0Y2hDbGF1c2UnLFxuXHQgICAgQ2xhc3NCb2R5OiAnQ2xhc3NCb2R5Jyxcblx0ICAgIENsYXNzRGVjbGFyYXRpb246ICdDbGFzc0RlY2xhcmF0aW9uJyxcblx0ICAgIENsYXNzRXhwcmVzc2lvbjogJ0NsYXNzRXhwcmVzc2lvbicsXG5cdCAgICBDb25kaXRpb25hbEV4cHJlc3Npb246ICdDb25kaXRpb25hbEV4cHJlc3Npb24nLFxuXHQgICAgQ29udGludWVTdGF0ZW1lbnQ6ICdDb250aW51ZVN0YXRlbWVudCcsXG5cdCAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsXG5cdCAgICBEZWJ1Z2dlclN0YXRlbWVudDogJ0RlYnVnZ2VyU3RhdGVtZW50Jyxcblx0ICAgIEVtcHR5U3RhdGVtZW50OiAnRW1wdHlTdGF0ZW1lbnQnLFxuXHQgICAgRXhwb3J0QWxsRGVjbGFyYXRpb246ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicsXG5cdCAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb246ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nLFxuXHQgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbjogJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nLFxuXHQgICAgRXhwb3J0U3BlY2lmaWVyOiAnRXhwb3J0U3BlY2lmaWVyJyxcblx0ICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6ICdFeHByZXNzaW9uU3RhdGVtZW50Jyxcblx0ICAgIEZvclN0YXRlbWVudDogJ0ZvclN0YXRlbWVudCcsXG5cdCAgICBGb3JPZlN0YXRlbWVudDogJ0Zvck9mU3RhdGVtZW50Jyxcblx0ICAgIEZvckluU3RhdGVtZW50OiAnRm9ySW5TdGF0ZW1lbnQnLFxuXHQgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogJ0Z1bmN0aW9uRGVjbGFyYXRpb24nLFxuXHQgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAnRnVuY3Rpb25FeHByZXNzaW9uJyxcblx0ICAgIElkZW50aWZpZXI6ICdJZGVudGlmaWVyJyxcblx0ICAgIElmU3RhdGVtZW50OiAnSWZTdGF0ZW1lbnQnLFxuXHQgICAgSW1wb3J0RGVjbGFyYXRpb246ICdJbXBvcnREZWNsYXJhdGlvbicsXG5cdCAgICBJbXBvcnREZWZhdWx0U3BlY2lmaWVyOiAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcicsXG5cdCAgICBJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXI6ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInLFxuXHQgICAgSW1wb3J0U3BlY2lmaWVyOiAnSW1wb3J0U3BlY2lmaWVyJyxcblx0ICAgIExpdGVyYWw6ICdMaXRlcmFsJyxcblx0ICAgIExhYmVsZWRTdGF0ZW1lbnQ6ICdMYWJlbGVkU3RhdGVtZW50Jyxcblx0ICAgIExvZ2ljYWxFeHByZXNzaW9uOiAnTG9naWNhbEV4cHJlc3Npb24nLFxuXHQgICAgTWVtYmVyRXhwcmVzc2lvbjogJ01lbWJlckV4cHJlc3Npb24nLFxuXHQgICAgTWV0YVByb3BlcnR5OiAnTWV0YVByb3BlcnR5Jyxcblx0ICAgIE1ldGhvZERlZmluaXRpb246ICdNZXRob2REZWZpbml0aW9uJyxcblx0ICAgIE5ld0V4cHJlc3Npb246ICdOZXdFeHByZXNzaW9uJyxcblx0ICAgIE9iamVjdEV4cHJlc3Npb246ICdPYmplY3RFeHByZXNzaW9uJyxcblx0ICAgIE9iamVjdFBhdHRlcm46ICdPYmplY3RQYXR0ZXJuJyxcblx0ICAgIFByb2dyYW06ICdQcm9ncmFtJyxcblx0ICAgIFByb3BlcnR5OiAnUHJvcGVydHknLFxuXHQgICAgUmVzdEVsZW1lbnQ6ICdSZXN0RWxlbWVudCcsXG5cdCAgICBSZXR1cm5TdGF0ZW1lbnQ6ICdSZXR1cm5TdGF0ZW1lbnQnLFxuXHQgICAgU2VxdWVuY2VFeHByZXNzaW9uOiAnU2VxdWVuY2VFeHByZXNzaW9uJyxcblx0ICAgIFNwcmVhZEVsZW1lbnQ6ICdTcHJlYWRFbGVtZW50Jyxcblx0ICAgIFN1cGVyOiAnU3VwZXInLFxuXHQgICAgU3dpdGNoQ2FzZTogJ1N3aXRjaENhc2UnLFxuXHQgICAgU3dpdGNoU3RhdGVtZW50OiAnU3dpdGNoU3RhdGVtZW50Jyxcblx0ICAgIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogJ1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbicsXG5cdCAgICBUZW1wbGF0ZUVsZW1lbnQ6ICdUZW1wbGF0ZUVsZW1lbnQnLFxuXHQgICAgVGVtcGxhdGVMaXRlcmFsOiAnVGVtcGxhdGVMaXRlcmFsJyxcblx0ICAgIFRoaXNFeHByZXNzaW9uOiAnVGhpc0V4cHJlc3Npb24nLFxuXHQgICAgVGhyb3dTdGF0ZW1lbnQ6ICdUaHJvd1N0YXRlbWVudCcsXG5cdCAgICBUcnlTdGF0ZW1lbnQ6ICdUcnlTdGF0ZW1lbnQnLFxuXHQgICAgVW5hcnlFeHByZXNzaW9uOiAnVW5hcnlFeHByZXNzaW9uJyxcblx0ICAgIFVwZGF0ZUV4cHJlc3Npb246ICdVcGRhdGVFeHByZXNzaW9uJyxcblx0ICAgIFZhcmlhYmxlRGVjbGFyYXRpb246ICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcblx0ICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogJ1ZhcmlhYmxlRGVjbGFyYXRvcicsXG5cdCAgICBXaGlsZVN0YXRlbWVudDogJ1doaWxlU3RhdGVtZW50Jyxcblx0ICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50Jyxcblx0ICAgIFlpZWxkRXhwcmVzc2lvbjogJ1lpZWxkRXhwcmVzc2lvbidcblx0fTtcblxuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHR2YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuXHQgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcblx0ICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcblx0ICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuXHQgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG5cdCAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG5cdCAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuXHQgICAgfTtcblx0fSkoKTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuXHR2YXIgY2hhcmFjdGVyXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHR2YXIgSlNYTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBqc3hfc3ludGF4XzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciBwYXJzZXJfMSA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdHZhciB0b2tlbl8xID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdHZhciB4aHRtbF9lbnRpdGllc18xID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cdHRva2VuXzEuVG9rZW5OYW1lWzEwMCAvKiBJZGVudGlmaWVyICovXSA9ICdKU1hJZGVudGlmaWVyJztcblx0dG9rZW5fMS5Ub2tlbk5hbWVbMTAxIC8qIFRleHQgKi9dID0gJ0pTWFRleHQnO1xuXHQvLyBGdWxseSBxdWFsaWZpZWQgZWxlbWVudCBuYW1lLCBlLmcuIDxzdmc6cGF0aD4gcmV0dXJucyBcInN2ZzpwYXRoXCJcblx0ZnVuY3Rpb24gZ2V0UXVhbGlmaWVkRWxlbWVudE5hbWUoZWxlbWVudE5hbWUpIHtcblx0ICAgIHZhciBxdWFsaWZpZWROYW1lO1xuXHQgICAgc3dpdGNoIChlbGVtZW50TmFtZS50eXBlKSB7XG5cdCAgICAgICAgY2FzZSBqc3hfc3ludGF4XzEuSlNYU3ludGF4LkpTWElkZW50aWZpZXI6XG5cdCAgICAgICAgICAgIHZhciBpZCA9IGVsZW1lbnROYW1lO1xuXHQgICAgICAgICAgICBxdWFsaWZpZWROYW1lID0gaWQubmFtZTtcblx0ICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgY2FzZSBqc3hfc3ludGF4XzEuSlNYU3ludGF4LkpTWE5hbWVzcGFjZWROYW1lOlxuXHQgICAgICAgICAgICB2YXIgbnMgPSBlbGVtZW50TmFtZTtcblx0ICAgICAgICAgICAgcXVhbGlmaWVkTmFtZSA9IGdldFF1YWxpZmllZEVsZW1lbnROYW1lKG5zLm5hbWVzcGFjZSkgKyAnOicgK1xuXHQgICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVkRWxlbWVudE5hbWUobnMubmFtZSk7XG5cdCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIGNhc2UganN4X3N5bnRheF8xLkpTWFN5bnRheC5KU1hNZW1iZXJFeHByZXNzaW9uOlxuXHQgICAgICAgICAgICB2YXIgZXhwciA9IGVsZW1lbnROYW1lO1xuXHQgICAgICAgICAgICBxdWFsaWZpZWROYW1lID0gZ2V0UXVhbGlmaWVkRWxlbWVudE5hbWUoZXhwci5vYmplY3QpICsgJy4nICtcblx0ICAgICAgICAgICAgICAgIGdldFF1YWxpZmllZEVsZW1lbnROYW1lKGV4cHIucHJvcGVydHkpO1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHQgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHF1YWxpZmllZE5hbWU7XG5cdH1cblx0dmFyIEpTWFBhcnNlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG5cdCAgICBfX2V4dGVuZHMoSlNYUGFyc2VyLCBfc3VwZXIpO1xuXHQgICAgZnVuY3Rpb24gSlNYUGFyc2VyKGNvZGUsIG9wdGlvbnMsIGRlbGVnYXRlKSB7XG5cdCAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvZGUsIG9wdGlvbnMsIGRlbGVnYXRlKSB8fCB0aGlzO1xuXHQgICAgfVxuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5wYXJzZVByaW1hcnlFeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLm1hdGNoKCc8JykgPyB0aGlzLnBhcnNlSlNYUm9vdCgpIDogX3N1cGVyLnByb3RvdHlwZS5wYXJzZVByaW1hcnlFeHByZXNzaW9uLmNhbGwodGhpcyk7XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5zdGFydEpTWCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAvLyBVbndpbmQgdGhlIHNjYW5uZXIgYmVmb3JlIHRoZSBsb29rYWhlYWQgdG9rZW4uXG5cdCAgICAgICAgdGhpcy5zY2FubmVyLmluZGV4ID0gdGhpcy5zdGFydE1hcmtlci5pbmRleDtcblx0ICAgICAgICB0aGlzLnNjYW5uZXIubGluZU51bWJlciA9IHRoaXMuc3RhcnRNYXJrZXIubGluZTtcblx0ICAgICAgICB0aGlzLnNjYW5uZXIubGluZVN0YXJ0ID0gdGhpcy5zdGFydE1hcmtlci5pbmRleCAtIHRoaXMuc3RhcnRNYXJrZXIuY29sdW1uO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUuZmluaXNoSlNYID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIFByaW1lIHRoZSBuZXh0IGxvb2thaGVhZC5cblx0ICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucmVlbnRlckpTWCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB0aGlzLnN0YXJ0SlNYKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3RKU1goJ30nKTtcblx0ICAgICAgICAvLyBQb3AgdGhlIGNsb3NpbmcgJ30nIGFkZGVkIGZyb20gdGhlIGxvb2thaGVhZC5cblx0ICAgICAgICBpZiAodGhpcy5jb25maWcudG9rZW5zKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9rZW5zLnBvcCgpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLmNyZWF0ZUpTWE5vZGUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdGhpcy5jb2xsZWN0Q29tbWVudHMoKTtcblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICBpbmRleDogdGhpcy5zY2FubmVyLmluZGV4LFxuXHQgICAgICAgICAgICBsaW5lOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgY29sdW1uOiB0aGlzLnNjYW5uZXIuaW5kZXggLSB0aGlzLnNjYW5uZXIubGluZVN0YXJ0XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLmNyZWF0ZUpTWENoaWxkTm9kZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICBpbmRleDogdGhpcy5zY2FubmVyLmluZGV4LFxuXHQgICAgICAgICAgICBsaW5lOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgY29sdW1uOiB0aGlzLnNjYW5uZXIuaW5kZXggLSB0aGlzLnNjYW5uZXIubGluZVN0YXJ0XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLnNjYW5YSFRNTEVudGl0eSA9IGZ1bmN0aW9uIChxdW90ZSkge1xuXHQgICAgICAgIHZhciByZXN1bHQgPSAnJic7XG5cdCAgICAgICAgdmFyIHZhbGlkID0gdHJ1ZTtcblx0ICAgICAgICB2YXIgdGVybWluYXRlZCA9IGZhbHNlO1xuXHQgICAgICAgIHZhciBudW1lcmljID0gZmFsc2U7XG5cdCAgICAgICAgdmFyIGhleCA9IGZhbHNlO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5zY2FubmVyLmVvZigpICYmIHZhbGlkICYmICF0ZXJtaW5hdGVkKSB7XG5cdCAgICAgICAgICAgIHZhciBjaCA9IHRoaXMuc2Nhbm5lci5zb3VyY2VbdGhpcy5zY2FubmVyLmluZGV4XTtcblx0ICAgICAgICAgICAgaWYgKGNoID09PSBxdW90ZSkge1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGVybWluYXRlZCA9IChjaCA9PT0gJzsnKTtcblx0ICAgICAgICAgICAgcmVzdWx0ICs9IGNoO1xuXHQgICAgICAgICAgICArK3RoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICAgICAgaWYgKCF0ZXJtaW5hdGVkKSB7XG5cdCAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5sZW5ndGgpIHtcblx0ICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGUuZy4gJyYjMTIzOydcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpYyA9IChjaCA9PT0gJyMnKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtZXJpYykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZS5nLiAnJiN4NDE7J1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ID0gKGNoID09PSAneCcpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBoZXggfHwgY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpYyA9IG51bWVyaWMgJiYgIWhleDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IHZhbGlkICYmICEobnVtZXJpYyAmJiAhY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhKGhleCAmJiAhY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzSGV4RGlnaXQoY2guY2hhckNvZGVBdCgwKSkpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodmFsaWQgJiYgdGVybWluYXRlZCAmJiByZXN1bHQubGVuZ3RoID4gMikge1xuXHQgICAgICAgICAgICAvLyBlLmcuICcmI3g0MTsnIGJlY29tZXMganVzdCAnI3g0MSdcblx0ICAgICAgICAgICAgdmFyIHN0ciA9IHJlc3VsdC5zdWJzdHIoMSwgcmVzdWx0Lmxlbmd0aCAtIDIpO1xuXHQgICAgICAgICAgICBpZiAobnVtZXJpYyAmJiBzdHIubGVuZ3RoID4gMSkge1xuXHQgICAgICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChzdHIuc3Vic3RyKDEpLCAxMCkpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKGhleCAmJiBzdHIubGVuZ3RoID4gMikge1xuXHQgICAgICAgICAgICAgICAgcmVzdWx0ID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCgnMCcgKyBzdHIuc3Vic3RyKDEpLCAxNikpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKCFudW1lcmljICYmICFoZXggJiYgeGh0bWxfZW50aXRpZXNfMS5YSFRNTEVudGl0aWVzW3N0cl0pIHtcblx0ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHhodG1sX2VudGl0aWVzXzEuWEhUTUxFbnRpdGllc1tzdHJdO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiByZXN1bHQ7XG5cdCAgICB9O1xuXHQgICAgLy8gU2NhbiB0aGUgbmV4dCBKU1ggdG9rZW4uIFRoaXMgcmVwbGFjZXMgU2Nhbm5lciNsZXggd2hlbiBpbiBKU1ggbW9kZS5cblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUubGV4SlNYID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBjcCA9IHRoaXMuc2Nhbm5lci5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnNjYW5uZXIuaW5kZXgpO1xuXHQgICAgICAgIC8vIDwgPiAvIDogPSB7IH1cblx0ICAgICAgICBpZiAoY3AgPT09IDYwIHx8IGNwID09PSA2MiB8fCBjcCA9PT0gNDcgfHwgY3AgPT09IDU4IHx8IGNwID09PSA2MSB8fCBjcCA9PT0gMTIzIHx8IGNwID09PSAxMjUpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5zY2FubmVyLnNvdXJjZVt0aGlzLnNjYW5uZXIuaW5kZXgrK107XG5cdCAgICAgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgICAgICB0eXBlOiA3IC8qIFB1bmN0dWF0b3IgKi8sXG5cdCAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG5cdCAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5zY2FubmVyLmxpbmVTdGFydCxcblx0ICAgICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLnNjYW5uZXIuaW5kZXggLSAxLFxuXHQgICAgICAgICAgICAgICAgZW5kOiB0aGlzLnNjYW5uZXIuaW5kZXhcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gXCIgJ1xuXHQgICAgICAgIGlmIChjcCA9PT0gMzQgfHwgY3AgPT09IDM5KSB7XG5cdCAgICAgICAgICAgIHZhciBzdGFydCA9IHRoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICAgICAgdmFyIHF1b3RlID0gdGhpcy5zY2FubmVyLnNvdXJjZVt0aGlzLnNjYW5uZXIuaW5kZXgrK107XG5cdCAgICAgICAgICAgIHZhciBzdHIgPSAnJztcblx0ICAgICAgICAgICAgd2hpbGUgKCF0aGlzLnNjYW5uZXIuZW9mKCkpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBjaCA9IHRoaXMuc2Nhbm5lci5zb3VyY2VbdGhpcy5zY2FubmVyLmluZGV4KytdO1xuXHQgICAgICAgICAgICAgICAgaWYgKGNoID09PSBxdW90ZSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09ICcmJykge1xuXHQgICAgICAgICAgICAgICAgICAgIHN0ciArPSB0aGlzLnNjYW5YSFRNTEVudGl0eShxdW90ZSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgICAgIHR5cGU6IDggLyogU3RyaW5nTGl0ZXJhbCAqLyxcblx0ICAgICAgICAgICAgICAgIHZhbHVlOiBzdHIsXG5cdCAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5zY2FubmVyLmxpbmVTdGFydCxcblx0ICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgICAgIGVuZDogdGhpcy5zY2FubmVyLmluZGV4XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIC4uLiBvciAuXG5cdCAgICAgICAgaWYgKGNwID09PSA0Nikge1xuXHQgICAgICAgICAgICB2YXIgbjEgPSB0aGlzLnNjYW5uZXIuc291cmNlLmNoYXJDb2RlQXQodGhpcy5zY2FubmVyLmluZGV4ICsgMSk7XG5cdCAgICAgICAgICAgIHZhciBuMiA9IHRoaXMuc2Nhbm5lci5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnNjYW5uZXIuaW5kZXggKyAyKTtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gKG4xID09PSA0NiAmJiBuMiA9PT0gNDYpID8gJy4uLicgOiAnLic7XG5cdCAgICAgICAgICAgIHZhciBzdGFydCA9IHRoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICAgICAgdGhpcy5zY2FubmVyLmluZGV4ICs9IHZhbHVlLmxlbmd0aDtcblx0ICAgICAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgICAgIHR5cGU6IDcgLyogUHVuY3R1YXRvciAqLyxcblx0ICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcblx0ICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiB0aGlzLnNjYW5uZXIubGluZVN0YXJ0LFxuXHQgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuXHQgICAgICAgICAgICAgICAgZW5kOiB0aGlzLnNjYW5uZXIuaW5kZXhcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gYFxuXHQgICAgICAgIGlmIChjcCA9PT0gOTYpIHtcblx0ICAgICAgICAgICAgLy8gT25seSBwbGFjZWhvbGRlciwgc2luY2UgaXQgd2lsbCBiZSByZXNjYW5uZWQgYXMgYSByZWFsIGFzc2lnbm1lbnQgZXhwcmVzc2lvbi5cblx0ICAgICAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgICAgIHR5cGU6IDEwIC8qIFRlbXBsYXRlICovLFxuXHQgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuXHQgICAgICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5zY2FubmVyLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IHRoaXMuc2Nhbm5lci5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgICAgICBzdGFydDogdGhpcy5zY2FubmVyLmluZGV4LFxuXHQgICAgICAgICAgICAgICAgZW5kOiB0aGlzLnNjYW5uZXIuaW5kZXhcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gSWRlbnRpZmVyIGNhbiBub3QgY29udGFpbiBiYWNrc2xhc2ggKGNoYXIgY29kZSA5MikuXG5cdCAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJTdGFydChjcCkgJiYgKGNwICE9PSA5MikpIHtcblx0ICAgICAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgICAgICArK3RoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICAgICAgd2hpbGUgKCF0aGlzLnNjYW5uZXIuZW9mKCkpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBjaCA9IHRoaXMuc2Nhbm5lci5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnNjYW5uZXIuaW5kZXgpO1xuXHQgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJQYXJ0KGNoKSAmJiAoY2ggIT09IDkyKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICsrdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IDQ1KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgLy8gSHlwaGVuIChjaGFyIGNvZGUgNDUpIGNhbiBiZSBwYXJ0IG9mIGFuIGlkZW50aWZpZXIuXG5cdCAgICAgICAgICAgICAgICAgICAgKyt0aGlzLnNjYW5uZXIuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YXIgaWQgPSB0aGlzLnNjYW5uZXIuc291cmNlLnNsaWNlKHN0YXJ0LCB0aGlzLnNjYW5uZXIuaW5kZXgpO1xuXHQgICAgICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICAgICAgdHlwZTogMTAwIC8qIElkZW50aWZpZXIgKi8sXG5cdCAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXG5cdCAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5zY2FubmVyLmxpbmVTdGFydCxcblx0ICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgICAgIGVuZDogdGhpcy5zY2FubmVyLmluZGV4XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLnNjYW5uZXIubGV4KCk7XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5uZXh0SlNYVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdGhpcy5jb2xsZWN0Q29tbWVudHMoKTtcblx0ICAgICAgICB0aGlzLnN0YXJ0TWFya2VyLmluZGV4ID0gdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgIHRoaXMuc3RhcnRNYXJrZXIubGluZSA9IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyO1xuXHQgICAgICAgIHRoaXMuc3RhcnRNYXJrZXIuY29sdW1uID0gdGhpcy5zY2FubmVyLmluZGV4IC0gdGhpcy5zY2FubmVyLmxpbmVTdGFydDtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmxleEpTWCgpO1xuXHQgICAgICAgIHRoaXMubGFzdE1hcmtlci5pbmRleCA9IHRoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICB0aGlzLmxhc3RNYXJrZXIubGluZSA9IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyO1xuXHQgICAgICAgIHRoaXMubGFzdE1hcmtlci5jb2x1bW4gPSB0aGlzLnNjYW5uZXIuaW5kZXggLSB0aGlzLnNjYW5uZXIubGluZVN0YXJ0O1xuXHQgICAgICAgIGlmICh0aGlzLmNvbmZpZy50b2tlbnMpIHtcblx0ICAgICAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLmNvbnZlcnRUb2tlbih0b2tlbikpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdG9rZW47XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5uZXh0SlNYVGV4dCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB0aGlzLnN0YXJ0TWFya2VyLmluZGV4ID0gdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgIHRoaXMuc3RhcnRNYXJrZXIubGluZSA9IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyO1xuXHQgICAgICAgIHRoaXMuc3RhcnRNYXJrZXIuY29sdW1uID0gdGhpcy5zY2FubmVyLmluZGV4IC0gdGhpcy5zY2FubmVyLmxpbmVTdGFydDtcblx0ICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLnNjYW5uZXIuaW5kZXg7XG5cdCAgICAgICAgdmFyIHRleHQgPSAnJztcblx0ICAgICAgICB3aGlsZSAoIXRoaXMuc2Nhbm5lci5lb2YoKSkge1xuXHQgICAgICAgICAgICB2YXIgY2ggPSB0aGlzLnNjYW5uZXIuc291cmNlW3RoaXMuc2Nhbm5lci5pbmRleF07XG5cdCAgICAgICAgICAgIGlmIChjaCA9PT0gJ3snIHx8IGNoID09PSAnPCcpIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICsrdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgICAgICB0ZXh0ICs9IGNoO1xuXHQgICAgICAgICAgICBpZiAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcblx0ICAgICAgICAgICAgICAgICsrdGhpcy5zY2FubmVyLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXHInICYmIHRoaXMuc2Nhbm5lci5zb3VyY2VbdGhpcy5zY2FubmVyLmluZGV4XSA9PT0gJ1xcbicpIHtcblx0ICAgICAgICAgICAgICAgICAgICArK3RoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHRoaXMuc2Nhbm5lci5saW5lU3RhcnQgPSB0aGlzLnNjYW5uZXIuaW5kZXg7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5sYXN0TWFya2VyLmluZGV4ID0gdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgIHRoaXMubGFzdE1hcmtlci5saW5lID0gdGhpcy5zY2FubmVyLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgdGhpcy5sYXN0TWFya2VyLmNvbHVtbiA9IHRoaXMuc2Nhbm5lci5pbmRleCAtIHRoaXMuc2Nhbm5lci5saW5lU3RhcnQ7XG5cdCAgICAgICAgdmFyIHRva2VuID0ge1xuXHQgICAgICAgICAgICB0eXBlOiAxMDEgLyogVGV4dCAqLyxcblx0ICAgICAgICAgICAgdmFsdWU6IHRleHQsXG5cdCAgICAgICAgICAgIGxpbmVOdW1iZXI6IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICBsaW5lU3RhcnQ6IHRoaXMuc2Nhbm5lci5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgZW5kOiB0aGlzLnNjYW5uZXIuaW5kZXhcblx0ICAgICAgICB9O1xuXHQgICAgICAgIGlmICgodGV4dC5sZW5ndGggPiAwKSAmJiB0aGlzLmNvbmZpZy50b2tlbnMpIHtcblx0ICAgICAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLmNvbnZlcnRUb2tlbih0b2tlbikpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdG9rZW47XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5wZWVrSlNYVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5zY2FubmVyLnNhdmVTdGF0ZSgpO1xuXHQgICAgICAgIHRoaXMuc2Nhbm5lci5zY2FuQ29tbWVudHMoKTtcblx0ICAgICAgICB2YXIgbmV4dCA9IHRoaXMubGV4SlNYKCk7XG5cdCAgICAgICAgdGhpcy5zY2FubmVyLnJlc3RvcmVTdGF0ZShzdGF0ZSk7XG5cdCAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICB9O1xuXHQgICAgLy8gRXhwZWN0IHRoZSBuZXh0IEpTWCB0b2tlbiB0byBtYXRjaCB0aGUgc3BlY2lmaWVkIHB1bmN0dWF0b3IuXG5cdCAgICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUuZXhwZWN0SlNYID0gZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgICAgICAgdmFyIHRva2VuID0gdGhpcy5uZXh0SlNYVG9rZW4oKTtcblx0ICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gNyAvKiBQdW5jdHVhdG9yICovIHx8IHRva2VuLnZhbHVlICE9PSB2YWx1ZSkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgSlNYIHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwdW5jdHVhdG9yLlxuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5tYXRjaEpTWCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuXHQgICAgICAgIHZhciBuZXh0ID0gdGhpcy5wZWVrSlNYVG9rZW4oKTtcblx0ICAgICAgICByZXR1cm4gbmV4dC50eXBlID09PSA3IC8qIFB1bmN0dWF0b3IgKi8gJiYgbmV4dC52YWx1ZSA9PT0gdmFsdWU7XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5wYXJzZUpTWElkZW50aWZpZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZUpTWE5vZGUoKTtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRKU1hUb2tlbigpO1xuXHQgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSAxMDAgLyogSWRlbnRpZmllciAqLykge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IEpTWE5vZGUuSlNYSWRlbnRpZmllcih0b2tlbi52YWx1ZSkpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hFbGVtZW50TmFtZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHZhciBlbGVtZW50TmFtZSA9IHRoaXMucGFyc2VKU1hJZGVudGlmaWVyKCk7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2hKU1goJzonKSkge1xuXHQgICAgICAgICAgICB2YXIgbmFtZXNwYWNlID0gZWxlbWVudE5hbWU7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0SlNYKCc6Jyk7XG5cdCAgICAgICAgICAgIHZhciBuYW1lXzEgPSB0aGlzLnBhcnNlSlNYSWRlbnRpZmllcigpO1xuXHQgICAgICAgICAgICBlbGVtZW50TmFtZSA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IEpTWE5vZGUuSlNYTmFtZXNwYWNlZE5hbWUobmFtZXNwYWNlLCBuYW1lXzEpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaEpTWCgnLicpKSB7XG5cdCAgICAgICAgICAgIHdoaWxlICh0aGlzLm1hdGNoSlNYKCcuJykpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBvYmplY3QgPSBlbGVtZW50TmFtZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SlNYKCcuJyk7XG5cdCAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLnBhcnNlSlNYSWRlbnRpZmllcigpO1xuXHQgICAgICAgICAgICAgICAgZWxlbWVudE5hbWUgPSB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWE1lbWJlckV4cHJlc3Npb24ob2JqZWN0LCBwcm9wZXJ0eSkpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBlbGVtZW50TmFtZTtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLnBhcnNlSlNYQXR0cmlidXRlTmFtZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lO1xuXHQgICAgICAgIHZhciBpZGVudGlmaWVyID0gdGhpcy5wYXJzZUpTWElkZW50aWZpZXIoKTtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaEpTWCgnOicpKSB7XG5cdCAgICAgICAgICAgIHZhciBuYW1lc3BhY2UgPSBpZGVudGlmaWVyO1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdEpTWCgnOicpO1xuXHQgICAgICAgICAgICB2YXIgbmFtZV8yID0gdGhpcy5wYXJzZUpTWElkZW50aWZpZXIoKTtcblx0ICAgICAgICAgICAgYXR0cmlidXRlTmFtZSA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IEpTWE5vZGUuSlNYTmFtZXNwYWNlZE5hbWUobmFtZXNwYWNlLCBuYW1lXzIpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBpZGVudGlmaWVyO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZTtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLnBhcnNlSlNYU3RyaW5nTGl0ZXJhbEF0dHJpYnV0ZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHZhciB0b2tlbiA9IHRoaXMubmV4dEpTWFRva2VuKCk7XG5cdCAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IDggLyogU3RyaW5nTGl0ZXJhbCAqLykge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIHJhdyA9IHRoaXMuZ2V0VG9rZW5SYXcodG9rZW4pO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkxpdGVyYWwodG9rZW4udmFsdWUsIHJhdykpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hFeHByZXNzaW9uQXR0cmlidXRlID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVKU1hOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3RKU1goJ3snKTtcblx0ICAgICAgICB0aGlzLmZpbmlzaEpTWCgpO1xuXHQgICAgICAgIGlmICh0aGlzLm1hdGNoKCd9JykpIHtcblx0ICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKCdKU1ggYXR0cmlidXRlcyBtdXN0IG9ubHkgYmUgYXNzaWduZWQgYSBub24tZW1wdHkgZXhwcmVzc2lvbicpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgZXhwcmVzc2lvbiA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgIHRoaXMucmVlbnRlckpTWCgpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWEV4cHJlc3Npb25Db250YWluZXIoZXhwcmVzc2lvbikpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hBdHRyaWJ1dGVWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5tYXRjaEpTWCgneycpID8gdGhpcy5wYXJzZUpTWEV4cHJlc3Npb25BdHRyaWJ1dGUoKSA6XG5cdCAgICAgICAgICAgIHRoaXMubWF0Y2hKU1goJzwnKSA/IHRoaXMucGFyc2VKU1hFbGVtZW50KCkgOiB0aGlzLnBhcnNlSlNYU3RyaW5nTGl0ZXJhbEF0dHJpYnV0ZSgpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hOYW1lVmFsdWVBdHRyaWJ1dGUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZUpTWE5vZGUoKTtcblx0ICAgICAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VKU1hBdHRyaWJ1dGVOYW1lKCk7XG5cdCAgICAgICAgdmFyIHZhbHVlID0gbnVsbDtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaEpTWCgnPScpKSB7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0SlNYKCc9Jyk7XG5cdCAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wYXJzZUpTWEF0dHJpYnV0ZVZhbHVlKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hTcHJlYWRBdHRyaWJ1dGUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZUpTWE5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEpTWCgneycpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0SlNYKCcuLi4nKTtcblx0ICAgICAgICB0aGlzLmZpbmlzaEpTWCgpO1xuXHQgICAgICAgIHZhciBhcmd1bWVudCA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgIHRoaXMucmVlbnRlckpTWCgpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWFNwcmVhZEF0dHJpYnV0ZShhcmd1bWVudCkpO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hBdHRyaWJ1dGVzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gW107XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLm1hdGNoSlNYKCcvJykgJiYgIXRoaXMubWF0Y2hKU1goJz4nKSkge1xuXHQgICAgICAgICAgICB2YXIgYXR0cmlidXRlID0gdGhpcy5tYXRjaEpTWCgneycpID8gdGhpcy5wYXJzZUpTWFNwcmVhZEF0dHJpYnV0ZSgpIDpcblx0ICAgICAgICAgICAgICAgIHRoaXMucGFyc2VKU1hOYW1lVmFsdWVBdHRyaWJ1dGUoKTtcblx0ICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VKU1hPcGVuaW5nRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0SlNYKCc8Jyk7XG5cdCAgICAgICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlSlNYRWxlbWVudE5hbWUoKTtcblx0ICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMucGFyc2VKU1hBdHRyaWJ1dGVzKCk7XG5cdCAgICAgICAgdmFyIHNlbGZDbG9zaW5nID0gdGhpcy5tYXRjaEpTWCgnLycpO1xuXHQgICAgICAgIGlmIChzZWxmQ2xvc2luZykge1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdEpTWCgnLycpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdEpTWCgnPicpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWE9wZW5pbmdFbGVtZW50KG5hbWUsIHNlbGZDbG9zaW5nLCBhdHRyaWJ1dGVzKSk7XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5wYXJzZUpTWEJvdW5kYXJ5RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0SlNYKCc8Jyk7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2hKU1goJy8nKSkge1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdEpTWCgnLycpO1xuXHQgICAgICAgICAgICB2YXIgbmFtZV8zID0gdGhpcy5wYXJzZUpTWEVsZW1lbnROYW1lKCk7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0SlNYKCc+Jyk7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWENsb3NpbmdFbGVtZW50KG5hbWVfMykpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VKU1hFbGVtZW50TmFtZSgpO1xuXHQgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5wYXJzZUpTWEF0dHJpYnV0ZXMoKTtcblx0ICAgICAgICB2YXIgc2VsZkNsb3NpbmcgPSB0aGlzLm1hdGNoSlNYKCcvJyk7XG5cdCAgICAgICAgaWYgKHNlbGZDbG9zaW5nKSB7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0SlNYKCcvJyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuZXhwZWN0SlNYKCc+Jyk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IEpTWE5vZGUuSlNYT3BlbmluZ0VsZW1lbnQobmFtZSwgc2VsZkNsb3NpbmcsIGF0dHJpYnV0ZXMpKTtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLnBhcnNlSlNYRW1wdHlFeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVKU1hDaGlsZE5vZGUoKTtcblx0ICAgICAgICB0aGlzLmNvbGxlY3RDb21tZW50cygpO1xuXHQgICAgICAgIHRoaXMubGFzdE1hcmtlci5pbmRleCA9IHRoaXMuc2Nhbm5lci5pbmRleDtcblx0ICAgICAgICB0aGlzLmxhc3RNYXJrZXIubGluZSA9IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyO1xuXHQgICAgICAgIHRoaXMubGFzdE1hcmtlci5jb2x1bW4gPSB0aGlzLnNjYW5uZXIuaW5kZXggLSB0aGlzLnNjYW5uZXIubGluZVN0YXJ0O1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWEVtcHR5RXhwcmVzc2lvbigpKTtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLnBhcnNlSlNYRXhwcmVzc2lvbkNvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0SlNYKCd7Jyk7XG5cdCAgICAgICAgdmFyIGV4cHJlc3Npb247XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2hKU1goJ30nKSkge1xuXHQgICAgICAgICAgICBleHByZXNzaW9uID0gdGhpcy5wYXJzZUpTWEVtcHR5RXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdEpTWCgnfScpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhpcy5maW5pc2hKU1goKTtcblx0ICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICB0aGlzLnJlZW50ZXJKU1goKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IEpTWE5vZGUuSlNYRXhwcmVzc2lvbkNvbnRhaW5lcihleHByZXNzaW9uKSk7XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5wYXJzZUpTWENoaWxkcmVuID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBjaGlsZHJlbiA9IFtdO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5zY2FubmVyLmVvZigpKSB7XG5cdCAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVKU1hDaGlsZE5vZGUoKTtcblx0ICAgICAgICAgICAgdmFyIHRva2VuID0gdGhpcy5uZXh0SlNYVGV4dCgpO1xuXHQgICAgICAgICAgICBpZiAodG9rZW4uc3RhcnQgPCB0b2tlbi5lbmQpIHtcblx0ICAgICAgICAgICAgICAgIHZhciByYXcgPSB0aGlzLmdldFRva2VuUmF3KHRva2VuKTtcblx0ICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IEpTWE5vZGUuSlNYVGV4dCh0b2tlbi52YWx1ZSwgcmF3KSk7XG5cdCAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAodGhpcy5zY2FubmVyLnNvdXJjZVt0aGlzLnNjYW5uZXIuaW5kZXhdID09PSAneycpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLnBhcnNlSlNYRXhwcmVzc2lvbkNvbnRhaW5lcigpO1xuXHQgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjb250YWluZXIpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUucGFyc2VDb21wbGV4SlNYRWxlbWVudCA9IGZ1bmN0aW9uIChlbCkge1xuXHQgICAgICAgIHZhciBzdGFjayA9IFtdO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5zY2FubmVyLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGVsLmNoaWxkcmVuID0gZWwuY2hpbGRyZW4uY29uY2F0KHRoaXMucGFyc2VKU1hDaGlsZHJlbigpKTtcblx0ICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZUpTWENoaWxkTm9kZSgpO1xuXHQgICAgICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucGFyc2VKU1hCb3VuZGFyeUVsZW1lbnQoKTtcblx0ICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0ganN4X3N5bnRheF8xLkpTWFN5bnRheC5KU1hPcGVuaW5nRWxlbWVudCkge1xuXHQgICAgICAgICAgICAgICAgdmFyIG9wZW5pbmcgPSBlbGVtZW50O1xuXHQgICAgICAgICAgICAgICAgaWYgKG9wZW5pbmcuc2VsZkNsb3NpbmcpIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBKU1hOb2RlLkpTWEVsZW1lbnQob3BlbmluZywgW10sIG51bGwpKTtcblx0ICAgICAgICAgICAgICAgICAgICBlbC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goZWwpO1xuXHQgICAgICAgICAgICAgICAgICAgIGVsID0geyBub2RlOiBub2RlLCBvcGVuaW5nOiBvcGVuaW5nLCBjbG9zaW5nOiBudWxsLCBjaGlsZHJlbjogW10gfTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBqc3hfc3ludGF4XzEuSlNYU3ludGF4LkpTWENsb3NpbmdFbGVtZW50KSB7XG5cdCAgICAgICAgICAgICAgICBlbC5jbG9zaW5nID0gZWxlbWVudDtcblx0ICAgICAgICAgICAgICAgIHZhciBvcGVuXzEgPSBnZXRRdWFsaWZpZWRFbGVtZW50TmFtZShlbC5vcGVuaW5nLm5hbWUpO1xuXHQgICAgICAgICAgICAgICAgdmFyIGNsb3NlXzEgPSBnZXRRdWFsaWZpZWRFbGVtZW50TmFtZShlbC5jbG9zaW5nLm5hbWUpO1xuXHQgICAgICAgICAgICAgICAgaWYgKG9wZW5fMSAhPT0gY2xvc2VfMSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcignRXhwZWN0ZWQgY29ycmVzcG9uZGluZyBKU1ggY2xvc2luZyB0YWcgZm9yICUwJywgb3Blbl8xKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPiAwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5maW5hbGl6ZShlbC5ub2RlLCBuZXcgSlNYTm9kZS5KU1hFbGVtZW50KGVsLm9wZW5pbmcsIGVsLmNoaWxkcmVuLCBlbC5jbG9zaW5nKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgZWwgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblx0ICAgICAgICAgICAgICAgICAgICBlbC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0ICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3AoKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBlbDtcblx0ICAgIH07XG5cdCAgICBKU1hQYXJzZXIucHJvdG90eXBlLnBhcnNlSlNYRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlSlNYTm9kZSgpO1xuXHQgICAgICAgIHZhciBvcGVuaW5nID0gdGhpcy5wYXJzZUpTWE9wZW5pbmdFbGVtZW50KCk7XG5cdCAgICAgICAgdmFyIGNoaWxkcmVuID0gW107XG5cdCAgICAgICAgdmFyIGNsb3NpbmcgPSBudWxsO1xuXHQgICAgICAgIGlmICghb3BlbmluZy5zZWxmQ2xvc2luZykge1xuXHQgICAgICAgICAgICB2YXIgZWwgPSB0aGlzLnBhcnNlQ29tcGxleEpTWEVsZW1lbnQoeyBub2RlOiBub2RlLCBvcGVuaW5nOiBvcGVuaW5nLCBjbG9zaW5nOiBjbG9zaW5nLCBjaGlsZHJlbjogY2hpbGRyZW4gfSk7XG5cdCAgICAgICAgICAgIGNoaWxkcmVuID0gZWwuY2hpbGRyZW47XG5cdCAgICAgICAgICAgIGNsb3NpbmcgPSBlbC5jbG9zaW5nO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgSlNYTm9kZS5KU1hFbGVtZW50KG9wZW5pbmcsIGNoaWxkcmVuLCBjbG9zaW5nKSk7XG5cdCAgICB9O1xuXHQgICAgSlNYUGFyc2VyLnByb3RvdHlwZS5wYXJzZUpTWFJvb3QgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgLy8gUG9wIHRoZSBvcGVuaW5nICc8JyBhZGRlZCBmcm9tIHRoZSBsb29rYWhlYWQuXG5cdCAgICAgICAgaWYgKHRoaXMuY29uZmlnLnRva2Vucykge1xuXHQgICAgICAgICAgICB0aGlzLnRva2Vucy5wb3AoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5zdGFydEpTWCgpO1xuXHQgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5wYXJzZUpTWEVsZW1lbnQoKTtcblx0ICAgICAgICB0aGlzLmZpbmlzaEpTWCgpO1xuXHQgICAgICAgIHJldHVybiBlbGVtZW50O1xuXHQgICAgfTtcblx0ICAgIEpTWFBhcnNlci5wcm90b3R5cGUuaXNTdGFydE9mRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5pc1N0YXJ0T2ZFeHByZXNzaW9uLmNhbGwodGhpcykgfHwgdGhpcy5tYXRjaCgnPCcpO1xuXHQgICAgfTtcblx0ICAgIHJldHVybiBKU1hQYXJzZXI7XG5cdH0ocGFyc2VyXzEuUGFyc2VyKSk7XG5cdGV4cG9ydHMuSlNYUGFyc2VyID0gSlNYUGFyc2VyO1xuXG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuXHQvLyBTZWUgYWxzbyB0b29scy9nZW5lcmF0ZS11bmljb2RlLXJlZ2V4LmpzLlxuXHR2YXIgUmVnZXggPSB7XG5cdCAgICAvLyBVbmljb2RlIHY4LjAuMCBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDpcblx0ICAgIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0OiAvW1xceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEI0XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MFxcdTBDNjFcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNlxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjVcXHUxM0Y4LVxcdTEzRkRcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkVFLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTgtXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTYwLVxcdTIxODhcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyOVxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUItXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZENVxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkVGXFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0FEXFx1QTdCMC1cXHVBN0I3XFx1QTdGNy1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QTlFMC1cXHVBOUU0XFx1QTlFNi1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjY1XFx1QUI3MC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXXxcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REQ0MC1cXHVERDc0XFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYzMC1cXHVERjRBXFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDBcXHVERTEwLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzNcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTRcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XFx1REM4MC1cXHVEQ0IyXFx1RENDMC1cXHVEQ0YyXXxcXHVEODA0W1xcdURDMDMtXFx1REMzN1xcdURDODMtXFx1RENBRlxcdURDRDAtXFx1RENFOFxcdUREMDMtXFx1REQyNlxcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURGMDAtXFx1REYxOV18XFx1RDgwNltcXHVEQ0EwLVxcdURDREZcXHVEQ0ZGXFx1REVDMC1cXHVERUY4XXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjQ0XFx1REY1MFxcdURGOTMtXFx1REY5Rl18XFx1RDgyQ1tcXHVEQzAwXFx1REMwMV18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXS8sXG5cdCAgICAvLyBVbmljb2RlIHY4LjAuMCBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OlxuXHQgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogL1tcXHhBQVxceEI1XFx4QjdcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzAwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XFx1MDNGNy1cXHUwNDgxXFx1MDQ4My1cXHUwNDg3XFx1MDQ4QS1cXHUwNTJGXFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA1RDAtXFx1MDVFQVxcdTA1RjAtXFx1MDVGMlxcdTA2MTAtXFx1MDYxQVxcdTA2MjAtXFx1MDY2OVxcdTA2NkUtXFx1MDZEM1xcdTA2RDUtXFx1MDZEQ1xcdTA2REYtXFx1MDZFOFxcdTA2RUEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwLVxcdTA3NEFcXHUwNzRELVxcdTA3QjFcXHUwN0MwLVxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODJEXFx1MDg0MC1cXHUwODVCXFx1MDhBMC1cXHUwOEI0XFx1MDhFMy1cXHUwOTYzXFx1MDk2Ni1cXHUwOTZGXFx1MDk3MS1cXHUwOTgzXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCQy1cXHUwOUM0XFx1MDlDN1xcdTA5QzhcXHUwOUNCLVxcdTA5Q0VcXHUwOUQ3XFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTNcXHUwOUU2LVxcdTA5RjFcXHUwQTAxLVxcdTBBMDNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE2Ni1cXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJDLVxcdTBBQzVcXHUwQUM3LVxcdTBBQzlcXHUwQUNCLVxcdTBBQ0RcXHUwQUQwXFx1MEFFMC1cXHUwQUUzXFx1MEFFNi1cXHUwQUVGXFx1MEFGOVxcdTBCMDEtXFx1MEIwM1xcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNDLVxcdTBCNDRcXHUwQjQ3XFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNTZcXHUwQjU3XFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjNcXHUwQjY2LVxcdTBCNkZcXHUwQjcxXFx1MEI4MlxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEMFxcdTBCRDdcXHUwQkU2LVxcdTBCRUZcXHUwQzAwLVxcdTBDMDNcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNELVxcdTBDNDRcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNTgtXFx1MEM1QVxcdTBDNjAtXFx1MEM2M1xcdTBDNjYtXFx1MEM2RlxcdTBDODEtXFx1MEM4M1xcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkMtXFx1MENDNFxcdTBDQzYtXFx1MENDOFxcdTBDQ0EtXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDRTAtXFx1MENFM1xcdTBDRTYtXFx1MENFRlxcdTBDRjFcXHUwQ0YyXFx1MEQwMS1cXHUwRDAzXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRC1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRFXFx1MEQ1N1xcdTBENUYtXFx1MEQ2M1xcdTBENjYtXFx1MEQ2RlxcdTBEN0EtXFx1MEQ3RlxcdTBEODJcXHUwRDgzXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBEQ0FcXHUwRENGLVxcdTBERDRcXHUwREQ2XFx1MEREOC1cXHUwRERGXFx1MERFNi1cXHUwREVGXFx1MERGMlxcdTBERjNcXHUwRTAxLVxcdTBFM0FcXHUwRTQwLVxcdTBFNEVcXHUwRTUwLVxcdTBFNTlcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCOVxcdTBFQkItXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRUM4LVxcdTBFQ0RcXHUwRUQwLVxcdTBFRDlcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEYxOFxcdTBGMTlcXHUwRjIwLVxcdTBGMjlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjcxLVxcdTBGODRcXHUwRjg2LVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAwMC1cXHUxMDQ5XFx1MTA1MC1cXHUxMDlEXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzNUQtXFx1MTM1RlxcdTEzNjktXFx1MTM3MVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RUUtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxNFxcdTE3MjAtXFx1MTczNFxcdTE3NDAtXFx1MTc1M1xcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3NzJcXHUxNzczXFx1MTc4MC1cXHUxN0QzXFx1MTdEN1xcdTE3RENcXHUxN0REXFx1MTdFMC1cXHUxN0U5XFx1MTgwQi1cXHUxODBEXFx1MTgxMC1cXHUxODE5XFx1MTgyMC1cXHUxODc3XFx1MTg4MC1cXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MTk0Ni1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MTlEMC1cXHUxOURBXFx1MUEwMC1cXHUxQTFCXFx1MUEyMC1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3Ri1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUFBN1xcdTFBQjAtXFx1MUFCRFxcdTFCMDAtXFx1MUI0QlxcdTFCNTAtXFx1MUI1OVxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUJGM1xcdTFDMDAtXFx1MUMzN1xcdTFDNDAtXFx1MUM0OVxcdTFDNEQtXFx1MUM3RFxcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNGNlxcdTFDRjhcXHUxQ0Y5XFx1MUQwMC1cXHUxREY1XFx1MURGQy1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwMENcXHUyMDBEXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEYwXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOC1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxNjAtXFx1MjE4OFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEN0YtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJERTAtXFx1MkRGRlxcdTMwMDUtXFx1MzAwN1xcdTMwMjEtXFx1MzAyRlxcdTMwMzEtXFx1MzAzNVxcdTMwMzgtXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOTktXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRFxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCQVxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCNVxcdTRFMDAtXFx1OUZENVxcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYyQlxcdUE2NDAtXFx1QTY2RlxcdUE2NzQtXFx1QTY3RFxcdUE2N0YtXFx1QTZGMVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdBRFxcdUE3QjAtXFx1QTdCN1xcdUE3RjctXFx1QTgyN1xcdUE4NDAtXFx1QTg3M1xcdUE4ODAtXFx1QThDNFxcdUE4RDAtXFx1QThEOVxcdUE4RTAtXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QTkwMC1cXHVBOTJEXFx1QTkzMC1cXHVBOTUzXFx1QTk2MC1cXHVBOTdDXFx1QTk4MC1cXHVBOUMwXFx1QTlDRi1cXHVBOUQ5XFx1QTlFMC1cXHVBOUZFXFx1QUEwMC1cXHVBQTM2XFx1QUE0MC1cXHVBQTREXFx1QUE1MC1cXHVBQTU5XFx1QUE2MC1cXHVBQTc2XFx1QUE3QS1cXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVGXFx1QUFGMi1cXHVBQUY2XFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUIzMC1cXHVBQjVBXFx1QUI1Qy1cXHVBQjY1XFx1QUI3MC1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVBQkYwLVxcdUFCRjlcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRlxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYxMC1cXHVGRjE5XFx1RkYyMS1cXHVGRjNBXFx1RkYzRlxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ118XFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURENDAtXFx1REQ3NFxcdURERkRcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERUUwXFx1REYwMC1cXHVERjFGXFx1REYzMC1cXHVERjRBXFx1REY1MC1cXHVERjdBXFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXFx1REZEMS1cXHVERkQ1XXxcXHVEODAxW1xcdURDMDAtXFx1REM5RFxcdURDQTAtXFx1RENBOVxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDAtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTMzXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNlxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzQ2XFx1REM2Ni1cXHVEQzZGXFx1REM3Ri1cXHVEQ0JBXFx1RENEMC1cXHVEQ0U4XFx1RENGMC1cXHVEQ0Y5XFx1REQwMC1cXHVERDM0XFx1REQzNi1cXHVERDNGXFx1REQ1MC1cXHVERDczXFx1REQ3NlxcdUREODAtXFx1RERDNFxcdUREQ0EtXFx1RERDQ1xcdURERDAtXFx1REREQVxcdURERENcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMzdcXHVERTgwLVxcdURFODZcXHVERTg4XFx1REU4QS1cXHVERThEXFx1REU4Ri1cXHVERTlEXFx1REU5Ri1cXHVERUE4XFx1REVCMC1cXHVERUVBXFx1REVGMC1cXHVERUY5XFx1REYwMC1cXHVERjAzXFx1REYwNS1cXHVERjBDXFx1REYwRlxcdURGMTBcXHVERjEzLVxcdURGMjhcXHVERjJBLVxcdURGMzBcXHVERjMyXFx1REYzM1xcdURGMzUtXFx1REYzOVxcdURGM0MtXFx1REY0NFxcdURGNDdcXHVERjQ4XFx1REY0Qi1cXHVERjREXFx1REY1MFxcdURGNTdcXHVERjVELVxcdURGNjNcXHVERjY2LVxcdURGNkNcXHVERjcwLVxcdURGNzRdfFxcdUQ4MDVbXFx1REM4MC1cXHVEQ0M1XFx1RENDN1xcdURDRDAtXFx1RENEOVxcdUREODAtXFx1RERCNVxcdUREQjgtXFx1RERDMFxcdURERDgtXFx1RERERFxcdURFMDAtXFx1REU0MFxcdURFNDRcXHVERTUwLVxcdURFNTlcXHVERTgwLVxcdURFQjdcXHVERUMwLVxcdURFQzlcXHVERjAwLVxcdURGMTlcXHVERjFELVxcdURGMkJcXHVERjMwLVxcdURGMzldfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0U5XFx1RENGRlxcdURFQzAtXFx1REVGOF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3Ml1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REU2MC1cXHVERTY5XFx1REVEMC1cXHVERUVEXFx1REVGMC1cXHVERUY0XFx1REYwMC1cXHVERjM2XFx1REY0MC1cXHVERjQzXFx1REY1MC1cXHVERjU5XFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURGMDAtXFx1REY0NFxcdURGNTAtXFx1REY3RVxcdURGOEYtXFx1REY5Rl18XFx1RDgyQ1tcXHVEQzAwXFx1REMwMV18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTlcXHVEQzlEXFx1REM5RV18XFx1RDgzNFtcXHVERDY1LVxcdURENjlcXHVERDZELVxcdURENzJcXHVERDdCLVxcdUREODJcXHVERDg1LVxcdUREOEJcXHVEREFBLVxcdUREQURcXHVERTQyLVxcdURFNDRdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQlxcdURGQ0UtXFx1REZGRl18XFx1RDgzNltcXHVERTAwLVxcdURFMzZcXHVERTNCLVxcdURFNkNcXHVERTc1XFx1REU4NFxcdURFOUItXFx1REU5RlxcdURFQTEtXFx1REVBRl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVEQ0QwLVxcdURDRDZdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRDZcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXXxcXHVEQjQwW1xcdUREMDAtXFx1RERFRl0vXG5cdH07XG5cdGV4cG9ydHMuQ2hhcmFjdGVyID0ge1xuXHQgICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSAqL1xuXHQgICAgZnJvbUNvZGVQb2ludDogZnVuY3Rpb24gKGNwKSB7XG5cdCAgICAgICAgcmV0dXJuIChjcCA8IDB4MTAwMDApID8gU3RyaW5nLmZyb21DaGFyQ29kZShjcCkgOlxuXHQgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgwMCArICgoY3AgLSAweDEwMDAwKSA+PiAxMCkpICtcblx0ICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEQzAwICsgKChjcCAtIDB4MTAwMDApICYgMTAyMykpO1xuXHQgICAgfSxcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXdoaXRlLXNwYWNlXG5cdCAgICBpc1doaXRlU3BhY2U6IGZ1bmN0aW9uIChjcCkge1xuXHQgICAgICAgIHJldHVybiAoY3AgPT09IDB4MjApIHx8IChjcCA9PT0gMHgwOSkgfHwgKGNwID09PSAweDBCKSB8fCAoY3AgPT09IDB4MEMpIHx8IChjcCA9PT0gMHhBMCkgfHxcblx0ICAgICAgICAgICAgKGNwID49IDB4MTY4MCAmJiBbMHgxNjgwLCAweDIwMDAsIDB4MjAwMSwgMHgyMDAyLCAweDIwMDMsIDB4MjAwNCwgMHgyMDA1LCAweDIwMDYsIDB4MjAwNywgMHgyMDA4LCAweDIwMDksIDB4MjAwQSwgMHgyMDJGLCAweDIwNUYsIDB4MzAwMCwgMHhGRUZGXS5pbmRleE9mKGNwKSA+PSAwKTtcblx0ICAgIH0sXG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1saW5lLXRlcm1pbmF0b3JzXG5cdCAgICBpc0xpbmVUZXJtaW5hdG9yOiBmdW5jdGlvbiAoY3ApIHtcblx0ICAgICAgICByZXR1cm4gKGNwID09PSAweDBBKSB8fCAoY3AgPT09IDB4MEQpIHx8IChjcCA9PT0gMHgyMDI4KSB8fCAoY3AgPT09IDB4MjAyOSk7XG5cdCAgICB9LFxuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbmFtZXMtYW5kLWtleXdvcmRzXG5cdCAgICBpc0lkZW50aWZpZXJTdGFydDogZnVuY3Rpb24gKGNwKSB7XG5cdCAgICAgICAgcmV0dXJuIChjcCA9PT0gMHgyNCkgfHwgKGNwID09PSAweDVGKSB8fFxuXHQgICAgICAgICAgICAoY3AgPj0gMHg0MSAmJiBjcCA8PSAweDVBKSB8fFxuXHQgICAgICAgICAgICAoY3AgPj0gMHg2MSAmJiBjcCA8PSAweDdBKSB8fFxuXHQgICAgICAgICAgICAoY3AgPT09IDB4NUMpIHx8XG5cdCAgICAgICAgICAgICgoY3AgPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVzdChleHBvcnRzLkNoYXJhY3Rlci5mcm9tQ29kZVBvaW50KGNwKSkpO1xuXHQgICAgfSxcblx0ICAgIGlzSWRlbnRpZmllclBhcnQ6IGZ1bmN0aW9uIChjcCkge1xuXHQgICAgICAgIHJldHVybiAoY3AgPT09IDB4MjQpIHx8IChjcCA9PT0gMHg1RikgfHxcblx0ICAgICAgICAgICAgKGNwID49IDB4NDEgJiYgY3AgPD0gMHg1QSkgfHxcblx0ICAgICAgICAgICAgKGNwID49IDB4NjEgJiYgY3AgPD0gMHg3QSkgfHxcblx0ICAgICAgICAgICAgKGNwID49IDB4MzAgJiYgY3AgPD0gMHgzOSkgfHxcblx0ICAgICAgICAgICAgKGNwID09PSAweDVDKSB8fFxuXHQgICAgICAgICAgICAoKGNwID49IDB4ODApICYmIFJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclBhcnQudGVzdChleHBvcnRzLkNoYXJhY3Rlci5mcm9tQ29kZVBvaW50KGNwKSkpO1xuXHQgICAgfSxcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWxpdGVyYWxzLW51bWVyaWMtbGl0ZXJhbHNcblx0ICAgIGlzRGVjaW1hbERpZ2l0OiBmdW5jdGlvbiAoY3ApIHtcblx0ICAgICAgICByZXR1cm4gKGNwID49IDB4MzAgJiYgY3AgPD0gMHgzOSk7IC8vIDAuLjlcblx0ICAgIH0sXG5cdCAgICBpc0hleERpZ2l0OiBmdW5jdGlvbiAoY3ApIHtcblx0ICAgICAgICByZXR1cm4gKGNwID49IDB4MzAgJiYgY3AgPD0gMHgzOSkgfHxcblx0ICAgICAgICAgICAgKGNwID49IDB4NDEgJiYgY3AgPD0gMHg0NikgfHxcblx0ICAgICAgICAgICAgKGNwID49IDB4NjEgJiYgY3AgPD0gMHg2Nik7IC8vIGEuLmZcblx0ICAgIH0sXG5cdCAgICBpc09jdGFsRGlnaXQ6IGZ1bmN0aW9uIChjcCkge1xuXHQgICAgICAgIHJldHVybiAoY3AgPj0gMHgzMCAmJiBjcCA8PSAweDM3KTsgLy8gMC4uN1xuXHQgICAgfVxuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuXHR2YXIganN4X3N5bnRheF8xID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0LyogdHNsaW50OmRpc2FibGU6bWF4LWNsYXNzZXMtcGVyLWZpbGUgKi9cblx0dmFyIEpTWENsb3NpbmdFbGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEpTWENsb3NpbmdFbGVtZW50KG5hbWUpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBqc3hfc3ludGF4XzEuSlNYU3ludGF4LkpTWENsb3NpbmdFbGVtZW50O1xuXHQgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gSlNYQ2xvc2luZ0VsZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYQ2xvc2luZ0VsZW1lbnQgPSBKU1hDbG9zaW5nRWxlbWVudDtcblx0dmFyIEpTWEVsZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gSlNYRWxlbWVudChvcGVuaW5nRWxlbWVudCwgY2hpbGRyZW4sIGNsb3NpbmdFbGVtZW50KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0ganN4X3N5bnRheF8xLkpTWFN5bnRheC5KU1hFbGVtZW50O1xuXHQgICAgICAgIHRoaXMub3BlbmluZ0VsZW1lbnQgPSBvcGVuaW5nRWxlbWVudDtcblx0ICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG5cdCAgICAgICAgdGhpcy5jbG9zaW5nRWxlbWVudCA9IGNsb3NpbmdFbGVtZW50O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEpTWEVsZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYRWxlbWVudCA9IEpTWEVsZW1lbnQ7XG5cdHZhciBKU1hFbXB0eUV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gSlNYRW1wdHlFeHByZXNzaW9uKCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IGpzeF9zeW50YXhfMS5KU1hTeW50YXguSlNYRW1wdHlFeHByZXNzaW9uO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEpTWEVtcHR5RXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5KU1hFbXB0eUV4cHJlc3Npb24gPSBKU1hFbXB0eUV4cHJlc3Npb247XG5cdHZhciBKU1hFeHByZXNzaW9uQ29udGFpbmVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEpTWEV4cHJlc3Npb25Db250YWluZXIoZXhwcmVzc2lvbikge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IGpzeF9zeW50YXhfMS5KU1hTeW50YXguSlNYRXhwcmVzc2lvbkNvbnRhaW5lcjtcblx0ICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEpTWEV4cHJlc3Npb25Db250YWluZXI7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYRXhwcmVzc2lvbkNvbnRhaW5lciA9IEpTWEV4cHJlc3Npb25Db250YWluZXI7XG5cdHZhciBKU1hJZGVudGlmaWVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEpTWElkZW50aWZpZXIobmFtZSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IGpzeF9zeW50YXhfMS5KU1hTeW50YXguSlNYSWRlbnRpZmllcjtcblx0ICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEpTWElkZW50aWZpZXI7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYSWRlbnRpZmllciA9IEpTWElkZW50aWZpZXI7XG5cdHZhciBKU1hNZW1iZXJFeHByZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEpTWE1lbWJlckV4cHJlc3Npb24ob2JqZWN0LCBwcm9wZXJ0eSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IGpzeF9zeW50YXhfMS5KU1hTeW50YXguSlNYTWVtYmVyRXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLm9iamVjdCA9IG9iamVjdDtcblx0ICAgICAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gSlNYTWVtYmVyRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5KU1hNZW1iZXJFeHByZXNzaW9uID0gSlNYTWVtYmVyRXhwcmVzc2lvbjtcblx0dmFyIEpTWEF0dHJpYnV0ZSA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBKU1hBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBqc3hfc3ludGF4XzEuSlNYU3ludGF4LkpTWEF0dHJpYnV0ZTtcblx0ICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuXHQgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBKU1hBdHRyaWJ1dGU7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYQXR0cmlidXRlID0gSlNYQXR0cmlidXRlO1xuXHR2YXIgSlNYTmFtZXNwYWNlZE5hbWUgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gSlNYTmFtZXNwYWNlZE5hbWUobmFtZXNwYWNlLCBuYW1lKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0ganN4X3N5bnRheF8xLkpTWFN5bnRheC5KU1hOYW1lc3BhY2VkTmFtZTtcblx0ICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcblx0ICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEpTWE5hbWVzcGFjZWROYW1lO1xuXHR9KCkpO1xuXHRleHBvcnRzLkpTWE5hbWVzcGFjZWROYW1lID0gSlNYTmFtZXNwYWNlZE5hbWU7XG5cdHZhciBKU1hPcGVuaW5nRWxlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBKU1hPcGVuaW5nRWxlbWVudChuYW1lLCBzZWxmQ2xvc2luZywgYXR0cmlidXRlcykge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IGpzeF9zeW50YXhfMS5KU1hTeW50YXguSlNYT3BlbmluZ0VsZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcblx0ICAgICAgICB0aGlzLnNlbGZDbG9zaW5nID0gc2VsZkNsb3Npbmc7XG5cdCAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcblx0ICAgIH1cblx0ICAgIHJldHVybiBKU1hPcGVuaW5nRWxlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5KU1hPcGVuaW5nRWxlbWVudCA9IEpTWE9wZW5pbmdFbGVtZW50O1xuXHR2YXIgSlNYU3ByZWFkQXR0cmlidXRlID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEpTWFNwcmVhZEF0dHJpYnV0ZShhcmd1bWVudCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IGpzeF9zeW50YXhfMS5KU1hTeW50YXguSlNYU3ByZWFkQXR0cmlidXRlO1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBKU1hTcHJlYWRBdHRyaWJ1dGU7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYU3ByZWFkQXR0cmlidXRlID0gSlNYU3ByZWFkQXR0cmlidXRlO1xuXHR2YXIgSlNYVGV4dCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBKU1hUZXh0KHZhbHVlLCByYXcpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBqc3hfc3ludGF4XzEuSlNYU3ludGF4LkpTWFRleHQ7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXHQgICAgICAgIHRoaXMucmF3ID0gcmF3O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEpTWFRleHQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSlNYVGV4dCA9IEpTWFRleHQ7XG5cblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cdGV4cG9ydHMuSlNYU3ludGF4ID0ge1xuXHQgICAgSlNYQXR0cmlidXRlOiAnSlNYQXR0cmlidXRlJyxcblx0ICAgIEpTWENsb3NpbmdFbGVtZW50OiAnSlNYQ2xvc2luZ0VsZW1lbnQnLFxuXHQgICAgSlNYRWxlbWVudDogJ0pTWEVsZW1lbnQnLFxuXHQgICAgSlNYRW1wdHlFeHByZXNzaW9uOiAnSlNYRW1wdHlFeHByZXNzaW9uJyxcblx0ICAgIEpTWEV4cHJlc3Npb25Db250YWluZXI6ICdKU1hFeHByZXNzaW9uQ29udGFpbmVyJyxcblx0ICAgIEpTWElkZW50aWZpZXI6ICdKU1hJZGVudGlmaWVyJyxcblx0ICAgIEpTWE1lbWJlckV4cHJlc3Npb246ICdKU1hNZW1iZXJFeHByZXNzaW9uJyxcblx0ICAgIEpTWE5hbWVzcGFjZWROYW1lOiAnSlNYTmFtZXNwYWNlZE5hbWUnLFxuXHQgICAgSlNYT3BlbmluZ0VsZW1lbnQ6ICdKU1hPcGVuaW5nRWxlbWVudCcsXG5cdCAgICBKU1hTcHJlYWRBdHRyaWJ1dGU6ICdKU1hTcHJlYWRBdHRyaWJ1dGUnLFxuXHQgICAgSlNYVGV4dDogJ0pTWFRleHQnXG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cdHZhciBzeW50YXhfMSA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdC8qIHRzbGludDpkaXNhYmxlOm1heC1jbGFzc2VzLXBlci1maWxlICovXG5cdHZhciBBcnJheUV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkFycmF5RXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLmVsZW1lbnRzID0gZWxlbWVudHM7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQXJyYXlFeHByZXNzaW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLkFycmF5RXhwcmVzc2lvbiA9IEFycmF5RXhwcmVzc2lvbjtcblx0dmFyIEFycmF5UGF0dGVybiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBBcnJheVBhdHRlcm4oZWxlbWVudHMpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguQXJyYXlQYXR0ZXJuO1xuXHQgICAgICAgIHRoaXMuZWxlbWVudHMgPSBlbGVtZW50cztcblx0ICAgIH1cblx0ICAgIHJldHVybiBBcnJheVBhdHRlcm47XG5cdH0oKSk7XG5cdGV4cG9ydHMuQXJyYXlQYXR0ZXJuID0gQXJyYXlQYXR0ZXJuO1xuXHR2YXIgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24ocGFyYW1zLCBib2R5LCBleHByZXNzaW9uKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkFycm93RnVuY3Rpb25FeHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuaWQgPSBudWxsO1xuXHQgICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICAgICAgdGhpcy5nZW5lcmF0b3IgPSBmYWxzZTtcblx0ICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuYXN5bmMgPSBmYWxzZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiA9IEFycm93RnVuY3Rpb25FeHByZXNzaW9uO1xuXHR2YXIgQXNzaWdubWVudEV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQXNzaWdubWVudEV4cHJlc3Npb24ob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkFzc2lnbm1lbnRFeHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcblx0ICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0O1xuXHQgICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBBc3NpZ25tZW50RXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5Bc3NpZ25tZW50RXhwcmVzc2lvbiA9IEFzc2lnbm1lbnRFeHByZXNzaW9uO1xuXHR2YXIgQXNzaWdubWVudFBhdHRlcm4gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQXNzaWdubWVudFBhdHRlcm4obGVmdCwgcmlnaHQpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguQXNzaWdubWVudFBhdHRlcm47XG5cdCAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdDtcblx0ICAgICAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQXNzaWdubWVudFBhdHRlcm47XG5cdH0oKSk7XG5cdGV4cG9ydHMuQXNzaWdubWVudFBhdHRlcm4gPSBBc3NpZ25tZW50UGF0dGVybjtcblx0dmFyIEFzeW5jQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQXN5bmNBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihwYXJhbXMsIGJvZHksIGV4cHJlc3Npb24pIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguQXJyb3dGdW5jdGlvbkV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5pZCA9IG51bGw7XG5cdCAgICAgICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgICAgICB0aGlzLmdlbmVyYXRvciA9IGZhbHNlO1xuXHQgICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5hc3luYyA9IHRydWU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQXN5bmNBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5Bc3luY0Fycm93RnVuY3Rpb25FeHByZXNzaW9uID0gQXN5bmNBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjtcblx0dmFyIEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oaWQsIHBhcmFtcywgYm9keSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5GdW5jdGlvbkRlY2xhcmF0aW9uO1xuXHQgICAgICAgIHRoaXMuaWQgPSBpZDtcblx0ICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcblx0ICAgICAgICB0aGlzLmJvZHkgPSBib2R5O1xuXHQgICAgICAgIHRoaXMuZ2VuZXJhdG9yID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5hc3luYyA9IHRydWU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLkFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbiA9IEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbjtcblx0dmFyIEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKGlkLCBwYXJhbXMsIGJvZHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRnVuY3Rpb25FeHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuaWQgPSBpZDtcblx0ICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcblx0ICAgICAgICB0aGlzLmJvZHkgPSBib2R5O1xuXHQgICAgICAgIHRoaXMuZ2VuZXJhdG9yID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5hc3luYyA9IHRydWU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQXN5bmNGdW5jdGlvbkV4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24gPSBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbjtcblx0dmFyIEF3YWl0RXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBBd2FpdEV4cHJlc3Npb24oYXJndW1lbnQpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguQXdhaXRFeHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBBd2FpdEV4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuQXdhaXRFeHByZXNzaW9uID0gQXdhaXRFeHByZXNzaW9uO1xuXHR2YXIgQmluYXJ5RXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBCaW5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBsZWZ0LCByaWdodCkge1xuXHQgICAgICAgIHZhciBsb2dpY2FsID0gKG9wZXJhdG9yID09PSAnfHwnIHx8IG9wZXJhdG9yID09PSAnJiYnKTtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBsb2dpY2FsID8gc3ludGF4XzEuU3ludGF4LkxvZ2ljYWxFeHByZXNzaW9uIDogc3ludGF4XzEuU3ludGF4LkJpbmFyeUV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yO1xuXHQgICAgICAgIHRoaXMubGVmdCA9IGxlZnQ7XG5cdCAgICAgICAgdGhpcy5yaWdodCA9IHJpZ2h0O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEJpbmFyeUV4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuQmluYXJ5RXhwcmVzc2lvbiA9IEJpbmFyeUV4cHJlc3Npb247XG5cdHZhciBCbG9ja1N0YXRlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBCbG9ja1N0YXRlbWVudChib2R5KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkJsb2NrU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQmxvY2tTdGF0ZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuQmxvY2tTdGF0ZW1lbnQgPSBCbG9ja1N0YXRlbWVudDtcblx0dmFyIEJyZWFrU3RhdGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEJyZWFrU3RhdGVtZW50KGxhYmVsKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkJyZWFrU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBCcmVha1N0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5CcmVha1N0YXRlbWVudCA9IEJyZWFrU3RhdGVtZW50O1xuXHR2YXIgQ2FsbEV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQ2FsbEV4cHJlc3Npb24oY2FsbGVlLCBhcmdzKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkNhbGxFeHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuY2FsbGVlID0gY2FsbGVlO1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnRzID0gYXJncztcblx0ICAgIH1cblx0ICAgIHJldHVybiBDYWxsRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5DYWxsRXhwcmVzc2lvbiA9IENhbGxFeHByZXNzaW9uO1xuXHR2YXIgQ2F0Y2hDbGF1c2UgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQ2F0Y2hDbGF1c2UocGFyYW0sIGJvZHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguQ2F0Y2hDbGF1c2U7XG5cdCAgICAgICAgdGhpcy5wYXJhbSA9IHBhcmFtO1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQ2F0Y2hDbGF1c2U7XG5cdH0oKSk7XG5cdGV4cG9ydHMuQ2F0Y2hDbGF1c2UgPSBDYXRjaENsYXVzZTtcblx0dmFyIENsYXNzQm9keSA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBDbGFzc0JvZHkoYm9keSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5DbGFzc0JvZHk7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBDbGFzc0JvZHk7XG5cdH0oKSk7XG5cdGV4cG9ydHMuQ2xhc3NCb2R5ID0gQ2xhc3NCb2R5O1xuXHR2YXIgQ2xhc3NEZWNsYXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBDbGFzc0RlY2xhcmF0aW9uKGlkLCBzdXBlckNsYXNzLCBib2R5KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkNsYXNzRGVjbGFyYXRpb247XG5cdCAgICAgICAgdGhpcy5pZCA9IGlkO1xuXHQgICAgICAgIHRoaXMuc3VwZXJDbGFzcyA9IHN1cGVyQ2xhc3M7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBDbGFzc0RlY2xhcmF0aW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLkNsYXNzRGVjbGFyYXRpb24gPSBDbGFzc0RlY2xhcmF0aW9uO1xuXHR2YXIgQ2xhc3NFeHByZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIENsYXNzRXhwcmVzc2lvbihpZCwgc3VwZXJDbGFzcywgYm9keSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5DbGFzc0V4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5pZCA9IGlkO1xuXHQgICAgICAgIHRoaXMuc3VwZXJDbGFzcyA9IHN1cGVyQ2xhc3M7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBDbGFzc0V4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuQ2xhc3NFeHByZXNzaW9uID0gQ2xhc3NFeHByZXNzaW9uO1xuXHR2YXIgQ29tcHV0ZWRNZW1iZXJFeHByZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIENvbXB1dGVkTWVtYmVyRXhwcmVzc2lvbihvYmplY3QsIHByb3BlcnR5KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4Lk1lbWJlckV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5jb21wdXRlZCA9IHRydWU7XG5cdCAgICAgICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7XG5cdCAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIENvbXB1dGVkTWVtYmVyRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5Db21wdXRlZE1lbWJlckV4cHJlc3Npb24gPSBDb21wdXRlZE1lbWJlckV4cHJlc3Npb247XG5cdHZhciBDb25kaXRpb25hbEV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gQ29uZGl0aW9uYWxFeHByZXNzaW9uKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5Db25kaXRpb25hbEV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy50ZXN0ID0gdGVzdDtcblx0ICAgICAgICB0aGlzLmNvbnNlcXVlbnQgPSBjb25zZXF1ZW50O1xuXHQgICAgICAgIHRoaXMuYWx0ZXJuYXRlID0gYWx0ZXJuYXRlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIENvbmRpdGlvbmFsRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5Db25kaXRpb25hbEV4cHJlc3Npb24gPSBDb25kaXRpb25hbEV4cHJlc3Npb247XG5cdHZhciBDb250aW51ZVN0YXRlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBDb250aW51ZVN0YXRlbWVudChsYWJlbCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5Db250aW51ZVN0YXRlbWVudDtcblx0ICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gQ29udGludWVTdGF0ZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuQ29udGludWVTdGF0ZW1lbnQgPSBDb250aW51ZVN0YXRlbWVudDtcblx0dmFyIERlYnVnZ2VyU3RhdGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIERlYnVnZ2VyU3RhdGVtZW50KCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5EZWJ1Z2dlclN0YXRlbWVudDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBEZWJ1Z2dlclN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5EZWJ1Z2dlclN0YXRlbWVudCA9IERlYnVnZ2VyU3RhdGVtZW50O1xuXHR2YXIgRGlyZWN0aXZlID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIERpcmVjdGl2ZShleHByZXNzaW9uLCBkaXJlY3RpdmUpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRXhwcmVzc2lvblN0YXRlbWVudDtcblx0ICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuZGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIERpcmVjdGl2ZTtcblx0fSgpKTtcblx0ZXhwb3J0cy5EaXJlY3RpdmUgPSBEaXJlY3RpdmU7XG5cdHZhciBEb1doaWxlU3RhdGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIERvV2hpbGVTdGF0ZW1lbnQoYm9keSwgdGVzdCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5Eb1doaWxlU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICAgICAgdGhpcy50ZXN0ID0gdGVzdDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBEb1doaWxlU3RhdGVtZW50O1xuXHR9KCkpO1xuXHRleHBvcnRzLkRvV2hpbGVTdGF0ZW1lbnQgPSBEb1doaWxlU3RhdGVtZW50O1xuXHR2YXIgRW1wdHlTdGF0ZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gRW1wdHlTdGF0ZW1lbnQoKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkVtcHR5U3RhdGVtZW50O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEVtcHR5U3RhdGVtZW50O1xuXHR9KCkpO1xuXHRleHBvcnRzLkVtcHR5U3RhdGVtZW50ID0gRW1wdHlTdGF0ZW1lbnQ7XG5cdHZhciBFeHBvcnRBbGxEZWNsYXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBFeHBvcnRBbGxEZWNsYXJhdGlvbihzb3VyY2UpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRXhwb3J0QWxsRGVjbGFyYXRpb247XG5cdCAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gRXhwb3J0QWxsRGVjbGFyYXRpb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuRXhwb3J0QWxsRGVjbGFyYXRpb24gPSBFeHBvcnRBbGxEZWNsYXJhdGlvbjtcblx0dmFyIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZGVjbGFyYXRpb24pIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uO1xuXHQgICAgICAgIHRoaXMuZGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbjtcblx0ICAgIH1cblx0ICAgIHJldHVybiBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uID0gRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uO1xuXHR2YXIgRXhwb3J0TmFtZWREZWNsYXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBFeHBvcnROYW1lZERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uLCBzcGVjaWZpZXJzLCBzb3VyY2UpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRXhwb3J0TmFtZWREZWNsYXJhdGlvbjtcblx0ICAgICAgICB0aGlzLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG5cdCAgICAgICAgdGhpcy5zcGVjaWZpZXJzID0gc3BlY2lmaWVycztcblx0ICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBFeHBvcnROYW1lZERlY2xhcmF0aW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLkV4cG9ydE5hbWVkRGVjbGFyYXRpb24gPSBFeHBvcnROYW1lZERlY2xhcmF0aW9uO1xuXHR2YXIgRXhwb3J0U3BlY2lmaWVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEV4cG9ydFNwZWNpZmllcihsb2NhbCwgZXhwb3J0ZWQpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRXhwb3J0U3BlY2lmaWVyO1xuXHQgICAgICAgIHRoaXMuZXhwb3J0ZWQgPSBleHBvcnRlZDtcblx0ICAgICAgICB0aGlzLmxvY2FsID0gbG9jYWw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gRXhwb3J0U3BlY2lmaWVyO1xuXHR9KCkpO1xuXHRleHBvcnRzLkV4cG9ydFNwZWNpZmllciA9IEV4cG9ydFNwZWNpZmllcjtcblx0dmFyIEV4cHJlc3Npb25TdGF0ZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gRXhwcmVzc2lvblN0YXRlbWVudChleHByZXNzaW9uKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkV4cHJlc3Npb25TdGF0ZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcblx0ICAgIH1cblx0ICAgIHJldHVybiBFeHByZXNzaW9uU3RhdGVtZW50O1xuXHR9KCkpO1xuXHRleHBvcnRzLkV4cHJlc3Npb25TdGF0ZW1lbnQgPSBFeHByZXNzaW9uU3RhdGVtZW50O1xuXHR2YXIgRm9ySW5TdGF0ZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gRm9ySW5TdGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRm9ySW5TdGF0ZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdDtcblx0ICAgICAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgICAgICB0aGlzLmVhY2ggPSBmYWxzZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBGb3JJblN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5Gb3JJblN0YXRlbWVudCA9IEZvckluU3RhdGVtZW50O1xuXHR2YXIgRm9yT2ZTdGF0ZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gRm9yT2ZTdGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRm9yT2ZTdGF0ZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdDtcblx0ICAgICAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBGb3JPZlN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5Gb3JPZlN0YXRlbWVudCA9IEZvck9mU3RhdGVtZW50O1xuXHR2YXIgRm9yU3RhdGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEZvclN0YXRlbWVudChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguRm9yU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMuaW5pdCA9IGluaXQ7XG5cdCAgICAgICAgdGhpcy50ZXN0ID0gdGVzdDtcblx0ICAgICAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcblx0ICAgICAgICB0aGlzLmJvZHkgPSBib2R5O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEZvclN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5Gb3JTdGF0ZW1lbnQgPSBGb3JTdGF0ZW1lbnQ7XG5cdHZhciBGdW5jdGlvbkRlY2xhcmF0aW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEZ1bmN0aW9uRGVjbGFyYXRpb24oaWQsIHBhcmFtcywgYm9keSwgZ2VuZXJhdG9yKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LkZ1bmN0aW9uRGVjbGFyYXRpb247XG5cdCAgICAgICAgdGhpcy5pZCA9IGlkO1xuXHQgICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICAgICAgdGhpcy5nZW5lcmF0b3IgPSBnZW5lcmF0b3I7XG5cdCAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5hc3luYyA9IGZhbHNlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEZ1bmN0aW9uRGVjbGFyYXRpb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuRnVuY3Rpb25EZWNsYXJhdGlvbiA9IEZ1bmN0aW9uRGVjbGFyYXRpb247XG5cdHZhciBGdW5jdGlvbkV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gRnVuY3Rpb25FeHByZXNzaW9uKGlkLCBwYXJhbXMsIGJvZHksIGdlbmVyYXRvcikge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5GdW5jdGlvbkV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5pZCA9IGlkO1xuXHQgICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICAgICAgdGhpcy5nZW5lcmF0b3IgPSBnZW5lcmF0b3I7XG5cdCAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5hc3luYyA9IGZhbHNlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEZ1bmN0aW9uRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5GdW5jdGlvbkV4cHJlc3Npb24gPSBGdW5jdGlvbkV4cHJlc3Npb247XG5cdHZhciBJZGVudGlmaWVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIElkZW50aWZpZXIobmFtZSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5JZGVudGlmaWVyO1xuXHQgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gSWRlbnRpZmllcjtcblx0fSgpKTtcblx0ZXhwb3J0cy5JZGVudGlmaWVyID0gSWRlbnRpZmllcjtcblx0dmFyIElmU3RhdGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIElmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5JZlN0YXRlbWVudDtcblx0ICAgICAgICB0aGlzLnRlc3QgPSB0ZXN0O1xuXHQgICAgICAgIHRoaXMuY29uc2VxdWVudCA9IGNvbnNlcXVlbnQ7XG5cdCAgICAgICAgdGhpcy5hbHRlcm5hdGUgPSBhbHRlcm5hdGU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gSWZTdGF0ZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSWZTdGF0ZW1lbnQgPSBJZlN0YXRlbWVudDtcblx0dmFyIEltcG9ydERlY2xhcmF0aW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEltcG9ydERlY2xhcmF0aW9uKHNwZWNpZmllcnMsIHNvdXJjZSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5JbXBvcnREZWNsYXJhdGlvbjtcblx0ICAgICAgICB0aGlzLnNwZWNpZmllcnMgPSBzcGVjaWZpZXJzO1xuXHQgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEltcG9ydERlY2xhcmF0aW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLkltcG9ydERlY2xhcmF0aW9uID0gSW1wb3J0RGVjbGFyYXRpb247XG5cdHZhciBJbXBvcnREZWZhdWx0U3BlY2lmaWVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEltcG9ydERlZmF1bHRTcGVjaWZpZXIobG9jYWwpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguSW1wb3J0RGVmYXVsdFNwZWNpZmllcjtcblx0ICAgICAgICB0aGlzLmxvY2FsID0gbG9jYWw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gSW1wb3J0RGVmYXVsdFNwZWNpZmllcjtcblx0fSgpKTtcblx0ZXhwb3J0cy5JbXBvcnREZWZhdWx0U3BlY2lmaWVyID0gSW1wb3J0RGVmYXVsdFNwZWNpZmllcjtcblx0dmFyIEltcG9ydE5hbWVzcGFjZVNwZWNpZmllciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXIobG9jYWwpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyO1xuXHQgICAgICAgIHRoaXMubG9jYWwgPSBsb2NhbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXI7XG5cdH0oKSk7XG5cdGV4cG9ydHMuSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyID0gSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyO1xuXHR2YXIgSW1wb3J0U3BlY2lmaWVyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIEltcG9ydFNwZWNpZmllcihsb2NhbCwgaW1wb3J0ZWQpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguSW1wb3J0U3BlY2lmaWVyO1xuXHQgICAgICAgIHRoaXMubG9jYWwgPSBsb2NhbDtcblx0ICAgICAgICB0aGlzLmltcG9ydGVkID0gaW1wb3J0ZWQ7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gSW1wb3J0U3BlY2lmaWVyO1xuXHR9KCkpO1xuXHRleHBvcnRzLkltcG9ydFNwZWNpZmllciA9IEltcG9ydFNwZWNpZmllcjtcblx0dmFyIExhYmVsZWRTdGF0ZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gTGFiZWxlZFN0YXRlbWVudChsYWJlbCwgYm9keSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5MYWJlbGVkU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcblx0ICAgICAgICB0aGlzLmJvZHkgPSBib2R5O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIExhYmVsZWRTdGF0ZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuTGFiZWxlZFN0YXRlbWVudCA9IExhYmVsZWRTdGF0ZW1lbnQ7XG5cdHZhciBMaXRlcmFsID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIExpdGVyYWwodmFsdWUsIHJhdykge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5MaXRlcmFsO1xuXHQgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0ICAgICAgICB0aGlzLnJhdyA9IHJhdztcblx0ICAgIH1cblx0ICAgIHJldHVybiBMaXRlcmFsO1xuXHR9KCkpO1xuXHRleHBvcnRzLkxpdGVyYWwgPSBMaXRlcmFsO1xuXHR2YXIgTWV0YVByb3BlcnR5ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIE1ldGFQcm9wZXJ0eShtZXRhLCBwcm9wZXJ0eSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5NZXRhUHJvcGVydHk7XG5cdCAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcblx0ICAgICAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gTWV0YVByb3BlcnR5O1xuXHR9KCkpO1xuXHRleHBvcnRzLk1ldGFQcm9wZXJ0eSA9IE1ldGFQcm9wZXJ0eTtcblx0dmFyIE1ldGhvZERlZmluaXRpb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gTWV0aG9kRGVmaW5pdGlvbihrZXksIGNvbXB1dGVkLCB2YWx1ZSwga2luZCwgaXNTdGF0aWMpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguTWV0aG9kRGVmaW5pdGlvbjtcblx0ICAgICAgICB0aGlzLmtleSA9IGtleTtcblx0ICAgICAgICB0aGlzLmNvbXB1dGVkID0gY29tcHV0ZWQ7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXHQgICAgICAgIHRoaXMua2luZCA9IGtpbmQ7XG5cdCAgICAgICAgdGhpcy5zdGF0aWMgPSBpc1N0YXRpYztcblx0ICAgIH1cblx0ICAgIHJldHVybiBNZXRob2REZWZpbml0aW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLk1ldGhvZERlZmluaXRpb24gPSBNZXRob2REZWZpbml0aW9uO1xuXHR2YXIgTW9kdWxlID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIE1vZHVsZShib2R5KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlByb2dyYW07XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgICAgICB0aGlzLnNvdXJjZVR5cGUgPSAnbW9kdWxlJztcblx0ICAgIH1cblx0ICAgIHJldHVybiBNb2R1bGU7XG5cdH0oKSk7XG5cdGV4cG9ydHMuTW9kdWxlID0gTW9kdWxlO1xuXHR2YXIgTmV3RXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBOZXdFeHByZXNzaW9uKGNhbGxlZSwgYXJncykge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5OZXdFeHByZXNzaW9uO1xuXHQgICAgICAgIHRoaXMuY2FsbGVlID0gY2FsbGVlO1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnRzID0gYXJncztcblx0ICAgIH1cblx0ICAgIHJldHVybiBOZXdFeHByZXNzaW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLk5ld0V4cHJlc3Npb24gPSBOZXdFeHByZXNzaW9uO1xuXHR2YXIgT2JqZWN0RXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBPYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguT2JqZWN0RXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIE9iamVjdEV4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuT2JqZWN0RXhwcmVzc2lvbiA9IE9iamVjdEV4cHJlc3Npb247XG5cdHZhciBPYmplY3RQYXR0ZXJuID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIE9iamVjdFBhdHRlcm4ocHJvcGVydGllcykge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5PYmplY3RQYXR0ZXJuO1xuXHQgICAgICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gT2JqZWN0UGF0dGVybjtcblx0fSgpKTtcblx0ZXhwb3J0cy5PYmplY3RQYXR0ZXJuID0gT2JqZWN0UGF0dGVybjtcblx0dmFyIFByb3BlcnR5ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIFByb3BlcnR5KGtpbmQsIGtleSwgY29tcHV0ZWQsIHZhbHVlLCBtZXRob2QsIHNob3J0aGFuZCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5Qcm9wZXJ0eTtcblx0ICAgICAgICB0aGlzLmtleSA9IGtleTtcblx0ICAgICAgICB0aGlzLmNvbXB1dGVkID0gY29tcHV0ZWQ7XG5cdCAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXHQgICAgICAgIHRoaXMua2luZCA9IGtpbmQ7XG5cdCAgICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG5cdCAgICAgICAgdGhpcy5zaG9ydGhhbmQgPSBzaG9ydGhhbmQ7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gUHJvcGVydHk7XG5cdH0oKSk7XG5cdGV4cG9ydHMuUHJvcGVydHkgPSBQcm9wZXJ0eTtcblx0dmFyIFJlZ2V4TGl0ZXJhbCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBSZWdleExpdGVyYWwodmFsdWUsIHJhdywgcGF0dGVybiwgZmxhZ3MpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguTGl0ZXJhbDtcblx0ICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cdCAgICAgICAgdGhpcy5yYXcgPSByYXc7XG5cdCAgICAgICAgdGhpcy5yZWdleCA9IHsgcGF0dGVybjogcGF0dGVybiwgZmxhZ3M6IGZsYWdzIH07XG5cdCAgICB9XG5cdCAgICByZXR1cm4gUmVnZXhMaXRlcmFsO1xuXHR9KCkpO1xuXHRleHBvcnRzLlJlZ2V4TGl0ZXJhbCA9IFJlZ2V4TGl0ZXJhbDtcblx0dmFyIFJlc3RFbGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIFJlc3RFbGVtZW50KGFyZ3VtZW50KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlJlc3RFbGVtZW50O1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBSZXN0RWxlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5SZXN0RWxlbWVudCA9IFJlc3RFbGVtZW50O1xuXHR2YXIgUmV0dXJuU3RhdGVtZW50ID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIFJldHVyblN0YXRlbWVudChhcmd1bWVudCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5SZXR1cm5TdGF0ZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5hcmd1bWVudCA9IGFyZ3VtZW50O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFJldHVyblN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5SZXR1cm5TdGF0ZW1lbnQgPSBSZXR1cm5TdGF0ZW1lbnQ7XG5cdHZhciBTY3JpcHQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gU2NyaXB0KGJvZHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguUHJvZ3JhbTtcblx0ICAgICAgICB0aGlzLmJvZHkgPSBib2R5O1xuXHQgICAgICAgIHRoaXMuc291cmNlVHlwZSA9ICdzY3JpcHQnO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFNjcmlwdDtcblx0fSgpKTtcblx0ZXhwb3J0cy5TY3JpcHQgPSBTY3JpcHQ7XG5cdHZhciBTZXF1ZW5jZUV4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gU2VxdWVuY2VFeHByZXNzaW9uKGV4cHJlc3Npb25zKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlNlcXVlbmNlRXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLmV4cHJlc3Npb25zID0gZXhwcmVzc2lvbnM7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gU2VxdWVuY2VFeHByZXNzaW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLlNlcXVlbmNlRXhwcmVzc2lvbiA9IFNlcXVlbmNlRXhwcmVzc2lvbjtcblx0dmFyIFNwcmVhZEVsZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gU3ByZWFkRWxlbWVudChhcmd1bWVudCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5TcHJlYWRFbGVtZW50O1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBTcHJlYWRFbGVtZW50O1xuXHR9KCkpO1xuXHRleHBvcnRzLlNwcmVhZEVsZW1lbnQgPSBTcHJlYWRFbGVtZW50O1xuXHR2YXIgU3RhdGljTWVtYmVyRXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBTdGF0aWNNZW1iZXJFeHByZXNzaW9uKG9iamVjdCwgcHJvcGVydHkpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguTWVtYmVyRXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLmNvbXB1dGVkID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7XG5cdCAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFN0YXRpY01lbWJlckV4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuU3RhdGljTWVtYmVyRXhwcmVzc2lvbiA9IFN0YXRpY01lbWJlckV4cHJlc3Npb247XG5cdHZhciBTdXBlciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBTdXBlcigpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguU3VwZXI7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gU3VwZXI7XG5cdH0oKSk7XG5cdGV4cG9ydHMuU3VwZXIgPSBTdXBlcjtcblx0dmFyIFN3aXRjaENhc2UgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gU3dpdGNoQ2FzZSh0ZXN0LCBjb25zZXF1ZW50KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlN3aXRjaENhc2U7XG5cdCAgICAgICAgdGhpcy50ZXN0ID0gdGVzdDtcblx0ICAgICAgICB0aGlzLmNvbnNlcXVlbnQgPSBjb25zZXF1ZW50O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFN3aXRjaENhc2U7XG5cdH0oKSk7XG5cdGV4cG9ydHMuU3dpdGNoQ2FzZSA9IFN3aXRjaENhc2U7XG5cdHZhciBTd2l0Y2hTdGF0ZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gU3dpdGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCwgY2FzZXMpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguU3dpdGNoU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMuZGlzY3JpbWluYW50ID0gZGlzY3JpbWluYW50O1xuXHQgICAgICAgIHRoaXMuY2FzZXMgPSBjYXNlcztcblx0ICAgIH1cblx0ICAgIHJldHVybiBTd2l0Y2hTdGF0ZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuU3dpdGNoU3RhdGVtZW50ID0gU3dpdGNoU3RhdGVtZW50O1xuXHR2YXIgVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbih0YWcsIHF1YXNpKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLnRhZyA9IHRhZztcblx0ICAgICAgICB0aGlzLnF1YXNpID0gcXVhc2k7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLlRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbiA9IFRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjtcblx0dmFyIFRlbXBsYXRlRWxlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBUZW1wbGF0ZUVsZW1lbnQodmFsdWUsIHRhaWwpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguVGVtcGxhdGVFbGVtZW50O1xuXHQgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblx0ICAgICAgICB0aGlzLnRhaWwgPSB0YWlsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFRlbXBsYXRlRWxlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5UZW1wbGF0ZUVsZW1lbnQgPSBUZW1wbGF0ZUVsZW1lbnQ7XG5cdHZhciBUZW1wbGF0ZUxpdGVyYWwgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gVGVtcGxhdGVMaXRlcmFsKHF1YXNpcywgZXhwcmVzc2lvbnMpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguVGVtcGxhdGVMaXRlcmFsO1xuXHQgICAgICAgIHRoaXMucXVhc2lzID0gcXVhc2lzO1xuXHQgICAgICAgIHRoaXMuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcblx0ICAgIH1cblx0ICAgIHJldHVybiBUZW1wbGF0ZUxpdGVyYWw7XG5cdH0oKSk7XG5cdGV4cG9ydHMuVGVtcGxhdGVMaXRlcmFsID0gVGVtcGxhdGVMaXRlcmFsO1xuXHR2YXIgVGhpc0V4cHJlc3Npb24gPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgZnVuY3Rpb24gVGhpc0V4cHJlc3Npb24oKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlRoaXNFeHByZXNzaW9uO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFRoaXNFeHByZXNzaW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLlRoaXNFeHByZXNzaW9uID0gVGhpc0V4cHJlc3Npb247XG5cdHZhciBUaHJvd1N0YXRlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBUaHJvd1N0YXRlbWVudChhcmd1bWVudCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5UaHJvd1N0YXRlbWVudDtcblx0ICAgICAgICB0aGlzLmFyZ3VtZW50ID0gYXJndW1lbnQ7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gVGhyb3dTdGF0ZW1lbnQ7XG5cdH0oKSk7XG5cdGV4cG9ydHMuVGhyb3dTdGF0ZW1lbnQgPSBUaHJvd1N0YXRlbWVudDtcblx0dmFyIFRyeVN0YXRlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBUcnlTdGF0ZW1lbnQoYmxvY2ssIGhhbmRsZXIsIGZpbmFsaXplcikge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5UcnlTdGF0ZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuXHQgICAgICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXI7XG5cdCAgICAgICAgdGhpcy5maW5hbGl6ZXIgPSBmaW5hbGl6ZXI7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gVHJ5U3RhdGVtZW50O1xuXHR9KCkpO1xuXHRleHBvcnRzLlRyeVN0YXRlbWVudCA9IFRyeVN0YXRlbWVudDtcblx0dmFyIFVuYXJ5RXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBVbmFyeUV4cHJlc3Npb24ob3BlcmF0b3IsIGFyZ3VtZW50KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlVuYXJ5RXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG5cdCAgICAgICAgdGhpcy5hcmd1bWVudCA9IGFyZ3VtZW50O1xuXHQgICAgICAgIHRoaXMucHJlZml4ID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBVbmFyeUV4cHJlc3Npb247XG5cdH0oKSk7XG5cdGV4cG9ydHMuVW5hcnlFeHByZXNzaW9uID0gVW5hcnlFeHByZXNzaW9uO1xuXHR2YXIgVXBkYXRlRXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBVcGRhdGVFeHByZXNzaW9uKG9wZXJhdG9yLCBhcmd1bWVudCwgcHJlZml4KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LlVwZGF0ZUV4cHJlc3Npb247XG5cdCAgICAgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yO1xuXHQgICAgICAgIHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDtcblx0ICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBVcGRhdGVFeHByZXNzaW9uO1xuXHR9KCkpO1xuXHRleHBvcnRzLlVwZGF0ZUV4cHJlc3Npb24gPSBVcGRhdGVFeHByZXNzaW9uO1xuXHR2YXIgVmFyaWFibGVEZWNsYXJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBWYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9ucywga2luZCkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5WYXJpYWJsZURlY2xhcmF0aW9uO1xuXHQgICAgICAgIHRoaXMuZGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zO1xuXHQgICAgICAgIHRoaXMua2luZCA9IGtpbmQ7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gVmFyaWFibGVEZWNsYXJhdGlvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5WYXJpYWJsZURlY2xhcmF0aW9uID0gVmFyaWFibGVEZWNsYXJhdGlvbjtcblx0dmFyIFZhcmlhYmxlRGVjbGFyYXRvciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpIHtcblx0ICAgICAgICB0aGlzLnR5cGUgPSBzeW50YXhfMS5TeW50YXguVmFyaWFibGVEZWNsYXJhdG9yO1xuXHQgICAgICAgIHRoaXMuaWQgPSBpZDtcblx0ICAgICAgICB0aGlzLmluaXQgPSBpbml0O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFZhcmlhYmxlRGVjbGFyYXRvcjtcblx0fSgpKTtcblx0ZXhwb3J0cy5WYXJpYWJsZURlY2xhcmF0b3IgPSBWYXJpYWJsZURlY2xhcmF0b3I7XG5cdHZhciBXaGlsZVN0YXRlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBXaGlsZVN0YXRlbWVudCh0ZXN0LCBib2R5KSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LldoaWxlU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMudGVzdCA9IHRlc3Q7XG5cdCAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBXaGlsZVN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5XaGlsZVN0YXRlbWVudCA9IFdoaWxlU3RhdGVtZW50O1xuXHR2YXIgV2l0aFN0YXRlbWVudCA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBXaXRoU3RhdGVtZW50KG9iamVjdCwgYm9keSkge1xuXHQgICAgICAgIHRoaXMudHlwZSA9IHN5bnRheF8xLlN5bnRheC5XaXRoU3RhdGVtZW50O1xuXHQgICAgICAgIHRoaXMub2JqZWN0ID0gb2JqZWN0O1xuXHQgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gV2l0aFN0YXRlbWVudDtcblx0fSgpKTtcblx0ZXhwb3J0cy5XaXRoU3RhdGVtZW50ID0gV2l0aFN0YXRlbWVudDtcblx0dmFyIFlpZWxkRXhwcmVzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBZaWVsZEV4cHJlc3Npb24oYXJndW1lbnQsIGRlbGVnYXRlKSB7XG5cdCAgICAgICAgdGhpcy50eXBlID0gc3ludGF4XzEuU3ludGF4LllpZWxkRXhwcmVzc2lvbjtcblx0ICAgICAgICB0aGlzLmFyZ3VtZW50ID0gYXJndW1lbnQ7XG5cdCAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIFlpZWxkRXhwcmVzc2lvbjtcblx0fSgpKTtcblx0ZXhwb3J0cy5ZaWVsZEV4cHJlc3Npb24gPSBZaWVsZEV4cHJlc3Npb247XG5cblxuLyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cdHZhciBhc3NlcnRfMSA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdHZhciBlcnJvcl9oYW5kbGVyXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0dmFyIG1lc3NhZ2VzXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgc2Nhbm5lcl8xID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdHZhciBzeW50YXhfMSA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdHZhciB0b2tlbl8xID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdHZhciBBcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyID0gJ0Fycm93UGFyYW1ldGVyUGxhY2VIb2xkZXInO1xuXHR2YXIgUGFyc2VyID0gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZ1bmN0aW9uIFBhcnNlcihjb2RlLCBvcHRpb25zLCBkZWxlZ2F0ZSkge1xuXHQgICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG5cdCAgICAgICAgdGhpcy5jb25maWcgPSB7XG5cdCAgICAgICAgICAgIHJhbmdlOiAodHlwZW9mIG9wdGlvbnMucmFuZ2UgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5yYW5nZSxcblx0ICAgICAgICAgICAgbG9jOiAodHlwZW9mIG9wdGlvbnMubG9jID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMubG9jLFxuXHQgICAgICAgICAgICBzb3VyY2U6IG51bGwsXG5cdCAgICAgICAgICAgIHRva2VuczogKHR5cGVvZiBvcHRpb25zLnRva2VucyA9PT0gJ2Jvb2xlYW4nKSAmJiBvcHRpb25zLnRva2Vucyxcblx0ICAgICAgICAgICAgY29tbWVudDogKHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5jb21tZW50LFxuXHQgICAgICAgICAgICB0b2xlcmFudDogKHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMudG9sZXJhbnRcblx0ICAgICAgICB9O1xuXHQgICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2MgJiYgb3B0aW9ucy5zb3VyY2UgJiYgb3B0aW9ucy5zb3VyY2UgIT09IG51bGwpIHtcblx0ICAgICAgICAgICAgdGhpcy5jb25maWcuc291cmNlID0gU3RyaW5nKG9wdGlvbnMuc291cmNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlO1xuXHQgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gbmV3IGVycm9yX2hhbmRsZXJfMS5FcnJvckhhbmRsZXIoKTtcblx0ICAgICAgICB0aGlzLmVycm9ySGFuZGxlci50b2xlcmFudCA9IHRoaXMuY29uZmlnLnRvbGVyYW50O1xuXHQgICAgICAgIHRoaXMuc2Nhbm5lciA9IG5ldyBzY2FubmVyXzEuU2Nhbm5lcihjb2RlLCB0aGlzLmVycm9ySGFuZGxlcik7XG5cdCAgICAgICAgdGhpcy5zY2FubmVyLnRyYWNrQ29tbWVudCA9IHRoaXMuY29uZmlnLmNvbW1lbnQ7XG5cdCAgICAgICAgdGhpcy5vcGVyYXRvclByZWNlZGVuY2UgPSB7XG5cdCAgICAgICAgICAgICcpJzogMCxcblx0ICAgICAgICAgICAgJzsnOiAwLFxuXHQgICAgICAgICAgICAnLCc6IDAsXG5cdCAgICAgICAgICAgICc9JzogMCxcblx0ICAgICAgICAgICAgJ10nOiAwLFxuXHQgICAgICAgICAgICAnfHwnOiAxLFxuXHQgICAgICAgICAgICAnJiYnOiAyLFxuXHQgICAgICAgICAgICAnfCc6IDMsXG5cdCAgICAgICAgICAgICdeJzogNCxcblx0ICAgICAgICAgICAgJyYnOiA1LFxuXHQgICAgICAgICAgICAnPT0nOiA2LFxuXHQgICAgICAgICAgICAnIT0nOiA2LFxuXHQgICAgICAgICAgICAnPT09JzogNixcblx0ICAgICAgICAgICAgJyE9PSc6IDYsXG5cdCAgICAgICAgICAgICc8JzogNyxcblx0ICAgICAgICAgICAgJz4nOiA3LFxuXHQgICAgICAgICAgICAnPD0nOiA3LFxuXHQgICAgICAgICAgICAnPj0nOiA3LFxuXHQgICAgICAgICAgICAnPDwnOiA4LFxuXHQgICAgICAgICAgICAnPj4nOiA4LFxuXHQgICAgICAgICAgICAnPj4+JzogOCxcblx0ICAgICAgICAgICAgJysnOiA5LFxuXHQgICAgICAgICAgICAnLSc6IDksXG5cdCAgICAgICAgICAgICcqJzogMTEsXG5cdCAgICAgICAgICAgICcvJzogMTEsXG5cdCAgICAgICAgICAgICclJzogMTFcblx0ICAgICAgICB9O1xuXHQgICAgICAgIHRoaXMubG9va2FoZWFkID0ge1xuXHQgICAgICAgICAgICB0eXBlOiAyIC8qIEVPRiAqLyxcblx0ICAgICAgICAgICAgdmFsdWU6ICcnLFxuXHQgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgbGluZVN0YXJ0OiAwLFxuXHQgICAgICAgICAgICBzdGFydDogMCxcblx0ICAgICAgICAgICAgZW5kOiAwXG5cdCAgICAgICAgfTtcblx0ICAgICAgICB0aGlzLmhhc0xpbmVUZXJtaW5hdG9yID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0ID0ge1xuXHQgICAgICAgICAgICBpc01vZHVsZTogZmFsc2UsXG5cdCAgICAgICAgICAgIGF3YWl0OiBmYWxzZSxcblx0ICAgICAgICAgICAgYWxsb3dJbjogdHJ1ZSxcblx0ICAgICAgICAgICAgYWxsb3dTdHJpY3REaXJlY3RpdmU6IHRydWUsXG5cdCAgICAgICAgICAgIGFsbG93WWllbGQ6IHRydWUsXG5cdCAgICAgICAgICAgIGZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvcjogbnVsbCxcblx0ICAgICAgICAgICAgaXNBc3NpZ25tZW50VGFyZ2V0OiBmYWxzZSxcblx0ICAgICAgICAgICAgaXNCaW5kaW5nRWxlbWVudDogZmFsc2UsXG5cdCAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBmYWxzZSxcblx0ICAgICAgICAgICAgaW5JdGVyYXRpb246IGZhbHNlLFxuXHQgICAgICAgICAgICBpblN3aXRjaDogZmFsc2UsXG5cdCAgICAgICAgICAgIGxhYmVsU2V0OiB7fSxcblx0ICAgICAgICAgICAgc3RyaWN0OiBmYWxzZVxuXHQgICAgICAgIH07XG5cdCAgICAgICAgdGhpcy50b2tlbnMgPSBbXTtcblx0ICAgICAgICB0aGlzLnN0YXJ0TWFya2VyID0ge1xuXHQgICAgICAgICAgICBpbmRleDogMCxcblx0ICAgICAgICAgICAgbGluZTogdGhpcy5zY2FubmVyLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGNvbHVtbjogMFxuXHQgICAgICAgIH07XG5cdCAgICAgICAgdGhpcy5sYXN0TWFya2VyID0ge1xuXHQgICAgICAgICAgICBpbmRleDogMCxcblx0ICAgICAgICAgICAgbGluZTogdGhpcy5zY2FubmVyLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGNvbHVtbjogMFxuXHQgICAgICAgIH07XG5cdCAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICB0aGlzLmxhc3RNYXJrZXIgPSB7XG5cdCAgICAgICAgICAgIGluZGV4OiB0aGlzLnNjYW5uZXIuaW5kZXgsXG5cdCAgICAgICAgICAgIGxpbmU6IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICBjb2x1bW46IHRoaXMuc2Nhbm5lci5pbmRleCAtIHRoaXMuc2Nhbm5lci5saW5lU3RhcnRcblx0ICAgICAgICB9O1xuXHQgICAgfVxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS50aHJvd0Vycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2VGb3JtYXQpIHtcblx0ICAgICAgICB2YXIgdmFsdWVzID0gW107XG5cdCAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcblx0ICAgICAgICAgICAgdmFsdWVzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cdCAgICAgICAgdmFyIG1zZyA9IG1lc3NhZ2VGb3JtYXQucmVwbGFjZSgvJShcXGQpL2csIGZ1bmN0aW9uICh3aG9sZSwgaWR4KSB7XG5cdCAgICAgICAgICAgIGFzc2VydF8xLmFzc2VydChpZHggPCBhcmdzLmxlbmd0aCwgJ01lc3NhZ2UgcmVmZXJlbmNlIG11c3QgYmUgaW4gcmFuZ2UnKTtcblx0ICAgICAgICAgICAgcmV0dXJuIGFyZ3NbaWR4XTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmxhc3RNYXJrZXIuaW5kZXg7XG5cdCAgICAgICAgdmFyIGxpbmUgPSB0aGlzLmxhc3RNYXJrZXIubGluZTtcblx0ICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5sYXN0TWFya2VyLmNvbHVtbiArIDE7XG5cdCAgICAgICAgdGhyb3cgdGhpcy5lcnJvckhhbmRsZXIuY3JlYXRlRXJyb3IoaW5kZXgsIGxpbmUsIGNvbHVtbiwgbXNnKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnRvbGVyYXRlRXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZUZvcm1hdCkge1xuXHQgICAgICAgIHZhciB2YWx1ZXMgPSBbXTtcblx0ICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuXHQgICAgICAgICAgICB2YWx1ZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblx0ICAgICAgICB2YXIgbXNnID0gbWVzc2FnZUZvcm1hdC5yZXBsYWNlKC8lKFxcZCkvZywgZnVuY3Rpb24gKHdob2xlLCBpZHgpIHtcblx0ICAgICAgICAgICAgYXNzZXJ0XzEuYXNzZXJ0KGlkeCA8IGFyZ3MubGVuZ3RoLCAnTWVzc2FnZSByZWZlcmVuY2UgbXVzdCBiZSBpbiByYW5nZScpO1xuXHQgICAgICAgICAgICByZXR1cm4gYXJnc1tpZHhdO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIHZhciBpbmRleCA9IHRoaXMubGFzdE1hcmtlci5pbmRleDtcblx0ICAgICAgICB2YXIgbGluZSA9IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyO1xuXHQgICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmxhc3RNYXJrZXIuY29sdW1uICsgMTtcblx0ICAgICAgICB0aGlzLmVycm9ySGFuZGxlci50b2xlcmF0ZUVycm9yKGluZGV4LCBsaW5lLCBjb2x1bW4sIG1zZyk7XG5cdCAgICB9O1xuXHQgICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb2YgdGhlIHRva2VuLlxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS51bmV4cGVjdGVkVG9rZW5FcnJvciA9IGZ1bmN0aW9uICh0b2tlbiwgbWVzc2FnZSkge1xuXHQgICAgICAgIHZhciBtc2cgPSBtZXNzYWdlIHx8IG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuO1xuXHQgICAgICAgIHZhciB2YWx1ZTtcblx0ICAgICAgICBpZiAodG9rZW4pIHtcblx0ICAgICAgICAgICAgaWYgKCFtZXNzYWdlKSB7XG5cdCAgICAgICAgICAgICAgICBtc2cgPSAodG9rZW4udHlwZSA9PT0gMiAvKiBFT0YgKi8pID8gbWVzc2FnZXNfMS5NZXNzYWdlcy5VbmV4cGVjdGVkRU9TIDpcblx0ICAgICAgICAgICAgICAgICAgICAodG9rZW4udHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovKSA/IG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZElkZW50aWZpZXIgOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAodG9rZW4udHlwZSA9PT0gNiAvKiBOdW1lcmljTGl0ZXJhbCAqLykgPyBtZXNzYWdlc18xLk1lc3NhZ2VzLlVuZXhwZWN0ZWROdW1iZXIgOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09IDggLyogU3RyaW5nTGl0ZXJhbCAqLykgPyBtZXNzYWdlc18xLk1lc3NhZ2VzLlVuZXhwZWN0ZWRTdHJpbmcgOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tlbi50eXBlID09PSAxMCAvKiBUZW1wbGF0ZSAqLykgPyBtZXNzYWdlc18xLk1lc3NhZ2VzLlVuZXhwZWN0ZWRUZW1wbGF0ZSA6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IDQgLyogS2V5d29yZCAqLykge1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNGdXR1cmVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFJlc2VydmVkO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0ICYmIHRoaXMuc2Nhbm5lci5pc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YWx1ZSA9IHRva2VuLnZhbHVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdmFsdWUgPSAnSUxMRUdBTCc7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKCclMCcsIHZhbHVlKTtcblx0ICAgICAgICBpZiAodG9rZW4gJiYgdHlwZW9mIHRva2VuLmxpbmVOdW1iZXIgPT09ICdudW1iZXInKSB7XG5cdCAgICAgICAgICAgIHZhciBpbmRleCA9IHRva2VuLnN0YXJ0O1xuXHQgICAgICAgICAgICB2YXIgbGluZSA9IHRva2VuLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgICAgIHZhciBsYXN0TWFya2VyTGluZVN0YXJ0ID0gdGhpcy5sYXN0TWFya2VyLmluZGV4IC0gdGhpcy5sYXN0TWFya2VyLmNvbHVtbjtcblx0ICAgICAgICAgICAgdmFyIGNvbHVtbiA9IHRva2VuLnN0YXJ0IC0gbGFzdE1hcmtlckxpbmVTdGFydCArIDE7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5jcmVhdGVFcnJvcihpbmRleCwgbGluZSwgY29sdW1uLCBtc2cpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5sYXN0TWFya2VyLmluZGV4O1xuXHQgICAgICAgICAgICB2YXIgbGluZSA9IHRoaXMubGFzdE1hcmtlci5saW5lO1xuXHQgICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5sYXN0TWFya2VyLmNvbHVtbiArIDE7XG5cdCAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5jcmVhdGVFcnJvcihpbmRleCwgbGluZSwgY29sdW1uLCBtc2cpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnRocm93VW5leHBlY3RlZFRva2VuID0gZnVuY3Rpb24gKHRva2VuLCBtZXNzYWdlKSB7XG5cdCAgICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkVG9rZW5FcnJvcih0b2tlbiwgbWVzc2FnZSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbiA9IGZ1bmN0aW9uICh0b2tlbiwgbWVzc2FnZSkge1xuXHQgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLnRvbGVyYXRlKHRoaXMudW5leHBlY3RlZFRva2VuRXJyb3IodG9rZW4sIG1lc3NhZ2UpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLmNvbGxlY3RDb21tZW50cyA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmNvbW1lbnQpIHtcblx0ICAgICAgICAgICAgdGhpcy5zY2FubmVyLnNjYW5Db21tZW50cygpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdmFyIGNvbW1lbnRzID0gdGhpcy5zY2FubmVyLnNjYW5Db21tZW50cygpO1xuXHQgICAgICAgICAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCAmJiB0aGlzLmRlbGVnYXRlKSB7XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1lbnRzLmxlbmd0aDsgKytpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBjb21tZW50c1tpXTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IHZvaWQgMDtcblx0ICAgICAgICAgICAgICAgICAgICBub2RlID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBlLm11bHRpTGluZSA/ICdCbG9ja0NvbW1lbnQnIDogJ0xpbmVDb21tZW50Jyxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2Nhbm5lci5zb3VyY2Uuc2xpY2UoZS5zbGljZVswXSwgZS5zbGljZVsxXSlcblx0ICAgICAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5yYW5nZSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJhbmdlID0gZS5yYW5nZTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmxvYykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmxvYyA9IGUubG9jO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBlLmxvYy5zdGFydC5saW5lLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBlLmxvYy5zdGFydC5jb2x1bW4sXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGUucmFuZ2VbMF1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBlLmxvYy5lbmQubGluZSxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogZS5sb2MuZW5kLmNvbHVtbixcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogZS5yYW5nZVsxXVxuXHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlKG5vZGUsIG1ldGFkYXRhKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdCAgICAvLyBGcm9tIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHRvIGFuIGV4dGVybmFsIHN0cnVjdHVyZVxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5nZXRUb2tlblJhdyA9IGZ1bmN0aW9uICh0b2tlbikge1xuXHQgICAgICAgIHJldHVybiB0aGlzLnNjYW5uZXIuc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuY29udmVydFRva2VuID0gZnVuY3Rpb24gKHRva2VuKSB7XG5cdCAgICAgICAgdmFyIHQgPSB7XG5cdCAgICAgICAgICAgIHR5cGU6IHRva2VuXzEuVG9rZW5OYW1lW3Rva2VuLnR5cGVdLFxuXHQgICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRUb2tlblJhdyh0b2tlbilcblx0ICAgICAgICB9O1xuXHQgICAgICAgIGlmICh0aGlzLmNvbmZpZy5yYW5nZSkge1xuXHQgICAgICAgICAgICB0LnJhbmdlID0gW3Rva2VuLnN0YXJ0LCB0b2tlbi5lbmRdO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGhpcy5jb25maWcubG9jKSB7XG5cdCAgICAgICAgICAgIHQubG9jID0ge1xuXHQgICAgICAgICAgICAgICAgc3RhcnQ6IHtcblx0ICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLnN0YXJ0TWFya2VyLmxpbmUsXG5cdCAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLnN0YXJ0TWFya2VyLmNvbHVtblxuXHQgICAgICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAgICAgIGVuZDoge1xuXHQgICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5zY2FubmVyLmluZGV4IC0gdGhpcy5zY2FubmVyLmxpbmVTdGFydFxuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gOSAvKiBSZWd1bGFyRXhwcmVzc2lvbiAqLykge1xuXHQgICAgICAgICAgICB2YXIgcGF0dGVybiA9IHRva2VuLnBhdHRlcm47XG5cdCAgICAgICAgICAgIHZhciBmbGFncyA9IHRva2VuLmZsYWdzO1xuXHQgICAgICAgICAgICB0LnJlZ2V4ID0geyBwYXR0ZXJuOiBwYXR0ZXJuLCBmbGFnczogZmxhZ3MgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHQ7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5uZXh0VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIHRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgdGhpcy5sYXN0TWFya2VyLmluZGV4ID0gdGhpcy5zY2FubmVyLmluZGV4O1xuXHQgICAgICAgIHRoaXMubGFzdE1hcmtlci5saW5lID0gdGhpcy5zY2FubmVyLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgdGhpcy5sYXN0TWFya2VyLmNvbHVtbiA9IHRoaXMuc2Nhbm5lci5pbmRleCAtIHRoaXMuc2Nhbm5lci5saW5lU3RhcnQ7XG5cdCAgICAgICAgdGhpcy5jb2xsZWN0Q29tbWVudHMoKTtcblx0ICAgICAgICBpZiAodGhpcy5zY2FubmVyLmluZGV4ICE9PSB0aGlzLnN0YXJ0TWFya2VyLmluZGV4KSB7XG5cdCAgICAgICAgICAgIHRoaXMuc3RhcnRNYXJrZXIuaW5kZXggPSB0aGlzLnNjYW5uZXIuaW5kZXg7XG5cdCAgICAgICAgICAgIHRoaXMuc3RhcnRNYXJrZXIubGluZSA9IHRoaXMuc2Nhbm5lci5saW5lTnVtYmVyO1xuXHQgICAgICAgICAgICB0aGlzLnN0YXJ0TWFya2VyLmNvbHVtbiA9IHRoaXMuc2Nhbm5lci5pbmRleCAtIHRoaXMuc2Nhbm5lci5saW5lU3RhcnQ7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBuZXh0ID0gdGhpcy5zY2FubmVyLmxleCgpO1xuXHQgICAgICAgIHRoaXMuaGFzTGluZVRlcm1pbmF0b3IgPSAodG9rZW4ubGluZU51bWJlciAhPT0gbmV4dC5saW5lTnVtYmVyKTtcblx0ICAgICAgICBpZiAobmV4dCAmJiB0aGlzLmNvbnRleHQuc3RyaWN0ICYmIG5leHQudHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKG5leHQudmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICBuZXh0LnR5cGUgPSA0IC8qIEtleXdvcmQgKi87XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5sb29rYWhlYWQgPSBuZXh0O1xuXHQgICAgICAgIGlmICh0aGlzLmNvbmZpZy50b2tlbnMgJiYgbmV4dC50eXBlICE9PSAyIC8qIEVPRiAqLykge1xuXHQgICAgICAgICAgICB0aGlzLnRva2Vucy5wdXNoKHRoaXMuY29udmVydFRva2VuKG5leHQpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRva2VuO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUubmV4dFJlZ2V4VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdGhpcy5jb2xsZWN0Q29tbWVudHMoKTtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLnNjYW5uZXIuc2NhblJlZ0V4cCgpO1xuXHQgICAgICAgIGlmICh0aGlzLmNvbmZpZy50b2tlbnMpIHtcblx0ICAgICAgICAgICAgLy8gUG9wIHRoZSBwcmV2aW91cyB0b2tlbiwgJy8nIG9yICcvPSdcblx0ICAgICAgICAgICAgLy8gVGhpcyBpcyBhZGRlZCBmcm9tIHRoZSBsb29rYWhlYWQgdG9rZW4uXG5cdCAgICAgICAgICAgIHRoaXMudG9rZW5zLnBvcCgpO1xuXHQgICAgICAgICAgICB0aGlzLnRva2Vucy5wdXNoKHRoaXMuY29udmVydFRva2VuKHRva2VuKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIFByaW1lIHRoZSBuZXh0IGxvb2thaGVhZC5cblx0ICAgICAgICB0aGlzLmxvb2thaGVhZCA9IHRva2VuO1xuXHQgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgcmV0dXJuIHRva2VuO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuY3JlYXRlTm9kZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICBpbmRleDogdGhpcy5zdGFydE1hcmtlci5pbmRleCxcblx0ICAgICAgICAgICAgbGluZTogdGhpcy5zdGFydE1hcmtlci5saW5lLFxuXHQgICAgICAgICAgICBjb2x1bW46IHRoaXMuc3RhcnRNYXJrZXIuY29sdW1uXG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnN0YXJ0Tm9kZSA9IGZ1bmN0aW9uICh0b2tlbiwgbGFzdExpbmVTdGFydCkge1xuXHQgICAgICAgIGlmIChsYXN0TGluZVN0YXJ0ID09PSB2b2lkIDApIHsgbGFzdExpbmVTdGFydCA9IDA7IH1cblx0ICAgICAgICB2YXIgY29sdW1uID0gdG9rZW4uc3RhcnQgLSB0b2tlbi5saW5lU3RhcnQ7XG5cdCAgICAgICAgdmFyIGxpbmUgPSB0b2tlbi5saW5lTnVtYmVyO1xuXHQgICAgICAgIGlmIChjb2x1bW4gPCAwKSB7XG5cdCAgICAgICAgICAgIGNvbHVtbiArPSBsYXN0TGluZVN0YXJ0O1xuXHQgICAgICAgICAgICBsaW5lLS07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIGluZGV4OiB0b2tlbi5zdGFydCxcblx0ICAgICAgICAgICAgbGluZTogbGluZSxcblx0ICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5cblx0ICAgICAgICB9O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAobWFya2VyLCBub2RlKSB7XG5cdCAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJhbmdlKSB7XG5cdCAgICAgICAgICAgIG5vZGUucmFuZ2UgPSBbbWFya2VyLmluZGV4LCB0aGlzLmxhc3RNYXJrZXIuaW5kZXhdO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGhpcy5jb25maWcubG9jKSB7XG5cdCAgICAgICAgICAgIG5vZGUubG9jID0ge1xuXHQgICAgICAgICAgICAgICAgc3RhcnQ6IHtcblx0ICAgICAgICAgICAgICAgICAgICBsaW5lOiBtYXJrZXIubGluZSxcblx0ICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG1hcmtlci5jb2x1bW4sXG5cdCAgICAgICAgICAgICAgICB9LFxuXHQgICAgICAgICAgICAgICAgZW5kOiB7XG5cdCAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5sYXN0TWFya2VyLmxpbmUsXG5cdCAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmxhc3RNYXJrZXIuY29sdW1uXG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5zb3VyY2UpIHtcblx0ICAgICAgICAgICAgICAgIG5vZGUubG9jLnNvdXJjZSA9IHRoaXMuY29uZmlnLnNvdXJjZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSkge1xuXHQgICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSB7XG5cdCAgICAgICAgICAgICAgICBzdGFydDoge1xuXHQgICAgICAgICAgICAgICAgICAgIGxpbmU6IG1hcmtlci5saW5lLFxuXHQgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogbWFya2VyLmNvbHVtbixcblx0ICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG1hcmtlci5pbmRleFxuXHQgICAgICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAgICAgIGVuZDoge1xuXHQgICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGFzdE1hcmtlci5saW5lLFxuXHQgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5sYXN0TWFya2VyLmNvbHVtbixcblx0ICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMubGFzdE1hcmtlci5pbmRleFxuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICB0aGlzLmRlbGVnYXRlKG5vZGUsIG1ldGFkYXRhKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIG5vZGU7XG5cdCAgICB9O1xuXHQgICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci5cblx0ICAgIC8vIElmIG5vdCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5leHBlY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSA3IC8qIFB1bmN0dWF0b3IgKi8gfHwgdG9rZW4udmFsdWUgIT09IHZhbHVlKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odG9rZW4pO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdCAgICAvLyBRdWlldGx5IGV4cGVjdCBhIGNvbW1hIHdoZW4gaW4gdG9sZXJhbnQgbW9kZSwgb3RoZXJ3aXNlIGRlbGVnYXRlcyB0byBleHBlY3QoKS5cblx0ICAgIFBhcnNlci5wcm90b3R5cGUuZXhwZWN0Q29tbWFTZXBhcmF0b3IgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgaWYgKHRoaXMuY29uZmlnLnRvbGVyYW50KSB7XG5cdCAgICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovICYmIHRva2VuLnZhbHVlID09PSAnLCcpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovICYmIHRva2VuLnZhbHVlID09PSAnOycpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odG9rZW4sIG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhpcy5leHBlY3QoJywnKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgLy8gRXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQga2V5d29yZC5cblx0ICAgIC8vIElmIG5vdCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5leHBlY3RLZXl3b3JkID0gZnVuY3Rpb24gKGtleXdvcmQpIHtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSA0IC8qIEtleXdvcmQgKi8gfHwgdG9rZW4udmFsdWUgIT09IGtleXdvcmQpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0b2tlbik7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwdW5jdHVhdG9yLlxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLmxvb2thaGVhZC50eXBlID09PSA3IC8qIFB1bmN0dWF0b3IgKi8gJiYgdGhpcy5sb29rYWhlYWQudmFsdWUgPT09IHZhbHVlO1xuXHQgICAgfTtcblx0ICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBrZXl3b3JkXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLm1hdGNoS2V5d29yZCA9IGZ1bmN0aW9uIChrZXl3b3JkKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDQgLyogS2V5d29yZCAqLyAmJiB0aGlzLmxvb2thaGVhZC52YWx1ZSA9PT0ga2V5d29yZDtcblx0ICAgIH07XG5cdCAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCB0b2tlbiBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgY29udGV4dHVhbCBrZXl3b3JkXG5cdCAgICAvLyAod2hlcmUgYW4gaWRlbnRpZmllciBpcyBzb21ldGltZXMgYSBrZXl3b3JkIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dClcblx0ICAgIFBhcnNlci5wcm90b3R5cGUubWF0Y2hDb250ZXh0dWFsS2V5d29yZCA9IGZ1bmN0aW9uIChrZXl3b3JkKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLyAmJiB0aGlzLmxvb2thaGVhZC52YWx1ZSA9PT0ga2V5d29yZDtcblx0ICAgIH07XG5cdCAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCB0b2tlbiBpcyBhbiBhc3NpZ25tZW50IG9wZXJhdG9yXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLm1hdGNoQXNzaWduID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICh0aGlzLmxvb2thaGVhZC50eXBlICE9PSA3IC8qIFB1bmN0dWF0b3IgKi8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgb3AgPSB0aGlzLmxvb2thaGVhZC52YWx1ZTtcblx0ICAgICAgICByZXR1cm4gb3AgPT09ICc9JyB8fFxuXHQgICAgICAgICAgICBvcCA9PT0gJyo9JyB8fFxuXHQgICAgICAgICAgICBvcCA9PT0gJyoqPScgfHxcblx0ICAgICAgICAgICAgb3AgPT09ICcvPScgfHxcblx0ICAgICAgICAgICAgb3AgPT09ICclPScgfHxcblx0ICAgICAgICAgICAgb3AgPT09ICcrPScgfHxcblx0ICAgICAgICAgICAgb3AgPT09ICctPScgfHxcblx0ICAgICAgICAgICAgb3AgPT09ICc8PD0nIHx8XG5cdCAgICAgICAgICAgIG9wID09PSAnPj49JyB8fFxuXHQgICAgICAgICAgICBvcCA9PT0gJz4+Pj0nIHx8XG5cdCAgICAgICAgICAgIG9wID09PSAnJj0nIHx8XG5cdCAgICAgICAgICAgIG9wID09PSAnXj0nIHx8XG5cdCAgICAgICAgICAgIG9wID09PSAnfD0nO1xuXHQgICAgfTtcblx0ICAgIC8vIENvdmVyIGdyYW1tYXIgc3VwcG9ydC5cblx0ICAgIC8vXG5cdCAgICAvLyBXaGVuIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBwb3NpdGlvbiBzdGFydHMgd2l0aCBhbiBsZWZ0IHBhcmVudGhlc2lzLCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgdHlwZVxuXHQgICAgLy8gb2YgdGhlIHN5bnRheCBpcyB0byBiZSBkZWZlcnJlZCBhcmJpdHJhcmlseSBsb25nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHBhcmVudGhlc2VzIHBhaXIgKHBsdXMgYSBsb29rYWhlYWQpXG5cdCAgICAvLyBvciB0aGUgZmlyc3QgY29tbWEuIFRoaXMgc2l0dWF0aW9uIGFsc28gZGVmZXJzIHRoZSBkZXRlcm1pbmF0aW9uIG9mIGFsbCB0aGUgZXhwcmVzc2lvbnMgbmVzdGVkIGluIHRoZSBwYWlyLlxuXHQgICAgLy9cblx0ICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBwcm9kdWN0aW9ucyB0aGF0IGNhbiBiZSBwYXJzZWQgaW4gYSBwYXJlbnRoZXNlcyBwYWlyIHRoYXQgbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZFxuXHQgICAgLy8gYWZ0ZXIgdGhlIG91dGVybW9zdCBwYWlyIGlzIGNsb3NlZC4gVGhleSBhcmU6XG5cdCAgICAvL1xuXHQgICAgLy8gICAxLiBBc3NpZ25tZW50RXhwcmVzc2lvblxuXHQgICAgLy8gICAyLiBCaW5kaW5nRWxlbWVudHNcblx0ICAgIC8vICAgMy4gQXNzaWdubWVudFRhcmdldHNcblx0ICAgIC8vXG5cdCAgICAvLyBJbiBvcmRlciB0byBhdm9pZCBleHBvbmVudGlhbCBiYWNrdHJhY2tpbmcsIHdlIHVzZSB0d28gZmxhZ3MgdG8gZGVub3RlIGlmIHRoZSBwcm9kdWN0aW9uIGNhbiBiZVxuXHQgICAgLy8gYmluZGluZyBlbGVtZW50IG9yIGFzc2lnbm1lbnQgdGFyZ2V0LlxuXHQgICAgLy9cblx0ICAgIC8vIFRoZSB0aHJlZSBwcm9kdWN0aW9ucyBoYXZlIHRoZSByZWxhdGlvbnNoaXA6XG5cdCAgICAvL1xuXHQgICAgLy8gICBCaW5kaW5nRWxlbWVudHMg4oqGIEFzc2lnbm1lbnRUYXJnZXRzIOKKhiBBc3NpZ25tZW50RXhwcmVzc2lvblxuXHQgICAgLy9cblx0ICAgIC8vIHdpdGggYSBzaW5nbGUgZXhjZXB0aW9uIHRoYXQgQ292ZXJJbml0aWFsaXplZE5hbWUgd2hlbiB1c2VkIGRpcmVjdGx5IGluIGFuIEV4cHJlc3Npb24sIGdlbmVyYXRlc1xuXHQgICAgLy8gYW4gZWFybHkgZXJyb3IuIFRoZXJlZm9yZSwgd2UgbmVlZCB0aGUgdGhpcmQgc3RhdGUsIGZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvciwgdG8gdHJhY2sgdGhlXG5cdCAgICAvLyBmaXJzdCB1c2FnZSBvZiBDb3ZlckluaXRpYWxpemVkTmFtZSBhbmQgcmVwb3J0IGl0IHdoZW4gd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBwYXJlbnRoZXNlcyBwYWlyLlxuXHQgICAgLy9cblx0ICAgIC8vIGlzb2xhdGVDb3ZlckdyYW1tYXIgZnVuY3Rpb24gcnVucyB0aGUgZ2l2ZW4gcGFyc2VyIGZ1bmN0aW9uIHdpdGggYSBuZXcgY292ZXIgZ3JhbW1hciBjb250ZXh0LCBhbmQgaXQgZG9lcyBub3Rcblx0ICAgIC8vIGVmZmVjdCB0aGUgY3VycmVudCBmbGFncy4gVGhpcyBtZWFucyB0aGUgcHJvZHVjdGlvbiB0aGUgcGFyc2VyIHBhcnNlcyBpcyBvbmx5IHVzZWQgYXMgYW4gZXhwcmVzc2lvbi4gVGhlcmVmb3JlXG5cdCAgICAvLyB0aGUgQ292ZXJJbml0aWFsaXplZE5hbWUgY2hlY2sgaXMgY29uZHVjdGVkLlxuXHQgICAgLy9cblx0ICAgIC8vIGluaGVyaXRDb3ZlckdyYW1tYXIgZnVuY3Rpb24gcnVucyB0aGUgZ2l2ZW4gcGFyc2UgZnVuY3Rpb24gd2l0aCBhIG5ldyBjb3ZlciBncmFtbWFyIGNvbnRleHQsIGFuZCBpdCBwcm9wYWdhdGVzXG5cdCAgICAvLyB0aGUgZmxhZ3Mgb3V0c2lkZSBvZiB0aGUgcGFyc2VyLiBUaGlzIG1lYW5zIHRoZSBwcm9kdWN0aW9uIHRoZSBwYXJzZXIgcGFyc2VzIGlzIHVzZWQgYXMgYSBwYXJ0IG9mIGEgcG90ZW50aWFsXG5cdCAgICAvLyBwYXR0ZXJuLiBUaGUgQ292ZXJJbml0aWFsaXplZE5hbWUgY2hlY2sgaXMgZGVmZXJyZWQuXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLmlzb2xhdGVDb3ZlckdyYW1tYXIgPSBmdW5jdGlvbiAocGFyc2VGdW5jdGlvbikge1xuXHQgICAgICAgIHZhciBwcmV2aW91c0lzQmluZGluZ0VsZW1lbnQgPSB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudDtcblx0ICAgICAgICB2YXIgcHJldmlvdXNJc0Fzc2lnbm1lbnRUYXJnZXQgPSB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0O1xuXHQgICAgICAgIHZhciBwcmV2aW91c0ZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvciA9IHRoaXMuY29udGV4dC5maXJzdENvdmVySW5pdGlhbGl6ZWROYW1lRXJyb3I7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSB0cnVlO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSB0cnVlO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5maXJzdENvdmVySW5pdGlhbGl6ZWROYW1lRXJyb3IgPSBudWxsO1xuXHQgICAgICAgIHZhciByZXN1bHQgPSBwYXJzZUZ1bmN0aW9uLmNhbGwodGhpcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuY29udGV4dC5maXJzdENvdmVySW5pdGlhbGl6ZWROYW1lRXJyb3IgIT09IG51bGwpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmNvbnRleHQuZmlyc3RDb3ZlckluaXRpYWxpemVkTmFtZUVycm9yKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBwcmV2aW91c0lzQmluZGluZ0VsZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IHByZXZpb3VzSXNBc3NpZ25tZW50VGFyZ2V0O1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5maXJzdENvdmVySW5pdGlhbGl6ZWROYW1lRXJyb3IgPSBwcmV2aW91c0ZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvcjtcblx0ICAgICAgICByZXR1cm4gcmVzdWx0O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuaW5oZXJpdENvdmVyR3JhbW1hciA9IGZ1bmN0aW9uIChwYXJzZUZ1bmN0aW9uKSB7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzSXNCaW5kaW5nRWxlbWVudCA9IHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50O1xuXHQgICAgICAgIHZhciBwcmV2aW91c0lzQXNzaWdubWVudFRhcmdldCA9IHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQ7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzRmlyc3RDb3ZlckluaXRpYWxpemVkTmFtZUVycm9yID0gdGhpcy5jb250ZXh0LmZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvcjtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IHRydWU7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IHRydWU7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvciA9IG51bGw7XG5cdCAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb24uY2FsbCh0aGlzKTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ICYmIHByZXZpb3VzSXNCaW5kaW5nRWxlbWVudDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCAmJiBwcmV2aW91c0lzQXNzaWdubWVudFRhcmdldDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuZmlyc3RDb3ZlckluaXRpYWxpemVkTmFtZUVycm9yID0gcHJldmlvdXNGaXJzdENvdmVySW5pdGlhbGl6ZWROYW1lRXJyb3IgfHwgdGhpcy5jb250ZXh0LmZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvcjtcblx0ICAgICAgICByZXR1cm4gcmVzdWx0O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuY29uc3VtZVNlbWljb2xvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnOycpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2UgaWYgKCF0aGlzLmhhc0xpbmVUZXJtaW5hdG9yKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLmxvb2thaGVhZC50eXBlICE9PSAyIC8qIEVPRiAqLyAmJiAhdGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB0aGlzLmxhc3RNYXJrZXIuaW5kZXggPSB0aGlzLnN0YXJ0TWFya2VyLmluZGV4O1xuXHQgICAgICAgICAgICB0aGlzLmxhc3RNYXJrZXIubGluZSA9IHRoaXMuc3RhcnRNYXJrZXIubGluZTtcblx0ICAgICAgICAgICAgdGhpcy5sYXN0TWFya2VyLmNvbHVtbiA9IHRoaXMuc3RhcnRNYXJrZXIuY29sdW1uO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wcmltYXJ5LWV4cHJlc3Npb25cblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VQcmltYXJ5RXhwcmVzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBleHByO1xuXHQgICAgICAgIHZhciB0b2tlbiwgcmF3O1xuXHQgICAgICAgIHN3aXRjaCAodGhpcy5sb29rYWhlYWQudHlwZSkge1xuXHQgICAgICAgICAgICBjYXNlIDMgLyogSWRlbnRpZmllciAqLzpcblx0ICAgICAgICAgICAgICAgIGlmICgodGhpcy5jb250ZXh0LmlzTW9kdWxlIHx8IHRoaXMuY29udGV4dC5hd2FpdCkgJiYgdGhpcy5sb29rYWhlYWQudmFsdWUgPT09ICdhd2FpdCcpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLm1hdGNoQXN5bmNGdW5jdGlvbigpID8gdGhpcy5wYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpIDogdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JZGVudGlmaWVyKHRoaXMubmV4dFRva2VuKCkudmFsdWUpKTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIDYgLyogTnVtZXJpY0xpdGVyYWwgKi86XG5cdCAgICAgICAgICAgIGNhc2UgOCAvKiBTdHJpbmdMaXRlcmFsICovOlxuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgdGhpcy5sb29rYWhlYWQub2N0YWwpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgcmF3ID0gdGhpcy5nZXRUb2tlblJhdyh0b2tlbik7XG5cdCAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5MaXRlcmFsKHRva2VuLnZhbHVlLCByYXcpKTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIDEgLyogQm9vbGVhbkxpdGVyYWwgKi86XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgcmF3ID0gdGhpcy5nZXRUb2tlblJhdyh0b2tlbik7XG5cdCAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5MaXRlcmFsKHRva2VuLnZhbHVlID09PSAndHJ1ZScsIHJhdykpO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgNSAvKiBOdWxsTGl0ZXJhbCAqLzpcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICByYXcgPSB0aGlzLmdldFRva2VuUmF3KHRva2VuKTtcblx0ICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkxpdGVyYWwobnVsbCwgcmF3KSk7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgY2FzZSAxMCAvKiBUZW1wbGF0ZSAqLzpcblx0ICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLnBhcnNlVGVtcGxhdGVMaXRlcmFsKCk7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgY2FzZSA3IC8qIFB1bmN0dWF0b3IgKi86XG5cdCAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9va2FoZWFkLnZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnKCc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLmluaGVyaXRDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUdyb3VwRXhwcmVzc2lvbik7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1snOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBleHByID0gdGhpcy5pbmhlcml0Q292ZXJHcmFtbWFyKHRoaXMucGFyc2VBcnJheUluaXRpYWxpemVyKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAneyc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLmluaGVyaXRDb3ZlckdyYW1tYXIodGhpcy5wYXJzZU9iamVjdEluaXRpYWxpemVyKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnLyc6XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnLz0nOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nhbm5lci5pbmRleCA9IHRoaXMuc3RhcnRNYXJrZXIuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5uZXh0UmVnZXhUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICByYXcgPSB0aGlzLmdldFRva2VuUmF3KHRva2VuKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuUmVnZXhMaXRlcmFsKHRva2VuLnJlZ2V4LCByYXcsIHRva2VuLnBhdHRlcm4sIHRva2VuLmZsYWdzKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRoaXMubmV4dFRva2VuKCkpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgNCAvKiBLZXl3b3JkICovOlxuXHQgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRleHQuc3RyaWN0ICYmIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkICYmIHRoaXMubWF0Y2hLZXl3b3JkKCd5aWVsZCcpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMucGFyc2VJZGVudGlmaWVyTmFtZSgpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuY29udGV4dC5zdHJpY3QgJiYgdGhpcy5tYXRjaEtleXdvcmQoJ2xldCcpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuSWRlbnRpZmllcih0aGlzLm5leHRUb2tlbigpLnZhbHVlKSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2Z1bmN0aW9uJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMucGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ3RoaXMnKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5UaGlzRXhwcmVzc2lvbigpKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2NsYXNzJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMucGFyc2VDbGFzc0V4cHJlc3Npb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRoaXMubmV4dFRva2VuKCkpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5uZXh0VG9rZW4oKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBleHByO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LWluaXRpYWxpemVyXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlU3ByZWFkRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCcuLi4nKTtcblx0ICAgICAgICB2YXIgYXJnID0gdGhpcy5pbmhlcml0Q292ZXJHcmFtbWFyKHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuU3ByZWFkRWxlbWVudChhcmcpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQXJyYXlJbml0aWFsaXplciA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBlbGVtZW50cyA9IFtdO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCdbJyk7XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLm1hdGNoKCddJykpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJywnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gobnVsbCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaCgnLi4uJykpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5wYXJzZVNwcmVhZEVsZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnXScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJywnKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHRoaXMuaW5oZXJpdENvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pKTtcblx0ICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnXScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJywnKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnXScpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkFycmF5RXhwcmVzc2lvbihlbGVtZW50cykpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC1pbml0aWFsaXplclxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVByb3BlcnR5TWV0aG9kID0gZnVuY3Rpb24gKHBhcmFtcykge1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgIHZhciBwcmV2aW91c1N0cmljdCA9IHRoaXMuY29udGV4dC5zdHJpY3Q7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dTdHJpY3REaXJlY3RpdmUgPSB0aGlzLmNvbnRleHQuYWxsb3dTdHJpY3REaXJlY3RpdmU7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93U3RyaWN0RGlyZWN0aXZlID0gcGFyYW1zLnNpbXBsZTtcblx0ICAgICAgICB2YXIgYm9keSA9IHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk7XG5cdCAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgcGFyYW1zLmZpcnN0UmVzdHJpY3RlZCkge1xuXHQgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHBhcmFtcy5maXJzdFJlc3RyaWN0ZWQsIHBhcmFtcy5tZXNzYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgcGFyYW1zLnN0cmljdGVkKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4ocGFyYW1zLnN0cmljdGVkLCBwYXJhbXMubWVzc2FnZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuY29udGV4dC5zdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dTdHJpY3REaXJlY3RpdmUgPSBwcmV2aW91c0FsbG93U3RyaWN0RGlyZWN0aXZlO1xuXHQgICAgICAgIHJldHVybiBib2R5O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VQcm9wZXJ0eU1ldGhvZEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBpc0dlbmVyYXRvciA9IGZhbHNlO1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dZaWVsZCA9IHRoaXMuY29udGV4dC5hbGxvd1lpZWxkO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gdHJ1ZTtcblx0ICAgICAgICB2YXIgcGFyYW1zID0gdGhpcy5wYXJzZUZvcm1hbFBhcmFtZXRlcnMoKTtcblx0ICAgICAgICB2YXIgbWV0aG9kID0gdGhpcy5wYXJzZVByb3BlcnR5TWV0aG9kKHBhcmFtcyk7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBwcmV2aW91c0FsbG93WWllbGQ7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuRnVuY3Rpb25FeHByZXNzaW9uKG51bGwsIHBhcmFtcy5wYXJhbXMsIG1ldGhvZCwgaXNHZW5lcmF0b3IpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlUHJvcGVydHlNZXRob2RBc3luY0Z1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dZaWVsZCA9IHRoaXMuY29udGV4dC5hbGxvd1lpZWxkO1xuXHQgICAgICAgIHZhciBwcmV2aW91c0F3YWl0ID0gdGhpcy5jb250ZXh0LmF3YWl0O1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmF3YWl0ID0gdHJ1ZTtcblx0ICAgICAgICB2YXIgcGFyYW1zID0gdGhpcy5wYXJzZUZvcm1hbFBhcmFtZXRlcnMoKTtcblx0ICAgICAgICB2YXIgbWV0aG9kID0gdGhpcy5wYXJzZVByb3BlcnR5TWV0aG9kKHBhcmFtcyk7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBwcmV2aW91c0FsbG93WWllbGQ7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmF3YWl0ID0gcHJldmlvdXNBd2FpdDtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Bc3luY0Z1bmN0aW9uRXhwcmVzc2lvbihudWxsLCBwYXJhbXMucGFyYW1zLCBtZXRob2QpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlT2JqZWN0UHJvcGVydHlLZXkgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIHZhciBrZXk7XG5cdCAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG5cdCAgICAgICAgICAgIGNhc2UgOCAvKiBTdHJpbmdMaXRlcmFsICovOlxuXHQgICAgICAgICAgICBjYXNlIDYgLyogTnVtZXJpY0xpdGVyYWwgKi86XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCAmJiB0b2tlbi5vY3RhbCkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odG9rZW4sIG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHZhciByYXcgPSB0aGlzLmdldFRva2VuUmF3KHRva2VuKTtcblx0ICAgICAgICAgICAgICAgIGtleSA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuTGl0ZXJhbCh0b2tlbi52YWx1ZSwgcmF3KSk7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgY2FzZSAzIC8qIElkZW50aWZpZXIgKi86XG5cdCAgICAgICAgICAgIGNhc2UgMSAvKiBCb29sZWFuTGl0ZXJhbCAqLzpcblx0ICAgICAgICAgICAgY2FzZSA1IC8qIE51bGxMaXRlcmFsICovOlxuXHQgICAgICAgICAgICBjYXNlIDQgLyogS2V5d29yZCAqLzpcblx0ICAgICAgICAgICAgICAgIGtleSA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuSWRlbnRpZmllcih0b2tlbi52YWx1ZSkpO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgNyAvKiBQdW5jdHVhdG9yICovOlxuXHQgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnWycpIHtcblx0ICAgICAgICAgICAgICAgICAgICBrZXkgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdCgnXScpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAga2V5ID0gdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0b2tlbik7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgZGVmYXVsdDpcblx0ICAgICAgICAgICAgICAgIGtleSA9IHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odG9rZW4pO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4ga2V5O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuaXNQcm9wZXJ0eUtleSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdCAgICAgICAgcmV0dXJuIChrZXkudHlwZSA9PT0gc3ludGF4XzEuU3ludGF4LklkZW50aWZpZXIgJiYga2V5Lm5hbWUgPT09IHZhbHVlKSB8fFxuXHQgICAgICAgICAgICAoa2V5LnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5MaXRlcmFsICYmIGtleS52YWx1ZSA9PT0gdmFsdWUpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VPYmplY3RQcm9wZXJ0eSA9IGZ1bmN0aW9uIChoYXNQcm90bykge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgdmFyIGtpbmQ7XG5cdCAgICAgICAgdmFyIGtleSA9IG51bGw7XG5cdCAgICAgICAgdmFyIHZhbHVlID0gbnVsbDtcblx0ICAgICAgICB2YXIgY29tcHV0ZWQgPSBmYWxzZTtcblx0ICAgICAgICB2YXIgbWV0aG9kID0gZmFsc2U7XG5cdCAgICAgICAgdmFyIHNob3J0aGFuZCA9IGZhbHNlO1xuXHQgICAgICAgIHZhciBpc0FzeW5jID0gZmFsc2U7XG5cdCAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLykge1xuXHQgICAgICAgICAgICB2YXIgaWQgPSB0b2tlbi52YWx1ZTtcblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgY29tcHV0ZWQgPSB0aGlzLm1hdGNoKCdbJyk7XG5cdCAgICAgICAgICAgIGlzQXN5bmMgPSAhdGhpcy5oYXNMaW5lVGVybWluYXRvciAmJiAoaWQgPT09ICdhc3luYycpICYmXG5cdCAgICAgICAgICAgICAgICAhdGhpcy5tYXRjaCgnOicpICYmICF0aGlzLm1hdGNoKCcoJykgJiYgIXRoaXMubWF0Y2goJyonKSAmJiAhdGhpcy5tYXRjaCgnLCcpO1xuXHQgICAgICAgICAgICBrZXkgPSBpc0FzeW5jID8gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCkgOiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLklkZW50aWZpZXIoaWQpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaCgnKicpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICBjb21wdXRlZCA9IHRoaXMubWF0Y2goJ1snKTtcblx0ICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBsb29rYWhlYWRQcm9wZXJ0eUtleSA9IHRoaXMucXVhbGlmaWVkUHJvcGVydHlOYW1lKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovICYmICFpc0FzeW5jICYmIHRva2VuLnZhbHVlID09PSAnZ2V0JyAmJiBsb29rYWhlYWRQcm9wZXJ0eUtleSkge1xuXHQgICAgICAgICAgICBraW5kID0gJ2dldCc7XG5cdCAgICAgICAgICAgIGNvbXB1dGVkID0gdGhpcy5tYXRjaCgnWycpO1xuXHQgICAgICAgICAgICBrZXkgPSB0aGlzLnBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlR2V0dGVyTWV0aG9kKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLyAmJiAhaXNBc3luYyAmJiB0b2tlbi52YWx1ZSA9PT0gJ3NldCcgJiYgbG9va2FoZWFkUHJvcGVydHlLZXkpIHtcblx0ICAgICAgICAgICAga2luZCA9ICdzZXQnO1xuXHQgICAgICAgICAgICBjb21wdXRlZCA9IHRoaXMubWF0Y2goJ1snKTtcblx0ICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wYXJzZVNldHRlck1ldGhvZCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSA3IC8qIFB1bmN0dWF0b3IgKi8gJiYgdG9rZW4udmFsdWUgPT09ICcqJyAmJiBsb29rYWhlYWRQcm9wZXJ0eUtleSkge1xuXHQgICAgICAgICAgICBraW5kID0gJ2luaXQnO1xuXHQgICAgICAgICAgICBjb21wdXRlZCA9IHRoaXMubWF0Y2goJ1snKTtcblx0ICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wYXJzZUdlbmVyYXRvck1ldGhvZCgpO1xuXHQgICAgICAgICAgICBtZXRob2QgPSB0cnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgaWYgKCFrZXkpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGtpbmQgPSAnaW5pdCc7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCc6JykgJiYgIWlzQXN5bmMpIHtcblx0ICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZWQgJiYgdGhpcy5pc1Byb3BlcnR5S2V5KGtleSwgJ19fcHJvdG9fXycpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1Byb3RvLnZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLkR1cGxpY2F0ZVByb3RvUHJvcGVydHkpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICBoYXNQcm90by52YWx1ZSA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmluaGVyaXRDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoKCcoJykpIHtcblx0ICAgICAgICAgICAgICAgIHZhbHVlID0gaXNBc3luYyA/IHRoaXMucGFyc2VQcm9wZXJ0eU1ldGhvZEFzeW5jRnVuY3Rpb24oKSA6IHRoaXMucGFyc2VQcm9wZXJ0eU1ldGhvZEZ1bmN0aW9uKCk7XG5cdCAgICAgICAgICAgICAgICBtZXRob2QgPSB0cnVlO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLykge1xuXHQgICAgICAgICAgICAgICAgdmFyIGlkID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JZGVudGlmaWVyKHRva2VuLnZhbHVlKSk7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnPScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvciA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Bc3NpZ25tZW50UGF0dGVybihpZCwgaW5pdCkpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGlkO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLm5leHRUb2tlbigpKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Qcm9wZXJ0eShraW5kLCBrZXksIGNvbXB1dGVkLCB2YWx1ZSwgbWV0aG9kLCBzaG9ydGhhbmQpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlT2JqZWN0SW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgneycpO1xuXHQgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW107XG5cdCAgICAgICAgdmFyIGhhc1Byb3RvID0geyB2YWx1ZTogZmFsc2UgfTtcblx0ICAgICAgICB3aGlsZSAoIXRoaXMubWF0Y2goJ30nKSkge1xuXHQgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2godGhpcy5wYXJzZU9iamVjdFByb3BlcnR5KGhhc1Byb3RvKSk7XG5cdCAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdENvbW1hU2VwYXJhdG9yKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJ30nKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5PYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10ZW1wbGF0ZS1saXRlcmFsc1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVRlbXBsYXRlSGVhZCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBhc3NlcnRfMS5hc3NlcnQodGhpcy5sb29rYWhlYWQuaGVhZCwgJ1RlbXBsYXRlIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRoIGEgdGVtcGxhdGUgaGVhZCcpO1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHRva2VuID0gdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICB2YXIgcmF3ID0gdG9rZW4udmFsdWU7XG5cdCAgICAgICAgdmFyIGNvb2tlZCA9IHRva2VuLmNvb2tlZDtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5UZW1wbGF0ZUVsZW1lbnQoeyByYXc6IHJhdywgY29va2VkOiBjb29rZWQgfSwgdG9rZW4udGFpbCkpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VUZW1wbGF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgaWYgKHRoaXMubG9va2FoZWFkLnR5cGUgIT09IDEwIC8qIFRlbXBsYXRlICovKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIHZhciByYXcgPSB0b2tlbi52YWx1ZTtcblx0ICAgICAgICB2YXIgY29va2VkID0gdG9rZW4uY29va2VkO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLlRlbXBsYXRlRWxlbWVudCh7IHJhdzogcmF3LCBjb29rZWQ6IGNvb2tlZCB9LCB0b2tlbi50YWlsKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVRlbXBsYXRlTGl0ZXJhbCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBleHByZXNzaW9ucyA9IFtdO1xuXHQgICAgICAgIHZhciBxdWFzaXMgPSBbXTtcblx0ICAgICAgICB2YXIgcXVhc2kgPSB0aGlzLnBhcnNlVGVtcGxhdGVIZWFkKCk7XG5cdCAgICAgICAgcXVhc2lzLnB1c2gocXVhc2kpO1xuXHQgICAgICAgIHdoaWxlICghcXVhc2kudGFpbCkge1xuXHQgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKHRoaXMucGFyc2VFeHByZXNzaW9uKCkpO1xuXHQgICAgICAgICAgICBxdWFzaSA9IHRoaXMucGFyc2VUZW1wbGF0ZUVsZW1lbnQoKTtcblx0ICAgICAgICAgICAgcXVhc2lzLnB1c2gocXVhc2kpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5UZW1wbGF0ZUxpdGVyYWwocXVhc2lzLCBleHByZXNzaW9ucykpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdyb3VwaW5nLW9wZXJhdG9yXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnJlaW50ZXJwcmV0RXhwcmVzc2lvbkFzUGF0dGVybiA9IGZ1bmN0aW9uIChleHByKSB7XG5cdCAgICAgICAgc3dpdGNoIChleHByLnR5cGUpIHtcblx0ICAgICAgICAgICAgY2FzZSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllcjpcblx0ICAgICAgICAgICAgY2FzZSBzeW50YXhfMS5TeW50YXguTWVtYmVyRXhwcmVzc2lvbjpcblx0ICAgICAgICAgICAgY2FzZSBzeW50YXhfMS5TeW50YXguUmVzdEVsZW1lbnQ6XG5cdCAgICAgICAgICAgIGNhc2Ugc3ludGF4XzEuU3ludGF4LkFzc2lnbm1lbnRQYXR0ZXJuOlxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2Ugc3ludGF4XzEuU3ludGF4LlNwcmVhZEVsZW1lbnQ6XG5cdCAgICAgICAgICAgICAgICBleHByLnR5cGUgPSBzeW50YXhfMS5TeW50YXguUmVzdEVsZW1lbnQ7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnJlaW50ZXJwcmV0RXhwcmVzc2lvbkFzUGF0dGVybihleHByLmFyZ3VtZW50KTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIHN5bnRheF8xLlN5bnRheC5BcnJheUV4cHJlc3Npb246XG5cdCAgICAgICAgICAgICAgICBleHByLnR5cGUgPSBzeW50YXhfMS5TeW50YXguQXJyYXlQYXR0ZXJuO1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHByLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIuZWxlbWVudHNbaV0gIT09IG51bGwpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWludGVycHJldEV4cHJlc3Npb25Bc1BhdHRlcm4oZXhwci5lbGVtZW50c1tpXSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2Ugc3ludGF4XzEuU3ludGF4Lk9iamVjdEV4cHJlc3Npb246XG5cdCAgICAgICAgICAgICAgICBleHByLnR5cGUgPSBzeW50YXhfMS5TeW50YXguT2JqZWN0UGF0dGVybjtcblx0ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwci5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWludGVycHJldEV4cHJlc3Npb25Bc1BhdHRlcm4oZXhwci5wcm9wZXJ0aWVzW2ldLnZhbHVlKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIHN5bnRheF8xLlN5bnRheC5Bc3NpZ25tZW50RXhwcmVzc2lvbjpcblx0ICAgICAgICAgICAgICAgIGV4cHIudHlwZSA9IHN5bnRheF8xLlN5bnRheC5Bc3NpZ25tZW50UGF0dGVybjtcblx0ICAgICAgICAgICAgICAgIGRlbGV0ZSBleHByLm9wZXJhdG9yO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5yZWludGVycHJldEV4cHJlc3Npb25Bc1BhdHRlcm4oZXhwci5sZWZ0KTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgLy8gQWxsb3cgb3RoZXIgbm9kZSB0eXBlIGZvciB0b2xlcmFudCBwYXJzaW5nLlxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VHcm91cEV4cHJlc3Npb24gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGV4cHI7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJygnKTtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnKScpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnPT4nKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJz0+Jyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZXhwciA9IHtcblx0ICAgICAgICAgICAgICAgIHR5cGU6IEFycm93UGFyYW1ldGVyUGxhY2VIb2xkZXIsXG5cdCAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLFxuXHQgICAgICAgICAgICAgICAgYXN5bmM6IGZhbHNlXG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICB2YXIgc3RhcnRUb2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgICAgICB2YXIgcGFyYW1zID0gW107XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCcuLi4nKSkge1xuXHQgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMucGFyc2VSZXN0RWxlbWVudChwYXJhbXMpO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnPT4nKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCc9PicpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZXhwciA9IHtcblx0ICAgICAgICAgICAgICAgICAgICB0eXBlOiBBcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyLFxuXHQgICAgICAgICAgICAgICAgICAgIHBhcmFtczogW2V4cHJdLFxuXHQgICAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZVxuXHQgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHZhciBhcnJvdyA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuaW5oZXJpdENvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJywnKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBleHByZXNzaW9ucyA9IFtdO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKGV4cHIpO1xuXHQgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLmxvb2thaGVhZC50eXBlICE9PSAyIC8qIEVPRiAqLykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJywnKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJyknKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlaW50ZXJwcmV0RXhwcmVzc2lvbkFzUGF0dGVybihleHByZXNzaW9uc1tpXSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFycm93UGFyYW1ldGVyUGxhY2VIb2xkZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBleHByZXNzaW9ucyxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYzogZmFsc2Vcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaCgnLi4uJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2godGhpcy5wYXJzZVJlc3RFbGVtZW50KHBhcmFtcykpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnPT4nKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCc9PicpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlaW50ZXJwcmV0RXhwcmVzc2lvbkFzUGF0dGVybihleHByZXNzaW9uc1tpXSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFycm93UGFyYW1ldGVyUGxhY2VIb2xkZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBleHByZXNzaW9ucyxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYzogZmFsc2Vcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKHRoaXMuaW5oZXJpdENvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyb3cpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIGlmICghYXJyb3cpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUodGhpcy5zdGFydE5vZGUoc3RhcnRUb2tlbiksIG5ldyBOb2RlLlNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGlmICghYXJyb3cpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdCgnKScpO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCc9PicpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByLnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5JZGVudGlmaWVyICYmIGV4cHIubmFtZSA9PT0gJ3lpZWxkJykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3cgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwciA9IHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogW2V4cHJdLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFycm93KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwci50eXBlID09PSBzeW50YXhfMS5TeW50YXguU2VxdWVuY2VFeHByZXNzaW9uKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHByLmV4cHJlc3Npb25zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVpbnRlcnByZXRFeHByZXNzaW9uQXNQYXR0ZXJuKGV4cHIuZXhwcmVzc2lvbnNbaV0pO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVpbnRlcnByZXRFeHByZXNzaW9uQXNQYXR0ZXJuKGV4cHIpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAoZXhwci50eXBlID09PSBzeW50YXhfMS5TeW50YXguU2VxdWVuY2VFeHByZXNzaW9uID8gZXhwci5leHByZXNzaW9ucyA6IFtleHByXSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFycm93UGFyYW1ldGVyUGxhY2VIb2xkZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbWV0ZXJzLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBleHByO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWxlZnQtaGFuZC1zaWRlLWV4cHJlc3Npb25zXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQXJndW1lbnRzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCcoJyk7XG5cdCAgICAgICAgdmFyIGFyZ3MgPSBbXTtcblx0ICAgICAgICBpZiAoIXRoaXMubWF0Y2goJyknKSkge1xuXHQgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGV4cHIgPSB0aGlzLm1hdGNoKCcuLi4nKSA/IHRoaXMucGFyc2VTcHJlYWRFbGVtZW50KCkgOlxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICAgICAgYXJncy5wdXNoKGV4cHIpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJyknKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RDb21tYVNlcGFyYXRvcigpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJyknKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuZXhwZWN0KCcpJyk7XG5cdCAgICAgICAgcmV0dXJuIGFyZ3M7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5pc0lkZW50aWZpZXJOYW1lID0gZnVuY3Rpb24gKHRva2VuKSB7XG5cdCAgICAgICAgcmV0dXJuIHRva2VuLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLyB8fFxuXHQgICAgICAgICAgICB0b2tlbi50eXBlID09PSA0IC8qIEtleXdvcmQgKi8gfHxcblx0ICAgICAgICAgICAgdG9rZW4udHlwZSA9PT0gMSAvKiBCb29sZWFuTGl0ZXJhbCAqLyB8fFxuXHQgICAgICAgICAgICB0b2tlbi50eXBlID09PSA1IC8qIE51bGxMaXRlcmFsICovO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VJZGVudGlmaWVyTmFtZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciB0b2tlbiA9IHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgaWYgKCF0aGlzLmlzSWRlbnRpZmllck5hbWUodG9rZW4pKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odG9rZW4pO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JZGVudGlmaWVyKHRva2VuLnZhbHVlKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZU5ld0V4cHJlc3Npb24gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgaWQgPSB0aGlzLnBhcnNlSWRlbnRpZmllck5hbWUoKTtcblx0ICAgICAgICBhc3NlcnRfMS5hc3NlcnQoaWQubmFtZSA9PT0gJ25ldycsICdOZXcgZXhwcmVzc2lvbiBtdXN0IHN0YXJ0IHdpdGggYG5ld2AnKTtcblx0ICAgICAgICB2YXIgZXhwcjtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnLicpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLmxvb2thaGVhZC50eXBlID09PSAzIC8qIElkZW50aWZpZXIgKi8gJiYgdGhpcy5jb250ZXh0LmluRnVuY3Rpb25Cb2R5ICYmIHRoaXMubG9va2FoZWFkLnZhbHVlID09PSAndGFyZ2V0Jykge1xuXHQgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhpcy5wYXJzZUlkZW50aWZpZXJOYW1lKCk7XG5cdCAgICAgICAgICAgICAgICBleHByID0gbmV3IE5vZGUuTWV0YVByb3BlcnR5KGlkLCBwcm9wZXJ0eSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdmFyIGNhbGxlZSA9IHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbik7XG5cdCAgICAgICAgICAgIHZhciBhcmdzID0gdGhpcy5tYXRjaCgnKCcpID8gdGhpcy5wYXJzZUFyZ3VtZW50cygpIDogW107XG5cdCAgICAgICAgICAgIGV4cHIgPSBuZXcgTm9kZS5OZXdFeHByZXNzaW9uKGNhbGxlZSwgYXJncyk7XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgZXhwcik7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUFzeW5jQXJndW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGFyZyA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5maXJzdENvdmVySW5pdGlhbGl6ZWROYW1lRXJyb3IgPSBudWxsO1xuXHQgICAgICAgIHJldHVybiBhcmc7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUFzeW5jQXJndW1lbnRzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCcoJyk7XG5cdCAgICAgICAgdmFyIGFyZ3MgPSBbXTtcblx0ICAgICAgICBpZiAoIXRoaXMubWF0Y2goJyknKSkge1xuXHQgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGV4cHIgPSB0aGlzLm1hdGNoKCcuLi4nKSA/IHRoaXMucGFyc2VTcHJlYWRFbGVtZW50KCkgOlxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXN5bmNBcmd1bWVudCk7XG5cdCAgICAgICAgICAgICAgICBhcmdzLnB1c2goZXhwcik7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnKScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdENvbW1hU2VwYXJhdG9yKCk7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnKScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICByZXR1cm4gYXJncztcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgc3RhcnRUb2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgIHZhciBtYXliZUFzeW5jID0gdGhpcy5tYXRjaENvbnRleHR1YWxLZXl3b3JkKCdhc3luYycpO1xuXHQgICAgICAgIHZhciBwcmV2aW91c0FsbG93SW4gPSB0aGlzLmNvbnRleHQuYWxsb3dJbjtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dJbiA9IHRydWU7XG5cdCAgICAgICAgdmFyIGV4cHI7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2hLZXl3b3JkKCdzdXBlcicpICYmIHRoaXMuY29udGV4dC5pbkZ1bmN0aW9uQm9keSkge1xuXHQgICAgICAgICAgICBleHByID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIGV4cHIgPSB0aGlzLmZpbmFsaXplKGV4cHIsIG5ldyBOb2RlLlN1cGVyKCkpO1xuXHQgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJygnKSAmJiAhdGhpcy5tYXRjaCgnLicpICYmICF0aGlzLm1hdGNoKCdbJykpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICBleHByID0gdGhpcy5pbmhlcml0Q292ZXJHcmFtbWFyKHRoaXMubWF0Y2hLZXl3b3JkKCduZXcnKSA/IHRoaXMucGFyc2VOZXdFeHByZXNzaW9uIDogdGhpcy5wYXJzZVByaW1hcnlFeHByZXNzaW9uKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJy4nKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJy4nKTtcblx0ICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRoaXMucGFyc2VJZGVudGlmaWVyTmFtZSgpO1xuXHQgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUodGhpcy5zdGFydE5vZGUoc3RhcnRUb2tlbiksIG5ldyBOb2RlLlN0YXRpY01lbWJlckV4cHJlc3Npb24oZXhwciwgcHJvcGVydHkpKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoKCcoJykpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBhc3luY0Fycm93ID0gbWF5YmVBc3luYyAmJiAoc3RhcnRUb2tlbi5saW5lTnVtYmVyID09PSB0aGlzLmxvb2thaGVhZC5saW5lTnVtYmVyKTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB2YXIgYXJncyA9IGFzeW5jQXJyb3cgPyB0aGlzLnBhcnNlQXN5bmNBcmd1bWVudHMoKSA6IHRoaXMucGFyc2VBcmd1bWVudHMoKTtcblx0ICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLmZpbmFsaXplKHRoaXMuc3RhcnROb2RlKHN0YXJ0VG9rZW4pLCBuZXcgTm9kZS5DYWxsRXhwcmVzc2lvbihleHByLCBhcmdzKSk7XG5cdCAgICAgICAgICAgICAgICBpZiAoYXN5bmNBcnJvdyAmJiB0aGlzLm1hdGNoKCc9PicpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgKytpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVpbnRlcnByZXRFeHByZXNzaW9uQXNQYXR0ZXJuKGFyZ3NbaV0pO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICBleHByID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBBcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGFyZ3MsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlXG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoKCdbJykpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCdbJyk7XG5cdCAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJ10nKTtcblx0ICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLmZpbmFsaXplKHRoaXMuc3RhcnROb2RlKHN0YXJ0VG9rZW4pLCBuZXcgTm9kZS5Db21wdXRlZE1lbWJlckV4cHJlc3Npb24oZXhwciwgcHJvcGVydHkpKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmxvb2thaGVhZC50eXBlID09PSAxMCAvKiBUZW1wbGF0ZSAqLyAmJiB0aGlzLmxvb2thaGVhZC5oZWFkKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgcXVhc2kgPSB0aGlzLnBhcnNlVGVtcGxhdGVMaXRlcmFsKCk7XG5cdCAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZSh0aGlzLnN0YXJ0Tm9kZShzdGFydFRva2VuKSwgbmV3IE5vZGUuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIsIHF1YXNpKSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjtcblx0ICAgICAgICByZXR1cm4gZXhwcjtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlU3VwZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3N1cGVyJyk7XG5cdCAgICAgICAgaWYgKCF0aGlzLm1hdGNoKCdbJykgJiYgIXRoaXMubWF0Y2goJy4nKSkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuU3VwZXIoKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgYXNzZXJ0XzEuYXNzZXJ0KHRoaXMuY29udGV4dC5hbGxvd0luLCAnY2FsbGVlIG9mIG5ldyBleHByZXNzaW9uIGFsd2F5cyBhbGxvdyBpbiBrZXl3b3JkLicpO1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5zdGFydE5vZGUodGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgIHZhciBleHByID0gKHRoaXMubWF0Y2hLZXl3b3JkKCdzdXBlcicpICYmIHRoaXMuY29udGV4dC5pbkZ1bmN0aW9uQm9keSkgPyB0aGlzLnBhcnNlU3VwZXIoKSA6XG5cdCAgICAgICAgICAgIHRoaXMuaW5oZXJpdENvdmVyR3JhbW1hcih0aGlzLm1hdGNoS2V5d29yZCgnbmV3JykgPyB0aGlzLnBhcnNlTmV3RXhwcmVzc2lvbiA6IHRoaXMucGFyc2VQcmltYXJ5RXhwcmVzc2lvbik7XG5cdCAgICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJ1snKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJ1snKTtcblx0ICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlRXhwcmVzc2lvbik7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdCgnXScpO1xuXHQgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuQ29tcHV0ZWRNZW1iZXJFeHByZXNzaW9uKGV4cHIsIHByb3BlcnR5KSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaCgnLicpKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdCgnLicpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhpcy5wYXJzZUlkZW50aWZpZXJOYW1lKCk7XG5cdCAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5TdGF0aWNNZW1iZXJFeHByZXNzaW9uKGV4cHIsIHByb3BlcnR5KSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5sb29rYWhlYWQudHlwZSA9PT0gMTAgLyogVGVtcGxhdGUgKi8gJiYgdGhpcy5sb29rYWhlYWQuaGVhZCkge1xuXHQgICAgICAgICAgICAgICAgdmFyIHF1YXNpID0gdGhpcy5wYXJzZVRlbXBsYXRlTGl0ZXJhbCgpO1xuXHQgICAgICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIsIHF1YXNpKSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gZXhwcjtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy11cGRhdGUtZXhwcmVzc2lvbnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VVcGRhdGVFeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBleHByO1xuXHQgICAgICAgIHZhciBzdGFydFRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2goJysrJykgfHwgdGhpcy5tYXRjaCgnLS0nKSkge1xuXHQgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuc3RhcnROb2RlKHN0YXJ0VG9rZW4pO1xuXHQgICAgICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICBleHByID0gdGhpcy5pbmhlcml0Q292ZXJHcmFtbWFyKHRoaXMucGFyc2VVbmFyeUV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCAmJiBleHByLnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5JZGVudGlmaWVyICYmIHRoaXMuc2Nhbm5lci5pc1Jlc3RyaWN0ZWRXb3JkKGV4cHIubmFtZSkpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdExIU1ByZWZpeCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0KSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlRXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YXIgcHJlZml4ID0gdHJ1ZTtcblx0ICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuVXBkYXRlRXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwciwgcHJlZml4KSk7XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIGV4cHIgPSB0aGlzLmluaGVyaXRDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwpO1xuXHQgICAgICAgICAgICBpZiAoIXRoaXMuaGFzTGluZVRlcm1pbmF0b3IgJiYgdGhpcy5sb29rYWhlYWQudHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnKysnKSB8fCB0aGlzLm1hdGNoKCctLScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgZXhwci50eXBlID09PSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllciAmJiB0aGlzLnNjYW5uZXIuaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdExIU1Bvc3RmaXgpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBvcGVyYXRvciA9IHRoaXMubmV4dFRva2VuKCkudmFsdWU7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHByZWZpeCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB0aGlzLmZpbmFsaXplKHRoaXMuc3RhcnROb2RlKHN0YXJ0VG9rZW4pLCBuZXcgTm9kZS5VcGRhdGVFeHByZXNzaW9uKG9wZXJhdG9yLCBleHByLCBwcmVmaXgpKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gZXhwcjtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy11bmFyeS1vcGVyYXRvcnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VBd2FpdEV4cHJlc3Npb24gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIHZhciBhcmd1bWVudCA9IHRoaXMucGFyc2VVbmFyeUV4cHJlc3Npb24oKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Bd2FpdEV4cHJlc3Npb24oYXJndW1lbnQpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlVW5hcnlFeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBleHByO1xuXHQgICAgICAgIGlmICh0aGlzLm1hdGNoKCcrJykgfHwgdGhpcy5tYXRjaCgnLScpIHx8IHRoaXMubWF0Y2goJ34nKSB8fCB0aGlzLm1hdGNoKCchJykgfHxcblx0ICAgICAgICAgICAgdGhpcy5tYXRjaEtleXdvcmQoJ2RlbGV0ZScpIHx8IHRoaXMubWF0Y2hLZXl3b3JkKCd2b2lkJykgfHwgdGhpcy5tYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7XG5cdCAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5zdGFydE5vZGUodGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICBleHByID0gdGhpcy5pbmhlcml0Q292ZXJHcmFtbWFyKHRoaXMucGFyc2VVbmFyeUV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5VbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpKTtcblx0ICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgZXhwci5vcGVyYXRvciA9PT0gJ2RlbGV0ZScgJiYgZXhwci5hcmd1bWVudC50eXBlID09PSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllcikge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0RGVsZXRlKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0JpbmRpbmdFbGVtZW50ID0gZmFsc2U7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udGV4dC5hd2FpdCAmJiB0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2F3YWl0JykpIHtcblx0ICAgICAgICAgICAgZXhwciA9IHRoaXMucGFyc2VBd2FpdEV4cHJlc3Npb24oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIGV4cHIgPSB0aGlzLnBhcnNlVXBkYXRlRXhwcmVzc2lvbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gZXhwcjtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlRXhwb25lbnRpYXRpb25FeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGFydFRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgdmFyIGV4cHIgPSB0aGlzLmluaGVyaXRDb3ZlckdyYW1tYXIodGhpcy5wYXJzZVVuYXJ5RXhwcmVzc2lvbik7XG5cdCAgICAgICAgaWYgKGV4cHIudHlwZSAhPT0gc3ludGF4XzEuU3ludGF4LlVuYXJ5RXhwcmVzc2lvbiAmJiB0aGlzLm1hdGNoKCcqKicpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSBmYWxzZTtcblx0ICAgICAgICAgICAgdmFyIGxlZnQgPSBleHByO1xuXHQgICAgICAgICAgICB2YXIgcmlnaHQgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUV4cG9uZW50aWF0aW9uRXhwcmVzc2lvbik7XG5cdCAgICAgICAgICAgIGV4cHIgPSB0aGlzLmZpbmFsaXplKHRoaXMuc3RhcnROb2RlKHN0YXJ0VG9rZW4pLCBuZXcgTm9kZS5CaW5hcnlFeHByZXNzaW9uKCcqKicsIGxlZnQsIHJpZ2h0KSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBleHByO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWV4cC1vcGVyYXRvclxuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbXVsdGlwbGljYXRpdmUtb3BlcmF0b3JzXG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hZGRpdGl2ZS1vcGVyYXRvcnNcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWJpdHdpc2Utc2hpZnQtb3BlcmF0b3JzXG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWxhdGlvbmFsLW9wZXJhdG9yc1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZXF1YWxpdHktb3BlcmF0b3JzXG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1iaW5hcnktYml0d2lzZS1vcGVyYXRvcnNcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWJpbmFyeS1sb2dpY2FsLW9wZXJhdG9yc1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5iaW5hcnlQcmVjZWRlbmNlID0gZnVuY3Rpb24gKHRva2VuKSB7XG5cdCAgICAgICAgdmFyIG9wID0gdG9rZW4udmFsdWU7XG5cdCAgICAgICAgdmFyIHByZWNlZGVuY2U7XG5cdCAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IDcgLyogUHVuY3R1YXRvciAqLykge1xuXHQgICAgICAgICAgICBwcmVjZWRlbmNlID0gdGhpcy5vcGVyYXRvclByZWNlZGVuY2Vbb3BdIHx8IDA7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUgPT09IDQgLyogS2V5d29yZCAqLykge1xuXHQgICAgICAgICAgICBwcmVjZWRlbmNlID0gKG9wID09PSAnaW5zdGFuY2VvZicgfHwgKHRoaXMuY29udGV4dC5hbGxvd0luICYmIG9wID09PSAnaW4nKSkgPyA3IDogMDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIHByZWNlZGVuY2UgPSAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gcHJlY2VkZW5jZTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQmluYXJ5RXhwcmVzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgc3RhcnRUb2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgIHZhciBleHByID0gdGhpcy5pbmhlcml0Q292ZXJHcmFtbWFyKHRoaXMucGFyc2VFeHBvbmVudGlhdGlvbkV4cHJlc3Npb24pO1xuXHQgICAgICAgIHZhciB0b2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgIHZhciBwcmVjID0gdGhpcy5iaW5hcnlQcmVjZWRlbmNlKHRva2VuKTtcblx0ICAgICAgICBpZiAocHJlYyA+IDApIHtcblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IGZhbHNlO1xuXHQgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICB2YXIgbWFya2VycyA9IFtzdGFydFRva2VuLCB0aGlzLmxvb2thaGVhZF07XG5cdCAgICAgICAgICAgIHZhciBsZWZ0ID0gZXhwcjtcblx0ICAgICAgICAgICAgdmFyIHJpZ2h0ID0gdGhpcy5pc29sYXRlQ292ZXJHcmFtbWFyKHRoaXMucGFyc2VFeHBvbmVudGlhdGlvbkV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICB2YXIgc3RhY2sgPSBbbGVmdCwgdG9rZW4udmFsdWUsIHJpZ2h0XTtcblx0ICAgICAgICAgICAgdmFyIHByZWNlZGVuY2VzID0gW3ByZWNdO1xuXHQgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgICAgICAgICAgICAgcHJlYyA9IHRoaXMuYmluYXJ5UHJlY2VkZW5jZSh0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgICAgICAgICBpZiAocHJlYyA8PSAwKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAvLyBSZWR1Y2U6IG1ha2UgYSBiaW5hcnkgZXhwcmVzc2lvbiBmcm9tIHRoZSB0aHJlZSB0b3Btb3N0IGVudHJpZXMuXG5cdCAgICAgICAgICAgICAgICB3aGlsZSAoKHN0YWNrLmxlbmd0aCA+IDIpICYmIChwcmVjIDw9IHByZWNlZGVuY2VzW3ByZWNlZGVuY2VzLmxlbmd0aCAtIDFdKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gc3RhY2sucG9wKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG9wZXJhdG9yID0gc3RhY2sucG9wKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZXMucG9wKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHN0YWNrLnBvcCgpO1xuXHQgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucG9wKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnN0YXJ0Tm9kZShtYXJrZXJzW21hcmtlcnMubGVuZ3RoIC0gMV0pO1xuXHQgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5CaW5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBsZWZ0LCByaWdodCkpKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIC8vIFNoaWZ0LlxuXHQgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLm5leHRUb2tlbigpLnZhbHVlKTtcblx0ICAgICAgICAgICAgICAgIHByZWNlZGVuY2VzLnB1c2gocHJlYyk7XG5cdCAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2godGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUV4cG9uZW50aWF0aW9uRXhwcmVzc2lvbikpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIC8vIEZpbmFsIHJlZHVjZSB0byBjbGVhbi11cCB0aGUgc3RhY2suXG5cdCAgICAgICAgICAgIHZhciBpID0gc3RhY2subGVuZ3RoIC0gMTtcblx0ICAgICAgICAgICAgZXhwciA9IHN0YWNrW2ldO1xuXHQgICAgICAgICAgICB2YXIgbGFzdE1hcmtlciA9IG1hcmtlcnMucG9wKCk7XG5cdCAgICAgICAgICAgIHdoaWxlIChpID4gMSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlcnMucG9wKCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgbGFzdExpbmVTdGFydCA9IGxhc3RNYXJrZXIgJiYgbGFzdE1hcmtlci5saW5lU3RhcnQ7XG5cdCAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuc3RhcnROb2RlKG1hcmtlciwgbGFzdExpbmVTdGFydCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgb3BlcmF0b3IgPSBzdGFja1tpIC0gMV07XG5cdCAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5CaW5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBzdGFja1tpIC0gMl0sIGV4cHIpKTtcblx0ICAgICAgICAgICAgICAgIGkgLT0gMjtcblx0ICAgICAgICAgICAgICAgIGxhc3RNYXJrZXIgPSBtYXJrZXI7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGV4cHI7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY29uZGl0aW9uYWwtb3BlcmF0b3Jcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIHN0YXJ0VG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICB2YXIgZXhwciA9IHRoaXMuaW5oZXJpdENvdmVyR3JhbW1hcih0aGlzLnBhcnNlQmluYXJ5RXhwcmVzc2lvbik7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2goJz8nKSkge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICB2YXIgcHJldmlvdXNBbGxvd0luID0gdGhpcy5jb250ZXh0LmFsbG93SW47XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd0luID0gdHJ1ZTtcblx0ICAgICAgICAgICAgdmFyIGNvbnNlcXVlbnQgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0KCc6Jyk7XG5cdCAgICAgICAgICAgIHZhciBhbHRlcm5hdGUgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUodGhpcy5zdGFydE5vZGUoc3RhcnRUb2tlbiksIG5ldyBOb2RlLkNvbmRpdGlvbmFsRXhwcmVzc2lvbihleHByLCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpKTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IGZhbHNlO1xuXHQgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gZXhwcjtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hc3NpZ25tZW50LW9wZXJhdG9yc1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5jaGVja1BhdHRlcm5QYXJhbSA9IGZ1bmN0aW9uIChvcHRpb25zLCBwYXJhbSkge1xuXHQgICAgICAgIHN3aXRjaCAocGFyYW0udHlwZSkge1xuXHQgICAgICAgICAgICBjYXNlIHN5bnRheF8xLlN5bnRheC5JZGVudGlmaWVyOlxuXHQgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIHBhcmFtLCBwYXJhbS5uYW1lKTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIHN5bnRheF8xLlN5bnRheC5SZXN0RWxlbWVudDpcblx0ICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tQYXR0ZXJuUGFyYW0ob3B0aW9ucywgcGFyYW0uYXJndW1lbnQpO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2Ugc3ludGF4XzEuU3ludGF4LkFzc2lnbm1lbnRQYXR0ZXJuOlxuXHQgICAgICAgICAgICAgICAgdGhpcy5jaGVja1BhdHRlcm5QYXJhbShvcHRpb25zLCBwYXJhbS5sZWZ0KTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIHN5bnRheF8xLlN5bnRheC5BcnJheVBhdHRlcm46XG5cdCAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtLmVsZW1lbnRzW2ldICE9PSBudWxsKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tQYXR0ZXJuUGFyYW0ob3B0aW9ucywgcGFyYW0uZWxlbWVudHNbaV0pO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIHN5bnRheF8xLlN5bnRheC5PYmplY3RQYXR0ZXJuOlxuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbS5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja1BhdHRlcm5QYXJhbShvcHRpb25zLCBwYXJhbS5wcm9wZXJ0aWVzW2ldLnZhbHVlKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIG9wdGlvbnMuc2ltcGxlID0gb3B0aW9ucy5zaW1wbGUgJiYgKHBhcmFtIGluc3RhbmNlb2YgTm9kZS5JZGVudGlmaWVyKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnJlaW50ZXJwcmV0QXNDb3ZlckZvcm1hbHNMaXN0ID0gZnVuY3Rpb24gKGV4cHIpIHtcblx0ICAgICAgICB2YXIgcGFyYW1zID0gW2V4cHJdO1xuXHQgICAgICAgIHZhciBvcHRpb25zO1xuXHQgICAgICAgIHZhciBhc3luY0Fycm93ID0gZmFsc2U7XG5cdCAgICAgICAgc3dpdGNoIChleHByLnR5cGUpIHtcblx0ICAgICAgICAgICAgY2FzZSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllcjpcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIEFycm93UGFyYW1ldGVyUGxhY2VIb2xkZXI6XG5cdCAgICAgICAgICAgICAgICBwYXJhbXMgPSBleHByLnBhcmFtcztcblx0ICAgICAgICAgICAgICAgIGFzeW5jQXJyb3cgPSBleHByLmFzeW5jO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgb3B0aW9ucyA9IHtcblx0ICAgICAgICAgICAgc2ltcGxlOiB0cnVlLFxuXHQgICAgICAgICAgICBwYXJhbVNldDoge31cblx0ICAgICAgICB9O1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgKytpKSB7XG5cdCAgICAgICAgICAgIHZhciBwYXJhbSA9IHBhcmFtc1tpXTtcblx0ICAgICAgICAgICAgaWYgKHBhcmFtLnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5Bc3NpZ25tZW50UGF0dGVybikge1xuXHQgICAgICAgICAgICAgICAgaWYgKHBhcmFtLnJpZ2h0LnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5ZaWVsZEV4cHJlc3Npb24pIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0ucmlnaHQuYXJndW1lbnQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHBhcmFtLnJpZ2h0LnR5cGUgPSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllcjtcblx0ICAgICAgICAgICAgICAgICAgICBwYXJhbS5yaWdodC5uYW1lID0gJ3lpZWxkJztcblx0ICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW0ucmlnaHQuYXJndW1lbnQ7XG5cdCAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtLnJpZ2h0LmRlbGVnYXRlO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKGFzeW5jQXJyb3cgJiYgcGFyYW0udHlwZSA9PT0gc3ludGF4XzEuU3ludGF4LklkZW50aWZpZXIgJiYgcGFyYW0ubmFtZSA9PT0gJ2F3YWl0Jykge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy5jaGVja1BhdHRlcm5QYXJhbShvcHRpb25zLCBwYXJhbSk7XG5cdCAgICAgICAgICAgIHBhcmFtc1tpXSA9IHBhcmFtO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCB8fCAhdGhpcy5jb250ZXh0LmFsbG93WWllbGQpIHtcblx0ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyArK2kpIHtcblx0ICAgICAgICAgICAgICAgIHZhciBwYXJhbSA9IHBhcmFtc1tpXTtcblx0ICAgICAgICAgICAgICAgIGlmIChwYXJhbS50eXBlID09PSBzeW50YXhfMS5TeW50YXguWWllbGRFeHByZXNzaW9uKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSA9PT0gbWVzc2FnZXNfMS5NZXNzYWdlcy5TdHJpY3RQYXJhbUR1cGUpIHtcblx0ICAgICAgICAgICAgdmFyIHRva2VuID0gdGhpcy5jb250ZXh0LnN0cmljdCA/IG9wdGlvbnMuc3RyaWN0ZWQgOiBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZDtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0b2tlbiwgb3B0aW9ucy5tZXNzYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgc2ltcGxlOiBvcHRpb25zLnNpbXBsZSxcblx0ICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG5cdCAgICAgICAgICAgIHN0cmljdGVkOiBvcHRpb25zLnN0cmljdGVkLFxuXHQgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQ6IG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkLFxuXHQgICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2Vcblx0ICAgICAgICB9O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgZXhwcjtcblx0ICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5hbGxvd1lpZWxkICYmIHRoaXMubWF0Y2hLZXl3b3JkKCd5aWVsZCcpKSB7XG5cdCAgICAgICAgICAgIGV4cHIgPSB0aGlzLnBhcnNlWWllbGRFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICB2YXIgc3RhcnRUb2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgICAgICB2YXIgdG9rZW4gPSBzdGFydFRva2VuO1xuXHQgICAgICAgICAgICBleHByID0gdGhpcy5wYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovICYmICh0b2tlbi5saW5lTnVtYmVyID09PSB0aGlzLmxvb2thaGVhZC5saW5lTnVtYmVyKSAmJiB0b2tlbi52YWx1ZSA9PT0gJ2FzeW5jJykge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLyB8fCB0aGlzLm1hdGNoS2V5d29yZCgneWllbGQnKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBhcmcgPSB0aGlzLnBhcnNlUHJpbWFyeUV4cHJlc3Npb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnJlaW50ZXJwcmV0RXhwcmVzc2lvbkFzUGF0dGVybihhcmcpO1xuXHQgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEFycm93UGFyYW1ldGVyUGxhY2VIb2xkZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogW2FyZ10sXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlXG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoZXhwci50eXBlID09PSBBcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyIHx8IHRoaXMubWF0Y2goJz0+JykpIHtcblx0ICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zXG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNBc3NpZ25tZW50VGFyZ2V0ID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgdmFyIGlzQXN5bmMgPSBleHByLmFzeW5jO1xuXHQgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLnJlaW50ZXJwcmV0QXNDb3ZlckZvcm1hbHNMaXN0KGV4cHIpO1xuXHQgICAgICAgICAgICAgICAgaWYgKGxpc3QpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNMaW5lVGVybWluYXRvcikge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvciA9IG51bGw7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0ID0gdGhpcy5jb250ZXh0LnN0cmljdDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNBbGxvd1N0cmljdERpcmVjdGl2ZSA9IHRoaXMuY29udGV4dC5hbGxvd1N0cmljdERpcmVjdGl2ZTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dTdHJpY3REaXJlY3RpdmUgPSBsaXN0LnNpbXBsZTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNBbGxvd1lpZWxkID0gdGhpcy5jb250ZXh0LmFsbG93WWllbGQ7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzQXdhaXQgPSB0aGlzLmNvbnRleHQuYXdhaXQ7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5hd2FpdCA9IGlzQXN5bmM7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnN0YXJ0Tm9kZShzdGFydFRva2VuKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdCgnPT4nKTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgYm9keSA9IHZvaWQgMDtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgneycpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c0FsbG93SW4gPSB0aGlzLmNvbnRleHQuYWxsb3dJbjtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93SW4gPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gdGhpcy5wYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gdGhpcy5pc29sYXRlQ292ZXJHcmFtbWFyKHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHZhciBleHByZXNzaW9uID0gYm9keS50eXBlICE9PSBzeW50YXhfMS5TeW50YXguQmxvY2tTdGF0ZW1lbnQ7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgbGlzdC5maXJzdFJlc3RyaWN0ZWQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbihsaXN0LmZpcnN0UmVzdHJpY3RlZCwgbGlzdC5tZXNzYWdlKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgbGlzdC5zdHJpY3RlZCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKGxpc3Quc3RyaWN0ZWQsIGxpc3QubWVzc2FnZSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIGV4cHIgPSBpc0FzeW5jID8gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Bc3luY0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKGxpc3QucGFyYW1zLCBib2R5LCBleHByZXNzaW9uKSkgOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uKGxpc3QucGFyYW1zLCBib2R5LCBleHByZXNzaW9uKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LnN0cmljdCA9IHByZXZpb3VzU3RyaWN0O1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1N0cmljdERpcmVjdGl2ZSA9IHByZXZpb3VzQWxsb3dTdHJpY3REaXJlY3RpdmU7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBwcmV2aW91c0FsbG93WWllbGQ7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmF3YWl0ID0gcHJldmlvdXNBd2FpdDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoQXNzaWduKCkpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0ICYmIGV4cHIudHlwZSA9PT0gc3ludGF4XzEuU3ludGF4LklkZW50aWZpZXIpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gZXhwcjtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nhbm5lci5pc1Jlc3RyaWN0ZWRXb3JkKGlkLm5hbWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdExIU0Fzc2lnbm1lbnQpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKGlkLm5hbWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoKCc9JykpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaXNCaW5kaW5nRWxlbWVudCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWludGVycHJldEV4cHJlc3Npb25Bc1BhdHRlcm4oZXhwcik7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgb3BlcmF0b3IgPSB0b2tlbi52YWx1ZTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcmlnaHQgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgICAgICAgICBleHByID0gdGhpcy5maW5hbGl6ZSh0aGlzLnN0YXJ0Tm9kZShzdGFydFRva2VuKSwgbmV3IE5vZGUuQXNzaWdubWVudEV4cHJlc3Npb24ob3BlcmF0b3IsIGV4cHIsIHJpZ2h0KSk7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcnN0Q292ZXJJbml0aWFsaXplZE5hbWVFcnJvciA9IG51bGw7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGV4cHI7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY29tbWEtb3BlcmF0b3Jcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VFeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGFydFRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgdmFyIGV4cHIgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnLCcpKSB7XG5cdCAgICAgICAgICAgIHZhciBleHByZXNzaW9ucyA9IFtdO1xuXHQgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKGV4cHIpO1xuXHQgICAgICAgICAgICB3aGlsZSAodGhpcy5sb29rYWhlYWQudHlwZSAhPT0gMiAvKiBFT0YgKi8pIHtcblx0ICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaCgnLCcpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMucHVzaCh0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZXhwciA9IHRoaXMuZmluYWxpemUodGhpcy5zdGFydE5vZGUoc3RhcnRUb2tlbiksIG5ldyBOb2RlLlNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gZXhwcjtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1ibG9ja1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVN0YXRlbWVudExpc3RJdGVtID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGF0ZW1lbnQ7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCA9IHRydWU7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmlzQmluZGluZ0VsZW1lbnQgPSB0cnVlO1xuXHQgICAgICAgIGlmICh0aGlzLmxvb2thaGVhZC50eXBlID09PSA0IC8qIEtleXdvcmQgKi8pIHtcblx0ICAgICAgICAgICAgc3dpdGNoICh0aGlzLmxvb2thaGVhZC52YWx1ZSkge1xuXHQgICAgICAgICAgICAgICAgY2FzZSAnZXhwb3J0Jzpcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5pc01vZHVsZSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkLCBtZXNzYWdlc18xLk1lc3NhZ2VzLklsbGVnYWxFeHBvcnREZWNsYXJhdGlvbik7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMucGFyc2VFeHBvcnREZWNsYXJhdGlvbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgY2FzZSAnaW1wb3J0Jzpcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5pc01vZHVsZSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubG9va2FoZWFkLCBtZXNzYWdlc18xLk1lc3NhZ2VzLklsbGVnYWxJbXBvcnREZWNsYXJhdGlvbik7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMucGFyc2VJbXBvcnREZWNsYXJhdGlvbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgY2FzZSAnY29uc3QnOlxuXHQgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMucGFyc2VMZXhpY2FsRGVjbGFyYXRpb24oeyBpbkZvcjogZmFsc2UgfSk7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG5cdCAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIGNhc2UgJ2NsYXNzJzpcblx0ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlQ2xhc3NEZWNsYXJhdGlvbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgY2FzZSAnbGV0Jzpcblx0ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLmlzTGV4aWNhbERlY2xhcmF0aW9uKCkgPyB0aGlzLnBhcnNlTGV4aWNhbERlY2xhcmF0aW9uKHsgaW5Gb3I6IGZhbHNlIH0pIDogdGhpcy5wYXJzZVN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgZGVmYXVsdDpcblx0ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMucGFyc2VTdGF0ZW1lbnQoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQmxvY2sgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgneycpO1xuXHQgICAgICAgIHZhciBibG9jayA9IFtdO1xuXHQgICAgICAgIHdoaWxlICh0cnVlKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCd9JykpIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGJsb2NrLnB1c2godGhpcy5wYXJzZVN0YXRlbWVudExpc3RJdGVtKCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnfScpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkJsb2NrU3RhdGVtZW50KGJsb2NrKSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbGV0LWFuZC1jb25zdC1kZWNsYXJhdGlvbnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VMZXhpY2FsQmluZGluZyA9IGZ1bmN0aW9uIChraW5kLCBvcHRpb25zKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgcGFyYW1zID0gW107XG5cdCAgICAgICAgdmFyIGlkID0gdGhpcy5wYXJzZVBhdHRlcm4ocGFyYW1zLCBraW5kKTtcblx0ICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCAmJiBpZC50eXBlID09PSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllcikge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5zY2FubmVyLmlzUmVzdHJpY3RlZFdvcmQoaWQubmFtZSkpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFZhck5hbWUpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBpbml0ID0gbnVsbDtcblx0ICAgICAgICBpZiAoa2luZCA9PT0gJ2NvbnN0Jykge1xuXHQgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2hLZXl3b3JkKCdpbicpICYmICF0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ29mJykpIHtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCc9JykpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLkRlY2xhcmF0aW9uTWlzc2luZ0luaXRpYWxpemVyLCAnY29uc3QnKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICgoIW9wdGlvbnMuaW5Gb3IgJiYgaWQudHlwZSAhPT0gc3ludGF4XzEuU3ludGF4LklkZW50aWZpZXIpIHx8IHRoaXMubWF0Y2goJz0nKSkge1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdCgnPScpO1xuXHQgICAgICAgICAgICBpbml0ID0gdGhpcy5pc29sYXRlQ292ZXJHcmFtbWFyKHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLlZhcmlhYmxlRGVjbGFyYXRvcihpZCwgaW5pdCkpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VCaW5kaW5nTGlzdCA9IGZ1bmN0aW9uIChraW5kLCBvcHRpb25zKSB7XG5cdCAgICAgICAgdmFyIGxpc3QgPSBbdGhpcy5wYXJzZUxleGljYWxCaW5kaW5nKGtpbmQsIG9wdGlvbnMpXTtcblx0ICAgICAgICB3aGlsZSAodGhpcy5tYXRjaCgnLCcpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIGxpc3QucHVzaCh0aGlzLnBhcnNlTGV4aWNhbEJpbmRpbmcoa2luZCwgb3B0aW9ucykpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gbGlzdDtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLmlzTGV4aWNhbERlY2xhcmF0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuc2Nhbm5lci5zYXZlU3RhdGUoKTtcblx0ICAgICAgICB0aGlzLnNjYW5uZXIuc2NhbkNvbW1lbnRzKCk7XG5cdCAgICAgICAgdmFyIG5leHQgPSB0aGlzLnNjYW5uZXIubGV4KCk7XG5cdCAgICAgICAgdGhpcy5zY2FubmVyLnJlc3RvcmVTdGF0ZShzdGF0ZSk7XG5cdCAgICAgICAgcmV0dXJuIChuZXh0LnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLykgfHxcblx0ICAgICAgICAgICAgKG5leHQudHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovICYmIG5leHQudmFsdWUgPT09ICdbJykgfHxcblx0ICAgICAgICAgICAgKG5leHQudHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovICYmIG5leHQudmFsdWUgPT09ICd7JykgfHxcblx0ICAgICAgICAgICAgKG5leHQudHlwZSA9PT0gNCAvKiBLZXl3b3JkICovICYmIG5leHQudmFsdWUgPT09ICdsZXQnKSB8fFxuXHQgICAgICAgICAgICAobmV4dC50eXBlID09PSA0IC8qIEtleXdvcmQgKi8gJiYgbmV4dC52YWx1ZSA9PT0gJ3lpZWxkJyk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUxleGljYWxEZWNsYXJhdGlvbiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIga2luZCA9IHRoaXMubmV4dFRva2VuKCkudmFsdWU7XG5cdCAgICAgICAgYXNzZXJ0XzEuYXNzZXJ0KGtpbmQgPT09ICdsZXQnIHx8IGtpbmQgPT09ICdjb25zdCcsICdMZXhpY2FsIGRlY2xhcmF0aW9uIG11c3QgYmUgZWl0aGVyIGxldCBvciBjb25zdCcpO1xuXHQgICAgICAgIHZhciBkZWNsYXJhdGlvbnMgPSB0aGlzLnBhcnNlQmluZGluZ0xpc3Qoa2luZCwgb3B0aW9ucyk7XG5cdCAgICAgICAgdGhpcy5jb25zdW1lU2VtaWNvbG9uKCk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsIGtpbmQpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1kZXN0cnVjdHVyaW5nLWJpbmRpbmctcGF0dGVybnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VCaW5kaW5nUmVzdEVsZW1lbnQgPSBmdW5jdGlvbiAocGFyYW1zLCBraW5kKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnLi4uJyk7XG5cdCAgICAgICAgdmFyIGFyZyA9IHRoaXMucGFyc2VQYXR0ZXJuKHBhcmFtcywga2luZCk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuUmVzdEVsZW1lbnQoYXJnKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUFycmF5UGF0dGVybiA9IGZ1bmN0aW9uIChwYXJhbXMsIGtpbmQpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCdbJyk7XG5cdCAgICAgICAgdmFyIGVsZW1lbnRzID0gW107XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLm1hdGNoKCddJykpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJywnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gobnVsbCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnLi4uJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHRoaXMucGFyc2VCaW5kaW5nUmVzdEVsZW1lbnQocGFyYW1zLCBraW5kKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHRoaXMucGFyc2VQYXR0ZXJuV2l0aERlZmF1bHQocGFyYW1zLCBraW5kKSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJ10nKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCcsJyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJ10nKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5BcnJheVBhdHRlcm4oZWxlbWVudHMpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlUHJvcGVydHlQYXR0ZXJuID0gZnVuY3Rpb24gKHBhcmFtcywga2luZCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIGNvbXB1dGVkID0gZmFsc2U7XG5cdCAgICAgICAgdmFyIHNob3J0aGFuZCA9IGZhbHNlO1xuXHQgICAgICAgIHZhciBtZXRob2QgPSBmYWxzZTtcblx0ICAgICAgICB2YXIga2V5O1xuXHQgICAgICAgIHZhciB2YWx1ZTtcblx0ICAgICAgICBpZiAodGhpcy5sb29rYWhlYWQudHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovKSB7XG5cdCAgICAgICAgICAgIHZhciBrZXlUb2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgICAgICBrZXkgPSB0aGlzLnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cdCAgICAgICAgICAgIHZhciBpbml0ID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JZGVudGlmaWVyKGtleVRva2VuLnZhbHVlKSk7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCc9JykpIHtcblx0ICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGtleVRva2VuKTtcblx0ICAgICAgICAgICAgICAgIHNob3J0aGFuZCA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgdmFyIGV4cHIgPSB0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTtcblx0ICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5maW5hbGl6ZSh0aGlzLnN0YXJ0Tm9kZShrZXlUb2tlbiksIG5ldyBOb2RlLkFzc2lnbm1lbnRQYXR0ZXJuKGluaXQsIGV4cHIpKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5tYXRjaCgnOicpKSB7XG5cdCAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChrZXlUb2tlbik7XG5cdCAgICAgICAgICAgICAgICBzaG9ydGhhbmQgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgdmFsdWUgPSBpbml0O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJzonKTtcblx0ICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wYXJzZVBhdHRlcm5XaXRoRGVmYXVsdChwYXJhbXMsIGtpbmQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICBjb21wdXRlZCA9IHRoaXMubWF0Y2goJ1snKTtcblx0ICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0KCc6Jyk7XG5cdCAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wYXJzZVBhdHRlcm5XaXRoRGVmYXVsdChwYXJhbXMsIGtpbmQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Qcm9wZXJ0eSgnaW5pdCcsIGtleSwgY29tcHV0ZWQsIHZhbHVlLCBtZXRob2QsIHNob3J0aGFuZCkpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VPYmplY3RQYXR0ZXJuID0gZnVuY3Rpb24gKHBhcmFtcywga2luZCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbXTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgneycpO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaCh0aGlzLnBhcnNlUHJvcGVydHlQYXR0ZXJuKHBhcmFtcywga2luZCkpO1xuXHQgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJ30nKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJywnKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnfScpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLk9iamVjdFBhdHRlcm4ocHJvcGVydGllcykpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VQYXR0ZXJuID0gZnVuY3Rpb24gKHBhcmFtcywga2luZCkge1xuXHQgICAgICAgIHZhciBwYXR0ZXJuO1xuXHQgICAgICAgIGlmICh0aGlzLm1hdGNoKCdbJykpIHtcblx0ICAgICAgICAgICAgcGF0dGVybiA9IHRoaXMucGFyc2VBcnJheVBhdHRlcm4ocGFyYW1zLCBraW5kKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaCgneycpKSB7XG5cdCAgICAgICAgICAgIHBhdHRlcm4gPSB0aGlzLnBhcnNlT2JqZWN0UGF0dGVybihwYXJhbXMsIGtpbmQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hLZXl3b3JkKCdsZXQnKSAmJiAoa2luZCA9PT0gJ2NvbnN0JyB8fCBraW5kID09PSAnbGV0JykpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odGhpcy5sb29rYWhlYWQsIG1lc3NhZ2VzXzEuTWVzc2FnZXMuTGV0SW5MZXhpY2FsQmluZGluZyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgcGFyYW1zLnB1c2godGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICBwYXR0ZXJuID0gdGhpcy5wYXJzZVZhcmlhYmxlSWRlbnRpZmllcihraW5kKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHBhdHRlcm47XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVBhdHRlcm5XaXRoRGVmYXVsdCA9IGZ1bmN0aW9uIChwYXJhbXMsIGtpbmQpIHtcblx0ICAgICAgICB2YXIgc3RhcnRUb2tlbiA9IHRoaXMubG9va2FoZWFkO1xuXHQgICAgICAgIHZhciBwYXR0ZXJuID0gdGhpcy5wYXJzZVBhdHRlcm4ocGFyYW1zLCBraW5kKTtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnPScpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIHZhciBwcmV2aW91c0FsbG93WWllbGQgPSB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZDtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSB0cnVlO1xuXHQgICAgICAgICAgICB2YXIgcmlnaHQgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBwcmV2aW91c0FsbG93WWllbGQ7XG5cdCAgICAgICAgICAgIHBhdHRlcm4gPSB0aGlzLmZpbmFsaXplKHRoaXMuc3RhcnROb2RlKHN0YXJ0VG9rZW4pLCBuZXcgTm9kZS5Bc3NpZ25tZW50UGF0dGVybihwYXR0ZXJuLCByaWdodCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gcGF0dGVybjtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy12YXJpYWJsZS1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VWYXJpYWJsZUlkZW50aWZpZXIgPSBmdW5jdGlvbiAoa2luZCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHRva2VuID0gdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gNCAvKiBLZXl3b3JkICovICYmIHRva2VuLnZhbHVlID09PSAneWllbGQnKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0KSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuY29udGV4dC5hbGxvd1lpZWxkKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICh0b2tlbi50eXBlICE9PSAzIC8qIElkZW50aWZpZXIgKi8pIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgdG9rZW4udHlwZSA9PT0gNCAvKiBLZXl3b3JkICovICYmIHRoaXMuc2Nhbm5lci5pc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCB8fCB0b2tlbi52YWx1ZSAhPT0gJ2xldCcgfHwga2luZCAhPT0gJ3ZhcicpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICgodGhpcy5jb250ZXh0LmlzTW9kdWxlIHx8IHRoaXMuY29udGV4dC5hd2FpdCkgJiYgdG9rZW4udHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovICYmIHRva2VuLnZhbHVlID09PSAnYXdhaXQnKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odG9rZW4pO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JZGVudGlmaWVyKHRva2VuLnZhbHVlKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24gPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHBhcmFtcyA9IFtdO1xuXHQgICAgICAgIHZhciBpZCA9IHRoaXMucGFyc2VQYXR0ZXJuKHBhcmFtcywgJ3ZhcicpO1xuXHQgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0ICYmIGlkLnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5JZGVudGlmaWVyKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNSZXN0cmljdGVkV29yZChpZC5uYW1lKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0VmFyTmFtZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGluaXQgPSBudWxsO1xuXHQgICAgICAgIGlmICh0aGlzLm1hdGNoKCc9JykpIHtcblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgaW5pdCA9IHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmIChpZC50eXBlICE9PSBzeW50YXhfMS5TeW50YXguSWRlbnRpZmllciAmJiAhb3B0aW9ucy5pbkZvcikge1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdCgnPScpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5WYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXHQgICAgICAgIHZhciBvcHQgPSB7IGluRm9yOiBvcHRpb25zLmluRm9yIH07XG5cdCAgICAgICAgdmFyIGxpc3QgPSBbXTtcblx0ICAgICAgICBsaXN0LnB1c2godGhpcy5wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24ob3B0KSk7XG5cdCAgICAgICAgd2hpbGUgKHRoaXMubWF0Y2goJywnKSkge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICBsaXN0LnB1c2godGhpcy5wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24ob3B0KSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBsaXN0O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VWYXJpYWJsZVN0YXRlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgndmFyJyk7XG5cdCAgICAgICAgdmFyIGRlY2xhcmF0aW9ucyA9IHRoaXMucGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCh7IGluRm9yOiBmYWxzZSB9KTtcblx0ICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5WYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9ucywgJ3ZhcicpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lbXB0eS1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VFbXB0eVN0YXRlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCc7Jyk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuRW1wdHlTdGF0ZW1lbnQoKSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZXhwcmVzc2lvbi1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VFeHByZXNzaW9uU3RhdGVtZW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIGV4cHIgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbigpO1xuXHQgICAgICAgIHRoaXMuY29uc3VtZVNlbWljb2xvbigpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwcikpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlmLXN0YXRlbWVudFxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUlmQ2xhdXNlID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0ICYmIHRoaXMubWF0Y2hLZXl3b3JkKCdmdW5jdGlvbicpKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTdGF0ZW1lbnQoKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlSWZTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgY29uc2VxdWVudDtcblx0ICAgICAgICB2YXIgYWx0ZXJuYXRlID0gbnVsbDtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2lmJyk7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJygnKTtcblx0ICAgICAgICB2YXIgdGVzdCA9IHRoaXMucGFyc2VFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgaWYgKCF0aGlzLm1hdGNoKCcpJykgJiYgdGhpcy5jb25maWcudG9sZXJhbnQpIHtcblx0ICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbih0aGlzLm5leHRUb2tlbigpKTtcblx0ICAgICAgICAgICAgY29uc2VxdWVudCA9IHRoaXMuZmluYWxpemUodGhpcy5jcmVhdGVOb2RlKCksIG5ldyBOb2RlLkVtcHR5U3RhdGVtZW50KCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICAgICAgY29uc2VxdWVudCA9IHRoaXMucGFyc2VJZkNsYXVzZSgpO1xuXHQgICAgICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2Vsc2UnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgIGFsdGVybmF0ZSA9IHRoaXMucGFyc2VJZkNsYXVzZSgpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLklmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWRvLXdoaWxlLXN0YXRlbWVudFxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZURvV2hpbGVTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2RvJyk7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzSW5JdGVyYXRpb24gPSB0aGlzLmNvbnRleHQuaW5JdGVyYXRpb247XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmluSXRlcmF0aW9uID0gdHJ1ZTtcblx0ICAgICAgICB2YXIgYm9keSA9IHRoaXMucGFyc2VTdGF0ZW1lbnQoKTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaW5JdGVyYXRpb24gPSBwcmV2aW91c0luSXRlcmF0aW9uO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnd2hpbGUnKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKCcpO1xuXHQgICAgICAgIHZhciB0ZXN0ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICBpZiAoIXRoaXMubWF0Y2goJyknKSAmJiB0aGlzLmNvbmZpZy50b2xlcmFudCkge1xuXHQgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubmV4dFRva2VuKCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJzsnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Eb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy13aGlsZS1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VXaGlsZVN0YXRlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBib2R5O1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnd2hpbGUnKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKCcpO1xuXHQgICAgICAgIHZhciB0ZXN0ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICBpZiAoIXRoaXMubWF0Y2goJyknKSAmJiB0aGlzLmNvbmZpZy50b2xlcmFudCkge1xuXHQgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRoaXMubmV4dFRva2VuKCkpO1xuXHQgICAgICAgICAgICBib2R5ID0gdGhpcy5maW5hbGl6ZSh0aGlzLmNyZWF0ZU5vZGUoKSwgbmV3IE5vZGUuRW1wdHlTdGF0ZW1lbnQoKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICB0aGlzLmV4cGVjdCgnKScpO1xuXHQgICAgICAgICAgICB2YXIgcHJldmlvdXNJbkl0ZXJhdGlvbiA9IHRoaXMuY29udGV4dC5pbkl0ZXJhdGlvbjtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmluSXRlcmF0aW9uID0gdHJ1ZTtcblx0ICAgICAgICAgICAgYm9keSA9IHRoaXMucGFyc2VTdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgdGhpcy5jb250ZXh0LmluSXRlcmF0aW9uID0gcHJldmlvdXNJbkl0ZXJhdGlvbjtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuV2hpbGVTdGF0ZW1lbnQodGVzdCwgYm9keSkpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZvci1zdGF0ZW1lbnRcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZvci1pbi1hbmQtZm9yLW9mLXN0YXRlbWVudHNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VGb3JTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGluaXQgPSBudWxsO1xuXHQgICAgICAgIHZhciB0ZXN0ID0gbnVsbDtcblx0ICAgICAgICB2YXIgdXBkYXRlID0gbnVsbDtcblx0ICAgICAgICB2YXIgZm9ySW4gPSB0cnVlO1xuXHQgICAgICAgIHZhciBsZWZ0LCByaWdodDtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZm9yJyk7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJygnKTtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnOycpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ3ZhcicpKSB7XG5cdCAgICAgICAgICAgICAgICBpbml0ID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiA9IHRoaXMuY29udGV4dC5hbGxvd0luO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93SW4gPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIHZhciBkZWNsYXJhdGlvbnMgPSB0aGlzLnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoeyBpbkZvcjogdHJ1ZSB9KTtcblx0ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luO1xuXHQgICAgICAgICAgICAgICAgaWYgKGRlY2xhcmF0aW9ucy5sZW5ndGggPT09IDEgJiYgdGhpcy5tYXRjaEtleXdvcmQoJ2luJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZGVjbCA9IGRlY2xhcmF0aW9uc1swXTtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoZGVjbC5pbml0ICYmIChkZWNsLmlkLnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5BcnJheVBhdHRlcm4gfHwgZGVjbC5pZC50eXBlID09PSBzeW50YXhfMS5TeW50YXguT2JqZWN0UGF0dGVybiB8fCB0aGlzLmNvbnRleHQuc3RyaWN0KSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlRXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5Gb3JJbk9mTG9vcEluaXRpYWxpemVyLCAnZm9yLWluJyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmZpbmFsaXplKGluaXQsIG5ldyBOb2RlLlZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCAndmFyJykpO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7XG5cdCAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSAmJiBkZWNsYXJhdGlvbnNbMF0uaW5pdCA9PT0gbnVsbCAmJiB0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ29mJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbml0ID0gdGhpcy5maW5hbGl6ZShpbml0LCBuZXcgTm9kZS5WYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9ucywgJ3ZhcicpKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0O1xuXHQgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gdGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgaW5pdCA9IG51bGw7XG5cdCAgICAgICAgICAgICAgICAgICAgZm9ySW4gPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmZpbmFsaXplKGluaXQsIG5ldyBOb2RlLlZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCAndmFyJykpO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCc7Jyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2NvbnN0JykgfHwgdGhpcy5tYXRjaEtleXdvcmQoJ2xldCcpKSB7XG5cdCAgICAgICAgICAgICAgICBpbml0ID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgICAgICAgICB2YXIga2luZCA9IHRoaXMubmV4dFRva2VuKCkudmFsdWU7XG5cdCAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5zdHJpY3QgJiYgdGhpcy5sb29rYWhlYWQudmFsdWUgPT09ICdpbicpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpbml0ID0gdGhpcy5maW5hbGl6ZShpbml0LCBuZXcgTm9kZS5JZGVudGlmaWVyKGtpbmQpKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0O1xuXHQgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c0FsbG93SW4gPSB0aGlzLmNvbnRleHQuYWxsb3dJbjtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dJbiA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBkZWNsYXJhdGlvbnMgPSB0aGlzLnBhcnNlQmluZGluZ0xpc3Qoa2luZCwgeyBpbkZvcjogdHJ1ZSB9KTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSAmJiBkZWNsYXJhdGlvbnNbMF0uaW5pdCA9PT0gbnVsbCAmJiB0aGlzLm1hdGNoS2V5d29yZCgnaW4nKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBpbml0ID0gdGhpcy5maW5hbGl6ZShpbml0LCBuZXcgTm9kZS5WYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9ucywga2luZCkpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaW5pdDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSAmJiBkZWNsYXJhdGlvbnNbMF0uaW5pdCA9PT0gbnVsbCAmJiB0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ29mJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCA9IHRoaXMuZmluYWxpemUoaW5pdCwgbmV3IE5vZGUuVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsIGtpbmQpKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gdGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBmb3JJbiA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lU2VtaWNvbG9uKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmZpbmFsaXplKGluaXQsIG5ldyBOb2RlLlZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCBraW5kKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdmFyIGluaXRTdGFydFRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNBbGxvd0luID0gdGhpcy5jb250ZXh0LmFsbG93SW47XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dJbiA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgaW5pdCA9IHRoaXMuaW5oZXJpdENvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pO1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2luJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGV4dC5pc0Fzc2lnbm1lbnRUYXJnZXQgfHwgaW5pdC50eXBlID09PSBzeW50YXhfMS5TeW50YXguQXNzaWdubWVudEV4cHJlc3Npb24pIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSW52YWxpZExIU0luRm9ySW4pO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMucmVpbnRlcnByZXRFeHByZXNzaW9uQXNQYXR0ZXJuKGluaXQpO1xuXHQgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0O1xuXHQgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnb2YnKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250ZXh0LmlzQXNzaWdubWVudFRhcmdldCB8fCBpbml0LnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5Bc3NpZ25tZW50RXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlRXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JMb29wKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnJlaW50ZXJwcmV0RXhwcmVzc2lvbkFzUGF0dGVybihpbml0KTtcblx0ICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gaW5pdDtcblx0ICAgICAgICAgICAgICAgICAgICByaWdodCA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsO1xuXHQgICAgICAgICAgICAgICAgICAgIGZvckluID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnLCcpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbml0U2VxID0gW2luaXRdO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGhpcy5tYXRjaCgnLCcpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFNlcS5wdXNoKHRoaXMuaXNvbGF0ZUNvdmVyR3JhbW1hcih0aGlzLnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICBpbml0ID0gdGhpcy5maW5hbGl6ZSh0aGlzLnN0YXJ0Tm9kZShpbml0U3RhcnRUb2tlbiksIG5ldyBOb2RlLlNlcXVlbmNlRXhwcmVzc2lvbihpbml0U2VxKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCc7Jyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJzsnKSkge1xuXHQgICAgICAgICAgICAgICAgdGVzdCA9IHRoaXMucGFyc2VFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy5leHBlY3QoJzsnKTtcblx0ICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoKCcpJykpIHtcblx0ICAgICAgICAgICAgICAgIHVwZGF0ZSA9IHRoaXMucGFyc2VFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGJvZHk7XG5cdCAgICAgICAgaWYgKCF0aGlzLm1hdGNoKCcpJykgJiYgdGhpcy5jb25maWcudG9sZXJhbnQpIHtcblx0ICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbih0aGlzLm5leHRUb2tlbigpKTtcblx0ICAgICAgICAgICAgYm9keSA9IHRoaXMuZmluYWxpemUodGhpcy5jcmVhdGVOb2RlKCksIG5ldyBOb2RlLkVtcHR5U3RhdGVtZW50KCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICAgICAgdmFyIHByZXZpb3VzSW5JdGVyYXRpb24gPSB0aGlzLmNvbnRleHQuaW5JdGVyYXRpb247XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbkl0ZXJhdGlvbiA9IHRydWU7XG5cdCAgICAgICAgICAgIGJvZHkgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZVN0YXRlbWVudCk7XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbkl0ZXJhdGlvbiA9IHByZXZpb3VzSW5JdGVyYXRpb247XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSA/XG5cdCAgICAgICAgICAgIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuRm9yU3RhdGVtZW50KGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkpIDpcblx0ICAgICAgICAgICAgZm9ySW4gPyB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkZvckluU3RhdGVtZW50KGxlZnQsIHJpZ2h0LCBib2R5KSkgOlxuXHQgICAgICAgICAgICAgICAgdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Gb3JPZlN0YXRlbWVudChsZWZ0LCByaWdodCwgYm9keSkpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWNvbnRpbnVlLXN0YXRlbWVudFxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUNvbnRpbnVlU3RhdGVtZW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3RLZXl3b3JkKCdjb250aW51ZScpO1xuXHQgICAgICAgIHZhciBsYWJlbCA9IG51bGw7XG5cdCAgICAgICAgaWYgKHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLyAmJiAhdGhpcy5oYXNMaW5lVGVybWluYXRvcikge1xuXHQgICAgICAgICAgICB2YXIgaWQgPSB0aGlzLnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cdCAgICAgICAgICAgIGxhYmVsID0gaWQ7XG5cdCAgICAgICAgICAgIHZhciBrZXkgPSAnJCcgKyBpZC5uYW1lO1xuXHQgICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbnRleHQubGFiZWxTZXQsIGtleSkpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlVua25vd25MYWJlbCwgaWQubmFtZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5jb25zdW1lU2VtaWNvbG9uKCk7XG5cdCAgICAgICAgaWYgKGxhYmVsID09PSBudWxsICYmICF0aGlzLmNvbnRleHQuaW5JdGVyYXRpb24pIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuQ29udGludWVTdGF0ZW1lbnQobGFiZWwpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1icmVhay1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VCcmVha1N0YXRlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnYnJlYWsnKTtcblx0ICAgICAgICB2YXIgbGFiZWwgPSBudWxsO1xuXHQgICAgICAgIGlmICh0aGlzLmxvb2thaGVhZC50eXBlID09PSAzIC8qIElkZW50aWZpZXIgKi8gJiYgIXRoaXMuaGFzTGluZVRlcm1pbmF0b3IpIHtcblx0ICAgICAgICAgICAgdmFyIGlkID0gdGhpcy5wYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gJyQnICsgaWQubmFtZTtcblx0ICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb250ZXh0LmxhYmVsU2V0LCBrZXkpKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5Vbmtub3duTGFiZWwsIGlkLm5hbWUpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGxhYmVsID0gaWQ7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuY29uc3VtZVNlbWljb2xvbigpO1xuXHQgICAgICAgIGlmIChsYWJlbCA9PT0gbnVsbCAmJiAhdGhpcy5jb250ZXh0LmluSXRlcmF0aW9uICYmICF0aGlzLmNvbnRleHQuaW5Td2l0Y2gpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuQnJlYWtTdGF0ZW1lbnQobGFiZWwpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXR1cm4tc3RhdGVtZW50XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlUmV0dXJuU3RhdGVtZW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICghdGhpcy5jb250ZXh0LmluRnVuY3Rpb25Cb2R5KSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLklsbGVnYWxSZXR1cm4pO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgncmV0dXJuJyk7XG5cdCAgICAgICAgdmFyIGhhc0FyZ3VtZW50ID0gKCF0aGlzLm1hdGNoKCc7JykgJiYgIXRoaXMubWF0Y2goJ30nKSAmJlxuXHQgICAgICAgICAgICAhdGhpcy5oYXNMaW5lVGVybWluYXRvciAmJiB0aGlzLmxvb2thaGVhZC50eXBlICE9PSAyIC8qIEVPRiAqLykgfHxcblx0ICAgICAgICAgICAgdGhpcy5sb29rYWhlYWQudHlwZSA9PT0gOCAvKiBTdHJpbmdMaXRlcmFsICovIHx8XG5cdCAgICAgICAgICAgIHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDEwIC8qIFRlbXBsYXRlICovO1xuXHQgICAgICAgIHZhciBhcmd1bWVudCA9IGhhc0FyZ3VtZW50ID8gdGhpcy5wYXJzZUV4cHJlc3Npb24oKSA6IG51bGw7XG5cdCAgICAgICAgdGhpcy5jb25zdW1lU2VtaWNvbG9uKCk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtd2l0aC1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VXaXRoU3RhdGVtZW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0KSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdE1vZGVXaXRoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgYm9keTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3dpdGgnKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKCcpO1xuXHQgICAgICAgIHZhciBvYmplY3QgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbigpO1xuXHQgICAgICAgIGlmICghdGhpcy5tYXRjaCgnKScpICYmIHRoaXMuY29uZmlnLnRvbGVyYW50KSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odGhpcy5uZXh0VG9rZW4oKSk7XG5cdCAgICAgICAgICAgIGJvZHkgPSB0aGlzLmZpbmFsaXplKHRoaXMuY3JlYXRlTm9kZSgpLCBuZXcgTm9kZS5FbXB0eVN0YXRlbWVudCgpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0KCcpJyk7XG5cdCAgICAgICAgICAgIGJvZHkgPSB0aGlzLnBhcnNlU3RhdGVtZW50KCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLldpdGhTdGF0ZW1lbnQob2JqZWN0LCBib2R5KSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3dpdGNoLXN0YXRlbWVudFxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVN3aXRjaENhc2UgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgdGVzdDtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICB0ZXN0ID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnY2FzZScpO1xuXHQgICAgICAgICAgICB0ZXN0ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJzonKTtcblx0ICAgICAgICB2YXIgY29uc2VxdWVudCA9IFtdO1xuXHQgICAgICAgIHdoaWxlICh0cnVlKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCd9JykgfHwgdGhpcy5tYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSB8fCB0aGlzLm1hdGNoS2V5d29yZCgnY2FzZScpKSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBjb25zZXF1ZW50LnB1c2godGhpcy5wYXJzZVN0YXRlbWVudExpc3RJdGVtKCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Td2l0Y2hDYXNlKHRlc3QsIGNvbnNlcXVlbnQpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlU3dpdGNoU3RhdGVtZW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3RLZXl3b3JkKCdzd2l0Y2gnKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKCcpO1xuXHQgICAgICAgIHZhciBkaXNjcmltaW5hbnQgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbigpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCcpJyk7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzSW5Td2l0Y2ggPSB0aGlzLmNvbnRleHQuaW5Td2l0Y2g7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmluU3dpdGNoID0gdHJ1ZTtcblx0ICAgICAgICB2YXIgY2FzZXMgPSBbXTtcblx0ICAgICAgICB2YXIgZGVmYXVsdEZvdW5kID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJ3snKTtcblx0ICAgICAgICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB2YXIgY2xhdXNlID0gdGhpcy5wYXJzZVN3aXRjaENhc2UoKTtcblx0ICAgICAgICAgICAgaWYgKGNsYXVzZS50ZXN0ID09PSBudWxsKSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEZvdW5kKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuTXVsdGlwbGVEZWZhdWx0c0luU3dpdGNoKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGRlZmF1bHRGb3VuZCA9IHRydWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgY2FzZXMucHVzaChjbGF1c2UpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnfScpO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5pblN3aXRjaCA9IHByZXZpb3VzSW5Td2l0Y2g7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuU3dpdGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCwgY2FzZXMpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1sYWJlbGxlZC1zdGF0ZW1lbnRzXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlTGFiZWxsZWRTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgZXhwciA9IHRoaXMucGFyc2VFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgdmFyIHN0YXRlbWVudDtcblx0ICAgICAgICBpZiAoKGV4cHIudHlwZSA9PT0gc3ludGF4XzEuU3ludGF4LklkZW50aWZpZXIpICYmIHRoaXMubWF0Y2goJzonKSkge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICB2YXIgaWQgPSBleHByO1xuXHQgICAgICAgICAgICB2YXIga2V5ID0gJyQnICsgaWQubmFtZTtcblx0ICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbnRleHQubGFiZWxTZXQsIGtleSkpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlJlZGVjbGFyYXRpb24sICdMYWJlbCcsIGlkLm5hbWUpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5sYWJlbFNldFtrZXldID0gdHJ1ZTtcblx0ICAgICAgICAgICAgdmFyIGJvZHkgPSB2b2lkIDA7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoS2V5d29yZCgnY2xhc3MnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgICAgICAgICBib2R5ID0gdGhpcy5wYXJzZUNsYXNzRGVjbGFyYXRpb24oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoS2V5d29yZCgnZnVuY3Rpb24nKSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIHRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgICAgICAgICB2YXIgZGVjbGFyYXRpb24gPSB0aGlzLnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlY2xhcmF0aW9uLmdlbmVyYXRvcikge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odG9rZW4sIG1lc3NhZ2VzXzEuTWVzc2FnZXMuR2VuZXJhdG9ySW5MZWdhY3lDb250ZXh0KTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJvZHkgPSBkZWNsYXJhdGlvbjtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGJvZHkgPSB0aGlzLnBhcnNlU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29udGV4dC5sYWJlbFNldFtrZXldO1xuXHQgICAgICAgICAgICBzdGF0ZW1lbnQgPSBuZXcgTm9kZS5MYWJlbGVkU3RhdGVtZW50KGlkLCBib2R5KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIHRoaXMuY29uc3VtZVNlbWljb2xvbigpO1xuXHQgICAgICAgICAgICBzdGF0ZW1lbnQgPSBuZXcgTm9kZS5FeHByZXNzaW9uU3RhdGVtZW50KGV4cHIpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBzdGF0ZW1lbnQpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRocm93LXN0YXRlbWVudFxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVRocm93U3RhdGVtZW50ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3RLZXl3b3JkKCd0aHJvdycpO1xuXHQgICAgICAgIGlmICh0aGlzLmhhc0xpbmVUZXJtaW5hdG9yKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLk5ld2xpbmVBZnRlclRocm93KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGFyZ3VtZW50ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5UaHJvd1N0YXRlbWVudChhcmd1bWVudCkpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRyeS1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VDYXRjaENsYXVzZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnY2F0Y2gnKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKCcpO1xuXHQgICAgICAgIGlmICh0aGlzLm1hdGNoKCcpJykpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBwYXJhbXMgPSBbXTtcblx0ICAgICAgICB2YXIgcGFyYW0gPSB0aGlzLnBhcnNlUGF0dGVybihwYXJhbXMpO1xuXHQgICAgICAgIHZhciBwYXJhbU1hcCA9IHt9O1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIHZhciBrZXkgPSAnJCcgKyBwYXJhbXNbaV0udmFsdWU7XG5cdCAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1NYXAsIGtleSkpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLkR1cGxpY2F0ZUJpbmRpbmcsIHBhcmFtc1tpXS52YWx1ZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgcGFyYW1NYXBba2V5XSA9IHRydWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0ICYmIHBhcmFtLnR5cGUgPT09IHN5bnRheF8xLlN5bnRheC5JZGVudGlmaWVyKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNSZXN0cmljdGVkV29yZChwYXJhbS5uYW1lKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZUVycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0Q2F0Y2hWYXJpYWJsZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJyknKTtcblx0ICAgICAgICB2YXIgYm9keSA9IHRoaXMucGFyc2VCbG9jaygpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkNhdGNoQ2xhdXNlKHBhcmFtLCBib2R5KSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUZpbmFsbHlDbGF1c2UgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdGhpcy5leHBlY3RLZXl3b3JkKCdmaW5hbGx5Jyk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VCbG9jaygpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VUcnlTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3RyeScpO1xuXHQgICAgICAgIHZhciBibG9jayA9IHRoaXMucGFyc2VCbG9jaygpO1xuXHQgICAgICAgIHZhciBoYW5kbGVyID0gdGhpcy5tYXRjaEtleXdvcmQoJ2NhdGNoJykgPyB0aGlzLnBhcnNlQ2F0Y2hDbGF1c2UoKSA6IG51bGw7XG5cdCAgICAgICAgdmFyIGZpbmFsaXplciA9IHRoaXMubWF0Y2hLZXl3b3JkKCdmaW5hbGx5JykgPyB0aGlzLnBhcnNlRmluYWxseUNsYXVzZSgpIDogbnVsbDtcblx0ICAgICAgICBpZiAoIWhhbmRsZXIgJiYgIWZpbmFsaXplcikge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5Ob0NhdGNoT3JGaW5hbGx5KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuVHJ5U3RhdGVtZW50KGJsb2NrLCBoYW5kbGVyLCBmaW5hbGl6ZXIpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1kZWJ1Z2dlci1zdGF0ZW1lbnRcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VEZWJ1Z2dlclN0YXRlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZGVidWdnZXInKTtcblx0ICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5EZWJ1Z2dlclN0YXRlbWVudCgpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXN0YXRlbWVudHMtYW5kLWRlY2xhcmF0aW9uc1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVN0YXRlbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgc3RhdGVtZW50O1xuXHQgICAgICAgIHN3aXRjaCAodGhpcy5sb29rYWhlYWQudHlwZSkge1xuXHQgICAgICAgICAgICBjYXNlIDEgLyogQm9vbGVhbkxpdGVyYWwgKi86XG5cdCAgICAgICAgICAgIGNhc2UgNSAvKiBOdWxsTGl0ZXJhbCAqLzpcblx0ICAgICAgICAgICAgY2FzZSA2IC8qIE51bWVyaWNMaXRlcmFsICovOlxuXHQgICAgICAgICAgICBjYXNlIDggLyogU3RyaW5nTGl0ZXJhbCAqLzpcblx0ICAgICAgICAgICAgY2FzZSAxMCAvKiBUZW1wbGF0ZSAqLzpcblx0ICAgICAgICAgICAgY2FzZSA5IC8qIFJlZ3VsYXJFeHByZXNzaW9uICovOlxuXHQgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIDcgLyogUHVuY3R1YXRvciAqLzpcblx0ICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMubG9va2FoZWFkLnZhbHVlO1xuXHQgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSAneycpIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlQmxvY2soKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAnKCcpIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09ICc7Jykge1xuXHQgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMucGFyc2VFbXB0eVN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlIDMgLyogSWRlbnRpZmllciAqLzpcblx0ICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMubWF0Y2hBc3luY0Z1bmN0aW9uKCkgPyB0aGlzLnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpIDogdGhpcy5wYXJzZUxhYmVsbGVkU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgY2FzZSA0IC8qIEtleXdvcmQgKi86XG5cdCAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9va2FoZWFkLnZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnYnJlYWsnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlQnJlYWtTdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGludWUnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlQ29udGludWVTdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGVidWdnZXInOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnZG8nOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlRG9XaGlsZVN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICBjYXNlICdmb3InOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlRm9yU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWYnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlSWZTdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAncmV0dXJuJzpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZVJldHVyblN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICBjYXNlICdzd2l0Y2gnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlU3dpdGNoU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Rocm93Jzpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZVRocm93U3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RyeSc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHRoaXMucGFyc2VUcnlTdGF0ZW1lbnQoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgY2FzZSAndmFyJzpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZVZhcmlhYmxlU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3doaWxlJzpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy5wYXJzZVdoaWxlU3RhdGVtZW50KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dpdGgnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlV2l0aFN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSB0aGlzLnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0gdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLmxvb2thaGVhZCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZnVuY3Rpb24tZGVmaW5pdGlvbnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJ3snKTtcblx0ICAgICAgICB2YXIgYm9keSA9IHRoaXMucGFyc2VEaXJlY3RpdmVQcm9sb2d1ZXMoKTtcblx0ICAgICAgICB2YXIgcHJldmlvdXNMYWJlbFNldCA9IHRoaXMuY29udGV4dC5sYWJlbFNldDtcblx0ICAgICAgICB2YXIgcHJldmlvdXNJbkl0ZXJhdGlvbiA9IHRoaXMuY29udGV4dC5pbkl0ZXJhdGlvbjtcblx0ICAgICAgICB2YXIgcHJldmlvdXNJblN3aXRjaCA9IHRoaXMuY29udGV4dC5pblN3aXRjaDtcblx0ICAgICAgICB2YXIgcHJldmlvdXNJbkZ1bmN0aW9uQm9keSA9IHRoaXMuY29udGV4dC5pbkZ1bmN0aW9uQm9keTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQubGFiZWxTZXQgPSB7fTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaW5JdGVyYXRpb24gPSBmYWxzZTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaW5Td2l0Y2ggPSBmYWxzZTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaW5GdW5jdGlvbkJvZHkgPSB0cnVlO1xuXHQgICAgICAgIHdoaWxlICh0aGlzLmxvb2thaGVhZC50eXBlICE9PSAyIC8qIEVPRiAqLykge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBib2R5LnB1c2godGhpcy5wYXJzZVN0YXRlbWVudExpc3RJdGVtKCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnfScpO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5sYWJlbFNldCA9IHByZXZpb3VzTGFiZWxTZXQ7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmluSXRlcmF0aW9uID0gcHJldmlvdXNJbkl0ZXJhdGlvbjtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuaW5Td2l0Y2ggPSBwcmV2aW91c0luU3dpdGNoO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5pbkZ1bmN0aW9uQm9keSA9IHByZXZpb3VzSW5GdW5jdGlvbkJvZHk7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuQmxvY2tTdGF0ZW1lbnQoYm9keSkpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUudmFsaWRhdGVQYXJhbSA9IGZ1bmN0aW9uIChvcHRpb25zLCBwYXJhbSwgbmFtZSkge1xuXHQgICAgICAgIHZhciBrZXkgPSAnJCcgKyBuYW1lO1xuXHQgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0KSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNSZXN0cmljdGVkV29yZChuYW1lKSkge1xuXHQgICAgICAgICAgICAgICAgb3B0aW9ucy5zdHJpY3RlZCA9IHBhcmFtO1xuXHQgICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gbWVzc2FnZXNfMS5NZXNzYWdlcy5TdHJpY3RQYXJhbU5hbWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLnBhcmFtU2V0LCBrZXkpKSB7XG5cdCAgICAgICAgICAgICAgICBvcHRpb25zLnN0cmljdGVkID0gcGFyYW07XG5cdCAgICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2UgPSBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICghb3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMuc2Nhbm5lci5pc1Jlc3RyaWN0ZWRXb3JkKG5hbWUpKSB7XG5cdCAgICAgICAgICAgICAgICBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCA9IHBhcmFtO1xuXHQgICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gbWVzc2FnZXNfMS5NZXNzYWdlcy5TdHJpY3RQYXJhbU5hbWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zY2FubmVyLmlzU3RyaWN0TW9kZVJlc2VydmVkV29yZChuYW1lKSkge1xuXHQgICAgICAgICAgICAgICAgb3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQgPSBwYXJhbTtcblx0ICAgICAgICAgICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLnBhcmFtU2V0LCBrZXkpKSB7XG5cdCAgICAgICAgICAgICAgICBvcHRpb25zLnN0cmljdGVkID0gcGFyYW07XG5cdCAgICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2UgPSBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHQgICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcHRpb25zLnBhcmFtU2V0LCBrZXksIHsgdmFsdWU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICBvcHRpb25zLnBhcmFtU2V0W2tleV0gPSB0cnVlO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlUmVzdEVsZW1lbnQgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnLi4uJyk7XG5cdCAgICAgICAgdmFyIGFyZyA9IHRoaXMucGFyc2VQYXR0ZXJuKHBhcmFtcyk7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2goJz0nKSkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5EZWZhdWx0UmVzdFBhcmFtZXRlcik7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICghdGhpcy5tYXRjaCgnKScpKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLlBhcmFtZXRlckFmdGVyUmVzdFBhcmFtZXRlcik7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLlJlc3RFbGVtZW50KGFyZykpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VGb3JtYWxQYXJhbWV0ZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXHQgICAgICAgIHZhciBwYXJhbXMgPSBbXTtcblx0ICAgICAgICB2YXIgcGFyYW0gPSB0aGlzLm1hdGNoKCcuLi4nKSA/IHRoaXMucGFyc2VSZXN0RWxlbWVudChwYXJhbXMpIDogdGhpcy5wYXJzZVBhdHRlcm5XaXRoRGVmYXVsdChwYXJhbXMpO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIHRoaXMudmFsaWRhdGVQYXJhbShvcHRpb25zLCBwYXJhbXNbaV0sIHBhcmFtc1tpXS52YWx1ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIG9wdGlvbnMuc2ltcGxlID0gb3B0aW9ucy5zaW1wbGUgJiYgKHBhcmFtIGluc3RhbmNlb2YgTm9kZS5JZGVudGlmaWVyKTtcblx0ICAgICAgICBvcHRpb25zLnBhcmFtcy5wdXNoKHBhcmFtKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlRm9ybWFsUGFyYW1ldGVycyA9IGZ1bmN0aW9uIChmaXJzdFJlc3RyaWN0ZWQpIHtcblx0ICAgICAgICB2YXIgb3B0aW9ucztcblx0ICAgICAgICBvcHRpb25zID0ge1xuXHQgICAgICAgICAgICBzaW1wbGU6IHRydWUsXG5cdCAgICAgICAgICAgIHBhcmFtczogW10sXG5cdCAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZDogZmlyc3RSZXN0cmljdGVkXG5cdCAgICAgICAgfTtcblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKCcpO1xuXHQgICAgICAgIGlmICghdGhpcy5tYXRjaCgnKScpKSB7XG5cdCAgICAgICAgICAgIG9wdGlvbnMucGFyYW1TZXQgPSB7fTtcblx0ICAgICAgICAgICAgd2hpbGUgKHRoaXMubG9va2FoZWFkLnR5cGUgIT09IDIgLyogRU9GICovKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRm9ybWFsUGFyYW1ldGVyKG9wdGlvbnMpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJyknKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJywnKTtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCcpJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnKScpO1xuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIHNpbXBsZTogb3B0aW9ucy5zaW1wbGUsXG5cdCAgICAgICAgICAgIHBhcmFtczogb3B0aW9ucy5wYXJhbXMsXG5cdCAgICAgICAgICAgIHN0cmljdGVkOiBvcHRpb25zLnN0cmljdGVkLFxuXHQgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQ6IG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkLFxuXHQgICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2Vcblx0ICAgICAgICB9O1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUubWF0Y2hBc3luY0Z1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBtYXRjaCA9IHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXN5bmMnKTtcblx0ICAgICAgICBpZiAobWF0Y2gpIHtcblx0ICAgICAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5zY2FubmVyLnNhdmVTdGF0ZSgpO1xuXHQgICAgICAgICAgICB0aGlzLnNjYW5uZXIuc2NhbkNvbW1lbnRzKCk7XG5cdCAgICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5zY2FubmVyLmxleCgpO1xuXHQgICAgICAgICAgICB0aGlzLnNjYW5uZXIucmVzdG9yZVN0YXRlKHN0YXRlKTtcblx0ICAgICAgICAgICAgbWF0Y2ggPSAoc3RhdGUubGluZU51bWJlciA9PT0gbmV4dC5saW5lTnVtYmVyKSAmJiAobmV4dC50eXBlID09PSA0IC8qIEtleXdvcmQgKi8pICYmIChuZXh0LnZhbHVlID09PSAnZnVuY3Rpb24nKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIG1hdGNoO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uID0gZnVuY3Rpb24gKGlkZW50aWZpZXJJc09wdGlvbmFsKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgaXNBc3luYyA9IHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXN5bmMnKTtcblx0ICAgICAgICBpZiAoaXNBc3luYykge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7XG5cdCAgICAgICAgdmFyIGlzR2VuZXJhdG9yID0gaXNBc3luYyA/IGZhbHNlIDogdGhpcy5tYXRjaCgnKicpO1xuXHQgICAgICAgIGlmIChpc0dlbmVyYXRvcikge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbWVzc2FnZTtcblx0ICAgICAgICB2YXIgaWQgPSBudWxsO1xuXHQgICAgICAgIHZhciBmaXJzdFJlc3RyaWN0ZWQgPSBudWxsO1xuXHQgICAgICAgIGlmICghaWRlbnRpZmllcklzT3B0aW9uYWwgfHwgIXRoaXMubWF0Y2goJygnKSkge1xuXHQgICAgICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICAgICAgaWQgPSB0aGlzLnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQuc3RyaWN0KSB7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5zY2FubmVyLmlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbih0b2tlbiwgbWVzc2FnZXNfMS5NZXNzYWdlcy5TdHJpY3RGdW5jdGlvbk5hbWUpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nhbm5lci5pc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuXHQgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdEZ1bmN0aW9uTmFtZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2Nhbm5lci5pc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG5cdCAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBwcmV2aW91c0FsbG93QXdhaXQgPSB0aGlzLmNvbnRleHQuYXdhaXQ7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dZaWVsZCA9IHRoaXMuY29udGV4dC5hbGxvd1lpZWxkO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hd2FpdCA9IGlzQXN5bmM7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSAhaXNHZW5lcmF0b3I7XG5cdCAgICAgICAgdmFyIGZvcm1hbFBhcmFtZXRlcnMgPSB0aGlzLnBhcnNlRm9ybWFsUGFyYW1ldGVycyhmaXJzdFJlc3RyaWN0ZWQpO1xuXHQgICAgICAgIHZhciBwYXJhbXMgPSBmb3JtYWxQYXJhbWV0ZXJzLnBhcmFtcztcblx0ICAgICAgICB2YXIgc3RyaWN0ZWQgPSBmb3JtYWxQYXJhbWV0ZXJzLnN0cmljdGVkO1xuXHQgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IGZvcm1hbFBhcmFtZXRlcnMuZmlyc3RSZXN0cmljdGVkO1xuXHQgICAgICAgIGlmIChmb3JtYWxQYXJhbWV0ZXJzLm1lc3NhZ2UpIHtcblx0ICAgICAgICAgICAgbWVzc2FnZSA9IGZvcm1hbFBhcmFtZXRlcnMubWVzc2FnZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0ID0gdGhpcy5jb250ZXh0LnN0cmljdDtcblx0ICAgICAgICB2YXIgcHJldmlvdXNBbGxvd1N0cmljdERpcmVjdGl2ZSA9IHRoaXMuY29udGV4dC5hbGxvd1N0cmljdERpcmVjdGl2ZTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dTdHJpY3REaXJlY3RpdmUgPSBmb3JtYWxQYXJhbWV0ZXJzLnNpbXBsZTtcblx0ICAgICAgICB2YXIgYm9keSA9IHRoaXMucGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCk7XG5cdCAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgZmlyc3RSZXN0cmljdGVkKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKHRoaXMuY29udGV4dC5zdHJpY3QgJiYgc3RyaWN0ZWQpIHtcblx0ICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbihzdHJpY3RlZCwgbWVzc2FnZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuY29udGV4dC5zdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dTdHJpY3REaXJlY3RpdmUgPSBwcmV2aW91c0FsbG93U3RyaWN0RGlyZWN0aXZlO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hd2FpdCA9IHByZXZpb3VzQWxsb3dBd2FpdDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZCA9IHByZXZpb3VzQWxsb3dZaWVsZDtcblx0ICAgICAgICByZXR1cm4gaXNBc3luYyA/IHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKGlkLCBwYXJhbXMsIGJvZHkpKSA6XG5cdCAgICAgICAgICAgIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuRnVuY3Rpb25EZWNsYXJhdGlvbihpZCwgcGFyYW1zLCBib2R5LCBpc0dlbmVyYXRvcikpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VGdW5jdGlvbkV4cHJlc3Npb24gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgaXNBc3luYyA9IHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXN5bmMnKTtcblx0ICAgICAgICBpZiAoaXNBc3luYykge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7XG5cdCAgICAgICAgdmFyIGlzR2VuZXJhdG9yID0gaXNBc3luYyA/IGZhbHNlIDogdGhpcy5tYXRjaCgnKicpO1xuXHQgICAgICAgIGlmIChpc0dlbmVyYXRvcikge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbWVzc2FnZTtcblx0ICAgICAgICB2YXIgaWQgPSBudWxsO1xuXHQgICAgICAgIHZhciBmaXJzdFJlc3RyaWN0ZWQ7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dBd2FpdCA9IHRoaXMuY29udGV4dC5hd2FpdDtcblx0ICAgICAgICB2YXIgcHJldmlvdXNBbGxvd1lpZWxkID0gdGhpcy5jb250ZXh0LmFsbG93WWllbGQ7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmF3YWl0ID0gaXNBc3luYztcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZCA9ICFpc0dlbmVyYXRvcjtcblx0ICAgICAgICBpZiAoIXRoaXMubWF0Y2goJygnKSkge1xuXHQgICAgICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICAgICAgaWQgPSAoIXRoaXMuY29udGV4dC5zdHJpY3QgJiYgIWlzR2VuZXJhdG9yICYmIHRoaXMubWF0Y2hLZXl3b3JkKCd5aWVsZCcpKSA/IHRoaXMucGFyc2VJZGVudGlmaWVyTmFtZSgpIDogdGhpcy5wYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXHQgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nhbm5lci5pc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4odG9rZW4sIG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLnNjYW5uZXIuaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHtcblx0ICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjtcblx0ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZXNfMS5NZXNzYWdlcy5TdHJpY3RGdW5jdGlvbk5hbWU7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNjYW5uZXIuaXNTdHJpY3RNb2RlUmVzZXJ2ZWRXb3JkKHRva2VuLnZhbHVlKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuO1xuXHQgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgZm9ybWFsUGFyYW1ldGVycyA9IHRoaXMucGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGZpcnN0UmVzdHJpY3RlZCk7XG5cdCAgICAgICAgdmFyIHBhcmFtcyA9IGZvcm1hbFBhcmFtZXRlcnMucGFyYW1zO1xuXHQgICAgICAgIHZhciBzdHJpY3RlZCA9IGZvcm1hbFBhcmFtZXRlcnMuc3RyaWN0ZWQ7XG5cdCAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gZm9ybWFsUGFyYW1ldGVycy5maXJzdFJlc3RyaWN0ZWQ7XG5cdCAgICAgICAgaWYgKGZvcm1hbFBhcmFtZXRlcnMubWVzc2FnZSkge1xuXHQgICAgICAgICAgICBtZXNzYWdlID0gZm9ybWFsUGFyYW1ldGVycy5tZXNzYWdlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3QgPSB0aGlzLmNvbnRleHQuc3RyaWN0O1xuXHQgICAgICAgIHZhciBwcmV2aW91c0FsbG93U3RyaWN0RGlyZWN0aXZlID0gdGhpcy5jb250ZXh0LmFsbG93U3RyaWN0RGlyZWN0aXZlO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1N0cmljdERpcmVjdGl2ZSA9IGZvcm1hbFBhcmFtZXRlcnMuc2ltcGxlO1xuXHQgICAgICAgIHZhciBib2R5ID0gdGhpcy5wYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTtcblx0ICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCAmJiBmaXJzdFJlc3RyaWN0ZWQpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbihmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGhpcy5jb250ZXh0LnN0cmljdCAmJiBzdHJpY3RlZCkge1xuXHQgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHN0cmljdGVkLCBtZXNzYWdlKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LnN0cmljdCA9IHByZXZpb3VzU3RyaWN0O1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1N0cmljdERpcmVjdGl2ZSA9IHByZXZpb3VzQWxsb3dTdHJpY3REaXJlY3RpdmU7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmF3YWl0ID0gcHJldmlvdXNBbGxvd0F3YWl0O1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gcHJldmlvdXNBbGxvd1lpZWxkO1xuXHQgICAgICAgIHJldHVybiBpc0FzeW5jID8gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Bc3luY0Z1bmN0aW9uRXhwcmVzc2lvbihpZCwgcGFyYW1zLCBib2R5KSkgOlxuXHQgICAgICAgICAgICB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkZ1bmN0aW9uRXhwcmVzc2lvbihpZCwgcGFyYW1zLCBib2R5LCBpc0dlbmVyYXRvcikpO1xuXHQgICAgfTtcblx0ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWRpcmVjdGl2ZS1wcm9sb2d1ZXMtYW5kLXRoZS11c2Utc3RyaWN0LWRpcmVjdGl2ZVxuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZURpcmVjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBleHByID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcblx0ICAgICAgICB2YXIgZGlyZWN0aXZlID0gKGV4cHIudHlwZSA9PT0gc3ludGF4XzEuU3ludGF4LkxpdGVyYWwpID8gdGhpcy5nZXRUb2tlblJhdyh0b2tlbikuc2xpY2UoMSwgLTEpIDogbnVsbDtcblx0ICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBkaXJlY3RpdmUgPyBuZXcgTm9kZS5EaXJlY3RpdmUoZXhwciwgZGlyZWN0aXZlKSA6IG5ldyBOb2RlLkV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwcikpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VEaXJlY3RpdmVQcm9sb2d1ZXMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGZpcnN0UmVzdHJpY3RlZCA9IG51bGw7XG5cdCAgICAgICAgdmFyIGJvZHkgPSBbXTtcblx0ICAgICAgICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IDggLyogU3RyaW5nTGl0ZXJhbCAqLykge1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdmFyIHN0YXRlbWVudCA9IHRoaXMucGFyc2VEaXJlY3RpdmUoKTtcblx0ICAgICAgICAgICAgYm9keS5wdXNoKHN0YXRlbWVudCk7XG5cdCAgICAgICAgICAgIHZhciBkaXJlY3RpdmUgPSBzdGF0ZW1lbnQuZGlyZWN0aXZlO1xuXHQgICAgICAgICAgICBpZiAodHlwZW9mIGRpcmVjdGl2ZSAhPT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0Jykge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LnN0cmljdCA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZXN0cmljdGVkKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbihmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2VzXzEuTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250ZXh0LmFsbG93U3RyaWN0RGlyZWN0aXZlKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbih0b2tlbiwgbWVzc2FnZXNfMS5NZXNzYWdlcy5JbGxlZ2FsTGFuZ3VhZ2VNb2RlRGlyZWN0aXZlKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGlmICghZmlyc3RSZXN0cmljdGVkICYmIHRva2VuLm9jdGFsKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGJvZHk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbWV0aG9kLWRlZmluaXRpb25zXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnF1YWxpZmllZFByb3BlcnR5TmFtZSA9IGZ1bmN0aW9uICh0b2tlbikge1xuXHQgICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuXHQgICAgICAgICAgICBjYXNlIDMgLyogSWRlbnRpZmllciAqLzpcblx0ICAgICAgICAgICAgY2FzZSA4IC8qIFN0cmluZ0xpdGVyYWwgKi86XG5cdCAgICAgICAgICAgIGNhc2UgMSAvKiBCb29sZWFuTGl0ZXJhbCAqLzpcblx0ICAgICAgICAgICAgY2FzZSA1IC8qIE51bGxMaXRlcmFsICovOlxuXHQgICAgICAgICAgICBjYXNlIDYgLyogTnVtZXJpY0xpdGVyYWwgKi86XG5cdCAgICAgICAgICAgIGNhc2UgNCAvKiBLZXl3b3JkICovOlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgICAgIGNhc2UgNyAvKiBQdW5jdHVhdG9yICovOlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlID09PSAnWyc7XG5cdCAgICAgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VHZXR0ZXJNZXRob2QgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgaXNHZW5lcmF0b3IgPSBmYWxzZTtcblx0ICAgICAgICB2YXIgcHJldmlvdXNBbGxvd1lpZWxkID0gdGhpcy5jb250ZXh0LmFsbG93WWllbGQ7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSAhaXNHZW5lcmF0b3I7XG5cdCAgICAgICAgdmFyIGZvcm1hbFBhcmFtZXRlcnMgPSB0aGlzLnBhcnNlRm9ybWFsUGFyYW1ldGVycygpO1xuXHQgICAgICAgIGlmIChmb3JtYWxQYXJhbWV0ZXJzLnBhcmFtcy5sZW5ndGggPiAwKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLkJhZEdldHRlckFyaXR5KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIG1ldGhvZCA9IHRoaXMucGFyc2VQcm9wZXJ0eU1ldGhvZChmb3JtYWxQYXJhbWV0ZXJzKTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZCA9IHByZXZpb3VzQWxsb3dZaWVsZDtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5GdW5jdGlvbkV4cHJlc3Npb24obnVsbCwgZm9ybWFsUGFyYW1ldGVycy5wYXJhbXMsIG1ldGhvZCwgaXNHZW5lcmF0b3IpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlU2V0dGVyTWV0aG9kID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIGlzR2VuZXJhdG9yID0gZmFsc2U7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dZaWVsZCA9IHRoaXMuY29udGV4dC5hbGxvd1lpZWxkO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gIWlzR2VuZXJhdG9yO1xuXHQgICAgICAgIHZhciBmb3JtYWxQYXJhbWV0ZXJzID0gdGhpcy5wYXJzZUZvcm1hbFBhcmFtZXRlcnMoKTtcblx0ICAgICAgICBpZiAoZm9ybWFsUGFyYW1ldGVycy5wYXJhbXMubGVuZ3RoICE9PSAxKSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLkJhZFNldHRlckFyaXR5KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAoZm9ybWFsUGFyYW1ldGVycy5wYXJhbXNbMF0gaW5zdGFuY2VvZiBOb2RlLlJlc3RFbGVtZW50KSB7XG5cdCAgICAgICAgICAgIHRoaXMudG9sZXJhdGVFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLkJhZFNldHRlclJlc3RQYXJhbWV0ZXIpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgbWV0aG9kID0gdGhpcy5wYXJzZVByb3BlcnR5TWV0aG9kKGZvcm1hbFBhcmFtZXRlcnMpO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gcHJldmlvdXNBbGxvd1lpZWxkO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkZ1bmN0aW9uRXhwcmVzc2lvbihudWxsLCBmb3JtYWxQYXJhbWV0ZXJzLnBhcmFtcywgbWV0aG9kLCBpc0dlbmVyYXRvcikpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VHZW5lcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgaXNHZW5lcmF0b3IgPSB0cnVlO1xuXHQgICAgICAgIHZhciBwcmV2aW91c0FsbG93WWllbGQgPSB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZCA9IHRydWU7XG5cdCAgICAgICAgdmFyIHBhcmFtcyA9IHRoaXMucGFyc2VGb3JtYWxQYXJhbWV0ZXJzKCk7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBmYWxzZTtcblx0ICAgICAgICB2YXIgbWV0aG9kID0gdGhpcy5wYXJzZVByb3BlcnR5TWV0aG9kKHBhcmFtcyk7XG5cdCAgICAgICAgdGhpcy5jb250ZXh0LmFsbG93WWllbGQgPSBwcmV2aW91c0FsbG93WWllbGQ7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuRnVuY3Rpb25FeHByZXNzaW9uKG51bGwsIHBhcmFtcy5wYXJhbXMsIG1ldGhvZCwgaXNHZW5lcmF0b3IpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUuaXNTdGFydE9mRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgc3RhcnQgPSB0cnVlO1xuXHQgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMubG9va2FoZWFkLnZhbHVlO1xuXHQgICAgICAgIHN3aXRjaCAodGhpcy5sb29rYWhlYWQudHlwZSkge1xuXHQgICAgICAgICAgICBjYXNlIDcgLyogUHVuY3R1YXRvciAqLzpcblx0ICAgICAgICAgICAgICAgIHN0YXJ0ID0gKHZhbHVlID09PSAnWycpIHx8ICh2YWx1ZSA9PT0gJygnKSB8fCAodmFsdWUgPT09ICd7JykgfHxcblx0ICAgICAgICAgICAgICAgICAgICAodmFsdWUgPT09ICcrJykgfHwgKHZhbHVlID09PSAnLScpIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgKHZhbHVlID09PSAnIScpIHx8ICh2YWx1ZSA9PT0gJ34nKSB8fFxuXHQgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gJysrJykgfHwgKHZhbHVlID09PSAnLS0nKSB8fFxuXHQgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gJy8nKSB8fCAodmFsdWUgPT09ICcvPScpOyAvLyByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbFxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgNCAvKiBLZXl3b3JkICovOlxuXHQgICAgICAgICAgICAgICAgc3RhcnQgPSAodmFsdWUgPT09ICdjbGFzcycpIHx8ICh2YWx1ZSA9PT0gJ2RlbGV0ZScpIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgKHZhbHVlID09PSAnZnVuY3Rpb24nKSB8fCAodmFsdWUgPT09ICdsZXQnKSB8fCAodmFsdWUgPT09ICduZXcnKSB8fFxuXHQgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA9PT0gJ3N1cGVyJykgfHwgKHZhbHVlID09PSAndGhpcycpIHx8ICh2YWx1ZSA9PT0gJ3R5cGVvZicpIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgKHZhbHVlID09PSAndm9pZCcpIHx8ICh2YWx1ZSA9PT0gJ3lpZWxkJyk7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgZGVmYXVsdDpcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gc3RhcnQ7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZVlpZWxkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHRoaXMuZXhwZWN0S2V5d29yZCgneWllbGQnKTtcblx0ICAgICAgICB2YXIgYXJndW1lbnQgPSBudWxsO1xuXHQgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGZhbHNlO1xuXHQgICAgICAgIGlmICghdGhpcy5oYXNMaW5lVGVybWluYXRvcikge1xuXHQgICAgICAgICAgICB2YXIgcHJldmlvdXNBbGxvd1lpZWxkID0gdGhpcy5jb250ZXh0LmFsbG93WWllbGQ7XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gZmFsc2U7XG5cdCAgICAgICAgICAgIGRlbGVnYXRlID0gdGhpcy5tYXRjaCgnKicpO1xuXHQgICAgICAgICAgICBpZiAoZGVsZWdhdGUpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICBhcmd1bWVudCA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNTdGFydE9mRXhwcmVzc2lvbigpKSB7XG5cdCAgICAgICAgICAgICAgICBhcmd1bWVudCA9IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHRoaXMuY29udGV4dC5hbGxvd1lpZWxkID0gcHJldmlvdXNBbGxvd1lpZWxkO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5ZaWVsZEV4cHJlc3Npb24oYXJndW1lbnQsIGRlbGVnYXRlKSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY2xhc3MtZGVmaW5pdGlvbnNcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VDbGFzc0VsZW1lbnQgPSBmdW5jdGlvbiAoaGFzQ29uc3RydWN0b3IpIHtcblx0ICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBraW5kID0gJyc7XG5cdCAgICAgICAgdmFyIGtleSA9IG51bGw7XG5cdCAgICAgICAgdmFyIHZhbHVlID0gbnVsbDtcblx0ICAgICAgICB2YXIgY29tcHV0ZWQgPSBmYWxzZTtcblx0ICAgICAgICB2YXIgbWV0aG9kID0gZmFsc2U7XG5cdCAgICAgICAgdmFyIGlzU3RhdGljID0gZmFsc2U7XG5cdCAgICAgICAgdmFyIGlzQXN5bmMgPSBmYWxzZTtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaCgnKicpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICBjb21wdXRlZCA9IHRoaXMubWF0Y2goJ1snKTtcblx0ICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgICAgIHZhciBpZCA9IGtleTtcblx0ICAgICAgICAgICAgaWYgKGlkLm5hbWUgPT09ICdzdGF0aWMnICYmICh0aGlzLnF1YWxpZmllZFByb3BlcnR5TmFtZSh0aGlzLmxvb2thaGVhZCkgfHwgdGhpcy5tYXRjaCgnKicpKSkge1xuXHQgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmxvb2thaGVhZDtcblx0ICAgICAgICAgICAgICAgIGlzU3RhdGljID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgIGNvbXB1dGVkID0gdGhpcy5tYXRjaCgnWycpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJyonKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBrZXkgPSB0aGlzLnBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoKHRva2VuLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLykgJiYgIXRoaXMuaGFzTGluZVRlcm1pbmF0b3IgJiYgKHRva2VuLnZhbHVlID09PSAnYXN5bmMnKSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIHB1bmN0dWF0b3IgPSB0aGlzLmxvb2thaGVhZC52YWx1ZTtcblx0ICAgICAgICAgICAgICAgIGlmIChwdW5jdHVhdG9yICE9PSAnOicgJiYgcHVuY3R1YXRvciAhPT0gJygnICYmIHB1bmN0dWF0b3IgIT09ICcqJykge1xuXHQgICAgICAgICAgICAgICAgICAgIGlzQXN5bmMgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5sb29rYWhlYWQ7XG5cdCAgICAgICAgICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLyAmJiB0b2tlbi52YWx1ZSA9PT0gJ2NvbnN0cnVjdG9yJykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLkNvbnN0cnVjdG9ySXNBc3luYyk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBsb29rYWhlYWRQcm9wZXJ0eUtleSA9IHRoaXMucXVhbGlmaWVkUHJvcGVydHlOYW1lKHRoaXMubG9va2FoZWFkKTtcblx0ICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gMyAvKiBJZGVudGlmaWVyICovKSB7XG5cdCAgICAgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ2dldCcgJiYgbG9va2FoZWFkUHJvcGVydHlLZXkpIHtcblx0ICAgICAgICAgICAgICAgIGtpbmQgPSAnZ2V0Jztcblx0ICAgICAgICAgICAgICAgIGNvbXB1dGVkID0gdGhpcy5tYXRjaCgnWycpO1xuXHQgICAgICAgICAgICAgICAga2V5ID0gdGhpcy5wYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuYWxsb3dZaWVsZCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlR2V0dGVyTWV0aG9kKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4udmFsdWUgPT09ICdzZXQnICYmIGxvb2thaGVhZFByb3BlcnR5S2V5KSB7XG5cdCAgICAgICAgICAgICAgICBraW5kID0gJ3NldCc7XG5cdCAgICAgICAgICAgICAgICBjb21wdXRlZCA9IHRoaXMubWF0Y2goJ1snKTtcblx0ICAgICAgICAgICAgICAgIGtleSA9IHRoaXMucGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpO1xuXHQgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnBhcnNlU2V0dGVyTWV0aG9kKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovICYmIHRva2VuLnZhbHVlID09PSAnKicgJiYgbG9va2FoZWFkUHJvcGVydHlLZXkpIHtcblx0ICAgICAgICAgICAga2luZCA9ICdpbml0Jztcblx0ICAgICAgICAgICAgY29tcHV0ZWQgPSB0aGlzLm1hdGNoKCdbJyk7XG5cdCAgICAgICAgICAgIGtleSA9IHRoaXMucGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpO1xuXHQgICAgICAgICAgICB2YWx1ZSA9IHRoaXMucGFyc2VHZW5lcmF0b3JNZXRob2QoKTtcblx0ICAgICAgICAgICAgbWV0aG9kID0gdHJ1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKCFraW5kICYmIGtleSAmJiB0aGlzLm1hdGNoKCcoJykpIHtcblx0ICAgICAgICAgICAga2luZCA9ICdpbml0Jztcblx0ICAgICAgICAgICAgdmFsdWUgPSBpc0FzeW5jID8gdGhpcy5wYXJzZVByb3BlcnR5TWV0aG9kQXN5bmNGdW5jdGlvbigpIDogdGhpcy5wYXJzZVByb3BlcnR5TWV0aG9kRnVuY3Rpb24oKTtcblx0ICAgICAgICAgICAgbWV0aG9kID0gdHJ1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKCFraW5kKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoa2luZCA9PT0gJ2luaXQnKSB7XG5cdCAgICAgICAgICAgIGtpbmQgPSAnbWV0aG9kJztcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKCFjb21wdXRlZCkge1xuXHQgICAgICAgICAgICBpZiAoaXNTdGF0aWMgJiYgdGhpcy5pc1Byb3BlcnR5S2V5KGtleSwgJ3Byb3RvdHlwZScpKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLlN0YXRpY1Byb3RvdHlwZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgaWYgKCFpc1N0YXRpYyAmJiB0aGlzLmlzUHJvcGVydHlLZXkoa2V5LCAnY29uc3RydWN0b3InKSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGtpbmQgIT09ICdtZXRob2QnIHx8ICFtZXRob2QgfHwgKHZhbHVlICYmIHZhbHVlLmdlbmVyYXRvcikpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLkNvbnN0cnVjdG9yU3BlY2lhbE1ldGhvZCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBpZiAoaGFzQ29uc3RydWN0b3IudmFsdWUpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKHRva2VuLCBtZXNzYWdlc18xLk1lc3NhZ2VzLkR1cGxpY2F0ZUNvbnN0cnVjdG9yKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIGhhc0NvbnN0cnVjdG9yLnZhbHVlID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGtpbmQgPSAnY29uc3RydWN0b3InO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLk1ldGhvZERlZmluaXRpb24oa2V5LCBjb21wdXRlZCwgdmFsdWUsIGtpbmQsIGlzU3RhdGljKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUNsYXNzRWxlbWVudExpc3QgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGJvZHkgPSBbXTtcblx0ICAgICAgICB2YXIgaGFzQ29uc3RydWN0b3IgPSB7IHZhbHVlOiBmYWxzZSB9O1xuXHQgICAgICAgIHRoaXMuZXhwZWN0KCd7Jyk7XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLm1hdGNoKCd9JykpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2goJzsnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGJvZHkucHVzaCh0aGlzLnBhcnNlQ2xhc3NFbGVtZW50KGhhc0NvbnN0cnVjdG9yKSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJ30nKTtcblx0ICAgICAgICByZXR1cm4gYm9keTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQ2xhc3NCb2R5ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIGVsZW1lbnRMaXN0ID0gdGhpcy5wYXJzZUNsYXNzRWxlbWVudExpc3QoKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5DbGFzc0JvZHkoZWxlbWVudExpc3QpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQ2xhc3NEZWNsYXJhdGlvbiA9IGZ1bmN0aW9uIChpZGVudGlmaWVySXNPcHRpb25hbCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0ID0gdGhpcy5jb250ZXh0LnN0cmljdDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuc3RyaWN0ID0gdHJ1ZTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2NsYXNzJyk7XG5cdCAgICAgICAgdmFyIGlkID0gKGlkZW50aWZpZXJJc09wdGlvbmFsICYmICh0aGlzLmxvb2thaGVhZC50eXBlICE9PSAzIC8qIElkZW50aWZpZXIgKi8pKSA/IG51bGwgOiB0aGlzLnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cdCAgICAgICAgdmFyIHN1cGVyQ2xhc3MgPSBudWxsO1xuXHQgICAgICAgIGlmICh0aGlzLm1hdGNoS2V5d29yZCgnZXh0ZW5kcycpKSB7XG5cdCAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgIHN1cGVyQ2xhc3MgPSB0aGlzLmlzb2xhdGVDb3ZlckdyYW1tYXIodGhpcy5wYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgY2xhc3NCb2R5ID0gdGhpcy5wYXJzZUNsYXNzQm9keSgpO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5zdHJpY3QgPSBwcmV2aW91c1N0cmljdDtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5DbGFzc0RlY2xhcmF0aW9uKGlkLCBzdXBlckNsYXNzLCBjbGFzc0JvZHkpKTtcblx0ICAgIH07XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlQ2xhc3NFeHByZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0ID0gdGhpcy5jb250ZXh0LnN0cmljdDtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuc3RyaWN0ID0gdHJ1ZTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2NsYXNzJyk7XG5cdCAgICAgICAgdmFyIGlkID0gKHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDMgLyogSWRlbnRpZmllciAqLykgPyB0aGlzLnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgOiBudWxsO1xuXHQgICAgICAgIHZhciBzdXBlckNsYXNzID0gbnVsbDtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2V4dGVuZHMnKSkge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICBzdXBlckNsYXNzID0gdGhpcy5pc29sYXRlQ292ZXJHcmFtbWFyKHRoaXMucGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGNsYXNzQm9keSA9IHRoaXMucGFyc2VDbGFzc0JvZHkoKTtcblx0ICAgICAgICB0aGlzLmNvbnRleHQuc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuQ2xhc3NFeHByZXNzaW9uKGlkLCBzdXBlckNsYXNzLCBjbGFzc0JvZHkpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zY3JpcHRzXG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1tb2R1bGVzXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlTW9kdWxlID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5zdHJpY3QgPSB0cnVlO1xuXHQgICAgICAgIHRoaXMuY29udGV4dC5pc01vZHVsZSA9IHRydWU7XG5cdCAgICAgICAgdGhpcy5zY2FubmVyLmlzTW9kdWxlID0gdHJ1ZTtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBib2R5ID0gdGhpcy5wYXJzZURpcmVjdGl2ZVByb2xvZ3VlcygpO1xuXHQgICAgICAgIHdoaWxlICh0aGlzLmxvb2thaGVhZC50eXBlICE9PSAyIC8qIEVPRiAqLykge1xuXHQgICAgICAgICAgICBib2R5LnB1c2godGhpcy5wYXJzZVN0YXRlbWVudExpc3RJdGVtKCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5Nb2R1bGUoYm9keSkpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VTY3JpcHQgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgYm9keSA9IHRoaXMucGFyc2VEaXJlY3RpdmVQcm9sb2d1ZXMoKTtcblx0ICAgICAgICB3aGlsZSAodGhpcy5sb29rYWhlYWQudHlwZSAhPT0gMiAvKiBFT0YgKi8pIHtcblx0ICAgICAgICAgICAgYm9keS5wdXNoKHRoaXMucGFyc2VTdGF0ZW1lbnRMaXN0SXRlbSgpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuU2NyaXB0KGJvZHkpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pbXBvcnRzXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlTW9kdWxlU3BlY2lmaWVyID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgaWYgKHRoaXMubG9va2FoZWFkLnR5cGUgIT09IDggLyogU3RyaW5nTGl0ZXJhbCAqLykge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5JbnZhbGlkTW9kdWxlU3BlY2lmaWVyKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIHRva2VuID0gdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICB2YXIgcmF3ID0gdGhpcy5nZXRUb2tlblJhdyh0b2tlbik7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUobm9kZSwgbmV3IE5vZGUuTGl0ZXJhbCh0b2tlbi52YWx1ZSwgcmF3KSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaW1wb3J0IHs8Zm9vIGFzIGJhcj59IC4uLjtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VJbXBvcnRTcGVjaWZpZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB2YXIgaW1wb3J0ZWQ7XG5cdCAgICAgICAgdmFyIGxvY2FsO1xuXHQgICAgICAgIGlmICh0aGlzLmxvb2thaGVhZC50eXBlID09PSAzIC8qIElkZW50aWZpZXIgKi8pIHtcblx0ICAgICAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7XG5cdCAgICAgICAgICAgIGxvY2FsID0gaW1wb3J0ZWQ7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2FzJykpIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICBsb2NhbCA9IHRoaXMucGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnBhcnNlSWRlbnRpZmllck5hbWUoKTtcblx0ICAgICAgICAgICAgbG9jYWwgPSBpbXBvcnRlZDtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXMnKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgIGxvY2FsID0gdGhpcy5wYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbih0aGlzLm5leHRUb2tlbigpKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JbXBvcnRTcGVjaWZpZXIobG9jYWwsIGltcG9ydGVkKSk7XG5cdCAgICB9O1xuXHQgICAgLy8ge2ZvbywgYmFyIGFzIGJhc31cblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VOYW1lZEltcG9ydHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJ3snKTtcblx0ICAgICAgICB2YXIgc3BlY2lmaWVycyA9IFtdO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaCh0aGlzLnBhcnNlSW1wb3J0U3BlY2lmaWVyKCkpO1xuXHQgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJ30nKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5leHBlY3QoJywnKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmV4cGVjdCgnfScpO1xuXHQgICAgICAgIHJldHVybiBzcGVjaWZpZXJzO1xuXHQgICAgfTtcblx0ICAgIC8vIGltcG9ydCA8Zm9vPiAuLi47XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlSW1wb3J0RGVmYXVsdFNwZWNpZmllciA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZSgpO1xuXHQgICAgICAgIHZhciBsb2NhbCA9IHRoaXMucGFyc2VJZGVudGlmaWVyTmFtZSgpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkltcG9ydERlZmF1bHRTcGVjaWZpZXIobG9jYWwpKTtcblx0ICAgIH07XG5cdCAgICAvLyBpbXBvcnQgPCogYXMgZm9vPiAuLi47XG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3QoJyonKTtcblx0ICAgICAgICBpZiAoIXRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXMnKSkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IobWVzc2FnZXNfMS5NZXNzYWdlcy5Ob0FzQWZ0ZXJJbXBvcnROYW1lc3BhY2UpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgIHZhciBsb2NhbCA9IHRoaXMucGFyc2VJZGVudGlmaWVyTmFtZSgpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkltcG9ydE5hbWVzcGFjZVNwZWNpZmllcihsb2NhbCkpO1xuXHQgICAgfTtcblx0ICAgIFBhcnNlci5wcm90b3R5cGUucGFyc2VJbXBvcnREZWNsYXJhdGlvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBpZiAodGhpcy5jb250ZXh0LmluRnVuY3Rpb25Cb2R5KSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlc18xLk1lc3NhZ2VzLklsbGVnYWxJbXBvcnREZWNsYXJhdGlvbik7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdGhpcy5leHBlY3RLZXl3b3JkKCdpbXBvcnQnKTtcblx0ICAgICAgICB2YXIgc3JjO1xuXHQgICAgICAgIHZhciBzcGVjaWZpZXJzID0gW107XG5cdCAgICAgICAgaWYgKHRoaXMubG9va2FoZWFkLnR5cGUgPT09IDggLyogU3RyaW5nTGl0ZXJhbCAqLykge1xuXHQgICAgICAgICAgICAvLyBpbXBvcnQgJ2Zvbyc7XG5cdCAgICAgICAgICAgIHNyYyA9IHRoaXMucGFyc2VNb2R1bGVTcGVjaWZpZXIoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCd7JykpIHtcblx0ICAgICAgICAgICAgICAgIC8vIGltcG9ydCB7YmFyfVxuXHQgICAgICAgICAgICAgICAgc3BlY2lmaWVycyA9IHNwZWNpZmllcnMuY29uY2F0KHRoaXMucGFyc2VOYW1lZEltcG9ydHMoKSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5tYXRjaCgnKicpKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBpbXBvcnQgKiBhcyBmb29cblx0ICAgICAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaCh0aGlzLnBhcnNlSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyKCkpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNJZGVudGlmaWVyTmFtZSh0aGlzLmxvb2thaGVhZCkgJiYgIXRoaXMubWF0Y2hLZXl3b3JkKCdkZWZhdWx0JykpIHtcblx0ICAgICAgICAgICAgICAgIC8vIGltcG9ydCBmb29cblx0ICAgICAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaCh0aGlzLnBhcnNlSW1wb3J0RGVmYXVsdFNwZWNpZmllcigpKTtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCcsJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoKCcqJykpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IGZvbywgKiBhcyBmb29cblx0ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVycy5wdXNoKHRoaXMucGFyc2VJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXIoKSk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubWF0Y2goJ3snKSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBvcnQgZm9vLCB7YmFyfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXJzID0gc3BlY2lmaWVycy5jb25jYXQodGhpcy5wYXJzZU5hbWVkSW1wb3J0cygpKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5uZXh0VG9rZW4oKSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2Zyb20nKSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLmxvb2thaGVhZC52YWx1ZSA/IG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuIDogbWVzc2FnZXNfMS5NZXNzYWdlcy5NaXNzaW5nRnJvbUNsYXVzZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlLCB0aGlzLmxvb2thaGVhZC52YWx1ZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgc3JjID0gdGhpcy5wYXJzZU1vZHVsZVNwZWNpZmllcigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5JbXBvcnREZWNsYXJhdGlvbihzcGVjaWZpZXJzLCBzcmMpKTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1leHBvcnRzXG5cdCAgICBQYXJzZXIucHJvdG90eXBlLnBhcnNlRXhwb3J0U3BlY2lmaWVyID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG5cdCAgICAgICAgdmFyIGxvY2FsID0gdGhpcy5wYXJzZUlkZW50aWZpZXJOYW1lKCk7XG5cdCAgICAgICAgdmFyIGV4cG9ydGVkID0gbG9jYWw7XG5cdCAgICAgICAgaWYgKHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXMnKSkge1xuXHQgICAgICAgICAgICB0aGlzLm5leHRUb2tlbigpO1xuXHQgICAgICAgICAgICBleHBvcnRlZCA9IHRoaXMucGFyc2VJZGVudGlmaWVyTmFtZSgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnRTcGVjaWZpZXIobG9jYWwsIGV4cG9ydGVkKSk7XG5cdCAgICB9O1xuXHQgICAgUGFyc2VyLnByb3RvdHlwZS5wYXJzZUV4cG9ydERlY2xhcmF0aW9uID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICh0aGlzLmNvbnRleHQuaW5GdW5jdGlvbkJvZHkpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSWxsZWdhbEV4cG9ydERlY2xhcmF0aW9uKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoKTtcblx0ICAgICAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4cG9ydCcpO1xuXHQgICAgICAgIHZhciBleHBvcnREZWNsYXJhdGlvbjtcblx0ICAgICAgICBpZiAodGhpcy5tYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkge1xuXHQgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCAuLi5cblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hLZXl3b3JkKCdmdW5jdGlvbicpKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb28gKCkge31cblx0ICAgICAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHt9XG5cdCAgICAgICAgICAgICAgICB2YXIgZGVjbGFyYXRpb24gPSB0aGlzLnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbih0cnVlKTtcblx0ICAgICAgICAgICAgICAgIGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZGVjbGFyYXRpb24pKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoS2V5d29yZCgnY2xhc3MnKSkge1xuXHQgICAgICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgY2xhc3MgZm9vIHt9XG5cdCAgICAgICAgICAgICAgICB2YXIgZGVjbGFyYXRpb24gPSB0aGlzLnBhcnNlQ2xhc3NEZWNsYXJhdGlvbih0cnVlKTtcblx0ICAgICAgICAgICAgICAgIGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZGVjbGFyYXRpb24pKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2FzeW5jJykpIHtcblx0ICAgICAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGYgKCkge31cblx0ICAgICAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uICgpIHt9XG5cdCAgICAgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBhc3luYyB4ID0+IHhcblx0ICAgICAgICAgICAgICAgIHZhciBkZWNsYXJhdGlvbiA9IHRoaXMubWF0Y2hBc3luY0Z1bmN0aW9uKCkgPyB0aGlzLnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbih0cnVlKSA6IHRoaXMucGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpO1xuXHQgICAgICAgICAgICAgICAgZXhwb3J0RGVjbGFyYXRpb24gPSB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbihkZWNsYXJhdGlvbikpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnZnJvbScpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd0Vycm9yKG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCB0aGlzLmxvb2thaGVhZC52YWx1ZSk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCB7fTtcblx0ICAgICAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IFtdO1xuXHQgICAgICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgKDEgKyAyKTtcblx0ICAgICAgICAgICAgICAgIHZhciBkZWNsYXJhdGlvbiA9IHRoaXMubWF0Y2goJ3snKSA/IHRoaXMucGFyc2VPYmplY3RJbml0aWFsaXplcigpIDpcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKCdbJykgPyB0aGlzLnBhcnNlQXJyYXlJbml0aWFsaXplcigpIDogdGhpcy5wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICAgICAgICAgIGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZGVjbGFyYXRpb24pKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoKCcqJykpIHtcblx0ICAgICAgICAgICAgLy8gZXhwb3J0ICogZnJvbSAnZm9vJztcblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2Zyb20nKSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLmxvb2thaGVhZC52YWx1ZSA/IG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuIDogbWVzc2FnZXNfMS5NZXNzYWdlcy5NaXNzaW5nRnJvbUNsYXVzZTtcblx0ICAgICAgICAgICAgICAgIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlLCB0aGlzLmxvb2thaGVhZC52YWx1ZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW4oKTtcblx0ICAgICAgICAgICAgdmFyIHNyYyA9IHRoaXMucGFyc2VNb2R1bGVTcGVjaWZpZXIoKTtcblx0ICAgICAgICAgICAgdGhpcy5jb25zdW1lU2VtaWNvbG9uKCk7XG5cdCAgICAgICAgICAgIGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnRBbGxEZWNsYXJhdGlvbihzcmMpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAodGhpcy5sb29rYWhlYWQudHlwZSA9PT0gNCAvKiBLZXl3b3JkICovKSB7XG5cdCAgICAgICAgICAgIC8vIGV4cG9ydCB2YXIgZiA9IDE7XG5cdCAgICAgICAgICAgIHZhciBkZWNsYXJhdGlvbiA9IHZvaWQgMDtcblx0ICAgICAgICAgICAgc3dpdGNoICh0aGlzLmxvb2thaGVhZC52YWx1ZSkge1xuXHQgICAgICAgICAgICAgICAgY2FzZSAnbGV0Jzpcblx0ICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnN0Jzpcblx0ICAgICAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbiA9IHRoaXMucGFyc2VMZXhpY2FsRGVjbGFyYXRpb24oeyBpbkZvcjogZmFsc2UgfSk7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICBjYXNlICd2YXInOlxuXHQgICAgICAgICAgICAgICAgY2FzZSAnY2xhc3MnOlxuXHQgICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuXHQgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uID0gdGhpcy5wYXJzZVN0YXRlbWVudExpc3RJdGVtKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4odGhpcy5sb29rYWhlYWQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uLCBbXSwgbnVsbCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICh0aGlzLm1hdGNoQXN5bmNGdW5jdGlvbigpKSB7XG5cdCAgICAgICAgICAgIHZhciBkZWNsYXJhdGlvbiA9IHRoaXMucGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG5cdCAgICAgICAgICAgIGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5maW5hbGl6ZShub2RlLCBuZXcgTm9kZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uLCBbXSwgbnVsbCkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdmFyIHNwZWNpZmllcnMgPSBbXTtcblx0ICAgICAgICAgICAgdmFyIHNvdXJjZSA9IG51bGw7XG5cdCAgICAgICAgICAgIHZhciBpc0V4cG9ydEZyb21JZGVudGlmaWVyID0gZmFsc2U7XG5cdCAgICAgICAgICAgIHRoaXMuZXhwZWN0KCd7Jyk7XG5cdCAgICAgICAgICAgIHdoaWxlICghdGhpcy5tYXRjaCgnfScpKSB7XG5cdCAgICAgICAgICAgICAgICBpc0V4cG9ydEZyb21JZGVudGlmaWVyID0gaXNFeHBvcnRGcm9tSWRlbnRpZmllciB8fCB0aGlzLm1hdGNoS2V5d29yZCgnZGVmYXVsdCcpO1xuXHQgICAgICAgICAgICAgICAgc3BlY2lmaWVycy5wdXNoKHRoaXMucGFyc2VFeHBvcnRTcGVjaWZpZXIoKSk7XG5cdCAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2goJ30nKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0KCcsJyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgdGhpcy5leHBlY3QoJ30nKTtcblx0ICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnZnJvbScpKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBleHBvcnQge2RlZmF1bHR9IGZyb20gJ2Zvbyc7XG5cdCAgICAgICAgICAgICAgICAvLyBleHBvcnQge2Zvb30gZnJvbSAnZm9vJztcblx0ICAgICAgICAgICAgICAgIHRoaXMubmV4dFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICBzb3VyY2UgPSB0aGlzLnBhcnNlTW9kdWxlU3BlY2lmaWVyKCk7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVTZW1pY29sb24oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChpc0V4cG9ydEZyb21JZGVudGlmaWVyKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBleHBvcnQge2RlZmF1bHR9OyAvLyBtaXNzaW5nIGZyb21DbGF1c2Vcblx0ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5sb29rYWhlYWQudmFsdWUgPyBtZXNzYWdlc18xLk1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiA6IG1lc3NhZ2VzXzEuTWVzc2FnZXMuTWlzc2luZ0Zyb21DbGF1c2U7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93RXJyb3IobWVzc2FnZSwgdGhpcy5sb29rYWhlYWQudmFsdWUpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgLy8gZXhwb3J0IHtmb299O1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lU2VtaWNvbG9uKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZXhwb3J0RGVjbGFyYXRpb24gPSB0aGlzLmZpbmFsaXplKG5vZGUsIG5ldyBOb2RlLkV4cG9ydE5hbWVkRGVjbGFyYXRpb24obnVsbCwgc3BlY2lmaWVycywgc291cmNlKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBleHBvcnREZWNsYXJhdGlvbjtcblx0ICAgIH07XG5cdCAgICByZXR1cm4gUGFyc2VyO1xuXHR9KCkpO1xuXHRleHBvcnRzLlBhcnNlciA9IFBhcnNlcjtcblxuXG4vKioqLyB9LFxuLyogOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdC8vIEVuc3VyZSB0aGUgY29uZGl0aW9uIGlzIHRydWUsIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci5cblx0Ly8gVGhpcyBpcyBvbmx5IHRvIGhhdmUgYSBiZXR0ZXIgY29udHJhY3Qgc2VtYW50aWMsIGkuZS4gYW5vdGhlciBzYWZldHkgbmV0XG5cdC8vIHRvIGNhdGNoIGEgbG9naWMgZXJyb3IuIFRoZSBjb25kaXRpb24gc2hhbGwgYmUgZnVsZmlsbGVkIGluIG5vcm1hbCBjYXNlLlxuXHQvLyBEbyBOT1QgdXNlIHRoaXMgdG8gZW5mb3JjZSBhIGNlcnRhaW4gY29uZGl0aW9uIG9uIGFueSB1c2VyIGlucHV0LlxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cdGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcblx0ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHQgICAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FTU0VSVDogJyArIG1lc3NhZ2UpO1xuXHQgICAgfVxuXHR9XG5cdGV4cG9ydHMuYXNzZXJ0ID0gYXNzZXJ0O1xuXG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdC8qIHRzbGludDpkaXNhYmxlOm1heC1jbGFzc2VzLXBlci1maWxlICovXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcblx0dmFyIEVycm9ySGFuZGxlciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBFcnJvckhhbmRsZXIoKSB7XG5cdCAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcblx0ICAgICAgICB0aGlzLnRvbGVyYW50ID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgICBFcnJvckhhbmRsZXIucHJvdG90eXBlLnJlY29yZEVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XG5cdCAgICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnJvcik7XG5cdCAgICB9O1xuXHQgICAgRXJyb3JIYW5kbGVyLnByb3RvdHlwZS50b2xlcmF0ZSA9IGZ1bmN0aW9uIChlcnJvcikge1xuXHQgICAgICAgIGlmICh0aGlzLnRvbGVyYW50KSB7XG5cdCAgICAgICAgICAgIHRoaXMucmVjb3JkRXJyb3IoZXJyb3IpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIEVycm9ySGFuZGxlci5wcm90b3R5cGUuY29uc3RydWN0RXJyb3IgPSBmdW5jdGlvbiAobXNnLCBjb2x1bW4pIHtcblx0ICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobXNnKTtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICB0aHJvdyBlcnJvcjtcblx0ICAgICAgICB9XG5cdCAgICAgICAgY2F0Y2ggKGJhc2UpIHtcblx0ICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cblx0ICAgICAgICAgICAgaWYgKE9iamVjdC5jcmVhdGUgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7XG5cdCAgICAgICAgICAgICAgICBlcnJvciA9IE9iamVjdC5jcmVhdGUoYmFzZSk7XG5cdCAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdjb2x1bW4nLCB7IHZhbHVlOiBjb2x1bW4gfSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0ICAgICAgICByZXR1cm4gZXJyb3I7XG5cdCAgICB9O1xuXHQgICAgRXJyb3JIYW5kbGVyLnByb3RvdHlwZS5jcmVhdGVFcnJvciA9IGZ1bmN0aW9uIChpbmRleCwgbGluZSwgY29sLCBkZXNjcmlwdGlvbikge1xuXHQgICAgICAgIHZhciBtc2cgPSAnTGluZSAnICsgbGluZSArICc6ICcgKyBkZXNjcmlwdGlvbjtcblx0ICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLmNvbnN0cnVjdEVycm9yKG1zZywgY29sKTtcblx0ICAgICAgICBlcnJvci5pbmRleCA9IGluZGV4O1xuXHQgICAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSBsaW5lO1xuXHQgICAgICAgIGVycm9yLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG5cdCAgICAgICAgcmV0dXJuIGVycm9yO1xuXHQgICAgfTtcblx0ICAgIEVycm9ySGFuZGxlci5wcm90b3R5cGUudGhyb3dFcnJvciA9IGZ1bmN0aW9uIChpbmRleCwgbGluZSwgY29sLCBkZXNjcmlwdGlvbikge1xuXHQgICAgICAgIHRocm93IHRoaXMuY3JlYXRlRXJyb3IoaW5kZXgsIGxpbmUsIGNvbCwgZGVzY3JpcHRpb24pO1xuXHQgICAgfTtcblx0ICAgIEVycm9ySGFuZGxlci5wcm90b3R5cGUudG9sZXJhdGVFcnJvciA9IGZ1bmN0aW9uIChpbmRleCwgbGluZSwgY29sLCBkZXNjcmlwdGlvbikge1xuXHQgICAgICAgIHZhciBlcnJvciA9IHRoaXMuY3JlYXRlRXJyb3IoaW5kZXgsIGxpbmUsIGNvbCwgZGVzY3JpcHRpb24pO1xuXHQgICAgICAgIGlmICh0aGlzLnRvbGVyYW50KSB7XG5cdCAgICAgICAgICAgIHRoaXMucmVjb3JkRXJyb3IoZXJyb3IpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIHJldHVybiBFcnJvckhhbmRsZXI7XG5cdH0oKSk7XG5cdGV4cG9ydHMuRXJyb3JIYW5kbGVyID0gRXJyb3JIYW5kbGVyO1xuXG5cbi8qKiovIH0sXG4vKiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcblx0Ly8gRXJyb3IgbWVzc2FnZXMgc2hvdWxkIGJlIGlkZW50aWNhbCB0byBWOC5cblx0ZXhwb3J0cy5NZXNzYWdlcyA9IHtcblx0ICAgIEJhZEdldHRlckFyaXR5OiAnR2V0dGVyIG11c3Qgbm90IGhhdmUgYW55IGZvcm1hbCBwYXJhbWV0ZXJzJyxcblx0ICAgIEJhZFNldHRlckFyaXR5OiAnU2V0dGVyIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBmb3JtYWwgcGFyYW1ldGVyJyxcblx0ICAgIEJhZFNldHRlclJlc3RQYXJhbWV0ZXI6ICdTZXR0ZXIgZnVuY3Rpb24gYXJndW1lbnQgbXVzdCBub3QgYmUgYSByZXN0IHBhcmFtZXRlcicsXG5cdCAgICBDb25zdHJ1Y3RvcklzQXN5bmM6ICdDbGFzcyBjb25zdHJ1Y3RvciBtYXkgbm90IGJlIGFuIGFzeW5jIG1ldGhvZCcsXG5cdCAgICBDb25zdHJ1Y3RvclNwZWNpYWxNZXRob2Q6ICdDbGFzcyBjb25zdHJ1Y3RvciBtYXkgbm90IGJlIGFuIGFjY2Vzc29yJyxcblx0ICAgIERlY2xhcmF0aW9uTWlzc2luZ0luaXRpYWxpemVyOiAnTWlzc2luZyBpbml0aWFsaXplciBpbiAlMCBkZWNsYXJhdGlvbicsXG5cdCAgICBEZWZhdWx0UmVzdFBhcmFtZXRlcjogJ1VuZXhwZWN0ZWQgdG9rZW4gPScsXG5cdCAgICBEdXBsaWNhdGVCaW5kaW5nOiAnRHVwbGljYXRlIGJpbmRpbmcgJTAnLFxuXHQgICAgRHVwbGljYXRlQ29uc3RydWN0b3I6ICdBIGNsYXNzIG1heSBvbmx5IGhhdmUgb25lIGNvbnN0cnVjdG9yJyxcblx0ICAgIER1cGxpY2F0ZVByb3RvUHJvcGVydHk6ICdEdXBsaWNhdGUgX19wcm90b19fIGZpZWxkcyBhcmUgbm90IGFsbG93ZWQgaW4gb2JqZWN0IGxpdGVyYWxzJyxcblx0ICAgIEZvckluT2ZMb29wSW5pdGlhbGl6ZXI6ICclMCBsb29wIHZhcmlhYmxlIGRlY2xhcmF0aW9uIG1heSBub3QgaGF2ZSBhbiBpbml0aWFsaXplcicsXG5cdCAgICBHZW5lcmF0b3JJbkxlZ2FjeUNvbnRleHQ6ICdHZW5lcmF0b3IgZGVjbGFyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBsZWdhY3kgY29udGV4dHMnLFxuXHQgICAgSWxsZWdhbEJyZWFrOiAnSWxsZWdhbCBicmVhayBzdGF0ZW1lbnQnLFxuXHQgICAgSWxsZWdhbENvbnRpbnVlOiAnSWxsZWdhbCBjb250aW51ZSBzdGF0ZW1lbnQnLFxuXHQgICAgSWxsZWdhbEV4cG9ydERlY2xhcmF0aW9uOiAnVW5leHBlY3RlZCB0b2tlbicsXG5cdCAgICBJbGxlZ2FsSW1wb3J0RGVjbGFyYXRpb246ICdVbmV4cGVjdGVkIHRva2VuJyxcblx0ICAgIElsbGVnYWxMYW5ndWFnZU1vZGVEaXJlY3RpdmU6ICdJbGxlZ2FsIFxcJ3VzZSBzdHJpY3RcXCcgZGlyZWN0aXZlIGluIGZ1bmN0aW9uIHdpdGggbm9uLXNpbXBsZSBwYXJhbWV0ZXIgbGlzdCcsXG5cdCAgICBJbGxlZ2FsUmV0dXJuOiAnSWxsZWdhbCByZXR1cm4gc3RhdGVtZW50Jyxcblx0ICAgIEludmFsaWRFc2NhcGVkUmVzZXJ2ZWRXb3JkOiAnS2V5d29yZCBtdXN0IG5vdCBjb250YWluIGVzY2FwZWQgY2hhcmFjdGVycycsXG5cdCAgICBJbnZhbGlkSGV4RXNjYXBlU2VxdWVuY2U6ICdJbnZhbGlkIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZScsXG5cdCAgICBJbnZhbGlkTEhTSW5Bc3NpZ25tZW50OiAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBhc3NpZ25tZW50Jyxcblx0ICAgIEludmFsaWRMSFNJbkZvckluOiAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3ItaW4nLFxuXHQgICAgSW52YWxpZExIU0luRm9yTG9vcDogJ0ludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gZm9yLWxvb3AnLFxuXHQgICAgSW52YWxpZE1vZHVsZVNwZWNpZmllcjogJ1VuZXhwZWN0ZWQgdG9rZW4nLFxuXHQgICAgSW52YWxpZFJlZ0V4cDogJ0ludmFsaWQgcmVndWxhciBleHByZXNzaW9uJyxcblx0ICAgIExldEluTGV4aWNhbEJpbmRpbmc6ICdsZXQgaXMgZGlzYWxsb3dlZCBhcyBhIGxleGljYWxseSBib3VuZCBuYW1lJyxcblx0ICAgIE1pc3NpbmdGcm9tQ2xhdXNlOiAnVW5leHBlY3RlZCB0b2tlbicsXG5cdCAgICBNdWx0aXBsZURlZmF1bHRzSW5Td2l0Y2g6ICdNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1lbnQnLFxuXHQgICAgTmV3bGluZUFmdGVyVGhyb3c6ICdJbGxlZ2FsIG5ld2xpbmUgYWZ0ZXIgdGhyb3cnLFxuXHQgICAgTm9Bc0FmdGVySW1wb3J0TmFtZXNwYWNlOiAnVW5leHBlY3RlZCB0b2tlbicsXG5cdCAgICBOb0NhdGNoT3JGaW5hbGx5OiAnTWlzc2luZyBjYXRjaCBvciBmaW5hbGx5IGFmdGVyIHRyeScsXG5cdCAgICBQYXJhbWV0ZXJBZnRlclJlc3RQYXJhbWV0ZXI6ICdSZXN0IHBhcmFtZXRlciBtdXN0IGJlIGxhc3QgZm9ybWFsIHBhcmFtZXRlcicsXG5cdCAgICBSZWRlY2xhcmF0aW9uOiAnJTAgXFwnJTFcXCcgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCcsXG5cdCAgICBTdGF0aWNQcm90b3R5cGU6ICdDbGFzc2VzIG1heSBub3QgaGF2ZSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgcHJvdG90eXBlJyxcblx0ICAgIFN0cmljdENhdGNoVmFyaWFibGU6ICdDYXRjaCB2YXJpYWJsZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcblx0ICAgIFN0cmljdERlbGV0ZTogJ0RlbGV0ZSBvZiBhbiB1bnF1YWxpZmllZCBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlLicsXG5cdCAgICBTdHJpY3RGdW5jdGlvbjogJ0luIHN0cmljdCBtb2RlIGNvZGUsIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBkZWNsYXJlZCBhdCB0b3AgbGV2ZWwgb3IgaW5zaWRlIGEgYmxvY2snLFxuXHQgICAgU3RyaWN0RnVuY3Rpb25OYW1lOiAnRnVuY3Rpb24gbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJyxcblx0ICAgIFN0cmljdExIU0Fzc2lnbm1lbnQ6ICdBc3NpZ25tZW50IHRvIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJyxcblx0ICAgIFN0cmljdExIU1Bvc3RmaXg6ICdQb3N0Zml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLFxuXHQgICAgU3RyaWN0TEhTUHJlZml4OiAnUHJlZml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLFxuXHQgICAgU3RyaWN0TW9kZVdpdGg6ICdTdHJpY3QgbW9kZSBjb2RlIG1heSBub3QgaW5jbHVkZSBhIHdpdGggc3RhdGVtZW50Jyxcblx0ICAgIFN0cmljdE9jdGFsTGl0ZXJhbDogJ09jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS4nLFxuXHQgICAgU3RyaWN0UGFyYW1EdXBlOiAnU3RyaWN0IG1vZGUgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMnLFxuXHQgICAgU3RyaWN0UGFyYW1OYW1lOiAnUGFyYW1ldGVyIG5hbWUgZXZhbCBvciBhcmd1bWVudHMgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLFxuXHQgICAgU3RyaWN0UmVzZXJ2ZWRXb3JkOiAnVXNlIG9mIGZ1dHVyZSByZXNlcnZlZCB3b3JkIGluIHN0cmljdCBtb2RlJyxcblx0ICAgIFN0cmljdFZhck5hbWU6ICdWYXJpYWJsZSBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLFxuXHQgICAgVGVtcGxhdGVPY3RhbExpdGVyYWw6ICdPY3RhbCBsaXRlcmFscyBhcmUgbm90IGFsbG93ZWQgaW4gdGVtcGxhdGUgc3RyaW5ncy4nLFxuXHQgICAgVW5leHBlY3RlZEVPUzogJ1VuZXhwZWN0ZWQgZW5kIG9mIGlucHV0Jyxcblx0ICAgIFVuZXhwZWN0ZWRJZGVudGlmaWVyOiAnVW5leHBlY3RlZCBpZGVudGlmaWVyJyxcblx0ICAgIFVuZXhwZWN0ZWROdW1iZXI6ICdVbmV4cGVjdGVkIG51bWJlcicsXG5cdCAgICBVbmV4cGVjdGVkUmVzZXJ2ZWQ6ICdVbmV4cGVjdGVkIHJlc2VydmVkIHdvcmQnLFxuXHQgICAgVW5leHBlY3RlZFN0cmluZzogJ1VuZXhwZWN0ZWQgc3RyaW5nJyxcblx0ICAgIFVuZXhwZWN0ZWRUZW1wbGF0ZTogJ1VuZXhwZWN0ZWQgcXVhc2kgJTAnLFxuXHQgICAgVW5leHBlY3RlZFRva2VuOiAnVW5leHBlY3RlZCB0b2tlbiAlMCcsXG5cdCAgICBVbmV4cGVjdGVkVG9rZW5JbGxlZ2FsOiAnVW5leHBlY3RlZCB0b2tlbiBJTExFR0FMJyxcblx0ICAgIFVua25vd25MYWJlbDogJ1VuZGVmaW5lZCBsYWJlbCBcXCclMFxcJycsXG5cdCAgICBVbnRlcm1pbmF0ZWRSZWdFeHA6ICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogbWlzc2luZyAvJ1xuXHR9O1xuXG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcblx0dmFyIGFzc2VydF8xID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIGNoYXJhY3Rlcl8xID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0dmFyIG1lc3NhZ2VzXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0ZnVuY3Rpb24gaGV4VmFsdWUoY2gpIHtcblx0ICAgIHJldHVybiAnMDEyMzQ1Njc4OWFiY2RlZicuaW5kZXhPZihjaC50b0xvd2VyQ2FzZSgpKTtcblx0fVxuXHRmdW5jdGlvbiBvY3RhbFZhbHVlKGNoKSB7XG5cdCAgICByZXR1cm4gJzAxMjM0NTY3Jy5pbmRleE9mKGNoKTtcblx0fVxuXHR2YXIgU2Nhbm5lciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBTY2FubmVyKGNvZGUsIGhhbmRsZXIpIHtcblx0ICAgICAgICB0aGlzLnNvdXJjZSA9IGNvZGU7XG5cdCAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBoYW5kbGVyO1xuXHQgICAgICAgIHRoaXMudHJhY2tDb21tZW50ID0gZmFsc2U7XG5cdCAgICAgICAgdGhpcy5pc01vZHVsZSA9IGZhbHNlO1xuXHQgICAgICAgIHRoaXMubGVuZ3RoID0gY29kZS5sZW5ndGg7XG5cdCAgICAgICAgdGhpcy5pbmRleCA9IDA7XG5cdCAgICAgICAgdGhpcy5saW5lTnVtYmVyID0gKGNvZGUubGVuZ3RoID4gMCkgPyAxIDogMDtcblx0ICAgICAgICB0aGlzLmxpbmVTdGFydCA9IDA7XG5cdCAgICAgICAgdGhpcy5jdXJseVN0YWNrID0gW107XG5cdCAgICB9XG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5zYXZlU3RhdGUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG5cdCAgICAgICAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcblx0ICAgICAgICAgICAgbGluZVN0YXJ0OiB0aGlzLmxpbmVTdGFydFxuXHQgICAgICAgIH07XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUucmVzdG9yZVN0YXRlID0gZnVuY3Rpb24gKHN0YXRlKSB7XG5cdCAgICAgICAgdGhpcy5pbmRleCA9IHN0YXRlLmluZGV4O1xuXHQgICAgICAgIHRoaXMubGluZU51bWJlciA9IHN0YXRlLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgdGhpcy5saW5lU3RhcnQgPSBzdGF0ZS5saW5lU3RhcnQ7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuZW9mID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLmluZGV4ID49IHRoaXMubGVuZ3RoO1xuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnRocm93VW5leHBlY3RlZFRva2VuID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcblx0ICAgICAgICBpZiAobWVzc2FnZSA9PT0gdm9pZCAwKSB7IG1lc3NhZ2UgPSBtZXNzYWdlc18xLk1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbklsbGVnYWw7IH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIudGhyb3dFcnJvcih0aGlzLmluZGV4LCB0aGlzLmxpbmVOdW1iZXIsIHRoaXMuaW5kZXggLSB0aGlzLmxpbmVTdGFydCArIDEsIG1lc3NhZ2UpO1xuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcblx0ICAgICAgICBpZiAobWVzc2FnZSA9PT0gdm9pZCAwKSB7IG1lc3NhZ2UgPSBtZXNzYWdlc18xLk1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbklsbGVnYWw7IH1cblx0ICAgICAgICB0aGlzLmVycm9ySGFuZGxlci50b2xlcmF0ZUVycm9yKHRoaXMuaW5kZXgsIHRoaXMubGluZU51bWJlciwgdGhpcy5pbmRleCAtIHRoaXMubGluZVN0YXJ0ICsgMSwgbWVzc2FnZSk7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY29tbWVudHNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnNraXBTaW5nbGVMaW5lQ29tbWVudCA9IGZ1bmN0aW9uIChvZmZzZXQpIHtcblx0ICAgICAgICB2YXIgY29tbWVudHMgPSBbXTtcblx0ICAgICAgICB2YXIgc3RhcnQsIGxvYztcblx0ICAgICAgICBpZiAodGhpcy50cmFja0NvbW1lbnQpIHtcblx0ICAgICAgICAgICAgY29tbWVudHMgPSBbXTtcblx0ICAgICAgICAgICAgc3RhcnQgPSB0aGlzLmluZGV4IC0gb2Zmc2V0O1xuXHQgICAgICAgICAgICBsb2MgPSB7XG5cdCAgICAgICAgICAgICAgICBzdGFydDoge1xuXHQgICAgICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuaW5kZXggLSB0aGlzLmxpbmVTdGFydCAtIG9mZnNldFxuXHQgICAgICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAgICAgIGVuZDoge31cblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIHZhciBjaCA9IHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCk7XG5cdCAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0xpbmVUZXJtaW5hdG9yKGNoKSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tDb21tZW50KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgbG9jLmVuZCA9IHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuaW5kZXggLSB0aGlzLmxpbmVTdGFydCAtIDFcblx0ICAgICAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlMaW5lOiBmYWxzZSxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2U6IFtzdGFydCArIG9mZnNldCwgdGhpcy5pbmRleCAtIDFdLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCB0aGlzLmluZGV4IC0gMV0sXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogbG9jXG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5wdXNoKGVudHJ5KTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gMTMgJiYgdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KSA9PT0gMTApIHtcblx0ICAgICAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICArK3RoaXMubGluZU51bWJlcjtcblx0ICAgICAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0ID0gdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgIHJldHVybiBjb21tZW50cztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAodGhpcy50cmFja0NvbW1lbnQpIHtcblx0ICAgICAgICAgICAgbG9jLmVuZCA9IHtcblx0ICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5pbmRleCAtIHRoaXMubGluZVN0YXJ0XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgIHZhciBlbnRyeSA9IHtcblx0ICAgICAgICAgICAgICAgIG11bHRpTGluZTogZmFsc2UsXG5cdCAgICAgICAgICAgICAgICBzbGljZTogW3N0YXJ0ICsgb2Zmc2V0LCB0aGlzLmluZGV4XSxcblx0ICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIHRoaXMuaW5kZXhdLFxuXHQgICAgICAgICAgICAgICAgbG9jOiBsb2Ncblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgY29tbWVudHMucHVzaChlbnRyeSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBjb21tZW50cztcblx0ICAgIH07XG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5za2lwTXVsdGlMaW5lQ29tbWVudCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgY29tbWVudHMgPSBbXTtcblx0ICAgICAgICB2YXIgc3RhcnQsIGxvYztcblx0ICAgICAgICBpZiAodGhpcy50cmFja0NvbW1lbnQpIHtcblx0ICAgICAgICAgICAgY29tbWVudHMgPSBbXTtcblx0ICAgICAgICAgICAgc3RhcnQgPSB0aGlzLmluZGV4IC0gMjtcblx0ICAgICAgICAgICAgbG9jID0ge1xuXHQgICAgICAgICAgICAgICAgc3RhcnQ6IHtcblx0ICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmluZGV4IC0gdGhpcy5saW5lU3RhcnQgLSAyXG5cdCAgICAgICAgICAgICAgICB9LFxuXHQgICAgICAgICAgICAgICAgZW5kOiB7fVxuXHQgICAgICAgICAgICB9O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB3aGlsZSAoIXRoaXMuZW9mKCkpIHtcblx0ICAgICAgICAgICAgdmFyIGNoID0gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KTtcblx0ICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0xpbmVUZXJtaW5hdG9yKGNoKSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBEICYmIHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCArIDEpID09PSAweDBBKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmxpbmVTdGFydCA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IDB4MkEpIHtcblx0ICAgICAgICAgICAgICAgIC8vIEJsb2NrIGNvbW1lbnQgZW5kcyB3aXRoICcqLycuXG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4ICsgMSkgPT09IDB4MkYpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ICs9IDI7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tDb21tZW50KSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGxvYy5lbmQgPSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuaW5kZXggLSB0aGlzLmxpbmVTdGFydFxuXHQgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aUxpbmU6IHRydWUsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZTogW3N0YXJ0ICsgMiwgdGhpcy5pbmRleCAtIDJdLFxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgdGhpcy5pbmRleF0sXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2M6IGxvY1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cy5wdXNoKGVudHJ5KTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1lbnRzO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIFJhbiBvZmYgdGhlIGVuZCBvZiB0aGUgZmlsZSAtIHRoZSB3aG9sZSB0aGluZyBpcyBhIGNvbW1lbnRcblx0ICAgICAgICBpZiAodGhpcy50cmFja0NvbW1lbnQpIHtcblx0ICAgICAgICAgICAgbG9jLmVuZCA9IHtcblx0ICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5pbmRleCAtIHRoaXMubGluZVN0YXJ0XG5cdCAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgIHZhciBlbnRyeSA9IHtcblx0ICAgICAgICAgICAgICAgIG11bHRpTGluZTogdHJ1ZSxcblx0ICAgICAgICAgICAgICAgIHNsaWNlOiBbc3RhcnQgKyAyLCB0aGlzLmluZGV4XSxcblx0ICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIHRoaXMuaW5kZXhdLFxuXHQgICAgICAgICAgICAgICAgbG9jOiBsb2Ncblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgY29tbWVudHMucHVzaChlbnRyeSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICByZXR1cm4gY29tbWVudHM7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2NhbkNvbW1lbnRzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBjb21tZW50cztcblx0ICAgICAgICBpZiAodGhpcy50cmFja0NvbW1lbnQpIHtcblx0ICAgICAgICAgICAgY29tbWVudHMgPSBbXTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIHN0YXJ0ID0gKHRoaXMuaW5kZXggPT09IDApO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5lb2YoKSkge1xuXHQgICAgICAgICAgICB2YXIgY2ggPSB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpO1xuXHQgICAgICAgICAgICBpZiAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzV2hpdGVTcGFjZShjaCkpIHtcblx0ICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNMaW5lVGVybWluYXRvcihjaCkpIHtcblx0ICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gMHgwRCAmJiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpID09PSAweDBBKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgICAgICAgICB0aGlzLmxpbmVTdGFydCA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICBzdGFydCA9IHRydWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09IDB4MkYpIHtcblx0ICAgICAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4ICsgMSk7XG5cdCAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDB4MkYpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4ICs9IDI7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGNvbW1lbnQgPSB0aGlzLnNraXBTaW5nbGVMaW5lQ29tbWVudCgyKTtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFja0NvbW1lbnQpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHMgPSBjb21tZW50cy5jb25jYXQoY29tbWVudCk7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09PSAweDJBKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCArPSAyO1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBjb21tZW50ID0gdGhpcy5za2lwTXVsdGlMaW5lQ29tbWVudCgpO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrQ29tbWVudCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cyA9IGNvbW1lbnRzLmNvbmNhdChjb21tZW50KTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChzdGFydCAmJiBjaCA9PT0gMHgyRCkge1xuXHQgICAgICAgICAgICAgICAgLy8gVSswMDNFIGlzICc+J1xuXHQgICAgICAgICAgICAgICAgaWYgKCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXggKyAxKSA9PT0gMHgyRCkgJiYgKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCArIDIpID09PSAweDNFKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vICctLT4nIGlzIGEgc2luZ2xlLWxpbmUgY29tbWVudFxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gMztcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWVudCA9IHRoaXMuc2tpcFNpbmdsZUxpbmVDb21tZW50KDMpO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrQ29tbWVudCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cyA9IGNvbW1lbnRzLmNvbmNhdChjb21tZW50KTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gMHgzQyAmJiAhdGhpcy5pc01vZHVsZSkge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlLnNsaWNlKHRoaXMuaW5kZXggKyAxLCB0aGlzLmluZGV4ICsgNCkgPT09ICchLS0nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCArPSA0OyAvLyBgPCEtLWBcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWVudCA9IHRoaXMuc2tpcFNpbmdsZUxpbmVDb21tZW50KDQpO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrQ29tbWVudCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cyA9IGNvbW1lbnRzLmNvbmNhdChjb21tZW50KTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBjb21tZW50cztcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1mdXR1cmUtcmVzZXJ2ZWQtd29yZHNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmlzRnV0dXJlUmVzZXJ2ZWRXb3JkID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICAgICAgc3dpdGNoIChpZCkge1xuXHQgICAgICAgICAgICBjYXNlICdlbnVtJzpcblx0ICAgICAgICAgICAgY2FzZSAnZXhwb3J0Jzpcblx0ICAgICAgICAgICAgY2FzZSAnaW1wb3J0Jzpcblx0ICAgICAgICAgICAgY2FzZSAnc3VwZXInOlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgICAgIHN3aXRjaCAoaWQpIHtcblx0ICAgICAgICAgICAgY2FzZSAnaW1wbGVtZW50cyc6XG5cdCAgICAgICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6XG5cdCAgICAgICAgICAgIGNhc2UgJ3BhY2thZ2UnOlxuXHQgICAgICAgICAgICBjYXNlICdwcml2YXRlJzpcblx0ICAgICAgICAgICAgY2FzZSAncHJvdGVjdGVkJzpcblx0ICAgICAgICAgICAgY2FzZSAncHVibGljJzpcblx0ICAgICAgICAgICAgY2FzZSAnc3RhdGljJzpcblx0ICAgICAgICAgICAgY2FzZSAneWllbGQnOlxuXHQgICAgICAgICAgICBjYXNlICdsZXQnOlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgICAgfVxuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmlzUmVzdHJpY3RlZFdvcmQgPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgICAgICByZXR1cm4gaWQgPT09ICdldmFsJyB8fCBpZCA9PT0gJ2FyZ3VtZW50cyc7XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMta2V5d29yZHNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmlzS2V5d29yZCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgICAgIHN3aXRjaCAoaWQubGVuZ3RoKSB7XG5cdCAgICAgICAgICAgIGNhc2UgMjpcblx0ICAgICAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpZicpIHx8IChpZCA9PT0gJ2luJykgfHwgKGlkID09PSAnZG8nKTtcblx0ICAgICAgICAgICAgY2FzZSAzOlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3ZhcicpIHx8IChpZCA9PT0gJ2ZvcicpIHx8IChpZCA9PT0gJ25ldycpIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgKGlkID09PSAndHJ5JykgfHwgKGlkID09PSAnbGV0Jyk7XG5cdCAgICAgICAgICAgIGNhc2UgNDpcblx0ICAgICAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd0aGlzJykgfHwgKGlkID09PSAnZWxzZScpIHx8IChpZCA9PT0gJ2Nhc2UnKSB8fFxuXHQgICAgICAgICAgICAgICAgICAgIChpZCA9PT0gJ3ZvaWQnKSB8fCAoaWQgPT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpO1xuXHQgICAgICAgICAgICBjYXNlIDU6XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gKGlkID09PSAnd2hpbGUnKSB8fCAoaWQgPT09ICdicmVhaycpIHx8IChpZCA9PT0gJ2NhdGNoJykgfHxcblx0ICAgICAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fFxuXHQgICAgICAgICAgICAgICAgICAgIChpZCA9PT0gJ2NsYXNzJykgfHwgKGlkID09PSAnc3VwZXInKTtcblx0ICAgICAgICAgICAgY2FzZSA2OlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5cGVvZicpIHx8IChpZCA9PT0gJ2RlbGV0ZScpIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgKGlkID09PSAnc3dpdGNoJykgfHwgKGlkID09PSAnZXhwb3J0JykgfHwgKGlkID09PSAnaW1wb3J0Jyk7XG5cdCAgICAgICAgICAgIGNhc2UgNzpcblx0ICAgICAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdkZWZhdWx0JykgfHwgKGlkID09PSAnZmluYWxseScpIHx8IChpZCA9PT0gJ2V4dGVuZHMnKTtcblx0ICAgICAgICAgICAgY2FzZSA4OlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2Z1bmN0aW9uJykgfHwgKGlkID09PSAnY29udGludWUnKSB8fCAoaWQgPT09ICdkZWJ1Z2dlcicpO1xuXHQgICAgICAgICAgICBjYXNlIDEwOlxuXHQgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2luc3RhbmNlb2YnKTtcblx0ICAgICAgICAgICAgZGVmYXVsdDpcblx0ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuY29kZVBvaW50QXQgPSBmdW5jdGlvbiAoaSkge1xuXHQgICAgICAgIHZhciBjcCA9IHRoaXMuc291cmNlLmNoYXJDb2RlQXQoaSk7XG5cdCAgICAgICAgaWYgKGNwID49IDB4RDgwMCAmJiBjcCA8PSAweERCRkYpIHtcblx0ICAgICAgICAgICAgdmFyIHNlY29uZCA9IHRoaXMuc291cmNlLmNoYXJDb2RlQXQoaSArIDEpO1xuXHQgICAgICAgICAgICBpZiAoc2Vjb25kID49IDB4REMwMCAmJiBzZWNvbmQgPD0gMHhERkZGKSB7XG5cdCAgICAgICAgICAgICAgICB2YXIgZmlyc3QgPSBjcDtcblx0ICAgICAgICAgICAgICAgIGNwID0gKGZpcnN0IC0gMHhEODAwKSAqIDB4NDAwICsgc2Vjb25kIC0gMHhEQzAwICsgMHgxMDAwMDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gY3A7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2NhbkhleEVzY2FwZSA9IGZ1bmN0aW9uIChwcmVmaXgpIHtcblx0ICAgICAgICB2YXIgbGVuID0gKHByZWZpeCA9PT0gJ3UnKSA/IDQgOiAyO1xuXHQgICAgICAgIHZhciBjb2RlID0gMDtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG5cdCAgICAgICAgICAgIGlmICghdGhpcy5lb2YoKSAmJiBjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNIZXhEaWdpdCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpKSkge1xuXHQgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUgKiAxNiArIGhleFZhbHVlKHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK10pO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2NhblVuaWNvZGVDb2RlUG9pbnRFc2NhcGUgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgdmFyIGNvZGUgPSAwO1xuXHQgICAgICAgIC8vIEF0IGxlYXN0LCBvbmUgaGV4IGRpZ2l0IGlzIHJlcXVpcmVkLlxuXHQgICAgICAgIGlmIChjaCA9PT0gJ30nKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNIZXhEaWdpdChjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgY29kZSA9IGNvZGUgKiAxNiArIGhleFZhbHVlKGNoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKGNvZGUgPiAweDEwRkZGRiB8fCBjaCAhPT0gJ30nKSB7XG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5mcm9tQ29kZVBvaW50KGNvZGUpO1xuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmdldElkZW50aWZpZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5pbmRleCsrO1xuXHQgICAgICAgIHdoaWxlICghdGhpcy5lb2YoKSkge1xuXHQgICAgICAgICAgICB2YXIgY2ggPSB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpO1xuXHQgICAgICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHtcblx0ICAgICAgICAgICAgICAgIC8vIEJsYWNrc2xhc2ggKFUrMDA1QykgbWFya3MgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXG5cdCAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gc3RhcnQ7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb21wbGV4SWRlbnRpZmllcigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REZGRikge1xuXHQgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBoYW5kbGUgc3Vycm9nYXRlIHBhaXJzLlxuXHQgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IHN0YXJ0O1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29tcGxleElkZW50aWZpZXIoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzSWRlbnRpZmllclBhcnQoY2gpKSB7XG5cdCAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2Uuc2xpY2Uoc3RhcnQsIHRoaXMuaW5kZXgpO1xuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmdldENvbXBsZXhJZGVudGlmaWVyID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBjcCA9IHRoaXMuY29kZVBvaW50QXQodGhpcy5pbmRleCk7XG5cdCAgICAgICAgdmFyIGlkID0gY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmZyb21Db2RlUG9pbnQoY3ApO1xuXHQgICAgICAgIHRoaXMuaW5kZXggKz0gaWQubGVuZ3RoO1xuXHQgICAgICAgIC8vICdcXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci5cblx0ICAgICAgICB2YXIgY2g7XG5cdCAgICAgICAgaWYgKGNwID09PSAweDVDKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpICE9PSAweDc1KSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VbdGhpcy5pbmRleF0gPT09ICd7Jykge1xuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgY2ggPSB0aGlzLnNjYW5Vbmljb2RlQ29kZVBvaW50RXNjYXBlKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBjaCA9IHRoaXMuc2NhbkhleEVzY2FwZSgndScpO1xuXHQgICAgICAgICAgICAgICAgaWYgKGNoID09PSBudWxsIHx8IGNoID09PSAnXFxcXCcgfHwgIWNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJTdGFydChjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZCA9IGNoO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB3aGlsZSAoIXRoaXMuZW9mKCkpIHtcblx0ICAgICAgICAgICAgY3AgPSB0aGlzLmNvZGVQb2ludEF0KHRoaXMuaW5kZXgpO1xuXHQgICAgICAgICAgICBpZiAoIWNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJQYXJ0KGNwKSkge1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgY2ggPSBjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuZnJvbUNvZGVQb2ludChjcCk7XG5cdCAgICAgICAgICAgIGlkICs9IGNoO1xuXHQgICAgICAgICAgICB0aGlzLmluZGV4ICs9IGNoLmxlbmd0aDtcblx0ICAgICAgICAgICAgLy8gJ1xcdScgKFUrMDA1QywgVSswMDc1KSBkZW5vdGVzIGFuIGVzY2FwZWQgY2hhcmFjdGVyLlxuXHQgICAgICAgICAgICBpZiAoY3AgPT09IDB4NUMpIHtcblx0ICAgICAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyKDAsIGlkLmxlbmd0aCAtIDEpO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCkgIT09IDB4NzUpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VbdGhpcy5pbmRleF0gPT09ICd7Jykge1xuXHQgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgICAgICBjaCA9IHRoaXMuc2NhblVuaWNvZGVDb2RlUG9pbnRFc2NhcGUoKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5zY2FuSGV4RXNjYXBlKCd1Jyk7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSBudWxsIHx8IGNoID09PSAnXFxcXCcgfHwgIWNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJQYXJ0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBpZCArPSBjaDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gaWQ7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUub2N0YWxUb0RlY2ltYWwgPSBmdW5jdGlvbiAoY2gpIHtcblx0ICAgICAgICAvLyBcXDAgaXMgbm90IG9jdGFsIGVzY2FwZSBzZXF1ZW5jZVxuXHQgICAgICAgIHZhciBvY3RhbCA9IChjaCAhPT0gJzAnKTtcblx0ICAgICAgICB2YXIgY29kZSA9IG9jdGFsVmFsdWUoY2gpO1xuXHQgICAgICAgIGlmICghdGhpcy5lb2YoKSAmJiBjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNPY3RhbERpZ2l0KHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCkpKSB7XG5cdCAgICAgICAgICAgIG9jdGFsID0gdHJ1ZTtcblx0ICAgICAgICAgICAgY29kZSA9IGNvZGUgKiA4ICsgb2N0YWxWYWx1ZSh0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdKTtcblx0ICAgICAgICAgICAgLy8gMyBkaWdpdHMgYXJlIG9ubHkgYWxsb3dlZCB3aGVuIHN0cmluZyBzdGFydHNcblx0ICAgICAgICAgICAgLy8gd2l0aCAwLCAxLCAyLCAzXG5cdCAgICAgICAgICAgIGlmICgnMDEyMycuaW5kZXhPZihjaCkgPj0gMCAmJiAhdGhpcy5lb2YoKSAmJiBjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNPY3RhbERpZ2l0KHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCkpKSB7XG5cdCAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDggKyBvY3RhbFZhbHVlKHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK10pO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIGNvZGU6IGNvZGUsXG5cdCAgICAgICAgICAgIG9jdGFsOiBvY3RhbFxuXHQgICAgICAgIH07XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbmFtZXMtYW5kLWtleXdvcmRzXG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5zY2FuSWRlbnRpZmllciA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgdHlwZTtcblx0ICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLmluZGV4O1xuXHQgICAgICAgIC8vIEJhY2tzbGFzaCAoVSswMDVDKSBzdGFydHMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuXG5cdCAgICAgICAgdmFyIGlkID0gKHRoaXMuc291cmNlLmNoYXJDb2RlQXQoc3RhcnQpID09PSAweDVDKSA/IHRoaXMuZ2V0Q29tcGxleElkZW50aWZpZXIoKSA6IHRoaXMuZ2V0SWRlbnRpZmllcigpO1xuXHQgICAgICAgIC8vIFRoZXJlIGlzIG5vIGtleXdvcmQgb3IgbGl0ZXJhbCB3aXRoIG9ubHkgb25lIGNoYXJhY3Rlci5cblx0ICAgICAgICAvLyBUaHVzLCBpdCBtdXN0IGJlIGFuIGlkZW50aWZpZXIuXG5cdCAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgICAgICB0eXBlID0gMyAvKiBJZGVudGlmaWVyICovO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIGlmICh0aGlzLmlzS2V5d29yZChpZCkpIHtcblx0ICAgICAgICAgICAgdHlwZSA9IDQgLyogS2V5d29yZCAqLztcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAoaWQgPT09ICdudWxsJykge1xuXHQgICAgICAgICAgICB0eXBlID0gNSAvKiBOdWxsTGl0ZXJhbCAqLztcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSBpZiAoaWQgPT09ICd0cnVlJyB8fCBpZCA9PT0gJ2ZhbHNlJykge1xuXHQgICAgICAgICAgICB0eXBlID0gMSAvKiBCb29sZWFuTGl0ZXJhbCAqLztcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgIHR5cGUgPSAzIC8qIElkZW50aWZpZXIgKi87XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICh0eXBlICE9PSAzIC8qIElkZW50aWZpZXIgKi8gJiYgKHN0YXJ0ICsgaWQubGVuZ3RoICE9PSB0aGlzLmluZGV4KSkge1xuXHQgICAgICAgICAgICB2YXIgcmVzdG9yZSA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgIHRoaXMuaW5kZXggPSBzdGFydDtcblx0ICAgICAgICAgICAgdGhpcy50b2xlcmF0ZVVuZXhwZWN0ZWRUb2tlbihtZXNzYWdlc18xLk1lc3NhZ2VzLkludmFsaWRFc2NhcGVkUmVzZXJ2ZWRXb3JkKTtcblx0ICAgICAgICAgICAgdGhpcy5pbmRleCA9IHJlc3RvcmU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIHR5cGU6IHR5cGUsXG5cdCAgICAgICAgICAgIHZhbHVlOiBpZCxcblx0ICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICBsaW5lU3RhcnQ6IHRoaXMubGluZVN0YXJ0LFxuXHQgICAgICAgICAgICBzdGFydDogc3RhcnQsXG5cdCAgICAgICAgICAgIGVuZDogdGhpcy5pbmRleFxuXHQgICAgICAgIH07XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcHVuY3R1YXRvcnNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnNjYW5QdW5jdHVhdG9yID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgLy8gQ2hlY2sgZm9yIG1vc3QgY29tbW9uIHNpbmdsZS1jaGFyYWN0ZXIgcHVuY3R1YXRvcnMuXG5cdCAgICAgICAgdmFyIHN0ciA9IHRoaXMuc291cmNlW3RoaXMuaW5kZXhdO1xuXHQgICAgICAgIHN3aXRjaCAoc3RyKSB7XG5cdCAgICAgICAgICAgIGNhc2UgJygnOlxuXHQgICAgICAgICAgICBjYXNlICd7Jzpcblx0ICAgICAgICAgICAgICAgIGlmIChzdHIgPT09ICd7Jykge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VybHlTdGFjay5wdXNoKCd7Jyk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgY2FzZSAnLic6XG5cdCAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VbdGhpcy5pbmRleF0gPT09ICcuJyAmJiB0aGlzLnNvdXJjZVt0aGlzLmluZGV4ICsgMV0gPT09ICcuJykge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIFNwcmVhZCBvcGVyYXRvcjogLi4uXG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCArPSAyO1xuXHQgICAgICAgICAgICAgICAgICAgIHN0ciA9ICcuLi4nO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgJ30nOlxuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jdXJseVN0YWNrLnBvcCgpO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgJyknOlxuXHQgICAgICAgICAgICBjYXNlICc7Jzpcblx0ICAgICAgICAgICAgY2FzZSAnLCc6XG5cdCAgICAgICAgICAgIGNhc2UgJ1snOlxuXHQgICAgICAgICAgICBjYXNlICddJzpcblx0ICAgICAgICAgICAgY2FzZSAnOic6XG5cdCAgICAgICAgICAgIGNhc2UgJz8nOlxuXHQgICAgICAgICAgICBjYXNlICd+Jzpcblx0ICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgLy8gNC1jaGFyYWN0ZXIgcHVuY3R1YXRvci5cblx0ICAgICAgICAgICAgICAgIHN0ciA9IHRoaXMuc291cmNlLnN1YnN0cih0aGlzLmluZGV4LCA0KTtcblx0ICAgICAgICAgICAgICAgIGlmIChzdHIgPT09ICc+Pj49Jykge1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gNDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIDMtY2hhcmFjdGVyIHB1bmN0dWF0b3JzLlxuXHQgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5zdWJzdHIoMCwgMyk7XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PT0gJz09PScgfHwgc3RyID09PSAnIT09JyB8fCBzdHIgPT09ICc+Pj4nIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9PT0gJzw8PScgfHwgc3RyID09PSAnPj49JyB8fCBzdHIgPT09ICcqKj0nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gMztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDItY2hhcmFjdGVyIHB1bmN0dWF0b3JzLlxuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHIuc3Vic3RyKDAsIDIpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09PSAnJiYnIHx8IHN0ciA9PT0gJ3x8JyB8fCBzdHIgPT09ICc9PScgfHwgc3RyID09PSAnIT0nIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPT09ICcrPScgfHwgc3RyID09PSAnLT0nIHx8IHN0ciA9PT0gJyo9JyB8fCBzdHIgPT09ICcvPScgfHxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9PT0gJysrJyB8fCBzdHIgPT09ICctLScgfHwgc3RyID09PSAnPDwnIHx8IHN0ciA9PT0gJz4+JyB8fFxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyID09PSAnJj0nIHx8IHN0ciA9PT0gJ3w9JyB8fCBzdHIgPT09ICdePScgfHwgc3RyID09PSAnJT0nIHx8XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPT09ICc8PScgfHwgc3RyID09PSAnPj0nIHx8IHN0ciA9PT0gJz0+JyB8fCBzdHIgPT09ICcqKicpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gMjtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEtY2hhcmFjdGVyIHB1bmN0dWF0b3JzLlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzw+PSErLSolJnxeLycuaW5kZXhPZihzdHIpID49IDApIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICh0aGlzLmluZGV4ID09PSBzdGFydCkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIHR5cGU6IDcgLyogUHVuY3R1YXRvciAqLyxcblx0ICAgICAgICAgICAgdmFsdWU6IHN0cixcblx0ICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICBsaW5lU3RhcnQ6IHRoaXMubGluZVN0YXJ0LFxuXHQgICAgICAgICAgICBzdGFydDogc3RhcnQsXG5cdCAgICAgICAgICAgIGVuZDogdGhpcy5pbmRleFxuXHQgICAgICAgIH07XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbGl0ZXJhbHMtbnVtZXJpYy1saXRlcmFsc1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2NhbkhleExpdGVyYWwgPSBmdW5jdGlvbiAoc3RhcnQpIHtcblx0ICAgICAgICB2YXIgbnVtID0gJyc7XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGlmICghY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzSGV4RGlnaXQodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KSkpIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIG51bSArPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAobnVtLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNJZGVudGlmaWVyU3RhcnQodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KSkpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICB0eXBlOiA2IC8qIE51bWVyaWNMaXRlcmFsICovLFxuXHQgICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoJzB4JyArIG51bSwgMTYpLFxuXHQgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgZW5kOiB0aGlzLmluZGV4XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5zY2FuQmluYXJ5TGl0ZXJhbCA9IGZ1bmN0aW9uIChzdGFydCkge1xuXHQgICAgICAgIHZhciBudW0gPSAnJztcblx0ICAgICAgICB2YXIgY2g7XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgICAgIGlmIChjaCAhPT0gJzAnICYmIGNoICE9PSAnMScpIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIG51bSArPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAobnVtLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgICAgICAgICAvLyBvbmx5IDBiIG9yIDBCXG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KTtcblx0ICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cblx0ICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJTdGFydChjaCkgfHwgY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzRGVjaW1hbERpZ2l0KGNoKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIHR5cGU6IDYgLyogTnVtZXJpY0xpdGVyYWwgKi8sXG5cdCAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludChudW0sIDIpLFxuXHQgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgZW5kOiB0aGlzLmluZGV4XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5zY2FuT2N0YWxMaXRlcmFsID0gZnVuY3Rpb24gKHByZWZpeCwgc3RhcnQpIHtcblx0ICAgICAgICB2YXIgbnVtID0gJyc7XG5cdCAgICAgICAgdmFyIG9jdGFsID0gZmFsc2U7XG5cdCAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc09jdGFsRGlnaXQocHJlZml4LmNoYXJDb2RlQXQoMCkpKSB7XG5cdCAgICAgICAgICAgIG9jdGFsID0gdHJ1ZTtcblx0ICAgICAgICAgICAgbnVtID0gJzAnICsgdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGlmICghY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzT2N0YWxEaWdpdCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpKSkge1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgbnVtICs9IHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK107XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICghb2N0YWwgJiYgbnVtLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgICAgICAgICAvLyBvbmx5IDBvIG9yIDBPXG5cdCAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJTdGFydCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpKSB8fCBjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNEZWNpbWFsRGlnaXQodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KSkpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICB0eXBlOiA2IC8qIE51bWVyaWNMaXRlcmFsICovLFxuXHQgICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQobnVtLCA4KSxcblx0ICAgICAgICAgICAgb2N0YWw6IG9jdGFsLFxuXHQgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgZW5kOiB0aGlzLmluZGV4XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5pc0ltcGxpY2l0T2N0YWxMaXRlcmFsID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIC8vIEltcGxpY2l0IG9jdGFsLCB1bmxlc3MgdGhlcmUgaXMgYSBub24tb2N0YWwgZGlnaXQuXG5cdCAgICAgICAgLy8gKEFubmV4IEIuMS4xIG9uIE51bWVyaWMgTGl0ZXJhbHMpXG5cdCAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuaW5kZXggKyAxOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkge1xuXHQgICAgICAgICAgICB2YXIgY2ggPSB0aGlzLnNvdXJjZVtpXTtcblx0ICAgICAgICAgICAgaWYgKGNoID09PSAnOCcgfHwgY2ggPT09ICc5Jykge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGlmICghY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzT2N0YWxEaWdpdChjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2Nhbk51bWVyaWNMaXRlcmFsID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgdmFyIGNoID0gdGhpcy5zb3VyY2Vbc3RhcnRdO1xuXHQgICAgICAgIGFzc2VydF8xLmFzc2VydChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNEZWNpbWFsRGlnaXQoY2guY2hhckNvZGVBdCgwKSkgfHwgKGNoID09PSAnLicpLCAnTnVtZXJpYyBsaXRlcmFsIG11c3Qgc3RhcnQgd2l0aCBhIGRlY2ltYWwgZGlnaXQgb3IgYSBkZWNpbWFsIHBvaW50Jyk7XG5cdCAgICAgICAgdmFyIG51bSA9ICcnO1xuXHQgICAgICAgIGlmIChjaCAhPT0gJy4nKSB7XG5cdCAgICAgICAgICAgIG51bSA9IHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK107XG5cdCAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgICAgIC8vIEhleCBudW1iZXIgc3RhcnRzIHdpdGggJzB4Jy5cblx0ICAgICAgICAgICAgLy8gT2N0YWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJy5cblx0ICAgICAgICAgICAgLy8gT2N0YWwgbnVtYmVyIGluIEVTNiBzdGFydHMgd2l0aCAnMG8nLlxuXHQgICAgICAgICAgICAvLyBCaW5hcnkgbnVtYmVyIGluIEVTNiBzdGFydHMgd2l0aCAnMGInLlxuXHQgICAgICAgICAgICBpZiAobnVtID09PSAnMCcpIHtcblx0ICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ3gnIHx8IGNoID09PSAnWCcpIHtcblx0ICAgICAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkhleExpdGVyYWwoc3RhcnQpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgaWYgKGNoID09PSAnYicgfHwgY2ggPT09ICdCJykge1xuXHQgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuQmluYXJ5TGl0ZXJhbChzdGFydCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdvJyB8fCBjaCA9PT0gJ08nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nhbk9jdGFsTGl0ZXJhbChjaCwgc3RhcnQpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgaWYgKGNoICYmIGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc09jdGFsRGlnaXQoY2guY2hhckNvZGVBdCgwKSkpIHtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0ltcGxpY2l0T2N0YWxMaXRlcmFsKCkpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Nhbk9jdGFsTGl0ZXJhbChjaCwgc3RhcnQpO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB3aGlsZSAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzRGVjaW1hbERpZ2l0KHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5pbmRleCkpKSB7XG5cdCAgICAgICAgICAgICAgICBudW0gKz0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBjaCA9IHRoaXMuc291cmNlW3RoaXMuaW5kZXhdO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoY2ggPT09ICcuJykge1xuXHQgICAgICAgICAgICBudW0gKz0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICAgICAgd2hpbGUgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0RlY2ltYWxEaWdpdCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpKSkge1xuXHQgICAgICAgICAgICAgICAgbnVtICs9IHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK107XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgY2ggPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4XTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKGNoID09PSAnZScgfHwgY2ggPT09ICdFJykge1xuXHQgICAgICAgICAgICBudW0gKz0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICAgICAgY2ggPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4XTtcblx0ICAgICAgICAgICAgaWYgKGNoID09PSAnKycgfHwgY2ggPT09ICctJykge1xuXHQgICAgICAgICAgICAgICAgbnVtICs9IHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK107XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0RlY2ltYWxEaWdpdCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpKSkge1xuXHQgICAgICAgICAgICAgICAgd2hpbGUgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0RlY2ltYWxEaWdpdCh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMuaW5kZXgpKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIG51bSArPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNJZGVudGlmaWVyU3RhcnQodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KSkpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICB0eXBlOiA2IC8qIE51bWVyaWNMaXRlcmFsICovLFxuXHQgICAgICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdChudW0pLFxuXHQgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgZW5kOiB0aGlzLmluZGV4XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1saXRlcmFscy1zdHJpbmctbGl0ZXJhbHNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnNjYW5TdHJpbmdMaXRlcmFsID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgdmFyIHF1b3RlID0gdGhpcy5zb3VyY2Vbc3RhcnRdO1xuXHQgICAgICAgIGFzc2VydF8xLmFzc2VydCgocXVvdGUgPT09ICdcXCcnIHx8IHF1b3RlID09PSAnXCInKSwgJ1N0cmluZyBsaXRlcmFsIG11c3Qgc3RhcnRzIHdpdGggYSBxdW90ZScpO1xuXHQgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICB2YXIgb2N0YWwgPSBmYWxzZTtcblx0ICAgICAgICB2YXIgc3RyID0gJyc7XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIHZhciBjaCA9IHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK107XG5cdCAgICAgICAgICAgIGlmIChjaCA9PT0gcXVvdGUpIHtcblx0ICAgICAgICAgICAgICAgIHF1b3RlID0gJyc7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG5cdCAgICAgICAgICAgICAgICBjaCA9IHRoaXMuc291cmNlW3RoaXMuaW5kZXgrK107XG5cdCAgICAgICAgICAgICAgICBpZiAoIWNoIHx8ICFjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndSc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VbdGhpcy5pbmRleF0gPT09ICd7Jykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdGhpcy5zY2FuVW5pY29kZUNvZGVQb2ludEVzY2FwZSgpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVuZXNjYXBlZF8xID0gdGhpcy5zY2FuSGV4RXNjYXBlKGNoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5lc2NhcGVkXzEgPT09IG51bGwpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdW5lc2NhcGVkXzE7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdW5lc2NhcGVkID0gdGhpcy5zY2FuSGV4RXNjYXBlKGNoKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmVzY2FwZWQgPT09IG51bGwpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSW52YWxpZEhleEVzY2FwZVNlcXVlbmNlKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSB1bmVzY2FwZWQ7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcbic7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xccic7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcdCc7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcYic7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcZic7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xceDBCJztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc4Jzpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnOSc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAmJiBjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNPY3RhbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9jdFRvRGVjID0gdGhpcy5vY3RhbFRvRGVjaW1hbChjaCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSBvY3RUb0RlYy5vY3RhbCB8fCBvY3RhbDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShvY3RUb0RlYy5jb2RlKTtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgICAgICsrdGhpcy5saW5lTnVtYmVyO1xuXHQgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xccicgJiYgdGhpcy5zb3VyY2VbdGhpcy5pbmRleF0gPT09ICdcXG4nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5lU3RhcnQgPSB0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGVsc2UgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7XG5cdCAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAocXVvdGUgIT09ICcnKSB7XG5cdCAgICAgICAgICAgIHRoaXMuaW5kZXggPSBzdGFydDtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICB0eXBlOiA4IC8qIFN0cmluZ0xpdGVyYWwgKi8sXG5cdCAgICAgICAgICAgIHZhbHVlOiBzdHIsXG5cdCAgICAgICAgICAgIG9jdGFsOiBvY3RhbCxcblx0ICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuXHQgICAgICAgICAgICBsaW5lU3RhcnQ6IHRoaXMubGluZVN0YXJ0LFxuXHQgICAgICAgICAgICBzdGFydDogc3RhcnQsXG5cdCAgICAgICAgICAgIGVuZDogdGhpcy5pbmRleFxuXHQgICAgICAgIH07XG5cdCAgICB9O1xuXHQgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnNjYW5UZW1wbGF0ZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICB2YXIgY29va2VkID0gJyc7XG5cdCAgICAgICAgdmFyIHRlcm1pbmF0ZWQgPSBmYWxzZTtcblx0ICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLmluZGV4O1xuXHQgICAgICAgIHZhciBoZWFkID0gKHRoaXMuc291cmNlW3N0YXJ0XSA9PT0gJ2AnKTtcblx0ICAgICAgICB2YXIgdGFpbCA9IGZhbHNlO1xuXHQgICAgICAgIHZhciByYXdPZmZzZXQgPSAyO1xuXHQgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICB3aGlsZSAoIXRoaXMuZW9mKCkpIHtcblx0ICAgICAgICAgICAgdmFyIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICAgICAgaWYgKGNoID09PSAnYCcpIHtcblx0ICAgICAgICAgICAgICAgIHJhd09mZnNldCA9IDE7XG5cdCAgICAgICAgICAgICAgICB0YWlsID0gdHJ1ZTtcblx0ICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09ICckJykge1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlW3RoaXMuaW5kZXhdID09PSAneycpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cmx5U3RhY2sucHVzaCgnJHsnKTtcblx0ICAgICAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlZCA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBjb29rZWQgKz0gY2g7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuXHQgICAgICAgICAgICAgICAgY2ggPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdO1xuXHQgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xcbic7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xccic7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xcdCc7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndSc6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VbdGhpcy5pbmRleF0gPT09ICd7Jykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gdGhpcy5zY2FuVW5pY29kZUNvZGVQb2ludEVzY2FwZSgpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3RvcmUgPSB0aGlzLmluZGV4O1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1bmVzY2FwZWRfMiA9IHRoaXMuc2NhbkhleEVzY2FwZShjaCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuZXNjYXBlZF8yICE9PSBudWxsKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSB1bmVzY2FwZWRfMjtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSByZXN0b3JlO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gY2g7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVuZXNjYXBlZCA9IHRoaXMuc2NhbkhleEVzY2FwZShjaCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5lc2NhcGVkID09PSBudWxsKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbihtZXNzYWdlc18xLk1lc3NhZ2VzLkludmFsaWRIZXhFc2NhcGVTZXF1ZW5jZSk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gdW5lc2NhcGVkO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9ICdcXGInO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2YnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9ICdcXGYnO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9ICdcXHYnO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICcwJykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNEZWNpbWFsRGlnaXQodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KSkpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWxsZWdhbDogXFwwMSBcXDAyIGFuZCBzbyBvblxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKG1lc3NhZ2VzXzEuTWVzc2FnZXMuVGVtcGxhdGVPY3RhbExpdGVyYWwpO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xcMCc7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNPY3RhbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWxsZWdhbDogXFwxIFxcMlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhyb3dVbmV4cGVjdGVkVG9rZW4obWVzc2FnZXNfMS5NZXNzYWdlcy5UZW1wbGF0ZU9jdGFsTGl0ZXJhbCk7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gY2g7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICArK3RoaXMubGluZU51bWJlcjtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXHInICYmIHRoaXMuc291cmNlW3RoaXMuaW5kZXhdID09PSAnXFxuJykge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICArK3RoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0ID0gdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgKyt0aGlzLmxpbmVOdW1iZXI7XG5cdCAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXHInICYmIHRoaXMuc291cmNlW3RoaXMuaW5kZXhdID09PSAnXFxuJykge1xuXHQgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0ID0gdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgIGNvb2tlZCArPSAnXFxuJztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGNvb2tlZCArPSBjaDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoIWhlYWQpIHtcblx0ICAgICAgICAgICAgdGhpcy5jdXJseVN0YWNrLnBvcCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICB0eXBlOiAxMCAvKiBUZW1wbGF0ZSAqLyxcblx0ICAgICAgICAgICAgdmFsdWU6IHRoaXMuc291cmNlLnNsaWNlKHN0YXJ0ICsgMSwgdGhpcy5pbmRleCAtIHJhd09mZnNldCksXG5cdCAgICAgICAgICAgIGNvb2tlZDogY29va2VkLFxuXHQgICAgICAgICAgICBoZWFkOiBoZWFkLFxuXHQgICAgICAgICAgICB0YWlsOiB0YWlsLFxuXHQgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgIGxpbmVTdGFydDogdGhpcy5saW5lU3RhcnQsXG5cdCAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcblx0ICAgICAgICAgICAgZW5kOiB0aGlzLmluZGV4XG5cdCAgICAgICAgfTtcblx0ICAgIH07XG5cdCAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1saXRlcmFscy1yZWd1bGFyLWV4cHJlc3Npb24tbGl0ZXJhbHNcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLnRlc3RSZWdFeHAgPSBmdW5jdGlvbiAocGF0dGVybiwgZmxhZ3MpIHtcblx0ICAgICAgICAvLyBUaGUgQk1QIGNoYXJhY3RlciB0byB1c2UgYXMgYSByZXBsYWNlbWVudCBmb3IgYXN0cmFsIHN5bWJvbHMgd2hlblxuXHQgICAgICAgIC8vIHRyYW5zbGF0aW5nIGFuIEVTNiBcInVcIi1mbGFnZ2VkIHBhdHRlcm4gdG8gYW4gRVM1LWNvbXBhdGlibGVcblx0ICAgICAgICAvLyBhcHByb3hpbWF0aW9uLlxuXHQgICAgICAgIC8vIE5vdGU6IHJlcGxhY2luZyB3aXRoICdcXHVGRkZGJyBlbmFibGVzIGZhbHNlIHBvc2l0aXZlcyBpbiB1bmxpa2VseVxuXHQgICAgICAgIC8vIHNjZW5hcmlvcy4gRm9yIGV4YW1wbGUsIGBbXFx1ezEwNDRmfS1cXHV7MTA0NDB9XWAgaXMgYW4gaW52YWxpZFxuXHQgICAgICAgIC8vIHBhdHRlcm4gdGhhdCB3b3VsZCBub3QgYmUgZGV0ZWN0ZWQgYnkgdGhpcyBzdWJzdGl0dXRpb24uXG5cdCAgICAgICAgdmFyIGFzdHJhbFN1YnN0aXR1dGUgPSAnXFx1RkZGRic7XG5cdCAgICAgICAgdmFyIHRtcCA9IHBhdHRlcm47XG5cdCAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXHQgICAgICAgIGlmIChmbGFncy5pbmRleE9mKCd1JykgPj0gMCkge1xuXHQgICAgICAgICAgICB0bXAgPSB0bXBcblx0ICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcdVxceyhbMC05YS1mQS1GXSspXFx9fFxcXFx1KFthLWZBLUYwLTldezR9KS9nLCBmdW5jdGlvbiAoJDAsICQxLCAkMikge1xuXHQgICAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IHBhcnNlSW50KCQxIHx8ICQyLCAxNik7XG5cdCAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID4gMHgxMEZGRkYpIHtcblx0ICAgICAgICAgICAgICAgICAgICBzZWxmLnRocm93VW5leHBlY3RlZFRva2VuKG1lc3NhZ2VzXzEuTWVzc2FnZXMuSW52YWxpZFJlZ0V4cCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50IDw9IDB4RkZGRikge1xuXHQgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gYXN0cmFsU3Vic3RpdHV0ZTtcblx0ICAgICAgICAgICAgfSlcblx0ICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdL2csIGFzdHJhbFN1YnN0aXR1dGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAvLyBGaXJzdCwgZGV0ZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy5cblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICBSZWdFeHAodG1wKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgY2F0Y2ggKGUpIHtcblx0ICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbihtZXNzYWdlc18xLk1lc3NhZ2VzLkludmFsaWRSZWdFeHApO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAvLyBSZXR1cm4gYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IGZvciB0aGlzIHBhdHRlcm4tZmxhZyBwYWlyLCBvclxuXHQgICAgICAgIC8vIGBudWxsYCBpbiBjYXNlIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZmxhZ3MgaXRcblx0ICAgICAgICAvLyB1c2VzLlxuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xuXHQgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXHQgICAgICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2NhblJlZ0V4cEJvZHkgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgdmFyIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgYXNzZXJ0XzEuYXNzZXJ0KGNoID09PSAnLycsICdSZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbCBtdXN0IHN0YXJ0IHdpdGggYSBzbGFzaCcpO1xuXHQgICAgICAgIHZhciBzdHIgPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdO1xuXHQgICAgICAgIHZhciBjbGFzc01hcmtlciA9IGZhbHNlO1xuXHQgICAgICAgIHZhciB0ZXJtaW5hdGVkID0gZmFsc2U7XG5cdCAgICAgICAgd2hpbGUgKCF0aGlzLmVvZigpKSB7XG5cdCAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleCsrXTtcblx0ICAgICAgICAgICAgc3RyICs9IGNoO1xuXHQgICAgICAgICAgICBpZiAoY2ggPT09ICdcXFxcJykge1xuXHQgICAgICAgICAgICAgICAgY2ggPSB0aGlzLnNvdXJjZVt0aGlzLmluZGV4KytdO1xuXHQgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbGl0ZXJhbHMtcmVndWxhci1leHByZXNzaW9uLWxpdGVyYWxzXG5cdCAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHtcblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIHN0ciArPSBjaDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkge1xuXHQgICAgICAgICAgICAgICAgdGhpcy50aHJvd1VuZXhwZWN0ZWRUb2tlbihtZXNzYWdlc18xLk1lc3NhZ2VzLlVudGVybWluYXRlZFJlZ0V4cCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgZWxzZSBpZiAoY2xhc3NNYXJrZXIpIHtcblx0ICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgY2xhc3NNYXJrZXIgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJy8nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlZCA9IHRydWU7XG5cdCAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1snKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgY2xhc3NNYXJrZXIgPSB0cnVlO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmICghdGVybWluYXRlZCkge1xuXHQgICAgICAgICAgICB0aGlzLnRocm93VW5leHBlY3RlZFRva2VuKG1lc3NhZ2VzXzEuTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gRXhjbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaC5cblx0ICAgICAgICByZXR1cm4gc3RyLnN1YnN0cigxLCBzdHIubGVuZ3RoIC0gMik7XG5cdCAgICB9O1xuXHQgICAgU2Nhbm5lci5wcm90b3R5cGUuc2NhblJlZ0V4cEZsYWdzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdHIgPSAnJztcblx0ICAgICAgICB2YXIgZmxhZ3MgPSAnJztcblx0ICAgICAgICB3aGlsZSAoIXRoaXMuZW9mKCkpIHtcblx0ICAgICAgICAgICAgdmFyIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgICAgIGlmICghY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzSWRlbnRpZmllclBhcnQoY2guY2hhckNvZGVBdCgwKSkpIHtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgaWYgKGNoID09PSAnXFxcXCcgJiYgIXRoaXMuZW9mKCkpIHtcblx0ICAgICAgICAgICAgICAgIGNoID0gdGhpcy5zb3VyY2VbdGhpcy5pbmRleF07XG5cdCAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICd1Jykge1xuXHQgICAgICAgICAgICAgICAgICAgICsrdGhpcy5pbmRleDtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdG9yZSA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXIgPSB0aGlzLnNjYW5IZXhFc2NhcGUoJ3UnKTtcblx0ICAgICAgICAgICAgICAgICAgICBpZiAoY2hhciAhPT0gbnVsbCkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSBjaGFyO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHN0ciArPSAnXFxcXHUnOyByZXN0b3JlIDwgdGhpcy5pbmRleDsgKytyZXN0b3JlKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdGhpcy5zb3VyY2VbcmVzdG9yZV07XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSByZXN0b3JlO1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSAndSc7XG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXHUnO1xuXHQgICAgICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgICAgICB0aGlzLnRvbGVyYXRlVW5leHBlY3RlZFRva2VuKCk7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFwnO1xuXHQgICAgICAgICAgICAgICAgICAgIHRoaXMudG9sZXJhdGVVbmV4cGVjdGVkVG9rZW4oKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgICAgIGZsYWdzICs9IGNoO1xuXHQgICAgICAgICAgICAgICAgc3RyICs9IGNoO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBmbGFncztcblx0ICAgIH07XG5cdCAgICBTY2FubmVyLnByb3RvdHlwZS5zY2FuUmVnRXhwID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBzdGFydCA9IHRoaXMuaW5kZXg7XG5cdCAgICAgICAgdmFyIHBhdHRlcm4gPSB0aGlzLnNjYW5SZWdFeHBCb2R5KCk7XG5cdCAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5zY2FuUmVnRXhwRmxhZ3MoKTtcblx0ICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnRlc3RSZWdFeHAocGF0dGVybiwgZmxhZ3MpO1xuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICAgIHR5cGU6IDkgLyogUmVndWxhckV4cHJlc3Npb24gKi8sXG5cdCAgICAgICAgICAgIHZhbHVlOiAnJyxcblx0ICAgICAgICAgICAgcGF0dGVybjogcGF0dGVybixcblx0ICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuXHQgICAgICAgICAgICByZWdleDogdmFsdWUsXG5cdCAgICAgICAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcblx0ICAgICAgICAgICAgbGluZVN0YXJ0OiB0aGlzLmxpbmVTdGFydCxcblx0ICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuXHQgICAgICAgICAgICBlbmQ6IHRoaXMuaW5kZXhcblx0ICAgICAgICB9O1xuXHQgICAgfTtcblx0ICAgIFNjYW5uZXIucHJvdG90eXBlLmxleCA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBpZiAodGhpcy5lb2YoKSkge1xuXHQgICAgICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgICAgICAgdHlwZTogMiAvKiBFT0YgKi8sXG5cdCAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG5cdCAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IHRoaXMubGluZVN0YXJ0LFxuXHQgICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuaW5kZXgsXG5cdCAgICAgICAgICAgICAgICBlbmQ6IHRoaXMuaW5kZXhcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGNwID0gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4KTtcblx0ICAgICAgICBpZiAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzSWRlbnRpZmllclN0YXJ0KGNwKSkge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuSWRlbnRpZmllcigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAvLyBWZXJ5IGNvbW1vbjogKCBhbmQgKSBhbmQgO1xuXHQgICAgICAgIGlmIChjcCA9PT0gMHgyOCB8fCBjcCA9PT0gMHgyOSB8fCBjcCA9PT0gMHgzQikge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuUHVuY3R1YXRvcigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAvLyBTdHJpbmcgbGl0ZXJhbCBzdGFydHMgd2l0aCBzaW5nbGUgcXVvdGUgKFUrMDAyNykgb3IgZG91YmxlIHF1b3RlIChVKzAwMjIpLlxuXHQgICAgICAgIGlmIChjcCA9PT0gMHgyNyB8fCBjcCA9PT0gMHgyMikge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuU3RyaW5nTGl0ZXJhbCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAvLyBEb3QgKC4pIFUrMDAyRSBjYW4gYWxzbyBzdGFydCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciwgaGVuY2UgdGhlIG5lZWRcblx0ICAgICAgICAvLyB0byBjaGVjayB0aGUgbmV4dCBjaGFyYWN0ZXIuXG5cdCAgICAgICAgaWYgKGNwID09PSAweDJFKSB7XG5cdCAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJfMS5DaGFyYWN0ZXIuaXNEZWNpbWFsRGlnaXQodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmluZGV4ICsgMSkpKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuTnVtZXJpY0xpdGVyYWwoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuUHVuY3R1YXRvcigpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoY2hhcmFjdGVyXzEuQ2hhcmFjdGVyLmlzRGVjaW1hbERpZ2l0KGNwKSkge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuTnVtZXJpY0xpdGVyYWwoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gVGVtcGxhdGUgbGl0ZXJhbHMgc3RhcnQgd2l0aCBgIChVKzAwNjApIGZvciB0ZW1wbGF0ZSBoZWFkXG5cdCAgICAgICAgLy8gb3IgfSAoVSswMDdEKSBmb3IgdGVtcGxhdGUgbWlkZGxlIG9yIHRlbXBsYXRlIHRhaWwuXG5cdCAgICAgICAgaWYgKGNwID09PSAweDYwIHx8IChjcCA9PT0gMHg3RCAmJiB0aGlzLmN1cmx5U3RhY2tbdGhpcy5jdXJseVN0YWNrLmxlbmd0aCAtIDFdID09PSAnJHsnKSkge1xuXHQgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FuVGVtcGxhdGUoKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgLy8gUG9zc2libGUgaWRlbnRpZmllciBzdGFydCBpbiBhIHN1cnJvZ2F0ZSBwYWlyLlxuXHQgICAgICAgIGlmIChjcCA+PSAweEQ4MDAgJiYgY3AgPCAweERGRkYpIHtcblx0ICAgICAgICAgICAgaWYgKGNoYXJhY3Rlcl8xLkNoYXJhY3Rlci5pc0lkZW50aWZpZXJTdGFydCh0aGlzLmNvZGVQb2ludEF0KHRoaXMuaW5kZXgpKSkge1xuXHQgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NhbklkZW50aWZpZXIoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5zY2FuUHVuY3R1YXRvcigpO1xuXHQgICAgfTtcblx0ICAgIHJldHVybiBTY2FubmVyO1xuXHR9KCkpO1xuXHRleHBvcnRzLlNjYW5uZXIgPSBTY2FubmVyO1xuXG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcblx0ZXhwb3J0cy5Ub2tlbk5hbWUgPSB7fTtcblx0ZXhwb3J0cy5Ub2tlbk5hbWVbMSAvKiBCb29sZWFuTGl0ZXJhbCAqL10gPSAnQm9vbGVhbic7XG5cdGV4cG9ydHMuVG9rZW5OYW1lWzIgLyogRU9GICovXSA9ICc8ZW5kPic7XG5cdGV4cG9ydHMuVG9rZW5OYW1lWzMgLyogSWRlbnRpZmllciAqL10gPSAnSWRlbnRpZmllcic7XG5cdGV4cG9ydHMuVG9rZW5OYW1lWzQgLyogS2V5d29yZCAqL10gPSAnS2V5d29yZCc7XG5cdGV4cG9ydHMuVG9rZW5OYW1lWzUgLyogTnVsbExpdGVyYWwgKi9dID0gJ051bGwnO1xuXHRleHBvcnRzLlRva2VuTmFtZVs2IC8qIE51bWVyaWNMaXRlcmFsICovXSA9ICdOdW1lcmljJztcblx0ZXhwb3J0cy5Ub2tlbk5hbWVbNyAvKiBQdW5jdHVhdG9yICovXSA9ICdQdW5jdHVhdG9yJztcblx0ZXhwb3J0cy5Ub2tlbk5hbWVbOCAvKiBTdHJpbmdMaXRlcmFsICovXSA9ICdTdHJpbmcnO1xuXHRleHBvcnRzLlRva2VuTmFtZVs5IC8qIFJlZ3VsYXJFeHByZXNzaW9uICovXSA9ICdSZWd1bGFyRXhwcmVzc2lvbic7XG5cdGV4cG9ydHMuVG9rZW5OYW1lWzEwIC8qIFRlbXBsYXRlICovXSA9ICdUZW1wbGF0ZSc7XG5cblxuLyoqKi8gfSxcbi8qIDE0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0Ly8gR2VuZXJhdGVkIGJ5IGdlbmVyYXRlLXhodG1sLWVudGl0aWVzLmpzLiBETyBOT1QgTU9ESUZZIVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cdGV4cG9ydHMuWEhUTUxFbnRpdGllcyA9IHtcblx0ICAgIHF1b3Q6ICdcXHUwMDIyJyxcblx0ICAgIGFtcDogJ1xcdTAwMjYnLFxuXHQgICAgYXBvczogJ1xcdTAwMjcnLFxuXHQgICAgZ3Q6ICdcXHUwMDNFJyxcblx0ICAgIG5ic3A6ICdcXHUwMEEwJyxcblx0ICAgIGlleGNsOiAnXFx1MDBBMScsXG5cdCAgICBjZW50OiAnXFx1MDBBMicsXG5cdCAgICBwb3VuZDogJ1xcdTAwQTMnLFxuXHQgICAgY3VycmVuOiAnXFx1MDBBNCcsXG5cdCAgICB5ZW46ICdcXHUwMEE1Jyxcblx0ICAgIGJydmJhcjogJ1xcdTAwQTYnLFxuXHQgICAgc2VjdDogJ1xcdTAwQTcnLFxuXHQgICAgdW1sOiAnXFx1MDBBOCcsXG5cdCAgICBjb3B5OiAnXFx1MDBBOScsXG5cdCAgICBvcmRmOiAnXFx1MDBBQScsXG5cdCAgICBsYXF1bzogJ1xcdTAwQUInLFxuXHQgICAgbm90OiAnXFx1MDBBQycsXG5cdCAgICBzaHk6ICdcXHUwMEFEJyxcblx0ICAgIHJlZzogJ1xcdTAwQUUnLFxuXHQgICAgbWFjcjogJ1xcdTAwQUYnLFxuXHQgICAgZGVnOiAnXFx1MDBCMCcsXG5cdCAgICBwbHVzbW46ICdcXHUwMEIxJyxcblx0ICAgIHN1cDI6ICdcXHUwMEIyJyxcblx0ICAgIHN1cDM6ICdcXHUwMEIzJyxcblx0ICAgIGFjdXRlOiAnXFx1MDBCNCcsXG5cdCAgICBtaWNybzogJ1xcdTAwQjUnLFxuXHQgICAgcGFyYTogJ1xcdTAwQjYnLFxuXHQgICAgbWlkZG90OiAnXFx1MDBCNycsXG5cdCAgICBjZWRpbDogJ1xcdTAwQjgnLFxuXHQgICAgc3VwMTogJ1xcdTAwQjknLFxuXHQgICAgb3JkbTogJ1xcdTAwQkEnLFxuXHQgICAgcmFxdW86ICdcXHUwMEJCJyxcblx0ICAgIGZyYWMxNDogJ1xcdTAwQkMnLFxuXHQgICAgZnJhYzEyOiAnXFx1MDBCRCcsXG5cdCAgICBmcmFjMzQ6ICdcXHUwMEJFJyxcblx0ICAgIGlxdWVzdDogJ1xcdTAwQkYnLFxuXHQgICAgQWdyYXZlOiAnXFx1MDBDMCcsXG5cdCAgICBBYWN1dGU6ICdcXHUwMEMxJyxcblx0ICAgIEFjaXJjOiAnXFx1MDBDMicsXG5cdCAgICBBdGlsZGU6ICdcXHUwMEMzJyxcblx0ICAgIEF1bWw6ICdcXHUwMEM0Jyxcblx0ICAgIEFyaW5nOiAnXFx1MDBDNScsXG5cdCAgICBBRWxpZzogJ1xcdTAwQzYnLFxuXHQgICAgQ2NlZGlsOiAnXFx1MDBDNycsXG5cdCAgICBFZ3JhdmU6ICdcXHUwMEM4Jyxcblx0ICAgIEVhY3V0ZTogJ1xcdTAwQzknLFxuXHQgICAgRWNpcmM6ICdcXHUwMENBJyxcblx0ICAgIEV1bWw6ICdcXHUwMENCJyxcblx0ICAgIElncmF2ZTogJ1xcdTAwQ0MnLFxuXHQgICAgSWFjdXRlOiAnXFx1MDBDRCcsXG5cdCAgICBJY2lyYzogJ1xcdTAwQ0UnLFxuXHQgICAgSXVtbDogJ1xcdTAwQ0YnLFxuXHQgICAgRVRIOiAnXFx1MDBEMCcsXG5cdCAgICBOdGlsZGU6ICdcXHUwMEQxJyxcblx0ICAgIE9ncmF2ZTogJ1xcdTAwRDInLFxuXHQgICAgT2FjdXRlOiAnXFx1MDBEMycsXG5cdCAgICBPY2lyYzogJ1xcdTAwRDQnLFxuXHQgICAgT3RpbGRlOiAnXFx1MDBENScsXG5cdCAgICBPdW1sOiAnXFx1MDBENicsXG5cdCAgICB0aW1lczogJ1xcdTAwRDcnLFxuXHQgICAgT3NsYXNoOiAnXFx1MDBEOCcsXG5cdCAgICBVZ3JhdmU6ICdcXHUwMEQ5Jyxcblx0ICAgIFVhY3V0ZTogJ1xcdTAwREEnLFxuXHQgICAgVWNpcmM6ICdcXHUwMERCJyxcblx0ICAgIFV1bWw6ICdcXHUwMERDJyxcblx0ICAgIFlhY3V0ZTogJ1xcdTAwREQnLFxuXHQgICAgVEhPUk46ICdcXHUwMERFJyxcblx0ICAgIHN6bGlnOiAnXFx1MDBERicsXG5cdCAgICBhZ3JhdmU6ICdcXHUwMEUwJyxcblx0ICAgIGFhY3V0ZTogJ1xcdTAwRTEnLFxuXHQgICAgYWNpcmM6ICdcXHUwMEUyJyxcblx0ICAgIGF0aWxkZTogJ1xcdTAwRTMnLFxuXHQgICAgYXVtbDogJ1xcdTAwRTQnLFxuXHQgICAgYXJpbmc6ICdcXHUwMEU1Jyxcblx0ICAgIGFlbGlnOiAnXFx1MDBFNicsXG5cdCAgICBjY2VkaWw6ICdcXHUwMEU3Jyxcblx0ICAgIGVncmF2ZTogJ1xcdTAwRTgnLFxuXHQgICAgZWFjdXRlOiAnXFx1MDBFOScsXG5cdCAgICBlY2lyYzogJ1xcdTAwRUEnLFxuXHQgICAgZXVtbDogJ1xcdTAwRUInLFxuXHQgICAgaWdyYXZlOiAnXFx1MDBFQycsXG5cdCAgICBpYWN1dGU6ICdcXHUwMEVEJyxcblx0ICAgIGljaXJjOiAnXFx1MDBFRScsXG5cdCAgICBpdW1sOiAnXFx1MDBFRicsXG5cdCAgICBldGg6ICdcXHUwMEYwJyxcblx0ICAgIG50aWxkZTogJ1xcdTAwRjEnLFxuXHQgICAgb2dyYXZlOiAnXFx1MDBGMicsXG5cdCAgICBvYWN1dGU6ICdcXHUwMEYzJyxcblx0ICAgIG9jaXJjOiAnXFx1MDBGNCcsXG5cdCAgICBvdGlsZGU6ICdcXHUwMEY1Jyxcblx0ICAgIG91bWw6ICdcXHUwMEY2Jyxcblx0ICAgIGRpdmlkZTogJ1xcdTAwRjcnLFxuXHQgICAgb3NsYXNoOiAnXFx1MDBGOCcsXG5cdCAgICB1Z3JhdmU6ICdcXHUwMEY5Jyxcblx0ICAgIHVhY3V0ZTogJ1xcdTAwRkEnLFxuXHQgICAgdWNpcmM6ICdcXHUwMEZCJyxcblx0ICAgIHV1bWw6ICdcXHUwMEZDJyxcblx0ICAgIHlhY3V0ZTogJ1xcdTAwRkQnLFxuXHQgICAgdGhvcm46ICdcXHUwMEZFJyxcblx0ICAgIHl1bWw6ICdcXHUwMEZGJyxcblx0ICAgIE9FbGlnOiAnXFx1MDE1MicsXG5cdCAgICBvZWxpZzogJ1xcdTAxNTMnLFxuXHQgICAgU2Nhcm9uOiAnXFx1MDE2MCcsXG5cdCAgICBzY2Fyb246ICdcXHUwMTYxJyxcblx0ICAgIFl1bWw6ICdcXHUwMTc4Jyxcblx0ICAgIGZub2Y6ICdcXHUwMTkyJyxcblx0ICAgIGNpcmM6ICdcXHUwMkM2Jyxcblx0ICAgIHRpbGRlOiAnXFx1MDJEQycsXG5cdCAgICBBbHBoYTogJ1xcdTAzOTEnLFxuXHQgICAgQmV0YTogJ1xcdTAzOTInLFxuXHQgICAgR2FtbWE6ICdcXHUwMzkzJyxcblx0ICAgIERlbHRhOiAnXFx1MDM5NCcsXG5cdCAgICBFcHNpbG9uOiAnXFx1MDM5NScsXG5cdCAgICBaZXRhOiAnXFx1MDM5NicsXG5cdCAgICBFdGE6ICdcXHUwMzk3Jyxcblx0ICAgIFRoZXRhOiAnXFx1MDM5OCcsXG5cdCAgICBJb3RhOiAnXFx1MDM5OScsXG5cdCAgICBLYXBwYTogJ1xcdTAzOUEnLFxuXHQgICAgTGFtYmRhOiAnXFx1MDM5QicsXG5cdCAgICBNdTogJ1xcdTAzOUMnLFxuXHQgICAgTnU6ICdcXHUwMzlEJyxcblx0ICAgIFhpOiAnXFx1MDM5RScsXG5cdCAgICBPbWljcm9uOiAnXFx1MDM5RicsXG5cdCAgICBQaTogJ1xcdTAzQTAnLFxuXHQgICAgUmhvOiAnXFx1MDNBMScsXG5cdCAgICBTaWdtYTogJ1xcdTAzQTMnLFxuXHQgICAgVGF1OiAnXFx1MDNBNCcsXG5cdCAgICBVcHNpbG9uOiAnXFx1MDNBNScsXG5cdCAgICBQaGk6ICdcXHUwM0E2Jyxcblx0ICAgIENoaTogJ1xcdTAzQTcnLFxuXHQgICAgUHNpOiAnXFx1MDNBOCcsXG5cdCAgICBPbWVnYTogJ1xcdTAzQTknLFxuXHQgICAgYWxwaGE6ICdcXHUwM0IxJyxcblx0ICAgIGJldGE6ICdcXHUwM0IyJyxcblx0ICAgIGdhbW1hOiAnXFx1MDNCMycsXG5cdCAgICBkZWx0YTogJ1xcdTAzQjQnLFxuXHQgICAgZXBzaWxvbjogJ1xcdTAzQjUnLFxuXHQgICAgemV0YTogJ1xcdTAzQjYnLFxuXHQgICAgZXRhOiAnXFx1MDNCNycsXG5cdCAgICB0aGV0YTogJ1xcdTAzQjgnLFxuXHQgICAgaW90YTogJ1xcdTAzQjknLFxuXHQgICAga2FwcGE6ICdcXHUwM0JBJyxcblx0ICAgIGxhbWJkYTogJ1xcdTAzQkInLFxuXHQgICAgbXU6ICdcXHUwM0JDJyxcblx0ICAgIG51OiAnXFx1MDNCRCcsXG5cdCAgICB4aTogJ1xcdTAzQkUnLFxuXHQgICAgb21pY3JvbjogJ1xcdTAzQkYnLFxuXHQgICAgcGk6ICdcXHUwM0MwJyxcblx0ICAgIHJobzogJ1xcdTAzQzEnLFxuXHQgICAgc2lnbWFmOiAnXFx1MDNDMicsXG5cdCAgICBzaWdtYTogJ1xcdTAzQzMnLFxuXHQgICAgdGF1OiAnXFx1MDNDNCcsXG5cdCAgICB1cHNpbG9uOiAnXFx1MDNDNScsXG5cdCAgICBwaGk6ICdcXHUwM0M2Jyxcblx0ICAgIGNoaTogJ1xcdTAzQzcnLFxuXHQgICAgcHNpOiAnXFx1MDNDOCcsXG5cdCAgICBvbWVnYTogJ1xcdTAzQzknLFxuXHQgICAgdGhldGFzeW06ICdcXHUwM0QxJyxcblx0ICAgIHVwc2loOiAnXFx1MDNEMicsXG5cdCAgICBwaXY6ICdcXHUwM0Q2Jyxcblx0ICAgIGVuc3A6ICdcXHUyMDAyJyxcblx0ICAgIGVtc3A6ICdcXHUyMDAzJyxcblx0ICAgIHRoaW5zcDogJ1xcdTIwMDknLFxuXHQgICAgenduajogJ1xcdTIwMEMnLFxuXHQgICAgendqOiAnXFx1MjAwRCcsXG5cdCAgICBscm06ICdcXHUyMDBFJyxcblx0ICAgIHJsbTogJ1xcdTIwMEYnLFxuXHQgICAgbmRhc2g6ICdcXHUyMDEzJyxcblx0ICAgIG1kYXNoOiAnXFx1MjAxNCcsXG5cdCAgICBsc3F1bzogJ1xcdTIwMTgnLFxuXHQgICAgcnNxdW86ICdcXHUyMDE5Jyxcblx0ICAgIHNicXVvOiAnXFx1MjAxQScsXG5cdCAgICBsZHF1bzogJ1xcdTIwMUMnLFxuXHQgICAgcmRxdW86ICdcXHUyMDFEJyxcblx0ICAgIGJkcXVvOiAnXFx1MjAxRScsXG5cdCAgICBkYWdnZXI6ICdcXHUyMDIwJyxcblx0ICAgIERhZ2dlcjogJ1xcdTIwMjEnLFxuXHQgICAgYnVsbDogJ1xcdTIwMjInLFxuXHQgICAgaGVsbGlwOiAnXFx1MjAyNicsXG5cdCAgICBwZXJtaWw6ICdcXHUyMDMwJyxcblx0ICAgIHByaW1lOiAnXFx1MjAzMicsXG5cdCAgICBQcmltZTogJ1xcdTIwMzMnLFxuXHQgICAgbHNhcXVvOiAnXFx1MjAzOScsXG5cdCAgICByc2FxdW86ICdcXHUyMDNBJyxcblx0ICAgIG9saW5lOiAnXFx1MjAzRScsXG5cdCAgICBmcmFzbDogJ1xcdTIwNDQnLFxuXHQgICAgZXVybzogJ1xcdTIwQUMnLFxuXHQgICAgaW1hZ2U6ICdcXHUyMTExJyxcblx0ICAgIHdlaWVycDogJ1xcdTIxMTgnLFxuXHQgICAgcmVhbDogJ1xcdTIxMUMnLFxuXHQgICAgdHJhZGU6ICdcXHUyMTIyJyxcblx0ICAgIGFsZWZzeW06ICdcXHUyMTM1Jyxcblx0ICAgIGxhcnI6ICdcXHUyMTkwJyxcblx0ICAgIHVhcnI6ICdcXHUyMTkxJyxcblx0ICAgIHJhcnI6ICdcXHUyMTkyJyxcblx0ICAgIGRhcnI6ICdcXHUyMTkzJyxcblx0ICAgIGhhcnI6ICdcXHUyMTk0Jyxcblx0ICAgIGNyYXJyOiAnXFx1MjFCNScsXG5cdCAgICBsQXJyOiAnXFx1MjFEMCcsXG5cdCAgICB1QXJyOiAnXFx1MjFEMScsXG5cdCAgICByQXJyOiAnXFx1MjFEMicsXG5cdCAgICBkQXJyOiAnXFx1MjFEMycsXG5cdCAgICBoQXJyOiAnXFx1MjFENCcsXG5cdCAgICBmb3JhbGw6ICdcXHUyMjAwJyxcblx0ICAgIHBhcnQ6ICdcXHUyMjAyJyxcblx0ICAgIGV4aXN0OiAnXFx1MjIwMycsXG5cdCAgICBlbXB0eTogJ1xcdTIyMDUnLFxuXHQgICAgbmFibGE6ICdcXHUyMjA3Jyxcblx0ICAgIGlzaW46ICdcXHUyMjA4Jyxcblx0ICAgIG5vdGluOiAnXFx1MjIwOScsXG5cdCAgICBuaTogJ1xcdTIyMEInLFxuXHQgICAgcHJvZDogJ1xcdTIyMEYnLFxuXHQgICAgc3VtOiAnXFx1MjIxMScsXG5cdCAgICBtaW51czogJ1xcdTIyMTInLFxuXHQgICAgbG93YXN0OiAnXFx1MjIxNycsXG5cdCAgICByYWRpYzogJ1xcdTIyMUEnLFxuXHQgICAgcHJvcDogJ1xcdTIyMUQnLFxuXHQgICAgaW5maW46ICdcXHUyMjFFJyxcblx0ICAgIGFuZzogJ1xcdTIyMjAnLFxuXHQgICAgYW5kOiAnXFx1MjIyNycsXG5cdCAgICBvcjogJ1xcdTIyMjgnLFxuXHQgICAgY2FwOiAnXFx1MjIyOScsXG5cdCAgICBjdXA6ICdcXHUyMjJBJyxcblx0ICAgIGludDogJ1xcdTIyMkInLFxuXHQgICAgdGhlcmU0OiAnXFx1MjIzNCcsXG5cdCAgICBzaW06ICdcXHUyMjNDJyxcblx0ICAgIGNvbmc6ICdcXHUyMjQ1Jyxcblx0ICAgIGFzeW1wOiAnXFx1MjI0OCcsXG5cdCAgICBuZTogJ1xcdTIyNjAnLFxuXHQgICAgZXF1aXY6ICdcXHUyMjYxJyxcblx0ICAgIGxlOiAnXFx1MjI2NCcsXG5cdCAgICBnZTogJ1xcdTIyNjUnLFxuXHQgICAgc3ViOiAnXFx1MjI4MicsXG5cdCAgICBzdXA6ICdcXHUyMjgzJyxcblx0ICAgIG5zdWI6ICdcXHUyMjg0Jyxcblx0ICAgIHN1YmU6ICdcXHUyMjg2Jyxcblx0ICAgIHN1cGU6ICdcXHUyMjg3Jyxcblx0ICAgIG9wbHVzOiAnXFx1MjI5NScsXG5cdCAgICBvdGltZXM6ICdcXHUyMjk3Jyxcblx0ICAgIHBlcnA6ICdcXHUyMkE1Jyxcblx0ICAgIHNkb3Q6ICdcXHUyMkM1Jyxcblx0ICAgIGxjZWlsOiAnXFx1MjMwOCcsXG5cdCAgICByY2VpbDogJ1xcdTIzMDknLFxuXHQgICAgbGZsb29yOiAnXFx1MjMwQScsXG5cdCAgICByZmxvb3I6ICdcXHUyMzBCJyxcblx0ICAgIGxvejogJ1xcdTI1Q0EnLFxuXHQgICAgc3BhZGVzOiAnXFx1MjY2MCcsXG5cdCAgICBjbHViczogJ1xcdTI2NjMnLFxuXHQgICAgaGVhcnRzOiAnXFx1MjY2NScsXG5cdCAgICBkaWFtczogJ1xcdTI2NjYnLFxuXHQgICAgbGFuZzogJ1xcdTI3RTgnLFxuXHQgICAgcmFuZzogJ1xcdTI3RTknXG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuXHR2YXIgZXJyb3JfaGFuZGxlcl8xID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdHZhciBzY2FubmVyXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0dmFyIHRva2VuXzEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0dmFyIFJlYWRlciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBSZWFkZXIoKSB7XG5cdCAgICAgICAgdGhpcy52YWx1ZXMgPSBbXTtcblx0ICAgICAgICB0aGlzLmN1cmx5ID0gdGhpcy5wYXJlbiA9IC0xO1xuXHQgICAgfVxuXHQgICAgLy8gQSBmdW5jdGlvbiBmb2xsb3dpbmcgb25lIG9mIHRob3NlIHRva2VucyBpcyBhbiBleHByZXNzaW9uLlxuXHQgICAgUmVhZGVyLnByb3RvdHlwZS5iZWZvcmVGdW5jdGlvbkV4cHJlc3Npb24gPSBmdW5jdGlvbiAodCkge1xuXHQgICAgICAgIHJldHVybiBbJygnLCAneycsICdbJywgJ2luJywgJ3R5cGVvZicsICdpbnN0YW5jZW9mJywgJ25ldycsXG5cdCAgICAgICAgICAgICdyZXR1cm4nLCAnY2FzZScsICdkZWxldGUnLCAndGhyb3cnLCAndm9pZCcsXG5cdCAgICAgICAgICAgIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3JzXG5cdCAgICAgICAgICAgICc9JywgJys9JywgJy09JywgJyo9JywgJyoqPScsICcvPScsICclPScsICc8PD0nLCAnPj49JywgJz4+Pj0nLFxuXHQgICAgICAgICAgICAnJj0nLCAnfD0nLCAnXj0nLCAnLCcsXG5cdCAgICAgICAgICAgIC8vIGJpbmFyeS91bmFyeSBvcGVyYXRvcnNcblx0ICAgICAgICAgICAgJysnLCAnLScsICcqJywgJyoqJywgJy8nLCAnJScsICcrKycsICctLScsICc8PCcsICc+PicsICc+Pj4nLCAnJicsXG5cdCAgICAgICAgICAgICd8JywgJ14nLCAnIScsICd+JywgJyYmJywgJ3x8JywgJz8nLCAnOicsICc9PT0nLCAnPT0nLCAnPj0nLFxuXHQgICAgICAgICAgICAnPD0nLCAnPCcsICc+JywgJyE9JywgJyE9PSddLmluZGV4T2YodCkgPj0gMDtcblx0ICAgIH07XG5cdCAgICAvLyBEZXRlcm1pbmUgaWYgZm9yd2FyZCBzbGFzaCAoLykgaXMgYW4gb3BlcmF0b3Igb3IgcGFydCBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvblxuXHQgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc3dlZXQuanMvd2lraS9kZXNpZ25cblx0ICAgIFJlYWRlci5wcm90b3R5cGUuaXNSZWdleFN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBwcmV2aW91cyA9IHRoaXMudmFsdWVzW3RoaXMudmFsdWVzLmxlbmd0aCAtIDFdO1xuXHQgICAgICAgIHZhciByZWdleCA9IChwcmV2aW91cyAhPT0gbnVsbCk7XG5cdCAgICAgICAgc3dpdGNoIChwcmV2aW91cykge1xuXHQgICAgICAgICAgICBjYXNlICd0aGlzJzpcblx0ICAgICAgICAgICAgY2FzZSAnXSc6XG5cdCAgICAgICAgICAgICAgICByZWdleCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICAgIGNhc2UgJyknOlxuXHQgICAgICAgICAgICAgICAgdmFyIGtleXdvcmQgPSB0aGlzLnZhbHVlc1t0aGlzLnBhcmVuIC0gMV07XG5cdCAgICAgICAgICAgICAgICByZWdleCA9IChrZXl3b3JkID09PSAnaWYnIHx8IGtleXdvcmQgPT09ICd3aGlsZScgfHwga2V5d29yZCA9PT0gJ2ZvcicgfHwga2V5d29yZCA9PT0gJ3dpdGgnKTtcblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBjYXNlICd9Jzpcblx0ICAgICAgICAgICAgICAgIC8vIERpdmlkaW5nIGEgZnVuY3Rpb24gYnkgYW55dGhpbmcgbWFrZXMgbGl0dGxlIHNlbnNlLFxuXHQgICAgICAgICAgICAgICAgLy8gYnV0IHdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoYXQuXG5cdCAgICAgICAgICAgICAgICByZWdleCA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWVzW3RoaXMuY3VybHkgLSAzXSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICAgICAgICAgIC8vIEFub255bW91cyBmdW5jdGlvbiwgZS5nLiBmdW5jdGlvbigpe30gLzQyXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGNoZWNrID0gdGhpcy52YWx1ZXNbdGhpcy5jdXJseSAtIDRdO1xuXHQgICAgICAgICAgICAgICAgICAgIHJlZ2V4ID0gY2hlY2sgPyAhdGhpcy5iZWZvcmVGdW5jdGlvbkV4cHJlc3Npb24oY2hlY2spIDogZmFsc2U7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnZhbHVlc1t0aGlzLmN1cmx5IC0gNF0gPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgICAgICAgICAvLyBOYW1lZCBmdW5jdGlvbiwgZS5nLiBmdW5jdGlvbiBmKCl7fSAvNDIvXG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIGNoZWNrID0gdGhpcy52YWx1ZXNbdGhpcy5jdXJseSAtIDVdO1xuXHQgICAgICAgICAgICAgICAgICAgIHJlZ2V4ID0gY2hlY2sgPyAhdGhpcy5iZWZvcmVGdW5jdGlvbkV4cHJlc3Npb24oY2hlY2spIDogdHJ1ZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgICAgICBkZWZhdWx0OlxuXHQgICAgICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiByZWdleDtcblx0ICAgIH07XG5cdCAgICBSZWFkZXIucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodG9rZW4pIHtcblx0ICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gNyAvKiBQdW5jdHVhdG9yICovIHx8IHRva2VuLnR5cGUgPT09IDQgLyogS2V5d29yZCAqLykge1xuXHQgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICd7Jykge1xuXHQgICAgICAgICAgICAgICAgdGhpcy5jdXJseSA9IHRoaXMudmFsdWVzLmxlbmd0aDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBlbHNlIGlmICh0b2tlbi52YWx1ZSA9PT0gJygnKSB7XG5cdCAgICAgICAgICAgICAgICB0aGlzLnBhcmVuID0gdGhpcy52YWx1ZXMubGVuZ3RoO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHRoaXMudmFsdWVzLnB1c2godG9rZW4udmFsdWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgICAgdGhpcy52YWx1ZXMucHVzaChudWxsKTtcblx0ICAgICAgICB9XG5cdCAgICB9O1xuXHQgICAgcmV0dXJuIFJlYWRlcjtcblx0fSgpKTtcblx0dmFyIFRva2VuaXplciA9IChmdW5jdGlvbiAoKSB7XG5cdCAgICBmdW5jdGlvbiBUb2tlbml6ZXIoY29kZSwgY29uZmlnKSB7XG5cdCAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBuZXcgZXJyb3JfaGFuZGxlcl8xLkVycm9ySGFuZGxlcigpO1xuXHQgICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLnRvbGVyYW50ID0gY29uZmlnID8gKHR5cGVvZiBjb25maWcudG9sZXJhbnQgPT09ICdib29sZWFuJyAmJiBjb25maWcudG9sZXJhbnQpIDogZmFsc2U7XG5cdCAgICAgICAgdGhpcy5zY2FubmVyID0gbmV3IHNjYW5uZXJfMS5TY2FubmVyKGNvZGUsIHRoaXMuZXJyb3JIYW5kbGVyKTtcblx0ICAgICAgICB0aGlzLnNjYW5uZXIudHJhY2tDb21tZW50ID0gY29uZmlnID8gKHR5cGVvZiBjb25maWcuY29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIGNvbmZpZy5jb21tZW50KSA6IGZhbHNlO1xuXHQgICAgICAgIHRoaXMudHJhY2tSYW5nZSA9IGNvbmZpZyA/ICh0eXBlb2YgY29uZmlnLnJhbmdlID09PSAnYm9vbGVhbicgJiYgY29uZmlnLnJhbmdlKSA6IGZhbHNlO1xuXHQgICAgICAgIHRoaXMudHJhY2tMb2MgPSBjb25maWcgPyAodHlwZW9mIGNvbmZpZy5sb2MgPT09ICdib29sZWFuJyAmJiBjb25maWcubG9jKSA6IGZhbHNlO1xuXHQgICAgICAgIHRoaXMuYnVmZmVyID0gW107XG5cdCAgICAgICAgdGhpcy5yZWFkZXIgPSBuZXcgUmVhZGVyKCk7XG5cdCAgICB9XG5cdCAgICBUb2tlbml6ZXIucHJvdG90eXBlLmVycm9ycyA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuZXJyb3JzO1xuXHQgICAgfTtcblx0ICAgIFRva2VuaXplci5wcm90b3R5cGUuZ2V0TmV4dFRva2VuID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPT09IDApIHtcblx0ICAgICAgICAgICAgdmFyIGNvbW1lbnRzID0gdGhpcy5zY2FubmVyLnNjYW5Db21tZW50cygpO1xuXHQgICAgICAgICAgICBpZiAodGhpcy5zY2FubmVyLnRyYWNrQ29tbWVudCkge1xuXHQgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21tZW50cy5sZW5ndGg7ICsraSkge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBlID0gY29tbWVudHNbaV07XG5cdCAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5zY2FubmVyLnNvdXJjZS5zbGljZShlLnNsaWNlWzBdLCBlLnNsaWNlWzFdKTtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgY29tbWVudCA9IHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZS5tdWx0aUxpbmUgPyAnQmxvY2tDb21tZW50JyA6ICdMaW5lQ29tbWVudCcsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuXHQgICAgICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tSYW5nZSkge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LnJhbmdlID0gZS5yYW5nZTtcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tMb2MpIHtcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC5sb2MgPSBlLmxvYztcblx0ICAgICAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXIucHVzaChjb21tZW50KTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICBpZiAoIXRoaXMuc2Nhbm5lci5lb2YoKSkge1xuXHQgICAgICAgICAgICAgICAgdmFyIGxvYyA9IHZvaWQgMDtcblx0ICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYWNrTG9jKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgbG9jID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDoge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5zY2FubmVyLmxpbmVOdW1iZXIsXG5cdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuc2Nhbm5lci5pbmRleCAtIHRoaXMuc2Nhbm5lci5saW5lU3RhcnRcblx0ICAgICAgICAgICAgICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiB7fVxuXHQgICAgICAgICAgICAgICAgICAgIH07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB2YXIgc3RhcnRSZWdleCA9ICh0aGlzLnNjYW5uZXIuc291cmNlW3RoaXMuc2Nhbm5lci5pbmRleF0gPT09ICcvJykgJiYgdGhpcy5yZWFkZXIuaXNSZWdleFN0YXJ0KCk7XG5cdCAgICAgICAgICAgICAgICB2YXIgdG9rZW4gPSBzdGFydFJlZ2V4ID8gdGhpcy5zY2FubmVyLnNjYW5SZWdFeHAoKSA6IHRoaXMuc2Nhbm5lci5sZXgoKTtcblx0ICAgICAgICAgICAgICAgIHRoaXMucmVhZGVyLnB1c2godG9rZW4pO1xuXHQgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0ge1xuXHQgICAgICAgICAgICAgICAgICAgIHR5cGU6IHRva2VuXzEuVG9rZW5OYW1lW3Rva2VuLnR5cGVdLFxuXHQgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNjYW5uZXIuc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpXG5cdCAgICAgICAgICAgICAgICB9O1xuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tSYW5nZSkge1xuXHQgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJhbmdlID0gW3Rva2VuLnN0YXJ0LCB0b2tlbi5lbmRdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJhY2tMb2MpIHtcblx0ICAgICAgICAgICAgICAgICAgICBsb2MuZW5kID0ge1xuXHQgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLnNjYW5uZXIubGluZU51bWJlcixcblx0ICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLnNjYW5uZXIuaW5kZXggLSB0aGlzLnNjYW5uZXIubGluZVN0YXJ0XG5cdCAgICAgICAgICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgICAgICAgICBlbnRyeS5sb2MgPSBsb2M7XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gOSAvKiBSZWd1bGFyRXhwcmVzc2lvbiAqLykge1xuXHQgICAgICAgICAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gdG9rZW4ucGF0dGVybjtcblx0ICAgICAgICAgICAgICAgICAgICB2YXIgZmxhZ3MgPSB0b2tlbi5mbGFncztcblx0ICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZWdleCA9IHsgcGF0dGVybjogcGF0dGVybiwgZmxhZ3M6IGZsYWdzIH07XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKGVudHJ5KTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIuc2hpZnQoKTtcblx0ICAgIH07XG5cdCAgICByZXR1cm4gVG9rZW5pemVyO1xuXHR9KCkpO1xuXHRleHBvcnRzLlRva2VuaXplciA9IFRva2VuaXplcjtcblxuXG4vKioqLyB9XG4vKioqKioqLyBdKVxufSk7XG47Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1356\n")},1361:module=>{eval('/*\nLanguage: WebAssembly\nWebsite: https://webassembly.org\nDescription: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.\nCategory: web, common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction wasm(hljs) {\n hljs.regex;\n const BLOCK_COMMENT = hljs.COMMENT(/\\(;/, /;\\)/);\n BLOCK_COMMENT.contains.push("self");\n const LINE_COMMENT = hljs.COMMENT(/;;/, /$/);\n\n const KWS = [\n "anyfunc",\n "block",\n "br",\n "br_if",\n "br_table",\n "call",\n "call_indirect",\n "data",\n "drop",\n "elem",\n "else",\n "end",\n "export",\n "func",\n "global.get",\n "global.set",\n "local.get",\n "local.set",\n "local.tee",\n "get_global",\n "get_local",\n "global",\n "if",\n "import",\n "local",\n "loop",\n "memory",\n "memory.grow",\n "memory.size",\n "module",\n "mut",\n "nop",\n "offset",\n "param",\n "result",\n "return",\n "select",\n "set_global",\n "set_local",\n "start",\n "table",\n "tee_local",\n "then",\n "type",\n "unreachable"\n ];\n\n const FUNCTION_REFERENCE = {\n begin: [\n /(?:func|call|call_indirect)/,\n /\\s+/,\n /\\$[^\\s)]+/\n ],\n className: {\n 1: "keyword",\n 3: "title.function"\n }\n };\n\n const ARGUMENT = {\n className: "variable",\n begin: /\\$[\\w_]+/\n };\n\n const PARENS = {\n match: /(\\((?!;)|\\))+/,\n className: "punctuation",\n relevance: 0\n };\n\n const NUMBER = {\n className: "number",\n relevance: 0,\n // borrowed from Prism, TODO: split out into variants\n match: /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/\n };\n\n const TYPE = {\n // look-ahead prevents us from gobbling up opcodes\n match: /(i32|i64|f32|f64)(?!\\.)/,\n className: "type"\n };\n\n const MATH_OPERATIONS = {\n className: "keyword",\n // borrowed from Prism, TODO: split out into variants\n match: /\\b(f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))\\b/\n };\n\n const OFFSET_ALIGN = {\n match: [\n /(?:offset|align)/,\n /\\s*/,\n /=/\n ],\n className: {\n 1: "keyword",\n 3: "operator"\n }\n };\n\n return {\n name: \'WebAssembly\',\n keywords: {\n $pattern: /[\\w.]+/,\n keyword: KWS\n },\n contains: [\n LINE_COMMENT,\n BLOCK_COMMENT,\n OFFSET_ALIGN,\n ARGUMENT,\n PARENS,\n FUNCTION_REFERENCE,\n hljs.QUOTE_STRING_MODE,\n TYPE,\n MATH_OPERATIONS,\n NUMBER\n ]\n };\n}\n\nmodule.exports = wasm;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM2MS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsS0FBSztBQUM5QztBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy93YXNtLmpzP2IyMzAiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBXZWJBc3NlbWJseVxuV2Vic2l0ZTogaHR0cHM6Ly93ZWJhc3NlbWJseS5vcmdcbkRlc2NyaXB0aW9uOiAgV2FzbSBpcyBkZXNpZ25lZCBhcyBhIHBvcnRhYmxlIGNvbXBpbGF0aW9uIHRhcmdldCBmb3IgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBlbmFibGluZyBkZXBsb3ltZW50IG9uIHRoZSB3ZWIgZm9yIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy5cbkNhdGVnb3J5OiB3ZWIsIGNvbW1vblxuQXVkaXQ6IDIwMjBcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiB3YXNtKGhsanMpIHtcbiAgaGxqcy5yZWdleDtcbiAgY29uc3QgQkxPQ0tfQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgvXFwoOy8sIC87XFwpLyk7XG4gIEJMT0NLX0NPTU1FTlQuY29udGFpbnMucHVzaChcInNlbGZcIik7XG4gIGNvbnN0IExJTkVfQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgvOzsvLCAvJC8pO1xuXG4gIGNvbnN0IEtXUyA9IFtcbiAgICBcImFueWZ1bmNcIixcbiAgICBcImJsb2NrXCIsXG4gICAgXCJiclwiLFxuICAgIFwiYnJfaWZcIixcbiAgICBcImJyX3RhYmxlXCIsXG4gICAgXCJjYWxsXCIsXG4gICAgXCJjYWxsX2luZGlyZWN0XCIsXG4gICAgXCJkYXRhXCIsXG4gICAgXCJkcm9wXCIsXG4gICAgXCJlbGVtXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJlbmRcIixcbiAgICBcImV4cG9ydFwiLFxuICAgIFwiZnVuY1wiLFxuICAgIFwiZ2xvYmFsLmdldFwiLFxuICAgIFwiZ2xvYmFsLnNldFwiLFxuICAgIFwibG9jYWwuZ2V0XCIsXG4gICAgXCJsb2NhbC5zZXRcIixcbiAgICBcImxvY2FsLnRlZVwiLFxuICAgIFwiZ2V0X2dsb2JhbFwiLFxuICAgIFwiZ2V0X2xvY2FsXCIsXG4gICAgXCJnbG9iYWxcIixcbiAgICBcImlmXCIsXG4gICAgXCJpbXBvcnRcIixcbiAgICBcImxvY2FsXCIsXG4gICAgXCJsb29wXCIsXG4gICAgXCJtZW1vcnlcIixcbiAgICBcIm1lbW9yeS5ncm93XCIsXG4gICAgXCJtZW1vcnkuc2l6ZVwiLFxuICAgIFwibW9kdWxlXCIsXG4gICAgXCJtdXRcIixcbiAgICBcIm5vcFwiLFxuICAgIFwib2Zmc2V0XCIsXG4gICAgXCJwYXJhbVwiLFxuICAgIFwicmVzdWx0XCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcInNlbGVjdFwiLFxuICAgIFwic2V0X2dsb2JhbFwiLFxuICAgIFwic2V0X2xvY2FsXCIsXG4gICAgXCJzdGFydFwiLFxuICAgIFwidGFibGVcIixcbiAgICBcInRlZV9sb2NhbFwiLFxuICAgIFwidGhlblwiLFxuICAgIFwidHlwZVwiLFxuICAgIFwidW5yZWFjaGFibGVcIlxuICBdO1xuXG4gIGNvbnN0IEZVTkNUSU9OX1JFRkVSRU5DRSA9IHtcbiAgICBiZWdpbjogW1xuICAgICAgLyg/OmZ1bmN8Y2FsbHxjYWxsX2luZGlyZWN0KS8sXG4gICAgICAvXFxzKy8sXG4gICAgICAvXFwkW15cXHMpXSsvXG4gICAgXSxcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IEFSR1VNRU5UID0ge1xuICAgIGNsYXNzTmFtZTogXCJ2YXJpYWJsZVwiLFxuICAgIGJlZ2luOiAvXFwkW1xcd19dKy9cbiAgfTtcblxuICBjb25zdCBQQVJFTlMgPSB7XG4gICAgbWF0Y2g6IC8oXFwoKD8hOyl8XFwpKSsvLFxuICAgIGNsYXNzTmFtZTogXCJwdW5jdHVhdGlvblwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6IFwibnVtYmVyXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIC8vIGJvcnJvd2VkIGZyb20gUHJpc20sIFRPRE86IHNwbGl0IG91dCBpbnRvIHZhcmlhbnRzXG4gICAgbWF0Y2g6IC9bKy1dP1xcYig/OlxcZCg/Ol8/XFxkKSooPzpcXC5cXGQoPzpfP1xcZCkqKT8oPzpbZUVdWystXT9cXGQoPzpfP1xcZCkqKT98MHhbXFxkYS1mQS1GXSg/Ol8/W1xcZGEtZkEtRl0pKig/OlxcLltcXGRhLWZBLUZdKD86Xz9bXFxkYS1mQS1EXSkqKT8oPzpbcFBdWystXT9cXGQoPzpfP1xcZCkqKT8pXFxifFxcYmluZlxcYnxcXGJuYW4oPzo6MHhbXFxkYS1mQS1GXSg/Ol8/W1xcZGEtZkEtRF0pKik/XFxiL1xuICB9O1xuXG4gIGNvbnN0IFRZUEUgPSB7XG4gICAgLy8gbG9vay1haGVhZCBwcmV2ZW50cyB1cyBmcm9tIGdvYmJsaW5nIHVwIG9wY29kZXNcbiAgICBtYXRjaDogLyhpMzJ8aTY0fGYzMnxmNjQpKD8hXFwuKS8sXG4gICAgY2xhc3NOYW1lOiBcInR5cGVcIlxuICB9O1xuXG4gIGNvbnN0IE1BVEhfT1BFUkFUSU9OUyA9IHtcbiAgICBjbGFzc05hbWU6IFwia2V5d29yZFwiLFxuICAgIC8vIGJvcnJvd2VkIGZyb20gUHJpc20sIFRPRE86IHNwbGl0IG91dCBpbnRvIHZhcmlhbnRzXG4gICAgbWF0Y2g6IC9cXGIoZjMyfGY2NHxpMzJ8aTY0KSg/OlxcLig/OmFic3xhZGR8YW5kfGNlaWx8Y2x6fGNvbnN0fGNvbnZlcnRfW3N1XVxcL2koPzozMnw2NCl8Y29weXNpZ258Y3R6fGRlbW90ZVxcL2Y2NHxkaXYoPzpfW3N1XSk/fGVxej98ZXh0ZW5kX1tzdV1cXC9pMzJ8Zmxvb3J8Z2UoPzpfW3N1XSk/fGd0KD86X1tzdV0pP3xsZSg/Ol9bc3VdKT98bG9hZCg/Oig/Ojh8MTZ8MzIpX1tzdV0pP3xsdCg/Ol9bc3VdKT98bWF4fG1pbnxtdWx8bmVhcmVzdHxuZWc/fG9yfHBvcGNudHxwcm9tb3RlXFwvZjMyfHJlaW50ZXJwcmV0XFwvW2ZpXSg/OjMyfDY0KXxyZW1fW3N1XXxyb3RbbHJdfHNobHxzaHJfW3N1XXxzdG9yZSg/Ojh8MTZ8MzIpP3xzcXJ0fHN1Ynx0cnVuYyg/Ol9bc3VdXFwvZig/OjMyfDY0KSk/fHdyYXBcXC9pNjR8eG9yKSlcXGIvXG4gIH07XG5cbiAgY29uc3QgT0ZGU0VUX0FMSUdOID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvKD86b2Zmc2V0fGFsaWduKS8sXG4gICAgICAvXFxzKi8sXG4gICAgICAvPS9cbiAgICBdLFxuICAgIGNsYXNzTmFtZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcIm9wZXJhdG9yXCJcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnV2ViQXNzZW1ibHknLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAkcGF0dGVybjogL1tcXHcuXSsvLFxuICAgICAga2V5d29yZDogS1dTXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgTElORV9DT01NRU5ULFxuICAgICAgQkxPQ0tfQ09NTUVOVCxcbiAgICAgIE9GRlNFVF9BTElHTixcbiAgICAgIEFSR1VNRU5ULFxuICAgICAgUEFSRU5TLFxuICAgICAgRlVOQ1RJT05fUkVGRVJFTkNFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIFRZUEUsXG4gICAgICBNQVRIX09QRVJBVElPTlMsXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2FzbTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1361\n')},1366:module=>{eval("/*\nLanguage: Elixir\nAuthor: Josh Adams \nDescription: language definition for Elixir source code files (.ex and .exs). Based on ruby language support.\nCategory: functional\nWebsite: https://elixir-lang.org\n*/\n\n/** @type LanguageFn */\nfunction elixir(hljs) {\n const regex = hljs.regex;\n const ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(!|\\\\?)?';\n const ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n const KEYWORDS = [\n \"after\",\n \"alias\",\n \"and\",\n \"case\",\n \"catch\",\n \"cond\",\n \"defstruct\",\n \"defguard\",\n \"do\",\n \"else\",\n \"end\",\n \"fn\",\n \"for\",\n \"if\",\n \"import\",\n \"in\",\n \"not\",\n \"or\",\n \"quote\",\n \"raise\",\n \"receive\",\n \"require\",\n \"reraise\",\n \"rescue\",\n \"try\",\n \"unless\",\n \"unquote\",\n \"unquote_splicing\",\n \"use\",\n \"when\",\n \"with|0\"\n ];\n const LITERALS = [\n \"false\",\n \"nil\",\n \"true\"\n ];\n const KWS = {\n $pattern: ELIXIR_IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS\n };\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: KWS\n };\n const NUMBER = {\n className: 'number',\n begin: '(\\\\b0o[0-7_]+)|(\\\\b0b[01_]+)|(\\\\b0x[0-9a-fA-F_]+)|(-?\\\\b[0-9][0-9_]*(\\\\.[0-9_]+([eE][-+]?[0-9]+)?)?)',\n relevance: 0\n };\n // TODO: could be tightened\n // https://elixir-lang.readthedocs.io/en/latest/intro/18.html\n // but you also need to include closing delemeters in the escape list per\n // individual sigil mode from what I can tell,\n // ie: \\} might or might not be an escape depending on the sigil used\n const ESCAPES_RE = /\\\\[\\s\\S]/;\n // const ESCAPES_RE = /\\\\[\"'\\\\abdefnrstv0]/;\n const BACKSLASH_ESCAPE = {\n match: ESCAPES_RE,\n scope: \"char.escape\",\n relevance: 0\n };\n const SIGIL_DELIMITERS = '[/|([{<\"\\']';\n const SIGIL_DELIMITER_MODES = [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\\//,\n end: /\\//\n },\n {\n begin: /\\|/,\n end: /\\|/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n begin: /\\[/,\n end: /\\]/\n },\n {\n begin: /\\{/,\n end: /\\}/\n },\n {\n begin: //\n }\n ];\n const escapeSigilEnd = (end) => {\n return {\n scope: \"char.escape\",\n begin: regex.concat(/\\\\/, end),\n relevance: 0\n };\n };\n const LOWERCASE_SIGIL = {\n className: 'string',\n begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')',\n contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x,\n { contains: [\n escapeSigilEnd(x.end),\n BACKSLASH_ESCAPE,\n SUBST\n ] }\n ))\n };\n\n const UPCASE_SIGIL = {\n className: 'string',\n begin: '~[A-Z]' + '(?=' + SIGIL_DELIMITERS + ')',\n contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x,\n { contains: [ escapeSigilEnd(x.end) ] }\n ))\n };\n\n const REGEX_SIGIL = {\n className: 'regex',\n variants: [\n {\n begin: '~r' + '(?=' + SIGIL_DELIMITERS + ')',\n contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x,\n {\n end: regex.concat(x.end, /[uismxfU]{0,7}/),\n contains: [\n escapeSigilEnd(x.end),\n BACKSLASH_ESCAPE,\n SUBST\n ]\n }\n ))\n },\n {\n begin: '~R' + '(?=' + SIGIL_DELIMITERS + ')',\n contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x,\n {\n end: regex.concat(x.end, /[uismxfU]{0,7}/),\n contains: [ escapeSigilEnd(x.end) ]\n })\n )\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /\"\"\"/,\n end: /\"\"\"/\n },\n {\n begin: /'''/,\n end: /'''/\n },\n {\n begin: /~S\"\"\"/,\n end: /\"\"\"/,\n contains: [] // override default\n },\n {\n begin: /~S\"/,\n end: /\"/,\n contains: [] // override default\n },\n {\n begin: /~S'''/,\n end: /'''/,\n contains: [] // override default\n },\n {\n begin: /~S'/,\n end: /'/,\n contains: [] // override default\n },\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n }\n ]\n };\n const FUNCTION = {\n className: 'function',\n beginKeywords: 'def defp defmacro defmacrop',\n end: /\\B\\b/, // the mode is ended by the title\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: ELIXIR_IDENT_RE,\n endsParent: true\n })\n ]\n };\n const CLASS = hljs.inherit(FUNCTION, {\n className: 'class',\n beginKeywords: 'defimpl defmodule defprotocol defrecord',\n end: /\\bdo\\b|$|;/\n });\n const ELIXIR_DEFAULT_CONTAINS = [\n STRING,\n REGEX_SIGIL,\n UPCASE_SIGIL,\n LOWERCASE_SIGIL,\n hljs.HASH_COMMENT_MODE,\n CLASS,\n FUNCTION,\n { begin: '::' },\n {\n className: 'symbol',\n begin: ':(?![\\\\s:])',\n contains: [\n STRING,\n { begin: ELIXIR_METHOD_RE }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ELIXIR_IDENT_RE + ':(?!:)',\n relevance: 0\n },\n { // Usage of a module, struct, etc.\n className: 'title.class',\n begin: /(\\b[A-Z][a-zA-Z0-9_]+)/,\n relevance: 0\n },\n NUMBER,\n {\n className: 'variable',\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))'\n }\n // -> has been removed, capnproto always uses this grammar construct\n ];\n SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\n\n return {\n name: 'Elixir',\n aliases: [\n 'ex',\n 'exs'\n ],\n keywords: KWS,\n contains: ELIXIR_DEFAULT_CONTAINS\n };\n}\n\nmodule.exports = elixir;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM2Ni5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxnQkFBZ0I7QUFDaEIsY0FBYztBQUNkLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxJQUFJO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELElBQUk7QUFDcEQ7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGFBQWE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWxpeGlyLmpzPzZkYTQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBFbGl4aXJcbkF1dGhvcjogSm9zaCBBZGFtcyA8am9zaEBpc290b3BlMTEuY29tPlxuRGVzY3JpcHRpb246IGxhbmd1YWdlIGRlZmluaXRpb24gZm9yIEVsaXhpciBzb3VyY2UgY29kZSBmaWxlcyAoLmV4IGFuZCAuZXhzKS4gIEJhc2VkIG9uIHJ1YnkgbGFuZ3VhZ2Ugc3VwcG9ydC5cbkNhdGVnb3J5OiBmdW5jdGlvbmFsXG5XZWJzaXRlOiBodHRwczovL2VsaXhpci1sYW5nLm9yZ1xuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGVsaXhpcihobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgRUxJWElSX0lERU5UX1JFID0gJ1thLXpBLVpfXVthLXpBLVowLTlfLl0qKCF8XFxcXD8pPyc7XG4gIGNvbnN0IEVMSVhJUl9NRVRIT0RfUkUgPSAnW2EtekEtWl9dXFxcXHcqWyE/PV0/fFstK35dQHw8PHw+Pnw9fnw9PT0/fDw9PnxbPD5dPT98XFxcXCpcXFxcKnxbLS8rJV4mKn5gfF18XFxcXFtcXFxcXT0/JztcbiAgY29uc3QgS0VZV09SRFMgPSBbXG4gICAgXCJhZnRlclwiLFxuICAgIFwiYWxpYXNcIixcbiAgICBcImFuZFwiLFxuICAgIFwiY2FzZVwiLFxuICAgIFwiY2F0Y2hcIixcbiAgICBcImNvbmRcIixcbiAgICBcImRlZnN0cnVjdFwiLFxuICAgIFwiZGVmZ3VhcmRcIixcbiAgICBcImRvXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJlbmRcIixcbiAgICBcImZuXCIsXG4gICAgXCJmb3JcIixcbiAgICBcImlmXCIsXG4gICAgXCJpbXBvcnRcIixcbiAgICBcImluXCIsXG4gICAgXCJub3RcIixcbiAgICBcIm9yXCIsXG4gICAgXCJxdW90ZVwiLFxuICAgIFwicmFpc2VcIixcbiAgICBcInJlY2VpdmVcIixcbiAgICBcInJlcXVpcmVcIixcbiAgICBcInJlcmFpc2VcIixcbiAgICBcInJlc2N1ZVwiLFxuICAgIFwidHJ5XCIsXG4gICAgXCJ1bmxlc3NcIixcbiAgICBcInVucXVvdGVcIixcbiAgICBcInVucXVvdGVfc3BsaWNpbmdcIixcbiAgICBcInVzZVwiLFxuICAgIFwid2hlblwiLFxuICAgIFwid2l0aHwwXCJcbiAgXTtcbiAgY29uc3QgTElURVJBTFMgPSBbXG4gICAgXCJmYWxzZVwiLFxuICAgIFwibmlsXCIsXG4gICAgXCJ0cnVlXCJcbiAgXTtcbiAgY29uc3QgS1dTID0ge1xuICAgICRwYXR0ZXJuOiBFTElYSVJfSURFTlRfUkUsXG4gICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgbGl0ZXJhbDogTElURVJBTFNcbiAgfTtcbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBrZXl3b3JkczogS1dTXG4gIH07XG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAnKFxcXFxiMG9bMC03X10rKXwoXFxcXGIwYlswMV9dKyl8KFxcXFxiMHhbMC05YS1mQS1GX10rKXwoLT9cXFxcYlswLTldWzAtOV9dKihcXFxcLlswLTlfXSsoW2VFXVstK10/WzAtOV0rKT8pPyknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICAvLyBUT0RPOiBjb3VsZCBiZSB0aWdodGVuZWRcbiAgLy8gaHR0cHM6Ly9lbGl4aXItbGFuZy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvaW50cm8vMTguaHRtbFxuICAvLyBidXQgeW91IGFsc28gbmVlZCB0byBpbmNsdWRlIGNsb3NpbmcgZGVsZW1ldGVycyBpbiB0aGUgZXNjYXBlIGxpc3QgcGVyXG4gIC8vIGluZGl2aWR1YWwgc2lnaWwgbW9kZSBmcm9tIHdoYXQgSSBjYW4gdGVsbCxcbiAgLy8gaWU6IFxcfSBtaWdodCBvciBtaWdodCBub3QgYmUgYW4gZXNjYXBlIGRlcGVuZGluZyBvbiB0aGUgc2lnaWwgdXNlZFxuICBjb25zdCBFU0NBUEVTX1JFID0gL1xcXFxbXFxzXFxTXS87XG4gIC8vIGNvbnN0IEVTQ0FQRVNfUkUgPSAvXFxcXFtcIidcXFxcYWJkZWZucnN0djBdLztcbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRSA9IHtcbiAgICBtYXRjaDogRVNDQVBFU19SRSxcbiAgICBzY29wZTogXCJjaGFyLmVzY2FwZVwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBTSUdJTF9ERUxJTUlURVJTID0gJ1svfChbezxcIlxcJ10nO1xuICBjb25zdCBTSUdJTF9ERUxJTUlURVJfTU9ERVMgPSBbXG4gICAge1xuICAgICAgYmVnaW46IC9cIi8sXG4gICAgICBlbmQ6IC9cIi9cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvJy8sXG4gICAgICBlbmQ6IC8nL1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXC8vLFxuICAgICAgZW5kOiAvXFwvL1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXHwvLFxuICAgICAgZW5kOiAvXFx8L1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgZW5kOiAvXFwpL1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXFsvLFxuICAgICAgZW5kOiAvXFxdL1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXHsvLFxuICAgICAgZW5kOiAvXFx9L1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC88LyxcbiAgICAgIGVuZDogLz4vXG4gICAgfVxuICBdO1xuICBjb25zdCBlc2NhcGVTaWdpbEVuZCA9IChlbmQpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NvcGU6IFwiY2hhci5lc2NhcGVcIixcbiAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoL1xcXFwvLCBlbmQpLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfTtcbiAgfTtcbiAgY29uc3QgTE9XRVJDQVNFX1NJR0lMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICd+W2Etel0nICsgJyg/PScgKyBTSUdJTF9ERUxJTUlURVJTICsgJyknLFxuICAgIGNvbnRhaW5zOiBTSUdJTF9ERUxJTUlURVJfTU9ERVMubWFwKHggPT4gaGxqcy5pbmhlcml0KHgsXG4gICAgICB7IGNvbnRhaW5zOiBbXG4gICAgICAgIGVzY2FwZVNpZ2lsRW5kKHguZW5kKSxcbiAgICAgICAgQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0gfVxuICAgICkpXG4gIH07XG5cbiAgY29uc3QgVVBDQVNFX1NJR0lMID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICd+W0EtWl0nICsgJyg/PScgKyBTSUdJTF9ERUxJTUlURVJTICsgJyknLFxuICAgIGNvbnRhaW5zOiBTSUdJTF9ERUxJTUlURVJfTU9ERVMubWFwKHggPT4gaGxqcy5pbmhlcml0KHgsXG4gICAgICB7IGNvbnRhaW5zOiBbIGVzY2FwZVNpZ2lsRW5kKHguZW5kKSBdIH1cbiAgICApKVxuICB9O1xuXG4gIGNvbnN0IFJFR0VYX1NJR0lMID0ge1xuICAgIGNsYXNzTmFtZTogJ3JlZ2V4JyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ35yJyArICcoPz0nICsgU0lHSUxfREVMSU1JVEVSUyArICcpJyxcbiAgICAgICAgY29udGFpbnM6IFNJR0lMX0RFTElNSVRFUl9NT0RFUy5tYXAoeCA9PiBobGpzLmluaGVyaXQoeCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmQ6IHJlZ2V4LmNvbmNhdCh4LmVuZCwgL1t1aXNteGZVXXswLDd9LyksXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBlc2NhcGVTaWdpbEVuZCh4LmVuZCksXG4gICAgICAgICAgICAgIEJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgICAgIFNVQlNUXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICApKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd+UicgKyAnKD89JyArIFNJR0lMX0RFTElNSVRFUlMgKyAnKScsXG4gICAgICAgIGNvbnRhaW5zOiBTSUdJTF9ERUxJTUlURVJfTU9ERVMubWFwKHggPT4gaGxqcy5pbmhlcml0KHgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5kOiByZWdleC5jb25jYXQoeC5lbmQsIC9bdWlzbXhmVV17MCw3fS8pLFxuICAgICAgICAgICAgY29udGFpbnM6IFsgZXNjYXBlU2lnaWxFbmQoeC5lbmQpIF1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVFxuICAgIF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cIlwiXCIvLFxuICAgICAgICBlbmQ6IC9cIlwiXCIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLycnJy8sXG4gICAgICAgIGVuZDogLycnJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvflNcIlwiXCIvLFxuICAgICAgICBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjb250YWluczogW10gLy8gb3ZlcnJpZGUgZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9+U1wiLyxcbiAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW10gLy8gb3ZlcnJpZGUgZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9+UycnJy8sXG4gICAgICAgIGVuZDogLycnJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXSAvLyBvdmVycmlkZSBkZWZhdWx0XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL35TJy8sXG4gICAgICAgIGVuZDogLycvLFxuICAgICAgICBjb250YWluczogW10gLy8gb3ZlcnJpZGUgZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICBlbmQ6IC9cIi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnZGVmIGRlZnAgZGVmbWFjcm8gZGVmbWFjcm9wJyxcbiAgICBlbmQ6IC9cXEJcXGIvLCAvLyB0aGUgbW9kZSBpcyBlbmRlZCBieSB0aGUgdGl0bGVcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwge1xuICAgICAgICBiZWdpbjogRUxJWElSX0lERU5UX1JFLFxuICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICB9KVxuICAgIF1cbiAgfTtcbiAgY29uc3QgQ0xBU1MgPSBobGpzLmluaGVyaXQoRlVOQ1RJT04sIHtcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZmltcGwgZGVmbW9kdWxlIGRlZnByb3RvY29sIGRlZnJlY29yZCcsXG4gICAgZW5kOiAvXFxiZG9cXGJ8JHw7L1xuICB9KTtcbiAgY29uc3QgRUxJWElSX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgU1RSSU5HLFxuICAgIFJFR0VYX1NJR0lMLFxuICAgIFVQQ0FTRV9TSUdJTCxcbiAgICBMT1dFUkNBU0VfU0lHSUwsXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICBDTEFTUyxcbiAgICBGVU5DVElPTixcbiAgICB7IGJlZ2luOiAnOjonIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiAnOig/IVtcXFxcczpdKScsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBTVFJJTkcsXG4gICAgICAgIHsgYmVnaW46IEVMSVhJUl9NRVRIT0RfUkUgfVxuICAgICAgXSxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgIGJlZ2luOiBFTElYSVJfSURFTlRfUkUgKyAnOig/ITopJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgeyAvLyBVc2FnZSBvZiBhIG1vZHVsZSwgc3RydWN0LCBldGMuXG4gICAgICBjbGFzc05hbWU6ICd0aXRsZS5jbGFzcycsXG4gICAgICBiZWdpbjogLyhcXGJbQS1aXVthLXpBLVowLTlfXSspLyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgTlVNQkVSLFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgIGJlZ2luOiAnKFxcXFwkXFxcXFcpfCgoXFxcXCR8QEA/KShcXFxcdyspKSdcbiAgICB9XG4gICAgLy8gLT4gaGFzIGJlZW4gcmVtb3ZlZCwgY2FwbnByb3RvIGFsd2F5cyB1c2VzIHRoaXMgZ3JhbW1hciBjb25zdHJ1Y3RcbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBFTElYSVJfREVGQVVMVF9DT05UQUlOUztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdFbGl4aXInLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdleCcsXG4gICAgICAnZXhzJ1xuICAgIF0sXG4gICAga2V5d29yZHM6IEtXUyxcbiAgICBjb250YWluczogRUxJWElSX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlbGl4aXI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1366\n")},1377:module=>{eval("/*\nLanguage: Clojure\nDescription: Clojure syntax (based on lisp.js)\nAuthor: mfornos\nWebsite: https://clojure.org\nCategory: lisp\n*/\n\n/** @type LanguageFn */\nfunction clojure(hljs) {\n const SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&\\'';\n const SYMBOL_RE = '[#]?[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:$#]*';\n const globals = 'def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord';\n const keywords = {\n $pattern: SYMBOL_RE,\n built_in:\n // Clojure keywords\n globals + ' '\n + 'cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem '\n + 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? '\n + 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? '\n + 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? '\n + 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . '\n + 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last '\n + 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate '\n + 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext '\n + 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends '\n + 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler '\n + 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter '\n + 'monitor-exit macroexpand macroexpand-1 for dosync and or '\n + 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert '\n + 'peek pop doto proxy first rest cons cast coll last butlast '\n + 'sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import '\n + 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! '\n + 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger '\n + 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline '\n + 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking '\n + 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! '\n + 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! '\n + 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty '\n + 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list '\n + 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer '\n + 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate '\n + 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta '\n + 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'\n };\n\n const SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n const NUMBER = {\n scope: 'number',\n relevance: 0,\n variants: [\n { match: /[-+]?0[xX][0-9a-fA-F]+N?/ }, // hexadecimal // 0x2a\n { match: /[-+]?0[0-7]+N?/ }, // octal // 052\n { match: /[-+]?[1-9][0-9]?[rR][0-9a-zA-Z]+N?/ }, // variable radix from 2 to 36 // 2r101010, 8r52, 36r16\n { match: /[-+]?[0-9]+\\/[0-9]+N?/ }, // ratio // 1/2\n { match: /[-+]?[0-9]+((\\.[0-9]*([eE][+-]?[0-9]+)?M?)|([eE][+-]?[0-9]+M?|M))/ }, // float // 0.42 4.2E-1M 42E1 42M\n { match: /[-+]?([1-9][0-9]*|0)N?/ }, // int (don't match leading 0) // 42 42N\n ]\n };\n const CHARACTER = {\n scope: 'character',\n variants: [\n { match: /\\\\o[0-3]?[0-7]{1,2}/ }, // Unicode Octal 0 - 377\n { match: /\\\\u[0-9a-fA-F]{4}/ }, // Unicode Hex 0000 - FFFF\n { match: /\\\\(newline|space|tab|formfeed|backspace|return)/ }, // special characters\n {\n match: /\\\\\\S/,\n relevance: 0\n } // any non-whitespace char\n ]\n };\n const REGEX = {\n scope: 'regex',\n begin: /#\"/,\n end: /\"/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null });\n const COMMA = {\n scope: 'punctuation',\n match: /,/,\n relevance: 0\n };\n const COMMENT = hljs.COMMENT(\n ';',\n '$',\n { relevance: 0 }\n );\n const LITERAL = {\n className: 'literal',\n begin: /\\b(true|false|nil)\\b/\n };\n const COLLECTION = {\n begin: \"\\\\[|(#::?\" + SYMBOL_RE + \")?\\\\{\",\n end: '[\\\\]\\\\}]',\n relevance: 0\n };\n const KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)'\n };\n const BODY = {\n endsWithParent: true,\n relevance: 0\n };\n const NAME = {\n keywords: keywords,\n className: 'name',\n begin: SYMBOL_RE,\n relevance: 0,\n starts: BODY\n };\n const DEFAULT_CONTAINS = [\n COMMA,\n LIST,\n CHARACTER,\n REGEX,\n STRING,\n COMMENT,\n KEY,\n COLLECTION,\n NUMBER,\n LITERAL,\n SYMBOL\n ];\n\n const GLOBAL = {\n beginKeywords: globals,\n keywords: {\n $pattern: SYMBOL_RE,\n keyword: globals\n },\n end: '(\\\\[|#|\\\\d|\"|:|\\\\{|\\\\)|\\\\(|$)',\n contains: [\n {\n className: 'title',\n begin: SYMBOL_RE,\n relevance: 0,\n excludeEnd: true,\n // we can only have a single title\n endsParent: true\n }\n ].concat(DEFAULT_CONTAINS)\n };\n\n LIST.contains = [\n GLOBAL,\n NAME,\n BODY\n ];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n\n return {\n name: 'Clojure',\n aliases: [\n 'clj',\n 'edn'\n ],\n illegal: /\\S/,\n contains: [\n COMMA,\n LIST,\n CHARACTER,\n REGEX,\n STRING,\n COMMENT,\n KEY,\n COLLECTION,\n NUMBER,\n LITERAL\n ]\n };\n}\n\nmodule.exports = clojure;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM3Ny5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsbUNBQW1DO0FBQzNDLFFBQVEseUJBQXlCO0FBQ2pDLFFBQVEsNkNBQTZDO0FBQ3JELFFBQVEsZ0NBQWdDO0FBQ3hDLFFBQVEsNEVBQTRFO0FBQ3BGLFFBQVEsaUNBQWlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVCQUF1QixJQUFJLEdBQUc7QUFDdEMsUUFBUSx1QkFBdUIsRUFBRSxHQUFHO0FBQ3BDLFFBQVEsMERBQTBEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELGVBQWU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQyxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbG9qdXJlLmpzPzY2ZmUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBDbG9qdXJlXG5EZXNjcmlwdGlvbjogQ2xvanVyZSBzeW50YXggKGJhc2VkIG9uIGxpc3AuanMpXG5BdXRob3I6IG1mb3Jub3NcbldlYnNpdGU6IGh0dHBzOi8vY2xvanVyZS5vcmdcbkNhdGVnb3J5OiBsaXNwXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gY2xvanVyZShobGpzKSB7XG4gIGNvbnN0IFNZTUJPTFNUQVJUID0gJ2EtekEtWl9cXFxcLSEuPysqPTw+JlxcJyc7XG4gIGNvbnN0IFNZTUJPTF9SRSA9ICdbI10/WycgKyBTWU1CT0xTVEFSVCArICddWycgKyBTWU1CT0xTVEFSVCArICcwLTkvOzokI10qJztcbiAgY29uc3QgZ2xvYmFscyA9ICdkZWYgZGVmb25jZSBkZWZwcm90b2NvbCBkZWZzdHJ1Y3QgZGVmbXVsdGkgZGVmbWV0aG9kIGRlZm4tIGRlZm4gZGVmbWFjcm8gZGVmdHlwZSBkZWZyZWNvcmQnO1xuICBjb25zdCBrZXl3b3JkcyA9IHtcbiAgICAkcGF0dGVybjogU1lNQk9MX1JFLFxuICAgIGJ1aWx0X2luOlxuICAgICAgLy8gQ2xvanVyZSBrZXl3b3Jkc1xuICAgICAgZ2xvYmFscyArICcgJ1xuICAgICAgKyAnY29uZCBhcHBseSBpZi1ub3QgaWYtbGV0IGlmIG5vdCBub3Q9ID18MCA8fDAgPnwwIDw9fDAgPj18MCA9PXwwICt8MCAvfDAgKnwwIC18MCByZW0gJ1xuICAgICAgKyAncXVvdCBuZWc/IHBvcz8gZGVsYXk/IHN5bWJvbD8ga2V5d29yZD8gdHJ1ZT8gZmFsc2U/IGludGVnZXI/IGVtcHR5PyBjb2xsPyBsaXN0PyAnXG4gICAgICArICdzZXQ/IGlmbj8gZm4/IGFzc29jaWF0aXZlPyBzZXF1ZW50aWFsPyBzb3J0ZWQ/IGNvdW50ZWQ/IHJldmVyc2libGU/IG51bWJlcj8gZGVjaW1hbD8gJ1xuICAgICAgKyAnY2xhc3M/IGRpc3RpbmN0PyBpc2E/IGZsb2F0PyByYXRpb25hbD8gcmVkdWNlZD8gcmF0aW8/IG9kZD8gZXZlbj8gY2hhcj8gc2VxPyB2ZWN0b3I/ICdcbiAgICAgICsgJ3N0cmluZz8gbWFwPyBuaWw/IGNvbnRhaW5zPyB6ZXJvPyBpbnN0YW5jZT8gbm90LWV2ZXJ5PyBub3QtYW55PyBsaWJzcGVjPyAtPiAtPj4gLi4gLiAnXG4gICAgICArICdpbmMgY29tcGFyZSBkbyBkb3RpbWVzIG1hcGNhdCB0YWtlIHJlbW92ZSB0YWtlLXdoaWxlIGRyb3AgbGV0Zm4gZHJvcC1sYXN0IHRha2UtbGFzdCAnXG4gICAgICArICdkcm9wLXdoaWxlIHdoaWxlIGludGVybiBjb25kcCBjYXNlIHJlZHVjZWQgY3ljbGUgc3BsaXQtYXQgc3BsaXQtd2l0aCByZXBlYXQgcmVwbGljYXRlICdcbiAgICAgICsgJ2l0ZXJhdGUgcmFuZ2UgbWVyZ2UgemlwbWFwIGRlY2xhcmUgbGluZS1zZXEgc29ydCBjb21wYXJhdG9yIHNvcnQtYnkgZG9ydW4gZG9hbGwgbnRobmV4dCAnXG4gICAgICArICdudGhyZXN0IHBhcnRpdGlvbiBldmFsIGRvc2VxIGF3YWl0IGF3YWl0LWZvciBsZXQgYWdlbnQgYXRvbSBzZW5kIHNlbmQtb2ZmIHJlbGVhc2UtcGVuZGluZy1zZW5kcyAnXG4gICAgICArICdhZGQtd2F0Y2ggbWFwdiBmaWx0ZXJ2IHJlbW92ZS13YXRjaCBhZ2VudC1lcnJvciByZXN0YXJ0LWFnZW50IHNldC1lcnJvci1oYW5kbGVyIGVycm9yLWhhbmRsZXIgJ1xuICAgICAgKyAnc2V0LWVycm9yLW1vZGUhIGVycm9yLW1vZGUgc2h1dGRvd24tYWdlbnRzIHF1b3RlIHZhciBmbiBsb29wIHJlY3VyIHRocm93IHRyeSBtb25pdG9yLWVudGVyICdcbiAgICAgICsgJ21vbml0b3ItZXhpdCBtYWNyb2V4cGFuZCBtYWNyb2V4cGFuZC0xIGZvciBkb3N5bmMgYW5kIG9yICdcbiAgICAgICsgJ3doZW4gd2hlbi1ub3Qgd2hlbi1sZXQgY29tcCBqdXh0IHBhcnRpYWwgc2VxdWVuY2UgbWVtb2l6ZSBjb25zdGFudGx5IGNvbXBsZW1lbnQgaWRlbnRpdHkgYXNzZXJ0ICdcbiAgICAgICsgJ3BlZWsgcG9wIGRvdG8gcHJveHkgZmlyc3QgcmVzdCBjb25zIGNhc3QgY29sbCBsYXN0IGJ1dGxhc3QgJ1xuICAgICAgKyAnc2lncyByZWlmeSBzZWNvbmQgZmZpcnN0IGZuZXh0IG5maXJzdCBubmV4dCBtZXRhIHdpdGgtbWV0YSBucyBpbi1ucyBjcmVhdGUtbnMgaW1wb3J0ICdcbiAgICAgICsgJ3JlZmVyIGtleXMgc2VsZWN0LWtleXMgdmFscyBrZXkgdmFsIHJzZXEgbmFtZSBuYW1lc3BhY2UgcHJvbWlzZSBpbnRvIHRyYW5zaWVudCBwZXJzaXN0ZW50ISBjb25qISAnXG4gICAgICArICdhc3NvYyEgZGlzc29jISBwb3AhIGRpc2ohIHVzZSBjbGFzcyB0eXBlIG51bSBmbG9hdCBkb3VibGUgc2hvcnQgYnl0ZSBib29sZWFuIGJpZ2ludCBiaWdpbnRlZ2VyICdcbiAgICAgICsgJ2JpZ2RlYyBwcmludC1tZXRob2QgcHJpbnQtZHVwIHRocm93LWlmIHByaW50ZiBmb3JtYXQgbG9hZCBjb21waWxlIGdldC1pbiB1cGRhdGUtaW4gcHIgcHItb24gbmV3bGluZSAnXG4gICAgICArICdmbHVzaCByZWFkIHNsdXJwIHJlYWQtbGluZSBzdWJ2ZWMgd2l0aC1vcGVuIG1lbWZuIHRpbWUgcmUtZmluZCByZS1ncm91cHMgcmFuZC1pbnQgcmFuZCBtb2QgbG9ja2luZyAnXG4gICAgICArICdhc3NlcnQtdmFsaWQtZmRlY2wgYWxpYXMgcmVzb2x2ZSByZWYgZGVyZWYgcmVmc2V0IHN3YXAhIHJlc2V0ISBzZXQtdmFsaWRhdG9yISBjb21wYXJlLWFuZC1zZXQhIGFsdGVyLW1ldGEhICdcbiAgICAgICsgJ3Jlc2V0LW1ldGEhIGNvbW11dGUgZ2V0LXZhbGlkYXRvciBhbHRlciByZWYtc2V0IHJlZi1oaXN0b3J5LWNvdW50IHJlZi1taW4taGlzdG9yeSByZWYtbWF4LWhpc3RvcnkgZW5zdXJlIHN5bmMgaW8hICdcbiAgICAgICsgJ25ldyBuZXh0IGNvbmogc2V0ISB0by1hcnJheSBmdXR1cmUgZnV0dXJlLWNhbGwgaW50by1hcnJheSBhc2V0IGdlbi1jbGFzcyByZWR1Y2UgbWFwIGZpbHRlciBmaW5kIGVtcHR5ICdcbiAgICAgICsgJ2hhc2gtbWFwIGhhc2gtc2V0IHNvcnRlZC1tYXAgc29ydGVkLW1hcC1ieSBzb3J0ZWQtc2V0IHNvcnRlZC1zZXQtYnkgdmVjIHZlY3RvciBzZXEgZmxhdHRlbiByZXZlcnNlIGFzc29jIGRpc3NvYyBsaXN0ICdcbiAgICAgICsgJ2Rpc2ogZ2V0IHVuaW9uIGRpZmZlcmVuY2UgaW50ZXJzZWN0aW9uIGV4dGVuZCBleHRlbmQtdHlwZSBleHRlbmQtcHJvdG9jb2wgaW50IG50aCBkZWxheSBjb3VudCBjb25jYXQgY2h1bmsgY2h1bmstYnVmZmVyICdcbiAgICAgICsgJ2NodW5rLWFwcGVuZCBjaHVuay1maXJzdCBjaHVuay1yZXN0IG1heCBtaW4gZGVjIHVuY2hlY2tlZC1pbmMtaW50IHVuY2hlY2tlZC1pbmMgdW5jaGVja2VkLWRlYy1pbmMgdW5jaGVja2VkLWRlYyB1bmNoZWNrZWQtbmVnYXRlICdcbiAgICAgICsgJ3VuY2hlY2tlZC1hZGQtaW50IHVuY2hlY2tlZC1hZGQgdW5jaGVja2VkLXN1YnRyYWN0LWludCB1bmNoZWNrZWQtc3VidHJhY3QgY2h1bmstbmV4dCBjaHVuay1jb25zIGNodW5rZWQtc2VxPyBwcm4gdmFyeS1tZXRhICdcbiAgICAgICsgJ2xhenktc2VxIHNwcmVhZCBsaXN0KiBzdHIgZmluZC1rZXl3b3JkIGtleXdvcmQgc3ltYm9sIGdlbnN5bSBmb3JjZSByYXRpb25hbGl6ZSdcbiAgfTtcblxuICBjb25zdCBTWU1CT0wgPSB7XG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgTlVNQkVSID0ge1xuICAgIHNjb3BlOiAnbnVtYmVyJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgbWF0Y2g6IC9bLStdPzBbeFhdWzAtOWEtZkEtRl0rTj8vIH0sIC8vIGhleGFkZWNpbWFsICAgICAgICAgICAgICAgICAvLyAweDJhXG4gICAgICB7IG1hdGNoOiAvWy0rXT8wWzAtN10rTj8vIH0sIC8vIG9jdGFsICAgICAgICAgICAgICAgICAgICAgICAvLyAwNTJcbiAgICAgIHsgbWF0Y2g6IC9bLStdP1sxLTldWzAtOV0/W3JSXVswLTlhLXpBLVpdK04/LyB9LCAvLyB2YXJpYWJsZSByYWRpeCBmcm9tIDIgdG8gMzYgLy8gMnIxMDEwMTAsIDhyNTIsIDM2cjE2XG4gICAgICB7IG1hdGNoOiAvWy0rXT9bMC05XStcXC9bMC05XStOPy8gfSwgLy8gcmF0aW8gICAgICAgICAgICAgICAgICAgICAgIC8vIDEvMlxuICAgICAgeyBtYXRjaDogL1stK10/WzAtOV0rKChcXC5bMC05XSooW2VFXVsrLV0/WzAtOV0rKT9NPyl8KFtlRV1bKy1dP1swLTldK00/fE0pKS8gfSwgLy8gZmxvYXQgICAgICAgIC8vIDAuNDIgNC4yRS0xTSA0MkUxIDQyTVxuICAgICAgeyBtYXRjaDogL1stK10/KFsxLTldWzAtOV0qfDApTj8vIH0sIC8vIGludCAoZG9uJ3QgbWF0Y2ggbGVhZGluZyAwKSAvLyA0MiA0Mk5cbiAgICBdXG4gIH07XG4gIGNvbnN0IENIQVJBQ1RFUiA9IHtcbiAgICBzY29wZTogJ2NoYXJhY3RlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgbWF0Y2g6IC9cXFxcb1swLTNdP1swLTddezEsMn0vIH0sIC8vIFVuaWNvZGUgT2N0YWwgMCAtIDM3N1xuICAgICAgeyBtYXRjaDogL1xcXFx1WzAtOWEtZkEtRl17NH0vIH0sIC8vIFVuaWNvZGUgSGV4IDAwMDAgLSBGRkZGXG4gICAgICB7IG1hdGNoOiAvXFxcXChuZXdsaW5lfHNwYWNlfHRhYnxmb3JtZmVlZHxiYWNrc3BhY2V8cmV0dXJuKS8gfSwgLy8gc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAvXFxcXFxcUy8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSAvLyBhbnkgbm9uLXdoaXRlc3BhY2UgY2hhclxuICAgIF1cbiAgfTtcbiAgY29uc3QgUkVHRVggPSB7XG4gICAgc2NvcGU6ICdyZWdleCcsXG4gICAgYmVnaW46IC8jXCIvLFxuICAgIGVuZDogL1wiLyxcbiAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICB9O1xuICBjb25zdCBTVFJJTkcgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgeyBpbGxlZ2FsOiBudWxsIH0pO1xuICBjb25zdCBDT01NQSA9IHtcbiAgICBzY29wZTogJ3B1bmN0dWF0aW9uJyxcbiAgICBtYXRjaDogLywvLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBDT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICc7JyxcbiAgICAnJCcsXG4gICAgeyByZWxldmFuY2U6IDAgfVxuICApO1xuICBjb25zdCBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAvXFxiKHRydWV8ZmFsc2V8bmlsKVxcYi9cbiAgfTtcbiAgY29uc3QgQ09MTEVDVElPTiA9IHtcbiAgICBiZWdpbjogXCJcXFxcW3woIzo6P1wiICsgU1lNQk9MX1JFICsgXCIpP1xcXFx7XCIsXG4gICAgZW5kOiAnW1xcXFxdXFxcXH1dJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgS0VZID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46ICdbOl17MSwyfScgKyBTWU1CT0xfUkVcbiAgfTtcbiAgY29uc3QgTElTVCA9IHtcbiAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICBlbmQ6ICdcXFxcKSdcbiAgfTtcbiAgY29uc3QgQk9EWSA9IHtcbiAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgTkFNRSA9IHtcbiAgICBrZXl3b3Jkczoga2V5d29yZHMsXG4gICAgY2xhc3NOYW1lOiAnbmFtZScsXG4gICAgYmVnaW46IFNZTUJPTF9SRSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgc3RhcnRzOiBCT0RZXG4gIH07XG4gIGNvbnN0IERFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgQ09NTUEsXG4gICAgTElTVCxcbiAgICBDSEFSQUNURVIsXG4gICAgUkVHRVgsXG4gICAgU1RSSU5HLFxuICAgIENPTU1FTlQsXG4gICAgS0VZLFxuICAgIENPTExFQ1RJT04sXG4gICAgTlVNQkVSLFxuICAgIExJVEVSQUwsXG4gICAgU1lNQk9MXG4gIF07XG5cbiAgY29uc3QgR0xPQkFMID0ge1xuICAgIGJlZ2luS2V5d29yZHM6IGdsb2JhbHMsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiBTWU1CT0xfUkUsXG4gICAgICBrZXl3b3JkOiBnbG9iYWxzXG4gICAgfSxcbiAgICBlbmQ6ICcoXFxcXFt8I3xcXFxcZHxcInw6fFxcXFx7fFxcXFwpfFxcXFwofCQpJyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiBTWU1CT0xfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgLy8gd2UgY2FuIG9ubHkgaGF2ZSBhIHNpbmdsZSB0aXRsZVxuICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICB9XG4gICAgXS5jb25jYXQoREVGQVVMVF9DT05UQUlOUylcbiAgfTtcblxuICBMSVNULmNvbnRhaW5zID0gW1xuICAgIEdMT0JBTCxcbiAgICBOQU1FLFxuICAgIEJPRFlcbiAgXTtcbiAgQk9EWS5jb250YWlucyA9IERFRkFVTFRfQ09OVEFJTlM7XG4gIENPTExFQ1RJT04uY29udGFpbnMgPSBERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0Nsb2p1cmUnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdjbGonLFxuICAgICAgJ2VkbidcbiAgICBdLFxuICAgIGlsbGVnYWw6IC9cXFMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NQSxcbiAgICAgIExJU1QsXG4gICAgICBDSEFSQUNURVIsXG4gICAgICBSRUdFWCxcbiAgICAgIFNUUklORyxcbiAgICAgIENPTU1FTlQsXG4gICAgICBLRVksXG4gICAgICBDT0xMRUNUSU9OLFxuICAgICAgTlVNQkVSLFxuICAgICAgTElURVJBTFxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9qdXJlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1377\n")},1400:module=>{eval('/*\nLanguage: SAS\nAuthor: Mauricio Caceres \nDescription: Syntax Highlighting for SAS\nCategory: scientific\n*/\n\n/** @type LanguageFn */\nfunction sas(hljs) {\n const regex = hljs.regex;\n // Data step and PROC SQL statements\n const SAS_KEYWORDS = [\n "do",\n "if",\n "then",\n "else",\n "end",\n "until",\n "while",\n "abort",\n "array",\n "attrib",\n "by",\n "call",\n "cards",\n "cards4",\n "catname",\n "continue",\n "datalines",\n "datalines4",\n "delete",\n "delim",\n "delimiter",\n "display",\n "dm",\n "drop",\n "endsas",\n "error",\n "file",\n "filename",\n "footnote",\n "format",\n "goto",\n "in",\n "infile",\n "informat",\n "input",\n "keep",\n "label",\n "leave",\n "length",\n "libname",\n "link",\n "list",\n "lostcard",\n "merge",\n "missing",\n "modify",\n "options",\n "output",\n "out",\n "page",\n "put",\n "redirect",\n "remove",\n "rename",\n "replace",\n "retain",\n "return",\n "select",\n "set",\n "skip",\n "startsas",\n "stop",\n "title",\n "update",\n "waitsas",\n "where",\n "window",\n "x|0",\n "systask",\n "add",\n "and",\n "alter",\n "as",\n "cascade",\n "check",\n "create",\n "delete",\n "describe",\n "distinct",\n "drop",\n "foreign",\n "from",\n "group",\n "having",\n "index",\n "insert",\n "into",\n "in",\n "key",\n "like",\n "message",\n "modify",\n "msgtype",\n "not",\n "null",\n "on",\n "or",\n "order",\n "primary",\n "references",\n "reset",\n "restrict",\n "select",\n "set",\n "table",\n "unique",\n "update",\n "validate",\n "view",\n "where"\n ];\n\n // Built-in SAS functions\n const FUNCTIONS = [\n "abs",\n "addr",\n "airy",\n "arcos",\n "arsin",\n "atan",\n "attrc",\n "attrn",\n "band",\n "betainv",\n "blshift",\n "bnot",\n "bor",\n "brshift",\n "bxor",\n "byte",\n "cdf",\n "ceil",\n "cexist",\n "cinv",\n "close",\n "cnonct",\n "collate",\n "compbl",\n "compound",\n "compress",\n "cos",\n "cosh",\n "css",\n "curobs",\n "cv",\n "daccdb",\n "daccdbsl",\n "daccsl",\n "daccsyd",\n "dacctab",\n "dairy",\n "date",\n "datejul",\n "datepart",\n "datetime",\n "day",\n "dclose",\n "depdb",\n "depdbsl",\n "depdbsl",\n "depsl",\n "depsl",\n "depsyd",\n "depsyd",\n "deptab",\n "deptab",\n "dequote",\n "dhms",\n "dif",\n "digamma",\n "dim",\n "dinfo",\n "dnum",\n "dopen",\n "doptname",\n "doptnum",\n "dread",\n "dropnote",\n "dsname",\n "erf",\n "erfc",\n "exist",\n "exp",\n "fappend",\n "fclose",\n "fcol",\n "fdelete",\n "fetch",\n "fetchobs",\n "fexist",\n "fget",\n "fileexist",\n "filename",\n "fileref",\n "finfo",\n "finv",\n "fipname",\n "fipnamel",\n "fipstate",\n "floor",\n "fnonct",\n "fnote",\n "fopen",\n "foptname",\n "foptnum",\n "fpoint",\n "fpos",\n "fput",\n "fread",\n "frewind",\n "frlen",\n "fsep",\n "fuzz",\n "fwrite",\n "gaminv",\n "gamma",\n "getoption",\n "getvarc",\n "getvarn",\n "hbound",\n "hms",\n "hosthelp",\n "hour",\n "ibessel",\n "index",\n "indexc",\n "indexw",\n "input",\n "inputc",\n "inputn",\n "int",\n "intck",\n "intnx",\n "intrr",\n "irr",\n "jbessel",\n "juldate",\n "kurtosis",\n "lag",\n "lbound",\n "left",\n "length",\n "lgamma",\n "libname",\n "libref",\n "log",\n "log10",\n "log2",\n "logpdf",\n "logpmf",\n "logsdf",\n "lowcase",\n "max",\n "mdy",\n "mean",\n "min",\n "minute",\n "mod",\n "month",\n "mopen",\n "mort",\n "n",\n "netpv",\n "nmiss",\n "normal",\n "note",\n "npv",\n "open",\n "ordinal",\n "pathname",\n "pdf",\n "peek",\n "peekc",\n "pmf",\n "point",\n "poisson",\n "poke",\n "probbeta",\n "probbnml",\n "probchi",\n "probf",\n "probgam",\n "probhypr",\n "probit",\n "probnegb",\n "probnorm",\n "probt",\n "put",\n "putc",\n "putn",\n "qtr",\n "quote",\n "ranbin",\n "rancau",\n "ranexp",\n "rangam",\n "range",\n "rank",\n "rannor",\n "ranpoi",\n "rantbl",\n "rantri",\n "ranuni",\n "repeat",\n "resolve",\n "reverse",\n "rewind",\n "right",\n "round",\n "saving",\n "scan",\n "sdf",\n "second",\n "sign",\n "sin",\n "sinh",\n "skewness",\n "soundex",\n "spedis",\n "sqrt",\n "std",\n "stderr",\n "stfips",\n "stname",\n "stnamel",\n "substr",\n "sum",\n "symget",\n "sysget",\n "sysmsg",\n "sysprod",\n "sysrc",\n "system",\n "tan",\n "tanh",\n "time",\n "timepart",\n "tinv",\n "tnonct",\n "today",\n "translate",\n "tranwrd",\n "trigamma",\n "trim",\n "trimn",\n "trunc",\n "uniform",\n "upcase",\n "uss",\n "var",\n "varfmt",\n "varinfmt",\n "varlabel",\n "varlen",\n "varname",\n "varnum",\n "varray",\n "varrayx",\n "vartype",\n "verify",\n "vformat",\n "vformatd",\n "vformatdx",\n "vformatn",\n "vformatnx",\n "vformatw",\n "vformatwx",\n "vformatx",\n "vinarray",\n "vinarrayx",\n "vinformat",\n "vinformatd",\n "vinformatdx",\n "vinformatn",\n "vinformatnx",\n "vinformatw",\n "vinformatwx",\n "vinformatx",\n "vlabel",\n "vlabelx",\n "vlength",\n "vlengthx",\n "vname",\n "vnamex",\n "vtype",\n "vtypex",\n "weekday",\n "year",\n "yyq",\n "zipfips",\n "zipname",\n "zipnamel",\n "zipstate"\n ];\n\n // Built-in macro functions\n const MACRO_FUNCTIONS = [\n "bquote",\n "nrbquote",\n "cmpres",\n "qcmpres",\n "compstor",\n "datatyp",\n "display",\n "do",\n "else",\n "end",\n "eval",\n "global",\n "goto",\n "if",\n "index",\n "input",\n "keydef",\n "label",\n "left",\n "length",\n "let",\n "local",\n "lowcase",\n "macro",\n "mend",\n "nrbquote",\n "nrquote",\n "nrstr",\n "put",\n "qcmpres",\n "qleft",\n "qlowcase",\n "qscan",\n "qsubstr",\n "qsysfunc",\n "qtrim",\n "quote",\n "qupcase",\n "scan",\n "str",\n "substr",\n "superq",\n "syscall",\n "sysevalf",\n "sysexec",\n "sysfunc",\n "sysget",\n "syslput",\n "sysprod",\n "sysrc",\n "sysrput",\n "then",\n "to",\n "trim",\n "unquote",\n "until",\n "upcase",\n "verify",\n "while",\n "window"\n ];\n\n const LITERALS = [\n "null",\n "missing",\n "_all_",\n "_automatic_",\n "_character_",\n "_infile_",\n "_n_",\n "_name_",\n "_null_",\n "_numeric_",\n "_user_",\n "_webout_"\n ];\n\n return {\n name: \'SAS\',\n case_insensitive: true,\n keywords: {\n literal: LITERALS,\n keyword: SAS_KEYWORDS\n },\n contains: [\n {\n // Distinct highlight for proc , data, run, quit\n className: \'keyword\',\n begin: /^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s;]/\n },\n {\n // Macro variables\n className: \'variable\',\n begin: /&[a-zA-Z_&][a-zA-Z0-9_]*\\.?/\n },\n {\n begin: [\n /^\\s*/,\n /datalines;|cards;/,\n /(?:.*\\n)+/,\n /^\\s*;\\s*$/\n ],\n className: {\n 2: "keyword",\n 3: "string"\n }\n },\n {\n begin: [\n /%mend|%macro/,\n /\\s+/,\n /[a-zA-Z_&][a-zA-Z0-9_]*/\n ],\n className: {\n 1: "built_in",\n 3: "title.function"\n }\n },\n { // Built-in macro variables\n className: \'built_in\',\n begin: \'%\' + regex.either(...MACRO_FUNCTIONS)\n },\n {\n // User-defined macro functions\n className: \'title.function\',\n begin: /%[a-zA-Z_][a-zA-Z_0-9]*/\n },\n {\n // TODO: this is most likely an incorrect classification\n // built_in may need more nuance\n // https://github.com/highlightjs/highlight.js/issues/2521\n className: \'meta\',\n begin: regex.either(...FUNCTIONS) + \'(?=\\\\()\'\n },\n {\n className: \'string\',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n hljs.COMMENT(\'\\\\*\', \';\'),\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n}\n\nmodule.exports = sas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQwMC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JELE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsT0FBTztBQUM1QjtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVE7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zYXMuanM/MjdkNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFNBU1xuQXV0aG9yOiBNYXVyaWNpbyBDYWNlcmVzIDxtYXVyaWNpby5jYWNlcmVzLmJyYXZvQGdtYWlsLmNvbT5cbkRlc2NyaXB0aW9uOiBTeW50YXggSGlnaGxpZ2h0aW5nIGZvciBTQVNcbkNhdGVnb3J5OiBzY2llbnRpZmljXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gc2FzKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICAvLyBEYXRhIHN0ZXAgYW5kIFBST0MgU1FMIHN0YXRlbWVudHNcbiAgY29uc3QgU0FTX0tFWVdPUkRTID0gW1xuICAgIFwiZG9cIixcbiAgICBcImlmXCIsXG4gICAgXCJ0aGVuXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJlbmRcIixcbiAgICBcInVudGlsXCIsXG4gICAgXCJ3aGlsZVwiLFxuICAgIFwiYWJvcnRcIixcbiAgICBcImFycmF5XCIsXG4gICAgXCJhdHRyaWJcIixcbiAgICBcImJ5XCIsXG4gICAgXCJjYWxsXCIsXG4gICAgXCJjYXJkc1wiLFxuICAgIFwiY2FyZHM0XCIsXG4gICAgXCJjYXRuYW1lXCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZGF0YWxpbmVzXCIsXG4gICAgXCJkYXRhbGluZXM0XCIsXG4gICAgXCJkZWxldGVcIixcbiAgICBcImRlbGltXCIsXG4gICAgXCJkZWxpbWl0ZXJcIixcbiAgICBcImRpc3BsYXlcIixcbiAgICBcImRtXCIsXG4gICAgXCJkcm9wXCIsXG4gICAgXCJlbmRzYXNcIixcbiAgICBcImVycm9yXCIsXG4gICAgXCJmaWxlXCIsXG4gICAgXCJmaWxlbmFtZVwiLFxuICAgIFwiZm9vdG5vdGVcIixcbiAgICBcImZvcm1hdFwiLFxuICAgIFwiZ290b1wiLFxuICAgIFwiaW5cIixcbiAgICBcImluZmlsZVwiLFxuICAgIFwiaW5mb3JtYXRcIixcbiAgICBcImlucHV0XCIsXG4gICAgXCJrZWVwXCIsXG4gICAgXCJsYWJlbFwiLFxuICAgIFwibGVhdmVcIixcbiAgICBcImxlbmd0aFwiLFxuICAgIFwibGlibmFtZVwiLFxuICAgIFwibGlua1wiLFxuICAgIFwibGlzdFwiLFxuICAgIFwibG9zdGNhcmRcIixcbiAgICBcIm1lcmdlXCIsXG4gICAgXCJtaXNzaW5nXCIsXG4gICAgXCJtb2RpZnlcIixcbiAgICBcIm9wdGlvbnNcIixcbiAgICBcIm91dHB1dFwiLFxuICAgIFwib3V0XCIsXG4gICAgXCJwYWdlXCIsXG4gICAgXCJwdXRcIixcbiAgICBcInJlZGlyZWN0XCIsXG4gICAgXCJyZW1vdmVcIixcbiAgICBcInJlbmFtZVwiLFxuICAgIFwicmVwbGFjZVwiLFxuICAgIFwicmV0YWluXCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcInNlbGVjdFwiLFxuICAgIFwic2V0XCIsXG4gICAgXCJza2lwXCIsXG4gICAgXCJzdGFydHNhc1wiLFxuICAgIFwic3RvcFwiLFxuICAgIFwidGl0bGVcIixcbiAgICBcInVwZGF0ZVwiLFxuICAgIFwid2FpdHNhc1wiLFxuICAgIFwid2hlcmVcIixcbiAgICBcIndpbmRvd1wiLFxuICAgIFwieHwwXCIsXG4gICAgXCJzeXN0YXNrXCIsXG4gICAgXCJhZGRcIixcbiAgICBcImFuZFwiLFxuICAgIFwiYWx0ZXJcIixcbiAgICBcImFzXCIsXG4gICAgXCJjYXNjYWRlXCIsXG4gICAgXCJjaGVja1wiLFxuICAgIFwiY3JlYXRlXCIsXG4gICAgXCJkZWxldGVcIixcbiAgICBcImRlc2NyaWJlXCIsXG4gICAgXCJkaXN0aW5jdFwiLFxuICAgIFwiZHJvcFwiLFxuICAgIFwiZm9yZWlnblwiLFxuICAgIFwiZnJvbVwiLFxuICAgIFwiZ3JvdXBcIixcbiAgICBcImhhdmluZ1wiLFxuICAgIFwiaW5kZXhcIixcbiAgICBcImluc2VydFwiLFxuICAgIFwiaW50b1wiLFxuICAgIFwiaW5cIixcbiAgICBcImtleVwiLFxuICAgIFwibGlrZVwiLFxuICAgIFwibWVzc2FnZVwiLFxuICAgIFwibW9kaWZ5XCIsXG4gICAgXCJtc2d0eXBlXCIsXG4gICAgXCJub3RcIixcbiAgICBcIm51bGxcIixcbiAgICBcIm9uXCIsXG4gICAgXCJvclwiLFxuICAgIFwib3JkZXJcIixcbiAgICBcInByaW1hcnlcIixcbiAgICBcInJlZmVyZW5jZXNcIixcbiAgICBcInJlc2V0XCIsXG4gICAgXCJyZXN0cmljdFwiLFxuICAgIFwic2VsZWN0XCIsXG4gICAgXCJzZXRcIixcbiAgICBcInRhYmxlXCIsXG4gICAgXCJ1bmlxdWVcIixcbiAgICBcInVwZGF0ZVwiLFxuICAgIFwidmFsaWRhdGVcIixcbiAgICBcInZpZXdcIixcbiAgICBcIndoZXJlXCJcbiAgXTtcblxuICAvLyBCdWlsdC1pbiBTQVMgZnVuY3Rpb25zXG4gIGNvbnN0IEZVTkNUSU9OUyA9IFtcbiAgICBcImFic1wiLFxuICAgIFwiYWRkclwiLFxuICAgIFwiYWlyeVwiLFxuICAgIFwiYXJjb3NcIixcbiAgICBcImFyc2luXCIsXG4gICAgXCJhdGFuXCIsXG4gICAgXCJhdHRyY1wiLFxuICAgIFwiYXR0cm5cIixcbiAgICBcImJhbmRcIixcbiAgICBcImJldGFpbnZcIixcbiAgICBcImJsc2hpZnRcIixcbiAgICBcImJub3RcIixcbiAgICBcImJvclwiLFxuICAgIFwiYnJzaGlmdFwiLFxuICAgIFwiYnhvclwiLFxuICAgIFwiYnl0ZVwiLFxuICAgIFwiY2RmXCIsXG4gICAgXCJjZWlsXCIsXG4gICAgXCJjZXhpc3RcIixcbiAgICBcImNpbnZcIixcbiAgICBcImNsb3NlXCIsXG4gICAgXCJjbm9uY3RcIixcbiAgICBcImNvbGxhdGVcIixcbiAgICBcImNvbXBibFwiLFxuICAgIFwiY29tcG91bmRcIixcbiAgICBcImNvbXByZXNzXCIsXG4gICAgXCJjb3NcIixcbiAgICBcImNvc2hcIixcbiAgICBcImNzc1wiLFxuICAgIFwiY3Vyb2JzXCIsXG4gICAgXCJjdlwiLFxuICAgIFwiZGFjY2RiXCIsXG4gICAgXCJkYWNjZGJzbFwiLFxuICAgIFwiZGFjY3NsXCIsXG4gICAgXCJkYWNjc3lkXCIsXG4gICAgXCJkYWNjdGFiXCIsXG4gICAgXCJkYWlyeVwiLFxuICAgIFwiZGF0ZVwiLFxuICAgIFwiZGF0ZWp1bFwiLFxuICAgIFwiZGF0ZXBhcnRcIixcbiAgICBcImRhdGV0aW1lXCIsXG4gICAgXCJkYXlcIixcbiAgICBcImRjbG9zZVwiLFxuICAgIFwiZGVwZGJcIixcbiAgICBcImRlcGRic2xcIixcbiAgICBcImRlcGRic2xcIixcbiAgICBcImRlcHNsXCIsXG4gICAgXCJkZXBzbFwiLFxuICAgIFwiZGVwc3lkXCIsXG4gICAgXCJkZXBzeWRcIixcbiAgICBcImRlcHRhYlwiLFxuICAgIFwiZGVwdGFiXCIsXG4gICAgXCJkZXF1b3RlXCIsXG4gICAgXCJkaG1zXCIsXG4gICAgXCJkaWZcIixcbiAgICBcImRpZ2FtbWFcIixcbiAgICBcImRpbVwiLFxuICAgIFwiZGluZm9cIixcbiAgICBcImRudW1cIixcbiAgICBcImRvcGVuXCIsXG4gICAgXCJkb3B0bmFtZVwiLFxuICAgIFwiZG9wdG51bVwiLFxuICAgIFwiZHJlYWRcIixcbiAgICBcImRyb3Bub3RlXCIsXG4gICAgXCJkc25hbWVcIixcbiAgICBcImVyZlwiLFxuICAgIFwiZXJmY1wiLFxuICAgIFwiZXhpc3RcIixcbiAgICBcImV4cFwiLFxuICAgIFwiZmFwcGVuZFwiLFxuICAgIFwiZmNsb3NlXCIsXG4gICAgXCJmY29sXCIsXG4gICAgXCJmZGVsZXRlXCIsXG4gICAgXCJmZXRjaFwiLFxuICAgIFwiZmV0Y2hvYnNcIixcbiAgICBcImZleGlzdFwiLFxuICAgIFwiZmdldFwiLFxuICAgIFwiZmlsZWV4aXN0XCIsXG4gICAgXCJmaWxlbmFtZVwiLFxuICAgIFwiZmlsZXJlZlwiLFxuICAgIFwiZmluZm9cIixcbiAgICBcImZpbnZcIixcbiAgICBcImZpcG5hbWVcIixcbiAgICBcImZpcG5hbWVsXCIsXG4gICAgXCJmaXBzdGF0ZVwiLFxuICAgIFwiZmxvb3JcIixcbiAgICBcImZub25jdFwiLFxuICAgIFwiZm5vdGVcIixcbiAgICBcImZvcGVuXCIsXG4gICAgXCJmb3B0bmFtZVwiLFxuICAgIFwiZm9wdG51bVwiLFxuICAgIFwiZnBvaW50XCIsXG4gICAgXCJmcG9zXCIsXG4gICAgXCJmcHV0XCIsXG4gICAgXCJmcmVhZFwiLFxuICAgIFwiZnJld2luZFwiLFxuICAgIFwiZnJsZW5cIixcbiAgICBcImZzZXBcIixcbiAgICBcImZ1enpcIixcbiAgICBcImZ3cml0ZVwiLFxuICAgIFwiZ2FtaW52XCIsXG4gICAgXCJnYW1tYVwiLFxuICAgIFwiZ2V0b3B0aW9uXCIsXG4gICAgXCJnZXR2YXJjXCIsXG4gICAgXCJnZXR2YXJuXCIsXG4gICAgXCJoYm91bmRcIixcbiAgICBcImhtc1wiLFxuICAgIFwiaG9zdGhlbHBcIixcbiAgICBcImhvdXJcIixcbiAgICBcImliZXNzZWxcIixcbiAgICBcImluZGV4XCIsXG4gICAgXCJpbmRleGNcIixcbiAgICBcImluZGV4d1wiLFxuICAgIFwiaW5wdXRcIixcbiAgICBcImlucHV0Y1wiLFxuICAgIFwiaW5wdXRuXCIsXG4gICAgXCJpbnRcIixcbiAgICBcImludGNrXCIsXG4gICAgXCJpbnRueFwiLFxuICAgIFwiaW50cnJcIixcbiAgICBcImlyclwiLFxuICAgIFwiamJlc3NlbFwiLFxuICAgIFwianVsZGF0ZVwiLFxuICAgIFwia3VydG9zaXNcIixcbiAgICBcImxhZ1wiLFxuICAgIFwibGJvdW5kXCIsXG4gICAgXCJsZWZ0XCIsXG4gICAgXCJsZW5ndGhcIixcbiAgICBcImxnYW1tYVwiLFxuICAgIFwibGlibmFtZVwiLFxuICAgIFwibGlicmVmXCIsXG4gICAgXCJsb2dcIixcbiAgICBcImxvZzEwXCIsXG4gICAgXCJsb2cyXCIsXG4gICAgXCJsb2dwZGZcIixcbiAgICBcImxvZ3BtZlwiLFxuICAgIFwibG9nc2RmXCIsXG4gICAgXCJsb3djYXNlXCIsXG4gICAgXCJtYXhcIixcbiAgICBcIm1keVwiLFxuICAgIFwibWVhblwiLFxuICAgIFwibWluXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcIm1vZFwiLFxuICAgIFwibW9udGhcIixcbiAgICBcIm1vcGVuXCIsXG4gICAgXCJtb3J0XCIsXG4gICAgXCJuXCIsXG4gICAgXCJuZXRwdlwiLFxuICAgIFwibm1pc3NcIixcbiAgICBcIm5vcm1hbFwiLFxuICAgIFwibm90ZVwiLFxuICAgIFwibnB2XCIsXG4gICAgXCJvcGVuXCIsXG4gICAgXCJvcmRpbmFsXCIsXG4gICAgXCJwYXRobmFtZVwiLFxuICAgIFwicGRmXCIsXG4gICAgXCJwZWVrXCIsXG4gICAgXCJwZWVrY1wiLFxuICAgIFwicG1mXCIsXG4gICAgXCJwb2ludFwiLFxuICAgIFwicG9pc3NvblwiLFxuICAgIFwicG9rZVwiLFxuICAgIFwicHJvYmJldGFcIixcbiAgICBcInByb2Jibm1sXCIsXG4gICAgXCJwcm9iY2hpXCIsXG4gICAgXCJwcm9iZlwiLFxuICAgIFwicHJvYmdhbVwiLFxuICAgIFwicHJvYmh5cHJcIixcbiAgICBcInByb2JpdFwiLFxuICAgIFwicHJvYm5lZ2JcIixcbiAgICBcInByb2Jub3JtXCIsXG4gICAgXCJwcm9idFwiLFxuICAgIFwicHV0XCIsXG4gICAgXCJwdXRjXCIsXG4gICAgXCJwdXRuXCIsXG4gICAgXCJxdHJcIixcbiAgICBcInF1b3RlXCIsXG4gICAgXCJyYW5iaW5cIixcbiAgICBcInJhbmNhdVwiLFxuICAgIFwicmFuZXhwXCIsXG4gICAgXCJyYW5nYW1cIixcbiAgICBcInJhbmdlXCIsXG4gICAgXCJyYW5rXCIsXG4gICAgXCJyYW5ub3JcIixcbiAgICBcInJhbnBvaVwiLFxuICAgIFwicmFudGJsXCIsXG4gICAgXCJyYW50cmlcIixcbiAgICBcInJhbnVuaVwiLFxuICAgIFwicmVwZWF0XCIsXG4gICAgXCJyZXNvbHZlXCIsXG4gICAgXCJyZXZlcnNlXCIsXG4gICAgXCJyZXdpbmRcIixcbiAgICBcInJpZ2h0XCIsXG4gICAgXCJyb3VuZFwiLFxuICAgIFwic2F2aW5nXCIsXG4gICAgXCJzY2FuXCIsXG4gICAgXCJzZGZcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwic2lnblwiLFxuICAgIFwic2luXCIsXG4gICAgXCJzaW5oXCIsXG4gICAgXCJza2V3bmVzc1wiLFxuICAgIFwic291bmRleFwiLFxuICAgIFwic3BlZGlzXCIsXG4gICAgXCJzcXJ0XCIsXG4gICAgXCJzdGRcIixcbiAgICBcInN0ZGVyclwiLFxuICAgIFwic3RmaXBzXCIsXG4gICAgXCJzdG5hbWVcIixcbiAgICBcInN0bmFtZWxcIixcbiAgICBcInN1YnN0clwiLFxuICAgIFwic3VtXCIsXG4gICAgXCJzeW1nZXRcIixcbiAgICBcInN5c2dldFwiLFxuICAgIFwic3lzbXNnXCIsXG4gICAgXCJzeXNwcm9kXCIsXG4gICAgXCJzeXNyY1wiLFxuICAgIFwic3lzdGVtXCIsXG4gICAgXCJ0YW5cIixcbiAgICBcInRhbmhcIixcbiAgICBcInRpbWVcIixcbiAgICBcInRpbWVwYXJ0XCIsXG4gICAgXCJ0aW52XCIsXG4gICAgXCJ0bm9uY3RcIixcbiAgICBcInRvZGF5XCIsXG4gICAgXCJ0cmFuc2xhdGVcIixcbiAgICBcInRyYW53cmRcIixcbiAgICBcInRyaWdhbW1hXCIsXG4gICAgXCJ0cmltXCIsXG4gICAgXCJ0cmltblwiLFxuICAgIFwidHJ1bmNcIixcbiAgICBcInVuaWZvcm1cIixcbiAgICBcInVwY2FzZVwiLFxuICAgIFwidXNzXCIsXG4gICAgXCJ2YXJcIixcbiAgICBcInZhcmZtdFwiLFxuICAgIFwidmFyaW5mbXRcIixcbiAgICBcInZhcmxhYmVsXCIsXG4gICAgXCJ2YXJsZW5cIixcbiAgICBcInZhcm5hbWVcIixcbiAgICBcInZhcm51bVwiLFxuICAgIFwidmFycmF5XCIsXG4gICAgXCJ2YXJyYXl4XCIsXG4gICAgXCJ2YXJ0eXBlXCIsXG4gICAgXCJ2ZXJpZnlcIixcbiAgICBcInZmb3JtYXRcIixcbiAgICBcInZmb3JtYXRkXCIsXG4gICAgXCJ2Zm9ybWF0ZHhcIixcbiAgICBcInZmb3JtYXRuXCIsXG4gICAgXCJ2Zm9ybWF0bnhcIixcbiAgICBcInZmb3JtYXR3XCIsXG4gICAgXCJ2Zm9ybWF0d3hcIixcbiAgICBcInZmb3JtYXR4XCIsXG4gICAgXCJ2aW5hcnJheVwiLFxuICAgIFwidmluYXJyYXl4XCIsXG4gICAgXCJ2aW5mb3JtYXRcIixcbiAgICBcInZpbmZvcm1hdGRcIixcbiAgICBcInZpbmZvcm1hdGR4XCIsXG4gICAgXCJ2aW5mb3JtYXRuXCIsXG4gICAgXCJ2aW5mb3JtYXRueFwiLFxuICAgIFwidmluZm9ybWF0d1wiLFxuICAgIFwidmluZm9ybWF0d3hcIixcbiAgICBcInZpbmZvcm1hdHhcIixcbiAgICBcInZsYWJlbFwiLFxuICAgIFwidmxhYmVseFwiLFxuICAgIFwidmxlbmd0aFwiLFxuICAgIFwidmxlbmd0aHhcIixcbiAgICBcInZuYW1lXCIsXG4gICAgXCJ2bmFtZXhcIixcbiAgICBcInZ0eXBlXCIsXG4gICAgXCJ2dHlwZXhcIixcbiAgICBcIndlZWtkYXlcIixcbiAgICBcInllYXJcIixcbiAgICBcInl5cVwiLFxuICAgIFwiemlwZmlwc1wiLFxuICAgIFwiemlwbmFtZVwiLFxuICAgIFwiemlwbmFtZWxcIixcbiAgICBcInppcHN0YXRlXCJcbiAgXTtcblxuICAvLyBCdWlsdC1pbiBtYWNybyBmdW5jdGlvbnNcbiAgY29uc3QgTUFDUk9fRlVOQ1RJT05TID0gW1xuICAgIFwiYnF1b3RlXCIsXG4gICAgXCJucmJxdW90ZVwiLFxuICAgIFwiY21wcmVzXCIsXG4gICAgXCJxY21wcmVzXCIsXG4gICAgXCJjb21wc3RvclwiLFxuICAgIFwiZGF0YXR5cFwiLFxuICAgIFwiZGlzcGxheVwiLFxuICAgIFwiZG9cIixcbiAgICBcImVsc2VcIixcbiAgICBcImVuZFwiLFxuICAgIFwiZXZhbFwiLFxuICAgIFwiZ2xvYmFsXCIsXG4gICAgXCJnb3RvXCIsXG4gICAgXCJpZlwiLFxuICAgIFwiaW5kZXhcIixcbiAgICBcImlucHV0XCIsXG4gICAgXCJrZXlkZWZcIixcbiAgICBcImxhYmVsXCIsXG4gICAgXCJsZWZ0XCIsXG4gICAgXCJsZW5ndGhcIixcbiAgICBcImxldFwiLFxuICAgIFwibG9jYWxcIixcbiAgICBcImxvd2Nhc2VcIixcbiAgICBcIm1hY3JvXCIsXG4gICAgXCJtZW5kXCIsXG4gICAgXCJucmJxdW90ZVwiLFxuICAgIFwibnJxdW90ZVwiLFxuICAgIFwibnJzdHJcIixcbiAgICBcInB1dFwiLFxuICAgIFwicWNtcHJlc1wiLFxuICAgIFwicWxlZnRcIixcbiAgICBcInFsb3djYXNlXCIsXG4gICAgXCJxc2NhblwiLFxuICAgIFwicXN1YnN0clwiLFxuICAgIFwicXN5c2Z1bmNcIixcbiAgICBcInF0cmltXCIsXG4gICAgXCJxdW90ZVwiLFxuICAgIFwicXVwY2FzZVwiLFxuICAgIFwic2NhblwiLFxuICAgIFwic3RyXCIsXG4gICAgXCJzdWJzdHJcIixcbiAgICBcInN1cGVycVwiLFxuICAgIFwic3lzY2FsbFwiLFxuICAgIFwic3lzZXZhbGZcIixcbiAgICBcInN5c2V4ZWNcIixcbiAgICBcInN5c2Z1bmNcIixcbiAgICBcInN5c2dldFwiLFxuICAgIFwic3lzbHB1dFwiLFxuICAgIFwic3lzcHJvZFwiLFxuICAgIFwic3lzcmNcIixcbiAgICBcInN5c3JwdXRcIixcbiAgICBcInRoZW5cIixcbiAgICBcInRvXCIsXG4gICAgXCJ0cmltXCIsXG4gICAgXCJ1bnF1b3RlXCIsXG4gICAgXCJ1bnRpbFwiLFxuICAgIFwidXBjYXNlXCIsXG4gICAgXCJ2ZXJpZnlcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJ3aW5kb3dcIlxuICBdO1xuXG4gIGNvbnN0IExJVEVSQUxTID0gW1xuICAgIFwibnVsbFwiLFxuICAgIFwibWlzc2luZ1wiLFxuICAgIFwiX2FsbF9cIixcbiAgICBcIl9hdXRvbWF0aWNfXCIsXG4gICAgXCJfY2hhcmFjdGVyX1wiLFxuICAgIFwiX2luZmlsZV9cIixcbiAgICBcIl9uX1wiLFxuICAgIFwiX25hbWVfXCIsXG4gICAgXCJfbnVsbF9cIixcbiAgICBcIl9udW1lcmljX1wiLFxuICAgIFwiX3VzZXJfXCIsXG4gICAgXCJfd2Vib3V0X1wiXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnU0FTJyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICAgIGtleXdvcmQ6IFNBU19LRVlXT1JEU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gRGlzdGluY3QgaGlnaGxpZ2h0IGZvciBwcm9jIDxwcm9jPiwgZGF0YSwgcnVuLCBxdWl0XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogL15cXHMqKHByb2MgW1xcd1xcZF9dK3xkYXRhfHJ1bnxxdWl0KVtcXHM7XS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIE1hY3JvIHZhcmlhYmxlc1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvJlthLXpBLVpfJl1bYS16QS1aMC05X10qXFwuPy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBbXG4gICAgICAgICAgL15cXHMqLyxcbiAgICAgICAgICAvZGF0YWxpbmVzO3xjYXJkczsvLFxuICAgICAgICAgIC8oPzouKlxcbikrLyxcbiAgICAgICAgICAvXlxccyo7XFxzKiQvXG4gICAgICAgIF0sXG4gICAgICAgIGNsYXNzTmFtZToge1xuICAgICAgICAgIDI6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICAvJW1lbmR8JW1hY3JvLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgL1thLXpBLVpfJl1bYS16QS1aMC05X10qL1xuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAxOiBcImJ1aWx0X2luXCIsXG4gICAgICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IC8vIEJ1aWx0LWluIG1hY3JvIHZhcmlhYmxlc1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAnJScgKyByZWdleC5laXRoZXIoLi4uTUFDUk9fRlVOQ1RJT05TKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gVXNlci1kZWZpbmVkIG1hY3JvIGZ1bmN0aW9uc1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZS5mdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAvJVthLXpBLVpfXVthLXpBLVpfMC05XSovXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBUT0RPOiB0aGlzIGlzIG1vc3QgbGlrZWx5IGFuIGluY29ycmVjdCBjbGFzc2lmaWNhdGlvblxuICAgICAgICAvLyBidWlsdF9pbiBtYXkgbmVlZCBtb3JlIG51YW5jZVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yNTIxXG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogcmVnZXguZWl0aGVyKC4uLkZVTkNUSU9OUykgKyAnKD89XFxcXCgpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCdcXFxcKicsICc7JyksXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNhcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1400\n')},1408:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\nvar stringify = __webpack_require__(2393);\nvar stringifyComment = __webpack_require__(272);\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQwOC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBc0I7QUFDN0MsZ0JBQWdCLG1CQUFPLENBQUMsSUFBZ0I7QUFDeEMsdUJBQXVCLG1CQUFPLENBQUMsR0FBdUI7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLEtBQUs7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeURvY3VtZW50LmpzP2ZjMDEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuLi9ub2Rlcy9pZGVudGl0eS5qcycpO1xudmFyIHN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vc3RyaW5naWZ5LmpzJyk7XG52YXIgc3RyaW5naWZ5Q29tbWVudCA9IHJlcXVpcmUoJy4vc3RyaW5naWZ5Q29tbWVudC5qcycpO1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlEb2N1bWVudChkb2MsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGxldCBoYXNEaXJlY3RpdmVzID0gb3B0aW9ucy5kaXJlY3RpdmVzID09PSB0cnVlO1xuICAgIGlmIChvcHRpb25zLmRpcmVjdGl2ZXMgIT09IGZhbHNlICYmIGRvYy5kaXJlY3RpdmVzKSB7XG4gICAgICAgIGNvbnN0IGRpciA9IGRvYy5kaXJlY3RpdmVzLnRvU3RyaW5nKGRvYyk7XG4gICAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goZGlyKTtcbiAgICAgICAgICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRvYy5kaXJlY3RpdmVzLmRvY1N0YXJ0KVxuICAgICAgICAgICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgfVxuICAgIGlmIChoYXNEaXJlY3RpdmVzKVxuICAgICAgICBsaW5lcy5wdXNoKCctLS0nKTtcbiAgICBjb25zdCBjdHggPSBzdHJpbmdpZnkuY3JlYXRlU3RyaW5naWZ5Q29udGV4dChkb2MsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgY29tbWVudFN0cmluZyB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgaWYgKGRvYy5jb21tZW50QmVmb3JlKSB7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICBsaW5lcy51bnNoaWZ0KCcnKTtcbiAgICAgICAgY29uc3QgY3MgPSBjb21tZW50U3RyaW5nKGRvYy5jb21tZW50QmVmb3JlKTtcbiAgICAgICAgbGluZXMudW5zaGlmdChzdHJpbmdpZnlDb21tZW50LmluZGVudENvbW1lbnQoY3MsICcnKSk7XG4gICAgfVxuICAgIGxldCBjaG9tcEtlZXAgPSBmYWxzZTtcbiAgICBsZXQgY29udGVudENvbW1lbnQgPSBudWxsO1xuICAgIGlmIChkb2MuY29udGVudHMpIHtcbiAgICAgICAgaWYgKGlkZW50aXR5LmlzTm9kZShkb2MuY29udGVudHMpKSB7XG4gICAgICAgICAgICBpZiAoZG9jLmNvbnRlbnRzLnNwYWNlQmVmb3JlICYmIGhhc0RpcmVjdGl2ZXMpXG4gICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICBpZiAoZG9jLmNvbnRlbnRzLmNvbW1lbnRCZWZvcmUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjcyA9IGNvbW1lbnRTdHJpbmcoZG9jLmNvbnRlbnRzLmNvbW1lbnRCZWZvcmUpO1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goc3RyaW5naWZ5Q29tbWVudC5pbmRlbnRDb21tZW50KGNzLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdG9wLWxldmVsIGJsb2NrIHNjYWxhcnMgbmVlZCB0byBiZSBpbmRlbnRlZCBpZiBmb2xsb3dlZCBieSBhIGNvbW1lbnRcbiAgICAgICAgICAgIGN0eC5mb3JjZUJsb2NrSW5kZW50ID0gISFkb2MuY29tbWVudDtcbiAgICAgICAgICAgIGNvbnRlbnRDb21tZW50ID0gZG9jLmNvbnRlbnRzLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb25DaG9tcEtlZXAgPSBjb250ZW50Q29tbWVudCA/IHVuZGVmaW5lZCA6ICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKTtcbiAgICAgICAgbGV0IGJvZHkgPSBzdHJpbmdpZnkuc3RyaW5naWZ5KGRvYy5jb250ZW50cywgY3R4LCAoKSA9PiAoY29udGVudENvbW1lbnQgPSBudWxsKSwgb25DaG9tcEtlZXApO1xuICAgICAgICBpZiAoY29udGVudENvbW1lbnQpXG4gICAgICAgICAgICBib2R5ICs9IHN0cmluZ2lmeUNvbW1lbnQubGluZUNvbW1lbnQoYm9keSwgJycsIGNvbW1lbnRTdHJpbmcoY29udGVudENvbW1lbnQpKTtcbiAgICAgICAgaWYgKChib2R5WzBdID09PSAnfCcgfHwgYm9keVswXSA9PT0gJz4nKSAmJlxuICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0gPT09ICctLS0nKSB7XG4gICAgICAgICAgICAvLyBUb3AtbGV2ZWwgYmxvY2sgc2NhbGFycyB3aXRoIGEgcHJlY2VkaW5nIGRvYyBtYXJrZXIgb3VnaHQgdG8gdXNlIHRoZVxuICAgICAgICAgICAgLy8gc2FtZSBsaW5lIGZvciB0aGVpciBoZWFkZXIuXG4gICAgICAgICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9IGAtLS0gJHtib2R5fWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGluZXMucHVzaChib2R5KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxpbmVzLnB1c2goc3RyaW5naWZ5LnN0cmluZ2lmeShkb2MuY29udGVudHMsIGN0eCkpO1xuICAgIH1cbiAgICBpZiAoZG9jLmRpcmVjdGl2ZXM/LmRvY0VuZCkge1xuICAgICAgICBpZiAoZG9jLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gY29tbWVudFN0cmluZyhkb2MuY29tbWVudCk7XG4gICAgICAgICAgICBpZiAoY3MuaW5jbHVkZXMoJ1xcbicpKSB7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaCgnLi4uJyk7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaChzdHJpbmdpZnlDb21tZW50LmluZGVudENvbW1lbnQoY3MsICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAuLi4gJHtjc31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goJy4uLicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgZGMgPSBkb2MuY29tbWVudDtcbiAgICAgICAgaWYgKGRjICYmIGNob21wS2VlcClcbiAgICAgICAgICAgIGRjID0gZGMucmVwbGFjZSgvXlxcbisvLCAnJyk7XG4gICAgICAgIGlmIChkYykge1xuICAgICAgICAgICAgaWYgKCghY2hvbXBLZWVwIHx8IGNvbnRlbnRDb21tZW50KSAmJiBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSAhPT0gJycpXG4gICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKHN0cmluZ2lmeUNvbW1lbnQuaW5kZW50Q29tbWVudChjb21tZW50U3RyaW5nKGRjKSwgJycpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0cy5zdHJpbmdpZnlEb2N1bWVudCA9IHN0cmluZ2lmeURvY3VtZW50O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1408\n")},1518:module=>{eval('/*\nLanguage: Processing\nDescription: Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.\nAuthor: Erik Paluka \nWebsite: https://processing.org\nCategory: graphics\n*/\n\nfunction processing(hljs) {\n const regex = hljs.regex;\n const BUILT_INS = [\n "displayHeight",\n "displayWidth",\n "mouseY",\n "mouseX",\n "mousePressed",\n "pmouseX",\n "pmouseY",\n "key",\n "keyCode",\n "pixels",\n "focused",\n "frameCount",\n "frameRate",\n "height",\n "width",\n "size",\n "createGraphics",\n "beginDraw",\n "createShape",\n "loadShape",\n "PShape",\n "arc",\n "ellipse",\n "line",\n "point",\n "quad",\n "rect",\n "triangle",\n "bezier",\n "bezierDetail",\n "bezierPoint",\n "bezierTangent",\n "curve",\n "curveDetail",\n "curvePoint",\n "curveTangent",\n "curveTightness",\n "shape",\n "shapeMode",\n "beginContour",\n "beginShape",\n "bezierVertex",\n "curveVertex",\n "endContour",\n "endShape",\n "quadraticVertex",\n "vertex",\n "ellipseMode",\n "noSmooth",\n "rectMode",\n "smooth",\n "strokeCap",\n "strokeJoin",\n "strokeWeight",\n "mouseClicked",\n "mouseDragged",\n "mouseMoved",\n "mousePressed",\n "mouseReleased",\n "mouseWheel",\n "keyPressed",\n "keyPressedkeyReleased",\n "keyTyped",\n "print",\n "println",\n "save",\n "saveFrame",\n "day",\n "hour",\n "millis",\n "minute",\n "month",\n "second",\n "year",\n "background",\n "clear",\n "colorMode",\n "fill",\n "noFill",\n "noStroke",\n "stroke",\n "alpha",\n "blue",\n "brightness",\n "color",\n "green",\n "hue",\n "lerpColor",\n "red",\n "saturation",\n "modelX",\n "modelY",\n "modelZ",\n "screenX",\n "screenY",\n "screenZ",\n "ambient",\n "emissive",\n "shininess",\n "specular",\n "add",\n "createImage",\n "beginCamera",\n "camera",\n "endCamera",\n "frustum",\n "ortho",\n "perspective",\n "printCamera",\n "printProjection",\n "cursor",\n "frameRate",\n "noCursor",\n "exit",\n "loop",\n "noLoop",\n "popStyle",\n "pushStyle",\n "redraw",\n "binary",\n "boolean",\n "byte",\n "char",\n "float",\n "hex",\n "int",\n "str",\n "unbinary",\n "unhex",\n "join",\n "match",\n "matchAll",\n "nf",\n "nfc",\n "nfp",\n "nfs",\n "split",\n "splitTokens",\n "trim",\n "append",\n "arrayCopy",\n "concat",\n "expand",\n "reverse",\n "shorten",\n "sort",\n "splice",\n "subset",\n "box",\n "sphere",\n "sphereDetail",\n "createInput",\n "createReader",\n "loadBytes",\n "loadJSONArray",\n "loadJSONObject",\n "loadStrings",\n "loadTable",\n "loadXML",\n "open",\n "parseXML",\n "saveTable",\n "selectFolder",\n "selectInput",\n "beginRaw",\n "beginRecord",\n "createOutput",\n "createWriter",\n "endRaw",\n "endRecord",\n "PrintWritersaveBytes",\n "saveJSONArray",\n "saveJSONObject",\n "saveStream",\n "saveStrings",\n "saveXML",\n "selectOutput",\n "popMatrix",\n "printMatrix",\n "pushMatrix",\n "resetMatrix",\n "rotate",\n "rotateX",\n "rotateY",\n "rotateZ",\n "scale",\n "shearX",\n "shearY",\n "translate",\n "ambientLight",\n "directionalLight",\n "lightFalloff",\n "lights",\n "lightSpecular",\n "noLights",\n "normal",\n "pointLight",\n "spotLight",\n "image",\n "imageMode",\n "loadImage",\n "noTint",\n "requestImage",\n "tint",\n "texture",\n "textureMode",\n "textureWrap",\n "blend",\n "copy",\n "filter",\n "get",\n "loadPixels",\n "set",\n "updatePixels",\n "blendMode",\n "loadShader",\n "PShaderresetShader",\n "shader",\n "createFont",\n "loadFont",\n "text",\n "textFont",\n "textAlign",\n "textLeading",\n "textMode",\n "textSize",\n "textWidth",\n "textAscent",\n "textDescent",\n "abs",\n "ceil",\n "constrain",\n "dist",\n "exp",\n "floor",\n "lerp",\n "log",\n "mag",\n "map",\n "max",\n "min",\n "norm",\n "pow",\n "round",\n "sq",\n "sqrt",\n "acos",\n "asin",\n "atan",\n "atan2",\n "cos",\n "degrees",\n "radians",\n "sin",\n "tan",\n "noise",\n "noiseDetail",\n "noiseSeed",\n "random",\n "randomGaussian",\n "randomSeed"\n ];\n const IDENT = hljs.IDENT_RE;\n const FUNC_NAME = { variants: [\n {\n match: regex.concat(regex.either(...BUILT_INS), regex.lookahead(/\\s*\\(/)),\n className: "built_in"\n },\n {\n relevance: 0,\n match: regex.concat(\n /\\b(?!for|if|while)/,\n IDENT, regex.lookahead(/\\s*\\(/)),\n className: "title.function"\n }\n ] };\n const NEW_CLASS = {\n match: [\n /new\\s+/,\n IDENT\n ],\n className: {\n 1: "keyword",\n 2: "class.title"\n }\n };\n const PROPERTY = {\n relevance: 0,\n match: [\n /\\./,\n IDENT\n ],\n className: { 2: "property" }\n };\n const CLASS = {\n variants: [\n { match: [\n /class/,\n /\\s+/,\n IDENT,\n /\\s+/,\n /extends/,\n /\\s+/,\n IDENT\n ] },\n { match: [\n /class/,\n /\\s+/,\n IDENT\n ] }\n ],\n className: {\n 1: "keyword",\n 3: "title.class",\n 5: "keyword",\n 7: "title.class.inherited"\n }\n };\n\n const TYPES = [\n "boolean",\n "byte",\n "char",\n "color",\n "double",\n "float",\n "int",\n "long",\n "short",\n ];\n const CLASSES = [\n "BufferedReader",\n "PVector",\n "PFont",\n "PImage",\n "PGraphics",\n "HashMap",\n "String",\n "Array",\n "FloatDict",\n "ArrayList",\n "FloatList",\n "IntDict",\n "IntList",\n "JSONArray",\n "JSONObject",\n "Object",\n "StringDict",\n "StringList",\n "Table",\n "TableRow",\n "XML"\n ];\n const JAVA_KEYWORDS = [\n "abstract",\n "assert",\n "break",\n "case",\n "catch",\n "const",\n "continue",\n "default",\n "else",\n "enum",\n "final",\n "finally",\n "for",\n "if",\n "import",\n "instanceof",\n "long",\n "native",\n "new",\n "package",\n "private",\n "private",\n "protected",\n "protected",\n "public",\n "public",\n "return",\n "static",\n "strictfp",\n "switch",\n "synchronized",\n "throw",\n "throws",\n "transient",\n "try",\n "void",\n "volatile",\n "while"\n ];\n\n return {\n name: \'Processing\',\n aliases: [ \'pde\' ],\n keywords: {\n keyword: [ ...JAVA_KEYWORDS ],\n literal: \'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI null true false\',\n title: \'setup draw\',\n variable: "super this",\n built_in: [\n ...BUILT_INS,\n ...CLASSES\n ],\n type: TYPES\n },\n contains: [\n CLASS,\n NEW_CLASS,\n FUNC_NAME,\n PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = processing;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUxOC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcHJvY2Vzc2luZy5qcz9kYTU4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUHJvY2Vzc2luZ1xuRGVzY3JpcHRpb246IFByb2Nlc3NpbmcgaXMgYSBmbGV4aWJsZSBzb2Z0d2FyZSBza2V0Y2hib29rIGFuZCBhIGxhbmd1YWdlIGZvciBsZWFybmluZyBob3cgdG8gY29kZSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIHZpc3VhbCBhcnRzLlxuQXV0aG9yOiBFcmlrIFBhbHVrYSA8ZXJpay5wYWx1a2FAZ21haWwuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9wcm9jZXNzaW5nLm9yZ1xuQ2F0ZWdvcnk6IGdyYXBoaWNzXG4qL1xuXG5mdW5jdGlvbiBwcm9jZXNzaW5nKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgXCJkaXNwbGF5SGVpZ2h0XCIsXG4gICAgXCJkaXNwbGF5V2lkdGhcIixcbiAgICBcIm1vdXNlWVwiLFxuICAgIFwibW91c2VYXCIsXG4gICAgXCJtb3VzZVByZXNzZWRcIixcbiAgICBcInBtb3VzZVhcIixcbiAgICBcInBtb3VzZVlcIixcbiAgICBcImtleVwiLFxuICAgIFwia2V5Q29kZVwiLFxuICAgIFwicGl4ZWxzXCIsXG4gICAgXCJmb2N1c2VkXCIsXG4gICAgXCJmcmFtZUNvdW50XCIsXG4gICAgXCJmcmFtZVJhdGVcIixcbiAgICBcImhlaWdodFwiLFxuICAgIFwid2lkdGhcIixcbiAgICBcInNpemVcIixcbiAgICBcImNyZWF0ZUdyYXBoaWNzXCIsXG4gICAgXCJiZWdpbkRyYXdcIixcbiAgICBcImNyZWF0ZVNoYXBlXCIsXG4gICAgXCJsb2FkU2hhcGVcIixcbiAgICBcIlBTaGFwZVwiLFxuICAgIFwiYXJjXCIsXG4gICAgXCJlbGxpcHNlXCIsXG4gICAgXCJsaW5lXCIsXG4gICAgXCJwb2ludFwiLFxuICAgIFwicXVhZFwiLFxuICAgIFwicmVjdFwiLFxuICAgIFwidHJpYW5nbGVcIixcbiAgICBcImJlemllclwiLFxuICAgIFwiYmV6aWVyRGV0YWlsXCIsXG4gICAgXCJiZXppZXJQb2ludFwiLFxuICAgIFwiYmV6aWVyVGFuZ2VudFwiLFxuICAgIFwiY3VydmVcIixcbiAgICBcImN1cnZlRGV0YWlsXCIsXG4gICAgXCJjdXJ2ZVBvaW50XCIsXG4gICAgXCJjdXJ2ZVRhbmdlbnRcIixcbiAgICBcImN1cnZlVGlnaHRuZXNzXCIsXG4gICAgXCJzaGFwZVwiLFxuICAgIFwic2hhcGVNb2RlXCIsXG4gICAgXCJiZWdpbkNvbnRvdXJcIixcbiAgICBcImJlZ2luU2hhcGVcIixcbiAgICBcImJlemllclZlcnRleFwiLFxuICAgIFwiY3VydmVWZXJ0ZXhcIixcbiAgICBcImVuZENvbnRvdXJcIixcbiAgICBcImVuZFNoYXBlXCIsXG4gICAgXCJxdWFkcmF0aWNWZXJ0ZXhcIixcbiAgICBcInZlcnRleFwiLFxuICAgIFwiZWxsaXBzZU1vZGVcIixcbiAgICBcIm5vU21vb3RoXCIsXG4gICAgXCJyZWN0TW9kZVwiLFxuICAgIFwic21vb3RoXCIsXG4gICAgXCJzdHJva2VDYXBcIixcbiAgICBcInN0cm9rZUpvaW5cIixcbiAgICBcInN0cm9rZVdlaWdodFwiLFxuICAgIFwibW91c2VDbGlja2VkXCIsXG4gICAgXCJtb3VzZURyYWdnZWRcIixcbiAgICBcIm1vdXNlTW92ZWRcIixcbiAgICBcIm1vdXNlUHJlc3NlZFwiLFxuICAgIFwibW91c2VSZWxlYXNlZFwiLFxuICAgIFwibW91c2VXaGVlbFwiLFxuICAgIFwia2V5UHJlc3NlZFwiLFxuICAgIFwia2V5UHJlc3NlZGtleVJlbGVhc2VkXCIsXG4gICAgXCJrZXlUeXBlZFwiLFxuICAgIFwicHJpbnRcIixcbiAgICBcInByaW50bG5cIixcbiAgICBcInNhdmVcIixcbiAgICBcInNhdmVGcmFtZVwiLFxuICAgIFwiZGF5XCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJtaWxsaXNcIixcbiAgICBcIm1pbnV0ZVwiLFxuICAgIFwibW9udGhcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwieWVhclwiLFxuICAgIFwiYmFja2dyb3VuZFwiLFxuICAgIFwiY2xlYXJcIixcbiAgICBcImNvbG9yTW9kZVwiLFxuICAgIFwiZmlsbFwiLFxuICAgIFwibm9GaWxsXCIsXG4gICAgXCJub1N0cm9rZVwiLFxuICAgIFwic3Ryb2tlXCIsXG4gICAgXCJhbHBoYVwiLFxuICAgIFwiYmx1ZVwiLFxuICAgIFwiYnJpZ2h0bmVzc1wiLFxuICAgIFwiY29sb3JcIixcbiAgICBcImdyZWVuXCIsXG4gICAgXCJodWVcIixcbiAgICBcImxlcnBDb2xvclwiLFxuICAgIFwicmVkXCIsXG4gICAgXCJzYXR1cmF0aW9uXCIsXG4gICAgXCJtb2RlbFhcIixcbiAgICBcIm1vZGVsWVwiLFxuICAgIFwibW9kZWxaXCIsXG4gICAgXCJzY3JlZW5YXCIsXG4gICAgXCJzY3JlZW5ZXCIsXG4gICAgXCJzY3JlZW5aXCIsXG4gICAgXCJhbWJpZW50XCIsXG4gICAgXCJlbWlzc2l2ZVwiLFxuICAgIFwic2hpbmluZXNzXCIsXG4gICAgXCJzcGVjdWxhclwiLFxuICAgIFwiYWRkXCIsXG4gICAgXCJjcmVhdGVJbWFnZVwiLFxuICAgIFwiYmVnaW5DYW1lcmFcIixcbiAgICBcImNhbWVyYVwiLFxuICAgIFwiZW5kQ2FtZXJhXCIsXG4gICAgXCJmcnVzdHVtXCIsXG4gICAgXCJvcnRob1wiLFxuICAgIFwicGVyc3BlY3RpdmVcIixcbiAgICBcInByaW50Q2FtZXJhXCIsXG4gICAgXCJwcmludFByb2plY3Rpb25cIixcbiAgICBcImN1cnNvclwiLFxuICAgIFwiZnJhbWVSYXRlXCIsXG4gICAgXCJub0N1cnNvclwiLFxuICAgIFwiZXhpdFwiLFxuICAgIFwibG9vcFwiLFxuICAgIFwibm9Mb29wXCIsXG4gICAgXCJwb3BTdHlsZVwiLFxuICAgIFwicHVzaFN0eWxlXCIsXG4gICAgXCJyZWRyYXdcIixcbiAgICBcImJpbmFyeVwiLFxuICAgIFwiYm9vbGVhblwiLFxuICAgIFwiYnl0ZVwiLFxuICAgIFwiY2hhclwiLFxuICAgIFwiZmxvYXRcIixcbiAgICBcImhleFwiLFxuICAgIFwiaW50XCIsXG4gICAgXCJzdHJcIixcbiAgICBcInVuYmluYXJ5XCIsXG4gICAgXCJ1bmhleFwiLFxuICAgIFwiam9pblwiLFxuICAgIFwibWF0Y2hcIixcbiAgICBcIm1hdGNoQWxsXCIsXG4gICAgXCJuZlwiLFxuICAgIFwibmZjXCIsXG4gICAgXCJuZnBcIixcbiAgICBcIm5mc1wiLFxuICAgIFwic3BsaXRcIixcbiAgICBcInNwbGl0VG9rZW5zXCIsXG4gICAgXCJ0cmltXCIsXG4gICAgXCJhcHBlbmRcIixcbiAgICBcImFycmF5Q29weVwiLFxuICAgIFwiY29uY2F0XCIsXG4gICAgXCJleHBhbmRcIixcbiAgICBcInJldmVyc2VcIixcbiAgICBcInNob3J0ZW5cIixcbiAgICBcInNvcnRcIixcbiAgICBcInNwbGljZVwiLFxuICAgIFwic3Vic2V0XCIsXG4gICAgXCJib3hcIixcbiAgICBcInNwaGVyZVwiLFxuICAgIFwic3BoZXJlRGV0YWlsXCIsXG4gICAgXCJjcmVhdGVJbnB1dFwiLFxuICAgIFwiY3JlYXRlUmVhZGVyXCIsXG4gICAgXCJsb2FkQnl0ZXNcIixcbiAgICBcImxvYWRKU09OQXJyYXlcIixcbiAgICBcImxvYWRKU09OT2JqZWN0XCIsXG4gICAgXCJsb2FkU3RyaW5nc1wiLFxuICAgIFwibG9hZFRhYmxlXCIsXG4gICAgXCJsb2FkWE1MXCIsXG4gICAgXCJvcGVuXCIsXG4gICAgXCJwYXJzZVhNTFwiLFxuICAgIFwic2F2ZVRhYmxlXCIsXG4gICAgXCJzZWxlY3RGb2xkZXJcIixcbiAgICBcInNlbGVjdElucHV0XCIsXG4gICAgXCJiZWdpblJhd1wiLFxuICAgIFwiYmVnaW5SZWNvcmRcIixcbiAgICBcImNyZWF0ZU91dHB1dFwiLFxuICAgIFwiY3JlYXRlV3JpdGVyXCIsXG4gICAgXCJlbmRSYXdcIixcbiAgICBcImVuZFJlY29yZFwiLFxuICAgIFwiUHJpbnRXcml0ZXJzYXZlQnl0ZXNcIixcbiAgICBcInNhdmVKU09OQXJyYXlcIixcbiAgICBcInNhdmVKU09OT2JqZWN0XCIsXG4gICAgXCJzYXZlU3RyZWFtXCIsXG4gICAgXCJzYXZlU3RyaW5nc1wiLFxuICAgIFwic2F2ZVhNTFwiLFxuICAgIFwic2VsZWN0T3V0cHV0XCIsXG4gICAgXCJwb3BNYXRyaXhcIixcbiAgICBcInByaW50TWF0cml4XCIsXG4gICAgXCJwdXNoTWF0cml4XCIsXG4gICAgXCJyZXNldE1hdHJpeFwiLFxuICAgIFwicm90YXRlXCIsXG4gICAgXCJyb3RhdGVYXCIsXG4gICAgXCJyb3RhdGVZXCIsXG4gICAgXCJyb3RhdGVaXCIsXG4gICAgXCJzY2FsZVwiLFxuICAgIFwic2hlYXJYXCIsXG4gICAgXCJzaGVhcllcIixcbiAgICBcInRyYW5zbGF0ZVwiLFxuICAgIFwiYW1iaWVudExpZ2h0XCIsXG4gICAgXCJkaXJlY3Rpb25hbExpZ2h0XCIsXG4gICAgXCJsaWdodEZhbGxvZmZcIixcbiAgICBcImxpZ2h0c1wiLFxuICAgIFwibGlnaHRTcGVjdWxhclwiLFxuICAgIFwibm9MaWdodHNcIixcbiAgICBcIm5vcm1hbFwiLFxuICAgIFwicG9pbnRMaWdodFwiLFxuICAgIFwic3BvdExpZ2h0XCIsXG4gICAgXCJpbWFnZVwiLFxuICAgIFwiaW1hZ2VNb2RlXCIsXG4gICAgXCJsb2FkSW1hZ2VcIixcbiAgICBcIm5vVGludFwiLFxuICAgIFwicmVxdWVzdEltYWdlXCIsXG4gICAgXCJ0aW50XCIsXG4gICAgXCJ0ZXh0dXJlXCIsXG4gICAgXCJ0ZXh0dXJlTW9kZVwiLFxuICAgIFwidGV4dHVyZVdyYXBcIixcbiAgICBcImJsZW5kXCIsXG4gICAgXCJjb3B5XCIsXG4gICAgXCJmaWx0ZXJcIixcbiAgICBcImdldFwiLFxuICAgIFwibG9hZFBpeGVsc1wiLFxuICAgIFwic2V0XCIsXG4gICAgXCJ1cGRhdGVQaXhlbHNcIixcbiAgICBcImJsZW5kTW9kZVwiLFxuICAgIFwibG9hZFNoYWRlclwiLFxuICAgIFwiUFNoYWRlcnJlc2V0U2hhZGVyXCIsXG4gICAgXCJzaGFkZXJcIixcbiAgICBcImNyZWF0ZUZvbnRcIixcbiAgICBcImxvYWRGb250XCIsXG4gICAgXCJ0ZXh0XCIsXG4gICAgXCJ0ZXh0Rm9udFwiLFxuICAgIFwidGV4dEFsaWduXCIsXG4gICAgXCJ0ZXh0TGVhZGluZ1wiLFxuICAgIFwidGV4dE1vZGVcIixcbiAgICBcInRleHRTaXplXCIsXG4gICAgXCJ0ZXh0V2lkdGhcIixcbiAgICBcInRleHRBc2NlbnRcIixcbiAgICBcInRleHREZXNjZW50XCIsXG4gICAgXCJhYnNcIixcbiAgICBcImNlaWxcIixcbiAgICBcImNvbnN0cmFpblwiLFxuICAgIFwiZGlzdFwiLFxuICAgIFwiZXhwXCIsXG4gICAgXCJmbG9vclwiLFxuICAgIFwibGVycFwiLFxuICAgIFwibG9nXCIsXG4gICAgXCJtYWdcIixcbiAgICBcIm1hcFwiLFxuICAgIFwibWF4XCIsXG4gICAgXCJtaW5cIixcbiAgICBcIm5vcm1cIixcbiAgICBcInBvd1wiLFxuICAgIFwicm91bmRcIixcbiAgICBcInNxXCIsXG4gICAgXCJzcXJ0XCIsXG4gICAgXCJhY29zXCIsXG4gICAgXCJhc2luXCIsXG4gICAgXCJhdGFuXCIsXG4gICAgXCJhdGFuMlwiLFxuICAgIFwiY29zXCIsXG4gICAgXCJkZWdyZWVzXCIsXG4gICAgXCJyYWRpYW5zXCIsXG4gICAgXCJzaW5cIixcbiAgICBcInRhblwiLFxuICAgIFwibm9pc2VcIixcbiAgICBcIm5vaXNlRGV0YWlsXCIsXG4gICAgXCJub2lzZVNlZWRcIixcbiAgICBcInJhbmRvbVwiLFxuICAgIFwicmFuZG9tR2F1c3NpYW5cIixcbiAgICBcInJhbmRvbVNlZWRcIlxuICBdO1xuICBjb25zdCBJREVOVCA9IGhsanMuSURFTlRfUkU7XG4gIGNvbnN0IEZVTkNfTkFNRSA9IHsgdmFyaWFudHM6IFtcbiAgICB7XG4gICAgICBtYXRjaDogcmVnZXguY29uY2F0KHJlZ2V4LmVpdGhlciguLi5CVUlMVF9JTlMpLCByZWdleC5sb29rYWhlYWQoL1xccypcXCgvKSksXG4gICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIlxuICAgIH0sXG4gICAge1xuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgbWF0Y2g6IHJlZ2V4LmNvbmNhdChcbiAgICAgICAgL1xcYig/IWZvcnxpZnx3aGlsZSkvLFxuICAgICAgICBJREVOVCwgcmVnZXgubG9va2FoZWFkKC9cXHMqXFwoLykpLFxuICAgICAgY2xhc3NOYW1lOiBcInRpdGxlLmZ1bmN0aW9uXCJcbiAgICB9XG4gIF0gfTtcbiAgY29uc3QgTkVXX0NMQVNTID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvbmV3XFxzKy8sXG4gICAgICBJREVOVFxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDI6IFwiY2xhc3MudGl0bGVcIlxuICAgIH1cbiAgfTtcbiAgY29uc3QgUFJPUEVSVFkgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIG1hdGNoOiBbXG4gICAgICAvXFwuLyxcbiAgICAgIElERU5UXG4gICAgXSxcbiAgICBjbGFzc05hbWU6IHsgMjogXCJwcm9wZXJ0eVwiIH1cbiAgfTtcbiAgY29uc3QgQ0xBU1MgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgbWF0Y2g6IFtcbiAgICAgICAgL2NsYXNzLyxcbiAgICAgICAgL1xccysvLFxuICAgICAgICBJREVOVCxcbiAgICAgICAgL1xccysvLFxuICAgICAgICAvZXh0ZW5kcy8sXG4gICAgICAgIC9cXHMrLyxcbiAgICAgICAgSURFTlRcbiAgICAgIF0gfSxcbiAgICAgIHsgbWF0Y2g6IFtcbiAgICAgICAgL2NsYXNzLyxcbiAgICAgICAgL1xccysvLFxuICAgICAgICBJREVOVFxuICAgICAgXSB9XG4gICAgXSxcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5jbGFzc1wiLFxuICAgICAgNTogXCJrZXl3b3JkXCIsXG4gICAgICA3OiBcInRpdGxlLmNsYXNzLmluaGVyaXRlZFwiXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFRZUEVTID0gW1xuICAgIFwiYm9vbGVhblwiLFxuICAgIFwiYnl0ZVwiLFxuICAgIFwiY2hhclwiLFxuICAgIFwiY29sb3JcIixcbiAgICBcImRvdWJsZVwiLFxuICAgIFwiZmxvYXRcIixcbiAgICBcImludFwiLFxuICAgIFwibG9uZ1wiLFxuICAgIFwic2hvcnRcIixcbiAgXTtcbiAgY29uc3QgQ0xBU1NFUyA9IFtcbiAgICBcIkJ1ZmZlcmVkUmVhZGVyXCIsXG4gICAgXCJQVmVjdG9yXCIsXG4gICAgXCJQRm9udFwiLFxuICAgIFwiUEltYWdlXCIsXG4gICAgXCJQR3JhcGhpY3NcIixcbiAgICBcIkhhc2hNYXBcIixcbiAgICBcIlN0cmluZ1wiLFxuICAgIFwiQXJyYXlcIixcbiAgICBcIkZsb2F0RGljdFwiLFxuICAgIFwiQXJyYXlMaXN0XCIsXG4gICAgXCJGbG9hdExpc3RcIixcbiAgICBcIkludERpY3RcIixcbiAgICBcIkludExpc3RcIixcbiAgICBcIkpTT05BcnJheVwiLFxuICAgIFwiSlNPTk9iamVjdFwiLFxuICAgIFwiT2JqZWN0XCIsXG4gICAgXCJTdHJpbmdEaWN0XCIsXG4gICAgXCJTdHJpbmdMaXN0XCIsXG4gICAgXCJUYWJsZVwiLFxuICAgIFwiVGFibGVSb3dcIixcbiAgICBcIlhNTFwiXG4gIF07XG4gIGNvbnN0IEpBVkFfS0VZV09SRFMgPSBbXG4gICAgXCJhYnN0cmFjdFwiLFxuICAgIFwiYXNzZXJ0XCIsXG4gICAgXCJicmVha1wiLFxuICAgIFwiY2FzZVwiLFxuICAgIFwiY2F0Y2hcIixcbiAgICBcImNvbnN0XCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZGVmYXVsdFwiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwiZW51bVwiLFxuICAgIFwiZmluYWxcIixcbiAgICBcImZpbmFsbHlcIixcbiAgICBcImZvclwiLFxuICAgIFwiaWZcIixcbiAgICBcImltcG9ydFwiLFxuICAgIFwiaW5zdGFuY2VvZlwiLFxuICAgIFwibG9uZ1wiLFxuICAgIFwibmF0aXZlXCIsXG4gICAgXCJuZXdcIixcbiAgICBcInBhY2thZ2VcIixcbiAgICBcInByaXZhdGVcIixcbiAgICBcInByaXZhdGVcIixcbiAgICBcInByb3RlY3RlZFwiLFxuICAgIFwicHJvdGVjdGVkXCIsXG4gICAgXCJwdWJsaWNcIixcbiAgICBcInB1YmxpY1wiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJzdGF0aWNcIixcbiAgICBcInN0cmljdGZwXCIsXG4gICAgXCJzd2l0Y2hcIixcbiAgICBcInN5bmNocm9uaXplZFwiLFxuICAgIFwidGhyb3dcIixcbiAgICBcInRocm93c1wiLFxuICAgIFwidHJhbnNpZW50XCIsXG4gICAgXCJ0cnlcIixcbiAgICBcInZvaWRcIixcbiAgICBcInZvbGF0aWxlXCIsXG4gICAgXCJ3aGlsZVwiXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnUHJvY2Vzc2luZycsXG4gICAgYWxpYXNlczogWyAncGRlJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBbIC4uLkpBVkFfS0VZV09SRFMgXSxcbiAgICAgIGxpdGVyYWw6ICdQMkQgUDNEIEhBTEZfUEkgUEkgUVVBUlRFUl9QSSBUQVUgVFdPX1BJIG51bGwgdHJ1ZSBmYWxzZScsXG4gICAgICB0aXRsZTogJ3NldHVwIGRyYXcnLFxuICAgICAgdmFyaWFibGU6IFwic3VwZXIgdGhpc1wiLFxuICAgICAgYnVpbHRfaW46IFtcbiAgICAgICAgLi4uQlVJTFRfSU5TLFxuICAgICAgICAuLi5DTEFTU0VTXG4gICAgICBdLFxuICAgICAgdHlwZTogVFlQRVNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDTEFTUyxcbiAgICAgIE5FV19DTEFTUyxcbiAgICAgIEZVTkNfTkFNRSxcbiAgICAgIFBST1BFUlRZLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcHJvY2Vzc2luZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1518\n')},1544:module=>{eval("/*\nLanguage: Mercury\nAuthor: mucaho \nDescription: Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features.\nWebsite: https://www.mercurylang.org\nCategory: functional\n*/\n\nfunction mercury(hljs) {\n const KEYWORDS = {\n keyword:\n 'module use_module import_module include_module end_module initialise '\n + 'mutable initialize finalize finalise interface implementation pred '\n + 'mode func type inst solver any_pred any_func is semidet det nondet '\n + 'multi erroneous failure cc_nondet cc_multi typeclass instance where '\n + 'pragma promise external trace atomic or_else require_complete_switch '\n + 'require_det require_semidet require_multi require_nondet '\n + 'require_cc_multi require_cc_nondet require_erroneous require_failure',\n meta:\n // pragma\n 'inline no_inline type_spec source_file fact_table obsolete memo '\n + 'loop_check minimal_model terminates does_not_terminate '\n + 'check_termination promise_equivalent_clauses '\n // preprocessor\n + 'foreign_proc foreign_decl foreign_code foreign_type '\n + 'foreign_import_module foreign_export_enum foreign_export '\n + 'foreign_enum may_call_mercury will_not_call_mercury thread_safe '\n + 'not_thread_safe maybe_thread_safe promise_pure promise_semipure '\n + 'tabled_for_io local untrailed trailed attach_to_io_state '\n + 'can_pass_as_mercury_type stable will_not_throw_exception '\n + 'may_modify_trail will_not_modify_trail may_duplicate '\n + 'may_not_duplicate affects_liveness does_not_affect_liveness '\n + 'doesnt_affect_liveness no_sharing unknown_sharing sharing',\n built_in:\n 'some all not if then else true fail false try catch catch_any '\n + 'semidet_true semidet_false semidet_fail impure_true impure semipure'\n };\n\n const COMMENT = hljs.COMMENT('%', '$');\n\n const NUMCODE = {\n className: 'number',\n begin: \"0'.\\\\|0[box][0-9a-fA-F]*\"\n };\n\n const ATOM = hljs.inherit(hljs.APOS_STRING_MODE, { relevance: 0 });\n const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 });\n const STRING_FMT = {\n className: 'subst',\n begin: '\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',\n relevance: 0\n };\n STRING.contains = STRING.contains.slice(); // we need our own copy of contains\n STRING.contains.push(STRING_FMT);\n\n const IMPLICATION = {\n className: 'built_in',\n variants: [\n { begin: '<=>' },\n {\n begin: '<=',\n relevance: 0\n },\n {\n begin: '=>',\n relevance: 0\n },\n { begin: '/\\\\\\\\' },\n { begin: '\\\\\\\\/' }\n ]\n };\n\n const HEAD_BODY_CONJUNCTION = {\n className: 'built_in',\n variants: [\n { begin: ':-\\\\|--\x3e' },\n {\n begin: '=',\n relevance: 0\n }\n ]\n };\n\n return {\n name: 'Mercury',\n aliases: [\n 'm',\n 'moo'\n ],\n keywords: KEYWORDS,\n contains: [\n IMPLICATION,\n HEAD_BODY_CONJUNCTION,\n COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMCODE,\n hljs.NUMBER_MODE,\n ATOM,\n STRING,\n { // relevance booster\n begin: /:-/ },\n { // relevance booster\n begin: /\\.$/ }\n ]\n };\n}\n\nmodule.exports = mercury;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU0NC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFEQUFxRCxjQUFjO0FBQ25FLHdEQUF3RCxjQUFjO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxjQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsUUFBUSxnQkFBZ0I7QUFDeEIsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtQkFBbUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLHFCQUFxQjtBQUNyQixRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21lcmN1cnkuanM/MWJjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE1lcmN1cnlcbkF1dGhvcjogbXVjYWhvIDxta3Vja29AZ21haWwuY29tPlxuRGVzY3JpcHRpb246IE1lcmN1cnkgaXMgYSBsb2dpYy9mdW5jdGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlIHdoaWNoIGNvbWJpbmVzIHRoZSBjbGFyaXR5IGFuZCBleHByZXNzaXZlbmVzcyBvZiBkZWNsYXJhdGl2ZSBwcm9ncmFtbWluZyB3aXRoIGFkdmFuY2VkIHN0YXRpYyBhbmFseXNpcyBhbmQgZXJyb3IgZGV0ZWN0aW9uIGZlYXR1cmVzLlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cubWVyY3VyeWxhbmcub3JnXG5DYXRlZ29yeTogZnVuY3Rpb25hbFxuKi9cblxuZnVuY3Rpb24gbWVyY3VyeShobGpzKSB7XG4gIGNvbnN0IEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6XG4gICAgICAnbW9kdWxlIHVzZV9tb2R1bGUgaW1wb3J0X21vZHVsZSBpbmNsdWRlX21vZHVsZSBlbmRfbW9kdWxlIGluaXRpYWxpc2UgJ1xuICAgICAgKyAnbXV0YWJsZSBpbml0aWFsaXplIGZpbmFsaXplIGZpbmFsaXNlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBwcmVkICdcbiAgICAgICsgJ21vZGUgZnVuYyB0eXBlIGluc3Qgc29sdmVyIGFueV9wcmVkIGFueV9mdW5jIGlzIHNlbWlkZXQgZGV0IG5vbmRldCAnXG4gICAgICArICdtdWx0aSBlcnJvbmVvdXMgZmFpbHVyZSBjY19ub25kZXQgY2NfbXVsdGkgdHlwZWNsYXNzIGluc3RhbmNlIHdoZXJlICdcbiAgICAgICsgJ3ByYWdtYSBwcm9taXNlIGV4dGVybmFsIHRyYWNlIGF0b21pYyBvcl9lbHNlIHJlcXVpcmVfY29tcGxldGVfc3dpdGNoICdcbiAgICAgICsgJ3JlcXVpcmVfZGV0IHJlcXVpcmVfc2VtaWRldCByZXF1aXJlX211bHRpIHJlcXVpcmVfbm9uZGV0ICdcbiAgICAgICsgJ3JlcXVpcmVfY2NfbXVsdGkgcmVxdWlyZV9jY19ub25kZXQgcmVxdWlyZV9lcnJvbmVvdXMgcmVxdWlyZV9mYWlsdXJlJyxcbiAgICBtZXRhOlxuICAgICAgLy8gcHJhZ21hXG4gICAgICAnaW5saW5lIG5vX2lubGluZSB0eXBlX3NwZWMgc291cmNlX2ZpbGUgZmFjdF90YWJsZSBvYnNvbGV0ZSBtZW1vICdcbiAgICAgICsgJ2xvb3BfY2hlY2sgbWluaW1hbF9tb2RlbCB0ZXJtaW5hdGVzIGRvZXNfbm90X3Rlcm1pbmF0ZSAnXG4gICAgICArICdjaGVja190ZXJtaW5hdGlvbiBwcm9taXNlX2VxdWl2YWxlbnRfY2xhdXNlcyAnXG4gICAgICAvLyBwcmVwcm9jZXNzb3JcbiAgICAgICsgJ2ZvcmVpZ25fcHJvYyBmb3JlaWduX2RlY2wgZm9yZWlnbl9jb2RlIGZvcmVpZ25fdHlwZSAnXG4gICAgICArICdmb3JlaWduX2ltcG9ydF9tb2R1bGUgZm9yZWlnbl9leHBvcnRfZW51bSBmb3JlaWduX2V4cG9ydCAnXG4gICAgICArICdmb3JlaWduX2VudW0gbWF5X2NhbGxfbWVyY3VyeSB3aWxsX25vdF9jYWxsX21lcmN1cnkgdGhyZWFkX3NhZmUgJ1xuICAgICAgKyAnbm90X3RocmVhZF9zYWZlIG1heWJlX3RocmVhZF9zYWZlIHByb21pc2VfcHVyZSBwcm9taXNlX3NlbWlwdXJlICdcbiAgICAgICsgJ3RhYmxlZF9mb3JfaW8gbG9jYWwgdW50cmFpbGVkIHRyYWlsZWQgYXR0YWNoX3RvX2lvX3N0YXRlICdcbiAgICAgICsgJ2Nhbl9wYXNzX2FzX21lcmN1cnlfdHlwZSBzdGFibGUgd2lsbF9ub3RfdGhyb3dfZXhjZXB0aW9uICdcbiAgICAgICsgJ21heV9tb2RpZnlfdHJhaWwgd2lsbF9ub3RfbW9kaWZ5X3RyYWlsIG1heV9kdXBsaWNhdGUgJ1xuICAgICAgKyAnbWF5X25vdF9kdXBsaWNhdGUgYWZmZWN0c19saXZlbmVzcyBkb2VzX25vdF9hZmZlY3RfbGl2ZW5lc3MgJ1xuICAgICAgKyAnZG9lc250X2FmZmVjdF9saXZlbmVzcyBub19zaGFyaW5nIHVua25vd25fc2hhcmluZyBzaGFyaW5nJyxcbiAgICBidWlsdF9pbjpcbiAgICAgICdzb21lIGFsbCBub3QgaWYgdGhlbiBlbHNlIHRydWUgZmFpbCBmYWxzZSB0cnkgY2F0Y2ggY2F0Y2hfYW55ICdcbiAgICAgICsgJ3NlbWlkZXRfdHJ1ZSBzZW1pZGV0X2ZhbHNlIHNlbWlkZXRfZmFpbCBpbXB1cmVfdHJ1ZSBpbXB1cmUgc2VtaXB1cmUnXG4gIH07XG5cbiAgY29uc3QgQ09NTUVOVCA9IGhsanMuQ09NTUVOVCgnJScsICckJyk7XG5cbiAgY29uc3QgTlVNQ09ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiBcIjAnLlxcXFx8MFtib3hdWzAtOWEtZkEtRl0qXCJcbiAgfTtcblxuICBjb25zdCBBVE9NID0gaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwgeyByZWxldmFuY2U6IDAgfSk7XG4gIGNvbnN0IFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IHJlbGV2YW5jZTogMCB9KTtcbiAgY29uc3QgU1RSSU5HX0ZNVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcXFxcXFthYmZucnR2XVxcXFx8XFxcXFxcXFx4WzAtOWEtZkEtRl0qXFxcXFxcXFxcXFxcfCVbLSsjICouMC05XSpbZGlveFh1Y3NmZUVnR3BdJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgU1RSSU5HLmNvbnRhaW5zID0gU1RSSU5HLmNvbnRhaW5zLnNsaWNlKCk7IC8vIHdlIG5lZWQgb3VyIG93biBjb3B5IG9mIGNvbnRhaW5zXG4gIFNUUklORy5jb250YWlucy5wdXNoKFNUUklOR19GTVQpO1xuXG4gIGNvbnN0IElNUExJQ0FUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJzw9PicgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc8PScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICc9PicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgYmVnaW46ICcvXFxcXFxcXFwnIH0sXG4gICAgICB7IGJlZ2luOiAnXFxcXFxcXFwvJyB9XG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IEhFQURfQk9EWV9DT05KVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICc6LVxcXFx8LS0+JyB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJz0nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnTWVyY3VyeScsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ20nLFxuICAgICAgJ21vbydcbiAgICBdLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBjb250YWluczogW1xuICAgICAgSU1QTElDQVRJT04sXG4gICAgICBIRUFEX0JPRFlfQ09OSlVOQ1RJT04sXG4gICAgICBDT01NRU5ULFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIE5VTUNPREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgQVRPTSxcbiAgICAgIFNUUklORyxcbiAgICAgIHsgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgICAgYmVnaW46IC86LS8gfSxcbiAgICAgIHsgLy8gcmVsZXZhbmNlIGJvb3N0ZXJcbiAgICAgICAgYmVnaW46IC9cXC4kLyB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmN1cnk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1544\n")},1565:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar common = __webpack_require__(2489);\nvar Type = __webpack_require__(2500);\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU2NS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLG1CQUFPLENBQUMsSUFBVztBQUNoQyxhQUFhLG1CQUFPLENBQUMsSUFBUzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKOztBQUVBLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzLXlhbWxAMy4xNC4xL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvZmxvYXQuanM/YWYyZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBUeXBlICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBZQU1MX0ZMT0FUX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICAvLyAyLjVlNCwgMi41IGFuZCBpbnRlZ2Vyc1xuICAnXig/OlstK10/KD86MHxbMS05XVswLTlfXSopKD86XFxcXC5bMC05X10qKT8oPzpbZUVdWy0rXT9bMC05XSspPycgK1xuICAvLyAuMmU0LCAuMlxuICAvLyBzcGVjaWFsIGNhc2UsIHNlZW1zIG5vdCBmcm9tIHNwZWNcbiAgJ3xcXFxcLlswLTlfXSsoPzpbZUVdWy0rXT9bMC05XSspPycgK1xuICAvLyAyMDo1OVxuICAnfFstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKStcXFxcLlswLTlfXSonICtcbiAgLy8gLmluZlxuICAnfFstK10/XFxcXC4oPzppbmZ8SW5mfElORiknICtcbiAgLy8gLm5hblxuICAnfFxcXFwuKD86bmFufE5hTnxOQU4pKSQnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxGbG9hdChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKCFZQU1MX0ZMT0FUX1BBVFRFUk4udGVzdChkYXRhKSB8fFxuICAgICAgLy8gUXVpY2sgaGFjayB0byBub3QgYWxsb3cgaW50ZWdlcnMgZW5kIHdpdGggYF9gXG4gICAgICAvLyBQcm9iYWJseSBzaG91bGQgdXBkYXRlIHJlZ2V4cCAmIGNoZWNrIHNwZWVkXG4gICAgICBkYXRhW2RhdGEubGVuZ3RoIC0gMV0gPT09ICdfJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sRmxvYXQoZGF0YSkge1xuICB2YXIgdmFsdWUsIHNpZ24sIGJhc2UsIGRpZ2l0cztcblxuICB2YWx1ZSAgPSBkYXRhLnJlcGxhY2UoL18vZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIHNpZ24gICA9IHZhbHVlWzBdID09PSAnLScgPyAtMSA6IDE7XG4gIGRpZ2l0cyA9IFtdO1xuXG4gIGlmICgnKy0nLmluZGV4T2YodmFsdWVbMF0pID49IDApIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnLmluZicpIHtcbiAgICByZXR1cm4gKHNpZ24gPT09IDEpID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXG4gIH0gZWxzZSBpZiAodmFsdWUgPT09ICcubmFuJykge1xuICAgIHJldHVybiBOYU47XG5cbiAgfSBlbHNlIGlmICh2YWx1ZS5pbmRleE9mKCc6JykgPj0gMCkge1xuICAgIHZhbHVlLnNwbGl0KCc6JykuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgZGlnaXRzLnVuc2hpZnQocGFyc2VGbG9hdCh2LCAxMCkpO1xuICAgIH0pO1xuXG4gICAgdmFsdWUgPSAwLjA7XG4gICAgYmFzZSA9IDE7XG5cbiAgICBkaWdpdHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgdmFsdWUgKz0gZCAqIGJhc2U7XG4gICAgICBiYXNlICo9IDYwO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ24gKiB2YWx1ZTtcblxuICB9XG4gIHJldHVybiBzaWduICogcGFyc2VGbG9hdCh2YWx1ZSwgMTApO1xufVxuXG5cbnZhciBTQ0lFTlRJRklDX1dJVEhPVVRfRE9UID0gL15bLStdP1swLTldK2UvO1xuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sRmxvYXQob2JqZWN0LCBzdHlsZSkge1xuICB2YXIgcmVzO1xuXG4gIGlmIChpc05hTihvYmplY3QpKSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcubmFuJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLk5BTic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5OYU4nO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLmluZic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5JTkYnO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuSW5mJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy0uaW5mJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLS5JTkYnO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICctLkluZic7XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKSB7XG4gICAgcmV0dXJuICctMC4wJztcbiAgfVxuXG4gIHJlcyA9IG9iamVjdC50b1N0cmluZygxMCk7XG5cbiAgLy8gSlMgc3RyaW5naWZpZXIgY2FuIGJ1aWxkIHNjaWVudGlmaWMgZm9ybWF0IHdpdGhvdXQgZG90czogNWUtMTAwLFxuICAvLyB3aGlsZSBZQU1MIHJlcXVyZXMgZG90OiA1LmUtMTAwLiBGaXggaXQgd2l0aCBzaW1wbGUgaGFja1xuXG4gIHJldHVybiBTQ0lFTlRJRklDX1dJVEhPVVRfRE9ULnRlc3QocmVzKSA/IHJlcy5yZXBsYWNlKCdlJywgJy5lJykgOiByZXM7XG59XG5cbmZ1bmN0aW9uIGlzRmxvYXQob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IE51bWJlcl0nKSAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgIT09IDAgfHwgY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sRmxvYXQsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEZsb2F0LFxuICBwcmVkaWNhdGU6IGlzRmxvYXQsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEZsb2F0LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1565\n")},1617:module=>{eval("// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\nLanguage: Java\nAuthor: Vsevolod Solovyov \nCategory: common, enterprise\nWebsite: https://www.java.com/\n*/\n\n\n/**\n * Allows recursive regex expressions to a given depth\n *\n * ie: recurRegex(\"(abc~~~)\", /~~~/g, 2) becomes:\n * (abc(abc(abc)))\n *\n * @param {string} re\n * @param {RegExp} substitution (should be a g mode regex)\n * @param {number} depth\n * @returns {string}``\n */\nfunction recurRegex(re, substitution, depth) {\n if (depth === -1) return \"\";\n\n return re.replace(substitution, _ => {\n return recurRegex(re, substitution, depth - 1);\n });\n}\n\n/** @type LanguageFn */\nfunction java(hljs) {\n const regex = hljs.regex;\n const JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n const GENERIC_IDENT_RE = JAVA_IDENT_RE\n + recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\\\s*,\\\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2);\n const MAIN_KEYWORDS = [\n 'synchronized',\n 'abstract',\n 'private',\n 'var',\n 'static',\n 'if',\n 'const ',\n 'for',\n 'while',\n 'strictfp',\n 'finally',\n 'protected',\n 'import',\n 'native',\n 'final',\n 'void',\n 'enum',\n 'else',\n 'break',\n 'transient',\n 'catch',\n 'instanceof',\n 'volatile',\n 'case',\n 'assert',\n 'package',\n 'default',\n 'public',\n 'try',\n 'switch',\n 'continue',\n 'throws',\n 'protected',\n 'public',\n 'private',\n 'module',\n 'requires',\n 'exports',\n 'do',\n 'sealed',\n 'yield',\n 'permits',\n 'goto',\n 'when'\n ];\n\n const BUILT_INS = [\n 'super',\n 'this'\n ];\n\n const LITERALS = [\n 'false',\n 'true',\n 'null'\n ];\n\n const TYPES = [\n 'char',\n 'boolean',\n 'long',\n 'float',\n 'int',\n 'byte',\n 'short',\n 'double'\n ];\n\n const KEYWORDS = {\n keyword: MAIN_KEYWORDS,\n literal: LITERALS,\n type: TYPES,\n built_in: BUILT_INS\n };\n\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + JAVA_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [ \"self\" ] // allow nested () inside our annotation\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [ hljs.C_BLOCK_COMMENT_MODE ],\n endsParent: true\n };\n\n return {\n name: 'Java',\n aliases: [ 'jsp' ],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n // relevance boost\n {\n begin: /import java\\.[a-z]+\\./,\n keywords: \"import\",\n relevance: 2\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n match: [\n /\\b(?:class|interface|enum|extends|implements|new)/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n // Exceptions for hyphenated keywords\n match: /non-sealed/,\n scope: \"keyword\"\n },\n {\n begin: [\n regex.concat(/(?!else)/, JAVA_IDENT_RE),\n /\\s+/,\n JAVA_IDENT_RE,\n /\\s+/,\n /=(?!=)/\n ],\n className: {\n 1: \"type\",\n 3: \"variable\",\n 5: \"operator\"\n }\n },\n {\n begin: [\n /record/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n contains: [\n PARAMS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n begin: [\n '(?:' + GENERIC_IDENT_RE + '\\\\s+)',\n hljs.UNDERSCORE_IDENT_RE,\n /\\s*(?=\\()/\n ],\n className: { 2: \"title.function\" },\n keywords: KEYWORDS,\n contains: [\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n ANNOTATION,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMERIC,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n NUMERIC,\n ANNOTATION\n ]\n };\n}\n\nmodule.exports = java;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYxNy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxlQUFlLGNBQWMsS0FBSyxLQUFLLFdBQVcsS0FBSztBQUM3RCxtQkFBbUIsY0FBYyxjQUFjO0FBQy9DO0FBQ0EsTUFBTSxjQUFjLGNBQWMsS0FBSyxLQUFLLCtCQUErQjtBQUMzRSxNQUFNLFdBQVcsS0FBSyxjQUFjO0FBQ3BDLE1BQU0sY0FBYyxjQUFjLGFBQWE7O0FBRS9DO0FBQ0EsTUFBTSxvQkFBb0IsVUFBVSxTQUFTLFVBQVUsUUFBUSxVQUFVO0FBQ3pFLG1CQUFtQixjQUFjLGNBQWM7O0FBRS9DO0FBQ0EsTUFBTSx5Q0FBeUM7O0FBRS9DO0FBQ0EsTUFBTSxtQkFBbUIsVUFBVSxZQUFZOztBQUUvQztBQUNBLE1BQU0saUNBQWlDOztBQUV2QztBQUNBLE1BQU0sd0NBQXdDO0FBQzlDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvamF2YS5qcz8wMzY2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS9zcGVjcy9qbHMvc2UxNS9odG1sL2pscy0zLmh0bWwjamxzLTMuMTBcbnZhciBkZWNpbWFsRGlnaXRzID0gJ1swLTldKF8qWzAtOV0pKic7XG52YXIgZnJhYyA9IGBcXFxcLigke2RlY2ltYWxEaWdpdHN9KWA7XG52YXIgaGV4RGlnaXRzID0gJ1swLTlhLWZBLUZdKF8qWzAtOWEtZkEtRl0pKic7XG52YXIgTlVNRVJJQyA9IHtcbiAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgdmFyaWFudHM6IFtcbiAgICAvLyBEZWNpbWFsRmxvYXRpbmdQb2ludExpdGVyYWxcbiAgICAvLyBpbmNsdWRpbmcgRXhwb25lbnRQYXJ0XG4gICAgeyBiZWdpbjogYChcXFxcYigke2RlY2ltYWxEaWdpdHN9KSgoJHtmcmFjfSl8XFxcXC4pP3woJHtmcmFjfSkpYCArXG4gICAgICBgW2VFXVsrLV0/KCR7ZGVjaW1hbERpZ2l0c30pW2ZGZERdP1xcXFxiYCB9LFxuICAgIC8vIGV4Y2x1ZGluZyBFeHBvbmVudFBhcnRcbiAgICB7IGJlZ2luOiBgXFxcXGIoJHtkZWNpbWFsRGlnaXRzfSkoKCR7ZnJhY30pW2ZGZERdP1xcXFxifFxcXFwuKFtmRmREXVxcXFxiKT8pYCB9LFxuICAgIHsgYmVnaW46IGAoJHtmcmFjfSlbZkZkRF0/XFxcXGJgIH0sXG4gICAgeyBiZWdpbjogYFxcXFxiKCR7ZGVjaW1hbERpZ2l0c30pW2ZGZERdXFxcXGJgIH0sXG5cbiAgICAvLyBIZXhhZGVjaW1hbEZsb2F0aW5nUG9pbnRMaXRlcmFsXG4gICAgeyBiZWdpbjogYFxcXFxiMFt4WF0oKCR7aGV4RGlnaXRzfSlcXFxcLj98KCR7aGV4RGlnaXRzfSk/XFxcXC4oJHtoZXhEaWdpdHN9KSlgICtcbiAgICAgIGBbcFBdWystXT8oJHtkZWNpbWFsRGlnaXRzfSlbZkZkRF0/XFxcXGJgIH0sXG5cbiAgICAvLyBEZWNpbWFsSW50ZWdlckxpdGVyYWxcbiAgICB7IGJlZ2luOiAnXFxcXGIoMHxbMS05XShfKlswLTldKSopW2xMXT9cXFxcYicgfSxcblxuICAgIC8vIEhleEludGVnZXJMaXRlcmFsXG4gICAgeyBiZWdpbjogYFxcXFxiMFt4WF0oJHtoZXhEaWdpdHN9KVtsTF0/XFxcXGJgIH0sXG5cbiAgICAvLyBPY3RhbEludGVnZXJMaXRlcmFsXG4gICAgeyBiZWdpbjogJ1xcXFxiMChfKlswLTddKSpbbExdP1xcXFxiJyB9LFxuXG4gICAgLy8gQmluYXJ5SW50ZWdlckxpdGVyYWxcbiAgICB7IGJlZ2luOiAnXFxcXGIwW2JCXVswMV0oXypbMDFdKSpbbExdP1xcXFxiJyB9LFxuICBdLFxuICByZWxldmFuY2U6IDBcbn07XG5cbi8qXG5MYW5ndWFnZTogSmF2YVxuQXV0aG9yOiBWc2V2b2xvZCBTb2xvdnlvdiA8dnNldm9sb2Quc29sb3Z5b3ZAZ21haWwuY29tPlxuQ2F0ZWdvcnk6IGNvbW1vbiwgZW50ZXJwcmlzZVxuV2Vic2l0ZTogaHR0cHM6Ly93d3cuamF2YS5jb20vXG4qL1xuXG5cbi8qKlxuICogQWxsb3dzIHJlY3Vyc2l2ZSByZWdleCBleHByZXNzaW9ucyB0byBhIGdpdmVuIGRlcHRoXG4gKlxuICogaWU6IHJlY3VyUmVnZXgoXCIoYWJjfn5+KVwiLCAvfn5+L2csIDIpIGJlY29tZXM6XG4gKiAoYWJjKGFiYyhhYmMpKSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVcbiAqIEBwYXJhbSB7UmVnRXhwfSBzdWJzdGl0dXRpb24gKHNob3VsZCBiZSBhIGcgbW9kZSByZWdleClcbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aFxuICogQHJldHVybnMge3N0cmluZ31gYFxuICovXG5mdW5jdGlvbiByZWN1clJlZ2V4KHJlLCBzdWJzdGl0dXRpb24sIGRlcHRoKSB7XG4gIGlmIChkZXB0aCA9PT0gLTEpIHJldHVybiBcIlwiO1xuXG4gIHJldHVybiByZS5yZXBsYWNlKHN1YnN0aXR1dGlvbiwgXyA9PiB7XG4gICAgcmV0dXJuIHJlY3VyUmVnZXgocmUsIHN1YnN0aXR1dGlvbiwgZGVwdGggLSAxKTtcbiAgfSk7XG59XG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBqYXZhKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBKQVZBX0lERU5UX1JFID0gJ1tcXHUwMEMwLVxcdTAyQjhhLXpBLVpfJF1bXFx1MDBDMC1cXHUwMkI4YS16QS1aXyQwLTldKic7XG4gIGNvbnN0IEdFTkVSSUNfSURFTlRfUkUgPSBKQVZBX0lERU5UX1JFXG4gICAgKyByZWN1clJlZ2V4KCcoPzo8JyArIEpBVkFfSURFTlRfUkUgKyAnfn5+KD86XFxcXHMqLFxcXFxzKicgKyBKQVZBX0lERU5UX1JFICsgJ35+fikqPik/JywgL35+fi9nLCAyKTtcbiAgY29uc3QgTUFJTl9LRVlXT1JEUyA9IFtcbiAgICAnc3luY2hyb25pemVkJyxcbiAgICAnYWJzdHJhY3QnLFxuICAgICdwcml2YXRlJyxcbiAgICAndmFyJyxcbiAgICAnc3RhdGljJyxcbiAgICAnaWYnLFxuICAgICdjb25zdCAnLFxuICAgICdmb3InLFxuICAgICd3aGlsZScsXG4gICAgJ3N0cmljdGZwJyxcbiAgICAnZmluYWxseScsXG4gICAgJ3Byb3RlY3RlZCcsXG4gICAgJ2ltcG9ydCcsXG4gICAgJ25hdGl2ZScsXG4gICAgJ2ZpbmFsJyxcbiAgICAndm9pZCcsXG4gICAgJ2VudW0nLFxuICAgICdlbHNlJyxcbiAgICAnYnJlYWsnLFxuICAgICd0cmFuc2llbnQnLFxuICAgICdjYXRjaCcsXG4gICAgJ2luc3RhbmNlb2YnLFxuICAgICd2b2xhdGlsZScsXG4gICAgJ2Nhc2UnLFxuICAgICdhc3NlcnQnLFxuICAgICdwYWNrYWdlJyxcbiAgICAnZGVmYXVsdCcsXG4gICAgJ3B1YmxpYycsXG4gICAgJ3RyeScsXG4gICAgJ3N3aXRjaCcsXG4gICAgJ2NvbnRpbnVlJyxcbiAgICAndGhyb3dzJyxcbiAgICAncHJvdGVjdGVkJyxcbiAgICAncHVibGljJyxcbiAgICAncHJpdmF0ZScsXG4gICAgJ21vZHVsZScsXG4gICAgJ3JlcXVpcmVzJyxcbiAgICAnZXhwb3J0cycsXG4gICAgJ2RvJyxcbiAgICAnc2VhbGVkJyxcbiAgICAneWllbGQnLFxuICAgICdwZXJtaXRzJyxcbiAgICAnZ290bycsXG4gICAgJ3doZW4nXG4gIF07XG5cbiAgY29uc3QgQlVJTFRfSU5TID0gW1xuICAgICdzdXBlcicsXG4gICAgJ3RoaXMnXG4gIF07XG5cbiAgY29uc3QgTElURVJBTFMgPSBbXG4gICAgJ2ZhbHNlJyxcbiAgICAndHJ1ZScsXG4gICAgJ251bGwnXG4gIF07XG5cbiAgY29uc3QgVFlQRVMgPSBbXG4gICAgJ2NoYXInLFxuICAgICdib29sZWFuJyxcbiAgICAnbG9uZycsXG4gICAgJ2Zsb2F0JyxcbiAgICAnaW50JyxcbiAgICAnYnl0ZScsXG4gICAgJ3Nob3J0JyxcbiAgICAnZG91YmxlJ1xuICBdO1xuXG4gIGNvbnN0IEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6IE1BSU5fS0VZV09SRFMsXG4gICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgdHlwZTogVFlQRVMsXG4gICAgYnVpbHRfaW46IEJVSUxUX0lOU1xuICB9O1xuXG4gIGNvbnN0IEFOTk9UQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAJyArIEpBVkFfSURFTlRfUkUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogWyBcInNlbGZcIiBdIC8vIGFsbG93IG5lc3RlZCAoKSBpbnNpZGUgb3VyIGFubm90YXRpb25cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFsgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSBdLFxuICAgIGVuZHNQYXJlbnQ6IHRydWVcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdKYXZhJyxcbiAgICBhbGlhc2VzOiBbICdqc3AnIF0sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC88XFwvfCMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXCpcXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGVhdCB1cCBAJ3MgaW4gZW1haWxzIHRvIHByZXZlbnQgdGhlbSB0byBiZSByZWNvZ25pemVkIGFzIGRvY3RhZ3NcbiAgICAgICAgICAgICAgYmVnaW46IC9cXHcrQC8sXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIC8vIHJlbGV2YW5jZSBib29zdFxuICAgICAge1xuICAgICAgICBiZWdpbjogL2ltcG9ydCBqYXZhXFwuW2Etel0rXFwuLyxcbiAgICAgICAga2V5d29yZHM6IFwiaW1wb3J0XCIsXG4gICAgICAgIHJlbGV2YW5jZTogMlxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCJcIlwiLyxcbiAgICAgICAgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL1xcYig/OmNsYXNzfGludGVyZmFjZXxlbnVtfGV4dGVuZHN8aW1wbGVtZW50c3xuZXcpLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSkFWQV9JREVOVF9SRVxuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmNsYXNzXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gRXhjZXB0aW9ucyBmb3IgaHlwaGVuYXRlZCBrZXl3b3Jkc1xuICAgICAgICBtYXRjaDogL25vbi1zZWFsZWQvLFxuICAgICAgICBzY29wZTogXCJrZXl3b3JkXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBbXG4gICAgICAgICAgcmVnZXguY29uY2F0KC8oPyFlbHNlKS8sIEpBVkFfSURFTlRfUkUpLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICBKQVZBX0lERU5UX1JFLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICAvPSg/IT0pL1xuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAxOiBcInR5cGVcIixcbiAgICAgICAgICAzOiBcInZhcmlhYmxlXCIsXG4gICAgICAgICAgNTogXCJvcGVyYXRvclwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBbXG4gICAgICAgICAgL3JlY29yZC8sXG4gICAgICAgICAgL1xccysvLFxuICAgICAgICAgIEpBVkFfSURFTlRfUkVcbiAgICAgICAgXSxcbiAgICAgICAgY2xhc3NOYW1lOiB7XG4gICAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgMzogXCJ0aXRsZS5jbGFzc1wiXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgUEFSQU1TLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEV4cHJlc3Npb24ga2V5d29yZHMgcHJldmVudCAna2V5d29yZCBOYW1lKC4uLiknIGZyb20gYmVpbmdcbiAgICAgICAgLy8gcmVjb2duaXplZCBhcyBhIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICAnKD86JyArIEdFTkVSSUNfSURFTlRfUkUgKyAnXFxcXHMrKScsXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICAgIC9cXHMqKD89XFwoKS9cbiAgICAgICAgXSxcbiAgICAgICAgY2xhc3NOYW1lOiB7IDI6IFwidGl0bGUuZnVuY3Rpb25cIiB9LFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBBTk5PVEFUSU9OLFxuICAgICAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgIE5VTUVSSUMsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBOVU1FUklDLFxuICAgICAgQU5OT1RBVElPTlxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBqYXZhO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1617\n")},1626:module=>{eval("/*\nLanguage: OpenSCAD\nAuthor: Dan Panzarella \nDescription: OpenSCAD is a language for the 3D CAD modeling software of the same name.\nWebsite: https://www.openscad.org\nCategory: scientific\n*/\n\nfunction openscad(hljs) {\n const SPECIAL_VARS = {\n className: 'keyword',\n begin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n };\n const LITERALS = {\n className: 'literal',\n begin: 'false|true|PI|undef'\n };\n const NUMBERS = {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', // adds 1e5, 1e-10\n relevance: 0\n };\n const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null });\n const PREPRO = {\n className: 'meta',\n keywords: { keyword: 'include use' },\n begin: 'include|use <',\n end: '>'\n };\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n 'self',\n NUMBERS,\n STRING,\n SPECIAL_VARS,\n LITERALS\n ]\n };\n const MODIFIERS = {\n begin: '[*!#%]',\n relevance: 0\n };\n const FUNCTIONS = {\n className: 'function',\n beginKeywords: 'module function',\n end: /=|\\{/,\n contains: [\n PARAMS,\n hljs.UNDERSCORE_TITLE_MODE\n ]\n };\n\n return {\n name: 'OpenSCAD',\n aliases: [ 'scad' ],\n keywords: {\n keyword: 'function module include use for intersection_for if else \\\\%',\n literal: 'false true PI undef',\n built_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n PREPRO,\n STRING,\n SPECIAL_VARS,\n MODIFIERS,\n FUNCTIONS\n ]\n };\n}\n\nmodule.exports = openscad;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYyNi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELGVBQWU7QUFDdkU7QUFDQTtBQUNBLGdCQUFnQix3QkFBd0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL29wZW5zY2FkLmpzP2VjNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBPcGVuU0NBRFxuQXV0aG9yOiBEYW4gUGFuemFyZWxsYSA8YWxzb2VscEBnbWFpbC5jb20+XG5EZXNjcmlwdGlvbjogT3BlblNDQUQgaXMgYSBsYW5ndWFnZSBmb3IgdGhlIDNEIENBRCBtb2RlbGluZyBzb2Z0d2FyZSBvZiB0aGUgc2FtZSBuYW1lLlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cub3BlbnNjYWQub3JnXG5DYXRlZ29yeTogc2NpZW50aWZpY1xuKi9cblxuZnVuY3Rpb24gb3BlbnNjYWQoaGxqcykge1xuICBjb25zdCBTUEVDSUFMX1ZBUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46ICdcXFxcJChmW2Fzbl18dHx2cFtydGRdfGNoaWxkcmVuKSdcbiAgfTtcbiAgY29uc3QgTElURVJBTFMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbGl0ZXJhbCcsXG4gICAgYmVnaW46ICdmYWxzZXx0cnVlfFBJfHVuZGVmJ1xuICB9O1xuICBjb25zdCBOVU1CRVJTID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICdcXFxcYlxcXFxkKyhcXFxcLlxcXFxkKyk/KGUtP1xcXFxkKyk/JywgLy8gYWRkcyAxZTUsIDFlLTEwXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IFNUUklORyA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IGlsbGVnYWw6IG51bGwgfSk7XG4gIGNvbnN0IFBSRVBSTyA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBrZXl3b3JkczogeyBrZXl3b3JkOiAnaW5jbHVkZSB1c2UnIH0sXG4gICAgYmVnaW46ICdpbmNsdWRlfHVzZSA8JyxcbiAgICBlbmQ6ICc+J1xuICB9O1xuICBjb25zdCBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICBlbmQ6ICdcXFxcKScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgICdzZWxmJyxcbiAgICAgIE5VTUJFUlMsXG4gICAgICBTVFJJTkcsXG4gICAgICBTUEVDSUFMX1ZBUlMsXG4gICAgICBMSVRFUkFMU1xuICAgIF1cbiAgfTtcbiAgY29uc3QgTU9ESUZJRVJTID0ge1xuICAgIGJlZ2luOiAnWyohIyVdJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgRlVOQ1RJT05TID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbktleXdvcmRzOiAnbW9kdWxlIGZ1bmN0aW9uJyxcbiAgICBlbmQ6IC89fFxcey8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBBUkFNUyxcbiAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ09wZW5TQ0FEJyxcbiAgICBhbGlhc2VzOiBbICdzY2FkJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiAnZnVuY3Rpb24gbW9kdWxlIGluY2x1ZGUgdXNlIGZvciBpbnRlcnNlY3Rpb25fZm9yIGlmIGVsc2UgXFxcXCUnLFxuICAgICAgbGl0ZXJhbDogJ2ZhbHNlIHRydWUgUEkgdW5kZWYnLFxuICAgICAgYnVpbHRfaW46ICdjaXJjbGUgc3F1YXJlIHBvbHlnb24gdGV4dCBzcGhlcmUgY3ViZSBjeWxpbmRlciBwb2x5aGVkcm9uIHRyYW5zbGF0ZSByb3RhdGUgc2NhbGUgcmVzaXplIG1pcnJvciBtdWx0bWF0cml4IGNvbG9yIG9mZnNldCBodWxsIG1pbmtvd3NraSB1bmlvbiBkaWZmZXJlbmNlIGludGVyc2VjdGlvbiBhYnMgc2lnbiBzaW4gY29zIHRhbiBhY29zIGFzaW4gYXRhbiBhdGFuMiBmbG9vciByb3VuZCBjZWlsIGxuIGxvZyBwb3cgc3FydCBleHAgcmFuZHMgbWluIG1heCBjb25jYXQgbG9va3VwIHN0ciBjaHIgc2VhcmNoIHZlcnNpb24gdmVyc2lvbl9udW0gbm9ybSBjcm9zcyBwYXJlbnRfbW9kdWxlIGVjaG8gaW1wb3J0IGltcG9ydF9keGYgZHhmX2xpbmVhcl9leHRydWRlIGxpbmVhcl9leHRydWRlIHJvdGF0ZV9leHRydWRlIHN1cmZhY2UgcHJvamVjdGlvbiByZW5kZXIgY2hpbGRyZW4gZHhmX2Nyb3NzIGR4Zl9kaW0gbGV0IGFzc2lnbidcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFBSRVBSTyxcbiAgICAgIFNUUklORyxcbiAgICAgIFNQRUNJQUxfVkFSUyxcbiAgICAgIE1PRElGSUVSUyxcbiAgICAgIEZVTkNUSU9OU1xuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvcGVuc2NhZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1626\n")},1627:module=>{eval("/*\nLanguage: MIPS Assembly\nAuthor: Nebuleon Fumika \nDescription: MIPS Assembly (up to MIPS32R2)\nWebsite: https://en.wikipedia.org/wiki/MIPS_architecture\nCategory: assembler\n*/\n\nfunction mipsasm(hljs) {\n // local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n name: 'MIPS Assembly',\n case_insensitive: true,\n aliases: [ 'mips' ],\n keywords: {\n $pattern: '\\\\.?' + hljs.IDENT_RE,\n meta:\n // GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\n built_in:\n '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' // integer registers\n + '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' // integer registers\n + 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' // integer register aliases\n + 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' // integer register aliases\n + 'k0 k1 gp sp fp ra ' // integer register aliases\n + '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' // floating-point registers\n + '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' // floating-point registers\n + 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' // Coprocessor 0 registers\n + 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' // Coprocessor 0 registers\n + 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' // Coprocessor 0 registers\n + 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b(' // mnemonics\n // 32-bit integer instructions\n + 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|'\n + 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\\\.hb)?|jr(\\\\.hb)?|lbu?|lhu?|'\n + 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|'\n + 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|'\n + 'srlv?|subu?|sw[lr]?|xori?|wsbh|'\n // floating-point instructions\n + 'abs\\\\.[sd]|add\\\\.[sd]|alnv.ps|bc1[ft]l?|'\n + 'c\\\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\\\.[sd]|'\n + '(ceil|floor|round|trunc)\\\\.[lw]\\\\.[sd]|cfc1|cvt\\\\.d\\\\.[lsw]|'\n + 'cvt\\\\.l\\\\.[dsw]|cvt\\\\.ps\\\\.s|cvt\\\\.s\\\\.[dlw]|cvt\\\\.s\\\\.p[lu]|cvt\\\\.w\\\\.[dls]|'\n + 'div\\\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\\\.[sd]|mfc1|mov[fntz]?\\\\.[ds]|'\n + 'msub\\\\.[sd]|mth?c1|mul\\\\.[ds]|neg\\\\.[ds]|nmadd\\\\.[ds]|nmsub\\\\.[ds]|'\n + 'p[lu][lu]\\\\.ps|recip\\\\.fmt|r?sqrt\\\\.[ds]|sdx?c1|sub\\\\.[ds]|suxc1|'\n + 'swx?c1|'\n // system control instructions\n + 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|'\n + 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|'\n + 'tlti?u?|tnei?|wait|wrpgpr'\n + ')',\n end: '\\\\s'\n },\n // lines ending with ; or # aren't really comments, probably auto-detect fail\n hljs.COMMENT('[;#](?!\\\\s*$)', '$'),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|',\n end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { // hex\n begin: '0x[0-9a-f]+' },\n { // bare number\n begin: '\\\\b-?\\\\d+' }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n { // GNU MIPS syntax\n begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:' },\n { // numbered local labels\n begin: '^\\\\s*[0-9]+:' },\n { // number local label reference (backwards, forwards)\n begin: '[0-9]+[bf]' }\n ],\n relevance: 0\n }\n ],\n // forward slashes are not allowed\n illegal: /\\//\n };\n}\n\nmodule.exports = mipsasm;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYyNy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxJQUFJO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw2QkFBNkI7QUFDN0Isc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osa0NBQWtDO0FBQ2xDLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLHlEQUF5RDtBQUN6RCxZQUFZO0FBQ1osbUNBQW1DO0FBQ25DLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL21pcHNhc20uanM/MDYwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE1JUFMgQXNzZW1ibHlcbkF1dGhvcjogTmVidWxlb24gRnVtaWthIDxuZWJ1bGVvbi5mdW1pa2FAZ21haWwuY29tPlxuRGVzY3JpcHRpb246IE1JUFMgQXNzZW1ibHkgKHVwIHRvIE1JUFMzMlIyKVxuV2Vic2l0ZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlQU19hcmNoaXRlY3R1cmVcbkNhdGVnb3J5OiBhc3NlbWJsZXJcbiovXG5cbmZ1bmN0aW9uIG1pcHNhc20oaGxqcykge1xuICAvLyBsb2NhbCBsYWJlbHM6ICU/W0ZCXT9bQVRdP1xcZHsxLDJ9XFx3K1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdNSVBTIEFzc2VtYmx5JyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsgJ21pcHMnIF0sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAnXFxcXC4/JyArIGhsanMuSURFTlRfUkUsXG4gICAgICBtZXRhOlxuICAgICAgICAvLyBHTlUgcHJlcHJvY3NcbiAgICAgICAgJy4yYnl0ZSAuNGJ5dGUgLmFsaWduIC5hc2NpaSAuYXNjaXogLmJhbGlnbiAuYnl0ZSAuY29kZSAuZGF0YSAuZWxzZSAuZW5kIC5lbmRpZiAuZW5kbSAuZW5kciAuZXF1IC5lcnIgLmV4aXRtIC5leHRlcm4gLmdsb2JhbCAuaHdvcmQgLmlmIC5pZmRlZiAuaWZuZGVmIC5pbmNsdWRlIC5pcnAgLmxvbmcgLm1hY3JvIC5yZXB0IC5yZXEgLnNlY3Rpb24gLnNldCAuc2tpcCAuc3BhY2UgLnRleHQgLndvcmQgLmx0b3JnICcsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgJyQwICQxICQyICQzICQ0ICQ1ICQ2ICQ3ICQ4ICQ5ICQxMCAkMTEgJDEyICQxMyAkMTQgJDE1ICcgLy8gaW50ZWdlciByZWdpc3RlcnNcbiAgICAgICAgKyAnJDE2ICQxNyAkMTggJDE5ICQyMCAkMjEgJDIyICQyMyAkMjQgJDI1ICQyNiAkMjcgJDI4ICQyOSAkMzAgJDMxICcgLy8gaW50ZWdlciByZWdpc3RlcnNcbiAgICAgICAgKyAnemVybyBhdCB2MCB2MSBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyAnIC8vIGludGVnZXIgcmVnaXN0ZXIgYWxpYXNlc1xuICAgICAgICArICd0MCB0MSB0MiB0MyB0NCB0NSB0NiB0NyB0OCB0OSBzMCBzMSBzMiBzMyBzNCBzNSBzNiBzNyBzOCAnIC8vIGludGVnZXIgcmVnaXN0ZXIgYWxpYXNlc1xuICAgICAgICArICdrMCBrMSBncCBzcCBmcCByYSAnIC8vIGludGVnZXIgcmVnaXN0ZXIgYWxpYXNlc1xuICAgICAgICArICckZjAgJGYxICRmMiAkZjIgJGY0ICRmNSAkZjYgJGY3ICRmOCAkZjkgJGYxMCAkZjExICRmMTIgJGYxMyAkZjE0ICRmMTUgJyAvLyBmbG9hdGluZy1wb2ludCByZWdpc3RlcnNcbiAgICAgICAgKyAnJGYxNiAkZjE3ICRmMTggJGYxOSAkZjIwICRmMjEgJGYyMiAkZjIzICRmMjQgJGYyNSAkZjI2ICRmMjcgJGYyOCAkZjI5ICRmMzAgJGYzMSAnIC8vIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyc1xuICAgICAgICArICdDb250ZXh0IFJhbmRvbSBFbnRyeUxvMCBFbnRyeUxvMSBDb250ZXh0IFBhZ2VNYXNrIFdpcmVkIEVudHJ5SGkgJyAvLyBDb3Byb2Nlc3NvciAwIHJlZ2lzdGVyc1xuICAgICAgICArICdIV1JFbmEgQmFkVkFkZHIgQ291bnQgQ29tcGFyZSBTUiBJbnRDdGwgU1JTQ3RsIFNSU01hcCBDYXVzZSBFUEMgUFJJZCAnIC8vIENvcHJvY2Vzc29yIDAgcmVnaXN0ZXJzXG4gICAgICAgICsgJ0VCYXNlIENvbmZpZyBDb25maWcxIENvbmZpZzIgQ29uZmlnMyBMTEFkZHIgRGVidWcgREVQQyBERVNBVkUgQ2FjaGVFcnIgJyAvLyBDb3Byb2Nlc3NvciAwIHJlZ2lzdGVyc1xuICAgICAgICArICdFQ0MgRXJyb3JFUEMgVGFnTG8gRGF0YUxvIFRhZ0hpIERhdGFIaSBXYXRjaExvIFdhdGNoSGkgUGVyZkN0bCBQZXJmQ250ICcgLy8gQ29wcm9jZXNzb3IgMCByZWdpc3RlcnNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgLy8gbW5lbW9uaWNzXG4gICAgICAgICAgICAvLyAzMi1iaXQgaW50ZWdlciBpbnN0cnVjdGlvbnNcbiAgICAgICAgICAgICsgJ2FkZGk/dT98YW5kaT98YihhbCk/fGJlcWw/fGJnZXooYWwpP2w/fGJndHpsP3xibGV6bD98Ymx0eihhbCk/bD98J1xuICAgICAgICAgICAgKyAnYm5lbD98Y2xbb3pdfGRpdnU/fGV4dHxpbnN8aihhbCk/fGphbHIoXFxcXC5oYik/fGpyKFxcXFwuaGIpP3xsYnU/fGxodT98J1xuICAgICAgICAgICAgKyAnbGx8bHVpfGx3W2xyXT98bWFkZHU/fG1maGl8bWZsb3xtb3ZufG1vdnp8bW92ZXxtc3VidT98bXRoaXxtdGxvfG11bHwnXG4gICAgICAgICAgICArICdtdWx0dT98bm9wfG5vcnxvcmk/fHJvdHJ2P3xzYnxzY3xzZVtiaF18c2h8c2xsdj98c2x0aT91P3xzcmF2P3wnXG4gICAgICAgICAgICArICdzcmx2P3xzdWJ1P3xzd1tscl0/fHhvcmk/fHdzYmh8J1xuICAgICAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgaW5zdHJ1Y3Rpb25zXG4gICAgICAgICAgICArICdhYnNcXFxcLltzZF18YWRkXFxcXC5bc2RdfGFsbnYucHN8YmMxW2Z0XWw/fCdcbiAgICAgICAgICAgICsgJ2NcXFxcLihzP2Z8dW58dT9lcXxbb3VdbHR8W291XWxlfG5nbGU/fHNlcXxsW2V0XXxuZ1tldF0pXFxcXC5bc2RdfCdcbiAgICAgICAgICAgICsgJyhjZWlsfGZsb29yfHJvdW5kfHRydW5jKVxcXFwuW2x3XVxcXFwuW3NkXXxjZmMxfGN2dFxcXFwuZFxcXFwuW2xzd118J1xuICAgICAgICAgICAgKyAnY3Z0XFxcXC5sXFxcXC5bZHN3XXxjdnRcXFxcLnBzXFxcXC5zfGN2dFxcXFwuc1xcXFwuW2Rsd118Y3Z0XFxcXC5zXFxcXC5wW2x1XXxjdnRcXFxcLndcXFxcLltkbHNdfCdcbiAgICAgICAgICAgICsgJ2RpdlxcXFwuW2RzXXxsZHg/YzF8bHV4YzF8bHd4P2MxfG1hZGRcXFxcLltzZF18bWZjMXxtb3ZbZm50el0/XFxcXC5bZHNdfCdcbiAgICAgICAgICAgICsgJ21zdWJcXFxcLltzZF18bXRoP2MxfG11bFxcXFwuW2RzXXxuZWdcXFxcLltkc118bm1hZGRcXFxcLltkc118bm1zdWJcXFxcLltkc118J1xuICAgICAgICAgICAgKyAncFtsdV1bbHVdXFxcXC5wc3xyZWNpcFxcXFwuZm10fHI/c3FydFxcXFwuW2RzXXxzZHg/YzF8c3ViXFxcXC5bZHNdfHN1eGMxfCdcbiAgICAgICAgICAgICsgJ3N3eD9jMXwnXG4gICAgICAgICAgICAvLyBzeXN0ZW0gY29udHJvbCBpbnN0cnVjdGlvbnNcbiAgICAgICAgICAgICsgJ2JyZWFrfGNhY2hlfGQ/ZXJldHxbZGVdaXxlaGJ8bWZjMHxtdGMwfHBhdXNlfHByZWZ4P3xyZGh3cnwnXG4gICAgICAgICAgICArICdyZHBncHJ8c2RiYnB8c3Nub3B8c3luY2k/fHN5c2NhbGx8dGVxaT98dGdlaT91P3x0bGIocHxyfHdbaXJdKXwnXG4gICAgICAgICAgICArICd0bHRpP3U/fHRuZWk/fHdhaXR8d3JwZ3ByJ1xuICAgICAgICArICcpJyxcbiAgICAgICAgZW5kOiAnXFxcXHMnXG4gICAgICB9LFxuICAgICAgLy8gbGluZXMgZW5kaW5nIHdpdGggOyBvciAjIGFyZW4ndCByZWFsbHkgY29tbWVudHMsIHByb2JhYmx5IGF1dG8tZGV0ZWN0IGZhaWxcbiAgICAgIGhsanMuQ09NTUVOVCgnWzsjXSg/IVxcXFxzKiQpJywgJyQnKSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1teXFxcXFxcXFxdXFwnJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXHwnLFxuICAgICAgICBlbmQ6ICdcXFxcfCcsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IC8vIGhleFxuICAgICAgICAgICAgYmVnaW46ICcweFswLTlhLWZdKycgfSxcbiAgICAgICAgICB7IC8vIGJhcmUgbnVtYmVyXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFxiLT9cXFxcZCsnIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgLy8gR05VIE1JUFMgc3ludGF4XG4gICAgICAgICAgICBiZWdpbjogJ15cXFxccypbYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSs6JyB9LFxuICAgICAgICAgIHsgLy8gbnVtYmVyZWQgbG9jYWwgbGFiZWxzXG4gICAgICAgICAgICBiZWdpbjogJ15cXFxccypbMC05XSs6JyB9LFxuICAgICAgICAgIHsgLy8gbnVtYmVyIGxvY2FsIGxhYmVsIHJlZmVyZW5jZSAoYmFja3dhcmRzLCBmb3J3YXJkcylcbiAgICAgICAgICAgIGJlZ2luOiAnWzAtOV0rW2JmXScgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdLFxuICAgIC8vIGZvcndhcmQgc2xhc2hlcyBhcmUgbm90IGFsbG93ZWRcbiAgICBpbGxlZ2FsOiAvXFwvL1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pcHNhc207XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1627\n")},1628:module=>{eval("/*\nLanguage: Mojolicious\nRequires: xml.js, perl.js\nAuthor: Dotan Dimet \nDescription: Mojolicious .ep (Embedded Perl) templates\nWebsite: https://mojolicious.org\nCategory: template\n*/\nfunction mojolicious(hljs) {\n return {\n name: 'Mojolicious',\n subLanguage: 'xml',\n contains: [\n {\n className: 'meta',\n begin: '^__(END|DATA)__$'\n },\n // mojolicious line\n {\n begin: \"^\\\\s*%{1,2}={0,2}\",\n end: '$',\n subLanguage: 'perl'\n },\n // mojolicious block\n {\n begin: \"<%{1,2}={0,2}\",\n end: \"={0,1}%>\",\n subLanguage: 'perl',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n}\n\nmodule.exports = mojolicious;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYyOC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsdUJBQXVCLElBQUksRUFBRSxJQUFJO0FBQ2pDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLG1CQUFtQixJQUFJLEVBQUUsSUFBSTtBQUM3QixnQkFBZ0IsSUFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvbW9qb2xpY2lvdXMuanM/N2VmMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE1vam9saWNpb3VzXG5SZXF1aXJlczogeG1sLmpzLCBwZXJsLmpzXG5BdXRob3I6IERvdGFuIERpbWV0IDxkb3RhbkBjb3JreS5uZXQ+XG5EZXNjcmlwdGlvbjogTW9qb2xpY2lvdXMgLmVwIChFbWJlZGRlZCBQZXJsKSB0ZW1wbGF0ZXNcbldlYnNpdGU6IGh0dHBzOi8vbW9qb2xpY2lvdXMub3JnXG5DYXRlZ29yeTogdGVtcGxhdGVcbiovXG5mdW5jdGlvbiBtb2pvbGljaW91cyhobGpzKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ01vam9saWNpb3VzJyxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXl9fKEVORHxEQVRBKV9fJCdcbiAgICAgIH0sXG4gICAgICAvLyBtb2pvbGljaW91cyBsaW5lXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBcIl5cXFxccyolezEsMn09ezAsMn1cIixcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncGVybCdcbiAgICAgIH0sXG4gICAgICAvLyBtb2pvbGljaW91cyBibG9ja1xuICAgICAge1xuICAgICAgICBiZWdpbjogXCI8JXsxLDJ9PXswLDJ9XCIsXG4gICAgICAgIGVuZDogXCI9ezAsMX0lPlwiLFxuICAgICAgICBzdWJMYW5ndWFnZTogJ3BlcmwnLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbW9qb2xpY2lvdXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1628\n")},1656:module=>{eval('/*\nLanguage: RenderMan RSL\nAuthor: Konstantin Evdokimenko \nContributors: Shuen-Huei Guan \nWebsite: https://renderman.pixar.com/resources/RenderMan_20/shadingLanguage.html\nCategory: graphics\n*/\n\nfunction rsl(hljs) {\n const BUILT_INS = [\n "abs",\n "acos",\n "ambient",\n "area",\n "asin",\n "atan",\n "atmosphere",\n "attribute",\n "calculatenormal",\n "ceil",\n "cellnoise",\n "clamp",\n "comp",\n "concat",\n "cos",\n "degrees",\n "depth",\n "Deriv",\n "diffuse",\n "distance",\n "Du",\n "Dv",\n "environment",\n "exp",\n "faceforward",\n "filterstep",\n "floor",\n "format",\n "fresnel",\n "incident",\n "length",\n "lightsource",\n "log",\n "match",\n "max",\n "min",\n "mod",\n "noise",\n "normalize",\n "ntransform",\n "opposite",\n "option",\n "phong",\n "pnoise",\n "pow",\n "printf",\n "ptlined",\n "radians",\n "random",\n "reflect",\n "refract",\n "renderinfo",\n "round",\n "setcomp",\n "setxcomp",\n "setycomp",\n "setzcomp",\n "shadow",\n "sign",\n "sin",\n "smoothstep",\n "specular",\n "specularbrdf",\n "spline",\n "sqrt",\n "step",\n "tan",\n "texture",\n "textureinfo",\n "trace",\n "transform",\n "vtransform",\n "xcomp",\n "ycomp",\n "zcomp"\n ];\n\n const TYPES = [\n "matrix",\n "float",\n "color",\n "point",\n "normal",\n "vector"\n ];\n\n const KEYWORDS = [\n "while",\n "for",\n "if",\n "do",\n "return",\n "else",\n "break",\n "extern",\n "continue"\n ];\n\n const CLASS_DEFINITION = {\n match: [\n /(surface|displacement|light|volume|imager)/,\n /\\s+/,\n hljs.IDENT_RE,\n ],\n scope: {\n 1: "keyword",\n 3: "title.class",\n }\n };\n\n return {\n name: \'RenderMan RSL\',\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_INS,\n type: TYPES\n },\n illegal: \'{eval("/*\nLanguage: Perl\nAuthor: Peter Leonov \nWebsite: https://www.perl.org\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction perl(hljs) {\n const regex = hljs.regex;\n const KEYWORDS = [\n 'abs',\n 'accept',\n 'alarm',\n 'and',\n 'atan2',\n 'bind',\n 'binmode',\n 'bless',\n 'break',\n 'caller',\n 'chdir',\n 'chmod',\n 'chomp',\n 'chop',\n 'chown',\n 'chr',\n 'chroot',\n 'class',\n 'close',\n 'closedir',\n 'connect',\n 'continue',\n 'cos',\n 'crypt',\n 'dbmclose',\n 'dbmopen',\n 'defined',\n 'delete',\n 'die',\n 'do',\n 'dump',\n 'each',\n 'else',\n 'elsif',\n 'endgrent',\n 'endhostent',\n 'endnetent',\n 'endprotoent',\n 'endpwent',\n 'endservent',\n 'eof',\n 'eval',\n 'exec',\n 'exists',\n 'exit',\n 'exp',\n 'fcntl',\n 'field',\n 'fileno',\n 'flock',\n 'for',\n 'foreach',\n 'fork',\n 'format',\n 'formline',\n 'getc',\n 'getgrent',\n 'getgrgid',\n 'getgrnam',\n 'gethostbyaddr',\n 'gethostbyname',\n 'gethostent',\n 'getlogin',\n 'getnetbyaddr',\n 'getnetbyname',\n 'getnetent',\n 'getpeername',\n 'getpgrp',\n 'getpriority',\n 'getprotobyname',\n 'getprotobynumber',\n 'getprotoent',\n 'getpwent',\n 'getpwnam',\n 'getpwuid',\n 'getservbyname',\n 'getservbyport',\n 'getservent',\n 'getsockname',\n 'getsockopt',\n 'given',\n 'glob',\n 'gmtime',\n 'goto',\n 'grep',\n 'gt',\n 'hex',\n 'if',\n 'index',\n 'int',\n 'ioctl',\n 'join',\n 'keys',\n 'kill',\n 'last',\n 'lc',\n 'lcfirst',\n 'length',\n 'link',\n 'listen',\n 'local',\n 'localtime',\n 'log',\n 'lstat',\n 'lt',\n 'ma',\n 'map',\n 'method',\n 'mkdir',\n 'msgctl',\n 'msgget',\n 'msgrcv',\n 'msgsnd',\n 'my',\n 'ne',\n 'next',\n 'no',\n 'not',\n 'oct',\n 'open',\n 'opendir',\n 'or',\n 'ord',\n 'our',\n 'pack',\n 'package',\n 'pipe',\n 'pop',\n 'pos',\n 'print',\n 'printf',\n 'prototype',\n 'push',\n 'q|0',\n 'qq',\n 'quotemeta',\n 'qw',\n 'qx',\n 'rand',\n 'read',\n 'readdir',\n 'readline',\n 'readlink',\n 'readpipe',\n 'recv',\n 'redo',\n 'ref',\n 'rename',\n 'require',\n 'reset',\n 'return',\n 'reverse',\n 'rewinddir',\n 'rindex',\n 'rmdir',\n 'say',\n 'scalar',\n 'seek',\n 'seekdir',\n 'select',\n 'semctl',\n 'semget',\n 'semop',\n 'send',\n 'setgrent',\n 'sethostent',\n 'setnetent',\n 'setpgrp',\n 'setpriority',\n 'setprotoent',\n 'setpwent',\n 'setservent',\n 'setsockopt',\n 'shift',\n 'shmctl',\n 'shmget',\n 'shmread',\n 'shmwrite',\n 'shutdown',\n 'sin',\n 'sleep',\n 'socket',\n 'socketpair',\n 'sort',\n 'splice',\n 'split',\n 'sprintf',\n 'sqrt',\n 'srand',\n 'stat',\n 'state',\n 'study',\n 'sub',\n 'substr',\n 'symlink',\n 'syscall',\n 'sysopen',\n 'sysread',\n 'sysseek',\n 'system',\n 'syswrite',\n 'tell',\n 'telldir',\n 'tie',\n 'tied',\n 'time',\n 'times',\n 'tr',\n 'truncate',\n 'uc',\n 'ucfirst',\n 'umask',\n 'undef',\n 'unless',\n 'unlink',\n 'unpack',\n 'unshift',\n 'untie',\n 'until',\n 'use',\n 'utime',\n 'values',\n 'vec',\n 'wait',\n 'waitpid',\n 'wantarray',\n 'warn',\n 'when',\n 'while',\n 'write',\n 'x|0',\n 'xor',\n 'y|0'\n ];\n\n // https://perldoc.perl.org/perlre#Modifiers\n const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12\n const PERL_KEYWORDS = {\n $pattern: /[\\w.]+/,\n keyword: KEYWORDS.join(\" \")\n };\n const SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{',\n end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n const METHOD = {\n begin: /->\\{/,\n end: /\\}/\n // contains defined later\n };\n const ATTR = {\n scope: 'attr',\n match: /\\s+:\\s*\\w+(\\s*\\(.*?\\))?/,\n };\n const VAR = {\n scope: 'variable',\n variants: [\n { begin: /\\$\\d/ },\n { begin: regex.concat(\n /[$%@](?!\")(\\^\\w\\b|#\\w+(::\\w+)*|\\{\\w+\\}|\\w+(::\\w*)*)/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![A-Za-z])(?![@$%])`\n )\n },\n {\n // Only $= is a special Perl variable and one can't declare @= or %=.\n begin: /[$%@](?!\")[^\\s\\w{=]|\\$=/,\n relevance: 0\n }\n ],\n contains: [ ATTR ],\n };\n const NUMBER = {\n className: 'number',\n variants: [\n // decimal numbers:\n // include the case where a number starts with a dot (eg. .9), and\n // the leading 0? avoids mixing the first and second match on 0.x cases\n { match: /0?\\.[0-9][0-9_]+\\b/ },\n // include the special versioned number (eg. v5.38)\n { match: /\\bv?(0|[1-9][0-9_]*(\\.[0-9_]+)?|[1-9][0-9_]*)\\b/ },\n // non-decimal numbers:\n { match: /\\b0[0-7][0-7_]*\\b/ },\n { match: /\\b0x[0-9a-fA-F][0-9a-fA-F_]*\\b/ },\n { match: /\\b0b[0-1][0-1_]*\\b/ },\n ],\n relevance: 0\n };\n const STRING_CONTAINS = [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n VAR\n ];\n const REGEX_DELIMS = [\n /!/,\n /\\//,\n /\\|/,\n /\\?/,\n /'/,\n /\"/, // valid but infrequent and weird\n /#/ // valid but infrequent and weird\n ];\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_DOUBLE_RE = (prefix, open, close = '\\\\1') => {\n const middle = (close === '\\\\1')\n ? close\n : regex.concat(close, open);\n return regex.concat(\n regex.concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n middle,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_RE = (prefix, open, close) => {\n return regex.concat(\n regex.concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n const PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n /^=\\w/,\n /=cut/,\n { endsWithParent: true }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(',\n end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[',\n end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{',\n end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|',\n end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*<',\n end: '>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q',\n end: 'q',\n relevance: 5\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: '`',\n end: '`',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\\{\\w+\\}/,\n relevance: 0\n },\n {\n begin: '-?\\\\w+\\\\s*=>',\n relevance: 0\n }\n ]\n },\n NUMBER,\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n variants: [\n // allow matching common delimiters\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", regex.either(...REGEX_DELIMS, { capture: true })) },\n // and then paired delmis\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\(\", \"\\\\)\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\[\", \"\\\\]\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\{\", \"\\\\}\") }\n ],\n relevance: 2\n },\n {\n className: 'regexp',\n variants: [\n {\n // could be a comment in many languages so do not count\n // as relevant\n begin: /(m|qr)\\/\\//,\n relevance: 0\n },\n // prefix is optional with /regex/\n { begin: PAIRED_RE(\"(?:m|qr)?\", /\\//, /\\//) },\n // allow matching common delimiters\n { begin: PAIRED_RE(\"m|qr\", regex.either(...REGEX_DELIMS, { capture: true }), /\\1/) },\n // allow common paired delmins\n { begin: PAIRED_RE(\"m|qr\", /\\(/, /\\)/) },\n { begin: PAIRED_RE(\"m|qr\", /\\[/, /\\]/) },\n { begin: PAIRED_RE(\"m|qr\", /\\{/, /\\}/) }\n ]\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub method',\n end: '(\\\\s*\\\\(.*?\\\\))?[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE, ATTR ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE, ATTR, NUMBER ]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n name: 'Perl',\n aliases: [\n 'pl',\n 'pm'\n ],\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n}\n\nmodule.exports = perl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY5Ni5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsS0FBSyxHQUFHO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGVBQWU7QUFDdkIsUUFBUTtBQUNSLDBDQUEwQyxLQUFLO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkJBQTZCO0FBQ3JDO0FBQ0EsUUFBUSwwREFBMEQ7QUFDbEU7QUFDQSxRQUFRLDRCQUE0QjtBQUNwQyxRQUFRLHlDQUF5QztBQUNqRCxRQUFRLDZCQUE2QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGVBQWU7QUFDNUIsYUFBYSxlQUFlO0FBQzVCLGFBQWEsZUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZUFBZTtBQUM1QixhQUFhLGVBQWU7QUFDNUIsYUFBYSxlQUFlO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsaUNBQWlDO0FBQ2pDLG1CQUFtQjtBQUNuQjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxvQkFBb0IsS0FBSztBQUN6QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsa0VBQWtFLGVBQWUsSUFBSTtBQUNuRztBQUNBLGNBQWMsaURBQWlEO0FBQy9ELGNBQWMsaURBQWlEO0FBQy9ELGNBQWMsc0NBQXNDLE9BQU87QUFDM0Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsY0FBYywyQ0FBMkM7QUFDekQ7QUFDQSxjQUFjLHlEQUF5RCxlQUFlLFVBQVU7QUFDaEc7QUFDQSxjQUFjLHNDQUFzQztBQUNwRCxjQUFjLHNDQUFzQztBQUNwRCxjQUFjLDRCQUE0QixNQUFNO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGVybC5qcz8zZTEzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUGVybFxuQXV0aG9yOiBQZXRlciBMZW9ub3YgPGdvanBlZ0B5YW5kZXgucnU+XG5XZWJzaXRlOiBodHRwczovL3d3dy5wZXJsLm9yZ1xuQ2F0ZWdvcnk6IGNvbW1vblxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIHBlcmwoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgICdhYnMnLFxuICAgICdhY2NlcHQnLFxuICAgICdhbGFybScsXG4gICAgJ2FuZCcsXG4gICAgJ2F0YW4yJyxcbiAgICAnYmluZCcsXG4gICAgJ2Jpbm1vZGUnLFxuICAgICdibGVzcycsXG4gICAgJ2JyZWFrJyxcbiAgICAnY2FsbGVyJyxcbiAgICAnY2hkaXInLFxuICAgICdjaG1vZCcsXG4gICAgJ2Nob21wJyxcbiAgICAnY2hvcCcsXG4gICAgJ2Nob3duJyxcbiAgICAnY2hyJyxcbiAgICAnY2hyb290JyxcbiAgICAnY2xhc3MnLFxuICAgICdjbG9zZScsXG4gICAgJ2Nsb3NlZGlyJyxcbiAgICAnY29ubmVjdCcsXG4gICAgJ2NvbnRpbnVlJyxcbiAgICAnY29zJyxcbiAgICAnY3J5cHQnLFxuICAgICdkYm1jbG9zZScsXG4gICAgJ2RibW9wZW4nLFxuICAgICdkZWZpbmVkJyxcbiAgICAnZGVsZXRlJyxcbiAgICAnZGllJyxcbiAgICAnZG8nLFxuICAgICdkdW1wJyxcbiAgICAnZWFjaCcsXG4gICAgJ2Vsc2UnLFxuICAgICdlbHNpZicsXG4gICAgJ2VuZGdyZW50JyxcbiAgICAnZW5kaG9zdGVudCcsXG4gICAgJ2VuZG5ldGVudCcsXG4gICAgJ2VuZHByb3RvZW50JyxcbiAgICAnZW5kcHdlbnQnLFxuICAgICdlbmRzZXJ2ZW50JyxcbiAgICAnZW9mJyxcbiAgICAnZXZhbCcsXG4gICAgJ2V4ZWMnLFxuICAgICdleGlzdHMnLFxuICAgICdleGl0JyxcbiAgICAnZXhwJyxcbiAgICAnZmNudGwnLFxuICAgICdmaWVsZCcsXG4gICAgJ2ZpbGVubycsXG4gICAgJ2Zsb2NrJyxcbiAgICAnZm9yJyxcbiAgICAnZm9yZWFjaCcsXG4gICAgJ2ZvcmsnLFxuICAgICdmb3JtYXQnLFxuICAgICdmb3JtbGluZScsXG4gICAgJ2dldGMnLFxuICAgICdnZXRncmVudCcsXG4gICAgJ2dldGdyZ2lkJyxcbiAgICAnZ2V0Z3JuYW0nLFxuICAgICdnZXRob3N0YnlhZGRyJyxcbiAgICAnZ2V0aG9zdGJ5bmFtZScsXG4gICAgJ2dldGhvc3RlbnQnLFxuICAgICdnZXRsb2dpbicsXG4gICAgJ2dldG5ldGJ5YWRkcicsXG4gICAgJ2dldG5ldGJ5bmFtZScsXG4gICAgJ2dldG5ldGVudCcsXG4gICAgJ2dldHBlZXJuYW1lJyxcbiAgICAnZ2V0cGdycCcsXG4gICAgJ2dldHByaW9yaXR5JyxcbiAgICAnZ2V0cHJvdG9ieW5hbWUnLFxuICAgICdnZXRwcm90b2J5bnVtYmVyJyxcbiAgICAnZ2V0cHJvdG9lbnQnLFxuICAgICdnZXRwd2VudCcsXG4gICAgJ2dldHB3bmFtJyxcbiAgICAnZ2V0cHd1aWQnLFxuICAgICdnZXRzZXJ2YnluYW1lJyxcbiAgICAnZ2V0c2VydmJ5cG9ydCcsXG4gICAgJ2dldHNlcnZlbnQnLFxuICAgICdnZXRzb2NrbmFtZScsXG4gICAgJ2dldHNvY2tvcHQnLFxuICAgICdnaXZlbicsXG4gICAgJ2dsb2InLFxuICAgICdnbXRpbWUnLFxuICAgICdnb3RvJyxcbiAgICAnZ3JlcCcsXG4gICAgJ2d0JyxcbiAgICAnaGV4JyxcbiAgICAnaWYnLFxuICAgICdpbmRleCcsXG4gICAgJ2ludCcsXG4gICAgJ2lvY3RsJyxcbiAgICAnam9pbicsXG4gICAgJ2tleXMnLFxuICAgICdraWxsJyxcbiAgICAnbGFzdCcsXG4gICAgJ2xjJyxcbiAgICAnbGNmaXJzdCcsXG4gICAgJ2xlbmd0aCcsXG4gICAgJ2xpbmsnLFxuICAgICdsaXN0ZW4nLFxuICAgICdsb2NhbCcsXG4gICAgJ2xvY2FsdGltZScsXG4gICAgJ2xvZycsXG4gICAgJ2xzdGF0JyxcbiAgICAnbHQnLFxuICAgICdtYScsXG4gICAgJ21hcCcsXG4gICAgJ21ldGhvZCcsXG4gICAgJ21rZGlyJyxcbiAgICAnbXNnY3RsJyxcbiAgICAnbXNnZ2V0JyxcbiAgICAnbXNncmN2JyxcbiAgICAnbXNnc25kJyxcbiAgICAnbXknLFxuICAgICduZScsXG4gICAgJ25leHQnLFxuICAgICdubycsXG4gICAgJ25vdCcsXG4gICAgJ29jdCcsXG4gICAgJ29wZW4nLFxuICAgICdvcGVuZGlyJyxcbiAgICAnb3InLFxuICAgICdvcmQnLFxuICAgICdvdXInLFxuICAgICdwYWNrJyxcbiAgICAncGFja2FnZScsXG4gICAgJ3BpcGUnLFxuICAgICdwb3AnLFxuICAgICdwb3MnLFxuICAgICdwcmludCcsXG4gICAgJ3ByaW50ZicsXG4gICAgJ3Byb3RvdHlwZScsXG4gICAgJ3B1c2gnLFxuICAgICdxfDAnLFxuICAgICdxcScsXG4gICAgJ3F1b3RlbWV0YScsXG4gICAgJ3F3JyxcbiAgICAncXgnLFxuICAgICdyYW5kJyxcbiAgICAncmVhZCcsXG4gICAgJ3JlYWRkaXInLFxuICAgICdyZWFkbGluZScsXG4gICAgJ3JlYWRsaW5rJyxcbiAgICAncmVhZHBpcGUnLFxuICAgICdyZWN2JyxcbiAgICAncmVkbycsXG4gICAgJ3JlZicsXG4gICAgJ3JlbmFtZScsXG4gICAgJ3JlcXVpcmUnLFxuICAgICdyZXNldCcsXG4gICAgJ3JldHVybicsXG4gICAgJ3JldmVyc2UnLFxuICAgICdyZXdpbmRkaXInLFxuICAgICdyaW5kZXgnLFxuICAgICdybWRpcicsXG4gICAgJ3NheScsXG4gICAgJ3NjYWxhcicsXG4gICAgJ3NlZWsnLFxuICAgICdzZWVrZGlyJyxcbiAgICAnc2VsZWN0JyxcbiAgICAnc2VtY3RsJyxcbiAgICAnc2VtZ2V0JyxcbiAgICAnc2Vtb3AnLFxuICAgICdzZW5kJyxcbiAgICAnc2V0Z3JlbnQnLFxuICAgICdzZXRob3N0ZW50JyxcbiAgICAnc2V0bmV0ZW50JyxcbiAgICAnc2V0cGdycCcsXG4gICAgJ3NldHByaW9yaXR5JyxcbiAgICAnc2V0cHJvdG9lbnQnLFxuICAgICdzZXRwd2VudCcsXG4gICAgJ3NldHNlcnZlbnQnLFxuICAgICdzZXRzb2Nrb3B0JyxcbiAgICAnc2hpZnQnLFxuICAgICdzaG1jdGwnLFxuICAgICdzaG1nZXQnLFxuICAgICdzaG1yZWFkJyxcbiAgICAnc2htd3JpdGUnLFxuICAgICdzaHV0ZG93bicsXG4gICAgJ3NpbicsXG4gICAgJ3NsZWVwJyxcbiAgICAnc29ja2V0JyxcbiAgICAnc29ja2V0cGFpcicsXG4gICAgJ3NvcnQnLFxuICAgICdzcGxpY2UnLFxuICAgICdzcGxpdCcsXG4gICAgJ3NwcmludGYnLFxuICAgICdzcXJ0JyxcbiAgICAnc3JhbmQnLFxuICAgICdzdGF0JyxcbiAgICAnc3RhdGUnLFxuICAgICdzdHVkeScsXG4gICAgJ3N1YicsXG4gICAgJ3N1YnN0cicsXG4gICAgJ3N5bWxpbmsnLFxuICAgICdzeXNjYWxsJyxcbiAgICAnc3lzb3BlbicsXG4gICAgJ3N5c3JlYWQnLFxuICAgICdzeXNzZWVrJyxcbiAgICAnc3lzdGVtJyxcbiAgICAnc3lzd3JpdGUnLFxuICAgICd0ZWxsJyxcbiAgICAndGVsbGRpcicsXG4gICAgJ3RpZScsXG4gICAgJ3RpZWQnLFxuICAgICd0aW1lJyxcbiAgICAndGltZXMnLFxuICAgICd0cicsXG4gICAgJ3RydW5jYXRlJyxcbiAgICAndWMnLFxuICAgICd1Y2ZpcnN0JyxcbiAgICAndW1hc2snLFxuICAgICd1bmRlZicsXG4gICAgJ3VubGVzcycsXG4gICAgJ3VubGluaycsXG4gICAgJ3VucGFjaycsXG4gICAgJ3Vuc2hpZnQnLFxuICAgICd1bnRpZScsXG4gICAgJ3VudGlsJyxcbiAgICAndXNlJyxcbiAgICAndXRpbWUnLFxuICAgICd2YWx1ZXMnLFxuICAgICd2ZWMnLFxuICAgICd3YWl0JyxcbiAgICAnd2FpdHBpZCcsXG4gICAgJ3dhbnRhcnJheScsXG4gICAgJ3dhcm4nLFxuICAgICd3aGVuJyxcbiAgICAnd2hpbGUnLFxuICAgICd3cml0ZScsXG4gICAgJ3h8MCcsXG4gICAgJ3hvcicsXG4gICAgJ3l8MCdcbiAgXTtcblxuICAvLyBodHRwczovL3Blcmxkb2MucGVybC5vcmcvcGVybHJlI01vZGlmaWVyc1xuICBjb25zdCBSRUdFWF9NT0RJRklFUlMgPSAvW2R1YWx4bXNpcG5ncl17MCwxMn0vOyAvLyBhYSBhbmQgeHggYXJlIHZhbGlkLCBtYWtpbmcgbWF4IGxlbmd0aCAxMlxuICBjb25zdCBQRVJMX0tFWVdPUkRTID0ge1xuICAgICRwYXR0ZXJuOiAvW1xcdy5dKy8sXG4gICAga2V5d29yZDogS0VZV09SRFMuam9pbihcIiBcIilcbiAgfTtcbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAnWyRAXVxcXFx7JyxcbiAgICBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IFBFUkxfS0VZV09SRFNcbiAgfTtcbiAgY29uc3QgTUVUSE9EID0ge1xuICAgIGJlZ2luOiAvLT5cXHsvLFxuICAgIGVuZDogL1xcfS9cbiAgICAvLyBjb250YWlucyBkZWZpbmVkIGxhdGVyXG4gIH07XG4gIGNvbnN0IEFUVFIgPSB7XG4gICAgc2NvcGU6ICdhdHRyJyxcbiAgICBtYXRjaDogL1xccys6XFxzKlxcdysoXFxzKlxcKC4qP1xcKSk/LyxcbiAgfTtcbiAgY29uc3QgVkFSID0ge1xuICAgIHNjb3BlOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAvXFwkXFxkLyB9LFxuICAgICAgeyBiZWdpbjogcmVnZXguY29uY2F0KFxuICAgICAgICAvWyQlQF0oPyFcIikoXFxeXFx3XFxifCNcXHcrKDo6XFx3KykqfFxce1xcdytcXH18XFx3Kyg6OlxcdyopKikvLFxuICAgICAgICAvLyBuZWdhdGl2ZSBsb29rLWFoZWFkIHRyaWVzIHRvIGF2b2lkIG1hdGNoaW5nIHBhdHRlcm5zIHRoYXQgYXJlIG5vdFxuICAgICAgICAvLyBQZXJsIGF0IGFsbCBsaWtlICRpZGVudCQsIEBpZGVudEAsIGV0Yy5cbiAgICAgICAgYCg/IVtBLVphLXpdKSg/IVtAJCVdKWBcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gT25seSAkPSBpcyBhIHNwZWNpYWwgUGVybCB2YXJpYWJsZSBhbmQgb25lIGNhbid0IGRlY2xhcmUgQD0gb3IgJT0uXG4gICAgICAgIGJlZ2luOiAvWyQlQF0oPyFcIilbXlxcc1xcd3s9XXxcXCQ9LyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSxcbiAgICBjb250YWluczogWyBBVFRSIF0sXG4gIH07XG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBkZWNpbWFsIG51bWJlcnM6XG4gICAgICAvLyBpbmNsdWRlIHRoZSBjYXNlIHdoZXJlIGEgbnVtYmVyIHN0YXJ0cyB3aXRoIGEgZG90IChlZy4gLjkpLCBhbmRcbiAgICAgIC8vIHRoZSBsZWFkaW5nIDA/IGF2b2lkcyBtaXhpbmcgdGhlIGZpcnN0IGFuZCBzZWNvbmQgbWF0Y2ggb24gMC54IGNhc2VzXG4gICAgICB7IG1hdGNoOiAvMD9cXC5bMC05XVswLTlfXStcXGIvIH0sXG4gICAgICAvLyBpbmNsdWRlIHRoZSBzcGVjaWFsIHZlcnNpb25lZCBudW1iZXIgKGVnLiB2NS4zOClcbiAgICAgIHsgbWF0Y2g6IC9cXGJ2PygwfFsxLTldWzAtOV9dKihcXC5bMC05X10rKT98WzEtOV1bMC05X10qKVxcYi8gfSxcbiAgICAgIC8vIG5vbi1kZWNpbWFsIG51bWJlcnM6XG4gICAgICB7IG1hdGNoOiAvXFxiMFswLTddWzAtN19dKlxcYi8gfSxcbiAgICAgIHsgbWF0Y2g6IC9cXGIweFswLTlhLWZBLUZdWzAtOWEtZkEtRl9dKlxcYi8gfSxcbiAgICAgIHsgbWF0Y2g6IC9cXGIwYlswLTFdWzAtMV9dKlxcYi8gfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBTVFJJTkdfQ09OVEFJTlMgPSBbXG4gICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgIFNVQlNULFxuICAgIFZBUlxuICBdO1xuICBjb25zdCBSRUdFWF9ERUxJTVMgPSBbXG4gICAgLyEvLFxuICAgIC9cXC8vLFxuICAgIC9cXHwvLFxuICAgIC9cXD8vLFxuICAgIC8nLyxcbiAgICAvXCIvLCAvLyB2YWxpZCBidXQgaW5mcmVxdWVudCBhbmQgd2VpcmRcbiAgICAvIy8gLy8gdmFsaWQgYnV0IGluZnJlcXVlbnQgYW5kIHdlaXJkXG4gIF07XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IG9wZW5cbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBjbG9zZVxuICAgKi9cbiAgY29uc3QgUEFJUkVEX0RPVUJMRV9SRSA9IChwcmVmaXgsIG9wZW4sIGNsb3NlID0gJ1xcXFwxJykgPT4ge1xuICAgIGNvbnN0IG1pZGRsZSA9IChjbG9zZSA9PT0gJ1xcXFwxJylcbiAgICAgID8gY2xvc2VcbiAgICAgIDogcmVnZXguY29uY2F0KGNsb3NlLCBvcGVuKTtcbiAgICByZXR1cm4gcmVnZXguY29uY2F0KFxuICAgICAgcmVnZXguY29uY2F0KFwiKD86XCIsIHByZWZpeCwgXCIpXCIpLFxuICAgICAgb3BlbixcbiAgICAgIC8oPzpcXFxcLnxbXlxcXFxcXC9dKSo/LyxcbiAgICAgIG1pZGRsZSxcbiAgICAgIC8oPzpcXFxcLnxbXlxcXFxcXC9dKSo/LyxcbiAgICAgIGNsb3NlLFxuICAgICAgUkVHRVhfTU9ESUZJRVJTXG4gICAgKTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gb3BlblxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IGNsb3NlXG4gICAqL1xuICBjb25zdCBQQUlSRURfUkUgPSAocHJlZml4LCBvcGVuLCBjbG9zZSkgPT4ge1xuICAgIHJldHVybiByZWdleC5jb25jYXQoXG4gICAgICByZWdleC5jb25jYXQoXCIoPzpcIiwgcHJlZml4LCBcIilcIiksXG4gICAgICBvcGVuLFxuICAgICAgLyg/OlxcXFwufFteXFxcXFxcL10pKj8vLFxuICAgICAgY2xvc2UsXG4gICAgICBSRUdFWF9NT0RJRklFUlNcbiAgICApO1xuICB9O1xuICBjb25zdCBQRVJMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgVkFSLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgL149XFx3LyxcbiAgICAgIC89Y3V0LyxcbiAgICAgIHsgZW5kc1dpdGhQYXJlbnQ6IHRydWUgfVxuICAgICksXG4gICAgTUVUSE9ELFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICBjb250YWluczogU1RSSU5HX0NPTlRBSU5TLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcKCcsXG4gICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFxbJyxcbiAgICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXHsnLFxuICAgICAgICAgIGVuZDogJ1xcXFx9JyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcfCcsXG4gICAgICAgICAgZW5kOiAnXFxcXHwnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKjwnLFxuICAgICAgICAgIGVuZDogJz4nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxd1xcXFxzK3EnLFxuICAgICAgICAgIGVuZDogJ3EnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICAgIGVuZDogJ1wiJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJyxcbiAgICAgICAgICBlbmQ6ICdgJyxcbiAgICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cXHtcXHcrXFx9LyxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLT9cXFxcdytcXFxccyo9PicsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIE5VTUJFUixcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKFxcXFwvXFxcXC98JyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKHNwbGl0fHJldHVybnxwcmludHxyZXZlcnNlfGdyZXApXFxcXGIpXFxcXHMqJyxcbiAgICAgIGtleXdvcmRzOiAnc3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCcsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgLy8gYWxsb3cgbWF0Y2hpbmcgY29tbW9uIGRlbGltaXRlcnNcbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9ET1VCTEVfUkUoXCJzfHRyfHlcIiwgcmVnZXguZWl0aGVyKC4uLlJFR0VYX0RFTElNUywgeyBjYXB0dXJlOiB0cnVlIH0pKSB9LFxuICAgICAgICAgICAgLy8gYW5kIHRoZW4gcGFpcmVkIGRlbG1pc1xuICAgICAgICAgICAgeyBiZWdpbjogUEFJUkVEX0RPVUJMRV9SRShcInN8dHJ8eVwiLCBcIlxcXFwoXCIsIFwiXFxcXClcIikgfSxcbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9ET1VCTEVfUkUoXCJzfHRyfHlcIiwgXCJcXFxcW1wiLCBcIlxcXFxdXCIpIH0sXG4gICAgICAgICAgICB7IGJlZ2luOiBQQUlSRURfRE9VQkxFX1JFKFwic3x0cnx5XCIsIFwiXFxcXHtcIiwgXCJcXFxcfVwiKSB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICByZWxldmFuY2U6IDJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy8gY291bGQgYmUgYSBjb21tZW50IGluIG1hbnkgbGFuZ3VhZ2VzIHNvIGRvIG5vdCBjb3VudFxuICAgICAgICAgICAgICAvLyBhcyByZWxldmFudFxuICAgICAgICAgICAgICBiZWdpbjogLyhtfHFyKVxcL1xcLy8sXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIHByZWZpeCBpcyBvcHRpb25hbCB3aXRoIC9yZWdleC9cbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9SRShcIig/Om18cXIpP1wiLCAvXFwvLywgL1xcLy8pIH0sXG4gICAgICAgICAgICAvLyBhbGxvdyBtYXRjaGluZyBjb21tb24gZGVsaW1pdGVyc1xuICAgICAgICAgICAgeyBiZWdpbjogUEFJUkVEX1JFKFwibXxxclwiLCByZWdleC5laXRoZXIoLi4uUkVHRVhfREVMSU1TLCB7IGNhcHR1cmU6IHRydWUgfSksIC9cXDEvKSB9LFxuICAgICAgICAgICAgLy8gYWxsb3cgY29tbW9uIHBhaXJlZCBkZWxtaW5zXG4gICAgICAgICAgICB7IGJlZ2luOiBQQUlSRURfUkUoXCJtfHFyXCIsIC9cXCgvLCAvXFwpLykgfSxcbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9SRShcIm18cXJcIiwgL1xcWy8sIC9cXF0vKSB9LFxuICAgICAgICAgICAgeyBiZWdpbjogUEFJUkVEX1JFKFwibXxxclwiLCAvXFx7LywgL1xcfS8pIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGJlZ2luS2V5d29yZHM6ICdzdWIgbWV0aG9kJyxcbiAgICAgIGVuZDogJyhcXFxccypcXFxcKC4qP1xcXFwpKT9bO3tdJyxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDUsXG4gICAgICBjb250YWluczogWyBobGpzLlRJVExFX01PREUsIEFUVFIgXVxuICAgIH0sXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzJyxcbiAgICAgIGVuZDogJ1s7e10nLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogNSxcbiAgICAgIGNvbnRhaW5zOiBbIGhsanMuVElUTEVfTU9ERSwgQVRUUiwgTlVNQkVSIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAnLVxcXFx3XFxcXGInLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7XG4gICAgICBiZWdpbjogXCJeX19EQVRBX18kXCIsXG4gICAgICBlbmQ6IFwiXl9fRU5EX18kXCIsXG4gICAgICBzdWJMYW5ndWFnZTogJ21vam9saWNpb3VzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogXCJeQEAuKlwiLFxuICAgICAgICAgIGVuZDogXCIkXCIsXG4gICAgICAgICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xuICBTVUJTVC5jb250YWlucyA9IFBFUkxfREVGQVVMVF9DT05UQUlOUztcbiAgTUVUSE9ELmNvbnRhaW5zID0gUEVSTF9ERUZBVUxUX0NPTlRBSU5TO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1BlcmwnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdwbCcsXG4gICAgICAncG0nXG4gICAgXSxcbiAgICBrZXl3b3JkczogUEVSTF9LRVlXT1JEUyxcbiAgICBjb250YWluczogUEVSTF9ERUZBVUxUX0NPTlRBSU5TXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGVybDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1696\n")},1698:module=>{eval("/*\nLanguage: AppleScript\nAuthors: Nathan Grigg , Dr. Drang \nCategory: scripting\nWebsite: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction applescript(hljs) {\n const regex = hljs.regex;\n const STRING = hljs.inherit(\n hljs.QUOTE_STRING_MODE, { illegal: null });\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n 'self',\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n const COMMENT_MODE_1 = hljs.COMMENT(/--/, /$/);\n const COMMENT_MODE_2 = hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n { contains: [\n 'self', // allow nesting\n COMMENT_MODE_1\n ] }\n );\n const COMMENTS = [\n COMMENT_MODE_1,\n COMMENT_MODE_2,\n hljs.HASH_COMMENT_MODE\n ];\n\n const KEYWORD_PATTERNS = [\n /apart from/,\n /aside from/,\n /instead of/,\n /out of/,\n /greater than/,\n /isn't|(doesn't|does not) (equal|come before|come after|contain)/,\n /(greater|less) than( or equal)?/,\n /(starts?|ends|begins?) with/,\n /contained by/,\n /comes (before|after)/,\n /a (ref|reference)/,\n /POSIX (file|path)/,\n /(date|time) string/,\n /quoted form/\n ];\n\n const BUILT_IN_PATTERNS = [\n /clipboard info/,\n /the clipboard/,\n /info for/,\n /list (disks|folder)/,\n /mount volume/,\n /path to/,\n /(close|open for) access/,\n /(get|set) eof/,\n /current date/,\n /do shell script/,\n /get volume settings/,\n /random number/,\n /set volume/,\n /system attribute/,\n /system info/,\n /time to GMT/,\n /(load|run|store) script/,\n /scripting components/,\n /ASCII (character|number)/,\n /localized string/,\n /choose (application|color|file|file name|folder|from list|remote application|URL)/,\n /display (alert|dialog)/\n ];\n\n return {\n name: 'AppleScript',\n aliases: [ 'osascript' ],\n keywords: {\n keyword:\n 'about above after against and around as at back before beginning '\n + 'behind below beneath beside between but by considering '\n + 'contain contains continue copy div does eighth else end equal '\n + 'equals error every exit fifth first for fourth from front '\n + 'get given global if ignoring in into is it its last local me '\n + 'middle mod my ninth not of on onto or over prop property put ref '\n + 'reference repeat returning script second set seventh since '\n + 'sixth some tell tenth that the|0 then third through thru '\n + 'timeout times to transaction try until where while whose with '\n + 'without',\n literal:\n 'AppleScript false linefeed return pi quote result space tab true',\n built_in:\n 'alias application boolean class constant date file integer list '\n + 'number real record string text '\n + 'activate beep count delay launch log offset read round '\n + 'run say summarize write '\n + 'character characters contents day frontmost id item length '\n + 'month name|0 paragraph paragraphs rest reverse running time version '\n + 'weekday word words year'\n },\n contains: [\n STRING,\n hljs.C_NUMBER_MODE,\n {\n className: 'built_in',\n begin: regex.concat(\n /\\b/,\n regex.either(...BUILT_IN_PATTERNS),\n /\\b/\n )\n },\n {\n className: 'built_in',\n begin: /^\\s*return\\b/\n },\n {\n className: 'literal',\n begin:\n /\\b(text item delimiters|current application|missing value)\\b/\n },\n {\n className: 'keyword',\n begin: regex.concat(\n /\\b/,\n regex.either(...KEYWORD_PATTERNS),\n /\\b/\n )\n },\n {\n beginKeywords: 'on',\n illegal: /[${=;\\n]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS\n ]\n },\n ...COMMENTS\n ],\n illegal: /\\/\\/|->|=>|\\[\\[/\n };\n}\n\nmodule.exports = applescript;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY5OC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixlQUFlO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHFCQUFxQixFQUFFO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2FwcGxlc2NyaXB0LmpzP2U2MjgiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBBcHBsZVNjcmlwdFxuQXV0aG9yczogTmF0aGFuIEdyaWdnIDxuYXRoYW5AbmF0aGFuYW15Lm9yZz4sIERyLiBEcmFuZyA8ZHJkcmFuZ0BnbWFpbC5jb20+XG5DYXRlZ29yeTogc2NyaXB0aW5nXG5XZWJzaXRlOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9hcmNoaXZlL2RvY3VtZW50YXRpb24vQXBwbGVTY3JpcHQvQ29uY2VwdHVhbC9BcHBsZVNjcmlwdExhbmdHdWlkZS9pbnRyb2R1Y3Rpb24vQVNMUl9pbnRyby5odG1sXG5BdWRpdDogMjAyMFxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGFwcGxlc2NyaXB0KGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBTVFJJTkcgPSBobGpzLmluaGVyaXQoXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwgeyBpbGxlZ2FsOiBudWxsIH0pO1xuICBjb25zdCBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogL1xcKC8sXG4gICAgZW5kOiAvXFwpLyxcbiAgICBjb250YWluczogW1xuICAgICAgJ3NlbGYnLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgU1RSSU5HXG4gICAgXVxuICB9O1xuICBjb25zdCBDT01NRU5UX01PREVfMSA9IGhsanMuQ09NTUVOVCgvLS0vLCAvJC8pO1xuICBjb25zdCBDT01NRU5UX01PREVfMiA9IGhsanMuQ09NTUVOVChcbiAgICAvXFwoXFwqLyxcbiAgICAvXFwqXFwpLyxcbiAgICB7IGNvbnRhaW5zOiBbXG4gICAgICAnc2VsZicsIC8vIGFsbG93IG5lc3RpbmdcbiAgICAgIENPTU1FTlRfTU9ERV8xXG4gICAgXSB9XG4gICk7XG4gIGNvbnN0IENPTU1FTlRTID0gW1xuICAgIENPTU1FTlRfTU9ERV8xLFxuICAgIENPTU1FTlRfTU9ERV8yLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREVcbiAgXTtcblxuICBjb25zdCBLRVlXT1JEX1BBVFRFUk5TID0gW1xuICAgIC9hcGFydCBmcm9tLyxcbiAgICAvYXNpZGUgZnJvbS8sXG4gICAgL2luc3RlYWQgb2YvLFxuICAgIC9vdXQgb2YvLFxuICAgIC9ncmVhdGVyIHRoYW4vLFxuICAgIC9pc24ndHwoZG9lc24ndHxkb2VzIG5vdCkgKGVxdWFsfGNvbWUgYmVmb3JlfGNvbWUgYWZ0ZXJ8Y29udGFpbikvLFxuICAgIC8oZ3JlYXRlcnxsZXNzKSB0aGFuKCBvciBlcXVhbCk/LyxcbiAgICAvKHN0YXJ0cz98ZW5kc3xiZWdpbnM/KSB3aXRoLyxcbiAgICAvY29udGFpbmVkIGJ5LyxcbiAgICAvY29tZXMgKGJlZm9yZXxhZnRlcikvLFxuICAgIC9hIChyZWZ8cmVmZXJlbmNlKS8sXG4gICAgL1BPU0lYIChmaWxlfHBhdGgpLyxcbiAgICAvKGRhdGV8dGltZSkgc3RyaW5nLyxcbiAgICAvcXVvdGVkIGZvcm0vXG4gIF07XG5cbiAgY29uc3QgQlVJTFRfSU5fUEFUVEVSTlMgPSBbXG4gICAgL2NsaXBib2FyZCBpbmZvLyxcbiAgICAvdGhlIGNsaXBib2FyZC8sXG4gICAgL2luZm8gZm9yLyxcbiAgICAvbGlzdCAoZGlza3N8Zm9sZGVyKS8sXG4gICAgL21vdW50IHZvbHVtZS8sXG4gICAgL3BhdGggdG8vLFxuICAgIC8oY2xvc2V8b3BlbiBmb3IpIGFjY2Vzcy8sXG4gICAgLyhnZXR8c2V0KSBlb2YvLFxuICAgIC9jdXJyZW50IGRhdGUvLFxuICAgIC9kbyBzaGVsbCBzY3JpcHQvLFxuICAgIC9nZXQgdm9sdW1lIHNldHRpbmdzLyxcbiAgICAvcmFuZG9tIG51bWJlci8sXG4gICAgL3NldCB2b2x1bWUvLFxuICAgIC9zeXN0ZW0gYXR0cmlidXRlLyxcbiAgICAvc3lzdGVtIGluZm8vLFxuICAgIC90aW1lIHRvIEdNVC8sXG4gICAgLyhsb2FkfHJ1bnxzdG9yZSkgc2NyaXB0LyxcbiAgICAvc2NyaXB0aW5nIGNvbXBvbmVudHMvLFxuICAgIC9BU0NJSSAoY2hhcmFjdGVyfG51bWJlcikvLFxuICAgIC9sb2NhbGl6ZWQgc3RyaW5nLyxcbiAgICAvY2hvb3NlIChhcHBsaWNhdGlvbnxjb2xvcnxmaWxlfGZpbGUgbmFtZXxmb2xkZXJ8ZnJvbSBsaXN0fHJlbW90ZSBhcHBsaWNhdGlvbnxVUkwpLyxcbiAgICAvZGlzcGxheSAoYWxlcnR8ZGlhbG9nKS9cbiAgXTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdBcHBsZVNjcmlwdCcsXG4gICAgYWxpYXNlczogWyAnb3Nhc2NyaXB0JyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOlxuICAgICAgICAnYWJvdXQgYWJvdmUgYWZ0ZXIgYWdhaW5zdCBhbmQgYXJvdW5kIGFzIGF0IGJhY2sgYmVmb3JlIGJlZ2lubmluZyAnXG4gICAgICAgICsgJ2JlaGluZCBiZWxvdyBiZW5lYXRoIGJlc2lkZSBiZXR3ZWVuIGJ1dCBieSBjb25zaWRlcmluZyAnXG4gICAgICAgICsgJ2NvbnRhaW4gY29udGFpbnMgY29udGludWUgY29weSBkaXYgZG9lcyBlaWdodGggZWxzZSBlbmQgZXF1YWwgJ1xuICAgICAgICArICdlcXVhbHMgZXJyb3IgZXZlcnkgZXhpdCBmaWZ0aCBmaXJzdCBmb3IgZm91cnRoIGZyb20gZnJvbnQgJ1xuICAgICAgICArICdnZXQgZ2l2ZW4gZ2xvYmFsIGlmIGlnbm9yaW5nIGluIGludG8gaXMgaXQgaXRzIGxhc3QgbG9jYWwgbWUgJ1xuICAgICAgICArICdtaWRkbGUgbW9kIG15IG5pbnRoIG5vdCBvZiBvbiBvbnRvIG9yIG92ZXIgcHJvcCBwcm9wZXJ0eSBwdXQgcmVmICdcbiAgICAgICAgKyAncmVmZXJlbmNlIHJlcGVhdCByZXR1cm5pbmcgc2NyaXB0IHNlY29uZCBzZXQgc2V2ZW50aCBzaW5jZSAnXG4gICAgICAgICsgJ3NpeHRoIHNvbWUgdGVsbCB0ZW50aCB0aGF0IHRoZXwwIHRoZW4gdGhpcmQgdGhyb3VnaCB0aHJ1ICdcbiAgICAgICAgKyAndGltZW91dCB0aW1lcyB0byB0cmFuc2FjdGlvbiB0cnkgdW50aWwgd2hlcmUgd2hpbGUgd2hvc2Ugd2l0aCAnXG4gICAgICAgICsgJ3dpdGhvdXQnLFxuICAgICAgbGl0ZXJhbDpcbiAgICAgICAgJ0FwcGxlU2NyaXB0IGZhbHNlIGxpbmVmZWVkIHJldHVybiBwaSBxdW90ZSByZXN1bHQgc3BhY2UgdGFiIHRydWUnLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgICdhbGlhcyBhcHBsaWNhdGlvbiBib29sZWFuIGNsYXNzIGNvbnN0YW50IGRhdGUgZmlsZSBpbnRlZ2VyIGxpc3QgJ1xuICAgICAgICArICdudW1iZXIgcmVhbCByZWNvcmQgc3RyaW5nIHRleHQgJ1xuICAgICAgICArICdhY3RpdmF0ZSBiZWVwIGNvdW50IGRlbGF5IGxhdW5jaCBsb2cgb2Zmc2V0IHJlYWQgcm91bmQgJ1xuICAgICAgICArICdydW4gc2F5IHN1bW1hcml6ZSB3cml0ZSAnXG4gICAgICAgICsgJ2NoYXJhY3RlciBjaGFyYWN0ZXJzIGNvbnRlbnRzIGRheSBmcm9udG1vc3QgaWQgaXRlbSBsZW5ndGggJ1xuICAgICAgICArICdtb250aCBuYW1lfDAgcGFyYWdyYXBoIHBhcmFncmFwaHMgcmVzdCByZXZlcnNlIHJ1bm5pbmcgdGltZSB2ZXJzaW9uICdcbiAgICAgICAgKyAnd2Vla2RheSB3b3JkIHdvcmRzIHllYXInXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgU1RSSU5HLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAgICAgL1xcYi8sXG4gICAgICAgICAgcmVnZXguZWl0aGVyKC4uLkJVSUxUX0lOX1BBVFRFUk5TKSxcbiAgICAgICAgICAvXFxiL1xuICAgICAgICApXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgICAgIGJlZ2luOiAvXlxccypyZXR1cm5cXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICAgICAgYmVnaW46XG4gICAgICAgICAgL1xcYih0ZXh0IGl0ZW0gZGVsaW1pdGVyc3xjdXJyZW50IGFwcGxpY2F0aW9ufG1pc3NpbmcgdmFsdWUpXFxiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAgICAgL1xcYi8sXG4gICAgICAgICAgcmVnZXguZWl0aGVyKC4uLktFWVdPUkRfUEFUVEVSTlMpLFxuICAgICAgICAgIC9cXGIvXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdvbicsXG4gICAgICAgIGlsbGVnYWw6IC9bJHs9O1xcbl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIFBBUkFNU1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLi4uQ09NTUVOVFNcbiAgICBdLFxuICAgIGlsbGVnYWw6IC9cXC9cXC98LT58PT58XFxbXFxbL1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGxlc2NyaXB0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1698\n")},1708:I=>{"use strict";I.exports=require("node:process")},1727:module=>{eval('/*\nLanguage: VHDL\nAuthor: Igor Kalnitsky \nContributors: Daniel C.K. Kho , Guillaume Savaton \nDescription: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems.\nWebsite: https://en.wikipedia.org/wiki/VHDL\nCategory: hardware\n*/\n\nfunction vhdl(hljs) {\n // Regular expression for VHDL numeric literals.\n\n // Decimal literal:\n const INTEGER_RE = \'\\\\d(_|\\\\d)*\';\n const EXPONENT_RE = \'[eE][-+]?\' + INTEGER_RE;\n const DECIMAL_LITERAL_RE = INTEGER_RE + \'(\\\\.\' + INTEGER_RE + \')?\' + \'(\' + EXPONENT_RE + \')?\';\n // Based literal:\n const BASED_INTEGER_RE = \'\\\\w+\';\n const BASED_LITERAL_RE = INTEGER_RE + \'#\' + BASED_INTEGER_RE + \'(\\\\.\' + BASED_INTEGER_RE + \')?\' + \'#\' + \'(\' + EXPONENT_RE + \')?\';\n\n const NUMBER_RE = \'\\\\b(\' + BASED_LITERAL_RE + \'|\' + DECIMAL_LITERAL_RE + \')\';\n\n const KEYWORDS = [\n "abs",\n "access",\n "after",\n "alias",\n "all",\n "and",\n "architecture",\n "array",\n "assert",\n "assume",\n "assume_guarantee",\n "attribute",\n "begin",\n "block",\n "body",\n "buffer",\n "bus",\n "case",\n "component",\n "configuration",\n "constant",\n "context",\n "cover",\n "disconnect",\n "downto",\n "default",\n "else",\n "elsif",\n "end",\n "entity",\n "exit",\n "fairness",\n "file",\n "for",\n "force",\n "function",\n "generate",\n "generic",\n "group",\n "guarded",\n "if",\n "impure",\n "in",\n "inertial",\n "inout",\n "is",\n "label",\n "library",\n "linkage",\n "literal",\n "loop",\n "map",\n "mod",\n "nand",\n "new",\n "next",\n "nor",\n "not",\n "null",\n "of",\n "on",\n "open",\n "or",\n "others",\n "out",\n "package",\n "parameter",\n "port",\n "postponed",\n "procedure",\n "process",\n "property",\n "protected",\n "pure",\n "range",\n "record",\n "register",\n "reject",\n "release",\n "rem",\n "report",\n "restrict",\n "restrict_guarantee",\n "return",\n "rol",\n "ror",\n "select",\n "sequence",\n "severity",\n "shared",\n "signal",\n "sla",\n "sll",\n "sra",\n "srl",\n "strong",\n "subtype",\n "then",\n "to",\n "transport",\n "type",\n "unaffected",\n "units",\n "until",\n "use",\n "variable",\n "view",\n "vmode",\n "vprop",\n "vunit",\n "wait",\n "when",\n "while",\n "with",\n "xnor",\n "xor"\n ];\n const BUILT_INS = [\n "boolean",\n "bit",\n "character",\n "integer",\n "time",\n "delay_length",\n "natural",\n "positive",\n "string",\n "bit_vector",\n "file_open_kind",\n "file_open_status",\n "std_logic",\n "std_logic_vector",\n "unsigned",\n "signed",\n "boolean_vector",\n "integer_vector",\n "std_ulogic",\n "std_ulogic_vector",\n "unresolved_unsigned",\n "u_unsigned",\n "unresolved_signed",\n "u_signed",\n "real_vector",\n "time_vector"\n ];\n const LITERALS = [\n // severity_level\n "false",\n "true",\n "note",\n "warning",\n "error",\n "failure",\n // textio\n "line",\n "text",\n "side",\n "width"\n ];\n\n return {\n name: \'VHDL\',\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_INS,\n literal: LITERALS\n },\n illegal: /\\{/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.\n hljs.COMMENT(\'--\', \'$\'),\n hljs.QUOTE_STRING_MODE,\n {\n className: \'number\',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n className: \'string\',\n begin: \'\\\'(U|X|0|1|Z|W|L|H|-)\\\'\',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n className: \'symbol\',\n begin: \'\\\'[A-Za-z](_?[A-Za-z0-9])*\',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ]\n };\n}\n\nmodule.exports = vhdl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyNy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmhkbC5qcz82NDNjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogVkhETFxuQXV0aG9yOiBJZ29yIEthbG5pdHNreSA8aWdvckBrYWxuaXRza3kub3JnPlxuQ29udHJpYnV0b3JzOiBEYW5pZWwgQy5LLiBLaG8gPGRhbmllbC5raG9AdGF1aG9wLmNvbT4sIEd1aWxsYXVtZSBTYXZhdG9uIDxndWlsbGF1bWUuc2F2YXRvbkBlc2VvLmZyPlxuRGVzY3JpcHRpb246IFZIREwgaXMgYSBoYXJkd2FyZSBkZXNjcmlwdGlvbiBsYW5ndWFnZSB1c2VkIGluIGVsZWN0cm9uaWMgZGVzaWduIGF1dG9tYXRpb24gdG8gZGVzY3JpYmUgZGlnaXRhbCBhbmQgbWl4ZWQtc2lnbmFsIHN5c3RlbXMuXG5XZWJzaXRlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WSERMXG5DYXRlZ29yeTogaGFyZHdhcmVcbiovXG5cbmZ1bmN0aW9uIHZoZGwoaGxqcykge1xuICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIFZIREwgbnVtZXJpYyBsaXRlcmFscy5cblxuICAvLyBEZWNpbWFsIGxpdGVyYWw6XG4gIGNvbnN0IElOVEVHRVJfUkUgPSAnXFxcXGQoX3xcXFxcZCkqJztcbiAgY29uc3QgRVhQT05FTlRfUkUgPSAnW2VFXVstK10/JyArIElOVEVHRVJfUkU7XG4gIGNvbnN0IERFQ0lNQUxfTElURVJBTF9SRSA9IElOVEVHRVJfUkUgKyAnKFxcXFwuJyArIElOVEVHRVJfUkUgKyAnKT8nICsgJygnICsgRVhQT05FTlRfUkUgKyAnKT8nO1xuICAvLyBCYXNlZCBsaXRlcmFsOlxuICBjb25zdCBCQVNFRF9JTlRFR0VSX1JFID0gJ1xcXFx3Kyc7XG4gIGNvbnN0IEJBU0VEX0xJVEVSQUxfUkUgPSBJTlRFR0VSX1JFICsgJyMnICsgQkFTRURfSU5URUdFUl9SRSArICcoXFxcXC4nICsgQkFTRURfSU5URUdFUl9SRSArICcpPycgKyAnIycgKyAnKCcgKyBFWFBPTkVOVF9SRSArICcpPyc7XG5cbiAgY29uc3QgTlVNQkVSX1JFID0gJ1xcXFxiKCcgKyBCQVNFRF9MSVRFUkFMX1JFICsgJ3wnICsgREVDSU1BTF9MSVRFUkFMX1JFICsgJyknO1xuXG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgIFwiYWJzXCIsXG4gICAgXCJhY2Nlc3NcIixcbiAgICBcImFmdGVyXCIsXG4gICAgXCJhbGlhc1wiLFxuICAgIFwiYWxsXCIsXG4gICAgXCJhbmRcIixcbiAgICBcImFyY2hpdGVjdHVyZVwiLFxuICAgIFwiYXJyYXlcIixcbiAgICBcImFzc2VydFwiLFxuICAgIFwiYXNzdW1lXCIsXG4gICAgXCJhc3N1bWVfZ3VhcmFudGVlXCIsXG4gICAgXCJhdHRyaWJ1dGVcIixcbiAgICBcImJlZ2luXCIsXG4gICAgXCJibG9ja1wiLFxuICAgIFwiYm9keVwiLFxuICAgIFwiYnVmZmVyXCIsXG4gICAgXCJidXNcIixcbiAgICBcImNhc2VcIixcbiAgICBcImNvbXBvbmVudFwiLFxuICAgIFwiY29uZmlndXJhdGlvblwiLFxuICAgIFwiY29uc3RhbnRcIixcbiAgICBcImNvbnRleHRcIixcbiAgICBcImNvdmVyXCIsXG4gICAgXCJkaXNjb25uZWN0XCIsXG4gICAgXCJkb3dudG9cIixcbiAgICBcImRlZmF1bHRcIixcbiAgICBcImVsc2VcIixcbiAgICBcImVsc2lmXCIsXG4gICAgXCJlbmRcIixcbiAgICBcImVudGl0eVwiLFxuICAgIFwiZXhpdFwiLFxuICAgIFwiZmFpcm5lc3NcIixcbiAgICBcImZpbGVcIixcbiAgICBcImZvclwiLFxuICAgIFwiZm9yY2VcIixcbiAgICBcImZ1bmN0aW9uXCIsXG4gICAgXCJnZW5lcmF0ZVwiLFxuICAgIFwiZ2VuZXJpY1wiLFxuICAgIFwiZ3JvdXBcIixcbiAgICBcImd1YXJkZWRcIixcbiAgICBcImlmXCIsXG4gICAgXCJpbXB1cmVcIixcbiAgICBcImluXCIsXG4gICAgXCJpbmVydGlhbFwiLFxuICAgIFwiaW5vdXRcIixcbiAgICBcImlzXCIsXG4gICAgXCJsYWJlbFwiLFxuICAgIFwibGlicmFyeVwiLFxuICAgIFwibGlua2FnZVwiLFxuICAgIFwibGl0ZXJhbFwiLFxuICAgIFwibG9vcFwiLFxuICAgIFwibWFwXCIsXG4gICAgXCJtb2RcIixcbiAgICBcIm5hbmRcIixcbiAgICBcIm5ld1wiLFxuICAgIFwibmV4dFwiLFxuICAgIFwibm9yXCIsXG4gICAgXCJub3RcIixcbiAgICBcIm51bGxcIixcbiAgICBcIm9mXCIsXG4gICAgXCJvblwiLFxuICAgIFwib3BlblwiLFxuICAgIFwib3JcIixcbiAgICBcIm90aGVyc1wiLFxuICAgIFwib3V0XCIsXG4gICAgXCJwYWNrYWdlXCIsXG4gICAgXCJwYXJhbWV0ZXJcIixcbiAgICBcInBvcnRcIixcbiAgICBcInBvc3Rwb25lZFwiLFxuICAgIFwicHJvY2VkdXJlXCIsXG4gICAgXCJwcm9jZXNzXCIsXG4gICAgXCJwcm9wZXJ0eVwiLFxuICAgIFwicHJvdGVjdGVkXCIsXG4gICAgXCJwdXJlXCIsXG4gICAgXCJyYW5nZVwiLFxuICAgIFwicmVjb3JkXCIsXG4gICAgXCJyZWdpc3RlclwiLFxuICAgIFwicmVqZWN0XCIsXG4gICAgXCJyZWxlYXNlXCIsXG4gICAgXCJyZW1cIixcbiAgICBcInJlcG9ydFwiLFxuICAgIFwicmVzdHJpY3RcIixcbiAgICBcInJlc3RyaWN0X2d1YXJhbnRlZVwiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJyb2xcIixcbiAgICBcInJvclwiLFxuICAgIFwic2VsZWN0XCIsXG4gICAgXCJzZXF1ZW5jZVwiLFxuICAgIFwic2V2ZXJpdHlcIixcbiAgICBcInNoYXJlZFwiLFxuICAgIFwic2lnbmFsXCIsXG4gICAgXCJzbGFcIixcbiAgICBcInNsbFwiLFxuICAgIFwic3JhXCIsXG4gICAgXCJzcmxcIixcbiAgICBcInN0cm9uZ1wiLFxuICAgIFwic3VidHlwZVwiLFxuICAgIFwidGhlblwiLFxuICAgIFwidG9cIixcbiAgICBcInRyYW5zcG9ydFwiLFxuICAgIFwidHlwZVwiLFxuICAgIFwidW5hZmZlY3RlZFwiLFxuICAgIFwidW5pdHNcIixcbiAgICBcInVudGlsXCIsXG4gICAgXCJ1c2VcIixcbiAgICBcInZhcmlhYmxlXCIsXG4gICAgXCJ2aWV3XCIsXG4gICAgXCJ2bW9kZVwiLFxuICAgIFwidnByb3BcIixcbiAgICBcInZ1bml0XCIsXG4gICAgXCJ3YWl0XCIsXG4gICAgXCJ3aGVuXCIsXG4gICAgXCJ3aGlsZVwiLFxuICAgIFwid2l0aFwiLFxuICAgIFwieG5vclwiLFxuICAgIFwieG9yXCJcbiAgXTtcbiAgY29uc3QgQlVJTFRfSU5TID0gW1xuICAgIFwiYm9vbGVhblwiLFxuICAgIFwiYml0XCIsXG4gICAgXCJjaGFyYWN0ZXJcIixcbiAgICBcImludGVnZXJcIixcbiAgICBcInRpbWVcIixcbiAgICBcImRlbGF5X2xlbmd0aFwiLFxuICAgIFwibmF0dXJhbFwiLFxuICAgIFwicG9zaXRpdmVcIixcbiAgICBcInN0cmluZ1wiLFxuICAgIFwiYml0X3ZlY3RvclwiLFxuICAgIFwiZmlsZV9vcGVuX2tpbmRcIixcbiAgICBcImZpbGVfb3Blbl9zdGF0dXNcIixcbiAgICBcInN0ZF9sb2dpY1wiLFxuICAgIFwic3RkX2xvZ2ljX3ZlY3RvclwiLFxuICAgIFwidW5zaWduZWRcIixcbiAgICBcInNpZ25lZFwiLFxuICAgIFwiYm9vbGVhbl92ZWN0b3JcIixcbiAgICBcImludGVnZXJfdmVjdG9yXCIsXG4gICAgXCJzdGRfdWxvZ2ljXCIsXG4gICAgXCJzdGRfdWxvZ2ljX3ZlY3RvclwiLFxuICAgIFwidW5yZXNvbHZlZF91bnNpZ25lZFwiLFxuICAgIFwidV91bnNpZ25lZFwiLFxuICAgIFwidW5yZXNvbHZlZF9zaWduZWRcIixcbiAgICBcInVfc2lnbmVkXCIsXG4gICAgXCJyZWFsX3ZlY3RvclwiLFxuICAgIFwidGltZV92ZWN0b3JcIlxuICBdO1xuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICAvLyBzZXZlcml0eV9sZXZlbFxuICAgIFwiZmFsc2VcIixcbiAgICBcInRydWVcIixcbiAgICBcIm5vdGVcIixcbiAgICBcIndhcm5pbmdcIixcbiAgICBcImVycm9yXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgLy8gdGV4dGlvXG4gICAgXCJsaW5lXCIsXG4gICAgXCJ0ZXh0XCIsXG4gICAgXCJzaWRlXCIsXG4gICAgXCJ3aWR0aFwiXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnVkhETCcsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRfSU5TLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFNcbiAgICB9LFxuICAgIGlsbGVnYWw6IC9cXHsvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLCAvLyBWSERMLTIwMDggYmxvY2sgY29tbWVudGluZy5cbiAgICAgIGhsanMuQ09NTUVOVCgnLS0nLCAnJCcpLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IE5VTUJFUl9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogJ1xcJyhVfFh8MHwxfFp8V3xMfEh8LSlcXCcnLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdcXCdbQS1aYS16XShfP1tBLVphLXowLTldKSonLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2aGRsO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1727\n')},1743:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar node_process = __webpack_require__(1708);\nvar cst = __webpack_require__(9536);\nvar lexer = __webpack_require__(320);\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (atMapIndent && bv.type !== 'block-seq') {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc0My5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxJQUFjO0FBQ3pDLFVBQVUsbUJBQU8sQ0FBQyxJQUFVO0FBQzVCLFlBQVksbUJBQU8sQ0FBQyxHQUFZOztBQUVoQztBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHdCQUF3QjtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELE9BQU87QUFDeEQsOEJBQThCLHFEQUFxRDtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxnQ0FBZ0M7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMscUJBQXFCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMseUJBQXlCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGdDQUFnQztBQUN6RTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMscUJBQXFCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLG1CQUFtQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsV0FBVztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxXQUFXO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIseUJBQXlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDJCQUEyQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDJCQUEyQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxtQkFBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDBCQUEwQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsOENBQThDO0FBQ3BGLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxvQ0FBb0M7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsMkNBQTJDO0FBQ3pGLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsK0NBQStDO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQywyQ0FBMkM7QUFDckYsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxpQkFBaUI7QUFDM0QsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Qsb0NBQW9DO0FBQ3BGO0FBQ0E7QUFDQSw2Q0FBNkMsMkNBQTJDO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQywrQ0FBK0M7QUFDekYsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLHlCQUF5QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsa0JBQWtCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLDJCQUEyQjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQywyQkFBMkI7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDJCQUEyQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDJCQUEyQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLCtDQUErQztBQUN2RjtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsb0NBQW9DO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDJCQUEyQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDZCQUE2QjtBQUNyRTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsa0JBQWtCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixxQkFBcUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDJCQUEyQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwwQkFBMEI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMkNBQTJDO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L3BhcnNlL3BhcnNlci5qcz83YmQxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIG5vZGVfcHJvY2VzcyA9IHJlcXVpcmUoJ25vZGU6cHJvY2VzcycpO1xudmFyIGNzdCA9IHJlcXVpcmUoJy4vY3N0LmpzJyk7XG52YXIgbGV4ZXIgPSByZXF1aXJlKCcuL2xleGVyLmpzJyk7XG5cbmZ1bmN0aW9uIGluY2x1ZGVzVG9rZW4obGlzdCwgdHlwZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSlcbiAgICAgICAgaWYgKGxpc3RbaV0udHlwZSA9PT0gdHlwZSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGZpbmROb25FbXB0eUluZGV4KGxpc3QpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgc3dpdGNoIChsaXN0W2ldLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbmZ1bmN0aW9uIGlzRmxvd1Rva2VuKHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbj8udHlwZSkge1xuICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0UHJldlByb3BzKHBhcmVudCkge1xuICAgIHN3aXRjaCAocGFyZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudC5zdGFydDtcbiAgICAgICAgY2FzZSAnYmxvY2stbWFwJzoge1xuICAgICAgICAgICAgY29uc3QgaXQgPSBwYXJlbnQuaXRlbXNbcGFyZW50Lml0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIGl0LnNlcCA/PyBpdC5zdGFydDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdibG9jay1zZXEnOlxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudC5pdGVtc1twYXJlbnQuaXRlbXMubGVuZ3RoIC0gMV0uc3RhcnQ7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuLyoqIE5vdGU6IE1heSBtb2RpZnkgaW5wdXQgYXJyYXkgKi9cbmZ1bmN0aW9uIGdldEZpcnN0S2V5U3RhcnRQcm9wcyhwcmV2KSB7XG4gICAgaWYgKHByZXYubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gW107XG4gICAgbGV0IGkgPSBwcmV2Lmxlbmd0aDtcbiAgICBsb29wOiB3aGlsZSAoLS1pID49IDApIHtcbiAgICAgICAgc3dpdGNoIChwcmV2W2ldLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1zdGFydCc6XG4gICAgICAgICAgICBjYXNlICdleHBsaWNpdC1rZXktaW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ21hcC12YWx1ZS1pbmQnOlxuICAgICAgICAgICAgY2FzZSAnc2VxLWl0ZW0taW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd2hpbGUgKHByZXZbKytpXT8udHlwZSA9PT0gJ3NwYWNlJykge1xuICAgICAgICAvKiBsb29wICovXG4gICAgfVxuICAgIHJldHVybiBwcmV2LnNwbGljZShpLCBwcmV2Lmxlbmd0aCk7XG59XG5mdW5jdGlvbiBmaXhGbG93U2VxSXRlbXMoZmMpIHtcbiAgICBpZiAoZmMuc3RhcnQudHlwZSA9PT0gJ2Zsb3ctc2VxLXN0YXJ0Jykge1xuICAgICAgICBmb3IgKGNvbnN0IGl0IG9mIGZjLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXQuc2VwICYmXG4gICAgICAgICAgICAgICAgIWl0LnZhbHVlICYmXG4gICAgICAgICAgICAgICAgIWluY2x1ZGVzVG9rZW4oaXQuc3RhcnQsICdleHBsaWNpdC1rZXktaW5kJykgJiZcbiAgICAgICAgICAgICAgICAhaW5jbHVkZXNUb2tlbihpdC5zZXAsICdtYXAtdmFsdWUtaW5kJykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXQua2V5KVxuICAgICAgICAgICAgICAgICAgICBpdC52YWx1ZSA9IGl0LmtleTtcbiAgICAgICAgICAgICAgICBkZWxldGUgaXQua2V5O1xuICAgICAgICAgICAgICAgIGlmIChpc0Zsb3dUb2tlbihpdC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlLmVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGl0LnZhbHVlLmVuZCwgaXQuc2VwKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQudmFsdWUuZW5kID0gaXQuc2VwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGl0LnN0YXJ0LCBpdC5zZXApO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBpdC5zZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEEgWUFNTCBjb25jcmV0ZSBzeW50YXggdHJlZSAoQ1NUKSBwYXJzZXJcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3JjOiBzdHJpbmcgPSAuLi5cbiAqIGZvciAoY29uc3QgdG9rZW4gb2YgbmV3IFBhcnNlcigpLnBhcnNlKHNyYykpIHtcbiAqICAgLy8gdG9rZW46IFRva2VuXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUbyB1c2UgdGhlIHBhcnNlciB3aXRoIGEgdXNlci1wcm92aWRlZCBsZXhlcjpcbiAqXG4gKiBgYGB0c1xuICogZnVuY3Rpb24qIHBhcnNlKHNvdXJjZTogc3RyaW5nLCBsZXhlcjogTGV4ZXIpIHtcbiAqICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcigpXG4gKiAgIGZvciAoY29uc3QgbGV4ZW1lIG9mIGxleGVyLmxleChzb3VyY2UpKVxuICogICAgIHlpZWxkKiBwYXJzZXIubmV4dChsZXhlbWUpXG4gKiAgIHlpZWxkKiBwYXJzZXIuZW5kKClcbiAqIH1cbiAqXG4gKiBjb25zdCBzcmM6IHN0cmluZyA9IC4uLlxuICogY29uc3QgbGV4ZXIgPSBuZXcgTGV4ZXIoKVxuICogZm9yIChjb25zdCB0b2tlbiBvZiBwYXJzZShzcmMsIGxleGVyKSkge1xuICogICAvLyB0b2tlbjogVG9rZW5cbiAqIH1cbiAqIGBgYFxuICovXG5jbGFzcyBQYXJzZXIge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvbk5ld0xpbmUgLSBJZiBkZWZpbmVkLCBjYWxsZWQgc2VwYXJhdGVseSB3aXRoIHRoZSBzdGFydCBwb3NpdGlvbiBvZlxuICAgICAqICAgZWFjaCBuZXcgbGluZSAoaW4gYHBhcnNlKClgLCBpbmNsdWRpbmcgdGhlIHN0YXJ0IG9mIGlucHV0KS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihvbk5ld0xpbmUpIHtcbiAgICAgICAgLyoqIElmIHRydWUsIHNwYWNlIGFuZCBzZXF1ZW5jZSBpbmRpY2F0b3JzIGNvdW50IGFzIGluZGVudGF0aW9uICovXG4gICAgICAgIHRoaXMuYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgLyoqIElmIHRydWUsIG5leHQgdG9rZW4gaXMgYSBzY2FsYXIgdmFsdWUgKi9cbiAgICAgICAgdGhpcy5hdFNjYWxhciA9IGZhbHNlO1xuICAgICAgICAvKiogQ3VycmVudCBpbmRlbnRhdGlvbiBsZXZlbCAqL1xuICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgIC8qKiBDdXJyZW50IG9mZnNldCBzaW5jZSB0aGUgc3RhcnQgb2YgcGFyc2luZyAqL1xuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIC8qKiBPbiB0aGUgc2FtZSBsaW5lIHdpdGggYSBibG9jayBtYXAga2V5ICovXG4gICAgICAgIHRoaXMub25LZXlMaW5lID0gZmFsc2U7XG4gICAgICAgIC8qKiBUb3AgaW5kaWNhdGVzIHRoZSBub2RlIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgYnVpbHQgKi9cbiAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuICAgICAgICAvKiogVGhlIHNvdXJjZSBvZiB0aGUgY3VycmVudCB0b2tlbiwgc2V0IGluIHBhcnNlKCkgKi9cbiAgICAgICAgdGhpcy5zb3VyY2UgPSAnJztcbiAgICAgICAgLyoqIFRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IHRva2VuLCBzZXQgaW4gcGFyc2UoKSAqL1xuICAgICAgICB0aGlzLnR5cGUgPSAnJztcbiAgICAgICAgLy8gTXVzdCBiZSBkZWZpbmVkIGFmdGVyIGBuZXh0KClgXG4gICAgICAgIHRoaXMubGV4ZXIgPSBuZXcgbGV4ZXIuTGV4ZXIoKTtcbiAgICAgICAgdGhpcy5vbk5ld0xpbmUgPSBvbk5ld0xpbmU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFBhcnNlIGBzb3VyY2VgIGFzIGEgWUFNTCBzdHJlYW0uXG4gICAgICogSWYgYGluY29tcGxldGVgLCBhIHBhcnQgb2YgdGhlIGxhc3QgbGluZSBtYXkgYmUgbGVmdCBhcyBhIGJ1ZmZlciBmb3IgdGhlIG5leHQgY2FsbC5cbiAgICAgKlxuICAgICAqIEVycm9ycyBhcmUgbm90IHRocm93biwgYnV0IHlpZWxkZWQgYXMgYHsgdHlwZTogJ2Vycm9yJywgbWVzc2FnZSB9YCB0b2tlbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIGdlbmVyYXRvciBvZiB0b2tlbnMgcmVwcmVzZW50aW5nIGVhY2ggZGlyZWN0aXZlLCBkb2N1bWVudCwgYW5kIG90aGVyIHN0cnVjdHVyZS5cbiAgICAgKi9cbiAgICAqcGFyc2Uoc291cmNlLCBpbmNvbXBsZXRlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMub25OZXdMaW5lICYmIHRoaXMub2Zmc2V0ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5vbk5ld0xpbmUoMCk7XG4gICAgICAgIGZvciAoY29uc3QgbGV4ZW1lIG9mIHRoaXMubGV4ZXIubGV4KHNvdXJjZSwgaW5jb21wbGV0ZSkpXG4gICAgICAgICAgICB5aWVsZCogdGhpcy5uZXh0KGxleGVtZSk7XG4gICAgICAgIGlmICghaW5jb21wbGV0ZSlcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLmVuZCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZHZhbmNlIHRoZSBwYXJzZXIgYnkgdGhlIGBzb3VyY2VgIG9mIG9uZSBsZXhpY2FsIHRva2VuLlxuICAgICAqL1xuICAgICpuZXh0KHNvdXJjZSkge1xuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgaWYgKG5vZGVfcHJvY2Vzcy5lbnYuTE9HX1RPS0VOUylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd8JywgY3N0LnByZXR0eVRva2VuKHNvdXJjZSkpO1xuICAgICAgICBpZiAodGhpcy5hdFNjYWxhcikge1xuICAgICAgICAgICAgdGhpcy5hdFNjYWxhciA9IGZhbHNlO1xuICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlID0gY3N0LnRva2VuVHlwZShzb3VyY2UpO1xuICAgICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm90IGEgWUFNTCB0b2tlbjogJHtzb3VyY2V9YDtcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCh7IHR5cGU6ICdlcnJvcicsIG9mZnNldDogdGhpcy5vZmZzZXQsIG1lc3NhZ2UsIHNvdXJjZSB9KTtcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ICs9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ3NjYWxhcicpIHtcbiAgICAgICAgICAgIHRoaXMuYXROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmF0U2NhbGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdzY2FsYXInO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub25OZXdMaW5lKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5ld0xpbmUodGhpcy5vZmZzZXQgKyBzb3VyY2UubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdE5ld0xpbmUgJiYgc291cmNlWzBdID09PSAnICcpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdleHBsaWNpdC1rZXktaW5kJzpcbiAgICAgICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzZXEtaXRlbS1pbmQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdE5ld0xpbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkb2MtbW9kZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvdy1lcnJvci1lbmQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ICs9IHNvdXJjZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIENhbGwgYXQgZW5kIG9mIGlucHV0IHRvIHB1c2ggb3V0IGFueSByZW1haW5pbmcgY29uc3RydWN0aW9ucyAqL1xuICAgICplbmQoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnN0YWNrLmxlbmd0aCA+IDApXG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICB9XG4gICAgZ2V0IHNvdXJjZVRva2VuKCkge1xuICAgICAgICBjb25zdCBzdCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc3Q7XG4gICAgfVxuICAgICpzdGVwKCkge1xuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnBlZWsoMSk7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdkb2MtZW5kJyAmJiAoIXRvcCB8fCB0b3AudHlwZSAhPT0gJ2RvYy1lbmQnKSkge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2subGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RvYy1lbmQnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b3ApXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuc3RyZWFtKCk7XG4gICAgICAgIHN3aXRjaCAodG9wLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuZG9jdW1lbnQodG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnNjYWxhcih0b3ApO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuYmxvY2tTY2FsYXIodG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLW1hcCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmJsb2NrTWFwKHRvcCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zZXEnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5ibG9ja1NlcXVlbmNlKHRvcCk7XG4gICAgICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5mbG93Q29sbGVjdGlvbih0b3ApO1xuICAgICAgICAgICAgY2FzZSAnZG9jLWVuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmRvY3VtZW50RW5kKHRvcCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgfVxuICAgIHBlZWsobikge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIG5dO1xuICAgIH1cbiAgICAqcG9wKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gZXJyb3IgPz8gdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnVHJpZWQgdG8gcG9wIGFuIGVtcHR5IHN0YWNrJztcbiAgICAgICAgICAgIHlpZWxkIHsgdHlwZTogJ2Vycm9yJywgb2Zmc2V0OiB0aGlzLm9mZnNldCwgc291cmNlOiAnJywgbWVzc2FnZSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHRoaXMucGVlaygxKTtcbiAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSAnYmxvY2stc2NhbGFyJykge1xuICAgICAgICAgICAgICAgIC8vIEJsb2NrIHNjYWxhcnMgdXNlIHRoZWlyIHBhcmVudCByYXRoZXIgdGhhbiBoZWFkZXIgaW5kZW50XG4gICAgICAgICAgICAgICAgdG9rZW4uaW5kZW50ID0gJ2luZGVudCcgaW4gdG9wID8gdG9wLmluZGVudCA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSAnZmxvdy1jb2xsZWN0aW9uJyAmJiB0b3AudHlwZSA9PT0gJ2RvY3VtZW50Jykge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBhbGwgaW5kZW50IGZvciB0b3AtbGV2ZWwgZmxvdyBjb2xsZWN0aW9uc1xuICAgICAgICAgICAgICAgIHRva2VuLmluZGVudCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2Zsb3ctY29sbGVjdGlvbicpXG4gICAgICAgICAgICAgICAgZml4Rmxvd1NlcUl0ZW1zKHRva2VuKTtcbiAgICAgICAgICAgIHN3aXRjaCAodG9wLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkb2N1bWVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRvcC52YWx1ZSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgICAgICAgICB0b3AucHJvcHMucHVzaCh0b2tlbik7IC8vIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLW1hcCc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXQgPSB0b3AuaXRlbXNbdG9wLml0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IHRva2VuLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXQudmFsdWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiB0b2tlbiwgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gIWl0LmV4cGxpY2l0S2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdibG9jay1zZXEnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ID0gdG9wLml0ZW1zW3RvcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wLml0ZW1zLnB1c2goeyBzdGFydDogW10sIHZhbHVlOiB0b2tlbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQudmFsdWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb3ctY29sbGVjdGlvbic6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXQgPSB0b3AuaXRlbXNbdG9wLml0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiB0b2tlbiwgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0b3AudHlwZSA9PT0gJ2RvY3VtZW50JyB8fFxuICAgICAgICAgICAgICAgIHRvcC50eXBlID09PSAnYmxvY2stbWFwJyB8fFxuICAgICAgICAgICAgICAgIHRvcC50eXBlID09PSAnYmxvY2stc2VxJykgJiZcbiAgICAgICAgICAgICAgICAodG9rZW4udHlwZSA9PT0gJ2Jsb2NrLW1hcCcgfHwgdG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNlcScpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IHRva2VuLml0ZW1zW3Rva2VuLml0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0ICYmXG4gICAgICAgICAgICAgICAgICAgICFsYXN0LnNlcCAmJlxuICAgICAgICAgICAgICAgICAgICAhbGFzdC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBsYXN0LnN0YXJ0Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmluZE5vbkVtcHR5SW5kZXgobGFzdC5zdGFydCkgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICh0b2tlbi5pbmRlbnQgPT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Quc3RhcnQuZXZlcnkoc3QgPT4gc3QudHlwZSAhPT0gJ2NvbW1lbnQnIHx8IHN0LmluZGVudCA8IHRva2VuLmluZGVudCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3AudHlwZSA9PT0gJ2RvY3VtZW50JylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5lbmQgPSBsYXN0LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuaXRlbXMucHVzaCh7IHN0YXJ0OiBsYXN0LnN0YXJ0IH0pO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbi5pdGVtcy5zcGxpY2UoLTEsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAqc3RyZWFtKCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGlyZWN0aXZlLWxpbmUnOlxuICAgICAgICAgICAgICAgIHlpZWxkIHsgdHlwZTogJ2RpcmVjdGl2ZScsIG9mZnNldDogdGhpcy5vZmZzZXQsIHNvdXJjZTogdGhpcy5zb3VyY2UgfTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdieXRlLW9yZGVyLW1hcmsnOlxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLnNvdXJjZVRva2VuO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1tb2RlJzpcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1zdGFydCc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkb2N1bWVudCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RvYy1zdGFydCcpXG4gICAgICAgICAgICAgICAgICAgIGRvYy5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChkb2MpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkICR7dGhpcy50eXBlfSB0b2tlbiBpbiBZQU1MIHN0cmVhbWAsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlXG4gICAgICAgIH07XG4gICAgfVxuICAgICpkb2N1bWVudChkb2MpIHtcbiAgICAgICAgaWYgKGRvYy52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5saW5lRW5kKGRvYyk7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbmROb25FbXB0eUluZGV4KGRvYy5zdGFydCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZG9jLnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGRvYy5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBidiA9IHRoaXMuc3RhcnRCbG9ja1ZhbHVlKGRvYyk7XG4gICAgICAgIGlmIChidilcbiAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChidik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCAke3RoaXMudHlwZX0gdG9rZW4gaW4gWUFNTCBkb2N1bWVudGAsXG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqc2NhbGFyKHNjYWxhcikge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbWFwLXZhbHVlLWluZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBnZXRQcmV2UHJvcHModGhpcy5wZWVrKDIpKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgbGV0IHNlcDtcbiAgICAgICAgICAgIGlmIChzY2FsYXIuZW5kKSB7XG4gICAgICAgICAgICAgICAgc2VwID0gc2NhbGFyLmVuZDtcbiAgICAgICAgICAgICAgICBzZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgc2NhbGFyLmVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBzZXAgPSBbdGhpcy5zb3VyY2VUb2tlbl07XG4gICAgICAgICAgICBjb25zdCBtYXAgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBzY2FsYXIub2Zmc2V0LFxuICAgICAgICAgICAgICAgIGluZGVudDogc2NhbGFyLmluZGVudCxcbiAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogc2NhbGFyLCBzZXAgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV0gPSBtYXA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgeWllbGQqIHRoaXMubGluZUVuZChzY2FsYXIpO1xuICAgIH1cbiAgICAqYmxvY2tTY2FsYXIoc2NhbGFyKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIHNjYWxhci5wcm9wcy5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICAgICAgc2NhbGFyLnNvdXJjZSA9IHRoaXMuc291cmNlO1xuICAgICAgICAgICAgICAgIC8vIGJsb2NrLXNjYWxhciBzb3VyY2UgaW5jbHVkZXMgdHJhaWxpbmcgbmV3bGluZVxuICAgICAgICAgICAgICAgIHRoaXMuYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub25OZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicpICsgMTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5sICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCArIG5sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5sID0gdGhpcy5zb3VyY2UuaW5kZXhPZignXFxuJywgbmwpICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqYmxvY2tNYXAobWFwKSB7XG4gICAgICAgIGNvbnN0IGl0ID0gbWFwLml0ZW1zW21hcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgLy8gaXQuc2VwIGlzIHRydWUtaXNoIGlmIHBhaXIgYWxyZWFkeSBoYXMga2V5IG9yIDogc2VwYXJhdG9yXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSAnZW5kJyBpbiBpdC52YWx1ZSA/IGl0LnZhbHVlLmVuZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IEFycmF5LmlzQXJyYXkoZW5kKSA/IGVuZFtlbmQubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Py50eXBlID09PSAnY29tbWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ/LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXRJbmRlbnRlZENvbW1lbnQoaXQuc3RhcnQsIG1hcC5pbmRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gbWFwLml0ZW1zW21hcC5pdGVtcy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHByZXY/LnZhbHVlPy5lbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZW5kLCBpdC5zdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5kZW50ID49IG1hcC5pbmRlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0TWFwSW5kZW50ID0gIXRoaXMub25LZXlMaW5lICYmIHRoaXMuaW5kZW50ID09PSBtYXAuaW5kZW50O1xuICAgICAgICAgICAgY29uc3QgYXROZXh0SXRlbSA9IGF0TWFwSW5kZW50ICYmXG4gICAgICAgICAgICAgICAgKGl0LnNlcCB8fCBpdC5leHBsaWNpdEtleSkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgIT09ICdzZXEtaXRlbS1pbmQnO1xuICAgICAgICAgICAgLy8gRm9yIGVtcHR5IG5vZGVzLCBhc3NpZ24gbmV3bGluZS1zZXBhcmF0ZWQgbm90IGluZGVudGVkIGVtcHR5IHRva2VucyB0byBmb2xsb3dpbmcgbm9kZVxuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gW107XG4gICAgICAgICAgICBpZiAoYXROZXh0SXRlbSAmJiBpdC5zZXAgJiYgIWl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmwgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0LnNlcC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdCA9IGl0LnNlcFtpXTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubC5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0LmluZGVudCA+IG1hcC5pbmRlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5sLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5sLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5sLmxlbmd0aCA+PSAyKVxuICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGl0LnNlcC5zcGxpY2UobmxbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdE5leHRJdGVtIHx8IGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2goeyBzdGFydCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQuc2VwICYmICFpdC5leHBsaWNpdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LmV4cGxpY2l0S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdE5leHRJdGVtIHx8IGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2goeyBzdGFydCwgZXhwbGljaXRLZXk6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSwgZXhwbGljaXRLZXk6IHRydWUgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21hcC12YWx1ZS1pbmQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzVG9rZW4oaXQuc3RhcnQsICduZXdsaW5lJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRGaXJzdEtleVN0YXJ0UHJvcHMoaXQuc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5jbHVkZXNUb2tlbihpdC5zZXAsICdtYXAtdmFsdWUtaW5kJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0Zsb3dUb2tlbihpdC5rZXkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbmV3bGluZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRGaXJzdEtleVN0YXJ0UHJvcHMoaXQuc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGl0LmtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXAgPSBpdC5zZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0eXBlIGd1YXJkIGlzIHdyb25nIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXQua2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdHlwZSBndWFyZCBpcyB3cm9uZyBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0LnNlcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXksIHNlcCB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhcnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBhY3R1YWxseSBhdCBuZXh0IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAgPSBpdC5zZXAuY29uY2F0KHN0YXJ0LCB0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdC5zZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC52YWx1ZSB8fCBhdE5leHRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2goeyBzdGFydCwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbWFwLXZhbHVlLWluZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydDogW10sIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnMgPSB0aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF0TmV4dEl0ZW0gfHwgaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQsIGtleTogZnMsIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goZnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBidiA9IHRoaXMuc3RhcnRCbG9ja1ZhbHVlKG1hcCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0TWFwSW5kZW50ICYmIGJ2LnR5cGUgIT09ICdibG9jay1zZXEnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLml0ZW1zLnB1c2goeyBzdGFydCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChidik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICB9XG4gICAgKmJsb2NrU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGNvbnN0IGl0ID0gc2VxLml0ZW1zW3NlcS5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSAnZW5kJyBpbiBpdC52YWx1ZSA/IGl0LnZhbHVlLmVuZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IEFycmF5LmlzQXJyYXkoZW5kKSA/IGVuZFtlbmQubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Py50eXBlID09PSAnY29tbWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ/LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2VxLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdEluZGVudGVkQ29tbWVudChpdC5zdGFydCwgc2VxLmluZGVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBzZXEuaXRlbXNbc2VxLml0ZW1zLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gcHJldj8udmFsdWU/LmVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlbmQsIGl0LnN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXEuaXRlbXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSB8fCB0aGlzLmluZGVudCA8PSBzZXEuaW5kZW50KVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3NlcS1pdGVtLWluZCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZW50ICE9PSBzZXEuaW5kZW50KVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUgfHwgaW5jbHVkZXNUb2tlbihpdC5zdGFydCwgJ3NlcS1pdGVtLWluZCcpKVxuICAgICAgICAgICAgICAgICAgICBzZXEuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmRlbnQgPiBzZXEuaW5kZW50KSB7XG4gICAgICAgICAgICBjb25zdCBidiA9IHRoaXMuc3RhcnRCbG9ja1ZhbHVlKHNlcSk7XG4gICAgICAgICAgICBpZiAoYnYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgIH1cbiAgICAqZmxvd0NvbGxlY3Rpb24oZmMpIHtcbiAgICAgICAgY29uc3QgaXQgPSBmYy5pdGVtc1tmYy5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2Zsb3ctZXJyb3ItZW5kJykge1xuICAgICAgICAgICAgbGV0IHRvcDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB0b3AgPSB0aGlzLnBlZWsoMSk7XG4gICAgICAgICAgICB9IHdoaWxlICh0b3AgJiYgdG9wLnR5cGUgPT09ICdmbG93LWNvbGxlY3Rpb24nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmYy5lbmQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1hJzpcbiAgICAgICAgICAgICAgICBjYXNlICdleHBsaWNpdC1rZXktaW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBmYy5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21hcC12YWx1ZS1pbmQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQgfHwgaXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBmYy5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXQuc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZzID0gdGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQgfHwgaXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBmYy5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goZnMpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogZnMsIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvdy1tYXAtZW5kJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmbG93LXNlcS1lbmQnOlxuICAgICAgICAgICAgICAgICAgICBmYy5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShmYyk7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgaWYgKGJ2KVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChidik7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBlZWsoMik7XG4gICAgICAgICAgICBpZiAocGFyZW50LnR5cGUgPT09ICdibG9jay1tYXAnICYmXG4gICAgICAgICAgICAgICAgKCh0aGlzLnR5cGUgPT09ICdtYXAtdmFsdWUtaW5kJyAmJiBwYXJlbnQuaW5kZW50ID09PSBmYy5pbmRlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnR5cGUgPT09ICduZXdsaW5lJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXBhcmVudC5pdGVtc1twYXJlbnQuaXRlbXMubGVuZ3RoIC0gMV0uc2VwKSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdtYXAtdmFsdWUtaW5kJyAmJlxuICAgICAgICAgICAgICAgIHBhcmVudC50eXBlICE9PSAnZmxvdy1jb2xsZWN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBnZXRQcmV2UHJvcHMocGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IGdldEZpcnN0S2V5U3RhcnRQcm9wcyhwcmV2KTtcbiAgICAgICAgICAgICAgICBmaXhGbG93U2VxSXRlbXMoZmMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcCA9IGZjLmVuZC5zcGxpY2UoMSwgZmMuZW5kLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBmYy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogZmMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogZmMsIHNlcCB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXSA9IG1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLmxpbmVFbmQoZmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZsb3dTY2FsYXIodHlwZSkge1xuICAgICAgICBpZiAodGhpcy5vbk5ld0xpbmUpIHtcbiAgICAgICAgICAgIGxldCBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicpICsgMTtcbiAgICAgICAgICAgIHdoaWxlIChubCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0ICsgbmwpO1xuICAgICAgICAgICAgICAgIG5sID0gdGhpcy5zb3VyY2UuaW5kZXhPZignXFxuJywgbmwpICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBzdGFydEJsb2NrVmFsdWUocGFyZW50KSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXNjYWxhci1oZWFkZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1zY2FsYXInLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogW3RoaXMuc291cmNlVG9rZW5dLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICcnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhc2UgJ2Zsb3ctbWFwLXN0YXJ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2Zsb3ctc2VxLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZmxvdy1jb2xsZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuc291cmNlVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlICdzZXEtaXRlbS1pbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1zZXEnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlICdleHBsaWNpdC1rZXktaW5kJzoge1xuICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldik7XG4gICAgICAgICAgICAgICAgc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBleHBsaWNpdEtleTogdHJ1ZSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzoge1xuICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGF0SW5kZW50ZWRDb21tZW50KHN0YXJ0LCBpbmRlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gJ2NvbW1lbnQnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbmRlbnQgPD0gaW5kZW50KVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gc3RhcnQuZXZlcnkoc3QgPT4gc3QudHlwZSA9PT0gJ25ld2xpbmUnIHx8IHN0LnR5cGUgPT09ICdzcGFjZScpO1xuICAgIH1cbiAgICAqZG9jdW1lbnRFbmQoZG9jRW5kKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdkb2MtbW9kZScpIHtcbiAgICAgICAgICAgIGlmIChkb2NFbmQuZW5kKVxuICAgICAgICAgICAgICAgIGRvY0VuZC5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBkb2NFbmQuZW5kID0gW3RoaXMuc291cmNlVG9rZW5dO1xuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ25ld2xpbmUnKVxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpsaW5lRW5kKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdjb21tYSc6XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOlxuICAgICAgICAgICAgY2FzZSAnZG9jLWVuZCc6XG4gICAgICAgICAgICBjYXNlICdmbG93LXNlcS1lbmQnOlxuICAgICAgICAgICAgY2FzZSAnZmxvdy1tYXAtZW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ21hcC12YWx1ZS1pbmQnOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIGFsbCBvdGhlciB2YWx1ZXMgYXJlIGVycm9yc1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi5lbmQpXG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uZW5kID0gW3RoaXMuc291cmNlVG9rZW5dO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydHMuUGFyc2VyID0gUGFyc2VyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1743\n")},1812:module=>{eval("const flatmap = (makeSource, combineResults) => inputSource => (start, sink) => {\r\n if (start !== 0) return;\r\n\r\n if (!combineResults) combineResults = (x, y) => y;\r\n\r\n let index = 0;\r\n let talkbacks = {};\r\n let sourceEnded = false;\r\n let inputSourceTalkback = null;\r\n\r\n let pullHandle = (t, d) => {\r\n var currTalkback = Object.values(talkbacks).pop();\r\n if (t === 1) {\r\n if (currTalkback) currTalkback(1);\r\n else if (!sourceEnded) inputSourceTalkback(1);\r\n else sink(2);\r\n }\r\n if (t === 2) {\r\n if (currTalkback) currTalkback(2);\r\n inputSourceTalkback(2);\r\n }\r\n }\r\n\r\n let stopOrContinue = d => {\r\n if (sourceEnded && Object.keys(talkbacks).length === 0) sink(2, d);\r\n else inputSourceTalkback(1);\r\n }\r\n\r\n let makeSink = (i, d, talkbacks) =>\r\n (currT, currD) => {\r\n if (currT === 0) {talkbacks[i] = currD; talkbacks[i](1);};\r\n if (currT === 1) sink(1, combineResults(d, currD));\r\n if (currT === 2) {\r\n delete talkbacks[i];\r\n stopOrContinue(currD);\r\n }\r\n }\r\n\r\n inputSource(0, (t, d) => {\r\n if (t === 0) {\r\n inputSourceTalkback = d;\r\n sink(0, pullHandle);\r\n }\r\n if (t === 1) {\r\n makeSource(d)(0, makeSink(index++, d, talkbacks));\r\n }\r\n if (t === 2) {\r\n sourceEnded = true;\r\n stopOrContinue(d);\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = flatmap;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgxMi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsc0JBQXNCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9jYWxsYmFnLWZsYXQtbWFwQDEuMC4yL25vZGVfbW9kdWxlcy9jYWxsYmFnLWZsYXQtbWFwL2luZGV4LmpzPzk4ZmUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZmxhdG1hcCA9IChtYWtlU291cmNlLCBjb21iaW5lUmVzdWx0cykgPT4gaW5wdXRTb3VyY2UgPT4gKHN0YXJ0LCBzaW5rKSA9PiB7XHJcbiAgICBpZiAoc3RhcnQgIT09IDApIHJldHVybjtcclxuXHJcbiAgICBpZiAoIWNvbWJpbmVSZXN1bHRzKSBjb21iaW5lUmVzdWx0cyA9ICh4LCB5KSA9PiB5O1xyXG5cclxuICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICBsZXQgdGFsa2JhY2tzID0ge307XHJcbiAgICBsZXQgc291cmNlRW5kZWQgPSBmYWxzZTtcclxuICAgIGxldCBpbnB1dFNvdXJjZVRhbGtiYWNrID0gbnVsbDtcclxuXHJcbiAgICBsZXQgcHVsbEhhbmRsZSA9ICh0LCBkKSA9PiB7XHJcbiAgICAgICAgdmFyIGN1cnJUYWxrYmFjayA9IE9iamVjdC52YWx1ZXModGFsa2JhY2tzKS5wb3AoKTtcclxuICAgICAgICBpZiAodCA9PT0gMSkge1xyXG4gICAgICAgICAgICBpZiAoY3VyclRhbGtiYWNrKSBjdXJyVGFsa2JhY2soMSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFzb3VyY2VFbmRlZCkgaW5wdXRTb3VyY2VUYWxrYmFjaygxKTtcclxuICAgICAgICAgICAgZWxzZSBzaW5rKDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodCA9PT0gMikge1xyXG4gICAgICAgICAgICBpZiAoY3VyclRhbGtiYWNrKSBjdXJyVGFsa2JhY2soMik7XHJcbiAgICAgICAgICAgIGlucHV0U291cmNlVGFsa2JhY2soMik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBzdG9wT3JDb250aW51ZSA9IGQgPT4ge1xyXG4gICAgICAgIGlmIChzb3VyY2VFbmRlZCAmJiBPYmplY3Qua2V5cyh0YWxrYmFja3MpLmxlbmd0aCA9PT0gMCkgc2luaygyLCBkKTtcclxuICAgICAgICBlbHNlIGlucHV0U291cmNlVGFsa2JhY2soMSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG1ha2VTaW5rID0gKGksIGQsIHRhbGtiYWNrcykgPT5cclxuICAgICAgICAoY3VyclQsIGN1cnJEKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjdXJyVCA9PT0gMCkge3RhbGtiYWNrc1tpXSA9IGN1cnJEOyB0YWxrYmFja3NbaV0oMSk7fTtcclxuICAgICAgICAgICAgaWYgKGN1cnJUID09PSAxKSBzaW5rKDEsIGNvbWJpbmVSZXN1bHRzKGQsIGN1cnJEKSk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyVCA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRhbGtiYWNrc1tpXTtcclxuICAgICAgICAgICAgICAgIHN0b3BPckNvbnRpbnVlKGN1cnJEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICBpbnB1dFNvdXJjZSgwLCAodCwgZCkgPT4ge1xyXG4gICAgICAgIGlmICh0ID09PSAwKSB7XHJcbiAgICAgICAgICAgIGlucHV0U291cmNlVGFsa2JhY2sgPSBkO1xyXG4gICAgICAgICAgICBzaW5rKDAsIHB1bGxIYW5kbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodCA9PT0gMSkge1xyXG4gICAgICAgICAgICBtYWtlU291cmNlKGQpKDAsIG1ha2VTaW5rKGluZGV4KyssIGQsIHRhbGtiYWNrcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodCA9PT0gMikge1xyXG4gICAgICAgICAgICBzb3VyY2VFbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHN0b3BPckNvbnRpbnVlKGQpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXRtYXA7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1812\n")},1813:module=>{eval('/*\nLanguage: C/AL\nAuthor: Kenneth Fuglsang Christensen \nDescription: Provides highlighting of Microsoft Dynamics NAV C/AL code files\nWebsite: https://docs.microsoft.com/en-us/dynamics-nav/programming-in-c-al\nCategory: enterprise\n*/\n\n/** @type LanguageFn */\nfunction cal(hljs) {\n const regex = hljs.regex;\n const KEYWORDS = [\n "div",\n "mod",\n "in",\n "and",\n "or",\n "not",\n "xor",\n "asserterror",\n "begin",\n "case",\n "do",\n "downto",\n "else",\n "end",\n "exit",\n "for",\n "local",\n "if",\n "of",\n "repeat",\n "then",\n "to",\n "until",\n "while",\n "with",\n "var"\n ];\n const LITERALS = \'false true\';\n const COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\{/,\n /\\}/,\n { relevance: 0 }\n ),\n hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n { relevance: 10 }\n )\n ];\n const STRING = {\n className: \'string\',\n begin: /\'/,\n end: /\'/,\n contains: [ { begin: /\'\'/ } ]\n };\n const CHAR_STRING = {\n className: \'string\',\n begin: /(#\\d+)+/\n };\n const DATE = {\n className: \'number\',\n begin: \'\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)\',\n relevance: 0\n };\n const DBL_QUOTED_VARIABLE = {\n className: \'string\', // not a string technically but makes sense to be highlighted in the same style\n begin: \'"\',\n end: \'"\'\n };\n\n const PROCEDURE = {\n match: [\n /procedure/,\n /\\s+/,\n /[a-zA-Z_][\\w@]*/,\n /\\s*/\n ],\n scope: {\n 1: "keyword",\n 3: "title.function"\n },\n contains: [\n {\n className: \'params\',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n STRING,\n CHAR_STRING,\n hljs.NUMBER_MODE\n ]\n },\n ...COMMENT_MODES\n ]\n };\n\n const OBJECT_TYPES = [\n "Table",\n "Form",\n "Report",\n "Dataport",\n "Codeunit",\n "XMLport",\n "MenuSuite",\n "Page",\n "Query"\n ];\n const OBJECT = {\n match: [\n /OBJECT/,\n /\\s+/,\n regex.either(...OBJECT_TYPES),\n /\\s+/,\n /\\d+/,\n /\\s+(?=[^\\s])/,\n /.*/,\n /$/\n ],\n relevance: 3,\n scope: {\n 1: "keyword",\n 3: "type",\n 5: "number",\n 7: "title"\n }\n };\n\n const PROPERTY = {\n match: /[\\w]+(?=\\=)/,\n scope: "attribute",\n relevance: 0\n };\n\n return {\n name: \'C/AL\',\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERALS\n },\n illegal: /\\/\\*/,\n contains: [\n PROPERTY,\n STRING,\n CHAR_STRING,\n DATE,\n DBL_QUOTED_VARIABLE,\n hljs.NUMBER_MODE,\n OBJECT,\n PROCEDURE\n ]\n };\n}\n\nmodule.exports = cal;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgxMy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY2FsLmpzPzUzZDciXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBDL0FMXG5BdXRob3I6IEtlbm5ldGggRnVnbHNhbmcgQ2hyaXN0ZW5zZW4gPGtmdWdsc2FuZ0BnbWFpbC5jb20+XG5EZXNjcmlwdGlvbjogUHJvdmlkZXMgaGlnaGxpZ2h0aW5nIG9mIE1pY3Jvc29mdCBEeW5hbWljcyBOQVYgQy9BTCBjb2RlIGZpbGVzXG5XZWJzaXRlOiBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9keW5hbWljcy1uYXYvcHJvZ3JhbW1pbmctaW4tYy1hbFxuQ2F0ZWdvcnk6IGVudGVycHJpc2VcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjYWwoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgIFwiZGl2XCIsXG4gICAgXCJtb2RcIixcbiAgICBcImluXCIsXG4gICAgXCJhbmRcIixcbiAgICBcIm9yXCIsXG4gICAgXCJub3RcIixcbiAgICBcInhvclwiLFxuICAgIFwiYXNzZXJ0ZXJyb3JcIixcbiAgICBcImJlZ2luXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJkb1wiLFxuICAgIFwiZG93bnRvXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJlbmRcIixcbiAgICBcImV4aXRcIixcbiAgICBcImZvclwiLFxuICAgIFwibG9jYWxcIixcbiAgICBcImlmXCIsXG4gICAgXCJvZlwiLFxuICAgIFwicmVwZWF0XCIsXG4gICAgXCJ0aGVuXCIsXG4gICAgXCJ0b1wiLFxuICAgIFwidW50aWxcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJ3aXRoXCIsXG4gICAgXCJ2YXJcIlxuICBdO1xuICBjb25zdCBMSVRFUkFMUyA9ICdmYWxzZSB0cnVlJztcbiAgY29uc3QgQ09NTUVOVF9NT0RFUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgL1xcey8sXG4gICAgICAvXFx9LyxcbiAgICAgIHsgcmVsZXZhbmNlOiAwIH1cbiAgICApLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgIC9cXChcXCovLFxuICAgICAgL1xcKlxcKS8sXG4gICAgICB7IHJlbGV2YW5jZTogMTAgfVxuICAgIClcbiAgXTtcbiAgY29uc3QgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC8nLyxcbiAgICBlbmQ6IC8nLyxcbiAgICBjb250YWluczogWyB7IGJlZ2luOiAvJycvIH0gXVxuICB9O1xuICBjb25zdCBDSEFSX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvKCNcXGQrKSsvXG4gIH07XG4gIGNvbnN0IERBVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICBiZWdpbjogJ1xcXFxiXFxcXGQrKFxcXFwuXFxcXGQrKT8oRFR8RHxUKScsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IERCTF9RVU9URURfVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJywgLy8gbm90IGEgc3RyaW5nIHRlY2huaWNhbGx5IGJ1dCBtYWtlcyBzZW5zZSB0byBiZSBoaWdobGlnaHRlZCBpbiB0aGUgc2FtZSBzdHlsZVxuICAgIGJlZ2luOiAnXCInLFxuICAgIGVuZDogJ1wiJ1xuICB9O1xuXG4gIGNvbnN0IFBST0NFRFVSRSA9IHtcbiAgICBtYXRjaDogW1xuICAgICAgL3Byb2NlZHVyZS8sXG4gICAgICAvXFxzKy8sXG4gICAgICAvW2EtekEtWl9dW1xcd0BdKi8sXG4gICAgICAvXFxzKi9cbiAgICBdLFxuICAgIHNjb3BlOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgIENIQVJfU1RSSU5HLFxuICAgICAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC4uLkNPTU1FTlRfTU9ERVNcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgT0JKRUNUX1RZUEVTID0gW1xuICAgIFwiVGFibGVcIixcbiAgICBcIkZvcm1cIixcbiAgICBcIlJlcG9ydFwiLFxuICAgIFwiRGF0YXBvcnRcIixcbiAgICBcIkNvZGV1bml0XCIsXG4gICAgXCJYTUxwb3J0XCIsXG4gICAgXCJNZW51U3VpdGVcIixcbiAgICBcIlBhZ2VcIixcbiAgICBcIlF1ZXJ5XCJcbiAgXTtcbiAgY29uc3QgT0JKRUNUID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvT0JKRUNULyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIHJlZ2V4LmVpdGhlciguLi5PQkpFQ1RfVFlQRVMpLFxuICAgICAgL1xccysvLFxuICAgICAgL1xcZCsvLFxuICAgICAgL1xccysoPz1bXlxcc10pLyxcbiAgICAgIC8uKi8sXG4gICAgICAvJC9cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMyxcbiAgICBzY29wZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcInR5cGVcIixcbiAgICAgIDU6IFwibnVtYmVyXCIsXG4gICAgICA3OiBcInRpdGxlXCJcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgUFJPUEVSVFkgPSB7XG4gICAgbWF0Y2g6IC9bXFx3XSsoPz1cXD0pLyxcbiAgICBzY29wZTogXCJhdHRyaWJ1dGVcIixcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdDL0FMJyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTXG4gICAgfSxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgUFJPUEVSVFksXG4gICAgICBTVFJJTkcsXG4gICAgICBDSEFSX1NUUklORyxcbiAgICAgIERBVEUsXG4gICAgICBEQkxfUVVPVEVEX1ZBUklBQkxFLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIE9CSkVDVCxcbiAgICAgIFBST0NFRFVSRVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1813\n')},1861:module=>{eval("/*\n Language: JBoss CLI\n Author: Raphaël Parrëe \n Description: language definition jboss cli\n Website: https://docs.jboss.org/author/display/WFLY/Command+Line+Interface\n Category: config\n */\n\nfunction jbossCli(hljs) {\n const PARAM = {\n begin: /[\\w-]+ *=/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /[\\w-]+/\n }\n ]\n };\n const PARAMSBLOCK = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [ PARAM ],\n relevance: 0\n };\n const OPERATION = {\n className: 'function',\n begin: /:[\\w\\-.]+/,\n relevance: 0\n };\n const PATH = {\n className: 'string',\n begin: /\\B([\\/.])[\\w\\-.\\/=]+/\n };\n const COMMAND_PARAMS = {\n className: 'params',\n begin: /--[\\w\\-=\\/]+/\n };\n return {\n name: 'JBoss CLI',\n aliases: [ 'wildfly-cli' ],\n keywords: {\n $pattern: '[a-z\\-]+',\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy '\n + 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls '\n + 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias '\n + 'undeploy unset version xa-data-source', // module\n literal: 'true false'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n COMMAND_PARAMS,\n OPERATION,\n PATH,\n PARAMSBLOCK\n ]\n };\n}\n\nmodule.exports = jbossCli;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg2MS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2pib3NzLWNsaS5qcz85ZjUxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gTGFuZ3VhZ2U6IEpCb3NzIENMSVxuIEF1dGhvcjogUmFwaGHDq2wgUGFycsOrZSA8cnBhcnJlZUBlZGM0aXQuY29tPlxuIERlc2NyaXB0aW9uOiBsYW5ndWFnZSBkZWZpbml0aW9uIGpib3NzIGNsaVxuIFdlYnNpdGU6IGh0dHBzOi8vZG9jcy5qYm9zcy5vcmcvYXV0aG9yL2Rpc3BsYXkvV0ZMWS9Db21tYW5kK0xpbmUrSW50ZXJmYWNlXG4gQ2F0ZWdvcnk6IGNvbmZpZ1xuICovXG5cbmZ1bmN0aW9uIGpib3NzQ2xpKGhsanMpIHtcbiAgY29uc3QgUEFSQU0gPSB7XG4gICAgYmVnaW46IC9bXFx3LV0rICo9LyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiAvW1xcdy1dKy9cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IFBBUkFNU0JMT0NLID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFsgUEFSQU0gXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgT1BFUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogLzpbXFx3XFwtLl0rLyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgUEFUSCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXFxCKFtcXC8uXSlbXFx3XFwtLlxcLz1dKy9cbiAgfTtcbiAgY29uc3QgQ09NTUFORF9QQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICBiZWdpbjogLy0tW1xcd1xcLT1cXC9dKy9cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnSkJvc3MgQ0xJJyxcbiAgICBhbGlhc2VzOiBbICd3aWxkZmx5LWNsaScgXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJHBhdHRlcm46ICdbYS16XFwtXSsnLFxuICAgICAga2V5d29yZDogJ2FsaWFzIGJhdGNoIGNkIGNsZWFyIGNvbW1hbmQgY29ubmVjdCBjb25uZWN0aW9uLWZhY3RvcnkgY29ubmVjdGlvbi1pbmZvIGRhdGEtc291cmNlIGRlcGxveSAnXG4gICAgICArICdkZXBsb3ltZW50LWluZm8gZGVwbG95bWVudC1vdmVybGF5IGVjaG8gZWNoby1kbXIgaGVscCBoaXN0b3J5IGlmIGpkYmMtZHJpdmVyLWluZm8gam1zLXF1ZXVlfDIwIGptcy10b3BpY3wyMCBscyAnXG4gICAgICArICdwYXRjaCBwd2QgcXVpdCByZWFkLWF0dHJpYnV0ZSByZWFkLW9wZXJhdGlvbiByZWxvYWQgcm9sbG91dC1wbGFuIHJ1bi1iYXRjaCBzZXQgc2h1dGRvd24gdHJ5IHVuYWxpYXMgJ1xuICAgICAgKyAndW5kZXBsb3kgdW5zZXQgdmVyc2lvbiB4YS1kYXRhLXNvdXJjZScsIC8vIG1vZHVsZVxuICAgICAgbGl0ZXJhbDogJ3RydWUgZmFsc2UnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBDT01NQU5EX1BBUkFNUyxcbiAgICAgIE9QRVJBVElPTixcbiAgICAgIFBBVEgsXG4gICAgICBQQVJBTVNCTE9DS1xuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBqYm9zc0NsaTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1861\n")},1922:module=>{eval("/*\nLanguage: Extended Backus-Naur Form\nAuthor: Alex McKibben \nWebsite: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form\nCategory: syntax\n*/\n\n/** @type LanguageFn */\nfunction ebnf(hljs) {\n const commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\n\n const nonTerminalMode = {\n className: \"attribute\",\n begin: /^[ ]*[a-zA-Z]+([\\s_-]+[a-zA-Z]+)*/\n };\n\n const specialSequenceMode = {\n className: \"meta\",\n begin: /\\?.*\\?/\n };\n\n const ruleBodyMode = {\n begin: /=/,\n end: /[.;]/,\n contains: [\n commentMode,\n specialSequenceMode,\n {\n // terminals\n className: 'string',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '`',\n end: '`'\n }\n ]\n }\n ]\n };\n\n return {\n name: 'Extended Backus-Naur Form',\n illegal: /\\S/,\n contains: [\n commentMode,\n nonTerminalMode,\n ruleBodyMode\n ]\n };\n}\n\nmodule.exports = ebnf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkyMi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZWJuZi5qcz80NDczIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogRXh0ZW5kZWQgQmFja3VzLU5hdXIgRm9ybVxuQXV0aG9yOiBBbGV4IE1jS2liYmVuIDxhbGV4QG51bGxzY29wZS5uZXQ+XG5XZWJzaXRlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHRlbmRlZF9CYWNrdXPigJNOYXVyX2Zvcm1cbkNhdGVnb3J5OiBzeW50YXhcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBlYm5mKGhsanMpIHtcbiAgY29uc3QgY29tbWVudE1vZGUgPSBobGpzLkNPTU1FTlQoL1xcKFxcKi8sIC9cXCpcXCkvKTtcblxuICBjb25zdCBub25UZXJtaW5hbE1vZGUgPSB7XG4gICAgY2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiLFxuICAgIGJlZ2luOiAvXlsgXSpbYS16QS1aXSsoW1xcc18tXStbYS16QS1aXSspKi9cbiAgfTtcblxuICBjb25zdCBzcGVjaWFsU2VxdWVuY2VNb2RlID0ge1xuICAgIGNsYXNzTmFtZTogXCJtZXRhXCIsXG4gICAgYmVnaW46IC9cXD8uKlxcPy9cbiAgfTtcblxuICBjb25zdCBydWxlQm9keU1vZGUgPSB7XG4gICAgYmVnaW46IC89LyxcbiAgICBlbmQ6IC9bLjtdLyxcbiAgICBjb250YWluczogW1xuICAgICAgY29tbWVudE1vZGUsXG4gICAgICBzcGVjaWFsU2VxdWVuY2VNb2RlLFxuICAgICAge1xuICAgICAgICAvLyB0ZXJtaW5hbHNcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ2AnLFxuICAgICAgICAgICAgZW5kOiAnYCdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnRXh0ZW5kZWQgQmFja3VzLU5hdXIgRm9ybScsXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGNvbW1lbnRNb2RlLFxuICAgICAgbm9uVGVybWluYWxNb2RlLFxuICAgICAgcnVsZUJvZHlNb2RlXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVibmY7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1922\n")},1934:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar Scalar = __webpack_require__(2042);\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkzNC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLG1CQUFPLENBQUMsSUFBb0I7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLFFBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdCQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxpQkFBaUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0EsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVGQUF1RixJQUFJO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGtCQUFrQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esa0NBQWtDLGVBQWU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtQkFBbUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkZBQTZGLE9BQU87QUFDcEc7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRFQUE0RSxXQUFXO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9jb21wb3NlL3Jlc29sdmUtYmxvY2stc2NhbGFyLmpzPzVlNmQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgU2NhbGFyID0gcmVxdWlyZSgnLi4vbm9kZXMvU2NhbGFyLmpzJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVCbG9ja1NjYWxhcihjdHgsIHNjYWxhciwgb25FcnJvcikge1xuICAgIGNvbnN0IHN0YXJ0ID0gc2NhbGFyLm9mZnNldDtcbiAgICBjb25zdCBoZWFkZXIgPSBwYXJzZUJsb2NrU2NhbGFySGVhZGVyKHNjYWxhciwgY3R4Lm9wdGlvbnMuc3RyaWN0LCBvbkVycm9yKTtcbiAgICBpZiAoIWhlYWRlcilcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6ICcnLCB0eXBlOiBudWxsLCBjb21tZW50OiAnJywgcmFuZ2U6IFtzdGFydCwgc3RhcnQsIHN0YXJ0XSB9O1xuICAgIGNvbnN0IHR5cGUgPSBoZWFkZXIubW9kZSA9PT0gJz4nID8gU2NhbGFyLlNjYWxhci5CTE9DS19GT0xERUQgOiBTY2FsYXIuU2NhbGFyLkJMT0NLX0xJVEVSQUw7XG4gICAgY29uc3QgbGluZXMgPSBzY2FsYXIuc291cmNlID8gc3BsaXRMaW5lcyhzY2FsYXIuc291cmNlKSA6IFtdO1xuICAgIC8vIGRldGVybWluZSB0aGUgZW5kIG9mIGNvbnRlbnQgJiBzdGFydCBvZiBjaG9tcGluZ1xuICAgIGxldCBjaG9tcFN0YXJ0ID0gbGluZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gbGluZXNbaV1bMV07XG4gICAgICAgIGlmIChjb250ZW50ID09PSAnJyB8fCBjb250ZW50ID09PSAnXFxyJylcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2hvcnRjdXQgZm9yIGVtcHR5IGNvbnRlbnRzXG4gICAgaWYgKGNob21wU3RhcnQgPT09IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBoZWFkZXIuY2hvbXAgPT09ICcrJyAmJiBsaW5lcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/ICdcXG4nLnJlcGVhdChNYXRoLm1heCgxLCBsaW5lcy5sZW5ndGggLSAxKSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIGxldCBlbmQgPSBzdGFydCArIGhlYWRlci5sZW5ndGg7XG4gICAgICAgIGlmIChzY2FsYXIuc291cmNlKVxuICAgICAgICAgICAgZW5kICs9IHNjYWxhci5zb3VyY2UubGVuZ3RoO1xuICAgICAgICByZXR1cm4geyB2YWx1ZSwgdHlwZSwgY29tbWVudDogaGVhZGVyLmNvbW1lbnQsIHJhbmdlOiBbc3RhcnQsIGVuZCwgZW5kXSB9O1xuICAgIH1cbiAgICAvLyBmaW5kIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCB0byB0cmltIGZyb20gc3RhcnRcbiAgICBsZXQgdHJpbUluZGVudCA9IHNjYWxhci5pbmRlbnQgKyBoZWFkZXIuaW5kZW50O1xuICAgIGxldCBvZmZzZXQgPSBzY2FsYXIub2Zmc2V0ICsgaGVhZGVyLmxlbmd0aDtcbiAgICBsZXQgY29udGVudFN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob21wU3RhcnQ7ICsraSkge1xuICAgICAgICBjb25zdCBbaW5kZW50LCBjb250ZW50XSA9IGxpbmVzW2ldO1xuICAgICAgICBpZiAoY29udGVudCA9PT0gJycgfHwgY29udGVudCA9PT0gJ1xccicpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZW50ID09PSAwICYmIGluZGVudC5sZW5ndGggPiB0cmltSW5kZW50KVxuICAgICAgICAgICAgICAgIHRyaW1JbmRlbnQgPSBpbmRlbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGVudC5sZW5ndGggPCB0cmltSW5kZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdCbG9jayBzY2FsYXJzIHdpdGggbW9yZS1pbmRlbnRlZCBsZWFkaW5nIGVtcHR5IGxpbmVzIG11c3QgdXNlIGFuIGV4cGxpY2l0IGluZGVudGF0aW9uIGluZGljYXRvcic7XG4gICAgICAgICAgICAgICAgb25FcnJvcihvZmZzZXQgKyBpbmRlbnQubGVuZ3RoLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVhZGVyLmluZGVudCA9PT0gMClcbiAgICAgICAgICAgICAgICB0cmltSW5kZW50ID0gaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRlbnRTdGFydCA9IGk7XG4gICAgICAgICAgICBpZiAodHJpbUluZGVudCA9PT0gMCAmJiAhY3R4LmF0Um9vdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQmxvY2sgc2NhbGFyIHZhbHVlcyBpbiBjb2xsZWN0aW9ucyBtdXN0IGJlIGluZGVudGVkJztcbiAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9mZnNldCArPSBpbmRlbnQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxO1xuICAgIH1cbiAgICAvLyBpbmNsdWRlIHRyYWlsaW5nIG1vcmUtaW5kZW50ZWQgZW1wdHkgbGluZXMgaW4gY29udGVudFxuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IGNob21wU3RhcnQ7IC0taSkge1xuICAgICAgICBpZiAobGluZXNbaV1bMF0ubGVuZ3RoID4gdHJpbUluZGVudClcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpICsgMTtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgbGV0IHNlcCA9ICcnO1xuICAgIGxldCBwcmV2TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgLy8gbGVhZGluZyB3aGl0ZXNwYWNlIGlzIGtlcHQgaW50YWN0XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50U3RhcnQ7ICsraSlcbiAgICAgICAgdmFsdWUgKz0gbGluZXNbaV1bMF0uc2xpY2UodHJpbUluZGVudCkgKyAnXFxuJztcbiAgICBmb3IgKGxldCBpID0gY29udGVudFN0YXJ0OyBpIDwgY2hvbXBTdGFydDsgKytpKSB7XG4gICAgICAgIGxldCBbaW5kZW50LCBjb250ZW50XSA9IGxpbmVzW2ldO1xuICAgICAgICBvZmZzZXQgKz0gaW5kZW50Lmxlbmd0aCArIGNvbnRlbnQubGVuZ3RoICsgMTtcbiAgICAgICAgY29uc3QgY3JsZiA9IGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXSA9PT0gJ1xccic7XG4gICAgICAgIGlmIChjcmxmKVxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMCwgLTEpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgYWxyZWFkeSBjYXVnaHQgaW4gbGV4ZXIgKi9cbiAgICAgICAgaWYgKGNvbnRlbnQgJiYgaW5kZW50Lmxlbmd0aCA8IHRyaW1JbmRlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IGhlYWRlci5pbmRlbnRcbiAgICAgICAgICAgICAgICA/ICdleHBsaWNpdCBpbmRlbnRhdGlvbiBpbmRpY2F0b3InXG4gICAgICAgICAgICAgICAgOiAnZmlyc3QgbGluZSc7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYEJsb2NrIHNjYWxhciBsaW5lcyBtdXN0IG5vdCBiZSBsZXNzIGluZGVudGVkIHRoYW4gdGhlaXIgJHtzcmN9YDtcbiAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0IC0gY29udGVudC5sZW5ndGggLSAoY3JsZiA/IDIgOiAxKSwgJ0JBRF9JTkRFTlQnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIGluZGVudCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBTY2FsYXIuU2NhbGFyLkJMT0NLX0xJVEVSQUwpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IHNlcCArIGluZGVudC5zbGljZSh0cmltSW5kZW50KSArIGNvbnRlbnQ7XG4gICAgICAgICAgICBzZXAgPSAnXFxuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbmRlbnQubGVuZ3RoID4gdHJpbUluZGVudCB8fCBjb250ZW50WzBdID09PSAnXFx0Jykge1xuICAgICAgICAgICAgLy8gbW9yZS1pbmRlbnRlZCBjb250ZW50IHdpdGhpbiBhIGZvbGRlZCBibG9ja1xuICAgICAgICAgICAgaWYgKHNlcCA9PT0gJyAnKVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICAgICAgZWxzZSBpZiAoIXByZXZNb3JlSW5kZW50ZWQgJiYgc2VwID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICBzZXAgPSAnXFxuXFxuJztcbiAgICAgICAgICAgIHZhbHVlICs9IHNlcCArIGluZGVudC5zbGljZSh0cmltSW5kZW50KSArIGNvbnRlbnQ7XG4gICAgICAgICAgICBzZXAgPSAnXFxuJztcbiAgICAgICAgICAgIHByZXZNb3JlSW5kZW50ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgICAgICAvLyBlbXB0eSBsaW5lXG4gICAgICAgICAgICBpZiAoc2VwID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnXFxuJztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBzZXAgPSAnXFxuJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlICs9IHNlcCArIGNvbnRlbnQ7XG4gICAgICAgICAgICBzZXAgPSAnICc7XG4gICAgICAgICAgICBwcmV2TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3dpdGNoIChoZWFkZXIuY2hvbXApIHtcbiAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gY2hvbXBTdGFydDsgaSA8IGxpbmVzLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdcXG4nICsgbGluZXNbaV1bMF0uc2xpY2UodHJpbUluZGVudCk7XG4gICAgICAgICAgICBpZiAodmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gIT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdcXG4nO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YWx1ZSArPSAnXFxuJztcbiAgICB9XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBoZWFkZXIubGVuZ3RoICsgc2NhbGFyLnNvdXJjZS5sZW5ndGg7XG4gICAgcmV0dXJuIHsgdmFsdWUsIHR5cGUsIGNvbW1lbnQ6IGhlYWRlci5jb21tZW50LCByYW5nZTogW3N0YXJ0LCBlbmQsIGVuZF0gfTtcbn1cbmZ1bmN0aW9uIHBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoeyBvZmZzZXQsIHByb3BzIH0sIHN0cmljdCwgb25FcnJvcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGlmIChwcm9wc1swXS50eXBlICE9PSAnYmxvY2stc2NhbGFyLWhlYWRlcicpIHtcbiAgICAgICAgb25FcnJvcihwcm9wc1swXSwgJ0lNUE9TU0lCTEUnLCAnQmxvY2sgc2NhbGFyIGhlYWRlciBub3QgZm91bmQnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHsgc291cmNlIH0gPSBwcm9wc1swXTtcbiAgICBjb25zdCBtb2RlID0gc291cmNlWzBdO1xuICAgIGxldCBpbmRlbnQgPSAwO1xuICAgIGxldCBjaG9tcCA9ICcnO1xuICAgIGxldCBlcnJvciA9IC0xO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc291cmNlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGNoID0gc291cmNlW2ldO1xuICAgICAgICBpZiAoIWNob21wICYmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpKVxuICAgICAgICAgICAgY2hvbXAgPSBjaDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuID0gTnVtYmVyKGNoKTtcbiAgICAgICAgICAgIGlmICghaW5kZW50ICYmIG4pXG4gICAgICAgICAgICAgICAgaW5kZW50ID0gbjtcbiAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yID09PSAtMSlcbiAgICAgICAgICAgICAgICBlcnJvciA9IG9mZnNldCArIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVycm9yICE9PSAtMSlcbiAgICAgICAgb25FcnJvcihlcnJvciwgJ1VORVhQRUNURURfVE9LRU4nLCBgQmxvY2sgc2NhbGFyIGhlYWRlciBpbmNsdWRlcyBleHRyYSBjaGFyYWN0ZXJzOiAke3NvdXJjZX1gKTtcbiAgICBsZXQgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICBsZXQgY29tbWVudCA9ICcnO1xuICAgIGxldCBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcHJvcHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBwcm9wc1tpXTtcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSB0cnVlO1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGxlbmd0aCArPSB0b2tlbi5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiAhaGFzU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzJztcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ01JU1NJTkdfQ0hBUicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZW5ndGggKz0gdG9rZW4uc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gdG9rZW4uc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIHRva2VuLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGxlbmd0aCArPSB0b2tlbi5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFVuZXhwZWN0ZWQgdG9rZW4gaW4gYmxvY2sgc2NhbGFyIGhlYWRlcjogJHt0b2tlbi50eXBlfWA7XG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1VORVhQRUNURURfVE9LRU4nLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0cyA9IHRva2VuLnNvdXJjZTtcbiAgICAgICAgICAgICAgICBpZiAodHMgJiYgdHlwZW9mIHRzID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IHRzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBtb2RlLCBpbmRlbnQsIGNob21wLCBjb21tZW50LCBsZW5ndGggfTtcbn1cbi8qKiBAcmV0dXJucyBBcnJheSBvZiBsaW5lcyBzcGxpdCB1cCBhcyBgW2luZGVudCwgY29udGVudF1gICovXG5mdW5jdGlvbiBzcGxpdExpbmVzKHNvdXJjZSkge1xuICAgIGNvbnN0IHNwbGl0ID0gc291cmNlLnNwbGl0KC9cXG4oICopLyk7XG4gICAgY29uc3QgZmlyc3QgPSBzcGxpdFswXTtcbiAgICBjb25zdCBtID0gZmlyc3QubWF0Y2goL14oICopLyk7XG4gICAgY29uc3QgbGluZTAgPSBtPy5bMV1cbiAgICAgICAgPyBbbVsxXSwgZmlyc3Quc2xpY2UobVsxXS5sZW5ndGgpXVxuICAgICAgICA6IFsnJywgZmlyc3RdO1xuICAgIGNvbnN0IGxpbmVzID0gW2xpbmUwXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHNwbGl0Lmxlbmd0aDsgaSArPSAyKVxuICAgICAgICBsaW5lcy5wdXNoKFtzcGxpdFtpXSwgc3BsaXRbaSArIDFdXSk7XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuXG5leHBvcnRzLnJlc29sdmVCbG9ja1NjYWxhciA9IHJlc29sdmVCbG9ja1NjYWxhcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1934\n")},1943:module=>{eval("/*\nLanguage: Scala\nCategory: functional\nAuthor: Jan Berkel \nContributors: Erik Osheim \nWebsite: https://www.scala-lang.org\n*/\n\nfunction scala(hljs) {\n const regex = hljs.regex;\n const ANNOTATION = {\n className: 'meta',\n begin: '@[A-Za-z]+'\n };\n\n // used in strings for escaping/interpolation/substitution\n const SUBST = {\n className: 'subst',\n variants: [\n { begin: '\\\\$[A-Za-z0-9_]+' },\n {\n begin: /\\$\\{/,\n end: /\\}/\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"'\n },\n {\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '[a-z]+\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n },\n {\n className: 'string',\n begin: '[a-z]+\"\"\"',\n end: '\"\"\"',\n contains: [ SUBST ],\n relevance: 10\n }\n ]\n\n };\n\n const TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n };\n\n const NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n relevance: 0\n };\n\n const CLASS = {\n className: 'class',\n beginKeywords: 'class object trait type',\n end: /[:={\\[\\n;]/,\n excludeEnd: true,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n beginKeywords: 'extends with',\n relevance: 10\n },\n {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [ \n TYPE, \n hljs.C_LINE_COMMENT_MODE, \n hljs.C_BLOCK_COMMENT_MODE, \n ]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [ \n TYPE, \n hljs.C_LINE_COMMENT_MODE, \n hljs.C_BLOCK_COMMENT_MODE, \n ]\n },\n NAME\n ]\n };\n\n const METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: regex.lookahead(/[:={\\[(\\n;]/),\n contains: [ NAME ]\n };\n\n const EXTENSION = {\n begin: [\n /^\\s*/, // Is first token on the line\n 'extension',\n /\\s+(?=[[(])/, // followed by at least one space and `[` or `(`\n ],\n beginScope: { 2: \"keyword\", }\n };\n\n const END = {\n begin: [\n /^\\s*/, // Is first token on the line\n /end/,\n /\\s+/,\n /(extension\\b)?/, // `extension` is the only marker that follows an `end` that cannot be captured by another rule.\n ],\n beginScope: {\n 2: \"keyword\",\n 4: \"keyword\",\n }\n };\n\n // TODO: use negative look-behind in future\n // /(?',\n /\\s+/,\n /using/,\n /\\s+/,\n /\\S+/\n ],\n beginScope: {\n 1: \"comment\",\n 3: \"keyword\",\n 5: \"type\"\n },\n end: /$/,\n contains: [\n DIRECTIVE_VALUE,\n ]\n };\n\n return {\n name: 'Scala',\n keywords: {\n literal: 'true false null',\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if then forSome for while do throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit export enum given transparent'\n },\n contains: [\n USING_DIRECTIVE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n TYPE,\n METHOD,\n CLASS,\n hljs.C_NUMBER_MODE,\n EXTENSION,\n END,\n ...INLINE_MODES,\n USING_PARAM_CLAUSE,\n ANNOTATION\n ]\n };\n}\n\nmodule.exports = scala;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk0My5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJCQUEyQjtBQUNuQztBQUNBLG9CQUFvQjtBQUNwQixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrQkFBK0IsTUFBTSxpQkFBaUIsTUFBTSxzQkFBc0IsTUFBTTtBQUN4RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsS0FBSztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLE1BQU07QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU0scUJBQXFCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9zY2FsYS5qcz9lMWVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogU2NhbGFcbkNhdGVnb3J5OiBmdW5jdGlvbmFsXG5BdXRob3I6IEphbiBCZXJrZWwgPGphbi5iZXJrZWxAZ21haWwuY29tPlxuQ29udHJpYnV0b3JzOiBFcmlrIE9zaGVpbSA8ZF9tQHBsYXN0aWMtaWRvbGF0cnkuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cuc2NhbGEtbGFuZy5vcmdcbiovXG5cbmZ1bmN0aW9uIHNjYWxhKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBBTk5PVEFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgfTtcblxuICAvLyB1c2VkIGluIHN0cmluZ3MgZm9yIGVzY2FwaW5nL2ludGVycG9sYXRpb24vc3Vic3RpdHV0aW9uXG4gIGNvbnN0IFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFwkW0EtWmEtejAtOV9dKycgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCRcXHsvLFxuICAgICAgICBlbmQ6IC9cXH0vXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW2Etel0rXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIFNVQlNUXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnW2Etel0rXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgY29udGFpbnM6IFsgU1VCU1QgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgIF1cblxuICB9O1xuXG4gIGNvbnN0IFRZUEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYltBLVpdW0EtWmEtejAtOV9dKicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgTkFNRSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IC9bXjAtOVxcblxcdCBcIicoKSwuYHt9XFxbXFxdOjtdW15cXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7XSt8W14wLTlcXG5cXHQgXCInKCksLmB7fVxcW1xcXTo7PV0vLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IENMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICBiZWdpbktleXdvcmRzOiAnY2xhc3Mgb2JqZWN0IHRyYWl0IHR5cGUnLFxuICAgIGVuZDogL1s6PXtcXFtcXG47XS8sXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2V4dGVuZHMgd2l0aCcsXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxbLyxcbiAgICAgICAgZW5kOiAvXFxdLyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbIFxuICAgICAgICAgIFRZUEUsIFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSwgXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbIFxuICAgICAgICAgIFRZUEUsIFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSwgXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBOQU1FXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IE1FVEhPRCA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW5LZXl3b3JkczogJ2RlZicsXG4gICAgZW5kOiByZWdleC5sb29rYWhlYWQoL1s6PXtcXFsoXFxuO10vKSxcbiAgICBjb250YWluczogWyBOQU1FIF1cbiAgfTtcblxuICBjb25zdCBFWFRFTlNJT04gPSB7XG4gICAgYmVnaW46IFtcbiAgICAgIC9eXFxzKi8sIC8vIElzIGZpcnN0IHRva2VuIG9uIHRoZSBsaW5lXG4gICAgICAnZXh0ZW5zaW9uJyxcbiAgICAgIC9cXHMrKD89W1soXSkvLCAvLyBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2UgYW5kIGBbYCBvciBgKGBcbiAgICBdLFxuICAgIGJlZ2luU2NvcGU6IHsgMjogXCJrZXl3b3JkXCIsIH1cbiAgfTtcblxuICBjb25zdCBFTkQgPSB7XG4gICAgYmVnaW46IFtcbiAgICAgIC9eXFxzKi8sIC8vIElzIGZpcnN0IHRva2VuIG9uIHRoZSBsaW5lXG4gICAgICAvZW5kLyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIC8oZXh0ZW5zaW9uXFxiKT8vLCAvLyBgZXh0ZW5zaW9uYCBpcyB0aGUgb25seSBtYXJrZXIgdGhhdCBmb2xsb3dzIGFuIGBlbmRgIHRoYXQgY2Fubm90IGJlIGNhcHR1cmVkIGJ5IGFub3RoZXIgcnVsZS5cbiAgICBdLFxuICAgIGJlZ2luU2NvcGU6IHtcbiAgICAgIDI6IFwia2V5d29yZFwiLFxuICAgICAgNDogXCJrZXl3b3JkXCIsXG4gICAgfVxuICB9O1xuXG4gIC8vIFRPRE86IHVzZSBuZWdhdGl2ZSBsb29rLWJlaGluZCBpbiBmdXR1cmVcbiAgLy8gICAgICAgLyg/PCFcXC4pXFxiaW5saW5lKD89XFxzKS9cbiAgY29uc3QgSU5MSU5FX01PREVTID0gW1xuICAgIHsgbWF0Y2g6IC9cXC5pbmxpbmVcXGIvIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXGJpbmxpbmUoPz1cXHMpLyxcbiAgICAgIGtleXdvcmRzOiAnaW5saW5lJ1xuICAgIH1cbiAgXTtcblxuICBjb25zdCBVU0lOR19QQVJBTV9DTEFVU0UgPSB7XG4gICAgYmVnaW46IFtcbiAgICAgIC9cXChcXHMqLywgLy8gT3BlbmluZyBgKGAgb2YgYSBwYXJhbWV0ZXIgb3IgYXJndW1lbnQgbGlzdFxuICAgICAgL3VzaW5nLyxcbiAgICAgIC9cXHMrKD8hXFwpKS8sIC8vIFNwYWNlcyBub3QgZm9sbG93ZWQgYnkgYClgXG4gICAgXSxcbiAgICBiZWdpblNjb3BlOiB7IDI6IFwia2V5d29yZFwiLCB9XG4gIH07XG5cbiAgLy8gZ2xvYiBhbGwgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcyBhIFwic3RyaW5nXCJcbiAgLy8gc291cmNlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYS9kb2NzLnNjYWxhLWxhbmcvcHVsbC8yODQ1XG4gIGNvbnN0IERJUkVDVElWRV9WQUxVRSA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXFxTKy8sXG4gIH07XG5cbiAgLy8gZGlyZWN0aXZlc1xuICAvLyBzb3VyY2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhL2RvY3Muc2NhbGEtbGFuZy9wdWxsLzI4NDVcbiAgY29uc3QgVVNJTkdfRElSRUNUSVZFID0ge1xuICAgIGJlZ2luOiBbXG4gICAgICAnLy8+JyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIC91c2luZy8sXG4gICAgICAvXFxzKy8sXG4gICAgICAvXFxTKy9cbiAgICBdLFxuICAgIGJlZ2luU2NvcGU6IHtcbiAgICAgIDE6IFwiY29tbWVudFwiLFxuICAgICAgMzogXCJrZXl3b3JkXCIsXG4gICAgICA1OiBcInR5cGVcIlxuICAgIH0sXG4gICAgZW5kOiAvJC8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIERJUkVDVElWRV9WQUxVRSxcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnU2NhbGEnLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBudWxsJyxcbiAgICAgIGtleXdvcmQ6ICd0eXBlIHlpZWxkIGxhenkgb3ZlcnJpZGUgZGVmIHdpdGggdmFsIHZhciBzZWFsZWQgYWJzdHJhY3QgcHJpdmF0ZSB0cmFpdCBvYmplY3QgaWYgdGhlbiBmb3JTb21lIGZvciB3aGlsZSBkbyB0aHJvdyBmaW5hbGx5IHByb3RlY3RlZCBleHRlbmRzIGltcG9ydCBmaW5hbCByZXR1cm4gZWxzZSBicmVhayBuZXcgY2F0Y2ggc3VwZXIgY2xhc3MgY2FzZSBwYWNrYWdlIGRlZmF1bHQgdHJ5IHRoaXMgbWF0Y2ggY29udGludWUgdGhyb3dzIGltcGxpY2l0IGV4cG9ydCBlbnVtIGdpdmVuIHRyYW5zcGFyZW50J1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFVTSU5HX0RJUkVDVElWRSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBTVFJJTkcsXG4gICAgICBUWVBFLFxuICAgICAgTUVUSE9ELFxuICAgICAgQ0xBU1MsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBFWFRFTlNJT04sXG4gICAgICBFTkQsXG4gICAgICAuLi5JTkxJTkVfTU9ERVMsXG4gICAgICBVU0lOR19QQVJBTV9DTEFVU0UsXG4gICAgICBBTk5PVEFUSU9OXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNjYWxhO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1943\n")},1951:module=>{eval('/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev \nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: \'attr\',\n begin: /"(\\\\.|[^\\\\"\\r\\n])*"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: "punctuation",\n relevance: 0\n };\n const LITERALS = [\n "true",\n "false",\n "null"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: "literal",\n beginKeywords: LITERALS.join(" "),\n };\n\n return {\n name: \'JSON\',\n aliases: [\'jsonc\'],\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: \'\\\\S\'\n };\n}\n\nmodule.exports = json;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk1MS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9qc29uLmpzPzEwMWUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBKU09OXG5EZXNjcmlwdGlvbjogSlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pIGlzIGEgbGlnaHR3ZWlnaHQgZGF0YS1pbnRlcmNoYW5nZSBmb3JtYXQuXG5BdXRob3I6IEl2YW4gU2FnYWxhZXYgPG1hbmlhY0Bzb2Z0d2FyZW1hbmlhY3Mub3JnPlxuV2Vic2l0ZTogaHR0cDovL3d3dy5qc29uLm9yZ1xuQ2F0ZWdvcnk6IGNvbW1vbiwgcHJvdG9jb2xzLCB3ZWJcbiovXG5cbmZ1bmN0aW9uIGpzb24oaGxqcykge1xuICBjb25zdCBBVFRSSUJVVEUgPSB7XG4gICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgYmVnaW46IC9cIihcXFxcLnxbXlxcXFxcIlxcclxcbl0pKlwiKD89XFxzKjopLyxcbiAgICByZWxldmFuY2U6IDEuMDFcbiAgfTtcbiAgY29uc3QgUFVOQ1RVQVRJT04gPSB7XG4gICAgbWF0Y2g6IC9be31bXFxdLDpdLyxcbiAgICBjbGFzc05hbWU6IFwicHVuY3R1YXRpb25cIixcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgTElURVJBTFMgPSBbXG4gICAgXCJ0cnVlXCIsXG4gICAgXCJmYWxzZVwiLFxuICAgIFwibnVsbFwiXG4gIF07XG4gIC8vIE5PVEU6IG5vcm1hbGx5IHdlIHdvdWxkIHJlbHkgb24gYGtleXdvcmRzYCBmb3IgdGhpcyBidXQgdXNpbmcgYSBtb2RlIGhlcmUgYWxsb3dzIHVzXG4gIC8vIC0gdG8gdXNlIHRoZSB2ZXJ5IHRpZ2h0IGBpbGxlZ2FsOiBcXFNgIHJ1bGUgbGF0ZXIgdG8gZmxhZyBhbnkgb3RoZXIgY2hhcmFjdGVyXG4gIC8vIC0gYXMgaWxsZWdhbCBpbmRpY2F0aW5nIHRoYXQgZGVzcGl0ZSBsb29raW5nIGxpa2UgSlNPTiB3ZSBkbyBub3QgdHJ1bHkgaGF2ZVxuICAvLyAtIEpTT04gYW5kIHRodXMgaW1wcm92ZSBmYWxzZS1wb3NpdGl2ZWx5IGdyZWF0bHkgc2luY2UgSlNPTiB3aWxsIHRyeSBhbmQgY2xhaW1cbiAgLy8gLSBhbGwgc29ydHMgb2YgSlNPTiBsb29raW5nIHN0dWZmXG4gIGNvbnN0IExJVEVSQUxTX01PREUgPSB7XG4gICAgc2NvcGU6IFwibGl0ZXJhbFwiLFxuICAgIGJlZ2luS2V5d29yZHM6IExJVEVSQUxTLmpvaW4oXCIgXCIpLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0pTT04nLFxuICAgIGFsaWFzZXM6IFsnanNvbmMnXSxcbiAgICBrZXl3b3Jkczp7XG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBBVFRSSUJVVEUsXG4gICAgICBQVU5DVFVBVElPTixcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBMSVRFUkFMU19NT0RFLFxuICAgICAgaGxqcy5DX05VTUJFUl9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF0sXG4gICAgaWxsZWdhbDogJ1xcXFxTJ1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGpzb247XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1951\n')},1955:module=>{eval('/*\nLanguage: Bash\nAuthor: vah \nContributrors: Benjamin Pannell \nWebsite: https://www.gnu.org/software/bash/\nCategory: common, scripting\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n const regex = hljs.regex;\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [\n "self",\n {\n begin: /:-/,\n contains: [ VAR ]\n } // default values\n ]\n };\n Object.assign(VAR, {\n className: \'variable\',\n variants: [\n { begin: regex.concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`) },\n BRACED_VAR\n ]\n });\n\n const SUBST = {\n className: \'subst\',\n begin: /\\$\\(/,\n end: /\\)/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const COMMENT = hljs.inherit(\n hljs.COMMENT(),\n {\n match: [\n /(^|\\s)/,\n /#.*$/\n ],\n scope: {\n 2: \'comment\'\n }\n }\n );\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: { contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: \'string\'\n })\n ] }\n };\n const QUOTE_STRING = {\n className: \'string\',\n begin: /"/,\n end: /"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n match: /\\\\"/\n };\n const APOS_STRING = {\n className: \'string\',\n begin: /\'/,\n end: /\'/\n };\n const ESCAPED_APOS = {\n match: /\\\\\'/\n };\n const ARITHMETIC = {\n begin: /\\$?\\(\\(/,\n end: /\\)\\)/,\n contains: [\n {\n begin: /\\d+#[0-9a-f]+/,\n className: "number"\n },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n "fish",\n "bash",\n "zsh",\n "sh",\n "csh",\n "ksh",\n "tcsh",\n "dash",\n "scsh",\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join("|")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: \'function\',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\\w[\\w\\d_]*/ }) ],\n relevance: 0\n };\n\n const KEYWORDS = [\n "if",\n "then",\n "else",\n "elif",\n "fi",\n "time",\n "for",\n "while",\n "until",\n "in",\n "do",\n "done",\n "case",\n "esac",\n "coproc",\n "function",\n "select"\n ];\n\n const LITERALS = [\n "true",\n "false"\n ];\n\n // to consume paths to prevent keyword matches inside them\n const PATH_MODE = { match: /(\\/[a-z._-]+)+/ };\n\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n const SHELL_BUILT_INS = [\n "break",\n "cd",\n "continue",\n "eval",\n "exec",\n "exit",\n "export",\n "getopts",\n "hash",\n "pwd",\n "readonly",\n "return",\n "shift",\n "test",\n "times",\n "trap",\n "umask",\n "unset"\n ];\n\n const BASH_BUILT_INS = [\n "alias",\n "bind",\n "builtin",\n "caller",\n "command",\n "declare",\n "echo",\n "enable",\n "help",\n "let",\n "local",\n "logout",\n "mapfile",\n "printf",\n "read",\n "readarray",\n "source",\n "sudo",\n "type",\n "typeset",\n "ulimit",\n "unalias"\n ];\n\n const ZSH_BUILT_INS = [\n "autoload",\n "bg",\n "bindkey",\n "bye",\n "cap",\n "chdir",\n "clone",\n "comparguments",\n "compcall",\n "compctl",\n "compdescribe",\n "compfiles",\n "compgroups",\n "compquote",\n "comptags",\n "comptry",\n "compvalues",\n "dirs",\n "disable",\n "disown",\n "echotc",\n "echoti",\n "emulate",\n "fc",\n "fg",\n "float",\n "functions",\n "getcap",\n "getln",\n "history",\n "integer",\n "jobs",\n "kill",\n "limit",\n "log",\n "noglob",\n "popd",\n "print",\n "pushd",\n "pushln",\n "rehash",\n "sched",\n "setcap",\n "setopt",\n "stat",\n "suspend",\n "ttyctl",\n "unfunction",\n "unhash",\n "unlimit",\n "unsetopt",\n "vared",\n "wait",\n "whence",\n "where",\n "which",\n "zcompile",\n "zformat",\n "zftp",\n "zle",\n "zmodload",\n "zparseopts",\n "zprof",\n "zpty",\n "zregexparse",\n "zsocket",\n "zstyle",\n "ztcp"\n ];\n\n const GNU_CORE_UTILS = [\n "chcon",\n "chgrp",\n "chown",\n "chmod",\n "cp",\n "dd",\n "df",\n "dir",\n "dircolors",\n "ln",\n "ls",\n "mkdir",\n "mkfifo",\n "mknod",\n "mktemp",\n "mv",\n "realpath",\n "rm",\n "rmdir",\n "shred",\n "sync",\n "touch",\n "truncate",\n "vdir",\n "b2sum",\n "base32",\n "base64",\n "cat",\n "cksum",\n "comm",\n "csplit",\n "cut",\n "expand",\n "fmt",\n "fold",\n "head",\n "join",\n "md5sum",\n "nl",\n "numfmt",\n "od",\n "paste",\n "ptx",\n "pr",\n "sha1sum",\n "sha224sum",\n "sha256sum",\n "sha384sum",\n "sha512sum",\n "shuf",\n "sort",\n "split",\n "sum",\n "tac",\n "tail",\n "tr",\n "tsort",\n "unexpand",\n "uniq",\n "wc",\n "arch",\n "basename",\n "chroot",\n "date",\n "dirname",\n "du",\n "echo",\n "env",\n "expr",\n "factor",\n // "false", // keyword literal already\n "groups",\n "hostid",\n "id",\n "link",\n "logname",\n "nice",\n "nohup",\n "nproc",\n "pathchk",\n "pinky",\n "printenv",\n "printf",\n "pwd",\n "readlink",\n "runcon",\n "seq",\n "sleep",\n "stat",\n "stdbuf",\n "stty",\n "tee",\n "test",\n "timeout",\n // "true", // keyword literal already\n "tty",\n "uname",\n "unlink",\n "uptime",\n "users",\n "who",\n "whoami",\n "yes"\n ];\n\n return {\n name: \'Bash\',\n aliases: [\n \'sh\',\n \'zsh\'\n ],\n keywords: {\n $pattern: /\\b[a-z][a-z0-9._-]+\\b/,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: [\n ...SHELL_BUILT_INS,\n ...BASH_BUILT_INS,\n // Shell modifiers\n "set",\n "shopt",\n ...ZSH_BUILT_INS,\n ...GNU_CORE_UTILS\n ]\n },\n contains: [\n KNOWN_SHEBANG, // to catch known shells and boost relevancy\n hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n FUNCTION,\n ARITHMETIC,\n COMMENT,\n HERE_DOC,\n PATH_MODE,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n ESCAPED_APOS,\n VAR\n ]\n };\n}\n\nmodule.exports = bash;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk1NS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlCQUF5QjtBQUN6QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsZ0RBQWdELHFCQUFxQjtBQUNyRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvYmFzaC5qcz9mMjY3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogQmFzaFxuQXV0aG9yOiB2YWggPHZhaHRlbmJlcmdAZ21haWwuY29tPlxuQ29udHJpYnV0cm9yczogQmVuamFtaW4gUGFubmVsbCA8Y29udGFjdEBzaWVycmFzb2Z0d29ya3MuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iYXNoL1xuQ2F0ZWdvcnk6IGNvbW1vbiwgc2NyaXB0aW5nXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gYmFzaChobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgVkFSID0ge307XG4gIGNvbnN0IEJSQUNFRF9WQVIgPSB7XG4gICAgYmVnaW46IC9cXCRcXHsvLFxuICAgIGVuZDogL1xcfS8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFwic2VsZlwiLFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzotLyxcbiAgICAgICAgY29udGFpbnM6IFsgVkFSIF1cbiAgICAgIH0gLy8gZGVmYXVsdCB2YWx1ZXNcbiAgICBdXG4gIH07XG4gIE9iamVjdC5hc3NpZ24oVkFSLCB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiByZWdleC5jb25jYXQoL1xcJFtcXHdcXGQjQF1bXFx3XFxkX10qLyxcbiAgICAgICAgLy8gbmVnYXRpdmUgbG9vay1haGVhZCB0cmllcyB0byBhdm9pZCBtYXRjaGluZyBwYXR0ZXJucyB0aGF0IGFyZSBub3RcbiAgICAgICAgLy8gUGVybCBhdCBhbGwgbGlrZSAkaWRlbnQkLCBAaWRlbnRALCBldGMuXG4gICAgICAgIGAoPyFbXFxcXHdcXFxcZF0pKD8hWyRdKWApIH0sXG4gICAgICBCUkFDRURfVkFSXG4gICAgXVxuICB9KTtcblxuICBjb25zdCBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXCRcXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgfTtcbiAgY29uc3QgQ09NTUVOVCA9IGhsanMuaW5oZXJpdChcbiAgICBobGpzLkNPTU1FTlQoKSxcbiAgICB7XG4gICAgICBtYXRjaDogW1xuICAgICAgICAvKF58XFxzKS8sXG4gICAgICAgIC8jLiokL1xuICAgICAgXSxcbiAgICAgIHNjb3BlOiB7XG4gICAgICAgIDI6ICdjb21tZW50J1xuICAgICAgfVxuICAgIH1cbiAgKTtcbiAgY29uc3QgSEVSRV9ET0MgPSB7XG4gICAgYmVnaW46IC88PC0/XFxzKig/PVxcdyspLyxcbiAgICBzdGFydHM6IHsgY29udGFpbnM6IFtcbiAgICAgIGhsanMuRU5EX1NBTUVfQVNfQkVHSU4oe1xuICAgICAgICBiZWdpbjogLyhcXHcrKS8sXG4gICAgICAgIGVuZDogLyhcXHcrKS8sXG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZydcbiAgICAgIH0pXG4gICAgXSB9XG4gIH07XG4gIGNvbnN0IFFVT1RFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLFxuICAgIGVuZDogL1wiLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgVkFSLFxuICAgICAgU1VCU1RcbiAgICBdXG4gIH07XG4gIFNVQlNULmNvbnRhaW5zLnB1c2goUVVPVEVfU1RSSU5HKTtcbiAgY29uc3QgRVNDQVBFRF9RVU9URSA9IHtcbiAgICBtYXRjaDogL1xcXFxcIi9cbiAgfTtcbiAgY29uc3QgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLFxuICAgIGVuZDogLycvXG4gIH07XG4gIGNvbnN0IEVTQ0FQRURfQVBPUyA9IHtcbiAgICBtYXRjaDogL1xcXFwnL1xuICB9O1xuICBjb25zdCBBUklUSE1FVElDID0ge1xuICAgIGJlZ2luOiAvXFwkP1xcKFxcKC8sXG4gICAgZW5kOiAvXFwpXFwpLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcZCsjWzAtOWEtZl0rLyxcbiAgICAgICAgY2xhc3NOYW1lOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIFZBUlxuICAgIF1cbiAgfTtcbiAgY29uc3QgU0hfTElLRV9TSEVMTFMgPSBbXG4gICAgXCJmaXNoXCIsXG4gICAgXCJiYXNoXCIsXG4gICAgXCJ6c2hcIixcbiAgICBcInNoXCIsXG4gICAgXCJjc2hcIixcbiAgICBcImtzaFwiLFxuICAgIFwidGNzaFwiLFxuICAgIFwiZGFzaFwiLFxuICAgIFwic2NzaFwiLFxuICBdO1xuICBjb25zdCBLTk9XTl9TSEVCQU5HID0gaGxqcy5TSEVCQU5HKHtcbiAgICBiaW5hcnk6IGAoJHtTSF9MSUtFX1NIRUxMUy5qb2luKFwifFwiKX0pYCxcbiAgICByZWxldmFuY2U6IDEwXG4gIH0pO1xuICBjb25zdCBGVU5DVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgYmVnaW46IC9cXHdbXFx3XFxkX10qXFxzKlxcKFxccypcXClcXHMqXFx7LyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBjb250YWluczogWyBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7IGJlZ2luOiAvXFx3W1xcd1xcZF9dKi8gfSkgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICBcImlmXCIsXG4gICAgXCJ0aGVuXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJlbGlmXCIsXG4gICAgXCJmaVwiLFxuICAgIFwidGltZVwiLFxuICAgIFwiZm9yXCIsXG4gICAgXCJ3aGlsZVwiLFxuICAgIFwidW50aWxcIixcbiAgICBcImluXCIsXG4gICAgXCJkb1wiLFxuICAgIFwiZG9uZVwiLFxuICAgIFwiY2FzZVwiLFxuICAgIFwiZXNhY1wiLFxuICAgIFwiY29wcm9jXCIsXG4gICAgXCJmdW5jdGlvblwiLFxuICAgIFwic2VsZWN0XCJcbiAgXTtcblxuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICBcInRydWVcIixcbiAgICBcImZhbHNlXCJcbiAgXTtcblxuICAvLyB0byBjb25zdW1lIHBhdGhzIHRvIHByZXZlbnQga2V5d29yZCBtYXRjaGVzIGluc2lkZSB0aGVtXG4gIGNvbnN0IFBBVEhfTU9ERSA9IHsgbWF0Y2g6IC8oXFwvW2Etei5fLV0rKSsvIH07XG5cbiAgLy8gaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvbWFudWFsL2h0bWxfbm9kZS9TaGVsbC1CdWlsdGluLUNvbW1hbmRzLmh0bWxcbiAgY29uc3QgU0hFTExfQlVJTFRfSU5TID0gW1xuICAgIFwiYnJlYWtcIixcbiAgICBcImNkXCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZXZhbFwiLFxuICAgIFwiZXhlY1wiLFxuICAgIFwiZXhpdFwiLFxuICAgIFwiZXhwb3J0XCIsXG4gICAgXCJnZXRvcHRzXCIsXG4gICAgXCJoYXNoXCIsXG4gICAgXCJwd2RcIixcbiAgICBcInJlYWRvbmx5XCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcInNoaWZ0XCIsXG4gICAgXCJ0ZXN0XCIsXG4gICAgXCJ0aW1lc1wiLFxuICAgIFwidHJhcFwiLFxuICAgIFwidW1hc2tcIixcbiAgICBcInVuc2V0XCJcbiAgXTtcblxuICBjb25zdCBCQVNIX0JVSUxUX0lOUyA9IFtcbiAgICBcImFsaWFzXCIsXG4gICAgXCJiaW5kXCIsXG4gICAgXCJidWlsdGluXCIsXG4gICAgXCJjYWxsZXJcIixcbiAgICBcImNvbW1hbmRcIixcbiAgICBcImRlY2xhcmVcIixcbiAgICBcImVjaG9cIixcbiAgICBcImVuYWJsZVwiLFxuICAgIFwiaGVscFwiLFxuICAgIFwibGV0XCIsXG4gICAgXCJsb2NhbFwiLFxuICAgIFwibG9nb3V0XCIsXG4gICAgXCJtYXBmaWxlXCIsXG4gICAgXCJwcmludGZcIixcbiAgICBcInJlYWRcIixcbiAgICBcInJlYWRhcnJheVwiLFxuICAgIFwic291cmNlXCIsXG4gICAgXCJzdWRvXCIsXG4gICAgXCJ0eXBlXCIsXG4gICAgXCJ0eXBlc2V0XCIsXG4gICAgXCJ1bGltaXRcIixcbiAgICBcInVuYWxpYXNcIlxuICBdO1xuXG4gIGNvbnN0IFpTSF9CVUlMVF9JTlMgPSBbXG4gICAgXCJhdXRvbG9hZFwiLFxuICAgIFwiYmdcIixcbiAgICBcImJpbmRrZXlcIixcbiAgICBcImJ5ZVwiLFxuICAgIFwiY2FwXCIsXG4gICAgXCJjaGRpclwiLFxuICAgIFwiY2xvbmVcIixcbiAgICBcImNvbXBhcmd1bWVudHNcIixcbiAgICBcImNvbXBjYWxsXCIsXG4gICAgXCJjb21wY3RsXCIsXG4gICAgXCJjb21wZGVzY3JpYmVcIixcbiAgICBcImNvbXBmaWxlc1wiLFxuICAgIFwiY29tcGdyb3Vwc1wiLFxuICAgIFwiY29tcHF1b3RlXCIsXG4gICAgXCJjb21wdGFnc1wiLFxuICAgIFwiY29tcHRyeVwiLFxuICAgIFwiY29tcHZhbHVlc1wiLFxuICAgIFwiZGlyc1wiLFxuICAgIFwiZGlzYWJsZVwiLFxuICAgIFwiZGlzb3duXCIsXG4gICAgXCJlY2hvdGNcIixcbiAgICBcImVjaG90aVwiLFxuICAgIFwiZW11bGF0ZVwiLFxuICAgIFwiZmNcIixcbiAgICBcImZnXCIsXG4gICAgXCJmbG9hdFwiLFxuICAgIFwiZnVuY3Rpb25zXCIsXG4gICAgXCJnZXRjYXBcIixcbiAgICBcImdldGxuXCIsXG4gICAgXCJoaXN0b3J5XCIsXG4gICAgXCJpbnRlZ2VyXCIsXG4gICAgXCJqb2JzXCIsXG4gICAgXCJraWxsXCIsXG4gICAgXCJsaW1pdFwiLFxuICAgIFwibG9nXCIsXG4gICAgXCJub2dsb2JcIixcbiAgICBcInBvcGRcIixcbiAgICBcInByaW50XCIsXG4gICAgXCJwdXNoZFwiLFxuICAgIFwicHVzaGxuXCIsXG4gICAgXCJyZWhhc2hcIixcbiAgICBcInNjaGVkXCIsXG4gICAgXCJzZXRjYXBcIixcbiAgICBcInNldG9wdFwiLFxuICAgIFwic3RhdFwiLFxuICAgIFwic3VzcGVuZFwiLFxuICAgIFwidHR5Y3RsXCIsXG4gICAgXCJ1bmZ1bmN0aW9uXCIsXG4gICAgXCJ1bmhhc2hcIixcbiAgICBcInVubGltaXRcIixcbiAgICBcInVuc2V0b3B0XCIsXG4gICAgXCJ2YXJlZFwiLFxuICAgIFwid2FpdFwiLFxuICAgIFwid2hlbmNlXCIsXG4gICAgXCJ3aGVyZVwiLFxuICAgIFwid2hpY2hcIixcbiAgICBcInpjb21waWxlXCIsXG4gICAgXCJ6Zm9ybWF0XCIsXG4gICAgXCJ6ZnRwXCIsXG4gICAgXCJ6bGVcIixcbiAgICBcInptb2Rsb2FkXCIsXG4gICAgXCJ6cGFyc2VvcHRzXCIsXG4gICAgXCJ6cHJvZlwiLFxuICAgIFwienB0eVwiLFxuICAgIFwienJlZ2V4cGFyc2VcIixcbiAgICBcInpzb2NrZXRcIixcbiAgICBcInpzdHlsZVwiLFxuICAgIFwienRjcFwiXG4gIF07XG5cbiAgY29uc3QgR05VX0NPUkVfVVRJTFMgPSBbXG4gICAgXCJjaGNvblwiLFxuICAgIFwiY2hncnBcIixcbiAgICBcImNob3duXCIsXG4gICAgXCJjaG1vZFwiLFxuICAgIFwiY3BcIixcbiAgICBcImRkXCIsXG4gICAgXCJkZlwiLFxuICAgIFwiZGlyXCIsXG4gICAgXCJkaXJjb2xvcnNcIixcbiAgICBcImxuXCIsXG4gICAgXCJsc1wiLFxuICAgIFwibWtkaXJcIixcbiAgICBcIm1rZmlmb1wiLFxuICAgIFwibWtub2RcIixcbiAgICBcIm1rdGVtcFwiLFxuICAgIFwibXZcIixcbiAgICBcInJlYWxwYXRoXCIsXG4gICAgXCJybVwiLFxuICAgIFwicm1kaXJcIixcbiAgICBcInNocmVkXCIsXG4gICAgXCJzeW5jXCIsXG4gICAgXCJ0b3VjaFwiLFxuICAgIFwidHJ1bmNhdGVcIixcbiAgICBcInZkaXJcIixcbiAgICBcImIyc3VtXCIsXG4gICAgXCJiYXNlMzJcIixcbiAgICBcImJhc2U2NFwiLFxuICAgIFwiY2F0XCIsXG4gICAgXCJja3N1bVwiLFxuICAgIFwiY29tbVwiLFxuICAgIFwiY3NwbGl0XCIsXG4gICAgXCJjdXRcIixcbiAgICBcImV4cGFuZFwiLFxuICAgIFwiZm10XCIsXG4gICAgXCJmb2xkXCIsXG4gICAgXCJoZWFkXCIsXG4gICAgXCJqb2luXCIsXG4gICAgXCJtZDVzdW1cIixcbiAgICBcIm5sXCIsXG4gICAgXCJudW1mbXRcIixcbiAgICBcIm9kXCIsXG4gICAgXCJwYXN0ZVwiLFxuICAgIFwicHR4XCIsXG4gICAgXCJwclwiLFxuICAgIFwic2hhMXN1bVwiLFxuICAgIFwic2hhMjI0c3VtXCIsXG4gICAgXCJzaGEyNTZzdW1cIixcbiAgICBcInNoYTM4NHN1bVwiLFxuICAgIFwic2hhNTEyc3VtXCIsXG4gICAgXCJzaHVmXCIsXG4gICAgXCJzb3J0XCIsXG4gICAgXCJzcGxpdFwiLFxuICAgIFwic3VtXCIsXG4gICAgXCJ0YWNcIixcbiAgICBcInRhaWxcIixcbiAgICBcInRyXCIsXG4gICAgXCJ0c29ydFwiLFxuICAgIFwidW5leHBhbmRcIixcbiAgICBcInVuaXFcIixcbiAgICBcIndjXCIsXG4gICAgXCJhcmNoXCIsXG4gICAgXCJiYXNlbmFtZVwiLFxuICAgIFwiY2hyb290XCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJkaXJuYW1lXCIsXG4gICAgXCJkdVwiLFxuICAgIFwiZWNob1wiLFxuICAgIFwiZW52XCIsXG4gICAgXCJleHByXCIsXG4gICAgXCJmYWN0b3JcIixcbiAgICAvLyBcImZhbHNlXCIsIC8vIGtleXdvcmQgbGl0ZXJhbCBhbHJlYWR5XG4gICAgXCJncm91cHNcIixcbiAgICBcImhvc3RpZFwiLFxuICAgIFwiaWRcIixcbiAgICBcImxpbmtcIixcbiAgICBcImxvZ25hbWVcIixcbiAgICBcIm5pY2VcIixcbiAgICBcIm5vaHVwXCIsXG4gICAgXCJucHJvY1wiLFxuICAgIFwicGF0aGNoa1wiLFxuICAgIFwicGlua3lcIixcbiAgICBcInByaW50ZW52XCIsXG4gICAgXCJwcmludGZcIixcbiAgICBcInB3ZFwiLFxuICAgIFwicmVhZGxpbmtcIixcbiAgICBcInJ1bmNvblwiLFxuICAgIFwic2VxXCIsXG4gICAgXCJzbGVlcFwiLFxuICAgIFwic3RhdFwiLFxuICAgIFwic3RkYnVmXCIsXG4gICAgXCJzdHR5XCIsXG4gICAgXCJ0ZWVcIixcbiAgICBcInRlc3RcIixcbiAgICBcInRpbWVvdXRcIixcbiAgICAvLyBcInRydWVcIiwgLy8ga2V5d29yZCBsaXRlcmFsIGFscmVhZHlcbiAgICBcInR0eVwiLFxuICAgIFwidW5hbWVcIixcbiAgICBcInVubGlua1wiLFxuICAgIFwidXB0aW1lXCIsXG4gICAgXCJ1c2Vyc1wiLFxuICAgIFwid2hvXCIsXG4gICAgXCJ3aG9hbWlcIixcbiAgICBcInllc1wiXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQmFzaCcsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ3NoJyxcbiAgICAgICd6c2gnXG4gICAgXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJHBhdHRlcm46IC9cXGJbYS16XVthLXowLTkuXy1dK1xcYi8sXG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgICAgYnVpbHRfaW46IFtcbiAgICAgICAgLi4uU0hFTExfQlVJTFRfSU5TLFxuICAgICAgICAuLi5CQVNIX0JVSUxUX0lOUyxcbiAgICAgICAgLy8gU2hlbGwgbW9kaWZpZXJzXG4gICAgICAgIFwic2V0XCIsXG4gICAgICAgIFwic2hvcHRcIixcbiAgICAgICAgLi4uWlNIX0JVSUxUX0lOUyxcbiAgICAgICAgLi4uR05VX0NPUkVfVVRJTFNcbiAgICAgIF1cbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBLTk9XTl9TSEVCQU5HLCAvLyB0byBjYXRjaCBrbm93biBzaGVsbHMgYW5kIGJvb3N0IHJlbGV2YW5jeVxuICAgICAgaGxqcy5TSEVCQU5HKCksIC8vIHRvIGNhdGNoIHVua25vd24gc2hlbGxzIGJ1dCBzdGlsbCBoaWdobGlnaHQgdGhlIHNoZWJhbmdcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgQVJJVEhNRVRJQyxcbiAgICAgIENPTU1FTlQsXG4gICAgICBIRVJFX0RPQyxcbiAgICAgIFBBVEhfTU9ERSxcbiAgICAgIFFVT1RFX1NUUklORyxcbiAgICAgIEVTQ0FQRURfUVVPVEUsXG4gICAgICBBUE9TX1NUUklORyxcbiAgICAgIEVTQ0FQRURfQVBPUyxcbiAgICAgIFZBUlxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNoO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1955\n')},1961:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n\n\n\nvar Schema = __webpack_require__(6415);\n\n\nmodule.exports = new Schema({\n include: [\n __webpack_require__(2801)\n ],\n implicit: [\n __webpack_require__(4759),\n __webpack_require__(6259)\n ],\n explicit: [\n __webpack_require__(4230),\n __webpack_require__(554),\n __webpack_require__(3446),\n __webpack_require__(7487)\n ]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2MS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHYTs7O0FBR2IsYUFBYSxtQkFBTyxDQUFDLElBQVc7OztBQUdoQztBQUNBO0FBQ0EsSUFBSSxtQkFBTyxDQUFDLElBQVE7QUFDcEI7QUFDQTtBQUNBLElBQUksbUJBQU8sQ0FBQyxJQUFtQjtBQUMvQixJQUFJLG1CQUFPLENBQUMsSUFBZTtBQUMzQjtBQUNBO0FBQ0EsSUFBSSxtQkFBTyxDQUFDLElBQWdCO0FBQzVCLElBQUksbUJBQU8sQ0FBQyxHQUFjO0FBQzFCLElBQUksbUJBQU8sQ0FBQyxJQUFlO0FBQzNCLElBQUksbUJBQU8sQ0FBQyxJQUFhO0FBQ3pCO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9qcy15YW1sQDMuMTQuMS9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZGVmYXVsdF9zYWZlLmpzPzJlNGUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSlMtWUFNTCdzIGRlZmF1bHQgc2NoZW1hIGZvciBgc2FmZUxvYWRgIGZ1bmN0aW9uLlxuLy8gSXQgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoaXMgc2NoZW1hIGlzIGJhc2VkIG9uIHN0YW5kYXJkIFlBTUwncyBDb3JlIHNjaGVtYSBhbmQgaW5jbHVkZXMgbW9zdCBvZlxuLy8gZXh0cmEgdHlwZXMgZGVzY3JpYmVkIGF0IFlBTUwgdGFnIHJlcG9zaXRvcnkuIChodHRwOi8veWFtbC5vcmcvdHlwZS8pXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9jb3JlJylcbiAgXSxcbiAgaW1wbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL3RpbWVzdGFtcCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvbWVyZ2UnKVxuICBdLFxuICBleHBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvYmluYXJ5JyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9vbWFwJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9wYWlycycpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvc2V0JylcbiAgXVxufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1961\n")},2042:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\nvar Node = __webpack_require__(2506);\nvar toJS = __webpack_require__(2412);\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA0Mi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBZTtBQUN0QyxXQUFXLG1CQUFPLENBQUMsSUFBVztBQUM5QixXQUFXLG1CQUFPLENBQUMsSUFBVzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWM7QUFDZCxxQkFBcUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L25vZGVzL1NjYWxhci5qcz9mOWYwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eS5qcycpO1xudmFyIE5vZGUgPSByZXF1aXJlKCcuL05vZGUuanMnKTtcbnZhciB0b0pTID0gcmVxdWlyZSgnLi90b0pTLmpzJyk7XG5cbmNvbnN0IGlzU2NhbGFyVmFsdWUgPSAodmFsdWUpID0+ICF2YWx1ZSB8fCAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpO1xuY2xhc3MgU2NhbGFyIGV4dGVuZHMgTm9kZS5Ob2RlQmFzZSB7XG4gICAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAgICAgc3VwZXIoaWRlbnRpdHkuU0NBTEFSKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICB0b0pTT04oYXJnLCBjdHgpIHtcbiAgICAgICAgcmV0dXJuIGN0eD8ua2VlcCA/IHRoaXMudmFsdWUgOiB0b0pTLnRvSlModGhpcy52YWx1ZSwgYXJnLCBjdHgpO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLnZhbHVlKTtcbiAgICB9XG59XG5TY2FsYXIuQkxPQ0tfRk9MREVEID0gJ0JMT0NLX0ZPTERFRCc7XG5TY2FsYXIuQkxPQ0tfTElURVJBTCA9ICdCTE9DS19MSVRFUkFMJztcblNjYWxhci5QTEFJTiA9ICdQTEFJTic7XG5TY2FsYXIuUVVPVEVfRE9VQkxFID0gJ1FVT1RFX0RPVUJMRSc7XG5TY2FsYXIuUVVPVEVfU0lOR0xFID0gJ1FVT1RFX1NJTkdMRSc7XG5cbmV4cG9ydHMuU2NhbGFyID0gU2NhbGFyO1xuZXhwb3J0cy5pc1NjYWxhclZhbHVlID0gaXNTY2FsYXJWYWx1ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2042\n")},2085:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar stringifyNumber = __webpack_require__(1232);\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\\.000Z$/, '')\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA4NS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixzQkFBc0IsbUJBQU8sQ0FBQyxJQUFvQzs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsUUFBUTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixhQUFhO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixFQUFFLFNBQVMsSUFBSSxTQUFTLElBQUk7QUFDdEQ7QUFDQTtBQUNBLGdCQUFnQixJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUk7QUFDOUMsK0NBQStDLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsa0JBQWtCLE9BQU87QUFDekI7O0FBRUEsaUJBQWlCO0FBQ2pCLGVBQWU7QUFDZixpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L3NjaGVtYS95YW1sLTEuMS90aW1lc3RhbXAuanM/NDc3MiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnlOdW1iZXIgPSByZXF1aXJlKCcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJyk7XG5cbi8qKiBJbnRlcm5hbCB0eXBlcyBoYW5kbGUgYmlnaW50IGFzIG51bWJlciwgYmVjYXVzZSBUUyBjYW4ndCBmaWd1cmUgaXQgb3V0LiAqL1xuZnVuY3Rpb24gcGFyc2VTZXhhZ2VzaW1hbChzdHIsIGFzQmlnSW50KSB7XG4gICAgY29uc3Qgc2lnbiA9IHN0clswXTtcbiAgICBjb25zdCBwYXJ0cyA9IHNpZ24gPT09ICctJyB8fCBzaWduID09PSAnKycgPyBzdHIuc3Vic3RyaW5nKDEpIDogc3RyO1xuICAgIGNvbnN0IG51bSA9IChuKSA9PiBhc0JpZ0ludCA/IEJpZ0ludChuKSA6IE51bWJlcihuKTtcbiAgICBjb25zdCByZXMgPSBwYXJ0c1xuICAgICAgICAucmVwbGFjZSgvXy9nLCAnJylcbiAgICAgICAgLnNwbGl0KCc6JylcbiAgICAgICAgLnJlZHVjZSgocmVzLCBwKSA9PiByZXMgKiBudW0oNjApICsgbnVtKHApLCBudW0oMCkpO1xuICAgIHJldHVybiAoc2lnbiA9PT0gJy0nID8gbnVtKC0xKSAqIHJlcyA6IHJlcyk7XG59XG4vKipcbiAqIGhoaGg6bW06c3Muc3NzXG4gKlxuICogSW50ZXJuYWwgdHlwZXMgaGFuZGxlIGJpZ2ludCBhcyBudW1iZXIsIGJlY2F1c2UgVFMgY2FuJ3QgZmlndXJlIGl0IG91dC5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5U2V4YWdlc2ltYWwobm9kZSkge1xuICAgIGxldCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGxldCBudW0gPSAobikgPT4gbjtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JylcbiAgICAgICAgbnVtID0gbiA9PiBCaWdJbnQobik7XG4gICAgZWxzZSBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlOdW1iZXIuc3RyaW5naWZ5TnVtYmVyKG5vZGUpO1xuICAgIGxldCBzaWduID0gJyc7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICBzaWduID0gJy0nO1xuICAgICAgICB2YWx1ZSAqPSBudW0oLTEpO1xuICAgIH1cbiAgICBjb25zdCBfNjAgPSBudW0oNjApO1xuICAgIGNvbnN0IHBhcnRzID0gW3ZhbHVlICUgXzYwXTsgLy8gc2Vjb25kcywgaW5jbHVkaW5nIG1zXG4gICAgaWYgKHZhbHVlIDwgNjApIHtcbiAgICAgICAgcGFydHMudW5zaGlmdCgwKTsgLy8gYXQgbGVhc3Qgb25lIDogaXMgcmVxdWlyZWRcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhbHVlID0gKHZhbHVlIC0gcGFydHNbMF0pIC8gXzYwO1xuICAgICAgICBwYXJ0cy51bnNoaWZ0KHZhbHVlICUgXzYwKTsgLy8gbWludXRlc1xuICAgICAgICBpZiAodmFsdWUgPj0gNjApIHtcbiAgICAgICAgICAgIHZhbHVlID0gKHZhbHVlIC0gcGFydHNbMF0pIC8gXzYwO1xuICAgICAgICAgICAgcGFydHMudW5zaGlmdCh2YWx1ZSk7IC8vIGhvdXJzXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChzaWduICtcbiAgICAgICAgcGFydHNcbiAgICAgICAgICAgIC5tYXAobiA9PiBTdHJpbmcobikucGFkU3RhcnQoMiwgJzAnKSlcbiAgICAgICAgICAgIC5qb2luKCc6JylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8wMDAwMDBcXGQqJC8sICcnKSAvLyAlIDYwIG1heSBpbnRyb2R1Y2UgZXJyb3JcbiAgICApO1xufVxuY29uc3QgaW50VGltZSA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyB8fCBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgZm9ybWF0OiAnVElNRScsXG4gICAgdGVzdDogL15bLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrJC8sXG4gICAgcmVzb2x2ZTogKHN0ciwgX29uRXJyb3IsIHsgaW50QXNCaWdJbnQgfSkgPT4gcGFyc2VTZXhhZ2VzaW1hbChzdHIsIGludEFzQmlnSW50KSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeVNleGFnZXNpbWFsXG59O1xuY29uc3QgZmxvYXRUaW1lID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIGZvcm1hdDogJ1RJTUUnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSooPzo6WzAtNV0/WzAtOV0pK1xcLlswLTlfXSokLyxcbiAgICByZXNvbHZlOiBzdHIgPT4gcGFyc2VTZXhhZ2VzaW1hbChzdHIsIGZhbHNlKSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeVNleGFnZXNpbWFsXG59O1xuY29uc3QgdGltZXN0YW1wID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAnLFxuICAgIC8vIElmIHRoZSB0aW1lIHpvbmUgaXMgb21pdHRlZCwgdGhlIHRpbWVzdGFtcCBpcyBhc3N1bWVkIHRvIGJlIHNwZWNpZmllZCBpbiBVVEMuIFRoZSB0aW1lIHBhcnRcbiAgICAvLyBtYXkgYmUgb21pdHRlZCBhbHRvZ2V0aGVyLCByZXN1bHRpbmcgaW4gYSBkYXRlIGZvcm1hdC4gSW4gc3VjaCBhIGNhc2UsIHRoZSB0aW1lIHBhcnQgaXNcbiAgICAvLyBhc3N1bWVkIHRvIGJlIDAwOjAwOjAwWiAoc3RhcnQgb2YgZGF5LCBVVEMpLlxuICAgIHRlc3Q6IFJlZ0V4cCgnXihbMC05XXs0fSktKFswLTldezEsMn0pLShbMC05XXsxLDJ9KScgKyAvLyBZWVlZLU1tLURkXG4gICAgICAgICcoPzonICsgLy8gdGltZSBpcyBvcHRpb25hbFxuICAgICAgICAnKD86dHxUfFsgXFxcXHRdKyknICsgLy8gdCB8IFQgfCB3aGl0ZXNwYWNlXG4gICAgICAgICcoWzAtOV17MSwyfSk6KFswLTldezEsMn0pOihbMC05XXsxLDJ9KFxcXFwuWzAtOV0rKT8pJyArIC8vIEhoOk1tOlNzKC5zcyk/XG4gICAgICAgICcoPzpbIFxcXFx0XSooWnxbLStdWzAxMl0/WzAtOV0oPzo6WzAtOV17Mn0pPykpPycgKyAvLyBaIHwgKzUgfCAtMDM6MzBcbiAgICAgICAgJyk/JCcpLFxuICAgIHJlc29sdmUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gc3RyLm1hdGNoKHRpbWVzdGFtcC50ZXN0KTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignISF0aW1lc3RhbXAgZXhwZWN0cyBhIGRhdGUsIHN0YXJ0aW5nIHdpdGggeXl5eS1tbS1kZCcpO1xuICAgICAgICBjb25zdCBbLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZF0gPSBtYXRjaC5tYXAoTnVtYmVyKTtcbiAgICAgICAgY29uc3QgbWlsbGlzZWMgPSBtYXRjaFs3XSA/IE51bWJlcigobWF0Y2hbN10gKyAnMDAnKS5zdWJzdHIoMSwgMykpIDogMDtcbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlLlVUQyh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciB8fCAwLCBtaW51dGUgfHwgMCwgc2Vjb25kIHx8IDAsIG1pbGxpc2VjKTtcbiAgICAgICAgY29uc3QgdHogPSBtYXRjaFs4XTtcbiAgICAgICAgaWYgKHR6ICYmIHR6ICE9PSAnWicpIHtcbiAgICAgICAgICAgIGxldCBkID0gcGFyc2VTZXhhZ2VzaW1hbCh0eiwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGQpIDwgMzApXG4gICAgICAgICAgICAgICAgZCAqPSA2MDtcbiAgICAgICAgICAgIGRhdGUgLT0gNjAwMDAgKiBkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKTtcbiAgICB9LFxuICAgIHN0cmluZ2lmeTogKHsgdmFsdWUgfSkgPT4gdmFsdWUudG9JU09TdHJpbmcoKS5yZXBsYWNlKC8oVDAwOjAwOjAwKT9cXC4wMDBaJC8sICcnKVxufTtcblxuZXhwb3J0cy5mbG9hdFRpbWUgPSBmbG9hdFRpbWU7XG5leHBvcnRzLmludFRpbWUgPSBpbnRUaW1lO1xuZXhwb3J0cy50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2085\n")},2116:module=>{eval("/*\nLanguage: Device Tree\nDescription: *.dts files used in the Linux kernel\nAuthor: Martin Braun , Moritz Fischer \nWebsite: https://elinux.org/Device_Tree_Reference\nCategory: config\n*/\n\n/** @type LanguageFn */\nfunction dts(hljs) {\n const STRINGS = {\n className: 'string',\n variants: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?\"' }),\n {\n begin: '(u8?|U)?R\"',\n end: '\"',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\\'\\\\\\\\?.',\n end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: { keyword: 'if else elif endif define undef ifdef ifndef' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n {\n beginKeywords: 'include',\n end: '$',\n keywords: { keyword: 'include' },\n contains: [\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: '<',\n end: '>',\n illegal: '\\\\n'\n }\n ]\n },\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const REFERENCE = {\n className: 'variable',\n begin: /&[a-z\\d_]*\\b/\n };\n\n const KEYWORD = {\n className: 'keyword',\n begin: '/[a-z][a-z\\\\d-]*/'\n };\n\n const LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\n };\n\n const CELL_PROPERTY = {\n className: 'params',\n relevance: 0,\n begin: '<',\n end: '>',\n contains: [\n NUMBERS,\n REFERENCE\n ]\n };\n\n const NODE = {\n className: 'title.class',\n begin: /[a-zA-Z_][a-zA-Z\\d_@-]*(?=\\s\\{)/,\n relevance: 0.2\n };\n\n const ROOT_NODE = {\n className: 'title.class',\n begin: /^\\/(?=\\s*\\{)/,\n relevance: 10\n };\n\n // TODO: `attribute` might be the right scope here, unsure\n // I'm not sure if all these key names have semantic meaning or not\n const ATTR_NO_VALUE = {\n match: /[a-z][a-z-,]+(?=;)/,\n relevance: 0,\n scope: \"attr\"\n };\n const ATTR = {\n relevance: 0,\n match: [\n /[a-z][a-z-,]+/,\n /\\s*/,\n /=/\n ],\n scope: {\n 1: \"attr\",\n 3: \"operator\"\n }\n };\n\n const PUNC = {\n scope: \"punctuation\",\n relevance: 0,\n // `};` combined is just to avoid tons of useless punctuation nodes\n match: /\\};|[;{}]/\n };\n\n return {\n name: 'Device Tree',\n contains: [\n ROOT_NODE,\n REFERENCE,\n KEYWORD,\n LABEL,\n NODE,\n ATTR,\n ATTR_NO_VALUE,\n CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS,\n PREPROCESSOR,\n PUNC,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: \"\"\n }\n ]\n };\n}\n\nmodule.exports = dts;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjExNi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHdCQUF3QjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUF5RDtBQUNqRSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlEQUF5RDtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CO0FBQ3hDO0FBQ0Esa0NBQWtDLHFCQUFxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsZUFBZSxLQUFLO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZHRzLmpzPzE0YjIiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBEZXZpY2UgVHJlZVxuRGVzY3JpcHRpb246ICouZHRzIGZpbGVzIHVzZWQgaW4gdGhlIExpbnV4IGtlcm5lbFxuQXV0aG9yOiBNYXJ0aW4gQnJhdW4gPG1hcnRpbi5icmF1bkBldHR1cy5jb20+LCBNb3JpdHogRmlzY2hlciA8bW9yaXR6LmZpc2NoZXJAZXR0dXMuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9lbGludXgub3JnL0RldmljZV9UcmVlX1JlZmVyZW5jZVxuQ2F0ZWdvcnk6IGNvbmZpZ1xuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGR0cyhobGpzKSB7XG4gIGNvbnN0IFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHsgYmVnaW46ICcoKHU4P3xVKXxMKT9cIicgfSksXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKHU4P3xVKT9SXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJ1xcXFxcXFxcPy4nLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnLidcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgY29uc3QgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKScgfSxcbiAgICAgIHsgYmVnaW46IGhsanMuQ19OVU1CRVJfUkUgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnIycsXG4gICAgZW5kOiAnJCcsXG4gICAga2V5d29yZHM6IHsga2V5d29yZDogJ2lmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgaWZkZWYgaWZuZGVmJyB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2luY2x1ZGUnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsga2V5d29yZDogJ2luY2x1ZGUnIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHsgY2xhc3NOYW1lOiAnc3RyaW5nJyB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46ICc8JyxcbiAgICAgICAgICAgIGVuZDogJz4nLFxuICAgICAgICAgICAgaWxsZWdhbDogJ1xcXFxuJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFNUUklOR1MsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IFJFRkVSRU5DRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC8mW2EtelxcZF9dKlxcYi9cbiAgfTtcblxuICBjb25zdCBLRVlXT1JEID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIGJlZ2luOiAnL1thLXpdW2EtelxcXFxkLV0qLydcbiAgfTtcblxuICBjb25zdCBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiAnXlxcXFxzKlthLXpBLVpfXVthLXpBLVpcXFxcZF9dKjonXG4gIH07XG5cbiAgY29uc3QgQ0VMTF9QUk9QRVJUWSA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBiZWdpbjogJzwnLFxuICAgIGVuZDogJz4nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOVU1CRVJTLFxuICAgICAgUkVGRVJFTkNFXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IE5PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUuY2xhc3MnLFxuICAgIGJlZ2luOiAvW2EtekEtWl9dW2EtekEtWlxcZF9ALV0qKD89XFxzXFx7KS8sXG4gICAgcmVsZXZhbmNlOiAwLjJcbiAgfTtcblxuICBjb25zdCBST09UX05PREUgPSB7XG4gICAgY2xhc3NOYW1lOiAndGl0bGUuY2xhc3MnLFxuICAgIGJlZ2luOiAvXlxcLyg/PVxccypcXHspLyxcbiAgICByZWxldmFuY2U6IDEwXG4gIH07XG5cbiAgLy8gVE9ETzogYGF0dHJpYnV0ZWAgbWlnaHQgYmUgdGhlIHJpZ2h0IHNjb3BlIGhlcmUsIHVuc3VyZVxuICAvLyBJJ20gbm90IHN1cmUgaWYgYWxsIHRoZXNlIGtleSBuYW1lcyBoYXZlIHNlbWFudGljIG1lYW5pbmcgb3Igbm90XG4gIGNvbnN0IEFUVFJfTk9fVkFMVUUgPSB7XG4gICAgbWF0Y2g6IC9bYS16XVthLXotLF0rKD89OykvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBzY29wZTogXCJhdHRyXCJcbiAgfTtcbiAgY29uc3QgQVRUUiA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgbWF0Y2g6IFtcbiAgICAgIC9bYS16XVthLXotLF0rLyxcbiAgICAgIC9cXHMqLyxcbiAgICAgIC89L1xuICAgIF0sXG4gICAgc2NvcGU6IHtcbiAgICAgIDE6IFwiYXR0clwiLFxuICAgICAgMzogXCJvcGVyYXRvclwiXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFBVTkMgPSB7XG4gICAgc2NvcGU6IFwicHVuY3R1YXRpb25cIixcbiAgICByZWxldmFuY2U6IDAsXG4gICAgLy8gYH07YCBjb21iaW5lZCBpcyBqdXN0IHRvIGF2b2lkIHRvbnMgb2YgdXNlbGVzcyBwdW5jdHVhdGlvbiBub2Rlc1xuICAgIG1hdGNoOiAvXFx9O3xbO3t9XS9cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdEZXZpY2UgVHJlZScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFJPT1RfTk9ERSxcbiAgICAgIFJFRkVSRU5DRSxcbiAgICAgIEtFWVdPUkQsXG4gICAgICBMQUJFTCxcbiAgICAgIE5PREUsXG4gICAgICBBVFRSLFxuICAgICAgQVRUUl9OT19WQUxVRSxcbiAgICAgIENFTExfUFJPUEVSVFksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIFNUUklOR1MsXG4gICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICBQVU5DLFxuICAgICAge1xuICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgIGtleXdvcmRzOiBcIlwiXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGR0cztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2116\n")},2118:module=>{eval("/*\nLanguage: CMake\nDescription: CMake is an open-source cross-platform system for build automation.\nAuthor: Igor Kalnitsky \nWebsite: https://cmake.org\nCategory: build-system\n*/\n\n/** @type LanguageFn */\nfunction cmake(hljs) {\n return {\n name: 'CMake',\n aliases: [ 'cmake.in' ],\n case_insensitive: true,\n keywords: { keyword:\n // scripting commands\n 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments '\n + 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro '\n + 'endwhile execute_process file find_file find_library find_package find_path '\n + 'find_program foreach function get_cmake_property get_directory_property '\n + 'get_filename_component get_property if include include_guard list macro '\n + 'mark_as_advanced math message option return separate_arguments '\n + 'set_directory_properties set_property set site_name string unset variable_watch while '\n // project commands\n + 'add_compile_definitions add_compile_options add_custom_command add_custom_target '\n + 'add_definitions add_dependencies add_executable add_library add_link_options '\n + 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist '\n + 'define_property enable_language enable_testing export fltk_wrap_ui '\n + 'get_source_file_property get_target_property get_test_property include_directories '\n + 'include_external_msproject include_regular_expression install link_directories '\n + 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions '\n + 'set_source_files_properties set_target_properties set_tests_properties source_group '\n + 'target_compile_definitions target_compile_features target_compile_options '\n + 'target_include_directories target_link_directories target_link_libraries '\n + 'target_link_options target_sources try_compile try_run '\n // CTest commands\n + 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck '\n + 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit '\n + 'ctest_test ctest_update ctest_upload '\n // deprecated commands\n + 'build_name exec_program export_library_dependencies install_files install_programs '\n + 'install_targets load_command make_directory output_required_files remove '\n + 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file '\n + 'qt5_use_modules qt5_use_package qt5_wrap_cpp '\n // core keywords\n + 'on off true false and or not command policy target test exists is_newer_than '\n + 'is_directory is_symlink is_absolute matches less greater equal less_equal '\n + 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less '\n + 'version_greater version_equal version_less_equal version_greater_equal in_list defined' },\n contains: [\n {\n className: 'variable',\n begin: /\\$\\{/,\n end: /\\}/\n },\n hljs.COMMENT(/#\\[\\[/, /]]/),\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = cmake;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjExOC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0dBQW9HO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixnQkFBZ0I7QUFDaEIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9jbWFrZS5qcz8zMzg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogQ01ha2VcbkRlc2NyaXB0aW9uOiBDTWFrZSBpcyBhbiBvcGVuLXNvdXJjZSBjcm9zcy1wbGF0Zm9ybSBzeXN0ZW0gZm9yIGJ1aWxkIGF1dG9tYXRpb24uXG5BdXRob3I6IElnb3IgS2Fsbml0c2t5IDxpZ29yQGthbG5pdHNreS5vcmc+XG5XZWJzaXRlOiBodHRwczovL2NtYWtlLm9yZ1xuQ2F0ZWdvcnk6IGJ1aWxkLXN5c3RlbVxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGNtYWtlKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQ01ha2UnLFxuICAgIGFsaWFzZXM6IFsgJ2NtYWtlLmluJyBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHsga2V5d29yZDpcbiAgICAgICAgLy8gc2NyaXB0aW5nIGNvbW1hbmRzXG4gICAgICAgICdicmVhayBjbWFrZV9ob3N0X3N5c3RlbV9pbmZvcm1hdGlvbiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkIGNtYWtlX3BhcnNlX2FyZ3VtZW50cyAnXG4gICAgICAgICsgJ2NtYWtlX3BvbGljeSBjb25maWd1cmVfZmlsZSBjb250aW51ZSBlbHNlaWYgZWxzZSBlbmRmb3JlYWNoIGVuZGZ1bmN0aW9uIGVuZGlmIGVuZG1hY3JvICdcbiAgICAgICAgKyAnZW5kd2hpbGUgZXhlY3V0ZV9wcm9jZXNzIGZpbGUgZmluZF9maWxlIGZpbmRfbGlicmFyeSBmaW5kX3BhY2thZ2UgZmluZF9wYXRoICdcbiAgICAgICAgKyAnZmluZF9wcm9ncmFtIGZvcmVhY2ggZnVuY3Rpb24gZ2V0X2NtYWtlX3Byb3BlcnR5IGdldF9kaXJlY3RvcnlfcHJvcGVydHkgJ1xuICAgICAgICArICdnZXRfZmlsZW5hbWVfY29tcG9uZW50IGdldF9wcm9wZXJ0eSBpZiBpbmNsdWRlIGluY2x1ZGVfZ3VhcmQgbGlzdCBtYWNybyAnXG4gICAgICAgICsgJ21hcmtfYXNfYWR2YW5jZWQgbWF0aCBtZXNzYWdlIG9wdGlvbiByZXR1cm4gc2VwYXJhdGVfYXJndW1lbnRzICdcbiAgICAgICAgKyAnc2V0X2RpcmVjdG9yeV9wcm9wZXJ0aWVzIHNldF9wcm9wZXJ0eSBzZXQgc2l0ZV9uYW1lIHN0cmluZyB1bnNldCB2YXJpYWJsZV93YXRjaCB3aGlsZSAnXG4gICAgICAgIC8vIHByb2plY3QgY29tbWFuZHNcbiAgICAgICAgKyAnYWRkX2NvbXBpbGVfZGVmaW5pdGlvbnMgYWRkX2NvbXBpbGVfb3B0aW9ucyBhZGRfY3VzdG9tX2NvbW1hbmQgYWRkX2N1c3RvbV90YXJnZXQgJ1xuICAgICAgICArICdhZGRfZGVmaW5pdGlvbnMgYWRkX2RlcGVuZGVuY2llcyBhZGRfZXhlY3V0YWJsZSBhZGRfbGlicmFyeSBhZGRfbGlua19vcHRpb25zICdcbiAgICAgICAgKyAnYWRkX3N1YmRpcmVjdG9yeSBhZGRfdGVzdCBhdXhfc291cmNlX2RpcmVjdG9yeSBidWlsZF9jb21tYW5kIGNyZWF0ZV90ZXN0X3NvdXJjZWxpc3QgJ1xuICAgICAgICArICdkZWZpbmVfcHJvcGVydHkgZW5hYmxlX2xhbmd1YWdlIGVuYWJsZV90ZXN0aW5nIGV4cG9ydCBmbHRrX3dyYXBfdWkgJ1xuICAgICAgICArICdnZXRfc291cmNlX2ZpbGVfcHJvcGVydHkgZ2V0X3RhcmdldF9wcm9wZXJ0eSBnZXRfdGVzdF9wcm9wZXJ0eSBpbmNsdWRlX2RpcmVjdG9yaWVzICdcbiAgICAgICAgKyAnaW5jbHVkZV9leHRlcm5hbF9tc3Byb2plY3QgaW5jbHVkZV9yZWd1bGFyX2V4cHJlc3Npb24gaW5zdGFsbCBsaW5rX2RpcmVjdG9yaWVzICdcbiAgICAgICAgKyAnbGlua19saWJyYXJpZXMgbG9hZF9jYWNoZSBwcm9qZWN0IHF0X3dyYXBfY3BwIHF0X3dyYXBfdWkgcmVtb3ZlX2RlZmluaXRpb25zICdcbiAgICAgICAgKyAnc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzIHNldF90YXJnZXRfcHJvcGVydGllcyBzZXRfdGVzdHNfcHJvcGVydGllcyBzb3VyY2VfZ3JvdXAgJ1xuICAgICAgICArICd0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyB0YXJnZXRfY29tcGlsZV9mZWF0dXJlcyB0YXJnZXRfY29tcGlsZV9vcHRpb25zICdcbiAgICAgICAgKyAndGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMgdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMgdGFyZ2V0X2xpbmtfbGlicmFyaWVzICdcbiAgICAgICAgKyAndGFyZ2V0X2xpbmtfb3B0aW9ucyB0YXJnZXRfc291cmNlcyB0cnlfY29tcGlsZSB0cnlfcnVuICdcbiAgICAgICAgLy8gQ1Rlc3QgY29tbWFuZHNcbiAgICAgICAgKyAnY3Rlc3RfYnVpbGQgY3Rlc3RfY29uZmlndXJlIGN0ZXN0X2NvdmVyYWdlIGN0ZXN0X2VtcHR5X2JpbmFyeV9kaXJlY3RvcnkgY3Rlc3RfbWVtY2hlY2sgJ1xuICAgICAgICArICdjdGVzdF9yZWFkX2N1c3RvbV9maWxlcyBjdGVzdF9ydW5fc2NyaXB0IGN0ZXN0X3NsZWVwIGN0ZXN0X3N0YXJ0IGN0ZXN0X3N1Ym1pdCAnXG4gICAgICAgICsgJ2N0ZXN0X3Rlc3QgY3Rlc3RfdXBkYXRlIGN0ZXN0X3VwbG9hZCAnXG4gICAgICAgIC8vIGRlcHJlY2F0ZWQgY29tbWFuZHNcbiAgICAgICAgKyAnYnVpbGRfbmFtZSBleGVjX3Byb2dyYW0gZXhwb3J0X2xpYnJhcnlfZGVwZW5kZW5jaWVzIGluc3RhbGxfZmlsZXMgaW5zdGFsbF9wcm9ncmFtcyAnXG4gICAgICAgICsgJ2luc3RhbGxfdGFyZ2V0cyBsb2FkX2NvbW1hbmQgbWFrZV9kaXJlY3Rvcnkgb3V0cHV0X3JlcXVpcmVkX2ZpbGVzIHJlbW92ZSAnXG4gICAgICAgICsgJ3N1YmRpcl9kZXBlbmRzIHN1YmRpcnMgdXNlX21hbmdsZWRfbWVzYSB1dGlsaXR5X3NvdXJjZSB2YXJpYWJsZV9yZXF1aXJlcyB3cml0ZV9maWxlICdcbiAgICAgICAgKyAncXQ1X3VzZV9tb2R1bGVzIHF0NV91c2VfcGFja2FnZSBxdDVfd3JhcF9jcHAgJ1xuICAgICAgICAvLyBjb3JlIGtleXdvcmRzXG4gICAgICAgICsgJ29uIG9mZiB0cnVlIGZhbHNlIGFuZCBvciBub3QgY29tbWFuZCBwb2xpY3kgdGFyZ2V0IHRlc3QgZXhpc3RzIGlzX25ld2VyX3RoYW4gJ1xuICAgICAgICArICdpc19kaXJlY3RvcnkgaXNfc3ltbGluayBpc19hYnNvbHV0ZSBtYXRjaGVzIGxlc3MgZ3JlYXRlciBlcXVhbCBsZXNzX2VxdWFsICdcbiAgICAgICAgKyAnZ3JlYXRlcl9lcXVhbCBzdHJsZXNzIHN0cmdyZWF0ZXIgc3RyZXF1YWwgc3RybGVzc19lcXVhbCBzdHJncmVhdGVyX2VxdWFsIHZlcnNpb25fbGVzcyAnXG4gICAgICAgICsgJ3ZlcnNpb25fZ3JlYXRlciB2ZXJzaW9uX2VxdWFsIHZlcnNpb25fbGVzc19lcXVhbCB2ZXJzaW9uX2dyZWF0ZXJfZXF1YWwgaW5fbGlzdCBkZWZpbmVkJyB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICAgICAgYmVnaW46IC9cXCRcXHsvLFxuICAgICAgICBlbmQ6IC9cXH0vXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKC8jXFxbXFxbLywgL11dLyksXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY21ha2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2118\n")},2124:module=>{eval("/*\nLanguage: ARM Assembly\nAuthor: Dan Panzarella \nDescription: ARM Assembly including Thumb and Thumb2 instructions\nCategory: assembler\n*/\n\n/** @type LanguageFn */\nfunction armasm(hljs) {\n // local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n\n const COMMENT = { variants: [\n hljs.COMMENT('^[ \\\\t]*(?=#)', '$', {\n relevance: 0,\n excludeBegin: true\n }),\n hljs.COMMENT('[;@]', '$', { relevance: 0 }),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ] };\n\n return {\n name: 'ARM Assembly',\n case_insensitive: true,\n aliases: [ 'arm' ],\n keywords: {\n $pattern: '\\\\.?' + hljs.IDENT_RE,\n meta:\n // GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg '\n // ARM directives\n + 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',\n built_in:\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' // standard registers\n + 'w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 ' // 32 bit ARMv8 registers\n + 'w16 w17 w18 w19 w20 w21 w22 w23 w24 w25 w26 w27 w28 w29 w30 '\n + 'x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 ' // 64 bit ARMv8 registers\n + 'x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 '\n + 'pc lr sp ip sl sb fp ' // typical regs plus backward compatibility\n + 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' // more regs and fp\n + 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' // coprocessor regs\n + 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' // more coproc\n + 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' // advanced SIMD NEON regs\n\n // program status registers\n + 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf '\n + 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf '\n\n // NEON and VFP registers\n + 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 '\n + 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 '\n + 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 '\n + 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 '\n\n + '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b(' // mnemonics\n + 'adc|'\n + '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|'\n + 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|'\n + 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|'\n + 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|'\n + 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|'\n + 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|'\n + 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|'\n + 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|'\n + 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|'\n + 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|'\n + '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|'\n + 'wfe|wfi|yield'\n + ')'\n + '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' // condition codes\n + '[sptrx]?' // legal postfixes\n + '(?=\\\\s)' // followed by space\n },\n COMMENT,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|',\n end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { // hex\n begin: '[#$=]?0x[0-9a-f]+' },\n { // bin\n begin: '[#$=]?0b[01]+' },\n { // literal\n begin: '[#$=]\\\\d+' },\n { // bare number\n begin: '\\\\b\\\\d+' }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n { // GNU ARM syntax\n begin: '^[ \\\\t]*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:' },\n { // ARM syntax\n begin: '^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+' },\n { // label reference\n begin: '[=#]\\\\w+' }\n ],\n relevance: 0\n }\n ]\n };\n}\n\nmodule.exports = armasm;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEyNC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQyxJQUFJOztBQUV0QyxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLG9CQUFvQixZQUFZLGNBQWM7QUFDOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksS0FBSyxNQUFNLE9BQU8sUUFBUSxNQUFNLFNBQVMsU0FBUyxXQUFXLE1BQU0sTUFBTSxlQUFlLGdCQUFnQixpQkFBaUIsUUFBUSxPQUFPLE9BQU8sT0FBTyxRQUFRO0FBQzFLLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELElBQUk7QUFDckQ7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEVBQUU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLHdDQUF3QztBQUN4QyxZQUFZO0FBQ1osb0NBQW9DO0FBQ3BDLFlBQVk7QUFDWixnQ0FBZ0M7QUFDaEMsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osNERBQTREO0FBQzVELFlBQVk7QUFDWixvREFBb0Q7QUFDcEQsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcm1hc20uanM/Zjk2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEFSTSBBc3NlbWJseVxuQXV0aG9yOiBEYW4gUGFuemFyZWxsYSA8YWxzb2VscEBnbWFpbC5jb20+XG5EZXNjcmlwdGlvbjogQVJNIEFzc2VtYmx5IGluY2x1ZGluZyBUaHVtYiBhbmQgVGh1bWIyIGluc3RydWN0aW9uc1xuQ2F0ZWdvcnk6IGFzc2VtYmxlclxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGFybWFzbShobGpzKSB7XG4gIC8vIGxvY2FsIGxhYmVsczogJT9bRkJdP1tBVF0/XFxkezEsMn1cXHcrXG5cbiAgY29uc3QgQ09NTUVOVCA9IHsgdmFyaWFudHM6IFtcbiAgICBobGpzLkNPTU1FTlQoJ15bIFxcXFx0XSooPz0jKScsICckJywge1xuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlXG4gICAgfSksXG4gICAgaGxqcy5DT01NRU5UKCdbO0BdJywgJyQnLCB7IHJlbGV2YW5jZTogMCB9KSxcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICBdIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQVJNIEFzc2VtYmx5JyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsgJ2FybScgXSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJHBhdHRlcm46ICdcXFxcLj8nICsgaGxqcy5JREVOVF9SRSxcbiAgICAgIG1ldGE6XG4gICAgICAgIC8vIEdOVSBwcmVwcm9jc1xuICAgICAgICAnLjJieXRlIC40Ynl0ZSAuYWxpZ24gLmFzY2lpIC5hc2NpeiAuYmFsaWduIC5ieXRlIC5jb2RlIC5kYXRhIC5lbHNlIC5lbmQgLmVuZGlmIC5lbmRtIC5lbmRyIC5lcXUgLmVyciAuZXhpdG0gLmV4dGVybiAuZ2xvYmFsIC5od29yZCAuaWYgLmlmZGVmIC5pZm5kZWYgLmluY2x1ZGUgLmlycCAubG9uZyAubWFjcm8gLnJlcHQgLnJlcSAuc2VjdGlvbiAuc2V0IC5za2lwIC5zcGFjZSAudGV4dCAud29yZCAuYXJtIC50aHVtYiAuY29kZTE2IC5jb2RlMzIgLmZvcmNlX3RodW1iIC50aHVtYl9mdW5jIC5sdG9yZyAnXG4gICAgICAgIC8vIEFSTSBkaXJlY3RpdmVzXG4gICAgICAgICsgJ0FMSUFTIEFMSUdOIEFSTSBBUkVBIEFTU0VSVCBBVFRSIENOIENPREUgQ09ERTE2IENPREUzMiBDT01NT04gQ1AgREFUQSBEQ0IgRENEIERDRFUgRENETyBEQ0ZEIERDRkRVIERDSSBEQ1EgRENRVSBEQ1cgRENXVSBETiBFTElGIEVMU0UgRU5EIEVOREZVTkMgRU5ESUYgRU5EUCBFTlRSWSBFUVUgRVhQT1JUIEVYUE9SVEFTIEVYVEVSTiBGSUVMRCBGSUxMIEZVTkNUSU9OIEdCTEEgR0JMTCBHQkxTIEdFVCBHTE9CQUwgSUYgSU1QT1JUIElOQ0JJTiBJTkNMVURFIElORk8gS0VFUCBMQ0xBIExDTEwgTENMUyBMVE9SRyBNQUNSTyBNQVAgTUVORCBNRVhJVCBOT0ZQIE9QVCBQUkVTRVJWRTggUFJPQyBRTiBSRUFET05MWSBSRUxPQyBSRVFVSVJFIFJFUVVJUkU4IFJMSVNUIEZOIFJPVVQgU0VUQSBTRVRMIFNFVFMgU04gU1BBQ0UgU1VCVCBUSFVNQiBUSFVNQlggVFRMIFdISUxFIFdFTkQgJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAncjAgcjEgcjIgcjMgcjQgcjUgcjYgcjcgcjggcjkgcjEwIHIxMSByMTIgcjEzIHIxNCByMTUgJyAvLyBzdGFuZGFyZCByZWdpc3RlcnNcbiAgICAgICAgKyAndzAgdzEgdzIgdzMgdzQgdzUgdzYgdzcgdzggdzkgdzEwIHcxMSB3MTIgdzEzIHcxNCB3MTUgJyAvLyAzMiBiaXQgQVJNdjggcmVnaXN0ZXJzXG4gICAgICAgICsgJ3cxNiB3MTcgdzE4IHcxOSB3MjAgdzIxIHcyMiB3MjMgdzI0IHcyNSB3MjYgdzI3IHcyOCB3MjkgdzMwICdcbiAgICAgICAgKyAneDAgeDEgeDIgeDMgeDQgeDUgeDYgeDcgeDggeDkgeDEwIHgxMSB4MTIgeDEzIHgxNCB4MTUgJyAvLyA2NCBiaXQgQVJNdjggcmVnaXN0ZXJzXG4gICAgICAgICsgJ3gxNiB4MTcgeDE4IHgxOSB4MjAgeDIxIHgyMiB4MjMgeDI0IHgyNSB4MjYgeDI3IHgyOCB4MjkgeDMwICdcbiAgICAgICAgKyAncGMgbHIgc3AgaXAgc2wgc2IgZnAgJyAvLyB0eXBpY2FsIHJlZ3MgcGx1cyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICsgJ2ExIGEyIGEzIGE0IHYxIHYyIHYzIHY0IHY1IHY2IHY3IHY4IGYwIGYxIGYyIGYzIGY0IGY1IGY2IGY3ICcgLy8gbW9yZSByZWdzIGFuZCBmcFxuICAgICAgICArICdwMCBwMSBwMiBwMyBwNCBwNSBwNiBwNyBwOCBwOSBwMTAgcDExIHAxMiBwMTMgcDE0IHAxNSAnIC8vIGNvcHJvY2Vzc29yIHJlZ3NcbiAgICAgICAgKyAnYzAgYzEgYzIgYzMgYzQgYzUgYzYgYzcgYzggYzkgYzEwIGMxMSBjMTIgYzEzIGMxNCBjMTUgJyAvLyBtb3JlIGNvcHJvY1xuICAgICAgICArICdxMCBxMSBxMiBxMyBxNCBxNSBxNiBxNyBxOCBxOSBxMTAgcTExIHExMiBxMTMgcTE0IHExNSAnIC8vIGFkdmFuY2VkIFNJTUQgTkVPTiByZWdzXG5cbiAgICAgICAgLy8gcHJvZ3JhbSBzdGF0dXMgcmVnaXN0ZXJzXG4gICAgICAgICsgJ2Nwc3JfYyBjcHNyX3ggY3Bzcl9zIGNwc3JfZiBjcHNyX2N4IGNwc3JfY3hzIGNwc3JfeHMgY3Bzcl94c2YgY3Bzcl9zZiBjcHNyX2N4c2YgJ1xuICAgICAgICArICdzcHNyX2Mgc3Bzcl94IHNwc3JfcyBzcHNyX2Ygc3Bzcl9jeCBzcHNyX2N4cyBzcHNyX3hzIHNwc3JfeHNmIHNwc3Jfc2Ygc3Bzcl9jeHNmICdcblxuICAgICAgICAvLyBORU9OIGFuZCBWRlAgcmVnaXN0ZXJzXG4gICAgICAgICsgJ3MwIHMxIHMyIHMzIHM0IHM1IHM2IHM3IHM4IHM5IHMxMCBzMTEgczEyIHMxMyBzMTQgczE1ICdcbiAgICAgICAgKyAnczE2IHMxNyBzMTggczE5IHMyMCBzMjEgczIyIHMyMyBzMjQgczI1IHMyNiBzMjcgczI4IHMyOSBzMzAgczMxICdcbiAgICAgICAgKyAnZDAgZDEgZDIgZDMgZDQgZDUgZDYgZDcgZDggZDkgZDEwIGQxMSBkMTIgZDEzIGQxNCBkMTUgJ1xuICAgICAgICArICdkMTYgZDE3IGQxOCBkMTkgZDIwIGQyMSBkMjIgZDIzIGQyNCBkMjUgZDI2IGQyNyBkMjggZDI5IGQzMCBkMzEgJ1xuXG4gICAgICAgICsgJ3tQQ30ge1ZBUn0ge1RSVUV9IHtGQUxTRX0ge09QVH0ge0NPTkZJR30ge0VORElBTn0ge0NPREVTSVpFfSB7Q1BVfSB7RlBVfSB7QVJDSElURUNUVVJFfSB7UENTVE9SRU9GRlNFVH0ge0FSTUFTTV9WRVJTSU9OfSB7SU5URVJ9IHtST1BJfSB7UldQSX0ge1NXU1R9IHtOT1NXU1R9IC4gQCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgLy8gbW5lbW9uaWNzXG4gICAgICAgICAgICArICdhZGN8J1xuICAgICAgICAgICAgKyAnKHFkP3xzaD98dVtxaF0/KT9hZGQoOHwxNik/fHVzYWRhPzh8KHF8c2g/fHVbcWhdPyk/KGFzfHNhKXh8J1xuICAgICAgICAgICAgKyAnYW5kfGFkcmw/fHNiY3xyc1tiY118YXNyfGJbbHhdP3xibHh8YnhqfGNibj96fHRiW2JoXXxiaWN8J1xuICAgICAgICAgICAgKyAnYmZjfGJmaXxbc3VdYmZ4fGJrcHR8Y2RwMj98Y2x6fGNscmV4fGNtcHxjbW58Y3BzaVtlZF18Y3BzfCdcbiAgICAgICAgICAgICsgJ3NldGVuZHxkYmd8ZG1ifGRzYnxlb3J8aXNifGl0W3RlXXswLDN9fGxzbHxsc3J8cm9yfHJyeHwnXG4gICAgICAgICAgICArICdsZG0oKFtpZF1bYWJdKXxmW2RzXSk/fGxkcigoc3xleCk/W2JoZF0pP3xtb3Z0P3xtdm58bXJhfG1hcnwnXG4gICAgICAgICAgICArICdtdWx8W3VzXW11bGx8c211bFtid3RdW2J0XXxzbXVbYXNdZHxzbW11bHxzbW1sYXwnXG4gICAgICAgICAgICArICdtbGF8dW1sYWFsfHNtbGFsPyhbd2J0XVtidF18ZCl8bWxzfHNtbHNsP1tkc118c21jfHN2Y3xzZXZ8J1xuICAgICAgICAgICAgKyAnbWlhKFtidF17Mn18cGgpP3xtcnI/YzI/fG1jcnIyP3xtcnN8bXNyfG9ycnxvcm58cGtoKHRifGJ0KXxyYml0fCdcbiAgICAgICAgICAgICsgJ3JldigxNnxzaCk/fHNlbHxbc3Vdc2F0KDE2KT98bm9wfHBvcHxwdXNofHJmZShbaWRdW2FiXSk/fCdcbiAgICAgICAgICAgICsgJ3N0bShbaWRdW2FiXSk/fHN0cihleCk/W2JoZF0/fChxZD8pP3N1Ynwoc2g/fHF8dVtxaF0/KT9zdWIoOHwxNil8J1xuICAgICAgICAgICAgKyAnW3N1XXh0KGE/aHxhP2IoMTYpPyl8c3JzKFtpZF1bYWJdKT98c3dwYj98c3dpfHNtaXx0c3R8dGVxfCdcbiAgICAgICAgICAgICsgJ3dmZXx3Zml8eWllbGQnXG4gICAgICAgICsgJyknXG4gICAgICAgICsgJyhlcXxuZXxjc3xjY3xtaXxwbHx2c3x2Y3xoaXxsc3xnZXxsdHxndHxsZXxhbHxoc3xsbyk/JyAvLyBjb25kaXRpb24gY29kZXNcbiAgICAgICAgKyAnW3NwdHJ4XT8nIC8vIGxlZ2FsIHBvc3RmaXhlc1xuICAgICAgICArICcoPz1cXFxccyknIC8vIGZvbGxvd2VkIGJ5IHNwYWNlXG4gICAgICB9LFxuICAgICAgQ09NTUVOVCxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXFwnJyxcbiAgICAgICAgZW5kOiAnW15cXFxcXFxcXF1cXCcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcfCcsXG4gICAgICAgIGVuZDogJ1xcXFx8JyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgLy8gaGV4XG4gICAgICAgICAgICBiZWdpbjogJ1sjJD1dPzB4WzAtOWEtZl0rJyB9LFxuICAgICAgICAgIHsgLy8gYmluXG4gICAgICAgICAgICBiZWdpbjogJ1sjJD1dPzBiWzAxXSsnIH0sXG4gICAgICAgICAgeyAvLyBsaXRlcmFsXG4gICAgICAgICAgICBiZWdpbjogJ1sjJD1dXFxcXGQrJyB9LFxuICAgICAgICAgIHsgLy8gYmFyZSBudW1iZXJcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGJcXFxcZCsnIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgLy8gR05VIEFSTSBzeW50YXhcbiAgICAgICAgICAgIGJlZ2luOiAnXlsgXFxcXHRdKlthLXpfXFxcXC5cXFxcJF1bYS16MC05X1xcXFwuXFxcXCRdKzonIH0sXG4gICAgICAgICAgeyAvLyBBUk0gc3ludGF4XG4gICAgICAgICAgICBiZWdpbjogJ15bYS16X1xcXFwuXFxcXCRdW2EtejAtOV9cXFxcLlxcXFwkXSsnIH0sXG4gICAgICAgICAgeyAvLyBsYWJlbCByZWZlcmVuY2VcbiAgICAgICAgICAgIGJlZ2luOiAnWz0jXVxcXFx3KycgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJtYXNtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2124\n")},2139:module=>{eval('/*\n Language: Groovy\n Author: Guillaume Laforge \n Description: Groovy programming language implementation inspired from Vsevolod\'s Java mode\n Website: https://groovy-lang.org\n Category: system\n */\n\nfunction variants(variants, obj = {}) {\n obj.variants = variants;\n return obj;\n}\n\nfunction groovy(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = \'[A-Za-z0-9_$]+\';\n const COMMENT = variants([\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n \'/\\\\*\\\\*\',\n \'\\\\*/\',\n {\n relevance: 0,\n contains: [\n {\n // eat up @\'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: \'doctag\',\n begin: \'@[A-Za-z]+\'\n }\n ]\n }\n )\n ]);\n const REGEXP = {\n className: \'regexp\',\n begin: /~?\\/[^\\/\\n]+\\//,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const NUMBER = variants([\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]);\n const STRING = variants([\n {\n begin: /"""/,\n end: /"""/\n },\n {\n begin: /\'\'\'/,\n end: /\'\'\'/\n },\n {\n begin: "\\\\$/",\n end: "/\\\\$",\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ],\n { className: "string" }\n );\n\n const CLASS_DEFINITION = {\n match: [\n /(class|interface|trait|enum|record|extends|implements)/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n scope: {\n 1: "keyword",\n 3: "title.class",\n }\n };\n const TYPES = [\n "byte",\n "short",\n "char",\n "int",\n "long",\n "boolean",\n "float",\n "double",\n "void"\n ];\n const KEYWORDS = [\n // groovy specific keywords\n "def",\n "as",\n "in",\n "assert",\n "trait",\n // common keywords with Java\n "abstract",\n "static",\n "volatile",\n "transient",\n "public",\n "private",\n "protected",\n "synchronized",\n "final",\n "class",\n "interface",\n "enum",\n "if",\n "else",\n "for",\n "while",\n "switch",\n "case",\n "break",\n "default",\n "continue",\n "throw",\n "throws",\n "try",\n "catch",\n "finally",\n "implements",\n "extends",\n "new",\n "import",\n "package",\n "return",\n "instanceof",\n "var"\n ];\n\n return {\n name: \'Groovy\',\n keywords: {\n "variable.language": \'this super\',\n literal: \'true false null\',\n type: TYPES,\n keyword: KEYWORDS\n },\n contains: [\n hljs.SHEBANG({\n binary: "groovy",\n relevance: 10\n }),\n COMMENT,\n STRING,\n REGEXP,\n NUMBER,\n CLASS_DEFINITION,\n {\n className: \'meta\',\n begin: \'@[A-Za-z]+\',\n relevance: 0\n },\n {\n // highlight map keys and named parameters as attrs\n className: \'attr\',\n begin: IDENT_RE + \'[ \\t]*:\',\n relevance: 0\n },\n {\n // catch middle element of the ternary operator\n // to avoid highlight it as a label, named parameter, or map key\n begin: /\\?/,\n end: /:/,\n relevance: 0,\n contains: [\n COMMENT,\n STRING,\n REGEXP,\n NUMBER,\n \'self\'\n ]\n },\n {\n // highlight labeled statements\n className: \'symbol\',\n begin: \'^[ \\t]*\' + regex.lookahead(IDENT_RE + \':\'),\n excludeBegin: true,\n end: IDENT_RE + \':\',\n relevance: 0\n }\n ],\n illegal: /#|<\\//\n };\n}\n\nmodule.exports = groovy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEzOS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncm9vdnkuanM/ZTBlMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIExhbmd1YWdlOiBHcm9vdnlcbiBBdXRob3I6IEd1aWxsYXVtZSBMYWZvcmdlIDxnbGFmb3JnZUBnbWFpbC5jb20+XG4gRGVzY3JpcHRpb246IEdyb292eSBwcm9ncmFtbWluZyBsYW5ndWFnZSBpbXBsZW1lbnRhdGlvbiBpbnNwaXJlZCBmcm9tIFZzZXZvbG9kJ3MgSmF2YSBtb2RlXG4gV2Vic2l0ZTogaHR0cHM6Ly9ncm9vdnktbGFuZy5vcmdcbiBDYXRlZ29yeTogc3lzdGVtXG4gKi9cblxuZnVuY3Rpb24gdmFyaWFudHModmFyaWFudHMsIG9iaiA9IHt9KSB7XG4gIG9iai52YXJpYW50cyA9IHZhcmlhbnRzO1xuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBncm9vdnkoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IElERU5UX1JFID0gJ1tBLVphLXowLTlfJF0rJztcbiAgY29uc3QgQ09NTUVOVCA9IHZhcmlhbnRzKFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnL1xcXFwqXFxcXConLFxuICAgICAgJ1xcXFwqLycsXG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBlYXQgdXAgQCdzIGluIGVtYWlscyB0byBwcmV2ZW50IHRoZW0gdG8gYmUgcmVjb2duaXplZCBhcyBkb2N0YWdzXG4gICAgICAgICAgICBiZWdpbjogL1xcdytALyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApXG4gIF0pO1xuICBjb25zdCBSRUdFWFAgPSB7XG4gICAgY2xhc3NOYW1lOiAncmVnZXhwJyxcbiAgICBiZWdpbjogL34/XFwvW15cXC9cXG5dK1xcLy8sXG4gICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgfTtcbiAgY29uc3QgTlVNQkVSID0gdmFyaWFudHMoW1xuICAgIGhsanMuQklOQVJZX05VTUJFUl9NT0RFLFxuICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICBdKTtcbiAgY29uc3QgU1RSSU5HID0gdmFyaWFudHMoW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvXCJcIlwiLyxcbiAgICAgIGVuZDogL1wiXCJcIi9cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvJycnLyxcbiAgICAgIGVuZDogLycnJy9cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiBcIlxcXFwkL1wiLFxuICAgICAgZW5kOiBcIi9cXFxcJFwiLFxuICAgICAgcmVsZXZhbmNlOiAxMFxuICAgIH0sXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgXSxcbiAgeyBjbGFzc05hbWU6IFwic3RyaW5nXCIgfVxuICApO1xuXG4gIGNvbnN0IENMQVNTX0RFRklOSVRJT04gPSB7XG4gICAgbWF0Y2g6IFtcbiAgICAgIC8oY2xhc3N8aW50ZXJmYWNlfHRyYWl0fGVudW18cmVjb3JkfGV4dGVuZHN8aW1wbGVtZW50cykvLFxuICAgICAgL1xccysvLFxuICAgICAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgXSxcbiAgICBzY29wZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcInRpdGxlLmNsYXNzXCIsXG4gICAgfVxuICB9O1xuICBjb25zdCBUWVBFUyA9IFtcbiAgICBcImJ5dGVcIixcbiAgICBcInNob3J0XCIsXG4gICAgXCJjaGFyXCIsXG4gICAgXCJpbnRcIixcbiAgICBcImxvbmdcIixcbiAgICBcImJvb2xlYW5cIixcbiAgICBcImZsb2F0XCIsXG4gICAgXCJkb3VibGVcIixcbiAgICBcInZvaWRcIlxuICBdO1xuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICAvLyBncm9vdnkgc3BlY2lmaWMga2V5d29yZHNcbiAgICBcImRlZlwiLFxuICAgIFwiYXNcIixcbiAgICBcImluXCIsXG4gICAgXCJhc3NlcnRcIixcbiAgICBcInRyYWl0XCIsXG4gICAgLy8gY29tbW9uIGtleXdvcmRzIHdpdGggSmF2YVxuICAgIFwiYWJzdHJhY3RcIixcbiAgICBcInN0YXRpY1wiLFxuICAgIFwidm9sYXRpbGVcIixcbiAgICBcInRyYW5zaWVudFwiLFxuICAgIFwicHVibGljXCIsXG4gICAgXCJwcml2YXRlXCIsXG4gICAgXCJwcm90ZWN0ZWRcIixcbiAgICBcInN5bmNocm9uaXplZFwiLFxuICAgIFwiZmluYWxcIixcbiAgICBcImNsYXNzXCIsXG4gICAgXCJpbnRlcmZhY2VcIixcbiAgICBcImVudW1cIixcbiAgICBcImlmXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJmb3JcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJzd2l0Y2hcIixcbiAgICBcImNhc2VcIixcbiAgICBcImJyZWFrXCIsXG4gICAgXCJkZWZhdWx0XCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwidGhyb3dcIixcbiAgICBcInRocm93c1wiLFxuICAgIFwidHJ5XCIsXG4gICAgXCJjYXRjaFwiLFxuICAgIFwiZmluYWxseVwiLFxuICAgIFwiaW1wbGVtZW50c1wiLFxuICAgIFwiZXh0ZW5kc1wiLFxuICAgIFwibmV3XCIsXG4gICAgXCJpbXBvcnRcIixcbiAgICBcInBhY2thZ2VcIixcbiAgICBcInJldHVyblwiLFxuICAgIFwiaW5zdGFuY2VvZlwiLFxuICAgIFwidmFyXCJcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdHcm9vdnknLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBcInZhcmlhYmxlLmxhbmd1YWdlXCI6ICd0aGlzIHN1cGVyJyxcbiAgICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIG51bGwnLFxuICAgICAgdHlwZTogVFlQRVMsXG4gICAgICBrZXl3b3JkOiBLRVlXT1JEU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuU0hFQkFORyh7XG4gICAgICAgIGJpbmFyeTogXCJncm9vdnlcIixcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSksXG4gICAgICBDT01NRU5ULFxuICAgICAgU1RSSU5HLFxuICAgICAgUkVHRVhQLFxuICAgICAgTlVNQkVSLFxuICAgICAgQ0xBU1NfREVGSU5JVElPTixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gaGlnaGxpZ2h0IG1hcCBrZXlzIGFuZCBuYW1lZCBwYXJhbWV0ZXJzIGFzIGF0dHJzXG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgICAgICBiZWdpbjogSURFTlRfUkUgKyAnWyBcXHRdKjonLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNhdGNoIG1pZGRsZSBlbGVtZW50IG9mIHRoZSB0ZXJuYXJ5IG9wZXJhdG9yXG4gICAgICAgIC8vIHRvIGF2b2lkIGhpZ2hsaWdodCBpdCBhcyBhIGxhYmVsLCBuYW1lZCBwYXJhbWV0ZXIsIG9yIG1hcCBrZXlcbiAgICAgICAgYmVnaW46IC9cXD8vLFxuICAgICAgICBlbmQ6IC86LyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIENPTU1FTlQsXG4gICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgIFJFR0VYUCxcbiAgICAgICAgICBOVU1CRVIsXG4gICAgICAgICAgJ3NlbGYnXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGhpZ2hsaWdodCBsYWJlbGVkIHN0YXRlbWVudHNcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgYmVnaW46ICdeWyBcXHRdKicgKyByZWdleC5sb29rYWhlYWQoSURFTlRfUkUgKyAnOicpLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGVuZDogSURFTlRfUkUgKyAnOicsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogLyN8PFxcLy9cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBncm9vdnk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2139\n')},2150:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar Type = __webpack_require__(2500);\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE1MC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixXQUFXLG1CQUFPLENBQUMsSUFBUzs7QUFFNUI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsZ0JBQWdCO0FBQzdDLDZCQUE2QixnQkFBZ0I7QUFDN0MsNkJBQTZCLGdCQUFnQjtBQUM3Qyw2QkFBNkI7QUFDN0IsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9qcy15YW1sQDMuMTQuMS9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL251bGwuanM/YmJkMyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE51bGwoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSAxICYmIGRhdGEgPT09ICd+JykgfHxcbiAgICAgICAgIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnTnVsbCcgfHwgZGF0YSA9PT0gJ05VTEwnKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNOdWxsKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxOdWxsLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxOdWxsLFxuICBwcmVkaWNhdGU6IGlzTnVsbCxcbiAgcmVwcmVzZW50OiB7XG4gICAgY2Fub25pY2FsOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnfic7ICAgIH0sXG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnbnVsbCc7IH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTlVMTCc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTnVsbCc7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2150\n")},2261:module=>{eval('/*\nLanguage: GML\nDescription: Game Maker Language for GameMaker (rev. 2023.1)\nWebsite: https://manual.yoyogames.com/\nCategory: scripting\n*/\n\nfunction gml(hljs) {\n const KEYWORDS = [\n "#endregion",\n "#macro",\n "#region",\n "and",\n "begin",\n "break",\n "case",\n "constructor",\n "continue",\n "default",\n "delete",\n "div",\n "do",\n "else",\n "end",\n "enum",\n "exit",\n "for",\n "function",\n "globalvar",\n "if",\n "mod",\n "new",\n "not",\n "or",\n "repeat",\n "return",\n "static",\n "switch",\n "then",\n "until",\n "var",\n "while",\n "with",\n "xor"\n ];\n\n const BUILT_INS = [\n "abs",\n "alarm_get",\n "alarm_set",\n "angle_difference",\n "animcurve_channel_evaluate",\n "animcurve_channel_new",\n "animcurve_create",\n "animcurve_destroy",\n "animcurve_exists",\n "animcurve_get",\n "animcurve_get_channel",\n "animcurve_get_channel_index",\n "animcurve_point_new",\n "ansi_char",\n "application_get_position",\n "application_surface_draw_enable",\n "application_surface_enable",\n "application_surface_is_enabled",\n "arccos",\n "arcsin",\n "arctan",\n "arctan2",\n "array_all",\n "array_any",\n "array_concat",\n "array_contains",\n "array_contains_ext",\n "array_copy",\n "array_copy_while",\n "array_create",\n "array_create_ext",\n "array_delete",\n "array_equals",\n "array_filter",\n "array_filter_ext",\n "array_find_index",\n "array_first",\n "array_foreach",\n "array_get",\n "array_get_index",\n "array_insert",\n "array_intersection",\n "array_last",\n "array_length",\n "array_map",\n "array_map_ext",\n "array_pop",\n "array_push",\n "array_reduce",\n "array_resize",\n "array_reverse",\n "array_reverse_ext",\n "array_set",\n "array_shuffle",\n "array_shuffle_ext",\n "array_sort",\n "array_union",\n "array_unique",\n "array_unique_ext",\n "asset_add_tags",\n "asset_clear_tags",\n "asset_get_ids",\n "asset_get_index",\n "asset_get_tags",\n "asset_get_type",\n "asset_has_any_tag",\n "asset_has_tags",\n "asset_remove_tags",\n "audio_bus_clear_emitters",\n "audio_bus_create",\n "audio_bus_get_emitters",\n "audio_channel_num",\n "audio_create_buffer_sound",\n "audio_create_play_queue",\n "audio_create_stream",\n "audio_create_sync_group",\n "audio_debug",\n "audio_destroy_stream",\n "audio_destroy_sync_group",\n "audio_effect_create",\n "audio_emitter_bus",\n "audio_emitter_create",\n "audio_emitter_exists",\n "audio_emitter_falloff",\n "audio_emitter_free",\n "audio_emitter_gain",\n "audio_emitter_get_bus",\n "audio_emitter_get_gain",\n "audio_emitter_get_listener_mask",\n "audio_emitter_get_pitch",\n "audio_emitter_get_vx",\n "audio_emitter_get_vy",\n "audio_emitter_get_vz",\n "audio_emitter_get_x",\n "audio_emitter_get_y",\n "audio_emitter_get_z",\n "audio_emitter_pitch",\n "audio_emitter_position",\n "audio_emitter_set_listener_mask",\n "audio_emitter_velocity",\n "audio_exists",\n "audio_falloff_set_model",\n "audio_free_buffer_sound",\n "audio_free_play_queue",\n "audio_get_listener_count",\n "audio_get_listener_info",\n "audio_get_listener_mask",\n "audio_get_master_gain",\n "audio_get_name",\n "audio_get_recorder_count",\n "audio_get_recorder_info",\n "audio_get_type",\n "audio_group_get_assets",\n "audio_group_get_gain",\n "audio_group_is_loaded",\n "audio_group_load",\n "audio_group_load_progress",\n "audio_group_name",\n "audio_group_set_gain",\n "audio_group_stop_all",\n "audio_group_unload",\n "audio_is_paused",\n "audio_is_playing",\n "audio_listener_get_data",\n "audio_listener_orientation",\n "audio_listener_position",\n "audio_listener_set_orientation",\n "audio_listener_set_position",\n "audio_listener_set_velocity",\n "audio_listener_velocity",\n "audio_master_gain",\n "audio_pause_all",\n "audio_pause_sound",\n "audio_pause_sync_group",\n "audio_play_in_sync_group",\n "audio_play_sound",\n "audio_play_sound_at",\n "audio_play_sound_ext",\n "audio_play_sound_on",\n "audio_queue_sound",\n "audio_resume_all",\n "audio_resume_sound",\n "audio_resume_sync_group",\n "audio_set_listener_mask",\n "audio_set_master_gain",\n "audio_sound_gain",\n "audio_sound_get_audio_group",\n "audio_sound_get_gain",\n "audio_sound_get_listener_mask",\n "audio_sound_get_loop",\n "audio_sound_get_loop_end",\n "audio_sound_get_loop_start",\n "audio_sound_get_pitch",\n "audio_sound_get_track_position",\n "audio_sound_is_playable",\n "audio_sound_length",\n "audio_sound_loop",\n "audio_sound_loop_end",\n "audio_sound_loop_start",\n "audio_sound_pitch",\n "audio_sound_set_listener_mask",\n "audio_sound_set_track_position",\n "audio_start_recording",\n "audio_start_sync_group",\n "audio_stop_all",\n "audio_stop_recording",\n "audio_stop_sound",\n "audio_stop_sync_group",\n "audio_sync_group_debug",\n "audio_sync_group_get_track_pos",\n "audio_sync_group_is_paused",\n "audio_sync_group_is_playing",\n "audio_system_is_available",\n "audio_system_is_initialised",\n "base64_decode",\n "base64_encode",\n "bool",\n "browser_input_capture",\n "buffer_async_group_begin",\n "buffer_async_group_end",\n "buffer_async_group_option",\n "buffer_base64_decode",\n "buffer_base64_decode_ext",\n "buffer_base64_encode",\n "buffer_compress",\n "buffer_copy",\n "buffer_copy_from_vertex_buffer",\n "buffer_copy_stride",\n "buffer_crc32",\n "buffer_create",\n "buffer_create_from_vertex_buffer",\n "buffer_create_from_vertex_buffer_ext",\n "buffer_decompress",\n "buffer_delete",\n "buffer_exists",\n "buffer_fill",\n "buffer_get_address",\n "buffer_get_alignment",\n "buffer_get_size",\n "buffer_get_surface",\n "buffer_get_type",\n "buffer_load",\n "buffer_load_async",\n "buffer_load_ext",\n "buffer_load_partial",\n "buffer_md5",\n "buffer_peek",\n "buffer_poke",\n "buffer_read",\n "buffer_resize",\n "buffer_save",\n "buffer_save_async",\n "buffer_save_ext",\n "buffer_seek",\n "buffer_set_surface",\n "buffer_set_used_size",\n "buffer_sha1",\n "buffer_sizeof",\n "buffer_tell",\n "buffer_write",\n "call_cancel",\n "call_later",\n "camera_apply",\n "camera_copy_transforms",\n "camera_create",\n "camera_create_view",\n "camera_destroy",\n "camera_get_active",\n "camera_get_begin_script",\n "camera_get_default",\n "camera_get_end_script",\n "camera_get_proj_mat",\n "camera_get_update_script",\n "camera_get_view_angle",\n "camera_get_view_border_x",\n "camera_get_view_border_y",\n "camera_get_view_height",\n "camera_get_view_mat",\n "camera_get_view_speed_x",\n "camera_get_view_speed_y",\n "camera_get_view_target",\n "camera_get_view_width",\n "camera_get_view_x",\n "camera_get_view_y",\n "camera_set_begin_script",\n "camera_set_default",\n "camera_set_end_script",\n "camera_set_proj_mat",\n "camera_set_update_script",\n "camera_set_view_angle",\n "camera_set_view_border",\n "camera_set_view_mat",\n "camera_set_view_pos",\n "camera_set_view_size",\n "camera_set_view_speed",\n "camera_set_view_target",\n "ceil",\n "choose",\n "chr",\n "clamp",\n "clickable_add",\n "clickable_add_ext",\n "clickable_change",\n "clickable_change_ext",\n "clickable_delete",\n "clickable_exists",\n "clickable_set_style",\n "clipboard_get_text",\n "clipboard_has_text",\n "clipboard_set_text",\n "cloud_file_save",\n "cloud_string_save",\n "cloud_synchronise",\n "code_is_compiled",\n "collision_circle",\n "collision_circle_list",\n "collision_ellipse",\n "collision_ellipse_list",\n "collision_line",\n "collision_line_list",\n "collision_point",\n "collision_point_list",\n "collision_rectangle",\n "collision_rectangle_list",\n "color_get_blue",\n "color_get_green",\n "color_get_hue",\n "color_get_red",\n "color_get_saturation",\n "color_get_value",\n "colour_get_blue",\n "colour_get_green",\n "colour_get_hue",\n "colour_get_red",\n "colour_get_saturation",\n "colour_get_value",\n "cos",\n "darccos",\n "darcsin",\n "darctan",\n "darctan2",\n "date_compare_date",\n "date_compare_datetime",\n "date_compare_time",\n "date_create_datetime",\n "date_current_datetime",\n "date_date_of",\n "date_date_string",\n "date_datetime_string",\n "date_day_span",\n "date_days_in_month",\n "date_days_in_year",\n "date_get_day",\n "date_get_day_of_year",\n "date_get_hour",\n "date_get_hour_of_year",\n "date_get_minute",\n "date_get_minute_of_year",\n "date_get_month",\n "date_get_second",\n "date_get_second_of_year",\n "date_get_timezone",\n "date_get_week",\n "date_get_weekday",\n "date_get_year",\n "date_hour_span",\n "date_inc_day",\n "date_inc_hour",\n "date_inc_minute",\n "date_inc_month",\n "date_inc_second",\n "date_inc_week",\n "date_inc_year",\n "date_is_today",\n "date_leap_year",\n "date_minute_span",\n "date_month_span",\n "date_second_span",\n "date_set_timezone",\n "date_time_of",\n "date_time_string",\n "date_valid_datetime",\n "date_week_span",\n "date_year_span",\n "db_to_lin",\n "dbg_add_font_glyphs",\n "dbg_button",\n "dbg_checkbox",\n "dbg_color",\n "dbg_colour",\n "dbg_drop_down",\n "dbg_same_line",\n "dbg_section",\n "dbg_section_delete",\n "dbg_section_exists",\n "dbg_slider",\n "dbg_slider_int",\n "dbg_sprite",\n "dbg_text",\n "dbg_text_input",\n "dbg_view",\n "dbg_view_delete",\n "dbg_view_exists",\n "dbg_watch",\n "dcos",\n "debug_event",\n "debug_get_callstack",\n "degtorad",\n "device_get_tilt_x",\n "device_get_tilt_y",\n "device_get_tilt_z",\n "device_is_keypad_open",\n "device_mouse_check_button",\n "device_mouse_check_button_pressed",\n "device_mouse_check_button_released",\n "device_mouse_dbclick_enable",\n "device_mouse_raw_x",\n "device_mouse_raw_y",\n "device_mouse_x",\n "device_mouse_x_to_gui",\n "device_mouse_y",\n "device_mouse_y_to_gui",\n "directory_create",\n "directory_destroy",\n "directory_exists",\n "display_get_dpi_x",\n "display_get_dpi_y",\n "display_get_frequency",\n "display_get_gui_height",\n "display_get_gui_width",\n "display_get_height",\n "display_get_orientation",\n "display_get_sleep_margin",\n "display_get_timing_method",\n "display_get_width",\n "display_mouse_get_x",\n "display_mouse_get_y",\n "display_mouse_set",\n "display_reset",\n "display_set_gui_maximise",\n "display_set_gui_maximize",\n "display_set_gui_size",\n "display_set_sleep_margin",\n "display_set_timing_method",\n "display_set_ui_visibility",\n "distance_to_object",\n "distance_to_point",\n "dot_product",\n "dot_product_3d",\n "dot_product_3d_normalised",\n "dot_product_3d_normalized",\n "dot_product_normalised",\n "dot_product_normalized",\n "draw_arrow",\n "draw_button",\n "draw_circle",\n "draw_circle_color",\n "draw_circle_colour",\n "draw_clear",\n "draw_clear_alpha",\n "draw_ellipse",\n "draw_ellipse_color",\n "draw_ellipse_colour",\n "draw_enable_drawevent",\n "draw_enable_skeleton_blendmodes",\n "draw_enable_swf_aa",\n "draw_flush",\n "draw_get_alpha",\n "draw_get_color",\n "draw_get_colour",\n "draw_get_enable_skeleton_blendmodes",\n "draw_get_font",\n "draw_get_halign",\n "draw_get_lighting",\n "draw_get_swf_aa_level",\n "draw_get_valign",\n "draw_getpixel",\n "draw_getpixel_ext",\n "draw_healthbar",\n "draw_highscore",\n "draw_light_define_ambient",\n "draw_light_define_direction",\n "draw_light_define_point",\n "draw_light_enable",\n "draw_light_get",\n "draw_light_get_ambient",\n "draw_line",\n "draw_line_color",\n "draw_line_colour",\n "draw_line_width",\n "draw_line_width_color",\n "draw_line_width_colour",\n "draw_path",\n "draw_point",\n "draw_point_color",\n "draw_point_colour",\n "draw_primitive_begin",\n "draw_primitive_begin_texture",\n "draw_primitive_end",\n "draw_rectangle",\n "draw_rectangle_color",\n "draw_rectangle_colour",\n "draw_roundrect",\n "draw_roundrect_color",\n "draw_roundrect_color_ext",\n "draw_roundrect_colour",\n "draw_roundrect_colour_ext",\n "draw_roundrect_ext",\n "draw_self",\n "draw_set_alpha",\n "draw_set_circle_precision",\n "draw_set_color",\n "draw_set_colour",\n "draw_set_font",\n "draw_set_halign",\n "draw_set_lighting",\n "draw_set_swf_aa_level",\n "draw_set_valign",\n "draw_skeleton",\n "draw_skeleton_collision",\n "draw_skeleton_instance",\n "draw_skeleton_time",\n "draw_sprite",\n "draw_sprite_ext",\n "draw_sprite_general",\n "draw_sprite_part",\n "draw_sprite_part_ext",\n "draw_sprite_pos",\n "draw_sprite_stretched",\n "draw_sprite_stretched_ext",\n "draw_sprite_tiled",\n "draw_sprite_tiled_ext",\n "draw_surface",\n "draw_surface_ext",\n "draw_surface_general",\n "draw_surface_part",\n "draw_surface_part_ext",\n "draw_surface_stretched",\n "draw_surface_stretched_ext",\n "draw_surface_tiled",\n "draw_surface_tiled_ext",\n "draw_text",\n "draw_text_color",\n "draw_text_colour",\n "draw_text_ext",\n "draw_text_ext_color",\n "draw_text_ext_colour",\n "draw_text_ext_transformed",\n "draw_text_ext_transformed_color",\n "draw_text_ext_transformed_colour",\n "draw_text_transformed",\n "draw_text_transformed_color",\n "draw_text_transformed_colour",\n "draw_texture_flush",\n "draw_tile",\n "draw_tilemap",\n "draw_triangle",\n "draw_triangle_color",\n "draw_triangle_colour",\n "draw_vertex",\n "draw_vertex_color",\n "draw_vertex_colour",\n "draw_vertex_texture",\n "draw_vertex_texture_color",\n "draw_vertex_texture_colour",\n "ds_exists",\n "ds_grid_add",\n "ds_grid_add_disk",\n "ds_grid_add_grid_region",\n "ds_grid_add_region",\n "ds_grid_clear",\n "ds_grid_copy",\n "ds_grid_create",\n "ds_grid_destroy",\n "ds_grid_get",\n "ds_grid_get_disk_max",\n "ds_grid_get_disk_mean",\n "ds_grid_get_disk_min",\n "ds_grid_get_disk_sum",\n "ds_grid_get_max",\n "ds_grid_get_mean",\n "ds_grid_get_min",\n "ds_grid_get_sum",\n "ds_grid_height",\n "ds_grid_multiply",\n "ds_grid_multiply_disk",\n "ds_grid_multiply_grid_region",\n "ds_grid_multiply_region",\n "ds_grid_read",\n "ds_grid_resize",\n "ds_grid_set",\n "ds_grid_set_disk",\n "ds_grid_set_grid_region",\n "ds_grid_set_region",\n "ds_grid_shuffle",\n "ds_grid_sort",\n "ds_grid_to_mp_grid",\n "ds_grid_value_disk_exists",\n "ds_grid_value_disk_x",\n "ds_grid_value_disk_y",\n "ds_grid_value_exists",\n "ds_grid_value_x",\n "ds_grid_value_y",\n "ds_grid_width",\n "ds_grid_write",\n "ds_list_add",\n "ds_list_clear",\n "ds_list_copy",\n "ds_list_create",\n "ds_list_delete",\n "ds_list_destroy",\n "ds_list_empty",\n "ds_list_find_index",\n "ds_list_find_value",\n "ds_list_insert",\n "ds_list_is_list",\n "ds_list_is_map",\n "ds_list_mark_as_list",\n "ds_list_mark_as_map",\n "ds_list_read",\n "ds_list_replace",\n "ds_list_set",\n "ds_list_shuffle",\n "ds_list_size",\n "ds_list_sort",\n "ds_list_write",\n "ds_map_add",\n "ds_map_add_list",\n "ds_map_add_map",\n "ds_map_clear",\n "ds_map_copy",\n "ds_map_create",\n "ds_map_delete",\n "ds_map_destroy",\n "ds_map_empty",\n "ds_map_exists",\n "ds_map_find_first",\n "ds_map_find_last",\n "ds_map_find_next",\n "ds_map_find_previous",\n "ds_map_find_value",\n "ds_map_is_list",\n "ds_map_is_map",\n "ds_map_keys_to_array",\n "ds_map_read",\n "ds_map_replace",\n "ds_map_replace_list",\n "ds_map_replace_map",\n "ds_map_secure_load",\n "ds_map_secure_load_buffer",\n "ds_map_secure_save",\n "ds_map_secure_save_buffer",\n "ds_map_set",\n "ds_map_size",\n "ds_map_values_to_array",\n "ds_map_write",\n "ds_priority_add",\n "ds_priority_change_priority",\n "ds_priority_clear",\n "ds_priority_copy",\n "ds_priority_create",\n "ds_priority_delete_max",\n "ds_priority_delete_min",\n "ds_priority_delete_value",\n "ds_priority_destroy",\n "ds_priority_empty",\n "ds_priority_find_max",\n "ds_priority_find_min",\n "ds_priority_find_priority",\n "ds_priority_read",\n "ds_priority_size",\n "ds_priority_write",\n "ds_queue_clear",\n "ds_queue_copy",\n "ds_queue_create",\n "ds_queue_dequeue",\n "ds_queue_destroy",\n "ds_queue_empty",\n "ds_queue_enqueue",\n "ds_queue_head",\n "ds_queue_read",\n "ds_queue_size",\n "ds_queue_tail",\n "ds_queue_write",\n "ds_set_precision",\n "ds_stack_clear",\n "ds_stack_copy",\n "ds_stack_create",\n "ds_stack_destroy",\n "ds_stack_empty",\n "ds_stack_pop",\n "ds_stack_push",\n "ds_stack_read",\n "ds_stack_size",\n "ds_stack_top",\n "ds_stack_write",\n "dsin",\n "dtan",\n "effect_clear",\n "effect_create_above",\n "effect_create_below",\n "effect_create_depth",\n "effect_create_layer",\n "environment_get_variable",\n "event_inherited",\n "event_perform",\n "event_perform_async",\n "event_perform_object",\n "event_user",\n "exception_unhandled_handler",\n "exp",\n "extension_exists",\n "extension_get_option_count",\n "extension_get_option_names",\n "extension_get_option_value",\n "extension_get_options",\n "extension_get_version",\n "external_call",\n "external_define",\n "external_free",\n "file_attributes",\n "file_bin_close",\n "file_bin_open",\n "file_bin_position",\n "file_bin_read_byte",\n "file_bin_rewrite",\n "file_bin_seek",\n "file_bin_size",\n "file_bin_write_byte",\n "file_copy",\n "file_delete",\n "file_exists",\n "file_find_close",\n "file_find_first",\n "file_find_next",\n "file_rename",\n "file_text_close",\n "file_text_eof",\n "file_text_eoln",\n "file_text_open_append",\n "file_text_open_from_string",\n "file_text_open_read",\n "file_text_open_write",\n "file_text_read_real",\n "file_text_read_string",\n "file_text_readln",\n "file_text_write_real",\n "file_text_write_string",\n "file_text_writeln",\n "filename_change_ext",\n "filename_dir",\n "filename_drive",\n "filename_ext",\n "filename_name",\n "filename_path",\n "floor",\n "font_add",\n "font_add_enable_aa",\n "font_add_get_enable_aa",\n "font_add_sprite",\n "font_add_sprite_ext",\n "font_cache_glyph",\n "font_delete",\n "font_enable_effects",\n "font_enable_sdf",\n "font_exists",\n "font_get_bold",\n "font_get_first",\n "font_get_fontname",\n "font_get_info",\n "font_get_italic",\n "font_get_last",\n "font_get_name",\n "font_get_sdf_enabled",\n "font_get_sdf_spread",\n "font_get_size",\n "font_get_texture",\n "font_get_uvs",\n "font_replace_sprite",\n "font_replace_sprite_ext",\n "font_sdf_spread",\n "font_set_cache_size",\n "frac",\n "fx_create",\n "fx_get_name",\n "fx_get_parameter",\n "fx_get_parameter_names",\n "fx_get_parameters",\n "fx_get_single_layer",\n "fx_set_parameter",\n "fx_set_parameters",\n "fx_set_single_layer",\n "game_change",\n "game_end",\n "game_get_speed",\n "game_load",\n "game_load_buffer",\n "game_restart",\n "game_save",\n "game_save_buffer",\n "game_set_speed",\n "gamepad_axis_count",\n "gamepad_axis_value",\n "gamepad_button_check",\n "gamepad_button_check_pressed",\n "gamepad_button_check_released",\n "gamepad_button_count",\n "gamepad_button_value",\n "gamepad_get_axis_deadzone",\n "gamepad_get_button_threshold",\n "gamepad_get_description",\n "gamepad_get_device_count",\n "gamepad_get_guid",\n "gamepad_get_mapping",\n "gamepad_get_option",\n "gamepad_hat_count",\n "gamepad_hat_value",\n "gamepad_is_connected",\n "gamepad_is_supported",\n "gamepad_remove_mapping",\n "gamepad_set_axis_deadzone",\n "gamepad_set_button_threshold",\n "gamepad_set_color",\n "gamepad_set_colour",\n "gamepad_set_option",\n "gamepad_set_vibration",\n "gamepad_test_mapping",\n "gc_collect",\n "gc_enable",\n "gc_get_stats",\n "gc_get_target_frame_time",\n "gc_is_enabled",\n "gc_target_frame_time",\n "gesture_double_tap_distance",\n "gesture_double_tap_time",\n "gesture_drag_distance",\n "gesture_drag_time",\n "gesture_flick_speed",\n "gesture_get_double_tap_distance",\n "gesture_get_double_tap_time",\n "gesture_get_drag_distance",\n "gesture_get_drag_time",\n "gesture_get_flick_speed",\n "gesture_get_pinch_angle_away",\n "gesture_get_pinch_angle_towards",\n "gesture_get_pinch_distance",\n "gesture_get_rotate_angle",\n "gesture_get_rotate_time",\n "gesture_get_tap_count",\n "gesture_pinch_angle_away",\n "gesture_pinch_angle_towards",\n "gesture_pinch_distance",\n "gesture_rotate_angle",\n "gesture_rotate_time",\n "gesture_tap_count",\n "get_integer",\n "get_integer_async",\n "get_login_async",\n "get_open_filename",\n "get_open_filename_ext",\n "get_save_filename",\n "get_save_filename_ext",\n "get_string",\n "get_string_async",\n "get_timer",\n "gif_add_surface",\n "gif_open",\n "gif_save",\n "gif_save_buffer",\n "gml_pragma",\n "gml_release_mode",\n "gpu_get_alphatestenable",\n "gpu_get_alphatestref",\n "gpu_get_blendenable",\n "gpu_get_blendmode",\n "gpu_get_blendmode_dest",\n "gpu_get_blendmode_destalpha",\n "gpu_get_blendmode_ext",\n "gpu_get_blendmode_ext_sepalpha",\n "gpu_get_blendmode_src",\n "gpu_get_blendmode_srcalpha",\n "gpu_get_colorwriteenable",\n "gpu_get_colourwriteenable",\n "gpu_get_cullmode",\n "gpu_get_depth",\n "gpu_get_fog",\n "gpu_get_state",\n "gpu_get_tex_filter",\n "gpu_get_tex_filter_ext",\n "gpu_get_tex_max_aniso",\n "gpu_get_tex_max_aniso_ext",\n "gpu_get_tex_max_mip",\n "gpu_get_tex_max_mip_ext",\n "gpu_get_tex_min_mip",\n "gpu_get_tex_min_mip_ext",\n "gpu_get_tex_mip_bias",\n "gpu_get_tex_mip_bias_ext",\n "gpu_get_tex_mip_enable",\n "gpu_get_tex_mip_enable_ext",\n "gpu_get_tex_mip_filter",\n "gpu_get_tex_mip_filter_ext",\n "gpu_get_tex_repeat",\n "gpu_get_tex_repeat_ext",\n "gpu_get_texfilter",\n "gpu_get_texfilter_ext",\n "gpu_get_texrepeat",\n "gpu_get_texrepeat_ext",\n "gpu_get_zfunc",\n "gpu_get_ztestenable",\n "gpu_get_zwriteenable",\n "gpu_pop_state",\n "gpu_push_state",\n "gpu_set_alphatestenable",\n "gpu_set_alphatestref",\n "gpu_set_blendenable",\n "gpu_set_blendmode",\n "gpu_set_blendmode_ext",\n "gpu_set_blendmode_ext_sepalpha",\n "gpu_set_colorwriteenable",\n "gpu_set_colourwriteenable",\n "gpu_set_cullmode",\n "gpu_set_depth",\n "gpu_set_fog",\n "gpu_set_state",\n "gpu_set_tex_filter",\n "gpu_set_tex_filter_ext",\n "gpu_set_tex_max_aniso",\n "gpu_set_tex_max_aniso_ext",\n "gpu_set_tex_max_mip",\n "gpu_set_tex_max_mip_ext",\n "gpu_set_tex_min_mip",\n "gpu_set_tex_min_mip_ext",\n "gpu_set_tex_mip_bias",\n "gpu_set_tex_mip_bias_ext",\n "gpu_set_tex_mip_enable",\n "gpu_set_tex_mip_enable_ext",\n "gpu_set_tex_mip_filter",\n "gpu_set_tex_mip_filter_ext",\n "gpu_set_tex_repeat",\n "gpu_set_tex_repeat_ext",\n "gpu_set_texfilter",\n "gpu_set_texfilter_ext",\n "gpu_set_texrepeat",\n "gpu_set_texrepeat_ext",\n "gpu_set_zfunc",\n "gpu_set_ztestenable",\n "gpu_set_zwriteenable",\n "handle_parse",\n "highscore_add",\n "highscore_clear",\n "highscore_name",\n "highscore_value",\n "http_get",\n "http_get_file",\n "http_get_request_crossorigin",\n "http_post_string",\n "http_request",\n "http_set_request_crossorigin",\n "iap_acquire",\n "iap_activate",\n "iap_consume",\n "iap_enumerate_products",\n "iap_product_details",\n "iap_purchase_details",\n "iap_restore_all",\n "iap_status",\n "ini_close",\n "ini_key_delete",\n "ini_key_exists",\n "ini_open",\n "ini_open_from_string",\n "ini_read_real",\n "ini_read_string",\n "ini_section_delete",\n "ini_section_exists",\n "ini_write_real",\n "ini_write_string",\n "instance_activate_all",\n "instance_activate_layer",\n "instance_activate_object",\n "instance_activate_region",\n "instance_change",\n "instance_copy",\n "instance_create_depth",\n "instance_create_layer",\n "instance_deactivate_all",\n "instance_deactivate_layer",\n "instance_deactivate_object",\n "instance_deactivate_region",\n "instance_destroy",\n "instance_exists",\n "instance_find",\n "instance_furthest",\n "instance_id_get",\n "instance_nearest",\n "instance_number",\n "instance_place",\n "instance_place_list",\n "instance_position",\n "instance_position_list",\n "instanceof",\n "int64",\n "io_clear",\n "irandom",\n "irandom_range",\n "is_array",\n "is_bool",\n "is_callable",\n "is_debug_overlay_open",\n "is_handle",\n "is_infinity",\n "is_instanceof",\n "is_int32",\n "is_int64",\n "is_keyboard_used_debug_overlay",\n "is_method",\n "is_mouse_over_debug_overlay",\n "is_nan",\n "is_numeric",\n "is_ptr",\n "is_real",\n "is_string",\n "is_struct",\n "is_undefined",\n "json_decode",\n "json_encode",\n "json_parse",\n "json_stringify",\n "keyboard_check",\n "keyboard_check_direct",\n "keyboard_check_pressed",\n "keyboard_check_released",\n "keyboard_clear",\n "keyboard_get_map",\n "keyboard_get_numlock",\n "keyboard_key_press",\n "keyboard_key_release",\n "keyboard_set_map",\n "keyboard_set_numlock",\n "keyboard_unset_map",\n "keyboard_virtual_height",\n "keyboard_virtual_hide",\n "keyboard_virtual_show",\n "keyboard_virtual_status",\n "layer_add_instance",\n "layer_background_alpha",\n "layer_background_blend",\n "layer_background_change",\n "layer_background_create",\n "layer_background_destroy",\n "layer_background_exists",\n "layer_background_get_alpha",\n "layer_background_get_blend",\n "layer_background_get_htiled",\n "layer_background_get_id",\n "layer_background_get_index",\n "layer_background_get_speed",\n "layer_background_get_sprite",\n "layer_background_get_stretch",\n "layer_background_get_visible",\n "layer_background_get_vtiled",\n "layer_background_get_xscale",\n "layer_background_get_yscale",\n "layer_background_htiled",\n "layer_background_index",\n "layer_background_speed",\n "layer_background_sprite",\n "layer_background_stretch",\n "layer_background_visible",\n "layer_background_vtiled",\n "layer_background_xscale",\n "layer_background_yscale",\n "layer_clear_fx",\n "layer_create",\n "layer_depth",\n "layer_destroy",\n "layer_destroy_instances",\n "layer_element_move",\n "layer_enable_fx",\n "layer_exists",\n "layer_force_draw_depth",\n "layer_fx_is_enabled",\n "layer_get_all",\n "layer_get_all_elements",\n "layer_get_depth",\n "layer_get_element_layer",\n "layer_get_element_type",\n "layer_get_forced_depth",\n "layer_get_fx",\n "layer_get_hspeed",\n "layer_get_id",\n "layer_get_id_at_depth",\n "layer_get_name",\n "layer_get_script_begin",\n "layer_get_script_end",\n "layer_get_shader",\n "layer_get_target_room",\n "layer_get_visible",\n "layer_get_vspeed",\n "layer_get_x",\n "layer_get_y",\n "layer_has_instance",\n "layer_hspeed",\n "layer_instance_get_instance",\n "layer_is_draw_depth_forced",\n "layer_reset_target_room",\n "layer_script_begin",\n "layer_script_end",\n "layer_sequence_angle",\n "layer_sequence_create",\n "layer_sequence_destroy",\n "layer_sequence_exists",\n "layer_sequence_get_angle",\n "layer_sequence_get_headdir",\n "layer_sequence_get_headpos",\n "layer_sequence_get_instance",\n "layer_sequence_get_length",\n "layer_sequence_get_sequence",\n "layer_sequence_get_speedscale",\n "layer_sequence_get_x",\n "layer_sequence_get_xscale",\n "layer_sequence_get_y",\n "layer_sequence_get_yscale",\n "layer_sequence_headdir",\n "layer_sequence_headpos",\n "layer_sequence_is_finished",\n "layer_sequence_is_paused",\n "layer_sequence_pause",\n "layer_sequence_play",\n "layer_sequence_speedscale",\n "layer_sequence_x",\n "layer_sequence_xscale",\n "layer_sequence_y",\n "layer_sequence_yscale",\n "layer_set_fx",\n "layer_set_target_room",\n "layer_set_visible",\n "layer_shader",\n "layer_sprite_alpha",\n "layer_sprite_angle",\n "layer_sprite_blend",\n "layer_sprite_change",\n "layer_sprite_create",\n "layer_sprite_destroy",\n "layer_sprite_exists",\n "layer_sprite_get_alpha",\n "layer_sprite_get_angle",\n "layer_sprite_get_blend",\n "layer_sprite_get_id",\n "layer_sprite_get_index",\n "layer_sprite_get_speed",\n "layer_sprite_get_sprite",\n "layer_sprite_get_x",\n "layer_sprite_get_xscale",\n "layer_sprite_get_y",\n "layer_sprite_get_yscale",\n "layer_sprite_index",\n "layer_sprite_speed",\n "layer_sprite_x",\n "layer_sprite_xscale",\n "layer_sprite_y",\n "layer_sprite_yscale",\n "layer_tile_alpha",\n "layer_tile_blend",\n "layer_tile_change",\n "layer_tile_create",\n "layer_tile_destroy",\n "layer_tile_exists",\n "layer_tile_get_alpha",\n "layer_tile_get_blend",\n "layer_tile_get_region",\n "layer_tile_get_sprite",\n "layer_tile_get_visible",\n "layer_tile_get_x",\n "layer_tile_get_xscale",\n "layer_tile_get_y",\n "layer_tile_get_yscale",\n "layer_tile_region",\n "layer_tile_visible",\n "layer_tile_x",\n "layer_tile_xscale",\n "layer_tile_y",\n "layer_tile_yscale",\n "layer_tilemap_create",\n "layer_tilemap_destroy",\n "layer_tilemap_exists",\n "layer_tilemap_get_id",\n "layer_vspeed",\n "layer_x",\n "layer_y",\n "lengthdir_x",\n "lengthdir_y",\n "lerp",\n "lin_to_db",\n "ln",\n "load_csv",\n "log10",\n "log2",\n "logn",\n "make_color_hsv",\n "make_color_rgb",\n "make_colour_hsv",\n "make_colour_rgb",\n "math_get_epsilon",\n "math_set_epsilon",\n "matrix_build",\n "matrix_build_identity",\n "matrix_build_lookat",\n "matrix_build_projection_ortho",\n "matrix_build_projection_perspective",\n "matrix_build_projection_perspective_fov",\n "matrix_get",\n "matrix_multiply",\n "matrix_set",\n "matrix_stack_clear",\n "matrix_stack_is_empty",\n "matrix_stack_pop",\n "matrix_stack_push",\n "matrix_stack_set",\n "matrix_stack_top",\n "matrix_transform_vertex",\n "max",\n "md5_file",\n "md5_string_unicode",\n "md5_string_utf8",\n "mean",\n "median",\n "merge_color",\n "merge_colour",\n "method",\n "method_call",\n "method_get_index",\n "method_get_self",\n "min",\n "motion_add",\n "motion_set",\n "mouse_check_button",\n "mouse_check_button_pressed",\n "mouse_check_button_released",\n "mouse_clear",\n "mouse_wheel_down",\n "mouse_wheel_up",\n "move_and_collide",\n "move_bounce_all",\n "move_bounce_solid",\n "move_contact_all",\n "move_contact_solid",\n "move_outside_all",\n "move_outside_solid",\n "move_random",\n "move_snap",\n "move_towards_point",\n "move_wrap",\n "mp_grid_add_cell",\n "mp_grid_add_instances",\n "mp_grid_add_rectangle",\n "mp_grid_clear_all",\n "mp_grid_clear_cell",\n "mp_grid_clear_rectangle",\n "mp_grid_create",\n "mp_grid_destroy",\n "mp_grid_draw",\n "mp_grid_get_cell",\n "mp_grid_path",\n "mp_grid_to_ds_grid",\n "mp_linear_path",\n "mp_linear_path_object",\n "mp_linear_step",\n "mp_linear_step_object",\n "mp_potential_path",\n "mp_potential_path_object",\n "mp_potential_settings",\n "mp_potential_step",\n "mp_potential_step_object",\n "nameof",\n "network_connect",\n "network_connect_async",\n "network_connect_raw",\n "network_connect_raw_async",\n "network_create_server",\n "network_create_server_raw",\n "network_create_socket",\n "network_create_socket_ext",\n "network_destroy",\n "network_resolve",\n "network_send_broadcast",\n "network_send_packet",\n "network_send_raw",\n "network_send_udp",\n "network_send_udp_raw",\n "network_set_config",\n "network_set_timeout",\n "object_exists",\n "object_get_mask",\n "object_get_name",\n "object_get_parent",\n "object_get_persistent",\n "object_get_physics",\n "object_get_solid",\n "object_get_sprite",\n "object_get_visible",\n "object_is_ancestor",\n "object_set_mask",\n "object_set_persistent",\n "object_set_solid",\n "object_set_sprite",\n "object_set_visible",\n "ord",\n "os_check_permission",\n "os_get_config",\n "os_get_info",\n "os_get_language",\n "os_get_region",\n "os_is_network_connected",\n "os_is_paused",\n "os_lock_orientation",\n "os_powersave_enable",\n "os_request_permission",\n "os_set_orientation_lock",\n "parameter_count",\n "parameter_string",\n "part_emitter_burst",\n "part_emitter_clear",\n "part_emitter_create",\n "part_emitter_delay",\n "part_emitter_destroy",\n "part_emitter_destroy_all",\n "part_emitter_enable",\n "part_emitter_exists",\n "part_emitter_interval",\n "part_emitter_region",\n "part_emitter_relative",\n "part_emitter_stream",\n "part_particles_burst",\n "part_particles_clear",\n "part_particles_count",\n "part_particles_create",\n "part_particles_create_color",\n "part_particles_create_colour",\n "part_system_angle",\n "part_system_automatic_draw",\n "part_system_automatic_update",\n "part_system_clear",\n "part_system_color",\n "part_system_colour",\n "part_system_create",\n "part_system_create_layer",\n "part_system_depth",\n "part_system_destroy",\n "part_system_draw_order",\n "part_system_drawit",\n "part_system_exists",\n "part_system_get_info",\n "part_system_get_layer",\n "part_system_global_space",\n "part_system_layer",\n "part_system_position",\n "part_system_update",\n "part_type_alpha1",\n "part_type_alpha2",\n "part_type_alpha3",\n "part_type_blend",\n "part_type_clear",\n "part_type_color1",\n "part_type_color2",\n "part_type_color3",\n "part_type_color_hsv",\n "part_type_color_mix",\n "part_type_color_rgb",\n "part_type_colour1",\n "part_type_colour2",\n "part_type_colour3",\n "part_type_colour_hsv",\n "part_type_colour_mix",\n "part_type_colour_rgb",\n "part_type_create",\n "part_type_death",\n "part_type_destroy",\n "part_type_direction",\n "part_type_exists",\n "part_type_gravity",\n "part_type_life",\n "part_type_orientation",\n "part_type_scale",\n "part_type_shape",\n "part_type_size",\n "part_type_size_x",\n "part_type_size_y",\n "part_type_speed",\n "part_type_sprite",\n "part_type_step",\n "part_type_subimage",\n "particle_exists",\n "particle_get_info",\n "path_add",\n "path_add_point",\n "path_append",\n "path_assign",\n "path_change_point",\n "path_clear_points",\n "path_delete",\n "path_delete_point",\n "path_duplicate",\n "path_end",\n "path_exists",\n "path_flip",\n "path_get_closed",\n "path_get_kind",\n "path_get_length",\n "path_get_name",\n "path_get_number",\n "path_get_point_speed",\n "path_get_point_x",\n "path_get_point_y",\n "path_get_precision",\n "path_get_speed",\n "path_get_x",\n "path_get_y",\n "path_insert_point",\n "path_mirror",\n "path_rescale",\n "path_reverse",\n "path_rotate",\n "path_set_closed",\n "path_set_kind",\n "path_set_precision",\n "path_shift",\n "path_start",\n "physics_apply_angular_impulse",\n "physics_apply_force",\n "physics_apply_impulse",\n "physics_apply_local_force",\n "physics_apply_local_impulse",\n "physics_apply_torque",\n "physics_draw_debug",\n "physics_fixture_add_point",\n "physics_fixture_bind",\n "physics_fixture_bind_ext",\n "physics_fixture_create",\n "physics_fixture_delete",\n "physics_fixture_set_angular_damping",\n "physics_fixture_set_awake",\n "physics_fixture_set_box_shape",\n "physics_fixture_set_chain_shape",\n "physics_fixture_set_circle_shape",\n "physics_fixture_set_collision_group",\n "physics_fixture_set_density",\n "physics_fixture_set_edge_shape",\n "physics_fixture_set_friction",\n "physics_fixture_set_kinematic",\n "physics_fixture_set_linear_damping",\n "physics_fixture_set_polygon_shape",\n "physics_fixture_set_restitution",\n "physics_fixture_set_sensor",\n "physics_get_density",\n "physics_get_friction",\n "physics_get_restitution",\n "physics_joint_delete",\n "physics_joint_distance_create",\n "physics_joint_enable_motor",\n "physics_joint_friction_create",\n "physics_joint_gear_create",\n "physics_joint_get_value",\n "physics_joint_prismatic_create",\n "physics_joint_pulley_create",\n "physics_joint_revolute_create",\n "physics_joint_rope_create",\n "physics_joint_set_value",\n "physics_joint_weld_create",\n "physics_joint_wheel_create",\n "physics_mass_properties",\n "physics_particle_count",\n "physics_particle_create",\n "physics_particle_delete",\n "physics_particle_delete_region_box",\n "physics_particle_delete_region_circle",\n "physics_particle_delete_region_poly",\n "physics_particle_draw",\n "physics_particle_draw_ext",\n "physics_particle_get_damping",\n "physics_particle_get_data",\n "physics_particle_get_data_particle",\n "physics_particle_get_density",\n "physics_particle_get_gravity_scale",\n "physics_particle_get_group_flags",\n "physics_particle_get_max_count",\n "physics_particle_get_radius",\n "physics_particle_group_add_point",\n "physics_particle_group_begin",\n "physics_particle_group_box",\n "physics_particle_group_circle",\n "physics_particle_group_count",\n "physics_particle_group_delete",\n "physics_particle_group_end",\n "physics_particle_group_get_ang_vel",\n "physics_particle_group_get_angle",\n "physics_particle_group_get_centre_x",\n "physics_particle_group_get_centre_y",\n "physics_particle_group_get_data",\n "physics_particle_group_get_inertia",\n "physics_particle_group_get_mass",\n "physics_particle_group_get_vel_x",\n "physics_particle_group_get_vel_y",\n "physics_particle_group_get_x",\n "physics_particle_group_get_y",\n "physics_particle_group_join",\n "physics_particle_group_polygon",\n "physics_particle_set_category_flags",\n "physics_particle_set_damping",\n "physics_particle_set_density",\n "physics_particle_set_flags",\n "physics_particle_set_gravity_scale",\n "physics_particle_set_group_flags",\n "physics_particle_set_max_count",\n "physics_particle_set_radius",\n "physics_pause_enable",\n "physics_remove_fixture",\n "physics_set_density",\n "physics_set_friction",\n "physics_set_restitution",\n "physics_test_overlap",\n "physics_world_create",\n "physics_world_draw_debug",\n "physics_world_gravity",\n "physics_world_update_iterations",\n "physics_world_update_speed",\n "place_empty",\n "place_free",\n "place_meeting",\n "place_snapped",\n "point_direction",\n "point_distance",\n "point_distance_3d",\n "point_in_circle",\n "point_in_rectangle",\n "point_in_triangle",\n "position_change",\n "position_destroy",\n "position_empty",\n "position_meeting",\n "power",\n "ptr",\n "radtodeg",\n "random",\n "random_get_seed",\n "random_range",\n "random_set_seed",\n "randomise",\n "randomize",\n "real",\n "rectangle_in_circle",\n "rectangle_in_rectangle",\n "rectangle_in_triangle",\n "ref_create",\n "rollback_chat",\n "rollback_create_game",\n "rollback_define_extra_network_latency",\n "rollback_define_input",\n "rollback_define_input_frame_delay",\n "rollback_define_mock_input",\n "rollback_define_player",\n "rollback_display_events",\n "rollback_get_info",\n "rollback_get_input",\n "rollback_get_player_prefs",\n "rollback_join_game",\n "rollback_leave_game",\n "rollback_set_player_prefs",\n "rollback_start_game",\n "rollback_sync_on_frame",\n "rollback_use_late_join",\n "rollback_use_manual_start",\n "rollback_use_player_prefs",\n "rollback_use_random_input",\n "room_add",\n "room_assign",\n "room_duplicate",\n "room_exists",\n "room_get_camera",\n "room_get_info",\n "room_get_name",\n "room_get_viewport",\n "room_goto",\n "room_goto_next",\n "room_goto_previous",\n "room_instance_add",\n "room_instance_clear",\n "room_next",\n "room_previous",\n "room_restart",\n "room_set_camera",\n "room_set_height",\n "room_set_persistent",\n "room_set_view_enabled",\n "room_set_viewport",\n "room_set_width",\n "round",\n "scheduler_resolution_get",\n "scheduler_resolution_set",\n "screen_save",\n "screen_save_part",\n "script_execute",\n "script_execute_ext",\n "script_exists",\n "script_get_name",\n "sequence_create",\n "sequence_destroy",\n "sequence_exists",\n "sequence_get",\n "sequence_get_objects",\n "sequence_instance_override_object",\n "sequence_keyframe_new",\n "sequence_keyframedata_new",\n "sequence_track_new",\n "sha1_file",\n "sha1_string_unicode",\n "sha1_string_utf8",\n "shader_current",\n "shader_enable_corner_id",\n "shader_get_name",\n "shader_get_sampler_index",\n "shader_get_uniform",\n "shader_is_compiled",\n "shader_reset",\n "shader_set",\n "shader_set_uniform_f",\n "shader_set_uniform_f_array",\n "shader_set_uniform_f_buffer",\n "shader_set_uniform_i",\n "shader_set_uniform_i_array",\n "shader_set_uniform_matrix",\n "shader_set_uniform_matrix_array",\n "shaders_are_supported",\n "shop_leave_rating",\n "show_debug_message",\n "show_debug_message_ext",\n "show_debug_overlay",\n "show_error",\n "show_message",\n "show_message_async",\n "show_question",\n "show_question_async",\n "sign",\n "sin",\n "skeleton_animation_clear",\n "skeleton_animation_get",\n "skeleton_animation_get_duration",\n "skeleton_animation_get_event_frames",\n "skeleton_animation_get_ext",\n "skeleton_animation_get_frame",\n "skeleton_animation_get_frames",\n "skeleton_animation_get_position",\n "skeleton_animation_is_finished",\n "skeleton_animation_is_looping",\n "skeleton_animation_list",\n "skeleton_animation_mix",\n "skeleton_animation_set",\n "skeleton_animation_set_ext",\n "skeleton_animation_set_frame",\n "skeleton_animation_set_position",\n "skeleton_attachment_create",\n "skeleton_attachment_create_color",\n "skeleton_attachment_create_colour",\n "skeleton_attachment_destroy",\n "skeleton_attachment_exists",\n "skeleton_attachment_get",\n "skeleton_attachment_replace",\n "skeleton_attachment_replace_color",\n "skeleton_attachment_replace_colour",\n "skeleton_attachment_set",\n "skeleton_bone_data_get",\n "skeleton_bone_data_set",\n "skeleton_bone_list",\n "skeleton_bone_state_get",\n "skeleton_bone_state_set",\n "skeleton_collision_draw_set",\n "skeleton_find_slot",\n "skeleton_get_bounds",\n "skeleton_get_minmax",\n "skeleton_get_num_bounds",\n "skeleton_skin_create",\n "skeleton_skin_get",\n "skeleton_skin_list",\n "skeleton_skin_set",\n "skeleton_slot_alpha_get",\n "skeleton_slot_color_get",\n "skeleton_slot_color_set",\n "skeleton_slot_colour_get",\n "skeleton_slot_colour_set",\n "skeleton_slot_data",\n "skeleton_slot_data_instance",\n "skeleton_slot_list",\n "sprite_add",\n "sprite_add_ext",\n "sprite_add_from_surface",\n "sprite_assign",\n "sprite_collision_mask",\n "sprite_create_from_surface",\n "sprite_delete",\n "sprite_duplicate",\n "sprite_exists",\n "sprite_flush",\n "sprite_flush_multi",\n "sprite_get_bbox_bottom",\n "sprite_get_bbox_left",\n "sprite_get_bbox_mode",\n "sprite_get_bbox_right",\n "sprite_get_bbox_top",\n "sprite_get_height",\n "sprite_get_info",\n "sprite_get_name",\n "sprite_get_nineslice",\n "sprite_get_number",\n "sprite_get_speed",\n "sprite_get_speed_type",\n "sprite_get_texture",\n "sprite_get_tpe",\n "sprite_get_uvs",\n "sprite_get_width",\n "sprite_get_xoffset",\n "sprite_get_yoffset",\n "sprite_merge",\n "sprite_nineslice_create",\n "sprite_prefetch",\n "sprite_prefetch_multi",\n "sprite_replace",\n "sprite_save",\n "sprite_save_strip",\n "sprite_set_alpha_from_sprite",\n "sprite_set_bbox",\n "sprite_set_bbox_mode",\n "sprite_set_cache_size",\n "sprite_set_cache_size_ext",\n "sprite_set_nineslice",\n "sprite_set_offset",\n "sprite_set_speed",\n "sqr",\n "sqrt",\n "static_get",\n "static_set",\n "string",\n "string_byte_at",\n "string_byte_length",\n "string_char_at",\n "string_concat",\n "string_concat_ext",\n "string_copy",\n "string_count",\n "string_delete",\n "string_digits",\n "string_ends_with",\n "string_ext",\n "string_foreach",\n "string_format",\n "string_hash_to_newline",\n "string_height",\n "string_height_ext",\n "string_insert",\n "string_join",\n "string_join_ext",\n "string_last_pos",\n "string_last_pos_ext",\n "string_length",\n "string_letters",\n "string_lettersdigits",\n "string_lower",\n "string_ord_at",\n "string_pos",\n "string_pos_ext",\n "string_repeat",\n "string_replace",\n "string_replace_all",\n "string_set_byte_at",\n "string_split",\n "string_split_ext",\n "string_starts_with",\n "string_trim",\n "string_trim_end",\n "string_trim_start",\n "string_upper",\n "string_width",\n "string_width_ext",\n "struct_exists",\n "struct_foreach",\n "struct_get",\n "struct_get_from_hash",\n "struct_get_names",\n "struct_names_count",\n "struct_remove",\n "struct_set",\n "struct_set_from_hash",\n "surface_copy",\n "surface_copy_part",\n "surface_create",\n "surface_create_ext",\n "surface_depth_disable",\n "surface_exists",\n "surface_format_is_supported",\n "surface_free",\n "surface_get_depth_disable",\n "surface_get_format",\n "surface_get_height",\n "surface_get_target",\n "surface_get_target_ext",\n "surface_get_texture",\n "surface_get_width",\n "surface_getpixel",\n "surface_getpixel_ext",\n "surface_reset_target",\n "surface_resize",\n "surface_save",\n "surface_save_part",\n "surface_set_target",\n "surface_set_target_ext",\n "tag_get_asset_ids",\n "tag_get_assets",\n "tan",\n "texture_debug_messages",\n "texture_flush",\n "texture_get_height",\n "texture_get_texel_height",\n "texture_get_texel_width",\n "texture_get_uvs",\n "texture_get_width",\n "texture_global_scale",\n "texture_is_ready",\n "texture_prefetch",\n "texture_set_stage",\n "texturegroup_get_fonts",\n "texturegroup_get_names",\n "texturegroup_get_sprites",\n "texturegroup_get_status",\n "texturegroup_get_textures",\n "texturegroup_get_tilesets",\n "texturegroup_load",\n "texturegroup_set_mode",\n "texturegroup_unload",\n "tile_get_empty",\n "tile_get_flip",\n "tile_get_index",\n "tile_get_mirror",\n "tile_get_rotate",\n "tile_set_empty",\n "tile_set_flip",\n "tile_set_index",\n "tile_set_mirror",\n "tile_set_rotate",\n "tilemap_clear",\n "tilemap_get",\n "tilemap_get_at_pixel",\n "tilemap_get_cell_x_at_pixel",\n "tilemap_get_cell_y_at_pixel",\n "tilemap_get_frame",\n "tilemap_get_global_mask",\n "tilemap_get_height",\n "tilemap_get_mask",\n "tilemap_get_tile_height",\n "tilemap_get_tile_width",\n "tilemap_get_tileset",\n "tilemap_get_width",\n "tilemap_get_x",\n "tilemap_get_y",\n "tilemap_set",\n "tilemap_set_at_pixel",\n "tilemap_set_global_mask",\n "tilemap_set_height",\n "tilemap_set_mask",\n "tilemap_set_width",\n "tilemap_tileset",\n "tilemap_x",\n "tilemap_y",\n "tileset_get_info",\n "tileset_get_name",\n "tileset_get_texture",\n "tileset_get_uvs",\n "time_bpm_to_seconds",\n "time_seconds_to_bpm",\n "time_source_create",\n "time_source_destroy",\n "time_source_exists",\n "time_source_get_children",\n "time_source_get_parent",\n "time_source_get_period",\n "time_source_get_reps_completed",\n "time_source_get_reps_remaining",\n "time_source_get_state",\n "time_source_get_time_remaining",\n "time_source_get_units",\n "time_source_pause",\n "time_source_reconfigure",\n "time_source_reset",\n "time_source_resume",\n "time_source_start",\n "time_source_stop",\n "timeline_add",\n "timeline_clear",\n "timeline_delete",\n "timeline_exists",\n "timeline_get_name",\n "timeline_max_moment",\n "timeline_moment_add_script",\n "timeline_moment_clear",\n "timeline_size",\n "typeof",\n "url_get_domain",\n "url_open",\n "url_open_ext",\n "url_open_full",\n "uwp_device_touchscreen_available",\n "uwp_livetile_badge_clear",\n "uwp_livetile_badge_notification",\n "uwp_livetile_notification_begin",\n "uwp_livetile_notification_end",\n "uwp_livetile_notification_expiry",\n "uwp_livetile_notification_image_add",\n "uwp_livetile_notification_secondary_begin",\n "uwp_livetile_notification_tag",\n "uwp_livetile_notification_template_add",\n "uwp_livetile_notification_text_add",\n "uwp_livetile_queue_enable",\n "uwp_livetile_tile_clear",\n "uwp_secondarytile_badge_clear",\n "uwp_secondarytile_badge_notification",\n "uwp_secondarytile_delete",\n "uwp_secondarytile_pin",\n "uwp_secondarytile_tile_clear",\n "variable_clone",\n "variable_get_hash",\n "variable_global_exists",\n "variable_global_get",\n "variable_global_set",\n "variable_instance_exists",\n "variable_instance_get",\n "variable_instance_get_names",\n "variable_instance_names_count",\n "variable_instance_set",\n "variable_struct_exists",\n "variable_struct_get",\n "variable_struct_get_names",\n "variable_struct_names_count",\n "variable_struct_remove",\n "variable_struct_set",\n "vertex_argb",\n "vertex_begin",\n "vertex_color",\n "vertex_colour",\n "vertex_create_buffer",\n "vertex_create_buffer_ext",\n "vertex_create_buffer_from_buffer",\n "vertex_create_buffer_from_buffer_ext",\n "vertex_delete_buffer",\n "vertex_end",\n "vertex_float1",\n "vertex_float2",\n "vertex_float3",\n "vertex_float4",\n "vertex_format_add_color",\n "vertex_format_add_colour",\n "vertex_format_add_custom",\n "vertex_format_add_normal",\n "vertex_format_add_position",\n "vertex_format_add_position_3d",\n "vertex_format_add_texcoord",\n "vertex_format_begin",\n "vertex_format_delete",\n "vertex_format_end",\n "vertex_format_get_info",\n "vertex_freeze",\n "vertex_get_buffer_size",\n "vertex_get_number",\n "vertex_normal",\n "vertex_position",\n "vertex_position_3d",\n "vertex_submit",\n "vertex_submit_ext",\n "vertex_texcoord",\n "vertex_ubyte4",\n "vertex_update_buffer_from_buffer",\n "vertex_update_buffer_from_vertex",\n "video_close",\n "video_draw",\n "video_enable_loop",\n "video_get_duration",\n "video_get_format",\n "video_get_position",\n "video_get_status",\n "video_get_volume",\n "video_is_looping",\n "video_open",\n "video_pause",\n "video_resume",\n "video_seek_to",\n "video_set_volume",\n "view_get_camera",\n "view_get_hport",\n "view_get_surface_id",\n "view_get_visible",\n "view_get_wport",\n "view_get_xport",\n "view_get_yport",\n "view_set_camera",\n "view_set_hport",\n "view_set_surface_id",\n "view_set_visible",\n "view_set_wport",\n "view_set_xport",\n "view_set_yport",\n "virtual_key_add",\n "virtual_key_delete",\n "virtual_key_hide",\n "virtual_key_show",\n "wallpaper_set_config",\n "wallpaper_set_subscriptions",\n "weak_ref_alive",\n "weak_ref_any_alive",\n "weak_ref_create",\n "window_center",\n "window_device",\n "window_enable_borderless_fullscreen",\n "window_get_borderless_fullscreen",\n "window_get_caption",\n "window_get_color",\n "window_get_colour",\n "window_get_cursor",\n "window_get_fullscreen",\n "window_get_height",\n "window_get_showborder",\n "window_get_visible_rects",\n "window_get_width",\n "window_get_x",\n "window_get_y",\n "window_handle",\n "window_has_focus",\n "window_mouse_get_delta_x",\n "window_mouse_get_delta_y",\n "window_mouse_get_locked",\n "window_mouse_get_x",\n "window_mouse_get_y",\n "window_mouse_set",\n "window_mouse_set_locked",\n "window_set_caption",\n "window_set_color",\n "window_set_colour",\n "window_set_cursor",\n "window_set_fullscreen",\n "window_set_max_height",\n "window_set_max_width",\n "window_set_min_height",\n "window_set_min_width",\n "window_set_position",\n "window_set_rectangle",\n "window_set_showborder",\n "window_set_size",\n "window_view_mouse_get_x",\n "window_view_mouse_get_y",\n "window_views_mouse_get_x",\n "window_views_mouse_get_y",\n "winphone_tile_background_color",\n "winphone_tile_background_colour",\n "zip_add_file",\n "zip_create",\n "zip_save",\n "zip_unzip",\n "zip_unzip_async"\n ];\n const SYMBOLS = [\n "AudioEffect",\n "AudioEffectType",\n "AudioLFOType",\n "GM_build_date",\n "GM_build_type",\n "GM_is_sandboxed",\n "GM_project_filename",\n "GM_runtime_version",\n "GM_version",\n "NaN",\n "_GMFILE_",\n "_GMFUNCTION_",\n "_GMLINE_",\n "alignmentH",\n "alignmentV",\n "all",\n "animcurvetype_bezier",\n "animcurvetype_catmullrom",\n "animcurvetype_linear",\n "asset_animationcurve",\n "asset_font",\n "asset_object",\n "asset_path",\n "asset_room",\n "asset_script",\n "asset_sequence",\n "asset_shader",\n "asset_sound",\n "asset_sprite",\n "asset_tiles",\n "asset_timeline",\n "asset_unknown",\n "audio_3D",\n "audio_bus_main",\n "audio_falloff_exponent_distance",\n "audio_falloff_exponent_distance_clamped",\n "audio_falloff_exponent_distance_scaled",\n "audio_falloff_inverse_distance",\n "audio_falloff_inverse_distance_clamped",\n "audio_falloff_inverse_distance_scaled",\n "audio_falloff_linear_distance",\n "audio_falloff_linear_distance_clamped",\n "audio_falloff_none",\n "audio_mono",\n "audio_stereo",\n "bboxkind_diamond",\n "bboxkind_ellipse",\n "bboxkind_precise",\n "bboxkind_rectangular",\n "bboxmode_automatic",\n "bboxmode_fullimage",\n "bboxmode_manual",\n "bm_add",\n "bm_dest_alpha",\n "bm_dest_color",\n "bm_dest_colour",\n "bm_inv_dest_alpha",\n "bm_inv_dest_color",\n "bm_inv_dest_colour",\n "bm_inv_src_alpha",\n "bm_inv_src_color",\n "bm_inv_src_colour",\n "bm_max",\n "bm_normal",\n "bm_one",\n "bm_src_alpha",\n "bm_src_alpha_sat",\n "bm_src_color",\n "bm_src_colour",\n "bm_subtract",\n "bm_zero",\n "browser_chrome",\n "browser_edge",\n "browser_firefox",\n "browser_ie",\n "browser_ie_mobile",\n "browser_not_a_browser",\n "browser_opera",\n "browser_safari",\n "browser_safari_mobile",\n "browser_tizen",\n "browser_unknown",\n "browser_windows_store",\n "buffer_bool",\n "buffer_f16",\n "buffer_f32",\n "buffer_f64",\n "buffer_fast",\n "buffer_fixed",\n "buffer_grow",\n "buffer_s16",\n "buffer_s32",\n "buffer_s8",\n "buffer_seek_end",\n "buffer_seek_relative",\n "buffer_seek_start",\n "buffer_string",\n "buffer_text",\n "buffer_u16",\n "buffer_u32",\n "buffer_u64",\n "buffer_u8",\n "buffer_vbuffer",\n "buffer_wrap",\n "c_aqua",\n "c_black",\n "c_blue",\n "c_dkgray",\n "c_dkgrey",\n "c_fuchsia",\n "c_gray",\n "c_green",\n "c_grey",\n "c_lime",\n "c_ltgray",\n "c_ltgrey",\n "c_maroon",\n "c_navy",\n "c_olive",\n "c_orange",\n "c_purple",\n "c_red",\n "c_silver",\n "c_teal",\n "c_white",\n "c_yellow",\n "cache_directory",\n "characterSpacing",\n "cmpfunc_always",\n "cmpfunc_equal",\n "cmpfunc_greater",\n "cmpfunc_greaterequal",\n "cmpfunc_less",\n "cmpfunc_lessequal",\n "cmpfunc_never",\n "cmpfunc_notequal",\n "coreColor",\n "coreColour",\n "cr_appstart",\n "cr_arrow",\n "cr_beam",\n "cr_cross",\n "cr_default",\n "cr_drag",\n "cr_handpoint",\n "cr_hourglass",\n "cr_none",\n "cr_size_all",\n "cr_size_nesw",\n "cr_size_ns",\n "cr_size_nwse",\n "cr_size_we",\n "cr_uparrow",\n "cull_clockwise",\n "cull_counterclockwise",\n "cull_noculling",\n "device_emulator",\n "device_ios_ipad",\n "device_ios_ipad_retina",\n "device_ios_iphone",\n "device_ios_iphone5",\n "device_ios_iphone6",\n "device_ios_iphone6plus",\n "device_ios_iphone_retina",\n "device_ios_unknown",\n "device_tablet",\n "display_landscape",\n "display_landscape_flipped",\n "display_portrait",\n "display_portrait_flipped",\n "dll_cdecl",\n "dll_stdcall",\n "dropShadowEnabled",\n "dropShadowEnabled",\n "ds_type_grid",\n "ds_type_list",\n "ds_type_map",\n "ds_type_priority",\n "ds_type_queue",\n "ds_type_stack",\n "ef_cloud",\n "ef_ellipse",\n "ef_explosion",\n "ef_firework",\n "ef_flare",\n "ef_rain",\n "ef_ring",\n "ef_smoke",\n "ef_smokeup",\n "ef_snow",\n "ef_spark",\n "ef_star",\n "effectsEnabled",\n "effectsEnabled",\n "ev_alarm",\n "ev_animation_end",\n "ev_animation_event",\n "ev_animation_update",\n "ev_async_audio_playback",\n "ev_async_audio_playback_ended",\n "ev_async_audio_recording",\n "ev_async_dialog",\n "ev_async_push_notification",\n "ev_async_save_load",\n "ev_async_save_load",\n "ev_async_social",\n "ev_async_system_event",\n "ev_async_web",\n "ev_async_web_cloud",\n "ev_async_web_iap",\n "ev_async_web_image_load",\n "ev_async_web_networking",\n "ev_async_web_steam",\n "ev_audio_playback",\n "ev_audio_playback_ended",\n "ev_audio_recording",\n "ev_boundary",\n "ev_boundary_view0",\n "ev_boundary_view1",\n "ev_boundary_view2",\n "ev_boundary_view3",\n "ev_boundary_view4",\n "ev_boundary_view5",\n "ev_boundary_view6",\n "ev_boundary_view7",\n "ev_broadcast_message",\n "ev_cleanup",\n "ev_collision",\n "ev_create",\n "ev_destroy",\n "ev_dialog_async",\n "ev_draw",\n "ev_draw_begin",\n "ev_draw_end",\n "ev_draw_normal",\n "ev_draw_post",\n "ev_draw_pre",\n "ev_end_of_path",\n "ev_game_end",\n "ev_game_start",\n "ev_gesture",\n "ev_gesture_double_tap",\n "ev_gesture_drag_end",\n "ev_gesture_drag_start",\n "ev_gesture_dragging",\n "ev_gesture_flick",\n "ev_gesture_pinch_end",\n "ev_gesture_pinch_in",\n "ev_gesture_pinch_out",\n "ev_gesture_pinch_start",\n "ev_gesture_rotate_end",\n "ev_gesture_rotate_start",\n "ev_gesture_rotating",\n "ev_gesture_tap",\n "ev_global_gesture_double_tap",\n "ev_global_gesture_drag_end",\n "ev_global_gesture_drag_start",\n "ev_global_gesture_dragging",\n "ev_global_gesture_flick",\n "ev_global_gesture_pinch_end",\n "ev_global_gesture_pinch_in",\n "ev_global_gesture_pinch_out",\n "ev_global_gesture_pinch_start",\n "ev_global_gesture_rotate_end",\n "ev_global_gesture_rotate_start",\n "ev_global_gesture_rotating",\n "ev_global_gesture_tap",\n "ev_global_left_button",\n "ev_global_left_press",\n "ev_global_left_release",\n "ev_global_middle_button",\n "ev_global_middle_press",\n "ev_global_middle_release",\n "ev_global_right_button",\n "ev_global_right_press",\n "ev_global_right_release",\n "ev_gui",\n "ev_gui_begin",\n "ev_gui_end",\n "ev_joystick1_button1",\n "ev_joystick1_button2",\n "ev_joystick1_button3",\n "ev_joystick1_button4",\n "ev_joystick1_button5",\n "ev_joystick1_button6",\n "ev_joystick1_button7",\n "ev_joystick1_button8",\n "ev_joystick1_down",\n "ev_joystick1_left",\n "ev_joystick1_right",\n "ev_joystick1_up",\n "ev_joystick2_button1",\n "ev_joystick2_button2",\n "ev_joystick2_button3",\n "ev_joystick2_button4",\n "ev_joystick2_button5",\n "ev_joystick2_button6",\n "ev_joystick2_button7",\n "ev_joystick2_button8",\n "ev_joystick2_down",\n "ev_joystick2_left",\n "ev_joystick2_right",\n "ev_joystick2_up",\n "ev_keyboard",\n "ev_keypress",\n "ev_keyrelease",\n "ev_left_button",\n "ev_left_press",\n "ev_left_release",\n "ev_middle_button",\n "ev_middle_press",\n "ev_middle_release",\n "ev_mouse",\n "ev_mouse_enter",\n "ev_mouse_leave",\n "ev_mouse_wheel_down",\n "ev_mouse_wheel_up",\n "ev_no_button",\n "ev_no_more_health",\n "ev_no_more_lives",\n "ev_other",\n "ev_outside",\n "ev_outside_view0",\n "ev_outside_view1",\n "ev_outside_view2",\n "ev_outside_view3",\n "ev_outside_view4",\n "ev_outside_view5",\n "ev_outside_view6",\n "ev_outside_view7",\n "ev_pre_create",\n "ev_push_notification",\n "ev_right_button",\n "ev_right_press",\n "ev_right_release",\n "ev_room_end",\n "ev_room_start",\n "ev_social",\n "ev_step",\n "ev_step_begin",\n "ev_step_end",\n "ev_step_normal",\n "ev_system_event",\n "ev_trigger",\n "ev_user0",\n "ev_user1",\n "ev_user10",\n "ev_user11",\n "ev_user12",\n "ev_user13",\n "ev_user14",\n "ev_user15",\n "ev_user2",\n "ev_user3",\n "ev_user4",\n "ev_user5",\n "ev_user6",\n "ev_user7",\n "ev_user8",\n "ev_user9",\n "ev_web_async",\n "ev_web_cloud",\n "ev_web_iap",\n "ev_web_image_load",\n "ev_web_networking",\n "ev_web_sound_load",\n "ev_web_steam",\n "fa_archive",\n "fa_bottom",\n "fa_center",\n "fa_directory",\n "fa_hidden",\n "fa_left",\n "fa_middle",\n "fa_none",\n "fa_readonly",\n "fa_right",\n "fa_sysfile",\n "fa_top",\n "fa_volumeid",\n "false",\n "frameSizeX",\n "frameSizeY",\n "gamespeed_fps",\n "gamespeed_microseconds",\n "global",\n "glowColor",\n "glowColour",\n "glowEnabled",\n "glowEnabled",\n "glowEnd",\n "glowStart",\n "gp_axis_acceleration_x",\n "gp_axis_acceleration_y",\n "gp_axis_acceleration_z",\n "gp_axis_angular_velocity_x",\n "gp_axis_angular_velocity_y",\n "gp_axis_angular_velocity_z",\n "gp_axis_orientation_w",\n "gp_axis_orientation_x",\n "gp_axis_orientation_y",\n "gp_axis_orientation_z",\n "gp_axislh",\n "gp_axislv",\n "gp_axisrh",\n "gp_axisrv",\n "gp_face1",\n "gp_face2",\n "gp_face3",\n "gp_face4",\n "gp_padd",\n "gp_padl",\n "gp_padr",\n "gp_padu",\n "gp_select",\n "gp_shoulderl",\n "gp_shoulderlb",\n "gp_shoulderr",\n "gp_shoulderrb",\n "gp_start",\n "gp_stickl",\n "gp_stickr",\n "iap_available",\n "iap_canceled",\n "iap_ev_consume",\n "iap_ev_product",\n "iap_ev_purchase",\n "iap_ev_restore",\n "iap_ev_storeload",\n "iap_failed",\n "iap_purchased",\n "iap_refunded",\n "iap_status_available",\n "iap_status_loading",\n "iap_status_processing",\n "iap_status_restoring",\n "iap_status_unavailable",\n "iap_status_uninitialised",\n "iap_storeload_failed",\n "iap_storeload_ok",\n "iap_unavailable",\n "infinity",\n "kbv_autocapitalize_characters",\n "kbv_autocapitalize_none",\n "kbv_autocapitalize_sentences",\n "kbv_autocapitalize_words",\n "kbv_returnkey_continue",\n "kbv_returnkey_default",\n "kbv_returnkey_done",\n "kbv_returnkey_emergency",\n "kbv_returnkey_go",\n "kbv_returnkey_google",\n "kbv_returnkey_join",\n "kbv_returnkey_next",\n "kbv_returnkey_route",\n "kbv_returnkey_search",\n "kbv_returnkey_send",\n "kbv_returnkey_yahoo",\n "kbv_type_ascii",\n "kbv_type_default",\n "kbv_type_email",\n "kbv_type_numbers",\n "kbv_type_phone",\n "kbv_type_phone_name",\n "kbv_type_url",\n "layerelementtype_background",\n "layerelementtype_instance",\n "layerelementtype_oldtilemap",\n "layerelementtype_particlesystem",\n "layerelementtype_sequence",\n "layerelementtype_sprite",\n "layerelementtype_tile",\n "layerelementtype_tilemap",\n "layerelementtype_undefined",\n "leaderboard_type_number",\n "leaderboard_type_time_mins_secs",\n "lighttype_dir",\n "lighttype_point",\n "lineSpacing",\n "m_axisx",\n "m_axisx_gui",\n "m_axisy",\n "m_axisy_gui",\n "m_scroll_down",\n "m_scroll_up",\n "matrix_projection",\n "matrix_view",\n "matrix_world",\n "mb_any",\n "mb_left",\n "mb_middle",\n "mb_none",\n "mb_right",\n "mb_side1",\n "mb_side2",\n "mip_markedonly",\n "mip_off",\n "mip_on",\n "network_config_avoid_time_wait",\n "network_config_connect_timeout",\n "network_config_disable_multicast",\n "network_config_disable_reliable_udp",\n "network_config_enable_multicast",\n "network_config_enable_reliable_udp",\n "network_config_use_non_blocking_socket",\n "network_config_websocket_protocol",\n "network_connect_active",\n "network_connect_blocking",\n "network_connect_nonblocking",\n "network_connect_none",\n "network_connect_passive",\n "network_send_binary",\n "network_send_text",\n "network_socket_bluetooth",\n "network_socket_tcp",\n "network_socket_udp",\n "network_socket_ws",\n "network_socket_wss",\n "network_type_connect",\n "network_type_data",\n "network_type_disconnect",\n "network_type_down",\n "network_type_non_blocking_connect",\n "network_type_up",\n "network_type_up_failed",\n "nineslice_blank",\n "nineslice_bottom",\n "nineslice_center",\n "nineslice_centre",\n "nineslice_hide",\n "nineslice_left",\n "nineslice_mirror",\n "nineslice_repeat",\n "nineslice_right",\n "nineslice_stretch",\n "nineslice_top",\n "noone",\n "of_challenge_lose",\n "of_challenge_tie",\n "of_challenge_win",\n "os_android",\n "os_gdk",\n "os_gxgames",\n "os_ios",\n "os_linux",\n "os_macosx",\n "os_operagx",\n "os_permission_denied",\n "os_permission_denied_dont_request",\n "os_permission_granted",\n "os_ps3",\n "os_ps4",\n "os_ps5",\n "os_psvita",\n "os_switch",\n "os_tvos",\n "os_unknown",\n "os_uwp",\n "os_win8native",\n "os_windows",\n "os_winphone",\n "os_xboxone",\n "os_xboxseriesxs",\n "other",\n "outlineColor",\n "outlineColour",\n "outlineDist",\n "outlineEnabled",\n "outlineEnabled",\n "paragraphSpacing",\n "path_action_continue",\n "path_action_restart",\n "path_action_reverse",\n "path_action_stop",\n "phy_debug_render_aabb",\n "phy_debug_render_collision_pairs",\n "phy_debug_render_coms",\n "phy_debug_render_core_shapes",\n "phy_debug_render_joints",\n "phy_debug_render_obb",\n "phy_debug_render_shapes",\n "phy_joint_anchor_1_x",\n "phy_joint_anchor_1_y",\n "phy_joint_anchor_2_x",\n "phy_joint_anchor_2_y",\n "phy_joint_angle",\n "phy_joint_angle_limits",\n "phy_joint_damping_ratio",\n "phy_joint_frequency",\n "phy_joint_length_1",\n "phy_joint_length_2",\n "phy_joint_lower_angle_limit",\n "phy_joint_max_force",\n "phy_joint_max_length",\n "phy_joint_max_motor_force",\n "phy_joint_max_motor_torque",\n "phy_joint_max_torque",\n "phy_joint_motor_force",\n "phy_joint_motor_speed",\n "phy_joint_motor_torque",\n "phy_joint_reaction_force_x",\n "phy_joint_reaction_force_y",\n "phy_joint_reaction_torque",\n "phy_joint_speed",\n "phy_joint_translation",\n "phy_joint_upper_angle_limit",\n "phy_particle_data_flag_category",\n "phy_particle_data_flag_color",\n "phy_particle_data_flag_colour",\n "phy_particle_data_flag_position",\n "phy_particle_data_flag_typeflags",\n "phy_particle_data_flag_velocity",\n "phy_particle_flag_colormixing",\n "phy_particle_flag_colourmixing",\n "phy_particle_flag_elastic",\n "phy_particle_flag_powder",\n "phy_particle_flag_spring",\n "phy_particle_flag_tensile",\n "phy_particle_flag_viscous",\n "phy_particle_flag_wall",\n "phy_particle_flag_water",\n "phy_particle_flag_zombie",\n "phy_particle_group_flag_rigid",\n "phy_particle_group_flag_solid",\n "pi",\n "pointer_invalid",\n "pointer_null",\n "pr_linelist",\n "pr_linestrip",\n "pr_pointlist",\n "pr_trianglefan",\n "pr_trianglelist",\n "pr_trianglestrip",\n "ps_distr_gaussian",\n "ps_distr_invgaussian",\n "ps_distr_linear",\n "ps_mode_burst",\n "ps_mode_stream",\n "ps_shape_diamond",\n "ps_shape_ellipse",\n "ps_shape_line",\n "ps_shape_rectangle",\n "pt_shape_circle",\n "pt_shape_cloud",\n "pt_shape_disk",\n "pt_shape_explosion",\n "pt_shape_flare",\n "pt_shape_line",\n "pt_shape_pixel",\n "pt_shape_ring",\n "pt_shape_smoke",\n "pt_shape_snow",\n "pt_shape_spark",\n "pt_shape_sphere",\n "pt_shape_square",\n "pt_shape_star",\n "rollback_chat_message",\n "rollback_connect_error",\n "rollback_connect_info",\n "rollback_connected_to_peer",\n "rollback_connection_rejected",\n "rollback_disconnected_from_peer",\n "rollback_end_game",\n "rollback_game_full",\n "rollback_game_info",\n "rollback_game_interrupted",\n "rollback_game_resumed",\n "rollback_high_latency",\n "rollback_player_prefs",\n "rollback_protocol_rejected",\n "rollback_synchronized_with_peer",\n "rollback_synchronizing_with_peer",\n "self",\n "seqaudiokey_loop",\n "seqaudiokey_oneshot",\n "seqdir_left",\n "seqdir_right",\n "seqinterpolation_assign",\n "seqinterpolation_lerp",\n "seqplay_loop",\n "seqplay_oneshot",\n "seqplay_pingpong",\n "seqtextkey_bottom",\n "seqtextkey_center",\n "seqtextkey_justify",\n "seqtextkey_left",\n "seqtextkey_middle",\n "seqtextkey_right",\n "seqtextkey_top",\n "seqtracktype_audio",\n "seqtracktype_bool",\n "seqtracktype_clipmask",\n "seqtracktype_clipmask_mask",\n "seqtracktype_clipmask_subject",\n "seqtracktype_color",\n "seqtracktype_colour",\n "seqtracktype_empty",\n "seqtracktype_graphic",\n "seqtracktype_group",\n "seqtracktype_instance",\n "seqtracktype_message",\n "seqtracktype_moment",\n "seqtracktype_particlesystem",\n "seqtracktype_real",\n "seqtracktype_sequence",\n "seqtracktype_spriteframes",\n "seqtracktype_string",\n "seqtracktype_text",\n "shadowColor",\n "shadowColour",\n "shadowOffsetX",\n "shadowOffsetY",\n "shadowSoftness",\n "sprite_add_ext_error_cancelled",\n "sprite_add_ext_error_decompressfailed",\n "sprite_add_ext_error_loadfailed",\n "sprite_add_ext_error_setupfailed",\n "sprite_add_ext_error_spritenotfound",\n "sprite_add_ext_error_unknown",\n "spritespeed_framespergameframe",\n "spritespeed_framespersecond",\n "surface_r16float",\n "surface_r32float",\n "surface_r8unorm",\n "surface_rg8unorm",\n "surface_rgba16float",\n "surface_rgba32float",\n "surface_rgba4unorm",\n "surface_rgba8unorm",\n "texturegroup_status_fetched",\n "texturegroup_status_loaded",\n "texturegroup_status_loading",\n "texturegroup_status_unloaded",\n "tf_anisotropic",\n "tf_linear",\n "tf_point",\n "thickness",\n "tile_flip",\n "tile_index_mask",\n "tile_mirror",\n "tile_rotate",\n "time_source_expire_after",\n "time_source_expire_nearest",\n "time_source_game",\n "time_source_global",\n "time_source_state_active",\n "time_source_state_initial",\n "time_source_state_paused",\n "time_source_state_stopped",\n "time_source_units_frames",\n "time_source_units_seconds",\n "timezone_local",\n "timezone_utc",\n "tm_countvsyncs",\n "tm_sleep",\n "tm_systemtiming",\n "true",\n "ty_real",\n "ty_string",\n "undefined",\n "vertex_type_color",\n "vertex_type_colour",\n "vertex_type_float1",\n "vertex_type_float2",\n "vertex_type_float3",\n "vertex_type_float4",\n "vertex_type_ubyte4",\n "vertex_usage_binormal",\n "vertex_usage_blendindices",\n "vertex_usage_blendweight",\n "vertex_usage_color",\n "vertex_usage_colour",\n "vertex_usage_depth",\n "vertex_usage_fog",\n "vertex_usage_normal",\n "vertex_usage_position",\n "vertex_usage_psize",\n "vertex_usage_sample",\n "vertex_usage_tangent",\n "vertex_usage_texcoord",\n "video_format_rgba",\n "video_format_yuv",\n "video_status_closed",\n "video_status_paused",\n "video_status_playing",\n "video_status_preparing",\n "vk_add",\n "vk_alt",\n "vk_anykey",\n "vk_backspace",\n "vk_control",\n "vk_decimal",\n "vk_delete",\n "vk_divide",\n "vk_down",\n "vk_end",\n "vk_enter",\n "vk_escape",\n "vk_f1",\n "vk_f10",\n "vk_f11",\n "vk_f12",\n "vk_f2",\n "vk_f3",\n "vk_f4",\n "vk_f5",\n "vk_f6",\n "vk_f7",\n "vk_f8",\n "vk_f9",\n "vk_home",\n "vk_insert",\n "vk_lalt",\n "vk_lcontrol",\n "vk_left",\n "vk_lshift",\n "vk_multiply",\n "vk_nokey",\n "vk_numpad0",\n "vk_numpad1",\n "vk_numpad2",\n "vk_numpad3",\n "vk_numpad4",\n "vk_numpad5",\n "vk_numpad6",\n "vk_numpad7",\n "vk_numpad8",\n "vk_numpad9",\n "vk_pagedown",\n "vk_pageup",\n "vk_pause",\n "vk_printscreen",\n "vk_ralt",\n "vk_rcontrol",\n "vk_return",\n "vk_right",\n "vk_rshift",\n "vk_shift",\n "vk_space",\n "vk_subtract",\n "vk_tab",\n "vk_up",\n "wallpaper_config",\n "wallpaper_subscription_data",\n "wrap"\n ];\n const LANGUAGE_VARIABLES = [\n "alarm",\n "application_surface",\n "argument",\n "argument0",\n "argument1",\n "argument2",\n "argument3",\n "argument4",\n "argument5",\n "argument6",\n "argument7",\n "argument8",\n "argument9",\n "argument10",\n "argument11",\n "argument12",\n "argument13",\n "argument14",\n "argument15",\n "argument_count",\n "async_load",\n "background_color",\n "background_colour",\n "background_showcolor",\n "background_showcolour",\n "bbox_bottom",\n "bbox_left",\n "bbox_right",\n "bbox_top",\n "browser_height",\n "browser_width",\n "colour?ColourTrack",\n "current_day",\n "current_hour",\n "current_minute",\n "current_month",\n "current_second",\n "current_time",\n "current_weekday",\n "current_year",\n "cursor_sprite",\n "debug_mode",\n "delta_time",\n "depth",\n "direction",\n "display_aa",\n "drawn_by_sequence",\n "event_action",\n "event_data",\n "event_number",\n "event_object",\n "event_type",\n "font_texture_page_size",\n "fps",\n "fps_real",\n "friction",\n "game_display_name",\n "game_id",\n "game_project_name",\n "game_save_id",\n "gravity",\n "gravity_direction",\n "health",\n "hspeed",\n "iap_data",\n "id",\n "image_alpha",\n "image_angle",\n "image_blend",\n "image_index",\n "image_number",\n "image_speed",\n "image_xscale",\n "image_yscale",\n "in_collision_tree",\n "in_sequence",\n "instance_count",\n "instance_id",\n "keyboard_key",\n "keyboard_lastchar",\n "keyboard_lastkey",\n "keyboard_string",\n "layer",\n "lives",\n "longMessage",\n "managed",\n "mask_index",\n "message",\n "mouse_button",\n "mouse_lastbutton",\n "mouse_x",\n "mouse_y",\n "object_index",\n "os_browser",\n "os_device",\n "os_type",\n "os_version",\n "path_endaction",\n "path_index",\n "path_orientation",\n "path_position",\n "path_positionprevious",\n "path_scale",\n "path_speed",\n "persistent",\n "phy_active",\n "phy_angular_damping",\n "phy_angular_velocity",\n "phy_bullet",\n "phy_col_normal_x",\n "phy_col_normal_y",\n "phy_collision_points",\n "phy_collision_x",\n "phy_collision_y",\n "phy_com_x",\n "phy_com_y",\n "phy_dynamic",\n "phy_fixed_rotation",\n "phy_inertia",\n "phy_kinematic",\n "phy_linear_damping",\n "phy_linear_velocity_x",\n "phy_linear_velocity_y",\n "phy_mass",\n "phy_position_x",\n "phy_position_xprevious",\n "phy_position_y",\n "phy_position_yprevious",\n "phy_rotation",\n "phy_sleeping",\n "phy_speed",\n "phy_speed_x",\n "phy_speed_y",\n "player_avatar_sprite",\n "player_avatar_url",\n "player_id",\n "player_local",\n "player_type",\n "player_user_id",\n "program_directory",\n "rollback_api_server",\n "rollback_confirmed_frame",\n "rollback_current_frame",\n "rollback_event_id",\n "rollback_event_param",\n "rollback_game_running",\n "room",\n "room_first",\n "room_height",\n "room_last",\n "room_persistent",\n "room_speed",\n "room_width",\n "score",\n "script",\n "sequence_instance",\n "solid",\n "speed",\n "sprite_height",\n "sprite_index",\n "sprite_width",\n "sprite_xoffset",\n "sprite_yoffset",\n "stacktrace",\n "temp_directory",\n "timeline_index",\n "timeline_loop",\n "timeline_position",\n "timeline_running",\n "timeline_speed",\n "view_camera",\n "view_current",\n "view_enabled",\n "view_hport",\n "view_surface_id",\n "view_visible",\n "view_wport",\n "view_xport",\n "view_yport",\n "visible",\n "vspeed",\n "webgl_enabled",\n "working_directory",\n "x",\n "xprevious",\n "xstart",\n "y",\n "yprevious",\n "ystart"\n ];\n return {\n name: \'GML\',\n case_insensitive: false, // language is case-insensitive\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_INS,\n symbol: SYMBOLS,\n "variable.language": LANGUAGE_VARIABLES\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = gml;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI2MS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9nbWwuanM/MDg4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEdNTFxuRGVzY3JpcHRpb246IEdhbWUgTWFrZXIgTGFuZ3VhZ2UgZm9yIEdhbWVNYWtlciAocmV2LiAyMDIzLjEpXG5XZWJzaXRlOiBodHRwczovL21hbnVhbC55b3lvZ2FtZXMuY29tL1xuQ2F0ZWdvcnk6IHNjcmlwdGluZ1xuKi9cblxuZnVuY3Rpb24gZ21sKGhsanMpIHtcbiAgY29uc3QgS0VZV09SRFMgPSBbXG4gICAgXCIjZW5kcmVnaW9uXCIsXG4gICAgXCIjbWFjcm9cIixcbiAgICBcIiNyZWdpb25cIixcbiAgICBcImFuZFwiLFxuICAgIFwiYmVnaW5cIixcbiAgICBcImJyZWFrXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJjb25zdHJ1Y3RvclwiLFxuICAgIFwiY29udGludWVcIixcbiAgICBcImRlZmF1bHRcIixcbiAgICBcImRlbGV0ZVwiLFxuICAgIFwiZGl2XCIsXG4gICAgXCJkb1wiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwiZW5kXCIsXG4gICAgXCJlbnVtXCIsXG4gICAgXCJleGl0XCIsXG4gICAgXCJmb3JcIixcbiAgICBcImZ1bmN0aW9uXCIsXG4gICAgXCJnbG9iYWx2YXJcIixcbiAgICBcImlmXCIsXG4gICAgXCJtb2RcIixcbiAgICBcIm5ld1wiLFxuICAgIFwibm90XCIsXG4gICAgXCJvclwiLFxuICAgIFwicmVwZWF0XCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcInN0YXRpY1wiLFxuICAgIFwic3dpdGNoXCIsXG4gICAgXCJ0aGVuXCIsXG4gICAgXCJ1bnRpbFwiLFxuICAgIFwidmFyXCIsXG4gICAgXCJ3aGlsZVwiLFxuICAgIFwid2l0aFwiLFxuICAgIFwieG9yXCJcbiAgXTtcblxuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgXCJhYnNcIixcbiAgICBcImFsYXJtX2dldFwiLFxuICAgIFwiYWxhcm1fc2V0XCIsXG4gICAgXCJhbmdsZV9kaWZmZXJlbmNlXCIsXG4gICAgXCJhbmltY3VydmVfY2hhbm5lbF9ldmFsdWF0ZVwiLFxuICAgIFwiYW5pbWN1cnZlX2NoYW5uZWxfbmV3XCIsXG4gICAgXCJhbmltY3VydmVfY3JlYXRlXCIsXG4gICAgXCJhbmltY3VydmVfZGVzdHJveVwiLFxuICAgIFwiYW5pbWN1cnZlX2V4aXN0c1wiLFxuICAgIFwiYW5pbWN1cnZlX2dldFwiLFxuICAgIFwiYW5pbWN1cnZlX2dldF9jaGFubmVsXCIsXG4gICAgXCJhbmltY3VydmVfZ2V0X2NoYW5uZWxfaW5kZXhcIixcbiAgICBcImFuaW1jdXJ2ZV9wb2ludF9uZXdcIixcbiAgICBcImFuc2lfY2hhclwiLFxuICAgIFwiYXBwbGljYXRpb25fZ2V0X3Bvc2l0aW9uXCIsXG4gICAgXCJhcHBsaWNhdGlvbl9zdXJmYWNlX2RyYXdfZW5hYmxlXCIsXG4gICAgXCJhcHBsaWNhdGlvbl9zdXJmYWNlX2VuYWJsZVwiLFxuICAgIFwiYXBwbGljYXRpb25fc3VyZmFjZV9pc19lbmFibGVkXCIsXG4gICAgXCJhcmNjb3NcIixcbiAgICBcImFyY3NpblwiLFxuICAgIFwiYXJjdGFuXCIsXG4gICAgXCJhcmN0YW4yXCIsXG4gICAgXCJhcnJheV9hbGxcIixcbiAgICBcImFycmF5X2FueVwiLFxuICAgIFwiYXJyYXlfY29uY2F0XCIsXG4gICAgXCJhcnJheV9jb250YWluc1wiLFxuICAgIFwiYXJyYXlfY29udGFpbnNfZXh0XCIsXG4gICAgXCJhcnJheV9jb3B5XCIsXG4gICAgXCJhcnJheV9jb3B5X3doaWxlXCIsXG4gICAgXCJhcnJheV9jcmVhdGVcIixcbiAgICBcImFycmF5X2NyZWF0ZV9leHRcIixcbiAgICBcImFycmF5X2RlbGV0ZVwiLFxuICAgIFwiYXJyYXlfZXF1YWxzXCIsXG4gICAgXCJhcnJheV9maWx0ZXJcIixcbiAgICBcImFycmF5X2ZpbHRlcl9leHRcIixcbiAgICBcImFycmF5X2ZpbmRfaW5kZXhcIixcbiAgICBcImFycmF5X2ZpcnN0XCIsXG4gICAgXCJhcnJheV9mb3JlYWNoXCIsXG4gICAgXCJhcnJheV9nZXRcIixcbiAgICBcImFycmF5X2dldF9pbmRleFwiLFxuICAgIFwiYXJyYXlfaW5zZXJ0XCIsXG4gICAgXCJhcnJheV9pbnRlcnNlY3Rpb25cIixcbiAgICBcImFycmF5X2xhc3RcIixcbiAgICBcImFycmF5X2xlbmd0aFwiLFxuICAgIFwiYXJyYXlfbWFwXCIsXG4gICAgXCJhcnJheV9tYXBfZXh0XCIsXG4gICAgXCJhcnJheV9wb3BcIixcbiAgICBcImFycmF5X3B1c2hcIixcbiAgICBcImFycmF5X3JlZHVjZVwiLFxuICAgIFwiYXJyYXlfcmVzaXplXCIsXG4gICAgXCJhcnJheV9yZXZlcnNlXCIsXG4gICAgXCJhcnJheV9yZXZlcnNlX2V4dFwiLFxuICAgIFwiYXJyYXlfc2V0XCIsXG4gICAgXCJhcnJheV9zaHVmZmxlXCIsXG4gICAgXCJhcnJheV9zaHVmZmxlX2V4dFwiLFxuICAgIFwiYXJyYXlfc29ydFwiLFxuICAgIFwiYXJyYXlfdW5pb25cIixcbiAgICBcImFycmF5X3VuaXF1ZVwiLFxuICAgIFwiYXJyYXlfdW5pcXVlX2V4dFwiLFxuICAgIFwiYXNzZXRfYWRkX3RhZ3NcIixcbiAgICBcImFzc2V0X2NsZWFyX3RhZ3NcIixcbiAgICBcImFzc2V0X2dldF9pZHNcIixcbiAgICBcImFzc2V0X2dldF9pbmRleFwiLFxuICAgIFwiYXNzZXRfZ2V0X3RhZ3NcIixcbiAgICBcImFzc2V0X2dldF90eXBlXCIsXG4gICAgXCJhc3NldF9oYXNfYW55X3RhZ1wiLFxuICAgIFwiYXNzZXRfaGFzX3RhZ3NcIixcbiAgICBcImFzc2V0X3JlbW92ZV90YWdzXCIsXG4gICAgXCJhdWRpb19idXNfY2xlYXJfZW1pdHRlcnNcIixcbiAgICBcImF1ZGlvX2J1c19jcmVhdGVcIixcbiAgICBcImF1ZGlvX2J1c19nZXRfZW1pdHRlcnNcIixcbiAgICBcImF1ZGlvX2NoYW5uZWxfbnVtXCIsXG4gICAgXCJhdWRpb19jcmVhdGVfYnVmZmVyX3NvdW5kXCIsXG4gICAgXCJhdWRpb19jcmVhdGVfcGxheV9xdWV1ZVwiLFxuICAgIFwiYXVkaW9fY3JlYXRlX3N0cmVhbVwiLFxuICAgIFwiYXVkaW9fY3JlYXRlX3N5bmNfZ3JvdXBcIixcbiAgICBcImF1ZGlvX2RlYnVnXCIsXG4gICAgXCJhdWRpb19kZXN0cm95X3N0cmVhbVwiLFxuICAgIFwiYXVkaW9fZGVzdHJveV9zeW5jX2dyb3VwXCIsXG4gICAgXCJhdWRpb19lZmZlY3RfY3JlYXRlXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2J1c1wiLFxuICAgIFwiYXVkaW9fZW1pdHRlcl9jcmVhdGVcIixcbiAgICBcImF1ZGlvX2VtaXR0ZXJfZXhpc3RzXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2ZhbGxvZmZcIixcbiAgICBcImF1ZGlvX2VtaXR0ZXJfZnJlZVwiLFxuICAgIFwiYXVkaW9fZW1pdHRlcl9nYWluXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2dldF9idXNcIixcbiAgICBcImF1ZGlvX2VtaXR0ZXJfZ2V0X2dhaW5cIixcbiAgICBcImF1ZGlvX2VtaXR0ZXJfZ2V0X2xpc3RlbmVyX21hc2tcIixcbiAgICBcImF1ZGlvX2VtaXR0ZXJfZ2V0X3BpdGNoXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2dldF92eFwiLFxuICAgIFwiYXVkaW9fZW1pdHRlcl9nZXRfdnlcIixcbiAgICBcImF1ZGlvX2VtaXR0ZXJfZ2V0X3Z6XCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2dldF94XCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2dldF95XCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX2dldF96XCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX3BpdGNoXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX3Bvc2l0aW9uXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX3NldF9saXN0ZW5lcl9tYXNrXCIsXG4gICAgXCJhdWRpb19lbWl0dGVyX3ZlbG9jaXR5XCIsXG4gICAgXCJhdWRpb19leGlzdHNcIixcbiAgICBcImF1ZGlvX2ZhbGxvZmZfc2V0X21vZGVsXCIsXG4gICAgXCJhdWRpb19mcmVlX2J1ZmZlcl9zb3VuZFwiLFxuICAgIFwiYXVkaW9fZnJlZV9wbGF5X3F1ZXVlXCIsXG4gICAgXCJhdWRpb19nZXRfbGlzdGVuZXJfY291bnRcIixcbiAgICBcImF1ZGlvX2dldF9saXN0ZW5lcl9pbmZvXCIsXG4gICAgXCJhdWRpb19nZXRfbGlzdGVuZXJfbWFza1wiLFxuICAgIFwiYXVkaW9fZ2V0X21hc3Rlcl9nYWluXCIsXG4gICAgXCJhdWRpb19nZXRfbmFtZVwiLFxuICAgIFwiYXVkaW9fZ2V0X3JlY29yZGVyX2NvdW50XCIsXG4gICAgXCJhdWRpb19nZXRfcmVjb3JkZXJfaW5mb1wiLFxuICAgIFwiYXVkaW9fZ2V0X3R5cGVcIixcbiAgICBcImF1ZGlvX2dyb3VwX2dldF9hc3NldHNcIixcbiAgICBcImF1ZGlvX2dyb3VwX2dldF9nYWluXCIsXG4gICAgXCJhdWRpb19ncm91cF9pc19sb2FkZWRcIixcbiAgICBcImF1ZGlvX2dyb3VwX2xvYWRcIixcbiAgICBcImF1ZGlvX2dyb3VwX2xvYWRfcHJvZ3Jlc3NcIixcbiAgICBcImF1ZGlvX2dyb3VwX25hbWVcIixcbiAgICBcImF1ZGlvX2dyb3VwX3NldF9nYWluXCIsXG4gICAgXCJhdWRpb19ncm91cF9zdG9wX2FsbFwiLFxuICAgIFwiYXVkaW9fZ3JvdXBfdW5sb2FkXCIsXG4gICAgXCJhdWRpb19pc19wYXVzZWRcIixcbiAgICBcImF1ZGlvX2lzX3BsYXlpbmdcIixcbiAgICBcImF1ZGlvX2xpc3RlbmVyX2dldF9kYXRhXCIsXG4gICAgXCJhdWRpb19saXN0ZW5lcl9vcmllbnRhdGlvblwiLFxuICAgIFwiYXVkaW9fbGlzdGVuZXJfcG9zaXRpb25cIixcbiAgICBcImF1ZGlvX2xpc3RlbmVyX3NldF9vcmllbnRhdGlvblwiLFxuICAgIFwiYXVkaW9fbGlzdGVuZXJfc2V0X3Bvc2l0aW9uXCIsXG4gICAgXCJhdWRpb19saXN0ZW5lcl9zZXRfdmVsb2NpdHlcIixcbiAgICBcImF1ZGlvX2xpc3RlbmVyX3ZlbG9jaXR5XCIsXG4gICAgXCJhdWRpb19tYXN0ZXJfZ2FpblwiLFxuICAgIFwiYXVkaW9fcGF1c2VfYWxsXCIsXG4gICAgXCJhdWRpb19wYXVzZV9zb3VuZFwiLFxuICAgIFwiYXVkaW9fcGF1c2Vfc3luY19ncm91cFwiLFxuICAgIFwiYXVkaW9fcGxheV9pbl9zeW5jX2dyb3VwXCIsXG4gICAgXCJhdWRpb19wbGF5X3NvdW5kXCIsXG4gICAgXCJhdWRpb19wbGF5X3NvdW5kX2F0XCIsXG4gICAgXCJhdWRpb19wbGF5X3NvdW5kX2V4dFwiLFxuICAgIFwiYXVkaW9fcGxheV9zb3VuZF9vblwiLFxuICAgIFwiYXVkaW9fcXVldWVfc291bmRcIixcbiAgICBcImF1ZGlvX3Jlc3VtZV9hbGxcIixcbiAgICBcImF1ZGlvX3Jlc3VtZV9zb3VuZFwiLFxuICAgIFwiYXVkaW9fcmVzdW1lX3N5bmNfZ3JvdXBcIixcbiAgICBcImF1ZGlvX3NldF9saXN0ZW5lcl9tYXNrXCIsXG4gICAgXCJhdWRpb19zZXRfbWFzdGVyX2dhaW5cIixcbiAgICBcImF1ZGlvX3NvdW5kX2dhaW5cIixcbiAgICBcImF1ZGlvX3NvdW5kX2dldF9hdWRpb19ncm91cFwiLFxuICAgIFwiYXVkaW9fc291bmRfZ2V0X2dhaW5cIixcbiAgICBcImF1ZGlvX3NvdW5kX2dldF9saXN0ZW5lcl9tYXNrXCIsXG4gICAgXCJhdWRpb19zb3VuZF9nZXRfbG9vcFwiLFxuICAgIFwiYXVkaW9fc291bmRfZ2V0X2xvb3BfZW5kXCIsXG4gICAgXCJhdWRpb19zb3VuZF9nZXRfbG9vcF9zdGFydFwiLFxuICAgIFwiYXVkaW9fc291bmRfZ2V0X3BpdGNoXCIsXG4gICAgXCJhdWRpb19zb3VuZF9nZXRfdHJhY2tfcG9zaXRpb25cIixcbiAgICBcImF1ZGlvX3NvdW5kX2lzX3BsYXlhYmxlXCIsXG4gICAgXCJhdWRpb19zb3VuZF9sZW5ndGhcIixcbiAgICBcImF1ZGlvX3NvdW5kX2xvb3BcIixcbiAgICBcImF1ZGlvX3NvdW5kX2xvb3BfZW5kXCIsXG4gICAgXCJhdWRpb19zb3VuZF9sb29wX3N0YXJ0XCIsXG4gICAgXCJhdWRpb19zb3VuZF9waXRjaFwiLFxuICAgIFwiYXVkaW9fc291bmRfc2V0X2xpc3RlbmVyX21hc2tcIixcbiAgICBcImF1ZGlvX3NvdW5kX3NldF90cmFja19wb3NpdGlvblwiLFxuICAgIFwiYXVkaW9fc3RhcnRfcmVjb3JkaW5nXCIsXG4gICAgXCJhdWRpb19zdGFydF9zeW5jX2dyb3VwXCIsXG4gICAgXCJhdWRpb19zdG9wX2FsbFwiLFxuICAgIFwiYXVkaW9fc3RvcF9yZWNvcmRpbmdcIixcbiAgICBcImF1ZGlvX3N0b3Bfc291bmRcIixcbiAgICBcImF1ZGlvX3N0b3Bfc3luY19ncm91cFwiLFxuICAgIFwiYXVkaW9fc3luY19ncm91cF9kZWJ1Z1wiLFxuICAgIFwiYXVkaW9fc3luY19ncm91cF9nZXRfdHJhY2tfcG9zXCIsXG4gICAgXCJhdWRpb19zeW5jX2dyb3VwX2lzX3BhdXNlZFwiLFxuICAgIFwiYXVkaW9fc3luY19ncm91cF9pc19wbGF5aW5nXCIsXG4gICAgXCJhdWRpb19zeXN0ZW1faXNfYXZhaWxhYmxlXCIsXG4gICAgXCJhdWRpb19zeXN0ZW1faXNfaW5pdGlhbGlzZWRcIixcbiAgICBcImJhc2U2NF9kZWNvZGVcIixcbiAgICBcImJhc2U2NF9lbmNvZGVcIixcbiAgICBcImJvb2xcIixcbiAgICBcImJyb3dzZXJfaW5wdXRfY2FwdHVyZVwiLFxuICAgIFwiYnVmZmVyX2FzeW5jX2dyb3VwX2JlZ2luXCIsXG4gICAgXCJidWZmZXJfYXN5bmNfZ3JvdXBfZW5kXCIsXG4gICAgXCJidWZmZXJfYXN5bmNfZ3JvdXBfb3B0aW9uXCIsXG4gICAgXCJidWZmZXJfYmFzZTY0X2RlY29kZVwiLFxuICAgIFwiYnVmZmVyX2Jhc2U2NF9kZWNvZGVfZXh0XCIsXG4gICAgXCJidWZmZXJfYmFzZTY0X2VuY29kZVwiLFxuICAgIFwiYnVmZmVyX2NvbXByZXNzXCIsXG4gICAgXCJidWZmZXJfY29weVwiLFxuICAgIFwiYnVmZmVyX2NvcHlfZnJvbV92ZXJ0ZXhfYnVmZmVyXCIsXG4gICAgXCJidWZmZXJfY29weV9zdHJpZGVcIixcbiAgICBcImJ1ZmZlcl9jcmMzMlwiLFxuICAgIFwiYnVmZmVyX2NyZWF0ZVwiLFxuICAgIFwiYnVmZmVyX2NyZWF0ZV9mcm9tX3ZlcnRleF9idWZmZXJcIixcbiAgICBcImJ1ZmZlcl9jcmVhdGVfZnJvbV92ZXJ0ZXhfYnVmZmVyX2V4dFwiLFxuICAgIFwiYnVmZmVyX2RlY29tcHJlc3NcIixcbiAgICBcImJ1ZmZlcl9kZWxldGVcIixcbiAgICBcImJ1ZmZlcl9leGlzdHNcIixcbiAgICBcImJ1ZmZlcl9maWxsXCIsXG4gICAgXCJidWZmZXJfZ2V0X2FkZHJlc3NcIixcbiAgICBcImJ1ZmZlcl9nZXRfYWxpZ25tZW50XCIsXG4gICAgXCJidWZmZXJfZ2V0X3NpemVcIixcbiAgICBcImJ1ZmZlcl9nZXRfc3VyZmFjZVwiLFxuICAgIFwiYnVmZmVyX2dldF90eXBlXCIsXG4gICAgXCJidWZmZXJfbG9hZFwiLFxuICAgIFwiYnVmZmVyX2xvYWRfYXN5bmNcIixcbiAgICBcImJ1ZmZlcl9sb2FkX2V4dFwiLFxuICAgIFwiYnVmZmVyX2xvYWRfcGFydGlhbFwiLFxuICAgIFwiYnVmZmVyX21kNVwiLFxuICAgIFwiYnVmZmVyX3BlZWtcIixcbiAgICBcImJ1ZmZlcl9wb2tlXCIsXG4gICAgXCJidWZmZXJfcmVhZFwiLFxuICAgIFwiYnVmZmVyX3Jlc2l6ZVwiLFxuICAgIFwiYnVmZmVyX3NhdmVcIixcbiAgICBcImJ1ZmZlcl9zYXZlX2FzeW5jXCIsXG4gICAgXCJidWZmZXJfc2F2ZV9leHRcIixcbiAgICBcImJ1ZmZlcl9zZWVrXCIsXG4gICAgXCJidWZmZXJfc2V0X3N1cmZhY2VcIixcbiAgICBcImJ1ZmZlcl9zZXRfdXNlZF9zaXplXCIsXG4gICAgXCJidWZmZXJfc2hhMVwiLFxuICAgIFwiYnVmZmVyX3NpemVvZlwiLFxuICAgIFwiYnVmZmVyX3RlbGxcIixcbiAgICBcImJ1ZmZlcl93cml0ZVwiLFxuICAgIFwiY2FsbF9jYW5jZWxcIixcbiAgICBcImNhbGxfbGF0ZXJcIixcbiAgICBcImNhbWVyYV9hcHBseVwiLFxuICAgIFwiY2FtZXJhX2NvcHlfdHJhbnNmb3Jtc1wiLFxuICAgIFwiY2FtZXJhX2NyZWF0ZVwiLFxuICAgIFwiY2FtZXJhX2NyZWF0ZV92aWV3XCIsXG4gICAgXCJjYW1lcmFfZGVzdHJveVwiLFxuICAgIFwiY2FtZXJhX2dldF9hY3RpdmVcIixcbiAgICBcImNhbWVyYV9nZXRfYmVnaW5fc2NyaXB0XCIsXG4gICAgXCJjYW1lcmFfZ2V0X2RlZmF1bHRcIixcbiAgICBcImNhbWVyYV9nZXRfZW5kX3NjcmlwdFwiLFxuICAgIFwiY2FtZXJhX2dldF9wcm9qX21hdFwiLFxuICAgIFwiY2FtZXJhX2dldF91cGRhdGVfc2NyaXB0XCIsXG4gICAgXCJjYW1lcmFfZ2V0X3ZpZXdfYW5nbGVcIixcbiAgICBcImNhbWVyYV9nZXRfdmlld19ib3JkZXJfeFwiLFxuICAgIFwiY2FtZXJhX2dldF92aWV3X2JvcmRlcl95XCIsXG4gICAgXCJjYW1lcmFfZ2V0X3ZpZXdfaGVpZ2h0XCIsXG4gICAgXCJjYW1lcmFfZ2V0X3ZpZXdfbWF0XCIsXG4gICAgXCJjYW1lcmFfZ2V0X3ZpZXdfc3BlZWRfeFwiLFxuICAgIFwiY2FtZXJhX2dldF92aWV3X3NwZWVkX3lcIixcbiAgICBcImNhbWVyYV9nZXRfdmlld190YXJnZXRcIixcbiAgICBcImNhbWVyYV9nZXRfdmlld193aWR0aFwiLFxuICAgIFwiY2FtZXJhX2dldF92aWV3X3hcIixcbiAgICBcImNhbWVyYV9nZXRfdmlld195XCIsXG4gICAgXCJjYW1lcmFfc2V0X2JlZ2luX3NjcmlwdFwiLFxuICAgIFwiY2FtZXJhX3NldF9kZWZhdWx0XCIsXG4gICAgXCJjYW1lcmFfc2V0X2VuZF9zY3JpcHRcIixcbiAgICBcImNhbWVyYV9zZXRfcHJval9tYXRcIixcbiAgICBcImNhbWVyYV9zZXRfdXBkYXRlX3NjcmlwdFwiLFxuICAgIFwiY2FtZXJhX3NldF92aWV3X2FuZ2xlXCIsXG4gICAgXCJjYW1lcmFfc2V0X3ZpZXdfYm9yZGVyXCIsXG4gICAgXCJjYW1lcmFfc2V0X3ZpZXdfbWF0XCIsXG4gICAgXCJjYW1lcmFfc2V0X3ZpZXdfcG9zXCIsXG4gICAgXCJjYW1lcmFfc2V0X3ZpZXdfc2l6ZVwiLFxuICAgIFwiY2FtZXJhX3NldF92aWV3X3NwZWVkXCIsXG4gICAgXCJjYW1lcmFfc2V0X3ZpZXdfdGFyZ2V0XCIsXG4gICAgXCJjZWlsXCIsXG4gICAgXCJjaG9vc2VcIixcbiAgICBcImNoclwiLFxuICAgIFwiY2xhbXBcIixcbiAgICBcImNsaWNrYWJsZV9hZGRcIixcbiAgICBcImNsaWNrYWJsZV9hZGRfZXh0XCIsXG4gICAgXCJjbGlja2FibGVfY2hhbmdlXCIsXG4gICAgXCJjbGlja2FibGVfY2hhbmdlX2V4dFwiLFxuICAgIFwiY2xpY2thYmxlX2RlbGV0ZVwiLFxuICAgIFwiY2xpY2thYmxlX2V4aXN0c1wiLFxuICAgIFwiY2xpY2thYmxlX3NldF9zdHlsZVwiLFxuICAgIFwiY2xpcGJvYXJkX2dldF90ZXh0XCIsXG4gICAgXCJjbGlwYm9hcmRfaGFzX3RleHRcIixcbiAgICBcImNsaXBib2FyZF9zZXRfdGV4dFwiLFxuICAgIFwiY2xvdWRfZmlsZV9zYXZlXCIsXG4gICAgXCJjbG91ZF9zdHJpbmdfc2F2ZVwiLFxuICAgIFwiY2xvdWRfc3luY2hyb25pc2VcIixcbiAgICBcImNvZGVfaXNfY29tcGlsZWRcIixcbiAgICBcImNvbGxpc2lvbl9jaXJjbGVcIixcbiAgICBcImNvbGxpc2lvbl9jaXJjbGVfbGlzdFwiLFxuICAgIFwiY29sbGlzaW9uX2VsbGlwc2VcIixcbiAgICBcImNvbGxpc2lvbl9lbGxpcHNlX2xpc3RcIixcbiAgICBcImNvbGxpc2lvbl9saW5lXCIsXG4gICAgXCJjb2xsaXNpb25fbGluZV9saXN0XCIsXG4gICAgXCJjb2xsaXNpb25fcG9pbnRcIixcbiAgICBcImNvbGxpc2lvbl9wb2ludF9saXN0XCIsXG4gICAgXCJjb2xsaXNpb25fcmVjdGFuZ2xlXCIsXG4gICAgXCJjb2xsaXNpb25fcmVjdGFuZ2xlX2xpc3RcIixcbiAgICBcImNvbG9yX2dldF9ibHVlXCIsXG4gICAgXCJjb2xvcl9nZXRfZ3JlZW5cIixcbiAgICBcImNvbG9yX2dldF9odWVcIixcbiAgICBcImNvbG9yX2dldF9yZWRcIixcbiAgICBcImNvbG9yX2dldF9zYXR1cmF0aW9uXCIsXG4gICAgXCJjb2xvcl9nZXRfdmFsdWVcIixcbiAgICBcImNvbG91cl9nZXRfYmx1ZVwiLFxuICAgIFwiY29sb3VyX2dldF9ncmVlblwiLFxuICAgIFwiY29sb3VyX2dldF9odWVcIixcbiAgICBcImNvbG91cl9nZXRfcmVkXCIsXG4gICAgXCJjb2xvdXJfZ2V0X3NhdHVyYXRpb25cIixcbiAgICBcImNvbG91cl9nZXRfdmFsdWVcIixcbiAgICBcImNvc1wiLFxuICAgIFwiZGFyY2Nvc1wiLFxuICAgIFwiZGFyY3NpblwiLFxuICAgIFwiZGFyY3RhblwiLFxuICAgIFwiZGFyY3RhbjJcIixcbiAgICBcImRhdGVfY29tcGFyZV9kYXRlXCIsXG4gICAgXCJkYXRlX2NvbXBhcmVfZGF0ZXRpbWVcIixcbiAgICBcImRhdGVfY29tcGFyZV90aW1lXCIsXG4gICAgXCJkYXRlX2NyZWF0ZV9kYXRldGltZVwiLFxuICAgIFwiZGF0ZV9jdXJyZW50X2RhdGV0aW1lXCIsXG4gICAgXCJkYXRlX2RhdGVfb2ZcIixcbiAgICBcImRhdGVfZGF0ZV9zdHJpbmdcIixcbiAgICBcImRhdGVfZGF0ZXRpbWVfc3RyaW5nXCIsXG4gICAgXCJkYXRlX2RheV9zcGFuXCIsXG4gICAgXCJkYXRlX2RheXNfaW5fbW9udGhcIixcbiAgICBcImRhdGVfZGF5c19pbl95ZWFyXCIsXG4gICAgXCJkYXRlX2dldF9kYXlcIixcbiAgICBcImRhdGVfZ2V0X2RheV9vZl95ZWFyXCIsXG4gICAgXCJkYXRlX2dldF9ob3VyXCIsXG4gICAgXCJkYXRlX2dldF9ob3VyX29mX3llYXJcIixcbiAgICBcImRhdGVfZ2V0X21pbnV0ZVwiLFxuICAgIFwiZGF0ZV9nZXRfbWludXRlX29mX3llYXJcIixcbiAgICBcImRhdGVfZ2V0X21vbnRoXCIsXG4gICAgXCJkYXRlX2dldF9zZWNvbmRcIixcbiAgICBcImRhdGVfZ2V0X3NlY29uZF9vZl95ZWFyXCIsXG4gICAgXCJkYXRlX2dldF90aW1lem9uZVwiLFxuICAgIFwiZGF0ZV9nZXRfd2Vla1wiLFxuICAgIFwiZGF0ZV9nZXRfd2Vla2RheVwiLFxuICAgIFwiZGF0ZV9nZXRfeWVhclwiLFxuICAgIFwiZGF0ZV9ob3VyX3NwYW5cIixcbiAgICBcImRhdGVfaW5jX2RheVwiLFxuICAgIFwiZGF0ZV9pbmNfaG91clwiLFxuICAgIFwiZGF0ZV9pbmNfbWludXRlXCIsXG4gICAgXCJkYXRlX2luY19tb250aFwiLFxuICAgIFwiZGF0ZV9pbmNfc2Vjb25kXCIsXG4gICAgXCJkYXRlX2luY193ZWVrXCIsXG4gICAgXCJkYXRlX2luY195ZWFyXCIsXG4gICAgXCJkYXRlX2lzX3RvZGF5XCIsXG4gICAgXCJkYXRlX2xlYXBfeWVhclwiLFxuICAgIFwiZGF0ZV9taW51dGVfc3BhblwiLFxuICAgIFwiZGF0ZV9tb250aF9zcGFuXCIsXG4gICAgXCJkYXRlX3NlY29uZF9zcGFuXCIsXG4gICAgXCJkYXRlX3NldF90aW1lem9uZVwiLFxuICAgIFwiZGF0ZV90aW1lX29mXCIsXG4gICAgXCJkYXRlX3RpbWVfc3RyaW5nXCIsXG4gICAgXCJkYXRlX3ZhbGlkX2RhdGV0aW1lXCIsXG4gICAgXCJkYXRlX3dlZWtfc3BhblwiLFxuICAgIFwiZGF0ZV95ZWFyX3NwYW5cIixcbiAgICBcImRiX3RvX2xpblwiLFxuICAgIFwiZGJnX2FkZF9mb250X2dseXBoc1wiLFxuICAgIFwiZGJnX2J1dHRvblwiLFxuICAgIFwiZGJnX2NoZWNrYm94XCIsXG4gICAgXCJkYmdfY29sb3JcIixcbiAgICBcImRiZ19jb2xvdXJcIixcbiAgICBcImRiZ19kcm9wX2Rvd25cIixcbiAgICBcImRiZ19zYW1lX2xpbmVcIixcbiAgICBcImRiZ19zZWN0aW9uXCIsXG4gICAgXCJkYmdfc2VjdGlvbl9kZWxldGVcIixcbiAgICBcImRiZ19zZWN0aW9uX2V4aXN0c1wiLFxuICAgIFwiZGJnX3NsaWRlclwiLFxuICAgIFwiZGJnX3NsaWRlcl9pbnRcIixcbiAgICBcImRiZ19zcHJpdGVcIixcbiAgICBcImRiZ190ZXh0XCIsXG4gICAgXCJkYmdfdGV4dF9pbnB1dFwiLFxuICAgIFwiZGJnX3ZpZXdcIixcbiAgICBcImRiZ192aWV3X2RlbGV0ZVwiLFxuICAgIFwiZGJnX3ZpZXdfZXhpc3RzXCIsXG4gICAgXCJkYmdfd2F0Y2hcIixcbiAgICBcImRjb3NcIixcbiAgICBcImRlYnVnX2V2ZW50XCIsXG4gICAgXCJkZWJ1Z19nZXRfY2FsbHN0YWNrXCIsXG4gICAgXCJkZWd0b3JhZFwiLFxuICAgIFwiZGV2aWNlX2dldF90aWx0X3hcIixcbiAgICBcImRldmljZV9nZXRfdGlsdF95XCIsXG4gICAgXCJkZXZpY2VfZ2V0X3RpbHRfelwiLFxuICAgIFwiZGV2aWNlX2lzX2tleXBhZF9vcGVuXCIsXG4gICAgXCJkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uXCIsXG4gICAgXCJkZXZpY2VfbW91c2VfY2hlY2tfYnV0dG9uX3ByZXNzZWRcIixcbiAgICBcImRldmljZV9tb3VzZV9jaGVja19idXR0b25fcmVsZWFzZWRcIixcbiAgICBcImRldmljZV9tb3VzZV9kYmNsaWNrX2VuYWJsZVwiLFxuICAgIFwiZGV2aWNlX21vdXNlX3Jhd194XCIsXG4gICAgXCJkZXZpY2VfbW91c2VfcmF3X3lcIixcbiAgICBcImRldmljZV9tb3VzZV94XCIsXG4gICAgXCJkZXZpY2VfbW91c2VfeF90b19ndWlcIixcbiAgICBcImRldmljZV9tb3VzZV95XCIsXG4gICAgXCJkZXZpY2VfbW91c2VfeV90b19ndWlcIixcbiAgICBcImRpcmVjdG9yeV9jcmVhdGVcIixcbiAgICBcImRpcmVjdG9yeV9kZXN0cm95XCIsXG4gICAgXCJkaXJlY3RvcnlfZXhpc3RzXCIsXG4gICAgXCJkaXNwbGF5X2dldF9kcGlfeFwiLFxuICAgIFwiZGlzcGxheV9nZXRfZHBpX3lcIixcbiAgICBcImRpc3BsYXlfZ2V0X2ZyZXF1ZW5jeVwiLFxuICAgIFwiZGlzcGxheV9nZXRfZ3VpX2hlaWdodFwiLFxuICAgIFwiZGlzcGxheV9nZXRfZ3VpX3dpZHRoXCIsXG4gICAgXCJkaXNwbGF5X2dldF9oZWlnaHRcIixcbiAgICBcImRpc3BsYXlfZ2V0X29yaWVudGF0aW9uXCIsXG4gICAgXCJkaXNwbGF5X2dldF9zbGVlcF9tYXJnaW5cIixcbiAgICBcImRpc3BsYXlfZ2V0X3RpbWluZ19tZXRob2RcIixcbiAgICBcImRpc3BsYXlfZ2V0X3dpZHRoXCIsXG4gICAgXCJkaXNwbGF5X21vdXNlX2dldF94XCIsXG4gICAgXCJkaXNwbGF5X21vdXNlX2dldF95XCIsXG4gICAgXCJkaXNwbGF5X21vdXNlX3NldFwiLFxuICAgIFwiZGlzcGxheV9yZXNldFwiLFxuICAgIFwiZGlzcGxheV9zZXRfZ3VpX21heGltaXNlXCIsXG4gICAgXCJkaXNwbGF5X3NldF9ndWlfbWF4aW1pemVcIixcbiAgICBcImRpc3BsYXlfc2V0X2d1aV9zaXplXCIsXG4gICAgXCJkaXNwbGF5X3NldF9zbGVlcF9tYXJnaW5cIixcbiAgICBcImRpc3BsYXlfc2V0X3RpbWluZ19tZXRob2RcIixcbiAgICBcImRpc3BsYXlfc2V0X3VpX3Zpc2liaWxpdHlcIixcbiAgICBcImRpc3RhbmNlX3RvX29iamVjdFwiLFxuICAgIFwiZGlzdGFuY2VfdG9fcG9pbnRcIixcbiAgICBcImRvdF9wcm9kdWN0XCIsXG4gICAgXCJkb3RfcHJvZHVjdF8zZFwiLFxuICAgIFwiZG90X3Byb2R1Y3RfM2Rfbm9ybWFsaXNlZFwiLFxuICAgIFwiZG90X3Byb2R1Y3RfM2Rfbm9ybWFsaXplZFwiLFxuICAgIFwiZG90X3Byb2R1Y3Rfbm9ybWFsaXNlZFwiLFxuICAgIFwiZG90X3Byb2R1Y3Rfbm9ybWFsaXplZFwiLFxuICAgIFwiZHJhd19hcnJvd1wiLFxuICAgIFwiZHJhd19idXR0b25cIixcbiAgICBcImRyYXdfY2lyY2xlXCIsXG4gICAgXCJkcmF3X2NpcmNsZV9jb2xvclwiLFxuICAgIFwiZHJhd19jaXJjbGVfY29sb3VyXCIsXG4gICAgXCJkcmF3X2NsZWFyXCIsXG4gICAgXCJkcmF3X2NsZWFyX2FscGhhXCIsXG4gICAgXCJkcmF3X2VsbGlwc2VcIixcbiAgICBcImRyYXdfZWxsaXBzZV9jb2xvclwiLFxuICAgIFwiZHJhd19lbGxpcHNlX2NvbG91clwiLFxuICAgIFwiZHJhd19lbmFibGVfZHJhd2V2ZW50XCIsXG4gICAgXCJkcmF3X2VuYWJsZV9za2VsZXRvbl9ibGVuZG1vZGVzXCIsXG4gICAgXCJkcmF3X2VuYWJsZV9zd2ZfYWFcIixcbiAgICBcImRyYXdfZmx1c2hcIixcbiAgICBcImRyYXdfZ2V0X2FscGhhXCIsXG4gICAgXCJkcmF3X2dldF9jb2xvclwiLFxuICAgIFwiZHJhd19nZXRfY29sb3VyXCIsXG4gICAgXCJkcmF3X2dldF9lbmFibGVfc2tlbGV0b25fYmxlbmRtb2Rlc1wiLFxuICAgIFwiZHJhd19nZXRfZm9udFwiLFxuICAgIFwiZHJhd19nZXRfaGFsaWduXCIsXG4gICAgXCJkcmF3X2dldF9saWdodGluZ1wiLFxuICAgIFwiZHJhd19nZXRfc3dmX2FhX2xldmVsXCIsXG4gICAgXCJkcmF3X2dldF92YWxpZ25cIixcbiAgICBcImRyYXdfZ2V0cGl4ZWxcIixcbiAgICBcImRyYXdfZ2V0cGl4ZWxfZXh0XCIsXG4gICAgXCJkcmF3X2hlYWx0aGJhclwiLFxuICAgIFwiZHJhd19oaWdoc2NvcmVcIixcbiAgICBcImRyYXdfbGlnaHRfZGVmaW5lX2FtYmllbnRcIixcbiAgICBcImRyYXdfbGlnaHRfZGVmaW5lX2RpcmVjdGlvblwiLFxuICAgIFwiZHJhd19saWdodF9kZWZpbmVfcG9pbnRcIixcbiAgICBcImRyYXdfbGlnaHRfZW5hYmxlXCIsXG4gICAgXCJkcmF3X2xpZ2h0X2dldFwiLFxuICAgIFwiZHJhd19saWdodF9nZXRfYW1iaWVudFwiLFxuICAgIFwiZHJhd19saW5lXCIsXG4gICAgXCJkcmF3X2xpbmVfY29sb3JcIixcbiAgICBcImRyYXdfbGluZV9jb2xvdXJcIixcbiAgICBcImRyYXdfbGluZV93aWR0aFwiLFxuICAgIFwiZHJhd19saW5lX3dpZHRoX2NvbG9yXCIsXG4gICAgXCJkcmF3X2xpbmVfd2lkdGhfY29sb3VyXCIsXG4gICAgXCJkcmF3X3BhdGhcIixcbiAgICBcImRyYXdfcG9pbnRcIixcbiAgICBcImRyYXdfcG9pbnRfY29sb3JcIixcbiAgICBcImRyYXdfcG9pbnRfY29sb3VyXCIsXG4gICAgXCJkcmF3X3ByaW1pdGl2ZV9iZWdpblwiLFxuICAgIFwiZHJhd19wcmltaXRpdmVfYmVnaW5fdGV4dHVyZVwiLFxuICAgIFwiZHJhd19wcmltaXRpdmVfZW5kXCIsXG4gICAgXCJkcmF3X3JlY3RhbmdsZVwiLFxuICAgIFwiZHJhd19yZWN0YW5nbGVfY29sb3JcIixcbiAgICBcImRyYXdfcmVjdGFuZ2xlX2NvbG91clwiLFxuICAgIFwiZHJhd19yb3VuZHJlY3RcIixcbiAgICBcImRyYXdfcm91bmRyZWN0X2NvbG9yXCIsXG4gICAgXCJkcmF3X3JvdW5kcmVjdF9jb2xvcl9leHRcIixcbiAgICBcImRyYXdfcm91bmRyZWN0X2NvbG91clwiLFxuICAgIFwiZHJhd19yb3VuZHJlY3RfY29sb3VyX2V4dFwiLFxuICAgIFwiZHJhd19yb3VuZHJlY3RfZXh0XCIsXG4gICAgXCJkcmF3X3NlbGZcIixcbiAgICBcImRyYXdfc2V0X2FscGhhXCIsXG4gICAgXCJkcmF3X3NldF9jaXJjbGVfcHJlY2lzaW9uXCIsXG4gICAgXCJkcmF3X3NldF9jb2xvclwiLFxuICAgIFwiZHJhd19zZXRfY29sb3VyXCIsXG4gICAgXCJkcmF3X3NldF9mb250XCIsXG4gICAgXCJkcmF3X3NldF9oYWxpZ25cIixcbiAgICBcImRyYXdfc2V0X2xpZ2h0aW5nXCIsXG4gICAgXCJkcmF3X3NldF9zd2ZfYWFfbGV2ZWxcIixcbiAgICBcImRyYXdfc2V0X3ZhbGlnblwiLFxuICAgIFwiZHJhd19za2VsZXRvblwiLFxuICAgIFwiZHJhd19za2VsZXRvbl9jb2xsaXNpb25cIixcbiAgICBcImRyYXdfc2tlbGV0b25faW5zdGFuY2VcIixcbiAgICBcImRyYXdfc2tlbGV0b25fdGltZVwiLFxuICAgIFwiZHJhd19zcHJpdGVcIixcbiAgICBcImRyYXdfc3ByaXRlX2V4dFwiLFxuICAgIFwiZHJhd19zcHJpdGVfZ2VuZXJhbFwiLFxuICAgIFwiZHJhd19zcHJpdGVfcGFydFwiLFxuICAgIFwiZHJhd19zcHJpdGVfcGFydF9leHRcIixcbiAgICBcImRyYXdfc3ByaXRlX3Bvc1wiLFxuICAgIFwiZHJhd19zcHJpdGVfc3RyZXRjaGVkXCIsXG4gICAgXCJkcmF3X3Nwcml0ZV9zdHJldGNoZWRfZXh0XCIsXG4gICAgXCJkcmF3X3Nwcml0ZV90aWxlZFwiLFxuICAgIFwiZHJhd19zcHJpdGVfdGlsZWRfZXh0XCIsXG4gICAgXCJkcmF3X3N1cmZhY2VcIixcbiAgICBcImRyYXdfc3VyZmFjZV9leHRcIixcbiAgICBcImRyYXdfc3VyZmFjZV9nZW5lcmFsXCIsXG4gICAgXCJkcmF3X3N1cmZhY2VfcGFydFwiLFxuICAgIFwiZHJhd19zdXJmYWNlX3BhcnRfZXh0XCIsXG4gICAgXCJkcmF3X3N1cmZhY2Vfc3RyZXRjaGVkXCIsXG4gICAgXCJkcmF3X3N1cmZhY2Vfc3RyZXRjaGVkX2V4dFwiLFxuICAgIFwiZHJhd19zdXJmYWNlX3RpbGVkXCIsXG4gICAgXCJkcmF3X3N1cmZhY2VfdGlsZWRfZXh0XCIsXG4gICAgXCJkcmF3X3RleHRcIixcbiAgICBcImRyYXdfdGV4dF9jb2xvclwiLFxuICAgIFwiZHJhd190ZXh0X2NvbG91clwiLFxuICAgIFwiZHJhd190ZXh0X2V4dFwiLFxuICAgIFwiZHJhd190ZXh0X2V4dF9jb2xvclwiLFxuICAgIFwiZHJhd190ZXh0X2V4dF9jb2xvdXJcIixcbiAgICBcImRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRcIixcbiAgICBcImRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRfY29sb3JcIixcbiAgICBcImRyYXdfdGV4dF9leHRfdHJhbnNmb3JtZWRfY29sb3VyXCIsXG4gICAgXCJkcmF3X3RleHRfdHJhbnNmb3JtZWRcIixcbiAgICBcImRyYXdfdGV4dF90cmFuc2Zvcm1lZF9jb2xvclwiLFxuICAgIFwiZHJhd190ZXh0X3RyYW5zZm9ybWVkX2NvbG91clwiLFxuICAgIFwiZHJhd190ZXh0dXJlX2ZsdXNoXCIsXG4gICAgXCJkcmF3X3RpbGVcIixcbiAgICBcImRyYXdfdGlsZW1hcFwiLFxuICAgIFwiZHJhd190cmlhbmdsZVwiLFxuICAgIFwiZHJhd190cmlhbmdsZV9jb2xvclwiLFxuICAgIFwiZHJhd190cmlhbmdsZV9jb2xvdXJcIixcbiAgICBcImRyYXdfdmVydGV4XCIsXG4gICAgXCJkcmF3X3ZlcnRleF9jb2xvclwiLFxuICAgIFwiZHJhd192ZXJ0ZXhfY29sb3VyXCIsXG4gICAgXCJkcmF3X3ZlcnRleF90ZXh0dXJlXCIsXG4gICAgXCJkcmF3X3ZlcnRleF90ZXh0dXJlX2NvbG9yXCIsXG4gICAgXCJkcmF3X3ZlcnRleF90ZXh0dXJlX2NvbG91clwiLFxuICAgIFwiZHNfZXhpc3RzXCIsXG4gICAgXCJkc19ncmlkX2FkZFwiLFxuICAgIFwiZHNfZ3JpZF9hZGRfZGlza1wiLFxuICAgIFwiZHNfZ3JpZF9hZGRfZ3JpZF9yZWdpb25cIixcbiAgICBcImRzX2dyaWRfYWRkX3JlZ2lvblwiLFxuICAgIFwiZHNfZ3JpZF9jbGVhclwiLFxuICAgIFwiZHNfZ3JpZF9jb3B5XCIsXG4gICAgXCJkc19ncmlkX2NyZWF0ZVwiLFxuICAgIFwiZHNfZ3JpZF9kZXN0cm95XCIsXG4gICAgXCJkc19ncmlkX2dldFwiLFxuICAgIFwiZHNfZ3JpZF9nZXRfZGlza19tYXhcIixcbiAgICBcImRzX2dyaWRfZ2V0X2Rpc2tfbWVhblwiLFxuICAgIFwiZHNfZ3JpZF9nZXRfZGlza19taW5cIixcbiAgICBcImRzX2dyaWRfZ2V0X2Rpc2tfc3VtXCIsXG4gICAgXCJkc19ncmlkX2dldF9tYXhcIixcbiAgICBcImRzX2dyaWRfZ2V0X21lYW5cIixcbiAgICBcImRzX2dyaWRfZ2V0X21pblwiLFxuICAgIFwiZHNfZ3JpZF9nZXRfc3VtXCIsXG4gICAgXCJkc19ncmlkX2hlaWdodFwiLFxuICAgIFwiZHNfZ3JpZF9tdWx0aXBseVwiLFxuICAgIFwiZHNfZ3JpZF9tdWx0aXBseV9kaXNrXCIsXG4gICAgXCJkc19ncmlkX211bHRpcGx5X2dyaWRfcmVnaW9uXCIsXG4gICAgXCJkc19ncmlkX211bHRpcGx5X3JlZ2lvblwiLFxuICAgIFwiZHNfZ3JpZF9yZWFkXCIsXG4gICAgXCJkc19ncmlkX3Jlc2l6ZVwiLFxuICAgIFwiZHNfZ3JpZF9zZXRcIixcbiAgICBcImRzX2dyaWRfc2V0X2Rpc2tcIixcbiAgICBcImRzX2dyaWRfc2V0X2dyaWRfcmVnaW9uXCIsXG4gICAgXCJkc19ncmlkX3NldF9yZWdpb25cIixcbiAgICBcImRzX2dyaWRfc2h1ZmZsZVwiLFxuICAgIFwiZHNfZ3JpZF9zb3J0XCIsXG4gICAgXCJkc19ncmlkX3RvX21wX2dyaWRcIixcbiAgICBcImRzX2dyaWRfdmFsdWVfZGlza19leGlzdHNcIixcbiAgICBcImRzX2dyaWRfdmFsdWVfZGlza194XCIsXG4gICAgXCJkc19ncmlkX3ZhbHVlX2Rpc2tfeVwiLFxuICAgIFwiZHNfZ3JpZF92YWx1ZV9leGlzdHNcIixcbiAgICBcImRzX2dyaWRfdmFsdWVfeFwiLFxuICAgIFwiZHNfZ3JpZF92YWx1ZV95XCIsXG4gICAgXCJkc19ncmlkX3dpZHRoXCIsXG4gICAgXCJkc19ncmlkX3dyaXRlXCIsXG4gICAgXCJkc19saXN0X2FkZFwiLFxuICAgIFwiZHNfbGlzdF9jbGVhclwiLFxuICAgIFwiZHNfbGlzdF9jb3B5XCIsXG4gICAgXCJkc19saXN0X2NyZWF0ZVwiLFxuICAgIFwiZHNfbGlzdF9kZWxldGVcIixcbiAgICBcImRzX2xpc3RfZGVzdHJveVwiLFxuICAgIFwiZHNfbGlzdF9lbXB0eVwiLFxuICAgIFwiZHNfbGlzdF9maW5kX2luZGV4XCIsXG4gICAgXCJkc19saXN0X2ZpbmRfdmFsdWVcIixcbiAgICBcImRzX2xpc3RfaW5zZXJ0XCIsXG4gICAgXCJkc19saXN0X2lzX2xpc3RcIixcbiAgICBcImRzX2xpc3RfaXNfbWFwXCIsXG4gICAgXCJkc19saXN0X21hcmtfYXNfbGlzdFwiLFxuICAgIFwiZHNfbGlzdF9tYXJrX2FzX21hcFwiLFxuICAgIFwiZHNfbGlzdF9yZWFkXCIsXG4gICAgXCJkc19saXN0X3JlcGxhY2VcIixcbiAgICBcImRzX2xpc3Rfc2V0XCIsXG4gICAgXCJkc19saXN0X3NodWZmbGVcIixcbiAgICBcImRzX2xpc3Rfc2l6ZVwiLFxuICAgIFwiZHNfbGlzdF9zb3J0XCIsXG4gICAgXCJkc19saXN0X3dyaXRlXCIsXG4gICAgXCJkc19tYXBfYWRkXCIsXG4gICAgXCJkc19tYXBfYWRkX2xpc3RcIixcbiAgICBcImRzX21hcF9hZGRfbWFwXCIsXG4gICAgXCJkc19tYXBfY2xlYXJcIixcbiAgICBcImRzX21hcF9jb3B5XCIsXG4gICAgXCJkc19tYXBfY3JlYXRlXCIsXG4gICAgXCJkc19tYXBfZGVsZXRlXCIsXG4gICAgXCJkc19tYXBfZGVzdHJveVwiLFxuICAgIFwiZHNfbWFwX2VtcHR5XCIsXG4gICAgXCJkc19tYXBfZXhpc3RzXCIsXG4gICAgXCJkc19tYXBfZmluZF9maXJzdFwiLFxuICAgIFwiZHNfbWFwX2ZpbmRfbGFzdFwiLFxuICAgIFwiZHNfbWFwX2ZpbmRfbmV4dFwiLFxuICAgIFwiZHNfbWFwX2ZpbmRfcHJldmlvdXNcIixcbiAgICBcImRzX21hcF9maW5kX3ZhbHVlXCIsXG4gICAgXCJkc19tYXBfaXNfbGlzdFwiLFxuICAgIFwiZHNfbWFwX2lzX21hcFwiLFxuICAgIFwiZHNfbWFwX2tleXNfdG9fYXJyYXlcIixcbiAgICBcImRzX21hcF9yZWFkXCIsXG4gICAgXCJkc19tYXBfcmVwbGFjZVwiLFxuICAgIFwiZHNfbWFwX3JlcGxhY2VfbGlzdFwiLFxuICAgIFwiZHNfbWFwX3JlcGxhY2VfbWFwXCIsXG4gICAgXCJkc19tYXBfc2VjdXJlX2xvYWRcIixcbiAgICBcImRzX21hcF9zZWN1cmVfbG9hZF9idWZmZXJcIixcbiAgICBcImRzX21hcF9zZWN1cmVfc2F2ZVwiLFxuICAgIFwiZHNfbWFwX3NlY3VyZV9zYXZlX2J1ZmZlclwiLFxuICAgIFwiZHNfbWFwX3NldFwiLFxuICAgIFwiZHNfbWFwX3NpemVcIixcbiAgICBcImRzX21hcF92YWx1ZXNfdG9fYXJyYXlcIixcbiAgICBcImRzX21hcF93cml0ZVwiLFxuICAgIFwiZHNfcHJpb3JpdHlfYWRkXCIsXG4gICAgXCJkc19wcmlvcml0eV9jaGFuZ2VfcHJpb3JpdHlcIixcbiAgICBcImRzX3ByaW9yaXR5X2NsZWFyXCIsXG4gICAgXCJkc19wcmlvcml0eV9jb3B5XCIsXG4gICAgXCJkc19wcmlvcml0eV9jcmVhdGVcIixcbiAgICBcImRzX3ByaW9yaXR5X2RlbGV0ZV9tYXhcIixcbiAgICBcImRzX3ByaW9yaXR5X2RlbGV0ZV9taW5cIixcbiAgICBcImRzX3ByaW9yaXR5X2RlbGV0ZV92YWx1ZVwiLFxuICAgIFwiZHNfcHJpb3JpdHlfZGVzdHJveVwiLFxuICAgIFwiZHNfcHJpb3JpdHlfZW1wdHlcIixcbiAgICBcImRzX3ByaW9yaXR5X2ZpbmRfbWF4XCIsXG4gICAgXCJkc19wcmlvcml0eV9maW5kX21pblwiLFxuICAgIFwiZHNfcHJpb3JpdHlfZmluZF9wcmlvcml0eVwiLFxuICAgIFwiZHNfcHJpb3JpdHlfcmVhZFwiLFxuICAgIFwiZHNfcHJpb3JpdHlfc2l6ZVwiLFxuICAgIFwiZHNfcHJpb3JpdHlfd3JpdGVcIixcbiAgICBcImRzX3F1ZXVlX2NsZWFyXCIsXG4gICAgXCJkc19xdWV1ZV9jb3B5XCIsXG4gICAgXCJkc19xdWV1ZV9jcmVhdGVcIixcbiAgICBcImRzX3F1ZXVlX2RlcXVldWVcIixcbiAgICBcImRzX3F1ZXVlX2Rlc3Ryb3lcIixcbiAgICBcImRzX3F1ZXVlX2VtcHR5XCIsXG4gICAgXCJkc19xdWV1ZV9lbnF1ZXVlXCIsXG4gICAgXCJkc19xdWV1ZV9oZWFkXCIsXG4gICAgXCJkc19xdWV1ZV9yZWFkXCIsXG4gICAgXCJkc19xdWV1ZV9zaXplXCIsXG4gICAgXCJkc19xdWV1ZV90YWlsXCIsXG4gICAgXCJkc19xdWV1ZV93cml0ZVwiLFxuICAgIFwiZHNfc2V0X3ByZWNpc2lvblwiLFxuICAgIFwiZHNfc3RhY2tfY2xlYXJcIixcbiAgICBcImRzX3N0YWNrX2NvcHlcIixcbiAgICBcImRzX3N0YWNrX2NyZWF0ZVwiLFxuICAgIFwiZHNfc3RhY2tfZGVzdHJveVwiLFxuICAgIFwiZHNfc3RhY2tfZW1wdHlcIixcbiAgICBcImRzX3N0YWNrX3BvcFwiLFxuICAgIFwiZHNfc3RhY2tfcHVzaFwiLFxuICAgIFwiZHNfc3RhY2tfcmVhZFwiLFxuICAgIFwiZHNfc3RhY2tfc2l6ZVwiLFxuICAgIFwiZHNfc3RhY2tfdG9wXCIsXG4gICAgXCJkc19zdGFja193cml0ZVwiLFxuICAgIFwiZHNpblwiLFxuICAgIFwiZHRhblwiLFxuICAgIFwiZWZmZWN0X2NsZWFyXCIsXG4gICAgXCJlZmZlY3RfY3JlYXRlX2Fib3ZlXCIsXG4gICAgXCJlZmZlY3RfY3JlYXRlX2JlbG93XCIsXG4gICAgXCJlZmZlY3RfY3JlYXRlX2RlcHRoXCIsXG4gICAgXCJlZmZlY3RfY3JlYXRlX2xheWVyXCIsXG4gICAgXCJlbnZpcm9ubWVudF9nZXRfdmFyaWFibGVcIixcbiAgICBcImV2ZW50X2luaGVyaXRlZFwiLFxuICAgIFwiZXZlbnRfcGVyZm9ybVwiLFxuICAgIFwiZXZlbnRfcGVyZm9ybV9hc3luY1wiLFxuICAgIFwiZXZlbnRfcGVyZm9ybV9vYmplY3RcIixcbiAgICBcImV2ZW50X3VzZXJcIixcbiAgICBcImV4Y2VwdGlvbl91bmhhbmRsZWRfaGFuZGxlclwiLFxuICAgIFwiZXhwXCIsXG4gICAgXCJleHRlbnNpb25fZXhpc3RzXCIsXG4gICAgXCJleHRlbnNpb25fZ2V0X29wdGlvbl9jb3VudFwiLFxuICAgIFwiZXh0ZW5zaW9uX2dldF9vcHRpb25fbmFtZXNcIixcbiAgICBcImV4dGVuc2lvbl9nZXRfb3B0aW9uX3ZhbHVlXCIsXG4gICAgXCJleHRlbnNpb25fZ2V0X29wdGlvbnNcIixcbiAgICBcImV4dGVuc2lvbl9nZXRfdmVyc2lvblwiLFxuICAgIFwiZXh0ZXJuYWxfY2FsbFwiLFxuICAgIFwiZXh0ZXJuYWxfZGVmaW5lXCIsXG4gICAgXCJleHRlcm5hbF9mcmVlXCIsXG4gICAgXCJmaWxlX2F0dHJpYnV0ZXNcIixcbiAgICBcImZpbGVfYmluX2Nsb3NlXCIsXG4gICAgXCJmaWxlX2Jpbl9vcGVuXCIsXG4gICAgXCJmaWxlX2Jpbl9wb3NpdGlvblwiLFxuICAgIFwiZmlsZV9iaW5fcmVhZF9ieXRlXCIsXG4gICAgXCJmaWxlX2Jpbl9yZXdyaXRlXCIsXG4gICAgXCJmaWxlX2Jpbl9zZWVrXCIsXG4gICAgXCJmaWxlX2Jpbl9zaXplXCIsXG4gICAgXCJmaWxlX2Jpbl93cml0ZV9ieXRlXCIsXG4gICAgXCJmaWxlX2NvcHlcIixcbiAgICBcImZpbGVfZGVsZXRlXCIsXG4gICAgXCJmaWxlX2V4aXN0c1wiLFxuICAgIFwiZmlsZV9maW5kX2Nsb3NlXCIsXG4gICAgXCJmaWxlX2ZpbmRfZmlyc3RcIixcbiAgICBcImZpbGVfZmluZF9uZXh0XCIsXG4gICAgXCJmaWxlX3JlbmFtZVwiLFxuICAgIFwiZmlsZV90ZXh0X2Nsb3NlXCIsXG4gICAgXCJmaWxlX3RleHRfZW9mXCIsXG4gICAgXCJmaWxlX3RleHRfZW9sblwiLFxuICAgIFwiZmlsZV90ZXh0X29wZW5fYXBwZW5kXCIsXG4gICAgXCJmaWxlX3RleHRfb3Blbl9mcm9tX3N0cmluZ1wiLFxuICAgIFwiZmlsZV90ZXh0X29wZW5fcmVhZFwiLFxuICAgIFwiZmlsZV90ZXh0X29wZW5fd3JpdGVcIixcbiAgICBcImZpbGVfdGV4dF9yZWFkX3JlYWxcIixcbiAgICBcImZpbGVfdGV4dF9yZWFkX3N0cmluZ1wiLFxuICAgIFwiZmlsZV90ZXh0X3JlYWRsblwiLFxuICAgIFwiZmlsZV90ZXh0X3dyaXRlX3JlYWxcIixcbiAgICBcImZpbGVfdGV4dF93cml0ZV9zdHJpbmdcIixcbiAgICBcImZpbGVfdGV4dF93cml0ZWxuXCIsXG4gICAgXCJmaWxlbmFtZV9jaGFuZ2VfZXh0XCIsXG4gICAgXCJmaWxlbmFtZV9kaXJcIixcbiAgICBcImZpbGVuYW1lX2RyaXZlXCIsXG4gICAgXCJmaWxlbmFtZV9leHRcIixcbiAgICBcImZpbGVuYW1lX25hbWVcIixcbiAgICBcImZpbGVuYW1lX3BhdGhcIixcbiAgICBcImZsb29yXCIsXG4gICAgXCJmb250X2FkZFwiLFxuICAgIFwiZm9udF9hZGRfZW5hYmxlX2FhXCIsXG4gICAgXCJmb250X2FkZF9nZXRfZW5hYmxlX2FhXCIsXG4gICAgXCJmb250X2FkZF9zcHJpdGVcIixcbiAgICBcImZvbnRfYWRkX3Nwcml0ZV9leHRcIixcbiAgICBcImZvbnRfY2FjaGVfZ2x5cGhcIixcbiAgICBcImZvbnRfZGVsZXRlXCIsXG4gICAgXCJmb250X2VuYWJsZV9lZmZlY3RzXCIsXG4gICAgXCJmb250X2VuYWJsZV9zZGZcIixcbiAgICBcImZvbnRfZXhpc3RzXCIsXG4gICAgXCJmb250X2dldF9ib2xkXCIsXG4gICAgXCJmb250X2dldF9maXJzdFwiLFxuICAgIFwiZm9udF9nZXRfZm9udG5hbWVcIixcbiAgICBcImZvbnRfZ2V0X2luZm9cIixcbiAgICBcImZvbnRfZ2V0X2l0YWxpY1wiLFxuICAgIFwiZm9udF9nZXRfbGFzdFwiLFxuICAgIFwiZm9udF9nZXRfbmFtZVwiLFxuICAgIFwiZm9udF9nZXRfc2RmX2VuYWJsZWRcIixcbiAgICBcImZvbnRfZ2V0X3NkZl9zcHJlYWRcIixcbiAgICBcImZvbnRfZ2V0X3NpemVcIixcbiAgICBcImZvbnRfZ2V0X3RleHR1cmVcIixcbiAgICBcImZvbnRfZ2V0X3V2c1wiLFxuICAgIFwiZm9udF9yZXBsYWNlX3Nwcml0ZVwiLFxuICAgIFwiZm9udF9yZXBsYWNlX3Nwcml0ZV9leHRcIixcbiAgICBcImZvbnRfc2RmX3NwcmVhZFwiLFxuICAgIFwiZm9udF9zZXRfY2FjaGVfc2l6ZVwiLFxuICAgIFwiZnJhY1wiLFxuICAgIFwiZnhfY3JlYXRlXCIsXG4gICAgXCJmeF9nZXRfbmFtZVwiLFxuICAgIFwiZnhfZ2V0X3BhcmFtZXRlclwiLFxuICAgIFwiZnhfZ2V0X3BhcmFtZXRlcl9uYW1lc1wiLFxuICAgIFwiZnhfZ2V0X3BhcmFtZXRlcnNcIixcbiAgICBcImZ4X2dldF9zaW5nbGVfbGF5ZXJcIixcbiAgICBcImZ4X3NldF9wYXJhbWV0ZXJcIixcbiAgICBcImZ4X3NldF9wYXJhbWV0ZXJzXCIsXG4gICAgXCJmeF9zZXRfc2luZ2xlX2xheWVyXCIsXG4gICAgXCJnYW1lX2NoYW5nZVwiLFxuICAgIFwiZ2FtZV9lbmRcIixcbiAgICBcImdhbWVfZ2V0X3NwZWVkXCIsXG4gICAgXCJnYW1lX2xvYWRcIixcbiAgICBcImdhbWVfbG9hZF9idWZmZXJcIixcbiAgICBcImdhbWVfcmVzdGFydFwiLFxuICAgIFwiZ2FtZV9zYXZlXCIsXG4gICAgXCJnYW1lX3NhdmVfYnVmZmVyXCIsXG4gICAgXCJnYW1lX3NldF9zcGVlZFwiLFxuICAgIFwiZ2FtZXBhZF9heGlzX2NvdW50XCIsXG4gICAgXCJnYW1lcGFkX2F4aXNfdmFsdWVcIixcbiAgICBcImdhbWVwYWRfYnV0dG9uX2NoZWNrXCIsXG4gICAgXCJnYW1lcGFkX2J1dHRvbl9jaGVja19wcmVzc2VkXCIsXG4gICAgXCJnYW1lcGFkX2J1dHRvbl9jaGVja19yZWxlYXNlZFwiLFxuICAgIFwiZ2FtZXBhZF9idXR0b25fY291bnRcIixcbiAgICBcImdhbWVwYWRfYnV0dG9uX3ZhbHVlXCIsXG4gICAgXCJnYW1lcGFkX2dldF9heGlzX2RlYWR6b25lXCIsXG4gICAgXCJnYW1lcGFkX2dldF9idXR0b25fdGhyZXNob2xkXCIsXG4gICAgXCJnYW1lcGFkX2dldF9kZXNjcmlwdGlvblwiLFxuICAgIFwiZ2FtZXBhZF9nZXRfZGV2aWNlX2NvdW50XCIsXG4gICAgXCJnYW1lcGFkX2dldF9ndWlkXCIsXG4gICAgXCJnYW1lcGFkX2dldF9tYXBwaW5nXCIsXG4gICAgXCJnYW1lcGFkX2dldF9vcHRpb25cIixcbiAgICBcImdhbWVwYWRfaGF0X2NvdW50XCIsXG4gICAgXCJnYW1lcGFkX2hhdF92YWx1ZVwiLFxuICAgIFwiZ2FtZXBhZF9pc19jb25uZWN0ZWRcIixcbiAgICBcImdhbWVwYWRfaXNfc3VwcG9ydGVkXCIsXG4gICAgXCJnYW1lcGFkX3JlbW92ZV9tYXBwaW5nXCIsXG4gICAgXCJnYW1lcGFkX3NldF9heGlzX2RlYWR6b25lXCIsXG4gICAgXCJnYW1lcGFkX3NldF9idXR0b25fdGhyZXNob2xkXCIsXG4gICAgXCJnYW1lcGFkX3NldF9jb2xvclwiLFxuICAgIFwiZ2FtZXBhZF9zZXRfY29sb3VyXCIsXG4gICAgXCJnYW1lcGFkX3NldF9vcHRpb25cIixcbiAgICBcImdhbWVwYWRfc2V0X3ZpYnJhdGlvblwiLFxuICAgIFwiZ2FtZXBhZF90ZXN0X21hcHBpbmdcIixcbiAgICBcImdjX2NvbGxlY3RcIixcbiAgICBcImdjX2VuYWJsZVwiLFxuICAgIFwiZ2NfZ2V0X3N0YXRzXCIsXG4gICAgXCJnY19nZXRfdGFyZ2V0X2ZyYW1lX3RpbWVcIixcbiAgICBcImdjX2lzX2VuYWJsZWRcIixcbiAgICBcImdjX3RhcmdldF9mcmFtZV90aW1lXCIsXG4gICAgXCJnZXN0dXJlX2RvdWJsZV90YXBfZGlzdGFuY2VcIixcbiAgICBcImdlc3R1cmVfZG91YmxlX3RhcF90aW1lXCIsXG4gICAgXCJnZXN0dXJlX2RyYWdfZGlzdGFuY2VcIixcbiAgICBcImdlc3R1cmVfZHJhZ190aW1lXCIsXG4gICAgXCJnZXN0dXJlX2ZsaWNrX3NwZWVkXCIsXG4gICAgXCJnZXN0dXJlX2dldF9kb3VibGVfdGFwX2Rpc3RhbmNlXCIsXG4gICAgXCJnZXN0dXJlX2dldF9kb3VibGVfdGFwX3RpbWVcIixcbiAgICBcImdlc3R1cmVfZ2V0X2RyYWdfZGlzdGFuY2VcIixcbiAgICBcImdlc3R1cmVfZ2V0X2RyYWdfdGltZVwiLFxuICAgIFwiZ2VzdHVyZV9nZXRfZmxpY2tfc3BlZWRcIixcbiAgICBcImdlc3R1cmVfZ2V0X3BpbmNoX2FuZ2xlX2F3YXlcIixcbiAgICBcImdlc3R1cmVfZ2V0X3BpbmNoX2FuZ2xlX3Rvd2FyZHNcIixcbiAgICBcImdlc3R1cmVfZ2V0X3BpbmNoX2Rpc3RhbmNlXCIsXG4gICAgXCJnZXN0dXJlX2dldF9yb3RhdGVfYW5nbGVcIixcbiAgICBcImdlc3R1cmVfZ2V0X3JvdGF0ZV90aW1lXCIsXG4gICAgXCJnZXN0dXJlX2dldF90YXBfY291bnRcIixcbiAgICBcImdlc3R1cmVfcGluY2hfYW5nbGVfYXdheVwiLFxuICAgIFwiZ2VzdHVyZV9waW5jaF9hbmdsZV90b3dhcmRzXCIsXG4gICAgXCJnZXN0dXJlX3BpbmNoX2Rpc3RhbmNlXCIsXG4gICAgXCJnZXN0dXJlX3JvdGF0ZV9hbmdsZVwiLFxuICAgIFwiZ2VzdHVyZV9yb3RhdGVfdGltZVwiLFxuICAgIFwiZ2VzdHVyZV90YXBfY291bnRcIixcbiAgICBcImdldF9pbnRlZ2VyXCIsXG4gICAgXCJnZXRfaW50ZWdlcl9hc3luY1wiLFxuICAgIFwiZ2V0X2xvZ2luX2FzeW5jXCIsXG4gICAgXCJnZXRfb3Blbl9maWxlbmFtZVwiLFxuICAgIFwiZ2V0X29wZW5fZmlsZW5hbWVfZXh0XCIsXG4gICAgXCJnZXRfc2F2ZV9maWxlbmFtZVwiLFxuICAgIFwiZ2V0X3NhdmVfZmlsZW5hbWVfZXh0XCIsXG4gICAgXCJnZXRfc3RyaW5nXCIsXG4gICAgXCJnZXRfc3RyaW5nX2FzeW5jXCIsXG4gICAgXCJnZXRfdGltZXJcIixcbiAgICBcImdpZl9hZGRfc3VyZmFjZVwiLFxuICAgIFwiZ2lmX29wZW5cIixcbiAgICBcImdpZl9zYXZlXCIsXG4gICAgXCJnaWZfc2F2ZV9idWZmZXJcIixcbiAgICBcImdtbF9wcmFnbWFcIixcbiAgICBcImdtbF9yZWxlYXNlX21vZGVcIixcbiAgICBcImdwdV9nZXRfYWxwaGF0ZXN0ZW5hYmxlXCIsXG4gICAgXCJncHVfZ2V0X2FscGhhdGVzdHJlZlwiLFxuICAgIFwiZ3B1X2dldF9ibGVuZGVuYWJsZVwiLFxuICAgIFwiZ3B1X2dldF9ibGVuZG1vZGVcIixcbiAgICBcImdwdV9nZXRfYmxlbmRtb2RlX2Rlc3RcIixcbiAgICBcImdwdV9nZXRfYmxlbmRtb2RlX2Rlc3RhbHBoYVwiLFxuICAgIFwiZ3B1X2dldF9ibGVuZG1vZGVfZXh0XCIsXG4gICAgXCJncHVfZ2V0X2JsZW5kbW9kZV9leHRfc2VwYWxwaGFcIixcbiAgICBcImdwdV9nZXRfYmxlbmRtb2RlX3NyY1wiLFxuICAgIFwiZ3B1X2dldF9ibGVuZG1vZGVfc3JjYWxwaGFcIixcbiAgICBcImdwdV9nZXRfY29sb3J3cml0ZWVuYWJsZVwiLFxuICAgIFwiZ3B1X2dldF9jb2xvdXJ3cml0ZWVuYWJsZVwiLFxuICAgIFwiZ3B1X2dldF9jdWxsbW9kZVwiLFxuICAgIFwiZ3B1X2dldF9kZXB0aFwiLFxuICAgIFwiZ3B1X2dldF9mb2dcIixcbiAgICBcImdwdV9nZXRfc3RhdGVcIixcbiAgICBcImdwdV9nZXRfdGV4X2ZpbHRlclwiLFxuICAgIFwiZ3B1X2dldF90ZXhfZmlsdGVyX2V4dFwiLFxuICAgIFwiZ3B1X2dldF90ZXhfbWF4X2FuaXNvXCIsXG4gICAgXCJncHVfZ2V0X3RleF9tYXhfYW5pc29fZXh0XCIsXG4gICAgXCJncHVfZ2V0X3RleF9tYXhfbWlwXCIsXG4gICAgXCJncHVfZ2V0X3RleF9tYXhfbWlwX2V4dFwiLFxuICAgIFwiZ3B1X2dldF90ZXhfbWluX21pcFwiLFxuICAgIFwiZ3B1X2dldF90ZXhfbWluX21pcF9leHRcIixcbiAgICBcImdwdV9nZXRfdGV4X21pcF9iaWFzXCIsXG4gICAgXCJncHVfZ2V0X3RleF9taXBfYmlhc19leHRcIixcbiAgICBcImdwdV9nZXRfdGV4X21pcF9lbmFibGVcIixcbiAgICBcImdwdV9nZXRfdGV4X21pcF9lbmFibGVfZXh0XCIsXG4gICAgXCJncHVfZ2V0X3RleF9taXBfZmlsdGVyXCIsXG4gICAgXCJncHVfZ2V0X3RleF9taXBfZmlsdGVyX2V4dFwiLFxuICAgIFwiZ3B1X2dldF90ZXhfcmVwZWF0XCIsXG4gICAgXCJncHVfZ2V0X3RleF9yZXBlYXRfZXh0XCIsXG4gICAgXCJncHVfZ2V0X3RleGZpbHRlclwiLFxuICAgIFwiZ3B1X2dldF90ZXhmaWx0ZXJfZXh0XCIsXG4gICAgXCJncHVfZ2V0X3RleHJlcGVhdFwiLFxuICAgIFwiZ3B1X2dldF90ZXhyZXBlYXRfZXh0XCIsXG4gICAgXCJncHVfZ2V0X3pmdW5jXCIsXG4gICAgXCJncHVfZ2V0X3p0ZXN0ZW5hYmxlXCIsXG4gICAgXCJncHVfZ2V0X3p3cml0ZWVuYWJsZVwiLFxuICAgIFwiZ3B1X3BvcF9zdGF0ZVwiLFxuICAgIFwiZ3B1X3B1c2hfc3RhdGVcIixcbiAgICBcImdwdV9zZXRfYWxwaGF0ZXN0ZW5hYmxlXCIsXG4gICAgXCJncHVfc2V0X2FscGhhdGVzdHJlZlwiLFxuICAgIFwiZ3B1X3NldF9ibGVuZGVuYWJsZVwiLFxuICAgIFwiZ3B1X3NldF9ibGVuZG1vZGVcIixcbiAgICBcImdwdV9zZXRfYmxlbmRtb2RlX2V4dFwiLFxuICAgIFwiZ3B1X3NldF9ibGVuZG1vZGVfZXh0X3NlcGFscGhhXCIsXG4gICAgXCJncHVfc2V0X2NvbG9yd3JpdGVlbmFibGVcIixcbiAgICBcImdwdV9zZXRfY29sb3Vyd3JpdGVlbmFibGVcIixcbiAgICBcImdwdV9zZXRfY3VsbG1vZGVcIixcbiAgICBcImdwdV9zZXRfZGVwdGhcIixcbiAgICBcImdwdV9zZXRfZm9nXCIsXG4gICAgXCJncHVfc2V0X3N0YXRlXCIsXG4gICAgXCJncHVfc2V0X3RleF9maWx0ZXJcIixcbiAgICBcImdwdV9zZXRfdGV4X2ZpbHRlcl9leHRcIixcbiAgICBcImdwdV9zZXRfdGV4X21heF9hbmlzb1wiLFxuICAgIFwiZ3B1X3NldF90ZXhfbWF4X2FuaXNvX2V4dFwiLFxuICAgIFwiZ3B1X3NldF90ZXhfbWF4X21pcFwiLFxuICAgIFwiZ3B1X3NldF90ZXhfbWF4X21pcF9leHRcIixcbiAgICBcImdwdV9zZXRfdGV4X21pbl9taXBcIixcbiAgICBcImdwdV9zZXRfdGV4X21pbl9taXBfZXh0XCIsXG4gICAgXCJncHVfc2V0X3RleF9taXBfYmlhc1wiLFxuICAgIFwiZ3B1X3NldF90ZXhfbWlwX2JpYXNfZXh0XCIsXG4gICAgXCJncHVfc2V0X3RleF9taXBfZW5hYmxlXCIsXG4gICAgXCJncHVfc2V0X3RleF9taXBfZW5hYmxlX2V4dFwiLFxuICAgIFwiZ3B1X3NldF90ZXhfbWlwX2ZpbHRlclwiLFxuICAgIFwiZ3B1X3NldF90ZXhfbWlwX2ZpbHRlcl9leHRcIixcbiAgICBcImdwdV9zZXRfdGV4X3JlcGVhdFwiLFxuICAgIFwiZ3B1X3NldF90ZXhfcmVwZWF0X2V4dFwiLFxuICAgIFwiZ3B1X3NldF90ZXhmaWx0ZXJcIixcbiAgICBcImdwdV9zZXRfdGV4ZmlsdGVyX2V4dFwiLFxuICAgIFwiZ3B1X3NldF90ZXhyZXBlYXRcIixcbiAgICBcImdwdV9zZXRfdGV4cmVwZWF0X2V4dFwiLFxuICAgIFwiZ3B1X3NldF96ZnVuY1wiLFxuICAgIFwiZ3B1X3NldF96dGVzdGVuYWJsZVwiLFxuICAgIFwiZ3B1X3NldF96d3JpdGVlbmFibGVcIixcbiAgICBcImhhbmRsZV9wYXJzZVwiLFxuICAgIFwiaGlnaHNjb3JlX2FkZFwiLFxuICAgIFwiaGlnaHNjb3JlX2NsZWFyXCIsXG4gICAgXCJoaWdoc2NvcmVfbmFtZVwiLFxuICAgIFwiaGlnaHNjb3JlX3ZhbHVlXCIsXG4gICAgXCJodHRwX2dldFwiLFxuICAgIFwiaHR0cF9nZXRfZmlsZVwiLFxuICAgIFwiaHR0cF9nZXRfcmVxdWVzdF9jcm9zc29yaWdpblwiLFxuICAgIFwiaHR0cF9wb3N0X3N0cmluZ1wiLFxuICAgIFwiaHR0cF9yZXF1ZXN0XCIsXG4gICAgXCJodHRwX3NldF9yZXF1ZXN0X2Nyb3Nzb3JpZ2luXCIsXG4gICAgXCJpYXBfYWNxdWlyZVwiLFxuICAgIFwiaWFwX2FjdGl2YXRlXCIsXG4gICAgXCJpYXBfY29uc3VtZVwiLFxuICAgIFwiaWFwX2VudW1lcmF0ZV9wcm9kdWN0c1wiLFxuICAgIFwiaWFwX3Byb2R1Y3RfZGV0YWlsc1wiLFxuICAgIFwiaWFwX3B1cmNoYXNlX2RldGFpbHNcIixcbiAgICBcImlhcF9yZXN0b3JlX2FsbFwiLFxuICAgIFwiaWFwX3N0YXR1c1wiLFxuICAgIFwiaW5pX2Nsb3NlXCIsXG4gICAgXCJpbmlfa2V5X2RlbGV0ZVwiLFxuICAgIFwiaW5pX2tleV9leGlzdHNcIixcbiAgICBcImluaV9vcGVuXCIsXG4gICAgXCJpbmlfb3Blbl9mcm9tX3N0cmluZ1wiLFxuICAgIFwiaW5pX3JlYWRfcmVhbFwiLFxuICAgIFwiaW5pX3JlYWRfc3RyaW5nXCIsXG4gICAgXCJpbmlfc2VjdGlvbl9kZWxldGVcIixcbiAgICBcImluaV9zZWN0aW9uX2V4aXN0c1wiLFxuICAgIFwiaW5pX3dyaXRlX3JlYWxcIixcbiAgICBcImluaV93cml0ZV9zdHJpbmdcIixcbiAgICBcImluc3RhbmNlX2FjdGl2YXRlX2FsbFwiLFxuICAgIFwiaW5zdGFuY2VfYWN0aXZhdGVfbGF5ZXJcIixcbiAgICBcImluc3RhbmNlX2FjdGl2YXRlX29iamVjdFwiLFxuICAgIFwiaW5zdGFuY2VfYWN0aXZhdGVfcmVnaW9uXCIsXG4gICAgXCJpbnN0YW5jZV9jaGFuZ2VcIixcbiAgICBcImluc3RhbmNlX2NvcHlcIixcbiAgICBcImluc3RhbmNlX2NyZWF0ZV9kZXB0aFwiLFxuICAgIFwiaW5zdGFuY2VfY3JlYXRlX2xheWVyXCIsXG4gICAgXCJpbnN0YW5jZV9kZWFjdGl2YXRlX2FsbFwiLFxuICAgIFwiaW5zdGFuY2VfZGVhY3RpdmF0ZV9sYXllclwiLFxuICAgIFwiaW5zdGFuY2VfZGVhY3RpdmF0ZV9vYmplY3RcIixcbiAgICBcImluc3RhbmNlX2RlYWN0aXZhdGVfcmVnaW9uXCIsXG4gICAgXCJpbnN0YW5jZV9kZXN0cm95XCIsXG4gICAgXCJpbnN0YW5jZV9leGlzdHNcIixcbiAgICBcImluc3RhbmNlX2ZpbmRcIixcbiAgICBcImluc3RhbmNlX2Z1cnRoZXN0XCIsXG4gICAgXCJpbnN0YW5jZV9pZF9nZXRcIixcbiAgICBcImluc3RhbmNlX25lYXJlc3RcIixcbiAgICBcImluc3RhbmNlX251bWJlclwiLFxuICAgIFwiaW5zdGFuY2VfcGxhY2VcIixcbiAgICBcImluc3RhbmNlX3BsYWNlX2xpc3RcIixcbiAgICBcImluc3RhbmNlX3Bvc2l0aW9uXCIsXG4gICAgXCJpbnN0YW5jZV9wb3NpdGlvbl9saXN0XCIsXG4gICAgXCJpbnN0YW5jZW9mXCIsXG4gICAgXCJpbnQ2NFwiLFxuICAgIFwiaW9fY2xlYXJcIixcbiAgICBcImlyYW5kb21cIixcbiAgICBcImlyYW5kb21fcmFuZ2VcIixcbiAgICBcImlzX2FycmF5XCIsXG4gICAgXCJpc19ib29sXCIsXG4gICAgXCJpc19jYWxsYWJsZVwiLFxuICAgIFwiaXNfZGVidWdfb3ZlcmxheV9vcGVuXCIsXG4gICAgXCJpc19oYW5kbGVcIixcbiAgICBcImlzX2luZmluaXR5XCIsXG4gICAgXCJpc19pbnN0YW5jZW9mXCIsXG4gICAgXCJpc19pbnQzMlwiLFxuICAgIFwiaXNfaW50NjRcIixcbiAgICBcImlzX2tleWJvYXJkX3VzZWRfZGVidWdfb3ZlcmxheVwiLFxuICAgIFwiaXNfbWV0aG9kXCIsXG4gICAgXCJpc19tb3VzZV9vdmVyX2RlYnVnX292ZXJsYXlcIixcbiAgICBcImlzX25hblwiLFxuICAgIFwiaXNfbnVtZXJpY1wiLFxuICAgIFwiaXNfcHRyXCIsXG4gICAgXCJpc19yZWFsXCIsXG4gICAgXCJpc19zdHJpbmdcIixcbiAgICBcImlzX3N0cnVjdFwiLFxuICAgIFwiaXNfdW5kZWZpbmVkXCIsXG4gICAgXCJqc29uX2RlY29kZVwiLFxuICAgIFwianNvbl9lbmNvZGVcIixcbiAgICBcImpzb25fcGFyc2VcIixcbiAgICBcImpzb25fc3RyaW5naWZ5XCIsXG4gICAgXCJrZXlib2FyZF9jaGVja1wiLFxuICAgIFwia2V5Ym9hcmRfY2hlY2tfZGlyZWN0XCIsXG4gICAgXCJrZXlib2FyZF9jaGVja19wcmVzc2VkXCIsXG4gICAgXCJrZXlib2FyZF9jaGVja19yZWxlYXNlZFwiLFxuICAgIFwia2V5Ym9hcmRfY2xlYXJcIixcbiAgICBcImtleWJvYXJkX2dldF9tYXBcIixcbiAgICBcImtleWJvYXJkX2dldF9udW1sb2NrXCIsXG4gICAgXCJrZXlib2FyZF9rZXlfcHJlc3NcIixcbiAgICBcImtleWJvYXJkX2tleV9yZWxlYXNlXCIsXG4gICAgXCJrZXlib2FyZF9zZXRfbWFwXCIsXG4gICAgXCJrZXlib2FyZF9zZXRfbnVtbG9ja1wiLFxuICAgIFwia2V5Ym9hcmRfdW5zZXRfbWFwXCIsXG4gICAgXCJrZXlib2FyZF92aXJ0dWFsX2hlaWdodFwiLFxuICAgIFwia2V5Ym9hcmRfdmlydHVhbF9oaWRlXCIsXG4gICAgXCJrZXlib2FyZF92aXJ0dWFsX3Nob3dcIixcbiAgICBcImtleWJvYXJkX3ZpcnR1YWxfc3RhdHVzXCIsXG4gICAgXCJsYXllcl9hZGRfaW5zdGFuY2VcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfYWxwaGFcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfYmxlbmRcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfY2hhbmdlXCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX2NyZWF0ZVwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9kZXN0cm95XCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX2V4aXN0c1wiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9nZXRfYWxwaGFcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfZ2V0X2JsZW5kXCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX2dldF9odGlsZWRcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfZ2V0X2lkXCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX2dldF9pbmRleFwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9nZXRfc3BlZWRcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfZ2V0X3Nwcml0ZVwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9nZXRfc3RyZXRjaFwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9nZXRfdmlzaWJsZVwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9nZXRfdnRpbGVkXCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX2dldF94c2NhbGVcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfZ2V0X3lzY2FsZVwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF9odGlsZWRcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfaW5kZXhcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfc3BlZWRcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfc3ByaXRlXCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX3N0cmV0Y2hcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfdmlzaWJsZVwiLFxuICAgIFwibGF5ZXJfYmFja2dyb3VuZF92dGlsZWRcIixcbiAgICBcImxheWVyX2JhY2tncm91bmRfeHNjYWxlXCIsXG4gICAgXCJsYXllcl9iYWNrZ3JvdW5kX3lzY2FsZVwiLFxuICAgIFwibGF5ZXJfY2xlYXJfZnhcIixcbiAgICBcImxheWVyX2NyZWF0ZVwiLFxuICAgIFwibGF5ZXJfZGVwdGhcIixcbiAgICBcImxheWVyX2Rlc3Ryb3lcIixcbiAgICBcImxheWVyX2Rlc3Ryb3lfaW5zdGFuY2VzXCIsXG4gICAgXCJsYXllcl9lbGVtZW50X21vdmVcIixcbiAgICBcImxheWVyX2VuYWJsZV9meFwiLFxuICAgIFwibGF5ZXJfZXhpc3RzXCIsXG4gICAgXCJsYXllcl9mb3JjZV9kcmF3X2RlcHRoXCIsXG4gICAgXCJsYXllcl9meF9pc19lbmFibGVkXCIsXG4gICAgXCJsYXllcl9nZXRfYWxsXCIsXG4gICAgXCJsYXllcl9nZXRfYWxsX2VsZW1lbnRzXCIsXG4gICAgXCJsYXllcl9nZXRfZGVwdGhcIixcbiAgICBcImxheWVyX2dldF9lbGVtZW50X2xheWVyXCIsXG4gICAgXCJsYXllcl9nZXRfZWxlbWVudF90eXBlXCIsXG4gICAgXCJsYXllcl9nZXRfZm9yY2VkX2RlcHRoXCIsXG4gICAgXCJsYXllcl9nZXRfZnhcIixcbiAgICBcImxheWVyX2dldF9oc3BlZWRcIixcbiAgICBcImxheWVyX2dldF9pZFwiLFxuICAgIFwibGF5ZXJfZ2V0X2lkX2F0X2RlcHRoXCIsXG4gICAgXCJsYXllcl9nZXRfbmFtZVwiLFxuICAgIFwibGF5ZXJfZ2V0X3NjcmlwdF9iZWdpblwiLFxuICAgIFwibGF5ZXJfZ2V0X3NjcmlwdF9lbmRcIixcbiAgICBcImxheWVyX2dldF9zaGFkZXJcIixcbiAgICBcImxheWVyX2dldF90YXJnZXRfcm9vbVwiLFxuICAgIFwibGF5ZXJfZ2V0X3Zpc2libGVcIixcbiAgICBcImxheWVyX2dldF92c3BlZWRcIixcbiAgICBcImxheWVyX2dldF94XCIsXG4gICAgXCJsYXllcl9nZXRfeVwiLFxuICAgIFwibGF5ZXJfaGFzX2luc3RhbmNlXCIsXG4gICAgXCJsYXllcl9oc3BlZWRcIixcbiAgICBcImxheWVyX2luc3RhbmNlX2dldF9pbnN0YW5jZVwiLFxuICAgIFwibGF5ZXJfaXNfZHJhd19kZXB0aF9mb3JjZWRcIixcbiAgICBcImxheWVyX3Jlc2V0X3RhcmdldF9yb29tXCIsXG4gICAgXCJsYXllcl9zY3JpcHRfYmVnaW5cIixcbiAgICBcImxheWVyX3NjcmlwdF9lbmRcIixcbiAgICBcImxheWVyX3NlcXVlbmNlX2FuZ2xlXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9jcmVhdGVcIixcbiAgICBcImxheWVyX3NlcXVlbmNlX2Rlc3Ryb3lcIixcbiAgICBcImxheWVyX3NlcXVlbmNlX2V4aXN0c1wiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfZ2V0X2FuZ2xlXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9nZXRfaGVhZGRpclwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfZ2V0X2hlYWRwb3NcIixcbiAgICBcImxheWVyX3NlcXVlbmNlX2dldF9pbnN0YW5jZVwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfZ2V0X2xlbmd0aFwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfZ2V0X3NlcXVlbmNlXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9nZXRfc3BlZWRzY2FsZVwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfZ2V0X3hcIixcbiAgICBcImxheWVyX3NlcXVlbmNlX2dldF94c2NhbGVcIixcbiAgICBcImxheWVyX3NlcXVlbmNlX2dldF95XCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9nZXRfeXNjYWxlXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9oZWFkZGlyXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9oZWFkcG9zXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9pc19maW5pc2hlZFwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfaXNfcGF1c2VkXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV9wYXVzZVwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfcGxheVwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2Vfc3BlZWRzY2FsZVwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfeFwiLFxuICAgIFwibGF5ZXJfc2VxdWVuY2VfeHNjYWxlXCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV95XCIsXG4gICAgXCJsYXllcl9zZXF1ZW5jZV95c2NhbGVcIixcbiAgICBcImxheWVyX3NldF9meFwiLFxuICAgIFwibGF5ZXJfc2V0X3RhcmdldF9yb29tXCIsXG4gICAgXCJsYXllcl9zZXRfdmlzaWJsZVwiLFxuICAgIFwibGF5ZXJfc2hhZGVyXCIsXG4gICAgXCJsYXllcl9zcHJpdGVfYWxwaGFcIixcbiAgICBcImxheWVyX3Nwcml0ZV9hbmdsZVwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2JsZW5kXCIsXG4gICAgXCJsYXllcl9zcHJpdGVfY2hhbmdlXCIsXG4gICAgXCJsYXllcl9zcHJpdGVfY3JlYXRlXCIsXG4gICAgXCJsYXllcl9zcHJpdGVfZGVzdHJveVwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2V4aXN0c1wiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9hbHBoYVwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9hbmdsZVwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9ibGVuZFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9pZFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9pbmRleFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9zcGVlZFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF9zcHJpdGVcIixcbiAgICBcImxheWVyX3Nwcml0ZV9nZXRfeFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF94c2NhbGVcIixcbiAgICBcImxheWVyX3Nwcml0ZV9nZXRfeVwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX2dldF95c2NhbGVcIixcbiAgICBcImxheWVyX3Nwcml0ZV9pbmRleFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX3NwZWVkXCIsXG4gICAgXCJsYXllcl9zcHJpdGVfeFwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX3hzY2FsZVwiLFxuICAgIFwibGF5ZXJfc3ByaXRlX3lcIixcbiAgICBcImxheWVyX3Nwcml0ZV95c2NhbGVcIixcbiAgICBcImxheWVyX3RpbGVfYWxwaGFcIixcbiAgICBcImxheWVyX3RpbGVfYmxlbmRcIixcbiAgICBcImxheWVyX3RpbGVfY2hhbmdlXCIsXG4gICAgXCJsYXllcl90aWxlX2NyZWF0ZVwiLFxuICAgIFwibGF5ZXJfdGlsZV9kZXN0cm95XCIsXG4gICAgXCJsYXllcl90aWxlX2V4aXN0c1wiLFxuICAgIFwibGF5ZXJfdGlsZV9nZXRfYWxwaGFcIixcbiAgICBcImxheWVyX3RpbGVfZ2V0X2JsZW5kXCIsXG4gICAgXCJsYXllcl90aWxlX2dldF9yZWdpb25cIixcbiAgICBcImxheWVyX3RpbGVfZ2V0X3Nwcml0ZVwiLFxuICAgIFwibGF5ZXJfdGlsZV9nZXRfdmlzaWJsZVwiLFxuICAgIFwibGF5ZXJfdGlsZV9nZXRfeFwiLFxuICAgIFwibGF5ZXJfdGlsZV9nZXRfeHNjYWxlXCIsXG4gICAgXCJsYXllcl90aWxlX2dldF95XCIsXG4gICAgXCJsYXllcl90aWxlX2dldF95c2NhbGVcIixcbiAgICBcImxheWVyX3RpbGVfcmVnaW9uXCIsXG4gICAgXCJsYXllcl90aWxlX3Zpc2libGVcIixcbiAgICBcImxheWVyX3RpbGVfeFwiLFxuICAgIFwibGF5ZXJfdGlsZV94c2NhbGVcIixcbiAgICBcImxheWVyX3RpbGVfeVwiLFxuICAgIFwibGF5ZXJfdGlsZV95c2NhbGVcIixcbiAgICBcImxheWVyX3RpbGVtYXBfY3JlYXRlXCIsXG4gICAgXCJsYXllcl90aWxlbWFwX2Rlc3Ryb3lcIixcbiAgICBcImxheWVyX3RpbGVtYXBfZXhpc3RzXCIsXG4gICAgXCJsYXllcl90aWxlbWFwX2dldF9pZFwiLFxuICAgIFwibGF5ZXJfdnNwZWVkXCIsXG4gICAgXCJsYXllcl94XCIsXG4gICAgXCJsYXllcl95XCIsXG4gICAgXCJsZW5ndGhkaXJfeFwiLFxuICAgIFwibGVuZ3RoZGlyX3lcIixcbiAgICBcImxlcnBcIixcbiAgICBcImxpbl90b19kYlwiLFxuICAgIFwibG5cIixcbiAgICBcImxvYWRfY3N2XCIsXG4gICAgXCJsb2cxMFwiLFxuICAgIFwibG9nMlwiLFxuICAgIFwibG9nblwiLFxuICAgIFwibWFrZV9jb2xvcl9oc3ZcIixcbiAgICBcIm1ha2VfY29sb3JfcmdiXCIsXG4gICAgXCJtYWtlX2NvbG91cl9oc3ZcIixcbiAgICBcIm1ha2VfY29sb3VyX3JnYlwiLFxuICAgIFwibWF0aF9nZXRfZXBzaWxvblwiLFxuICAgIFwibWF0aF9zZXRfZXBzaWxvblwiLFxuICAgIFwibWF0cml4X2J1aWxkXCIsXG4gICAgXCJtYXRyaXhfYnVpbGRfaWRlbnRpdHlcIixcbiAgICBcIm1hdHJpeF9idWlsZF9sb29rYXRcIixcbiAgICBcIm1hdHJpeF9idWlsZF9wcm9qZWN0aW9uX29ydGhvXCIsXG4gICAgXCJtYXRyaXhfYnVpbGRfcHJvamVjdGlvbl9wZXJzcGVjdGl2ZVwiLFxuICAgIFwibWF0cml4X2J1aWxkX3Byb2plY3Rpb25fcGVyc3BlY3RpdmVfZm92XCIsXG4gICAgXCJtYXRyaXhfZ2V0XCIsXG4gICAgXCJtYXRyaXhfbXVsdGlwbHlcIixcbiAgICBcIm1hdHJpeF9zZXRcIixcbiAgICBcIm1hdHJpeF9zdGFja19jbGVhclwiLFxuICAgIFwibWF0cml4X3N0YWNrX2lzX2VtcHR5XCIsXG4gICAgXCJtYXRyaXhfc3RhY2tfcG9wXCIsXG4gICAgXCJtYXRyaXhfc3RhY2tfcHVzaFwiLFxuICAgIFwibWF0cml4X3N0YWNrX3NldFwiLFxuICAgIFwibWF0cml4X3N0YWNrX3RvcFwiLFxuICAgIFwibWF0cml4X3RyYW5zZm9ybV92ZXJ0ZXhcIixcbiAgICBcIm1heFwiLFxuICAgIFwibWQ1X2ZpbGVcIixcbiAgICBcIm1kNV9zdHJpbmdfdW5pY29kZVwiLFxuICAgIFwibWQ1X3N0cmluZ191dGY4XCIsXG4gICAgXCJtZWFuXCIsXG4gICAgXCJtZWRpYW5cIixcbiAgICBcIm1lcmdlX2NvbG9yXCIsXG4gICAgXCJtZXJnZV9jb2xvdXJcIixcbiAgICBcIm1ldGhvZFwiLFxuICAgIFwibWV0aG9kX2NhbGxcIixcbiAgICBcIm1ldGhvZF9nZXRfaW5kZXhcIixcbiAgICBcIm1ldGhvZF9nZXRfc2VsZlwiLFxuICAgIFwibWluXCIsXG4gICAgXCJtb3Rpb25fYWRkXCIsXG4gICAgXCJtb3Rpb25fc2V0XCIsXG4gICAgXCJtb3VzZV9jaGVja19idXR0b25cIixcbiAgICBcIm1vdXNlX2NoZWNrX2J1dHRvbl9wcmVzc2VkXCIsXG4gICAgXCJtb3VzZV9jaGVja19idXR0b25fcmVsZWFzZWRcIixcbiAgICBcIm1vdXNlX2NsZWFyXCIsXG4gICAgXCJtb3VzZV93aGVlbF9kb3duXCIsXG4gICAgXCJtb3VzZV93aGVlbF91cFwiLFxuICAgIFwibW92ZV9hbmRfY29sbGlkZVwiLFxuICAgIFwibW92ZV9ib3VuY2VfYWxsXCIsXG4gICAgXCJtb3ZlX2JvdW5jZV9zb2xpZFwiLFxuICAgIFwibW92ZV9jb250YWN0X2FsbFwiLFxuICAgIFwibW92ZV9jb250YWN0X3NvbGlkXCIsXG4gICAgXCJtb3ZlX291dHNpZGVfYWxsXCIsXG4gICAgXCJtb3ZlX291dHNpZGVfc29saWRcIixcbiAgICBcIm1vdmVfcmFuZG9tXCIsXG4gICAgXCJtb3ZlX3NuYXBcIixcbiAgICBcIm1vdmVfdG93YXJkc19wb2ludFwiLFxuICAgIFwibW92ZV93cmFwXCIsXG4gICAgXCJtcF9ncmlkX2FkZF9jZWxsXCIsXG4gICAgXCJtcF9ncmlkX2FkZF9pbnN0YW5jZXNcIixcbiAgICBcIm1wX2dyaWRfYWRkX3JlY3RhbmdsZVwiLFxuICAgIFwibXBfZ3JpZF9jbGVhcl9hbGxcIixcbiAgICBcIm1wX2dyaWRfY2xlYXJfY2VsbFwiLFxuICAgIFwibXBfZ3JpZF9jbGVhcl9yZWN0YW5nbGVcIixcbiAgICBcIm1wX2dyaWRfY3JlYXRlXCIsXG4gICAgXCJtcF9ncmlkX2Rlc3Ryb3lcIixcbiAgICBcIm1wX2dyaWRfZHJhd1wiLFxuICAgIFwibXBfZ3JpZF9nZXRfY2VsbFwiLFxuICAgIFwibXBfZ3JpZF9wYXRoXCIsXG4gICAgXCJtcF9ncmlkX3RvX2RzX2dyaWRcIixcbiAgICBcIm1wX2xpbmVhcl9wYXRoXCIsXG4gICAgXCJtcF9saW5lYXJfcGF0aF9vYmplY3RcIixcbiAgICBcIm1wX2xpbmVhcl9zdGVwXCIsXG4gICAgXCJtcF9saW5lYXJfc3RlcF9vYmplY3RcIixcbiAgICBcIm1wX3BvdGVudGlhbF9wYXRoXCIsXG4gICAgXCJtcF9wb3RlbnRpYWxfcGF0aF9vYmplY3RcIixcbiAgICBcIm1wX3BvdGVudGlhbF9zZXR0aW5nc1wiLFxuICAgIFwibXBfcG90ZW50aWFsX3N0ZXBcIixcbiAgICBcIm1wX3BvdGVudGlhbF9zdGVwX29iamVjdFwiLFxuICAgIFwibmFtZW9mXCIsXG4gICAgXCJuZXR3b3JrX2Nvbm5lY3RcIixcbiAgICBcIm5ldHdvcmtfY29ubmVjdF9hc3luY1wiLFxuICAgIFwibmV0d29ya19jb25uZWN0X3Jhd1wiLFxuICAgIFwibmV0d29ya19jb25uZWN0X3Jhd19hc3luY1wiLFxuICAgIFwibmV0d29ya19jcmVhdGVfc2VydmVyXCIsXG4gICAgXCJuZXR3b3JrX2NyZWF0ZV9zZXJ2ZXJfcmF3XCIsXG4gICAgXCJuZXR3b3JrX2NyZWF0ZV9zb2NrZXRcIixcbiAgICBcIm5ldHdvcmtfY3JlYXRlX3NvY2tldF9leHRcIixcbiAgICBcIm5ldHdvcmtfZGVzdHJveVwiLFxuICAgIFwibmV0d29ya19yZXNvbHZlXCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfYnJvYWRjYXN0XCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfcGFja2V0XCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfcmF3XCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfdWRwXCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfdWRwX3Jhd1wiLFxuICAgIFwibmV0d29ya19zZXRfY29uZmlnXCIsXG4gICAgXCJuZXR3b3JrX3NldF90aW1lb3V0XCIsXG4gICAgXCJvYmplY3RfZXhpc3RzXCIsXG4gICAgXCJvYmplY3RfZ2V0X21hc2tcIixcbiAgICBcIm9iamVjdF9nZXRfbmFtZVwiLFxuICAgIFwib2JqZWN0X2dldF9wYXJlbnRcIixcbiAgICBcIm9iamVjdF9nZXRfcGVyc2lzdGVudFwiLFxuICAgIFwib2JqZWN0X2dldF9waHlzaWNzXCIsXG4gICAgXCJvYmplY3RfZ2V0X3NvbGlkXCIsXG4gICAgXCJvYmplY3RfZ2V0X3Nwcml0ZVwiLFxuICAgIFwib2JqZWN0X2dldF92aXNpYmxlXCIsXG4gICAgXCJvYmplY3RfaXNfYW5jZXN0b3JcIixcbiAgICBcIm9iamVjdF9zZXRfbWFza1wiLFxuICAgIFwib2JqZWN0X3NldF9wZXJzaXN0ZW50XCIsXG4gICAgXCJvYmplY3Rfc2V0X3NvbGlkXCIsXG4gICAgXCJvYmplY3Rfc2V0X3Nwcml0ZVwiLFxuICAgIFwib2JqZWN0X3NldF92aXNpYmxlXCIsXG4gICAgXCJvcmRcIixcbiAgICBcIm9zX2NoZWNrX3Blcm1pc3Npb25cIixcbiAgICBcIm9zX2dldF9jb25maWdcIixcbiAgICBcIm9zX2dldF9pbmZvXCIsXG4gICAgXCJvc19nZXRfbGFuZ3VhZ2VcIixcbiAgICBcIm9zX2dldF9yZWdpb25cIixcbiAgICBcIm9zX2lzX25ldHdvcmtfY29ubmVjdGVkXCIsXG4gICAgXCJvc19pc19wYXVzZWRcIixcbiAgICBcIm9zX2xvY2tfb3JpZW50YXRpb25cIixcbiAgICBcIm9zX3Bvd2Vyc2F2ZV9lbmFibGVcIixcbiAgICBcIm9zX3JlcXVlc3RfcGVybWlzc2lvblwiLFxuICAgIFwib3Nfc2V0X29yaWVudGF0aW9uX2xvY2tcIixcbiAgICBcInBhcmFtZXRlcl9jb3VudFwiLFxuICAgIFwicGFyYW1ldGVyX3N0cmluZ1wiLFxuICAgIFwicGFydF9lbWl0dGVyX2J1cnN0XCIsXG4gICAgXCJwYXJ0X2VtaXR0ZXJfY2xlYXJcIixcbiAgICBcInBhcnRfZW1pdHRlcl9jcmVhdGVcIixcbiAgICBcInBhcnRfZW1pdHRlcl9kZWxheVwiLFxuICAgIFwicGFydF9lbWl0dGVyX2Rlc3Ryb3lcIixcbiAgICBcInBhcnRfZW1pdHRlcl9kZXN0cm95X2FsbFwiLFxuICAgIFwicGFydF9lbWl0dGVyX2VuYWJsZVwiLFxuICAgIFwicGFydF9lbWl0dGVyX2V4aXN0c1wiLFxuICAgIFwicGFydF9lbWl0dGVyX2ludGVydmFsXCIsXG4gICAgXCJwYXJ0X2VtaXR0ZXJfcmVnaW9uXCIsXG4gICAgXCJwYXJ0X2VtaXR0ZXJfcmVsYXRpdmVcIixcbiAgICBcInBhcnRfZW1pdHRlcl9zdHJlYW1cIixcbiAgICBcInBhcnRfcGFydGljbGVzX2J1cnN0XCIsXG4gICAgXCJwYXJ0X3BhcnRpY2xlc19jbGVhclwiLFxuICAgIFwicGFydF9wYXJ0aWNsZXNfY291bnRcIixcbiAgICBcInBhcnRfcGFydGljbGVzX2NyZWF0ZVwiLFxuICAgIFwicGFydF9wYXJ0aWNsZXNfY3JlYXRlX2NvbG9yXCIsXG4gICAgXCJwYXJ0X3BhcnRpY2xlc19jcmVhdGVfY29sb3VyXCIsXG4gICAgXCJwYXJ0X3N5c3RlbV9hbmdsZVwiLFxuICAgIFwicGFydF9zeXN0ZW1fYXV0b21hdGljX2RyYXdcIixcbiAgICBcInBhcnRfc3lzdGVtX2F1dG9tYXRpY191cGRhdGVcIixcbiAgICBcInBhcnRfc3lzdGVtX2NsZWFyXCIsXG4gICAgXCJwYXJ0X3N5c3RlbV9jb2xvclwiLFxuICAgIFwicGFydF9zeXN0ZW1fY29sb3VyXCIsXG4gICAgXCJwYXJ0X3N5c3RlbV9jcmVhdGVcIixcbiAgICBcInBhcnRfc3lzdGVtX2NyZWF0ZV9sYXllclwiLFxuICAgIFwicGFydF9zeXN0ZW1fZGVwdGhcIixcbiAgICBcInBhcnRfc3lzdGVtX2Rlc3Ryb3lcIixcbiAgICBcInBhcnRfc3lzdGVtX2RyYXdfb3JkZXJcIixcbiAgICBcInBhcnRfc3lzdGVtX2RyYXdpdFwiLFxuICAgIFwicGFydF9zeXN0ZW1fZXhpc3RzXCIsXG4gICAgXCJwYXJ0X3N5c3RlbV9nZXRfaW5mb1wiLFxuICAgIFwicGFydF9zeXN0ZW1fZ2V0X2xheWVyXCIsXG4gICAgXCJwYXJ0X3N5c3RlbV9nbG9iYWxfc3BhY2VcIixcbiAgICBcInBhcnRfc3lzdGVtX2xheWVyXCIsXG4gICAgXCJwYXJ0X3N5c3RlbV9wb3NpdGlvblwiLFxuICAgIFwicGFydF9zeXN0ZW1fdXBkYXRlXCIsXG4gICAgXCJwYXJ0X3R5cGVfYWxwaGExXCIsXG4gICAgXCJwYXJ0X3R5cGVfYWxwaGEyXCIsXG4gICAgXCJwYXJ0X3R5cGVfYWxwaGEzXCIsXG4gICAgXCJwYXJ0X3R5cGVfYmxlbmRcIixcbiAgICBcInBhcnRfdHlwZV9jbGVhclwiLFxuICAgIFwicGFydF90eXBlX2NvbG9yMVwiLFxuICAgIFwicGFydF90eXBlX2NvbG9yMlwiLFxuICAgIFwicGFydF90eXBlX2NvbG9yM1wiLFxuICAgIFwicGFydF90eXBlX2NvbG9yX2hzdlwiLFxuICAgIFwicGFydF90eXBlX2NvbG9yX21peFwiLFxuICAgIFwicGFydF90eXBlX2NvbG9yX3JnYlwiLFxuICAgIFwicGFydF90eXBlX2NvbG91cjFcIixcbiAgICBcInBhcnRfdHlwZV9jb2xvdXIyXCIsXG4gICAgXCJwYXJ0X3R5cGVfY29sb3VyM1wiLFxuICAgIFwicGFydF90eXBlX2NvbG91cl9oc3ZcIixcbiAgICBcInBhcnRfdHlwZV9jb2xvdXJfbWl4XCIsXG4gICAgXCJwYXJ0X3R5cGVfY29sb3VyX3JnYlwiLFxuICAgIFwicGFydF90eXBlX2NyZWF0ZVwiLFxuICAgIFwicGFydF90eXBlX2RlYXRoXCIsXG4gICAgXCJwYXJ0X3R5cGVfZGVzdHJveVwiLFxuICAgIFwicGFydF90eXBlX2RpcmVjdGlvblwiLFxuICAgIFwicGFydF90eXBlX2V4aXN0c1wiLFxuICAgIFwicGFydF90eXBlX2dyYXZpdHlcIixcbiAgICBcInBhcnRfdHlwZV9saWZlXCIsXG4gICAgXCJwYXJ0X3R5cGVfb3JpZW50YXRpb25cIixcbiAgICBcInBhcnRfdHlwZV9zY2FsZVwiLFxuICAgIFwicGFydF90eXBlX3NoYXBlXCIsXG4gICAgXCJwYXJ0X3R5cGVfc2l6ZVwiLFxuICAgIFwicGFydF90eXBlX3NpemVfeFwiLFxuICAgIFwicGFydF90eXBlX3NpemVfeVwiLFxuICAgIFwicGFydF90eXBlX3NwZWVkXCIsXG4gICAgXCJwYXJ0X3R5cGVfc3ByaXRlXCIsXG4gICAgXCJwYXJ0X3R5cGVfc3RlcFwiLFxuICAgIFwicGFydF90eXBlX3N1YmltYWdlXCIsXG4gICAgXCJwYXJ0aWNsZV9leGlzdHNcIixcbiAgICBcInBhcnRpY2xlX2dldF9pbmZvXCIsXG4gICAgXCJwYXRoX2FkZFwiLFxuICAgIFwicGF0aF9hZGRfcG9pbnRcIixcbiAgICBcInBhdGhfYXBwZW5kXCIsXG4gICAgXCJwYXRoX2Fzc2lnblwiLFxuICAgIFwicGF0aF9jaGFuZ2VfcG9pbnRcIixcbiAgICBcInBhdGhfY2xlYXJfcG9pbnRzXCIsXG4gICAgXCJwYXRoX2RlbGV0ZVwiLFxuICAgIFwicGF0aF9kZWxldGVfcG9pbnRcIixcbiAgICBcInBhdGhfZHVwbGljYXRlXCIsXG4gICAgXCJwYXRoX2VuZFwiLFxuICAgIFwicGF0aF9leGlzdHNcIixcbiAgICBcInBhdGhfZmxpcFwiLFxuICAgIFwicGF0aF9nZXRfY2xvc2VkXCIsXG4gICAgXCJwYXRoX2dldF9raW5kXCIsXG4gICAgXCJwYXRoX2dldF9sZW5ndGhcIixcbiAgICBcInBhdGhfZ2V0X25hbWVcIixcbiAgICBcInBhdGhfZ2V0X251bWJlclwiLFxuICAgIFwicGF0aF9nZXRfcG9pbnRfc3BlZWRcIixcbiAgICBcInBhdGhfZ2V0X3BvaW50X3hcIixcbiAgICBcInBhdGhfZ2V0X3BvaW50X3lcIixcbiAgICBcInBhdGhfZ2V0X3ByZWNpc2lvblwiLFxuICAgIFwicGF0aF9nZXRfc3BlZWRcIixcbiAgICBcInBhdGhfZ2V0X3hcIixcbiAgICBcInBhdGhfZ2V0X3lcIixcbiAgICBcInBhdGhfaW5zZXJ0X3BvaW50XCIsXG4gICAgXCJwYXRoX21pcnJvclwiLFxuICAgIFwicGF0aF9yZXNjYWxlXCIsXG4gICAgXCJwYXRoX3JldmVyc2VcIixcbiAgICBcInBhdGhfcm90YXRlXCIsXG4gICAgXCJwYXRoX3NldF9jbG9zZWRcIixcbiAgICBcInBhdGhfc2V0X2tpbmRcIixcbiAgICBcInBhdGhfc2V0X3ByZWNpc2lvblwiLFxuICAgIFwicGF0aF9zaGlmdFwiLFxuICAgIFwicGF0aF9zdGFydFwiLFxuICAgIFwicGh5c2ljc19hcHBseV9hbmd1bGFyX2ltcHVsc2VcIixcbiAgICBcInBoeXNpY3NfYXBwbHlfZm9yY2VcIixcbiAgICBcInBoeXNpY3NfYXBwbHlfaW1wdWxzZVwiLFxuICAgIFwicGh5c2ljc19hcHBseV9sb2NhbF9mb3JjZVwiLFxuICAgIFwicGh5c2ljc19hcHBseV9sb2NhbF9pbXB1bHNlXCIsXG4gICAgXCJwaHlzaWNzX2FwcGx5X3RvcnF1ZVwiLFxuICAgIFwicGh5c2ljc19kcmF3X2RlYnVnXCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfYWRkX3BvaW50XCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfYmluZFwiLFxuICAgIFwicGh5c2ljc19maXh0dXJlX2JpbmRfZXh0XCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfZGVsZXRlXCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfc2V0X2FuZ3VsYXJfZGFtcGluZ1wiLFxuICAgIFwicGh5c2ljc19maXh0dXJlX3NldF9hd2FrZVwiLFxuICAgIFwicGh5c2ljc19maXh0dXJlX3NldF9ib3hfc2hhcGVcIixcbiAgICBcInBoeXNpY3NfZml4dHVyZV9zZXRfY2hhaW5fc2hhcGVcIixcbiAgICBcInBoeXNpY3NfZml4dHVyZV9zZXRfY2lyY2xlX3NoYXBlXCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfc2V0X2NvbGxpc2lvbl9ncm91cFwiLFxuICAgIFwicGh5c2ljc19maXh0dXJlX3NldF9kZW5zaXR5XCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfc2V0X2VkZ2Vfc2hhcGVcIixcbiAgICBcInBoeXNpY3NfZml4dHVyZV9zZXRfZnJpY3Rpb25cIixcbiAgICBcInBoeXNpY3NfZml4dHVyZV9zZXRfa2luZW1hdGljXCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfc2V0X2xpbmVhcl9kYW1waW5nXCIsXG4gICAgXCJwaHlzaWNzX2ZpeHR1cmVfc2V0X3BvbHlnb25fc2hhcGVcIixcbiAgICBcInBoeXNpY3NfZml4dHVyZV9zZXRfcmVzdGl0dXRpb25cIixcbiAgICBcInBoeXNpY3NfZml4dHVyZV9zZXRfc2Vuc29yXCIsXG4gICAgXCJwaHlzaWNzX2dldF9kZW5zaXR5XCIsXG4gICAgXCJwaHlzaWNzX2dldF9mcmljdGlvblwiLFxuICAgIFwicGh5c2ljc19nZXRfcmVzdGl0dXRpb25cIixcbiAgICBcInBoeXNpY3Nfam9pbnRfZGVsZXRlXCIsXG4gICAgXCJwaHlzaWNzX2pvaW50X2Rpc3RhbmNlX2NyZWF0ZVwiLFxuICAgIFwicGh5c2ljc19qb2ludF9lbmFibGVfbW90b3JcIixcbiAgICBcInBoeXNpY3Nfam9pbnRfZnJpY3Rpb25fY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX2pvaW50X2dlYXJfY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX2pvaW50X2dldF92YWx1ZVwiLFxuICAgIFwicGh5c2ljc19qb2ludF9wcmlzbWF0aWNfY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX2pvaW50X3B1bGxleV9jcmVhdGVcIixcbiAgICBcInBoeXNpY3Nfam9pbnRfcmV2b2x1dGVfY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX2pvaW50X3JvcGVfY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX2pvaW50X3NldF92YWx1ZVwiLFxuICAgIFwicGh5c2ljc19qb2ludF93ZWxkX2NyZWF0ZVwiLFxuICAgIFwicGh5c2ljc19qb2ludF93aGVlbF9jcmVhdGVcIixcbiAgICBcInBoeXNpY3NfbWFzc19wcm9wZXJ0aWVzXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2NvdW50XCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2NyZWF0ZVwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9kZWxldGVcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9ib3hcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9jaXJjbGVcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZGVsZXRlX3JlZ2lvbl9wb2x5XCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2RyYXdcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZHJhd19leHRcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X2RhbXBpbmdcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X2RhdGFcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X2RhdGFfcGFydGljbGVcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X2RlbnNpdHlcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X2dyYXZpdHlfc2NhbGVcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X2dyb3VwX2ZsYWdzXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dldF9tYXhfY291bnRcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ2V0X3JhZGl1c1wiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9ncm91cF9hZGRfcG9pbnRcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfYmVnaW5cIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfYm94XCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2NpcmNsZVwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9ncm91cF9jb3VudFwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9ncm91cF9kZWxldGVcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZW5kXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9hbmdfdmVsXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9hbmdsZVwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfY2VudHJlX3hcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X2NlbnRyZV95XCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9kYXRhXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9pbmVydGlhXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF9tYXNzXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX2dyb3VwX2dldF92ZWxfeFwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9ncm91cF9nZXRfdmVsX3lcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3hcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfZ2V0X3lcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfZ3JvdXBfam9pblwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9ncm91cF9wb2x5Z29uXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX3NldF9jYXRlZ29yeV9mbGFnc1wiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9zZXRfZGFtcGluZ1wiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9zZXRfZGVuc2l0eVwiLFxuICAgIFwicGh5c2ljc19wYXJ0aWNsZV9zZXRfZmxhZ3NcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfc2V0X2dyYXZpdHlfc2NhbGVcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfc2V0X2dyb3VwX2ZsYWdzXCIsXG4gICAgXCJwaHlzaWNzX3BhcnRpY2xlX3NldF9tYXhfY291bnRcIixcbiAgICBcInBoeXNpY3NfcGFydGljbGVfc2V0X3JhZGl1c1wiLFxuICAgIFwicGh5c2ljc19wYXVzZV9lbmFibGVcIixcbiAgICBcInBoeXNpY3NfcmVtb3ZlX2ZpeHR1cmVcIixcbiAgICBcInBoeXNpY3Nfc2V0X2RlbnNpdHlcIixcbiAgICBcInBoeXNpY3Nfc2V0X2ZyaWN0aW9uXCIsXG4gICAgXCJwaHlzaWNzX3NldF9yZXN0aXR1dGlvblwiLFxuICAgIFwicGh5c2ljc190ZXN0X292ZXJsYXBcIixcbiAgICBcInBoeXNpY3Nfd29ybGRfY3JlYXRlXCIsXG4gICAgXCJwaHlzaWNzX3dvcmxkX2RyYXdfZGVidWdcIixcbiAgICBcInBoeXNpY3Nfd29ybGRfZ3Jhdml0eVwiLFxuICAgIFwicGh5c2ljc193b3JsZF91cGRhdGVfaXRlcmF0aW9uc1wiLFxuICAgIFwicGh5c2ljc193b3JsZF91cGRhdGVfc3BlZWRcIixcbiAgICBcInBsYWNlX2VtcHR5XCIsXG4gICAgXCJwbGFjZV9mcmVlXCIsXG4gICAgXCJwbGFjZV9tZWV0aW5nXCIsXG4gICAgXCJwbGFjZV9zbmFwcGVkXCIsXG4gICAgXCJwb2ludF9kaXJlY3Rpb25cIixcbiAgICBcInBvaW50X2Rpc3RhbmNlXCIsXG4gICAgXCJwb2ludF9kaXN0YW5jZV8zZFwiLFxuICAgIFwicG9pbnRfaW5fY2lyY2xlXCIsXG4gICAgXCJwb2ludF9pbl9yZWN0YW5nbGVcIixcbiAgICBcInBvaW50X2luX3RyaWFuZ2xlXCIsXG4gICAgXCJwb3NpdGlvbl9jaGFuZ2VcIixcbiAgICBcInBvc2l0aW9uX2Rlc3Ryb3lcIixcbiAgICBcInBvc2l0aW9uX2VtcHR5XCIsXG4gICAgXCJwb3NpdGlvbl9tZWV0aW5nXCIsXG4gICAgXCJwb3dlclwiLFxuICAgIFwicHRyXCIsXG4gICAgXCJyYWR0b2RlZ1wiLFxuICAgIFwicmFuZG9tXCIsXG4gICAgXCJyYW5kb21fZ2V0X3NlZWRcIixcbiAgICBcInJhbmRvbV9yYW5nZVwiLFxuICAgIFwicmFuZG9tX3NldF9zZWVkXCIsXG4gICAgXCJyYW5kb21pc2VcIixcbiAgICBcInJhbmRvbWl6ZVwiLFxuICAgIFwicmVhbFwiLFxuICAgIFwicmVjdGFuZ2xlX2luX2NpcmNsZVwiLFxuICAgIFwicmVjdGFuZ2xlX2luX3JlY3RhbmdsZVwiLFxuICAgIFwicmVjdGFuZ2xlX2luX3RyaWFuZ2xlXCIsXG4gICAgXCJyZWZfY3JlYXRlXCIsXG4gICAgXCJyb2xsYmFja19jaGF0XCIsXG4gICAgXCJyb2xsYmFja19jcmVhdGVfZ2FtZVwiLFxuICAgIFwicm9sbGJhY2tfZGVmaW5lX2V4dHJhX25ldHdvcmtfbGF0ZW5jeVwiLFxuICAgIFwicm9sbGJhY2tfZGVmaW5lX2lucHV0XCIsXG4gICAgXCJyb2xsYmFja19kZWZpbmVfaW5wdXRfZnJhbWVfZGVsYXlcIixcbiAgICBcInJvbGxiYWNrX2RlZmluZV9tb2NrX2lucHV0XCIsXG4gICAgXCJyb2xsYmFja19kZWZpbmVfcGxheWVyXCIsXG4gICAgXCJyb2xsYmFja19kaXNwbGF5X2V2ZW50c1wiLFxuICAgIFwicm9sbGJhY2tfZ2V0X2luZm9cIixcbiAgICBcInJvbGxiYWNrX2dldF9pbnB1dFwiLFxuICAgIFwicm9sbGJhY2tfZ2V0X3BsYXllcl9wcmVmc1wiLFxuICAgIFwicm9sbGJhY2tfam9pbl9nYW1lXCIsXG4gICAgXCJyb2xsYmFja19sZWF2ZV9nYW1lXCIsXG4gICAgXCJyb2xsYmFja19zZXRfcGxheWVyX3ByZWZzXCIsXG4gICAgXCJyb2xsYmFja19zdGFydF9nYW1lXCIsXG4gICAgXCJyb2xsYmFja19zeW5jX29uX2ZyYW1lXCIsXG4gICAgXCJyb2xsYmFja191c2VfbGF0ZV9qb2luXCIsXG4gICAgXCJyb2xsYmFja191c2VfbWFudWFsX3N0YXJ0XCIsXG4gICAgXCJyb2xsYmFja191c2VfcGxheWVyX3ByZWZzXCIsXG4gICAgXCJyb2xsYmFja191c2VfcmFuZG9tX2lucHV0XCIsXG4gICAgXCJyb29tX2FkZFwiLFxuICAgIFwicm9vbV9hc3NpZ25cIixcbiAgICBcInJvb21fZHVwbGljYXRlXCIsXG4gICAgXCJyb29tX2V4aXN0c1wiLFxuICAgIFwicm9vbV9nZXRfY2FtZXJhXCIsXG4gICAgXCJyb29tX2dldF9pbmZvXCIsXG4gICAgXCJyb29tX2dldF9uYW1lXCIsXG4gICAgXCJyb29tX2dldF92aWV3cG9ydFwiLFxuICAgIFwicm9vbV9nb3RvXCIsXG4gICAgXCJyb29tX2dvdG9fbmV4dFwiLFxuICAgIFwicm9vbV9nb3RvX3ByZXZpb3VzXCIsXG4gICAgXCJyb29tX2luc3RhbmNlX2FkZFwiLFxuICAgIFwicm9vbV9pbnN0YW5jZV9jbGVhclwiLFxuICAgIFwicm9vbV9uZXh0XCIsXG4gICAgXCJyb29tX3ByZXZpb3VzXCIsXG4gICAgXCJyb29tX3Jlc3RhcnRcIixcbiAgICBcInJvb21fc2V0X2NhbWVyYVwiLFxuICAgIFwicm9vbV9zZXRfaGVpZ2h0XCIsXG4gICAgXCJyb29tX3NldF9wZXJzaXN0ZW50XCIsXG4gICAgXCJyb29tX3NldF92aWV3X2VuYWJsZWRcIixcbiAgICBcInJvb21fc2V0X3ZpZXdwb3J0XCIsXG4gICAgXCJyb29tX3NldF93aWR0aFwiLFxuICAgIFwicm91bmRcIixcbiAgICBcInNjaGVkdWxlcl9yZXNvbHV0aW9uX2dldFwiLFxuICAgIFwic2NoZWR1bGVyX3Jlc29sdXRpb25fc2V0XCIsXG4gICAgXCJzY3JlZW5fc2F2ZVwiLFxuICAgIFwic2NyZWVuX3NhdmVfcGFydFwiLFxuICAgIFwic2NyaXB0X2V4ZWN1dGVcIixcbiAgICBcInNjcmlwdF9leGVjdXRlX2V4dFwiLFxuICAgIFwic2NyaXB0X2V4aXN0c1wiLFxuICAgIFwic2NyaXB0X2dldF9uYW1lXCIsXG4gICAgXCJzZXF1ZW5jZV9jcmVhdGVcIixcbiAgICBcInNlcXVlbmNlX2Rlc3Ryb3lcIixcbiAgICBcInNlcXVlbmNlX2V4aXN0c1wiLFxuICAgIFwic2VxdWVuY2VfZ2V0XCIsXG4gICAgXCJzZXF1ZW5jZV9nZXRfb2JqZWN0c1wiLFxuICAgIFwic2VxdWVuY2VfaW5zdGFuY2Vfb3ZlcnJpZGVfb2JqZWN0XCIsXG4gICAgXCJzZXF1ZW5jZV9rZXlmcmFtZV9uZXdcIixcbiAgICBcInNlcXVlbmNlX2tleWZyYW1lZGF0YV9uZXdcIixcbiAgICBcInNlcXVlbmNlX3RyYWNrX25ld1wiLFxuICAgIFwic2hhMV9maWxlXCIsXG4gICAgXCJzaGExX3N0cmluZ191bmljb2RlXCIsXG4gICAgXCJzaGExX3N0cmluZ191dGY4XCIsXG4gICAgXCJzaGFkZXJfY3VycmVudFwiLFxuICAgIFwic2hhZGVyX2VuYWJsZV9jb3JuZXJfaWRcIixcbiAgICBcInNoYWRlcl9nZXRfbmFtZVwiLFxuICAgIFwic2hhZGVyX2dldF9zYW1wbGVyX2luZGV4XCIsXG4gICAgXCJzaGFkZXJfZ2V0X3VuaWZvcm1cIixcbiAgICBcInNoYWRlcl9pc19jb21waWxlZFwiLFxuICAgIFwic2hhZGVyX3Jlc2V0XCIsXG4gICAgXCJzaGFkZXJfc2V0XCIsXG4gICAgXCJzaGFkZXJfc2V0X3VuaWZvcm1fZlwiLFxuICAgIFwic2hhZGVyX3NldF91bmlmb3JtX2ZfYXJyYXlcIixcbiAgICBcInNoYWRlcl9zZXRfdW5pZm9ybV9mX2J1ZmZlclwiLFxuICAgIFwic2hhZGVyX3NldF91bmlmb3JtX2lcIixcbiAgICBcInNoYWRlcl9zZXRfdW5pZm9ybV9pX2FycmF5XCIsXG4gICAgXCJzaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XCIsXG4gICAgXCJzaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4X2FycmF5XCIsXG4gICAgXCJzaGFkZXJzX2FyZV9zdXBwb3J0ZWRcIixcbiAgICBcInNob3BfbGVhdmVfcmF0aW5nXCIsXG4gICAgXCJzaG93X2RlYnVnX21lc3NhZ2VcIixcbiAgICBcInNob3dfZGVidWdfbWVzc2FnZV9leHRcIixcbiAgICBcInNob3dfZGVidWdfb3ZlcmxheVwiLFxuICAgIFwic2hvd19lcnJvclwiLFxuICAgIFwic2hvd19tZXNzYWdlXCIsXG4gICAgXCJzaG93X21lc3NhZ2VfYXN5bmNcIixcbiAgICBcInNob3dfcXVlc3Rpb25cIixcbiAgICBcInNob3dfcXVlc3Rpb25fYXN5bmNcIixcbiAgICBcInNpZ25cIixcbiAgICBcInNpblwiLFxuICAgIFwic2tlbGV0b25fYW5pbWF0aW9uX2NsZWFyXCIsXG4gICAgXCJza2VsZXRvbl9hbmltYXRpb25fZ2V0XCIsXG4gICAgXCJza2VsZXRvbl9hbmltYXRpb25fZ2V0X2R1cmF0aW9uXCIsXG4gICAgXCJza2VsZXRvbl9hbmltYXRpb25fZ2V0X2V2ZW50X2ZyYW1lc1wiLFxuICAgIFwic2tlbGV0b25fYW5pbWF0aW9uX2dldF9leHRcIixcbiAgICBcInNrZWxldG9uX2FuaW1hdGlvbl9nZXRfZnJhbWVcIixcbiAgICBcInNrZWxldG9uX2FuaW1hdGlvbl9nZXRfZnJhbWVzXCIsXG4gICAgXCJza2VsZXRvbl9hbmltYXRpb25fZ2V0X3Bvc2l0aW9uXCIsXG4gICAgXCJza2VsZXRvbl9hbmltYXRpb25faXNfZmluaXNoZWRcIixcbiAgICBcInNrZWxldG9uX2FuaW1hdGlvbl9pc19sb29waW5nXCIsXG4gICAgXCJza2VsZXRvbl9hbmltYXRpb25fbGlzdFwiLFxuICAgIFwic2tlbGV0b25fYW5pbWF0aW9uX21peFwiLFxuICAgIFwic2tlbGV0b25fYW5pbWF0aW9uX3NldFwiLFxuICAgIFwic2tlbGV0b25fYW5pbWF0aW9uX3NldF9leHRcIixcbiAgICBcInNrZWxldG9uX2FuaW1hdGlvbl9zZXRfZnJhbWVcIixcbiAgICBcInNrZWxldG9uX2FuaW1hdGlvbl9zZXRfcG9zaXRpb25cIixcbiAgICBcInNrZWxldG9uX2F0dGFjaG1lbnRfY3JlYXRlXCIsXG4gICAgXCJza2VsZXRvbl9hdHRhY2htZW50X2NyZWF0ZV9jb2xvclwiLFxuICAgIFwic2tlbGV0b25fYXR0YWNobWVudF9jcmVhdGVfY29sb3VyXCIsXG4gICAgXCJza2VsZXRvbl9hdHRhY2htZW50X2Rlc3Ryb3lcIixcbiAgICBcInNrZWxldG9uX2F0dGFjaG1lbnRfZXhpc3RzXCIsXG4gICAgXCJza2VsZXRvbl9hdHRhY2htZW50X2dldFwiLFxuICAgIFwic2tlbGV0b25fYXR0YWNobWVudF9yZXBsYWNlXCIsXG4gICAgXCJza2VsZXRvbl9hdHRhY2htZW50X3JlcGxhY2VfY29sb3JcIixcbiAgICBcInNrZWxldG9uX2F0dGFjaG1lbnRfcmVwbGFjZV9jb2xvdXJcIixcbiAgICBcInNrZWxldG9uX2F0dGFjaG1lbnRfc2V0XCIsXG4gICAgXCJza2VsZXRvbl9ib25lX2RhdGFfZ2V0XCIsXG4gICAgXCJza2VsZXRvbl9ib25lX2RhdGFfc2V0XCIsXG4gICAgXCJza2VsZXRvbl9ib25lX2xpc3RcIixcbiAgICBcInNrZWxldG9uX2JvbmVfc3RhdGVfZ2V0XCIsXG4gICAgXCJza2VsZXRvbl9ib25lX3N0YXRlX3NldFwiLFxuICAgIFwic2tlbGV0b25fY29sbGlzaW9uX2RyYXdfc2V0XCIsXG4gICAgXCJza2VsZXRvbl9maW5kX3Nsb3RcIixcbiAgICBcInNrZWxldG9uX2dldF9ib3VuZHNcIixcbiAgICBcInNrZWxldG9uX2dldF9taW5tYXhcIixcbiAgICBcInNrZWxldG9uX2dldF9udW1fYm91bmRzXCIsXG4gICAgXCJza2VsZXRvbl9za2luX2NyZWF0ZVwiLFxuICAgIFwic2tlbGV0b25fc2tpbl9nZXRcIixcbiAgICBcInNrZWxldG9uX3NraW5fbGlzdFwiLFxuICAgIFwic2tlbGV0b25fc2tpbl9zZXRcIixcbiAgICBcInNrZWxldG9uX3Nsb3RfYWxwaGFfZ2V0XCIsXG4gICAgXCJza2VsZXRvbl9zbG90X2NvbG9yX2dldFwiLFxuICAgIFwic2tlbGV0b25fc2xvdF9jb2xvcl9zZXRcIixcbiAgICBcInNrZWxldG9uX3Nsb3RfY29sb3VyX2dldFwiLFxuICAgIFwic2tlbGV0b25fc2xvdF9jb2xvdXJfc2V0XCIsXG4gICAgXCJza2VsZXRvbl9zbG90X2RhdGFcIixcbiAgICBcInNrZWxldG9uX3Nsb3RfZGF0YV9pbnN0YW5jZVwiLFxuICAgIFwic2tlbGV0b25fc2xvdF9saXN0XCIsXG4gICAgXCJzcHJpdGVfYWRkXCIsXG4gICAgXCJzcHJpdGVfYWRkX2V4dFwiLFxuICAgIFwic3ByaXRlX2FkZF9mcm9tX3N1cmZhY2VcIixcbiAgICBcInNwcml0ZV9hc3NpZ25cIixcbiAgICBcInNwcml0ZV9jb2xsaXNpb25fbWFza1wiLFxuICAgIFwic3ByaXRlX2NyZWF0ZV9mcm9tX3N1cmZhY2VcIixcbiAgICBcInNwcml0ZV9kZWxldGVcIixcbiAgICBcInNwcml0ZV9kdXBsaWNhdGVcIixcbiAgICBcInNwcml0ZV9leGlzdHNcIixcbiAgICBcInNwcml0ZV9mbHVzaFwiLFxuICAgIFwic3ByaXRlX2ZsdXNoX211bHRpXCIsXG4gICAgXCJzcHJpdGVfZ2V0X2Jib3hfYm90dG9tXCIsXG4gICAgXCJzcHJpdGVfZ2V0X2Jib3hfbGVmdFwiLFxuICAgIFwic3ByaXRlX2dldF9iYm94X21vZGVcIixcbiAgICBcInNwcml0ZV9nZXRfYmJveF9yaWdodFwiLFxuICAgIFwic3ByaXRlX2dldF9iYm94X3RvcFwiLFxuICAgIFwic3ByaXRlX2dldF9oZWlnaHRcIixcbiAgICBcInNwcml0ZV9nZXRfaW5mb1wiLFxuICAgIFwic3ByaXRlX2dldF9uYW1lXCIsXG4gICAgXCJzcHJpdGVfZ2V0X25pbmVzbGljZVwiLFxuICAgIFwic3ByaXRlX2dldF9udW1iZXJcIixcbiAgICBcInNwcml0ZV9nZXRfc3BlZWRcIixcbiAgICBcInNwcml0ZV9nZXRfc3BlZWRfdHlwZVwiLFxuICAgIFwic3ByaXRlX2dldF90ZXh0dXJlXCIsXG4gICAgXCJzcHJpdGVfZ2V0X3RwZVwiLFxuICAgIFwic3ByaXRlX2dldF91dnNcIixcbiAgICBcInNwcml0ZV9nZXRfd2lkdGhcIixcbiAgICBcInNwcml0ZV9nZXRfeG9mZnNldFwiLFxuICAgIFwic3ByaXRlX2dldF95b2Zmc2V0XCIsXG4gICAgXCJzcHJpdGVfbWVyZ2VcIixcbiAgICBcInNwcml0ZV9uaW5lc2xpY2VfY3JlYXRlXCIsXG4gICAgXCJzcHJpdGVfcHJlZmV0Y2hcIixcbiAgICBcInNwcml0ZV9wcmVmZXRjaF9tdWx0aVwiLFxuICAgIFwic3ByaXRlX3JlcGxhY2VcIixcbiAgICBcInNwcml0ZV9zYXZlXCIsXG4gICAgXCJzcHJpdGVfc2F2ZV9zdHJpcFwiLFxuICAgIFwic3ByaXRlX3NldF9hbHBoYV9mcm9tX3Nwcml0ZVwiLFxuICAgIFwic3ByaXRlX3NldF9iYm94XCIsXG4gICAgXCJzcHJpdGVfc2V0X2Jib3hfbW9kZVwiLFxuICAgIFwic3ByaXRlX3NldF9jYWNoZV9zaXplXCIsXG4gICAgXCJzcHJpdGVfc2V0X2NhY2hlX3NpemVfZXh0XCIsXG4gICAgXCJzcHJpdGVfc2V0X25pbmVzbGljZVwiLFxuICAgIFwic3ByaXRlX3NldF9vZmZzZXRcIixcbiAgICBcInNwcml0ZV9zZXRfc3BlZWRcIixcbiAgICBcInNxclwiLFxuICAgIFwic3FydFwiLFxuICAgIFwic3RhdGljX2dldFwiLFxuICAgIFwic3RhdGljX3NldFwiLFxuICAgIFwic3RyaW5nXCIsXG4gICAgXCJzdHJpbmdfYnl0ZV9hdFwiLFxuICAgIFwic3RyaW5nX2J5dGVfbGVuZ3RoXCIsXG4gICAgXCJzdHJpbmdfY2hhcl9hdFwiLFxuICAgIFwic3RyaW5nX2NvbmNhdFwiLFxuICAgIFwic3RyaW5nX2NvbmNhdF9leHRcIixcbiAgICBcInN0cmluZ19jb3B5XCIsXG4gICAgXCJzdHJpbmdfY291bnRcIixcbiAgICBcInN0cmluZ19kZWxldGVcIixcbiAgICBcInN0cmluZ19kaWdpdHNcIixcbiAgICBcInN0cmluZ19lbmRzX3dpdGhcIixcbiAgICBcInN0cmluZ19leHRcIixcbiAgICBcInN0cmluZ19mb3JlYWNoXCIsXG4gICAgXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgXCJzdHJpbmdfaGFzaF90b19uZXdsaW5lXCIsXG4gICAgXCJzdHJpbmdfaGVpZ2h0XCIsXG4gICAgXCJzdHJpbmdfaGVpZ2h0X2V4dFwiLFxuICAgIFwic3RyaW5nX2luc2VydFwiLFxuICAgIFwic3RyaW5nX2pvaW5cIixcbiAgICBcInN0cmluZ19qb2luX2V4dFwiLFxuICAgIFwic3RyaW5nX2xhc3RfcG9zXCIsXG4gICAgXCJzdHJpbmdfbGFzdF9wb3NfZXh0XCIsXG4gICAgXCJzdHJpbmdfbGVuZ3RoXCIsXG4gICAgXCJzdHJpbmdfbGV0dGVyc1wiLFxuICAgIFwic3RyaW5nX2xldHRlcnNkaWdpdHNcIixcbiAgICBcInN0cmluZ19sb3dlclwiLFxuICAgIFwic3RyaW5nX29yZF9hdFwiLFxuICAgIFwic3RyaW5nX3Bvc1wiLFxuICAgIFwic3RyaW5nX3Bvc19leHRcIixcbiAgICBcInN0cmluZ19yZXBlYXRcIixcbiAgICBcInN0cmluZ19yZXBsYWNlXCIsXG4gICAgXCJzdHJpbmdfcmVwbGFjZV9hbGxcIixcbiAgICBcInN0cmluZ19zZXRfYnl0ZV9hdFwiLFxuICAgIFwic3RyaW5nX3NwbGl0XCIsXG4gICAgXCJzdHJpbmdfc3BsaXRfZXh0XCIsXG4gICAgXCJzdHJpbmdfc3RhcnRzX3dpdGhcIixcbiAgICBcInN0cmluZ190cmltXCIsXG4gICAgXCJzdHJpbmdfdHJpbV9lbmRcIixcbiAgICBcInN0cmluZ190cmltX3N0YXJ0XCIsXG4gICAgXCJzdHJpbmdfdXBwZXJcIixcbiAgICBcInN0cmluZ193aWR0aFwiLFxuICAgIFwic3RyaW5nX3dpZHRoX2V4dFwiLFxuICAgIFwic3RydWN0X2V4aXN0c1wiLFxuICAgIFwic3RydWN0X2ZvcmVhY2hcIixcbiAgICBcInN0cnVjdF9nZXRcIixcbiAgICBcInN0cnVjdF9nZXRfZnJvbV9oYXNoXCIsXG4gICAgXCJzdHJ1Y3RfZ2V0X25hbWVzXCIsXG4gICAgXCJzdHJ1Y3RfbmFtZXNfY291bnRcIixcbiAgICBcInN0cnVjdF9yZW1vdmVcIixcbiAgICBcInN0cnVjdF9zZXRcIixcbiAgICBcInN0cnVjdF9zZXRfZnJvbV9oYXNoXCIsXG4gICAgXCJzdXJmYWNlX2NvcHlcIixcbiAgICBcInN1cmZhY2VfY29weV9wYXJ0XCIsXG4gICAgXCJzdXJmYWNlX2NyZWF0ZVwiLFxuICAgIFwic3VyZmFjZV9jcmVhdGVfZXh0XCIsXG4gICAgXCJzdXJmYWNlX2RlcHRoX2Rpc2FibGVcIixcbiAgICBcInN1cmZhY2VfZXhpc3RzXCIsXG4gICAgXCJzdXJmYWNlX2Zvcm1hdF9pc19zdXBwb3J0ZWRcIixcbiAgICBcInN1cmZhY2VfZnJlZVwiLFxuICAgIFwic3VyZmFjZV9nZXRfZGVwdGhfZGlzYWJsZVwiLFxuICAgIFwic3VyZmFjZV9nZXRfZm9ybWF0XCIsXG4gICAgXCJzdXJmYWNlX2dldF9oZWlnaHRcIixcbiAgICBcInN1cmZhY2VfZ2V0X3RhcmdldFwiLFxuICAgIFwic3VyZmFjZV9nZXRfdGFyZ2V0X2V4dFwiLFxuICAgIFwic3VyZmFjZV9nZXRfdGV4dHVyZVwiLFxuICAgIFwic3VyZmFjZV9nZXRfd2lkdGhcIixcbiAgICBcInN1cmZhY2VfZ2V0cGl4ZWxcIixcbiAgICBcInN1cmZhY2VfZ2V0cGl4ZWxfZXh0XCIsXG4gICAgXCJzdXJmYWNlX3Jlc2V0X3RhcmdldFwiLFxuICAgIFwic3VyZmFjZV9yZXNpemVcIixcbiAgICBcInN1cmZhY2Vfc2F2ZVwiLFxuICAgIFwic3VyZmFjZV9zYXZlX3BhcnRcIixcbiAgICBcInN1cmZhY2Vfc2V0X3RhcmdldFwiLFxuICAgIFwic3VyZmFjZV9zZXRfdGFyZ2V0X2V4dFwiLFxuICAgIFwidGFnX2dldF9hc3NldF9pZHNcIixcbiAgICBcInRhZ19nZXRfYXNzZXRzXCIsXG4gICAgXCJ0YW5cIixcbiAgICBcInRleHR1cmVfZGVidWdfbWVzc2FnZXNcIixcbiAgICBcInRleHR1cmVfZmx1c2hcIixcbiAgICBcInRleHR1cmVfZ2V0X2hlaWdodFwiLFxuICAgIFwidGV4dHVyZV9nZXRfdGV4ZWxfaGVpZ2h0XCIsXG4gICAgXCJ0ZXh0dXJlX2dldF90ZXhlbF93aWR0aFwiLFxuICAgIFwidGV4dHVyZV9nZXRfdXZzXCIsXG4gICAgXCJ0ZXh0dXJlX2dldF93aWR0aFwiLFxuICAgIFwidGV4dHVyZV9nbG9iYWxfc2NhbGVcIixcbiAgICBcInRleHR1cmVfaXNfcmVhZHlcIixcbiAgICBcInRleHR1cmVfcHJlZmV0Y2hcIixcbiAgICBcInRleHR1cmVfc2V0X3N0YWdlXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfZ2V0X2ZvbnRzXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfZ2V0X25hbWVzXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfZ2V0X3Nwcml0ZXNcIixcbiAgICBcInRleHR1cmVncm91cF9nZXRfc3RhdHVzXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfZ2V0X3RleHR1cmVzXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfZ2V0X3RpbGVzZXRzXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfbG9hZFwiLFxuICAgIFwidGV4dHVyZWdyb3VwX3NldF9tb2RlXCIsXG4gICAgXCJ0ZXh0dXJlZ3JvdXBfdW5sb2FkXCIsXG4gICAgXCJ0aWxlX2dldF9lbXB0eVwiLFxuICAgIFwidGlsZV9nZXRfZmxpcFwiLFxuICAgIFwidGlsZV9nZXRfaW5kZXhcIixcbiAgICBcInRpbGVfZ2V0X21pcnJvclwiLFxuICAgIFwidGlsZV9nZXRfcm90YXRlXCIsXG4gICAgXCJ0aWxlX3NldF9lbXB0eVwiLFxuICAgIFwidGlsZV9zZXRfZmxpcFwiLFxuICAgIFwidGlsZV9zZXRfaW5kZXhcIixcbiAgICBcInRpbGVfc2V0X21pcnJvclwiLFxuICAgIFwidGlsZV9zZXRfcm90YXRlXCIsXG4gICAgXCJ0aWxlbWFwX2NsZWFyXCIsXG4gICAgXCJ0aWxlbWFwX2dldFwiLFxuICAgIFwidGlsZW1hcF9nZXRfYXRfcGl4ZWxcIixcbiAgICBcInRpbGVtYXBfZ2V0X2NlbGxfeF9hdF9waXhlbFwiLFxuICAgIFwidGlsZW1hcF9nZXRfY2VsbF95X2F0X3BpeGVsXCIsXG4gICAgXCJ0aWxlbWFwX2dldF9mcmFtZVwiLFxuICAgIFwidGlsZW1hcF9nZXRfZ2xvYmFsX21hc2tcIixcbiAgICBcInRpbGVtYXBfZ2V0X2hlaWdodFwiLFxuICAgIFwidGlsZW1hcF9nZXRfbWFza1wiLFxuICAgIFwidGlsZW1hcF9nZXRfdGlsZV9oZWlnaHRcIixcbiAgICBcInRpbGVtYXBfZ2V0X3RpbGVfd2lkdGhcIixcbiAgICBcInRpbGVtYXBfZ2V0X3RpbGVzZXRcIixcbiAgICBcInRpbGVtYXBfZ2V0X3dpZHRoXCIsXG4gICAgXCJ0aWxlbWFwX2dldF94XCIsXG4gICAgXCJ0aWxlbWFwX2dldF95XCIsXG4gICAgXCJ0aWxlbWFwX3NldFwiLFxuICAgIFwidGlsZW1hcF9zZXRfYXRfcGl4ZWxcIixcbiAgICBcInRpbGVtYXBfc2V0X2dsb2JhbF9tYXNrXCIsXG4gICAgXCJ0aWxlbWFwX3NldF9oZWlnaHRcIixcbiAgICBcInRpbGVtYXBfc2V0X21hc2tcIixcbiAgICBcInRpbGVtYXBfc2V0X3dpZHRoXCIsXG4gICAgXCJ0aWxlbWFwX3RpbGVzZXRcIixcbiAgICBcInRpbGVtYXBfeFwiLFxuICAgIFwidGlsZW1hcF95XCIsXG4gICAgXCJ0aWxlc2V0X2dldF9pbmZvXCIsXG4gICAgXCJ0aWxlc2V0X2dldF9uYW1lXCIsXG4gICAgXCJ0aWxlc2V0X2dldF90ZXh0dXJlXCIsXG4gICAgXCJ0aWxlc2V0X2dldF91dnNcIixcbiAgICBcInRpbWVfYnBtX3RvX3NlY29uZHNcIixcbiAgICBcInRpbWVfc2Vjb25kc190b19icG1cIixcbiAgICBcInRpbWVfc291cmNlX2NyZWF0ZVwiLFxuICAgIFwidGltZV9zb3VyY2VfZGVzdHJveVwiLFxuICAgIFwidGltZV9zb3VyY2VfZXhpc3RzXCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9nZXRfY2hpbGRyZW5cIixcbiAgICBcInRpbWVfc291cmNlX2dldF9wYXJlbnRcIixcbiAgICBcInRpbWVfc291cmNlX2dldF9wZXJpb2RcIixcbiAgICBcInRpbWVfc291cmNlX2dldF9yZXBzX2NvbXBsZXRlZFwiLFxuICAgIFwidGltZV9zb3VyY2VfZ2V0X3JlcHNfcmVtYWluaW5nXCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9nZXRfc3RhdGVcIixcbiAgICBcInRpbWVfc291cmNlX2dldF90aW1lX3JlbWFpbmluZ1wiLFxuICAgIFwidGltZV9zb3VyY2VfZ2V0X3VuaXRzXCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9wYXVzZVwiLFxuICAgIFwidGltZV9zb3VyY2VfcmVjb25maWd1cmVcIixcbiAgICBcInRpbWVfc291cmNlX3Jlc2V0XCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9yZXN1bWVcIixcbiAgICBcInRpbWVfc291cmNlX3N0YXJ0XCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9zdG9wXCIsXG4gICAgXCJ0aW1lbGluZV9hZGRcIixcbiAgICBcInRpbWVsaW5lX2NsZWFyXCIsXG4gICAgXCJ0aW1lbGluZV9kZWxldGVcIixcbiAgICBcInRpbWVsaW5lX2V4aXN0c1wiLFxuICAgIFwidGltZWxpbmVfZ2V0X25hbWVcIixcbiAgICBcInRpbWVsaW5lX21heF9tb21lbnRcIixcbiAgICBcInRpbWVsaW5lX21vbWVudF9hZGRfc2NyaXB0XCIsXG4gICAgXCJ0aW1lbGluZV9tb21lbnRfY2xlYXJcIixcbiAgICBcInRpbWVsaW5lX3NpemVcIixcbiAgICBcInR5cGVvZlwiLFxuICAgIFwidXJsX2dldF9kb21haW5cIixcbiAgICBcInVybF9vcGVuXCIsXG4gICAgXCJ1cmxfb3Blbl9leHRcIixcbiAgICBcInVybF9vcGVuX2Z1bGxcIixcbiAgICBcInV3cF9kZXZpY2VfdG91Y2hzY3JlZW5fYXZhaWxhYmxlXCIsXG4gICAgXCJ1d3BfbGl2ZXRpbGVfYmFkZ2VfY2xlYXJcIixcbiAgICBcInV3cF9saXZldGlsZV9iYWRnZV9ub3RpZmljYXRpb25cIixcbiAgICBcInV3cF9saXZldGlsZV9ub3RpZmljYXRpb25fYmVnaW5cIixcbiAgICBcInV3cF9saXZldGlsZV9ub3RpZmljYXRpb25fZW5kXCIsXG4gICAgXCJ1d3BfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX2V4cGlyeVwiLFxuICAgIFwidXdwX2xpdmV0aWxlX25vdGlmaWNhdGlvbl9pbWFnZV9hZGRcIixcbiAgICBcInV3cF9saXZldGlsZV9ub3RpZmljYXRpb25fc2Vjb25kYXJ5X2JlZ2luXCIsXG4gICAgXCJ1d3BfbGl2ZXRpbGVfbm90aWZpY2F0aW9uX3RhZ1wiLFxuICAgIFwidXdwX2xpdmV0aWxlX25vdGlmaWNhdGlvbl90ZW1wbGF0ZV9hZGRcIixcbiAgICBcInV3cF9saXZldGlsZV9ub3RpZmljYXRpb25fdGV4dF9hZGRcIixcbiAgICBcInV3cF9saXZldGlsZV9xdWV1ZV9lbmFibGVcIixcbiAgICBcInV3cF9saXZldGlsZV90aWxlX2NsZWFyXCIsXG4gICAgXCJ1d3Bfc2Vjb25kYXJ5dGlsZV9iYWRnZV9jbGVhclwiLFxuICAgIFwidXdwX3NlY29uZGFyeXRpbGVfYmFkZ2Vfbm90aWZpY2F0aW9uXCIsXG4gICAgXCJ1d3Bfc2Vjb25kYXJ5dGlsZV9kZWxldGVcIixcbiAgICBcInV3cF9zZWNvbmRhcnl0aWxlX3BpblwiLFxuICAgIFwidXdwX3NlY29uZGFyeXRpbGVfdGlsZV9jbGVhclwiLFxuICAgIFwidmFyaWFibGVfY2xvbmVcIixcbiAgICBcInZhcmlhYmxlX2dldF9oYXNoXCIsXG4gICAgXCJ2YXJpYWJsZV9nbG9iYWxfZXhpc3RzXCIsXG4gICAgXCJ2YXJpYWJsZV9nbG9iYWxfZ2V0XCIsXG4gICAgXCJ2YXJpYWJsZV9nbG9iYWxfc2V0XCIsXG4gICAgXCJ2YXJpYWJsZV9pbnN0YW5jZV9leGlzdHNcIixcbiAgICBcInZhcmlhYmxlX2luc3RhbmNlX2dldFwiLFxuICAgIFwidmFyaWFibGVfaW5zdGFuY2VfZ2V0X25hbWVzXCIsXG4gICAgXCJ2YXJpYWJsZV9pbnN0YW5jZV9uYW1lc19jb3VudFwiLFxuICAgIFwidmFyaWFibGVfaW5zdGFuY2Vfc2V0XCIsXG4gICAgXCJ2YXJpYWJsZV9zdHJ1Y3RfZXhpc3RzXCIsXG4gICAgXCJ2YXJpYWJsZV9zdHJ1Y3RfZ2V0XCIsXG4gICAgXCJ2YXJpYWJsZV9zdHJ1Y3RfZ2V0X25hbWVzXCIsXG4gICAgXCJ2YXJpYWJsZV9zdHJ1Y3RfbmFtZXNfY291bnRcIixcbiAgICBcInZhcmlhYmxlX3N0cnVjdF9yZW1vdmVcIixcbiAgICBcInZhcmlhYmxlX3N0cnVjdF9zZXRcIixcbiAgICBcInZlcnRleF9hcmdiXCIsXG4gICAgXCJ2ZXJ0ZXhfYmVnaW5cIixcbiAgICBcInZlcnRleF9jb2xvclwiLFxuICAgIFwidmVydGV4X2NvbG91clwiLFxuICAgIFwidmVydGV4X2NyZWF0ZV9idWZmZXJcIixcbiAgICBcInZlcnRleF9jcmVhdGVfYnVmZmVyX2V4dFwiLFxuICAgIFwidmVydGV4X2NyZWF0ZV9idWZmZXJfZnJvbV9idWZmZXJcIixcbiAgICBcInZlcnRleF9jcmVhdGVfYnVmZmVyX2Zyb21fYnVmZmVyX2V4dFwiLFxuICAgIFwidmVydGV4X2RlbGV0ZV9idWZmZXJcIixcbiAgICBcInZlcnRleF9lbmRcIixcbiAgICBcInZlcnRleF9mbG9hdDFcIixcbiAgICBcInZlcnRleF9mbG9hdDJcIixcbiAgICBcInZlcnRleF9mbG9hdDNcIixcbiAgICBcInZlcnRleF9mbG9hdDRcIixcbiAgICBcInZlcnRleF9mb3JtYXRfYWRkX2NvbG9yXCIsXG4gICAgXCJ2ZXJ0ZXhfZm9ybWF0X2FkZF9jb2xvdXJcIixcbiAgICBcInZlcnRleF9mb3JtYXRfYWRkX2N1c3RvbVwiLFxuICAgIFwidmVydGV4X2Zvcm1hdF9hZGRfbm9ybWFsXCIsXG4gICAgXCJ2ZXJ0ZXhfZm9ybWF0X2FkZF9wb3NpdGlvblwiLFxuICAgIFwidmVydGV4X2Zvcm1hdF9hZGRfcG9zaXRpb25fM2RcIixcbiAgICBcInZlcnRleF9mb3JtYXRfYWRkX3RleGNvb3JkXCIsXG4gICAgXCJ2ZXJ0ZXhfZm9ybWF0X2JlZ2luXCIsXG4gICAgXCJ2ZXJ0ZXhfZm9ybWF0X2RlbGV0ZVwiLFxuICAgIFwidmVydGV4X2Zvcm1hdF9lbmRcIixcbiAgICBcInZlcnRleF9mb3JtYXRfZ2V0X2luZm9cIixcbiAgICBcInZlcnRleF9mcmVlemVcIixcbiAgICBcInZlcnRleF9nZXRfYnVmZmVyX3NpemVcIixcbiAgICBcInZlcnRleF9nZXRfbnVtYmVyXCIsXG4gICAgXCJ2ZXJ0ZXhfbm9ybWFsXCIsXG4gICAgXCJ2ZXJ0ZXhfcG9zaXRpb25cIixcbiAgICBcInZlcnRleF9wb3NpdGlvbl8zZFwiLFxuICAgIFwidmVydGV4X3N1Ym1pdFwiLFxuICAgIFwidmVydGV4X3N1Ym1pdF9leHRcIixcbiAgICBcInZlcnRleF90ZXhjb29yZFwiLFxuICAgIFwidmVydGV4X3VieXRlNFwiLFxuICAgIFwidmVydGV4X3VwZGF0ZV9idWZmZXJfZnJvbV9idWZmZXJcIixcbiAgICBcInZlcnRleF91cGRhdGVfYnVmZmVyX2Zyb21fdmVydGV4XCIsXG4gICAgXCJ2aWRlb19jbG9zZVwiLFxuICAgIFwidmlkZW9fZHJhd1wiLFxuICAgIFwidmlkZW9fZW5hYmxlX2xvb3BcIixcbiAgICBcInZpZGVvX2dldF9kdXJhdGlvblwiLFxuICAgIFwidmlkZW9fZ2V0X2Zvcm1hdFwiLFxuICAgIFwidmlkZW9fZ2V0X3Bvc2l0aW9uXCIsXG4gICAgXCJ2aWRlb19nZXRfc3RhdHVzXCIsXG4gICAgXCJ2aWRlb19nZXRfdm9sdW1lXCIsXG4gICAgXCJ2aWRlb19pc19sb29waW5nXCIsXG4gICAgXCJ2aWRlb19vcGVuXCIsXG4gICAgXCJ2aWRlb19wYXVzZVwiLFxuICAgIFwidmlkZW9fcmVzdW1lXCIsXG4gICAgXCJ2aWRlb19zZWVrX3RvXCIsXG4gICAgXCJ2aWRlb19zZXRfdm9sdW1lXCIsXG4gICAgXCJ2aWV3X2dldF9jYW1lcmFcIixcbiAgICBcInZpZXdfZ2V0X2hwb3J0XCIsXG4gICAgXCJ2aWV3X2dldF9zdXJmYWNlX2lkXCIsXG4gICAgXCJ2aWV3X2dldF92aXNpYmxlXCIsXG4gICAgXCJ2aWV3X2dldF93cG9ydFwiLFxuICAgIFwidmlld19nZXRfeHBvcnRcIixcbiAgICBcInZpZXdfZ2V0X3lwb3J0XCIsXG4gICAgXCJ2aWV3X3NldF9jYW1lcmFcIixcbiAgICBcInZpZXdfc2V0X2hwb3J0XCIsXG4gICAgXCJ2aWV3X3NldF9zdXJmYWNlX2lkXCIsXG4gICAgXCJ2aWV3X3NldF92aXNpYmxlXCIsXG4gICAgXCJ2aWV3X3NldF93cG9ydFwiLFxuICAgIFwidmlld19zZXRfeHBvcnRcIixcbiAgICBcInZpZXdfc2V0X3lwb3J0XCIsXG4gICAgXCJ2aXJ0dWFsX2tleV9hZGRcIixcbiAgICBcInZpcnR1YWxfa2V5X2RlbGV0ZVwiLFxuICAgIFwidmlydHVhbF9rZXlfaGlkZVwiLFxuICAgIFwidmlydHVhbF9rZXlfc2hvd1wiLFxuICAgIFwid2FsbHBhcGVyX3NldF9jb25maWdcIixcbiAgICBcIndhbGxwYXBlcl9zZXRfc3Vic2NyaXB0aW9uc1wiLFxuICAgIFwid2Vha19yZWZfYWxpdmVcIixcbiAgICBcIndlYWtfcmVmX2FueV9hbGl2ZVwiLFxuICAgIFwid2Vha19yZWZfY3JlYXRlXCIsXG4gICAgXCJ3aW5kb3dfY2VudGVyXCIsXG4gICAgXCJ3aW5kb3dfZGV2aWNlXCIsXG4gICAgXCJ3aW5kb3dfZW5hYmxlX2JvcmRlcmxlc3NfZnVsbHNjcmVlblwiLFxuICAgIFwid2luZG93X2dldF9ib3JkZXJsZXNzX2Z1bGxzY3JlZW5cIixcbiAgICBcIndpbmRvd19nZXRfY2FwdGlvblwiLFxuICAgIFwid2luZG93X2dldF9jb2xvclwiLFxuICAgIFwid2luZG93X2dldF9jb2xvdXJcIixcbiAgICBcIndpbmRvd19nZXRfY3Vyc29yXCIsXG4gICAgXCJ3aW5kb3dfZ2V0X2Z1bGxzY3JlZW5cIixcbiAgICBcIndpbmRvd19nZXRfaGVpZ2h0XCIsXG4gICAgXCJ3aW5kb3dfZ2V0X3Nob3dib3JkZXJcIixcbiAgICBcIndpbmRvd19nZXRfdmlzaWJsZV9yZWN0c1wiLFxuICAgIFwid2luZG93X2dldF93aWR0aFwiLFxuICAgIFwid2luZG93X2dldF94XCIsXG4gICAgXCJ3aW5kb3dfZ2V0X3lcIixcbiAgICBcIndpbmRvd19oYW5kbGVcIixcbiAgICBcIndpbmRvd19oYXNfZm9jdXNcIixcbiAgICBcIndpbmRvd19tb3VzZV9nZXRfZGVsdGFfeFwiLFxuICAgIFwid2luZG93X21vdXNlX2dldF9kZWx0YV95XCIsXG4gICAgXCJ3aW5kb3dfbW91c2VfZ2V0X2xvY2tlZFwiLFxuICAgIFwid2luZG93X21vdXNlX2dldF94XCIsXG4gICAgXCJ3aW5kb3dfbW91c2VfZ2V0X3lcIixcbiAgICBcIndpbmRvd19tb3VzZV9zZXRcIixcbiAgICBcIndpbmRvd19tb3VzZV9zZXRfbG9ja2VkXCIsXG4gICAgXCJ3aW5kb3dfc2V0X2NhcHRpb25cIixcbiAgICBcIndpbmRvd19zZXRfY29sb3JcIixcbiAgICBcIndpbmRvd19zZXRfY29sb3VyXCIsXG4gICAgXCJ3aW5kb3dfc2V0X2N1cnNvclwiLFxuICAgIFwid2luZG93X3NldF9mdWxsc2NyZWVuXCIsXG4gICAgXCJ3aW5kb3dfc2V0X21heF9oZWlnaHRcIixcbiAgICBcIndpbmRvd19zZXRfbWF4X3dpZHRoXCIsXG4gICAgXCJ3aW5kb3dfc2V0X21pbl9oZWlnaHRcIixcbiAgICBcIndpbmRvd19zZXRfbWluX3dpZHRoXCIsXG4gICAgXCJ3aW5kb3dfc2V0X3Bvc2l0aW9uXCIsXG4gICAgXCJ3aW5kb3dfc2V0X3JlY3RhbmdsZVwiLFxuICAgIFwid2luZG93X3NldF9zaG93Ym9yZGVyXCIsXG4gICAgXCJ3aW5kb3dfc2V0X3NpemVcIixcbiAgICBcIndpbmRvd192aWV3X21vdXNlX2dldF94XCIsXG4gICAgXCJ3aW5kb3dfdmlld19tb3VzZV9nZXRfeVwiLFxuICAgIFwid2luZG93X3ZpZXdzX21vdXNlX2dldF94XCIsXG4gICAgXCJ3aW5kb3dfdmlld3NfbW91c2VfZ2V0X3lcIixcbiAgICBcIndpbnBob25lX3RpbGVfYmFja2dyb3VuZF9jb2xvclwiLFxuICAgIFwid2lucGhvbmVfdGlsZV9iYWNrZ3JvdW5kX2NvbG91clwiLFxuICAgIFwiemlwX2FkZF9maWxlXCIsXG4gICAgXCJ6aXBfY3JlYXRlXCIsXG4gICAgXCJ6aXBfc2F2ZVwiLFxuICAgIFwiemlwX3VuemlwXCIsXG4gICAgXCJ6aXBfdW56aXBfYXN5bmNcIlxuICBdO1xuICBjb25zdCBTWU1CT0xTID0gW1xuICAgIFwiQXVkaW9FZmZlY3RcIixcbiAgICBcIkF1ZGlvRWZmZWN0VHlwZVwiLFxuICAgIFwiQXVkaW9MRk9UeXBlXCIsXG4gICAgXCJHTV9idWlsZF9kYXRlXCIsXG4gICAgXCJHTV9idWlsZF90eXBlXCIsXG4gICAgXCJHTV9pc19zYW5kYm94ZWRcIixcbiAgICBcIkdNX3Byb2plY3RfZmlsZW5hbWVcIixcbiAgICBcIkdNX3J1bnRpbWVfdmVyc2lvblwiLFxuICAgIFwiR01fdmVyc2lvblwiLFxuICAgIFwiTmFOXCIsXG4gICAgXCJfR01GSUxFX1wiLFxuICAgIFwiX0dNRlVOQ1RJT05fXCIsXG4gICAgXCJfR01MSU5FX1wiLFxuICAgIFwiYWxpZ25tZW50SFwiLFxuICAgIFwiYWxpZ25tZW50VlwiLFxuICAgIFwiYWxsXCIsXG4gICAgXCJhbmltY3VydmV0eXBlX2JlemllclwiLFxuICAgIFwiYW5pbWN1cnZldHlwZV9jYXRtdWxscm9tXCIsXG4gICAgXCJhbmltY3VydmV0eXBlX2xpbmVhclwiLFxuICAgIFwiYXNzZXRfYW5pbWF0aW9uY3VydmVcIixcbiAgICBcImFzc2V0X2ZvbnRcIixcbiAgICBcImFzc2V0X29iamVjdFwiLFxuICAgIFwiYXNzZXRfcGF0aFwiLFxuICAgIFwiYXNzZXRfcm9vbVwiLFxuICAgIFwiYXNzZXRfc2NyaXB0XCIsXG4gICAgXCJhc3NldF9zZXF1ZW5jZVwiLFxuICAgIFwiYXNzZXRfc2hhZGVyXCIsXG4gICAgXCJhc3NldF9zb3VuZFwiLFxuICAgIFwiYXNzZXRfc3ByaXRlXCIsXG4gICAgXCJhc3NldF90aWxlc1wiLFxuICAgIFwiYXNzZXRfdGltZWxpbmVcIixcbiAgICBcImFzc2V0X3Vua25vd25cIixcbiAgICBcImF1ZGlvXzNEXCIsXG4gICAgXCJhdWRpb19idXNfbWFpblwiLFxuICAgIFwiYXVkaW9fZmFsbG9mZl9leHBvbmVudF9kaXN0YW5jZVwiLFxuICAgIFwiYXVkaW9fZmFsbG9mZl9leHBvbmVudF9kaXN0YW5jZV9jbGFtcGVkXCIsXG4gICAgXCJhdWRpb19mYWxsb2ZmX2V4cG9uZW50X2Rpc3RhbmNlX3NjYWxlZFwiLFxuICAgIFwiYXVkaW9fZmFsbG9mZl9pbnZlcnNlX2Rpc3RhbmNlXCIsXG4gICAgXCJhdWRpb19mYWxsb2ZmX2ludmVyc2VfZGlzdGFuY2VfY2xhbXBlZFwiLFxuICAgIFwiYXVkaW9fZmFsbG9mZl9pbnZlcnNlX2Rpc3RhbmNlX3NjYWxlZFwiLFxuICAgIFwiYXVkaW9fZmFsbG9mZl9saW5lYXJfZGlzdGFuY2VcIixcbiAgICBcImF1ZGlvX2ZhbGxvZmZfbGluZWFyX2Rpc3RhbmNlX2NsYW1wZWRcIixcbiAgICBcImF1ZGlvX2ZhbGxvZmZfbm9uZVwiLFxuICAgIFwiYXVkaW9fbW9ub1wiLFxuICAgIFwiYXVkaW9fc3RlcmVvXCIsXG4gICAgXCJiYm94a2luZF9kaWFtb25kXCIsXG4gICAgXCJiYm94a2luZF9lbGxpcHNlXCIsXG4gICAgXCJiYm94a2luZF9wcmVjaXNlXCIsXG4gICAgXCJiYm94a2luZF9yZWN0YW5ndWxhclwiLFxuICAgIFwiYmJveG1vZGVfYXV0b21hdGljXCIsXG4gICAgXCJiYm94bW9kZV9mdWxsaW1hZ2VcIixcbiAgICBcImJib3htb2RlX21hbnVhbFwiLFxuICAgIFwiYm1fYWRkXCIsXG4gICAgXCJibV9kZXN0X2FscGhhXCIsXG4gICAgXCJibV9kZXN0X2NvbG9yXCIsXG4gICAgXCJibV9kZXN0X2NvbG91clwiLFxuICAgIFwiYm1faW52X2Rlc3RfYWxwaGFcIixcbiAgICBcImJtX2ludl9kZXN0X2NvbG9yXCIsXG4gICAgXCJibV9pbnZfZGVzdF9jb2xvdXJcIixcbiAgICBcImJtX2ludl9zcmNfYWxwaGFcIixcbiAgICBcImJtX2ludl9zcmNfY29sb3JcIixcbiAgICBcImJtX2ludl9zcmNfY29sb3VyXCIsXG4gICAgXCJibV9tYXhcIixcbiAgICBcImJtX25vcm1hbFwiLFxuICAgIFwiYm1fb25lXCIsXG4gICAgXCJibV9zcmNfYWxwaGFcIixcbiAgICBcImJtX3NyY19hbHBoYV9zYXRcIixcbiAgICBcImJtX3NyY19jb2xvclwiLFxuICAgIFwiYm1fc3JjX2NvbG91clwiLFxuICAgIFwiYm1fc3VidHJhY3RcIixcbiAgICBcImJtX3plcm9cIixcbiAgICBcImJyb3dzZXJfY2hyb21lXCIsXG4gICAgXCJicm93c2VyX2VkZ2VcIixcbiAgICBcImJyb3dzZXJfZmlyZWZveFwiLFxuICAgIFwiYnJvd3Nlcl9pZVwiLFxuICAgIFwiYnJvd3Nlcl9pZV9tb2JpbGVcIixcbiAgICBcImJyb3dzZXJfbm90X2FfYnJvd3NlclwiLFxuICAgIFwiYnJvd3Nlcl9vcGVyYVwiLFxuICAgIFwiYnJvd3Nlcl9zYWZhcmlcIixcbiAgICBcImJyb3dzZXJfc2FmYXJpX21vYmlsZVwiLFxuICAgIFwiYnJvd3Nlcl90aXplblwiLFxuICAgIFwiYnJvd3Nlcl91bmtub3duXCIsXG4gICAgXCJicm93c2VyX3dpbmRvd3Nfc3RvcmVcIixcbiAgICBcImJ1ZmZlcl9ib29sXCIsXG4gICAgXCJidWZmZXJfZjE2XCIsXG4gICAgXCJidWZmZXJfZjMyXCIsXG4gICAgXCJidWZmZXJfZjY0XCIsXG4gICAgXCJidWZmZXJfZmFzdFwiLFxuICAgIFwiYnVmZmVyX2ZpeGVkXCIsXG4gICAgXCJidWZmZXJfZ3Jvd1wiLFxuICAgIFwiYnVmZmVyX3MxNlwiLFxuICAgIFwiYnVmZmVyX3MzMlwiLFxuICAgIFwiYnVmZmVyX3M4XCIsXG4gICAgXCJidWZmZXJfc2Vla19lbmRcIixcbiAgICBcImJ1ZmZlcl9zZWVrX3JlbGF0aXZlXCIsXG4gICAgXCJidWZmZXJfc2Vla19zdGFydFwiLFxuICAgIFwiYnVmZmVyX3N0cmluZ1wiLFxuICAgIFwiYnVmZmVyX3RleHRcIixcbiAgICBcImJ1ZmZlcl91MTZcIixcbiAgICBcImJ1ZmZlcl91MzJcIixcbiAgICBcImJ1ZmZlcl91NjRcIixcbiAgICBcImJ1ZmZlcl91OFwiLFxuICAgIFwiYnVmZmVyX3ZidWZmZXJcIixcbiAgICBcImJ1ZmZlcl93cmFwXCIsXG4gICAgXCJjX2FxdWFcIixcbiAgICBcImNfYmxhY2tcIixcbiAgICBcImNfYmx1ZVwiLFxuICAgIFwiY19ka2dyYXlcIixcbiAgICBcImNfZGtncmV5XCIsXG4gICAgXCJjX2Z1Y2hzaWFcIixcbiAgICBcImNfZ3JheVwiLFxuICAgIFwiY19ncmVlblwiLFxuICAgIFwiY19ncmV5XCIsXG4gICAgXCJjX2xpbWVcIixcbiAgICBcImNfbHRncmF5XCIsXG4gICAgXCJjX2x0Z3JleVwiLFxuICAgIFwiY19tYXJvb25cIixcbiAgICBcImNfbmF2eVwiLFxuICAgIFwiY19vbGl2ZVwiLFxuICAgIFwiY19vcmFuZ2VcIixcbiAgICBcImNfcHVycGxlXCIsXG4gICAgXCJjX3JlZFwiLFxuICAgIFwiY19zaWx2ZXJcIixcbiAgICBcImNfdGVhbFwiLFxuICAgIFwiY193aGl0ZVwiLFxuICAgIFwiY195ZWxsb3dcIixcbiAgICBcImNhY2hlX2RpcmVjdG9yeVwiLFxuICAgIFwiY2hhcmFjdGVyU3BhY2luZ1wiLFxuICAgIFwiY21wZnVuY19hbHdheXNcIixcbiAgICBcImNtcGZ1bmNfZXF1YWxcIixcbiAgICBcImNtcGZ1bmNfZ3JlYXRlclwiLFxuICAgIFwiY21wZnVuY19ncmVhdGVyZXF1YWxcIixcbiAgICBcImNtcGZ1bmNfbGVzc1wiLFxuICAgIFwiY21wZnVuY19sZXNzZXF1YWxcIixcbiAgICBcImNtcGZ1bmNfbmV2ZXJcIixcbiAgICBcImNtcGZ1bmNfbm90ZXF1YWxcIixcbiAgICBcImNvcmVDb2xvclwiLFxuICAgIFwiY29yZUNvbG91clwiLFxuICAgIFwiY3JfYXBwc3RhcnRcIixcbiAgICBcImNyX2Fycm93XCIsXG4gICAgXCJjcl9iZWFtXCIsXG4gICAgXCJjcl9jcm9zc1wiLFxuICAgIFwiY3JfZGVmYXVsdFwiLFxuICAgIFwiY3JfZHJhZ1wiLFxuICAgIFwiY3JfaGFuZHBvaW50XCIsXG4gICAgXCJjcl9ob3VyZ2xhc3NcIixcbiAgICBcImNyX25vbmVcIixcbiAgICBcImNyX3NpemVfYWxsXCIsXG4gICAgXCJjcl9zaXplX25lc3dcIixcbiAgICBcImNyX3NpemVfbnNcIixcbiAgICBcImNyX3NpemVfbndzZVwiLFxuICAgIFwiY3Jfc2l6ZV93ZVwiLFxuICAgIFwiY3JfdXBhcnJvd1wiLFxuICAgIFwiY3VsbF9jbG9ja3dpc2VcIixcbiAgICBcImN1bGxfY291bnRlcmNsb2Nrd2lzZVwiLFxuICAgIFwiY3VsbF9ub2N1bGxpbmdcIixcbiAgICBcImRldmljZV9lbXVsYXRvclwiLFxuICAgIFwiZGV2aWNlX2lvc19pcGFkXCIsXG4gICAgXCJkZXZpY2VfaW9zX2lwYWRfcmV0aW5hXCIsXG4gICAgXCJkZXZpY2VfaW9zX2lwaG9uZVwiLFxuICAgIFwiZGV2aWNlX2lvc19pcGhvbmU1XCIsXG4gICAgXCJkZXZpY2VfaW9zX2lwaG9uZTZcIixcbiAgICBcImRldmljZV9pb3NfaXBob25lNnBsdXNcIixcbiAgICBcImRldmljZV9pb3NfaXBob25lX3JldGluYVwiLFxuICAgIFwiZGV2aWNlX2lvc191bmtub3duXCIsXG4gICAgXCJkZXZpY2VfdGFibGV0XCIsXG4gICAgXCJkaXNwbGF5X2xhbmRzY2FwZVwiLFxuICAgIFwiZGlzcGxheV9sYW5kc2NhcGVfZmxpcHBlZFwiLFxuICAgIFwiZGlzcGxheV9wb3J0cmFpdFwiLFxuICAgIFwiZGlzcGxheV9wb3J0cmFpdF9mbGlwcGVkXCIsXG4gICAgXCJkbGxfY2RlY2xcIixcbiAgICBcImRsbF9zdGRjYWxsXCIsXG4gICAgXCJkcm9wU2hhZG93RW5hYmxlZFwiLFxuICAgIFwiZHJvcFNoYWRvd0VuYWJsZWRcIixcbiAgICBcImRzX3R5cGVfZ3JpZFwiLFxuICAgIFwiZHNfdHlwZV9saXN0XCIsXG4gICAgXCJkc190eXBlX21hcFwiLFxuICAgIFwiZHNfdHlwZV9wcmlvcml0eVwiLFxuICAgIFwiZHNfdHlwZV9xdWV1ZVwiLFxuICAgIFwiZHNfdHlwZV9zdGFja1wiLFxuICAgIFwiZWZfY2xvdWRcIixcbiAgICBcImVmX2VsbGlwc2VcIixcbiAgICBcImVmX2V4cGxvc2lvblwiLFxuICAgIFwiZWZfZmlyZXdvcmtcIixcbiAgICBcImVmX2ZsYXJlXCIsXG4gICAgXCJlZl9yYWluXCIsXG4gICAgXCJlZl9yaW5nXCIsXG4gICAgXCJlZl9zbW9rZVwiLFxuICAgIFwiZWZfc21va2V1cFwiLFxuICAgIFwiZWZfc25vd1wiLFxuICAgIFwiZWZfc3BhcmtcIixcbiAgICBcImVmX3N0YXJcIixcbiAgICBcImVmZmVjdHNFbmFibGVkXCIsXG4gICAgXCJlZmZlY3RzRW5hYmxlZFwiLFxuICAgIFwiZXZfYWxhcm1cIixcbiAgICBcImV2X2FuaW1hdGlvbl9lbmRcIixcbiAgICBcImV2X2FuaW1hdGlvbl9ldmVudFwiLFxuICAgIFwiZXZfYW5pbWF0aW9uX3VwZGF0ZVwiLFxuICAgIFwiZXZfYXN5bmNfYXVkaW9fcGxheWJhY2tcIixcbiAgICBcImV2X2FzeW5jX2F1ZGlvX3BsYXliYWNrX2VuZGVkXCIsXG4gICAgXCJldl9hc3luY19hdWRpb19yZWNvcmRpbmdcIixcbiAgICBcImV2X2FzeW5jX2RpYWxvZ1wiLFxuICAgIFwiZXZfYXN5bmNfcHVzaF9ub3RpZmljYXRpb25cIixcbiAgICBcImV2X2FzeW5jX3NhdmVfbG9hZFwiLFxuICAgIFwiZXZfYXN5bmNfc2F2ZV9sb2FkXCIsXG4gICAgXCJldl9hc3luY19zb2NpYWxcIixcbiAgICBcImV2X2FzeW5jX3N5c3RlbV9ldmVudFwiLFxuICAgIFwiZXZfYXN5bmNfd2ViXCIsXG4gICAgXCJldl9hc3luY193ZWJfY2xvdWRcIixcbiAgICBcImV2X2FzeW5jX3dlYl9pYXBcIixcbiAgICBcImV2X2FzeW5jX3dlYl9pbWFnZV9sb2FkXCIsXG4gICAgXCJldl9hc3luY193ZWJfbmV0d29ya2luZ1wiLFxuICAgIFwiZXZfYXN5bmNfd2ViX3N0ZWFtXCIsXG4gICAgXCJldl9hdWRpb19wbGF5YmFja1wiLFxuICAgIFwiZXZfYXVkaW9fcGxheWJhY2tfZW5kZWRcIixcbiAgICBcImV2X2F1ZGlvX3JlY29yZGluZ1wiLFxuICAgIFwiZXZfYm91bmRhcnlcIixcbiAgICBcImV2X2JvdW5kYXJ5X3ZpZXcwXCIsXG4gICAgXCJldl9ib3VuZGFyeV92aWV3MVwiLFxuICAgIFwiZXZfYm91bmRhcnlfdmlldzJcIixcbiAgICBcImV2X2JvdW5kYXJ5X3ZpZXczXCIsXG4gICAgXCJldl9ib3VuZGFyeV92aWV3NFwiLFxuICAgIFwiZXZfYm91bmRhcnlfdmlldzVcIixcbiAgICBcImV2X2JvdW5kYXJ5X3ZpZXc2XCIsXG4gICAgXCJldl9ib3VuZGFyeV92aWV3N1wiLFxuICAgIFwiZXZfYnJvYWRjYXN0X21lc3NhZ2VcIixcbiAgICBcImV2X2NsZWFudXBcIixcbiAgICBcImV2X2NvbGxpc2lvblwiLFxuICAgIFwiZXZfY3JlYXRlXCIsXG4gICAgXCJldl9kZXN0cm95XCIsXG4gICAgXCJldl9kaWFsb2dfYXN5bmNcIixcbiAgICBcImV2X2RyYXdcIixcbiAgICBcImV2X2RyYXdfYmVnaW5cIixcbiAgICBcImV2X2RyYXdfZW5kXCIsXG4gICAgXCJldl9kcmF3X25vcm1hbFwiLFxuICAgIFwiZXZfZHJhd19wb3N0XCIsXG4gICAgXCJldl9kcmF3X3ByZVwiLFxuICAgIFwiZXZfZW5kX29mX3BhdGhcIixcbiAgICBcImV2X2dhbWVfZW5kXCIsXG4gICAgXCJldl9nYW1lX3N0YXJ0XCIsXG4gICAgXCJldl9nZXN0dXJlXCIsXG4gICAgXCJldl9nZXN0dXJlX2RvdWJsZV90YXBcIixcbiAgICBcImV2X2dlc3R1cmVfZHJhZ19lbmRcIixcbiAgICBcImV2X2dlc3R1cmVfZHJhZ19zdGFydFwiLFxuICAgIFwiZXZfZ2VzdHVyZV9kcmFnZ2luZ1wiLFxuICAgIFwiZXZfZ2VzdHVyZV9mbGlja1wiLFxuICAgIFwiZXZfZ2VzdHVyZV9waW5jaF9lbmRcIixcbiAgICBcImV2X2dlc3R1cmVfcGluY2hfaW5cIixcbiAgICBcImV2X2dlc3R1cmVfcGluY2hfb3V0XCIsXG4gICAgXCJldl9nZXN0dXJlX3BpbmNoX3N0YXJ0XCIsXG4gICAgXCJldl9nZXN0dXJlX3JvdGF0ZV9lbmRcIixcbiAgICBcImV2X2dlc3R1cmVfcm90YXRlX3N0YXJ0XCIsXG4gICAgXCJldl9nZXN0dXJlX3JvdGF0aW5nXCIsXG4gICAgXCJldl9nZXN0dXJlX3RhcFwiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfZG91YmxlX3RhcFwiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfZHJhZ19lbmRcIixcbiAgICBcImV2X2dsb2JhbF9nZXN0dXJlX2RyYWdfc3RhcnRcIixcbiAgICBcImV2X2dsb2JhbF9nZXN0dXJlX2RyYWdnaW5nXCIsXG4gICAgXCJldl9nbG9iYWxfZ2VzdHVyZV9mbGlja1wiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfcGluY2hfZW5kXCIsXG4gICAgXCJldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9pblwiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfcGluY2hfb3V0XCIsXG4gICAgXCJldl9nbG9iYWxfZ2VzdHVyZV9waW5jaF9zdGFydFwiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfcm90YXRlX2VuZFwiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfcm90YXRlX3N0YXJ0XCIsXG4gICAgXCJldl9nbG9iYWxfZ2VzdHVyZV9yb3RhdGluZ1wiLFxuICAgIFwiZXZfZ2xvYmFsX2dlc3R1cmVfdGFwXCIsXG4gICAgXCJldl9nbG9iYWxfbGVmdF9idXR0b25cIixcbiAgICBcImV2X2dsb2JhbF9sZWZ0X3ByZXNzXCIsXG4gICAgXCJldl9nbG9iYWxfbGVmdF9yZWxlYXNlXCIsXG4gICAgXCJldl9nbG9iYWxfbWlkZGxlX2J1dHRvblwiLFxuICAgIFwiZXZfZ2xvYmFsX21pZGRsZV9wcmVzc1wiLFxuICAgIFwiZXZfZ2xvYmFsX21pZGRsZV9yZWxlYXNlXCIsXG4gICAgXCJldl9nbG9iYWxfcmlnaHRfYnV0dG9uXCIsXG4gICAgXCJldl9nbG9iYWxfcmlnaHRfcHJlc3NcIixcbiAgICBcImV2X2dsb2JhbF9yaWdodF9yZWxlYXNlXCIsXG4gICAgXCJldl9ndWlcIixcbiAgICBcImV2X2d1aV9iZWdpblwiLFxuICAgIFwiZXZfZ3VpX2VuZFwiLFxuICAgIFwiZXZfam95c3RpY2sxX2J1dHRvbjFcIixcbiAgICBcImV2X2pveXN0aWNrMV9idXR0b24yXCIsXG4gICAgXCJldl9qb3lzdGljazFfYnV0dG9uM1wiLFxuICAgIFwiZXZfam95c3RpY2sxX2J1dHRvbjRcIixcbiAgICBcImV2X2pveXN0aWNrMV9idXR0b241XCIsXG4gICAgXCJldl9qb3lzdGljazFfYnV0dG9uNlwiLFxuICAgIFwiZXZfam95c3RpY2sxX2J1dHRvbjdcIixcbiAgICBcImV2X2pveXN0aWNrMV9idXR0b244XCIsXG4gICAgXCJldl9qb3lzdGljazFfZG93blwiLFxuICAgIFwiZXZfam95c3RpY2sxX2xlZnRcIixcbiAgICBcImV2X2pveXN0aWNrMV9yaWdodFwiLFxuICAgIFwiZXZfam95c3RpY2sxX3VwXCIsXG4gICAgXCJldl9qb3lzdGljazJfYnV0dG9uMVwiLFxuICAgIFwiZXZfam95c3RpY2syX2J1dHRvbjJcIixcbiAgICBcImV2X2pveXN0aWNrMl9idXR0b24zXCIsXG4gICAgXCJldl9qb3lzdGljazJfYnV0dG9uNFwiLFxuICAgIFwiZXZfam95c3RpY2syX2J1dHRvbjVcIixcbiAgICBcImV2X2pveXN0aWNrMl9idXR0b242XCIsXG4gICAgXCJldl9qb3lzdGljazJfYnV0dG9uN1wiLFxuICAgIFwiZXZfam95c3RpY2syX2J1dHRvbjhcIixcbiAgICBcImV2X2pveXN0aWNrMl9kb3duXCIsXG4gICAgXCJldl9qb3lzdGljazJfbGVmdFwiLFxuICAgIFwiZXZfam95c3RpY2syX3JpZ2h0XCIsXG4gICAgXCJldl9qb3lzdGljazJfdXBcIixcbiAgICBcImV2X2tleWJvYXJkXCIsXG4gICAgXCJldl9rZXlwcmVzc1wiLFxuICAgIFwiZXZfa2V5cmVsZWFzZVwiLFxuICAgIFwiZXZfbGVmdF9idXR0b25cIixcbiAgICBcImV2X2xlZnRfcHJlc3NcIixcbiAgICBcImV2X2xlZnRfcmVsZWFzZVwiLFxuICAgIFwiZXZfbWlkZGxlX2J1dHRvblwiLFxuICAgIFwiZXZfbWlkZGxlX3ByZXNzXCIsXG4gICAgXCJldl9taWRkbGVfcmVsZWFzZVwiLFxuICAgIFwiZXZfbW91c2VcIixcbiAgICBcImV2X21vdXNlX2VudGVyXCIsXG4gICAgXCJldl9tb3VzZV9sZWF2ZVwiLFxuICAgIFwiZXZfbW91c2Vfd2hlZWxfZG93blwiLFxuICAgIFwiZXZfbW91c2Vfd2hlZWxfdXBcIixcbiAgICBcImV2X25vX2J1dHRvblwiLFxuICAgIFwiZXZfbm9fbW9yZV9oZWFsdGhcIixcbiAgICBcImV2X25vX21vcmVfbGl2ZXNcIixcbiAgICBcImV2X290aGVyXCIsXG4gICAgXCJldl9vdXRzaWRlXCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXcwXCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXcxXCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXcyXCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXczXCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXc0XCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXc1XCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXc2XCIsXG4gICAgXCJldl9vdXRzaWRlX3ZpZXc3XCIsXG4gICAgXCJldl9wcmVfY3JlYXRlXCIsXG4gICAgXCJldl9wdXNoX25vdGlmaWNhdGlvblwiLFxuICAgIFwiZXZfcmlnaHRfYnV0dG9uXCIsXG4gICAgXCJldl9yaWdodF9wcmVzc1wiLFxuICAgIFwiZXZfcmlnaHRfcmVsZWFzZVwiLFxuICAgIFwiZXZfcm9vbV9lbmRcIixcbiAgICBcImV2X3Jvb21fc3RhcnRcIixcbiAgICBcImV2X3NvY2lhbFwiLFxuICAgIFwiZXZfc3RlcFwiLFxuICAgIFwiZXZfc3RlcF9iZWdpblwiLFxuICAgIFwiZXZfc3RlcF9lbmRcIixcbiAgICBcImV2X3N0ZXBfbm9ybWFsXCIsXG4gICAgXCJldl9zeXN0ZW1fZXZlbnRcIixcbiAgICBcImV2X3RyaWdnZXJcIixcbiAgICBcImV2X3VzZXIwXCIsXG4gICAgXCJldl91c2VyMVwiLFxuICAgIFwiZXZfdXNlcjEwXCIsXG4gICAgXCJldl91c2VyMTFcIixcbiAgICBcImV2X3VzZXIxMlwiLFxuICAgIFwiZXZfdXNlcjEzXCIsXG4gICAgXCJldl91c2VyMTRcIixcbiAgICBcImV2X3VzZXIxNVwiLFxuICAgIFwiZXZfdXNlcjJcIixcbiAgICBcImV2X3VzZXIzXCIsXG4gICAgXCJldl91c2VyNFwiLFxuICAgIFwiZXZfdXNlcjVcIixcbiAgICBcImV2X3VzZXI2XCIsXG4gICAgXCJldl91c2VyN1wiLFxuICAgIFwiZXZfdXNlcjhcIixcbiAgICBcImV2X3VzZXI5XCIsXG4gICAgXCJldl93ZWJfYXN5bmNcIixcbiAgICBcImV2X3dlYl9jbG91ZFwiLFxuICAgIFwiZXZfd2ViX2lhcFwiLFxuICAgIFwiZXZfd2ViX2ltYWdlX2xvYWRcIixcbiAgICBcImV2X3dlYl9uZXR3b3JraW5nXCIsXG4gICAgXCJldl93ZWJfc291bmRfbG9hZFwiLFxuICAgIFwiZXZfd2ViX3N0ZWFtXCIsXG4gICAgXCJmYV9hcmNoaXZlXCIsXG4gICAgXCJmYV9ib3R0b21cIixcbiAgICBcImZhX2NlbnRlclwiLFxuICAgIFwiZmFfZGlyZWN0b3J5XCIsXG4gICAgXCJmYV9oaWRkZW5cIixcbiAgICBcImZhX2xlZnRcIixcbiAgICBcImZhX21pZGRsZVwiLFxuICAgIFwiZmFfbm9uZVwiLFxuICAgIFwiZmFfcmVhZG9ubHlcIixcbiAgICBcImZhX3JpZ2h0XCIsXG4gICAgXCJmYV9zeXNmaWxlXCIsXG4gICAgXCJmYV90b3BcIixcbiAgICBcImZhX3ZvbHVtZWlkXCIsXG4gICAgXCJmYWxzZVwiLFxuICAgIFwiZnJhbWVTaXplWFwiLFxuICAgIFwiZnJhbWVTaXplWVwiLFxuICAgIFwiZ2FtZXNwZWVkX2Zwc1wiLFxuICAgIFwiZ2FtZXNwZWVkX21pY3Jvc2Vjb25kc1wiLFxuICAgIFwiZ2xvYmFsXCIsXG4gICAgXCJnbG93Q29sb3JcIixcbiAgICBcImdsb3dDb2xvdXJcIixcbiAgICBcImdsb3dFbmFibGVkXCIsXG4gICAgXCJnbG93RW5hYmxlZFwiLFxuICAgIFwiZ2xvd0VuZFwiLFxuICAgIFwiZ2xvd1N0YXJ0XCIsXG4gICAgXCJncF9heGlzX2FjY2VsZXJhdGlvbl94XCIsXG4gICAgXCJncF9heGlzX2FjY2VsZXJhdGlvbl95XCIsXG4gICAgXCJncF9heGlzX2FjY2VsZXJhdGlvbl96XCIsXG4gICAgXCJncF9heGlzX2FuZ3VsYXJfdmVsb2NpdHlfeFwiLFxuICAgIFwiZ3BfYXhpc19hbmd1bGFyX3ZlbG9jaXR5X3lcIixcbiAgICBcImdwX2F4aXNfYW5ndWxhcl92ZWxvY2l0eV96XCIsXG4gICAgXCJncF9heGlzX29yaWVudGF0aW9uX3dcIixcbiAgICBcImdwX2F4aXNfb3JpZW50YXRpb25feFwiLFxuICAgIFwiZ3BfYXhpc19vcmllbnRhdGlvbl95XCIsXG4gICAgXCJncF9heGlzX29yaWVudGF0aW9uX3pcIixcbiAgICBcImdwX2F4aXNsaFwiLFxuICAgIFwiZ3BfYXhpc2x2XCIsXG4gICAgXCJncF9heGlzcmhcIixcbiAgICBcImdwX2F4aXNydlwiLFxuICAgIFwiZ3BfZmFjZTFcIixcbiAgICBcImdwX2ZhY2UyXCIsXG4gICAgXCJncF9mYWNlM1wiLFxuICAgIFwiZ3BfZmFjZTRcIixcbiAgICBcImdwX3BhZGRcIixcbiAgICBcImdwX3BhZGxcIixcbiAgICBcImdwX3BhZHJcIixcbiAgICBcImdwX3BhZHVcIixcbiAgICBcImdwX3NlbGVjdFwiLFxuICAgIFwiZ3Bfc2hvdWxkZXJsXCIsXG4gICAgXCJncF9zaG91bGRlcmxiXCIsXG4gICAgXCJncF9zaG91bGRlcnJcIixcbiAgICBcImdwX3Nob3VsZGVycmJcIixcbiAgICBcImdwX3N0YXJ0XCIsXG4gICAgXCJncF9zdGlja2xcIixcbiAgICBcImdwX3N0aWNrclwiLFxuICAgIFwiaWFwX2F2YWlsYWJsZVwiLFxuICAgIFwiaWFwX2NhbmNlbGVkXCIsXG4gICAgXCJpYXBfZXZfY29uc3VtZVwiLFxuICAgIFwiaWFwX2V2X3Byb2R1Y3RcIixcbiAgICBcImlhcF9ldl9wdXJjaGFzZVwiLFxuICAgIFwiaWFwX2V2X3Jlc3RvcmVcIixcbiAgICBcImlhcF9ldl9zdG9yZWxvYWRcIixcbiAgICBcImlhcF9mYWlsZWRcIixcbiAgICBcImlhcF9wdXJjaGFzZWRcIixcbiAgICBcImlhcF9yZWZ1bmRlZFwiLFxuICAgIFwiaWFwX3N0YXR1c19hdmFpbGFibGVcIixcbiAgICBcImlhcF9zdGF0dXNfbG9hZGluZ1wiLFxuICAgIFwiaWFwX3N0YXR1c19wcm9jZXNzaW5nXCIsXG4gICAgXCJpYXBfc3RhdHVzX3Jlc3RvcmluZ1wiLFxuICAgIFwiaWFwX3N0YXR1c191bmF2YWlsYWJsZVwiLFxuICAgIFwiaWFwX3N0YXR1c191bmluaXRpYWxpc2VkXCIsXG4gICAgXCJpYXBfc3RvcmVsb2FkX2ZhaWxlZFwiLFxuICAgIFwiaWFwX3N0b3JlbG9hZF9va1wiLFxuICAgIFwiaWFwX3VuYXZhaWxhYmxlXCIsXG4gICAgXCJpbmZpbml0eVwiLFxuICAgIFwia2J2X2F1dG9jYXBpdGFsaXplX2NoYXJhY3RlcnNcIixcbiAgICBcImtidl9hdXRvY2FwaXRhbGl6ZV9ub25lXCIsXG4gICAgXCJrYnZfYXV0b2NhcGl0YWxpemVfc2VudGVuY2VzXCIsXG4gICAgXCJrYnZfYXV0b2NhcGl0YWxpemVfd29yZHNcIixcbiAgICBcImtidl9yZXR1cm5rZXlfY29udGludWVcIixcbiAgICBcImtidl9yZXR1cm5rZXlfZGVmYXVsdFwiLFxuICAgIFwia2J2X3JldHVybmtleV9kb25lXCIsXG4gICAgXCJrYnZfcmV0dXJua2V5X2VtZXJnZW5jeVwiLFxuICAgIFwia2J2X3JldHVybmtleV9nb1wiLFxuICAgIFwia2J2X3JldHVybmtleV9nb29nbGVcIixcbiAgICBcImtidl9yZXR1cm5rZXlfam9pblwiLFxuICAgIFwia2J2X3JldHVybmtleV9uZXh0XCIsXG4gICAgXCJrYnZfcmV0dXJua2V5X3JvdXRlXCIsXG4gICAgXCJrYnZfcmV0dXJua2V5X3NlYXJjaFwiLFxuICAgIFwia2J2X3JldHVybmtleV9zZW5kXCIsXG4gICAgXCJrYnZfcmV0dXJua2V5X3lhaG9vXCIsXG4gICAgXCJrYnZfdHlwZV9hc2NpaVwiLFxuICAgIFwia2J2X3R5cGVfZGVmYXVsdFwiLFxuICAgIFwia2J2X3R5cGVfZW1haWxcIixcbiAgICBcImtidl90eXBlX251bWJlcnNcIixcbiAgICBcImtidl90eXBlX3Bob25lXCIsXG4gICAgXCJrYnZfdHlwZV9waG9uZV9uYW1lXCIsXG4gICAgXCJrYnZfdHlwZV91cmxcIixcbiAgICBcImxheWVyZWxlbWVudHR5cGVfYmFja2dyb3VuZFwiLFxuICAgIFwibGF5ZXJlbGVtZW50dHlwZV9pbnN0YW5jZVwiLFxuICAgIFwibGF5ZXJlbGVtZW50dHlwZV9vbGR0aWxlbWFwXCIsXG4gICAgXCJsYXllcmVsZW1lbnR0eXBlX3BhcnRpY2xlc3lzdGVtXCIsXG4gICAgXCJsYXllcmVsZW1lbnR0eXBlX3NlcXVlbmNlXCIsXG4gICAgXCJsYXllcmVsZW1lbnR0eXBlX3Nwcml0ZVwiLFxuICAgIFwibGF5ZXJlbGVtZW50dHlwZV90aWxlXCIsXG4gICAgXCJsYXllcmVsZW1lbnR0eXBlX3RpbGVtYXBcIixcbiAgICBcImxheWVyZWxlbWVudHR5cGVfdW5kZWZpbmVkXCIsXG4gICAgXCJsZWFkZXJib2FyZF90eXBlX251bWJlclwiLFxuICAgIFwibGVhZGVyYm9hcmRfdHlwZV90aW1lX21pbnNfc2Vjc1wiLFxuICAgIFwibGlnaHR0eXBlX2RpclwiLFxuICAgIFwibGlnaHR0eXBlX3BvaW50XCIsXG4gICAgXCJsaW5lU3BhY2luZ1wiLFxuICAgIFwibV9heGlzeFwiLFxuICAgIFwibV9heGlzeF9ndWlcIixcbiAgICBcIm1fYXhpc3lcIixcbiAgICBcIm1fYXhpc3lfZ3VpXCIsXG4gICAgXCJtX3Njcm9sbF9kb3duXCIsXG4gICAgXCJtX3Njcm9sbF91cFwiLFxuICAgIFwibWF0cml4X3Byb2plY3Rpb25cIixcbiAgICBcIm1hdHJpeF92aWV3XCIsXG4gICAgXCJtYXRyaXhfd29ybGRcIixcbiAgICBcIm1iX2FueVwiLFxuICAgIFwibWJfbGVmdFwiLFxuICAgIFwibWJfbWlkZGxlXCIsXG4gICAgXCJtYl9ub25lXCIsXG4gICAgXCJtYl9yaWdodFwiLFxuICAgIFwibWJfc2lkZTFcIixcbiAgICBcIm1iX3NpZGUyXCIsXG4gICAgXCJtaXBfbWFya2Vkb25seVwiLFxuICAgIFwibWlwX29mZlwiLFxuICAgIFwibWlwX29uXCIsXG4gICAgXCJuZXR3b3JrX2NvbmZpZ19hdm9pZF90aW1lX3dhaXRcIixcbiAgICBcIm5ldHdvcmtfY29uZmlnX2Nvbm5lY3RfdGltZW91dFwiLFxuICAgIFwibmV0d29ya19jb25maWdfZGlzYWJsZV9tdWx0aWNhc3RcIixcbiAgICBcIm5ldHdvcmtfY29uZmlnX2Rpc2FibGVfcmVsaWFibGVfdWRwXCIsXG4gICAgXCJuZXR3b3JrX2NvbmZpZ19lbmFibGVfbXVsdGljYXN0XCIsXG4gICAgXCJuZXR3b3JrX2NvbmZpZ19lbmFibGVfcmVsaWFibGVfdWRwXCIsXG4gICAgXCJuZXR3b3JrX2NvbmZpZ191c2Vfbm9uX2Jsb2NraW5nX3NvY2tldFwiLFxuICAgIFwibmV0d29ya19jb25maWdfd2Vic29ja2V0X3Byb3RvY29sXCIsXG4gICAgXCJuZXR3b3JrX2Nvbm5lY3RfYWN0aXZlXCIsXG4gICAgXCJuZXR3b3JrX2Nvbm5lY3RfYmxvY2tpbmdcIixcbiAgICBcIm5ldHdvcmtfY29ubmVjdF9ub25ibG9ja2luZ1wiLFxuICAgIFwibmV0d29ya19jb25uZWN0X25vbmVcIixcbiAgICBcIm5ldHdvcmtfY29ubmVjdF9wYXNzaXZlXCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfYmluYXJ5XCIsXG4gICAgXCJuZXR3b3JrX3NlbmRfdGV4dFwiLFxuICAgIFwibmV0d29ya19zb2NrZXRfYmx1ZXRvb3RoXCIsXG4gICAgXCJuZXR3b3JrX3NvY2tldF90Y3BcIixcbiAgICBcIm5ldHdvcmtfc29ja2V0X3VkcFwiLFxuICAgIFwibmV0d29ya19zb2NrZXRfd3NcIixcbiAgICBcIm5ldHdvcmtfc29ja2V0X3dzc1wiLFxuICAgIFwibmV0d29ya190eXBlX2Nvbm5lY3RcIixcbiAgICBcIm5ldHdvcmtfdHlwZV9kYXRhXCIsXG4gICAgXCJuZXR3b3JrX3R5cGVfZGlzY29ubmVjdFwiLFxuICAgIFwibmV0d29ya190eXBlX2Rvd25cIixcbiAgICBcIm5ldHdvcmtfdHlwZV9ub25fYmxvY2tpbmdfY29ubmVjdFwiLFxuICAgIFwibmV0d29ya190eXBlX3VwXCIsXG4gICAgXCJuZXR3b3JrX3R5cGVfdXBfZmFpbGVkXCIsXG4gICAgXCJuaW5lc2xpY2VfYmxhbmtcIixcbiAgICBcIm5pbmVzbGljZV9ib3R0b21cIixcbiAgICBcIm5pbmVzbGljZV9jZW50ZXJcIixcbiAgICBcIm5pbmVzbGljZV9jZW50cmVcIixcbiAgICBcIm5pbmVzbGljZV9oaWRlXCIsXG4gICAgXCJuaW5lc2xpY2VfbGVmdFwiLFxuICAgIFwibmluZXNsaWNlX21pcnJvclwiLFxuICAgIFwibmluZXNsaWNlX3JlcGVhdFwiLFxuICAgIFwibmluZXNsaWNlX3JpZ2h0XCIsXG4gICAgXCJuaW5lc2xpY2Vfc3RyZXRjaFwiLFxuICAgIFwibmluZXNsaWNlX3RvcFwiLFxuICAgIFwibm9vbmVcIixcbiAgICBcIm9mX2NoYWxsZW5nZV9sb3NlXCIsXG4gICAgXCJvZl9jaGFsbGVuZ2VfdGllXCIsXG4gICAgXCJvZl9jaGFsbGVuZ2Vfd2luXCIsXG4gICAgXCJvc19hbmRyb2lkXCIsXG4gICAgXCJvc19nZGtcIixcbiAgICBcIm9zX2d4Z2FtZXNcIixcbiAgICBcIm9zX2lvc1wiLFxuICAgIFwib3NfbGludXhcIixcbiAgICBcIm9zX21hY29zeFwiLFxuICAgIFwib3Nfb3BlcmFneFwiLFxuICAgIFwib3NfcGVybWlzc2lvbl9kZW5pZWRcIixcbiAgICBcIm9zX3Blcm1pc3Npb25fZGVuaWVkX2RvbnRfcmVxdWVzdFwiLFxuICAgIFwib3NfcGVybWlzc2lvbl9ncmFudGVkXCIsXG4gICAgXCJvc19wczNcIixcbiAgICBcIm9zX3BzNFwiLFxuICAgIFwib3NfcHM1XCIsXG4gICAgXCJvc19wc3ZpdGFcIixcbiAgICBcIm9zX3N3aXRjaFwiLFxuICAgIFwib3NfdHZvc1wiLFxuICAgIFwib3NfdW5rbm93blwiLFxuICAgIFwib3NfdXdwXCIsXG4gICAgXCJvc193aW44bmF0aXZlXCIsXG4gICAgXCJvc193aW5kb3dzXCIsXG4gICAgXCJvc193aW5waG9uZVwiLFxuICAgIFwib3NfeGJveG9uZVwiLFxuICAgIFwib3NfeGJveHNlcmllc3hzXCIsXG4gICAgXCJvdGhlclwiLFxuICAgIFwib3V0bGluZUNvbG9yXCIsXG4gICAgXCJvdXRsaW5lQ29sb3VyXCIsXG4gICAgXCJvdXRsaW5lRGlzdFwiLFxuICAgIFwib3V0bGluZUVuYWJsZWRcIixcbiAgICBcIm91dGxpbmVFbmFibGVkXCIsXG4gICAgXCJwYXJhZ3JhcGhTcGFjaW5nXCIsXG4gICAgXCJwYXRoX2FjdGlvbl9jb250aW51ZVwiLFxuICAgIFwicGF0aF9hY3Rpb25fcmVzdGFydFwiLFxuICAgIFwicGF0aF9hY3Rpb25fcmV2ZXJzZVwiLFxuICAgIFwicGF0aF9hY3Rpb25fc3RvcFwiLFxuICAgIFwicGh5X2RlYnVnX3JlbmRlcl9hYWJiXCIsXG4gICAgXCJwaHlfZGVidWdfcmVuZGVyX2NvbGxpc2lvbl9wYWlyc1wiLFxuICAgIFwicGh5X2RlYnVnX3JlbmRlcl9jb21zXCIsXG4gICAgXCJwaHlfZGVidWdfcmVuZGVyX2NvcmVfc2hhcGVzXCIsXG4gICAgXCJwaHlfZGVidWdfcmVuZGVyX2pvaW50c1wiLFxuICAgIFwicGh5X2RlYnVnX3JlbmRlcl9vYmJcIixcbiAgICBcInBoeV9kZWJ1Z19yZW5kZXJfc2hhcGVzXCIsXG4gICAgXCJwaHlfam9pbnRfYW5jaG9yXzFfeFwiLFxuICAgIFwicGh5X2pvaW50X2FuY2hvcl8xX3lcIixcbiAgICBcInBoeV9qb2ludF9hbmNob3JfMl94XCIsXG4gICAgXCJwaHlfam9pbnRfYW5jaG9yXzJfeVwiLFxuICAgIFwicGh5X2pvaW50X2FuZ2xlXCIsXG4gICAgXCJwaHlfam9pbnRfYW5nbGVfbGltaXRzXCIsXG4gICAgXCJwaHlfam9pbnRfZGFtcGluZ19yYXRpb1wiLFxuICAgIFwicGh5X2pvaW50X2ZyZXF1ZW5jeVwiLFxuICAgIFwicGh5X2pvaW50X2xlbmd0aF8xXCIsXG4gICAgXCJwaHlfam9pbnRfbGVuZ3RoXzJcIixcbiAgICBcInBoeV9qb2ludF9sb3dlcl9hbmdsZV9saW1pdFwiLFxuICAgIFwicGh5X2pvaW50X21heF9mb3JjZVwiLFxuICAgIFwicGh5X2pvaW50X21heF9sZW5ndGhcIixcbiAgICBcInBoeV9qb2ludF9tYXhfbW90b3JfZm9yY2VcIixcbiAgICBcInBoeV9qb2ludF9tYXhfbW90b3JfdG9ycXVlXCIsXG4gICAgXCJwaHlfam9pbnRfbWF4X3RvcnF1ZVwiLFxuICAgIFwicGh5X2pvaW50X21vdG9yX2ZvcmNlXCIsXG4gICAgXCJwaHlfam9pbnRfbW90b3Jfc3BlZWRcIixcbiAgICBcInBoeV9qb2ludF9tb3Rvcl90b3JxdWVcIixcbiAgICBcInBoeV9qb2ludF9yZWFjdGlvbl9mb3JjZV94XCIsXG4gICAgXCJwaHlfam9pbnRfcmVhY3Rpb25fZm9yY2VfeVwiLFxuICAgIFwicGh5X2pvaW50X3JlYWN0aW9uX3RvcnF1ZVwiLFxuICAgIFwicGh5X2pvaW50X3NwZWVkXCIsXG4gICAgXCJwaHlfam9pbnRfdHJhbnNsYXRpb25cIixcbiAgICBcInBoeV9qb2ludF91cHBlcl9hbmdsZV9saW1pdFwiLFxuICAgIFwicGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jYXRlZ29yeVwiLFxuICAgIFwicGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvclwiLFxuICAgIFwicGh5X3BhcnRpY2xlX2RhdGFfZmxhZ19jb2xvdXJcIixcbiAgICBcInBoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfcG9zaXRpb25cIixcbiAgICBcInBoeV9wYXJ0aWNsZV9kYXRhX2ZsYWdfdHlwZWZsYWdzXCIsXG4gICAgXCJwaHlfcGFydGljbGVfZGF0YV9mbGFnX3ZlbG9jaXR5XCIsXG4gICAgXCJwaHlfcGFydGljbGVfZmxhZ19jb2xvcm1peGluZ1wiLFxuICAgIFwicGh5X3BhcnRpY2xlX2ZsYWdfY29sb3VybWl4aW5nXCIsXG4gICAgXCJwaHlfcGFydGljbGVfZmxhZ19lbGFzdGljXCIsXG4gICAgXCJwaHlfcGFydGljbGVfZmxhZ19wb3dkZXJcIixcbiAgICBcInBoeV9wYXJ0aWNsZV9mbGFnX3NwcmluZ1wiLFxuICAgIFwicGh5X3BhcnRpY2xlX2ZsYWdfdGVuc2lsZVwiLFxuICAgIFwicGh5X3BhcnRpY2xlX2ZsYWdfdmlzY291c1wiLFxuICAgIFwicGh5X3BhcnRpY2xlX2ZsYWdfd2FsbFwiLFxuICAgIFwicGh5X3BhcnRpY2xlX2ZsYWdfd2F0ZXJcIixcbiAgICBcInBoeV9wYXJ0aWNsZV9mbGFnX3pvbWJpZVwiLFxuICAgIFwicGh5X3BhcnRpY2xlX2dyb3VwX2ZsYWdfcmlnaWRcIixcbiAgICBcInBoeV9wYXJ0aWNsZV9ncm91cF9mbGFnX3NvbGlkXCIsXG4gICAgXCJwaVwiLFxuICAgIFwicG9pbnRlcl9pbnZhbGlkXCIsXG4gICAgXCJwb2ludGVyX251bGxcIixcbiAgICBcInByX2xpbmVsaXN0XCIsXG4gICAgXCJwcl9saW5lc3RyaXBcIixcbiAgICBcInByX3BvaW50bGlzdFwiLFxuICAgIFwicHJfdHJpYW5nbGVmYW5cIixcbiAgICBcInByX3RyaWFuZ2xlbGlzdFwiLFxuICAgIFwicHJfdHJpYW5nbGVzdHJpcFwiLFxuICAgIFwicHNfZGlzdHJfZ2F1c3NpYW5cIixcbiAgICBcInBzX2Rpc3RyX2ludmdhdXNzaWFuXCIsXG4gICAgXCJwc19kaXN0cl9saW5lYXJcIixcbiAgICBcInBzX21vZGVfYnVyc3RcIixcbiAgICBcInBzX21vZGVfc3RyZWFtXCIsXG4gICAgXCJwc19zaGFwZV9kaWFtb25kXCIsXG4gICAgXCJwc19zaGFwZV9lbGxpcHNlXCIsXG4gICAgXCJwc19zaGFwZV9saW5lXCIsXG4gICAgXCJwc19zaGFwZV9yZWN0YW5nbGVcIixcbiAgICBcInB0X3NoYXBlX2NpcmNsZVwiLFxuICAgIFwicHRfc2hhcGVfY2xvdWRcIixcbiAgICBcInB0X3NoYXBlX2Rpc2tcIixcbiAgICBcInB0X3NoYXBlX2V4cGxvc2lvblwiLFxuICAgIFwicHRfc2hhcGVfZmxhcmVcIixcbiAgICBcInB0X3NoYXBlX2xpbmVcIixcbiAgICBcInB0X3NoYXBlX3BpeGVsXCIsXG4gICAgXCJwdF9zaGFwZV9yaW5nXCIsXG4gICAgXCJwdF9zaGFwZV9zbW9rZVwiLFxuICAgIFwicHRfc2hhcGVfc25vd1wiLFxuICAgIFwicHRfc2hhcGVfc3BhcmtcIixcbiAgICBcInB0X3NoYXBlX3NwaGVyZVwiLFxuICAgIFwicHRfc2hhcGVfc3F1YXJlXCIsXG4gICAgXCJwdF9zaGFwZV9zdGFyXCIsXG4gICAgXCJyb2xsYmFja19jaGF0X21lc3NhZ2VcIixcbiAgICBcInJvbGxiYWNrX2Nvbm5lY3RfZXJyb3JcIixcbiAgICBcInJvbGxiYWNrX2Nvbm5lY3RfaW5mb1wiLFxuICAgIFwicm9sbGJhY2tfY29ubmVjdGVkX3RvX3BlZXJcIixcbiAgICBcInJvbGxiYWNrX2Nvbm5lY3Rpb25fcmVqZWN0ZWRcIixcbiAgICBcInJvbGxiYWNrX2Rpc2Nvbm5lY3RlZF9mcm9tX3BlZXJcIixcbiAgICBcInJvbGxiYWNrX2VuZF9nYW1lXCIsXG4gICAgXCJyb2xsYmFja19nYW1lX2Z1bGxcIixcbiAgICBcInJvbGxiYWNrX2dhbWVfaW5mb1wiLFxuICAgIFwicm9sbGJhY2tfZ2FtZV9pbnRlcnJ1cHRlZFwiLFxuICAgIFwicm9sbGJhY2tfZ2FtZV9yZXN1bWVkXCIsXG4gICAgXCJyb2xsYmFja19oaWdoX2xhdGVuY3lcIixcbiAgICBcInJvbGxiYWNrX3BsYXllcl9wcmVmc1wiLFxuICAgIFwicm9sbGJhY2tfcHJvdG9jb2xfcmVqZWN0ZWRcIixcbiAgICBcInJvbGxiYWNrX3N5bmNocm9uaXplZF93aXRoX3BlZXJcIixcbiAgICBcInJvbGxiYWNrX3N5bmNocm9uaXppbmdfd2l0aF9wZWVyXCIsXG4gICAgXCJzZWxmXCIsXG4gICAgXCJzZXFhdWRpb2tleV9sb29wXCIsXG4gICAgXCJzZXFhdWRpb2tleV9vbmVzaG90XCIsXG4gICAgXCJzZXFkaXJfbGVmdFwiLFxuICAgIFwic2VxZGlyX3JpZ2h0XCIsXG4gICAgXCJzZXFpbnRlcnBvbGF0aW9uX2Fzc2lnblwiLFxuICAgIFwic2VxaW50ZXJwb2xhdGlvbl9sZXJwXCIsXG4gICAgXCJzZXFwbGF5X2xvb3BcIixcbiAgICBcInNlcXBsYXlfb25lc2hvdFwiLFxuICAgIFwic2VxcGxheV9waW5ncG9uZ1wiLFxuICAgIFwic2VxdGV4dGtleV9ib3R0b21cIixcbiAgICBcInNlcXRleHRrZXlfY2VudGVyXCIsXG4gICAgXCJzZXF0ZXh0a2V5X2p1c3RpZnlcIixcbiAgICBcInNlcXRleHRrZXlfbGVmdFwiLFxuICAgIFwic2VxdGV4dGtleV9taWRkbGVcIixcbiAgICBcInNlcXRleHRrZXlfcmlnaHRcIixcbiAgICBcInNlcXRleHRrZXlfdG9wXCIsXG4gICAgXCJzZXF0cmFja3R5cGVfYXVkaW9cIixcbiAgICBcInNlcXRyYWNrdHlwZV9ib29sXCIsXG4gICAgXCJzZXF0cmFja3R5cGVfY2xpcG1hc2tcIixcbiAgICBcInNlcXRyYWNrdHlwZV9jbGlwbWFza19tYXNrXCIsXG4gICAgXCJzZXF0cmFja3R5cGVfY2xpcG1hc2tfc3ViamVjdFwiLFxuICAgIFwic2VxdHJhY2t0eXBlX2NvbG9yXCIsXG4gICAgXCJzZXF0cmFja3R5cGVfY29sb3VyXCIsXG4gICAgXCJzZXF0cmFja3R5cGVfZW1wdHlcIixcbiAgICBcInNlcXRyYWNrdHlwZV9ncmFwaGljXCIsXG4gICAgXCJzZXF0cmFja3R5cGVfZ3JvdXBcIixcbiAgICBcInNlcXRyYWNrdHlwZV9pbnN0YW5jZVwiLFxuICAgIFwic2VxdHJhY2t0eXBlX21lc3NhZ2VcIixcbiAgICBcInNlcXRyYWNrdHlwZV9tb21lbnRcIixcbiAgICBcInNlcXRyYWNrdHlwZV9wYXJ0aWNsZXN5c3RlbVwiLFxuICAgIFwic2VxdHJhY2t0eXBlX3JlYWxcIixcbiAgICBcInNlcXRyYWNrdHlwZV9zZXF1ZW5jZVwiLFxuICAgIFwic2VxdHJhY2t0eXBlX3Nwcml0ZWZyYW1lc1wiLFxuICAgIFwic2VxdHJhY2t0eXBlX3N0cmluZ1wiLFxuICAgIFwic2VxdHJhY2t0eXBlX3RleHRcIixcbiAgICBcInNoYWRvd0NvbG9yXCIsXG4gICAgXCJzaGFkb3dDb2xvdXJcIixcbiAgICBcInNoYWRvd09mZnNldFhcIixcbiAgICBcInNoYWRvd09mZnNldFlcIixcbiAgICBcInNoYWRvd1NvZnRuZXNzXCIsXG4gICAgXCJzcHJpdGVfYWRkX2V4dF9lcnJvcl9jYW5jZWxsZWRcIixcbiAgICBcInNwcml0ZV9hZGRfZXh0X2Vycm9yX2RlY29tcHJlc3NmYWlsZWRcIixcbiAgICBcInNwcml0ZV9hZGRfZXh0X2Vycm9yX2xvYWRmYWlsZWRcIixcbiAgICBcInNwcml0ZV9hZGRfZXh0X2Vycm9yX3NldHVwZmFpbGVkXCIsXG4gICAgXCJzcHJpdGVfYWRkX2V4dF9lcnJvcl9zcHJpdGVub3Rmb3VuZFwiLFxuICAgIFwic3ByaXRlX2FkZF9leHRfZXJyb3JfdW5rbm93blwiLFxuICAgIFwic3ByaXRlc3BlZWRfZnJhbWVzcGVyZ2FtZWZyYW1lXCIsXG4gICAgXCJzcHJpdGVzcGVlZF9mcmFtZXNwZXJzZWNvbmRcIixcbiAgICBcInN1cmZhY2VfcjE2ZmxvYXRcIixcbiAgICBcInN1cmZhY2VfcjMyZmxvYXRcIixcbiAgICBcInN1cmZhY2Vfcjh1bm9ybVwiLFxuICAgIFwic3VyZmFjZV9yZzh1bm9ybVwiLFxuICAgIFwic3VyZmFjZV9yZ2JhMTZmbG9hdFwiLFxuICAgIFwic3VyZmFjZV9yZ2JhMzJmbG9hdFwiLFxuICAgIFwic3VyZmFjZV9yZ2JhNHVub3JtXCIsXG4gICAgXCJzdXJmYWNlX3JnYmE4dW5vcm1cIixcbiAgICBcInRleHR1cmVncm91cF9zdGF0dXNfZmV0Y2hlZFwiLFxuICAgIFwidGV4dHVyZWdyb3VwX3N0YXR1c19sb2FkZWRcIixcbiAgICBcInRleHR1cmVncm91cF9zdGF0dXNfbG9hZGluZ1wiLFxuICAgIFwidGV4dHVyZWdyb3VwX3N0YXR1c191bmxvYWRlZFwiLFxuICAgIFwidGZfYW5pc290cm9waWNcIixcbiAgICBcInRmX2xpbmVhclwiLFxuICAgIFwidGZfcG9pbnRcIixcbiAgICBcInRoaWNrbmVzc1wiLFxuICAgIFwidGlsZV9mbGlwXCIsXG4gICAgXCJ0aWxlX2luZGV4X21hc2tcIixcbiAgICBcInRpbGVfbWlycm9yXCIsXG4gICAgXCJ0aWxlX3JvdGF0ZVwiLFxuICAgIFwidGltZV9zb3VyY2VfZXhwaXJlX2FmdGVyXCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9leHBpcmVfbmVhcmVzdFwiLFxuICAgIFwidGltZV9zb3VyY2VfZ2FtZVwiLFxuICAgIFwidGltZV9zb3VyY2VfZ2xvYmFsXCIsXG4gICAgXCJ0aW1lX3NvdXJjZV9zdGF0ZV9hY3RpdmVcIixcbiAgICBcInRpbWVfc291cmNlX3N0YXRlX2luaXRpYWxcIixcbiAgICBcInRpbWVfc291cmNlX3N0YXRlX3BhdXNlZFwiLFxuICAgIFwidGltZV9zb3VyY2Vfc3RhdGVfc3RvcHBlZFwiLFxuICAgIFwidGltZV9zb3VyY2VfdW5pdHNfZnJhbWVzXCIsXG4gICAgXCJ0aW1lX3NvdXJjZV91bml0c19zZWNvbmRzXCIsXG4gICAgXCJ0aW1lem9uZV9sb2NhbFwiLFxuICAgIFwidGltZXpvbmVfdXRjXCIsXG4gICAgXCJ0bV9jb3VudHZzeW5jc1wiLFxuICAgIFwidG1fc2xlZXBcIixcbiAgICBcInRtX3N5c3RlbXRpbWluZ1wiLFxuICAgIFwidHJ1ZVwiLFxuICAgIFwidHlfcmVhbFwiLFxuICAgIFwidHlfc3RyaW5nXCIsXG4gICAgXCJ1bmRlZmluZWRcIixcbiAgICBcInZlcnRleF90eXBlX2NvbG9yXCIsXG4gICAgXCJ2ZXJ0ZXhfdHlwZV9jb2xvdXJcIixcbiAgICBcInZlcnRleF90eXBlX2Zsb2F0MVwiLFxuICAgIFwidmVydGV4X3R5cGVfZmxvYXQyXCIsXG4gICAgXCJ2ZXJ0ZXhfdHlwZV9mbG9hdDNcIixcbiAgICBcInZlcnRleF90eXBlX2Zsb2F0NFwiLFxuICAgIFwidmVydGV4X3R5cGVfdWJ5dGU0XCIsXG4gICAgXCJ2ZXJ0ZXhfdXNhZ2VfYmlub3JtYWxcIixcbiAgICBcInZlcnRleF91c2FnZV9ibGVuZGluZGljZXNcIixcbiAgICBcInZlcnRleF91c2FnZV9ibGVuZHdlaWdodFwiLFxuICAgIFwidmVydGV4X3VzYWdlX2NvbG9yXCIsXG4gICAgXCJ2ZXJ0ZXhfdXNhZ2VfY29sb3VyXCIsXG4gICAgXCJ2ZXJ0ZXhfdXNhZ2VfZGVwdGhcIixcbiAgICBcInZlcnRleF91c2FnZV9mb2dcIixcbiAgICBcInZlcnRleF91c2FnZV9ub3JtYWxcIixcbiAgICBcInZlcnRleF91c2FnZV9wb3NpdGlvblwiLFxuICAgIFwidmVydGV4X3VzYWdlX3BzaXplXCIsXG4gICAgXCJ2ZXJ0ZXhfdXNhZ2Vfc2FtcGxlXCIsXG4gICAgXCJ2ZXJ0ZXhfdXNhZ2VfdGFuZ2VudFwiLFxuICAgIFwidmVydGV4X3VzYWdlX3RleGNvb3JkXCIsXG4gICAgXCJ2aWRlb19mb3JtYXRfcmdiYVwiLFxuICAgIFwidmlkZW9fZm9ybWF0X3l1dlwiLFxuICAgIFwidmlkZW9fc3RhdHVzX2Nsb3NlZFwiLFxuICAgIFwidmlkZW9fc3RhdHVzX3BhdXNlZFwiLFxuICAgIFwidmlkZW9fc3RhdHVzX3BsYXlpbmdcIixcbiAgICBcInZpZGVvX3N0YXR1c19wcmVwYXJpbmdcIixcbiAgICBcInZrX2FkZFwiLFxuICAgIFwidmtfYWx0XCIsXG4gICAgXCJ2a19hbnlrZXlcIixcbiAgICBcInZrX2JhY2tzcGFjZVwiLFxuICAgIFwidmtfY29udHJvbFwiLFxuICAgIFwidmtfZGVjaW1hbFwiLFxuICAgIFwidmtfZGVsZXRlXCIsXG4gICAgXCJ2a19kaXZpZGVcIixcbiAgICBcInZrX2Rvd25cIixcbiAgICBcInZrX2VuZFwiLFxuICAgIFwidmtfZW50ZXJcIixcbiAgICBcInZrX2VzY2FwZVwiLFxuICAgIFwidmtfZjFcIixcbiAgICBcInZrX2YxMFwiLFxuICAgIFwidmtfZjExXCIsXG4gICAgXCJ2a19mMTJcIixcbiAgICBcInZrX2YyXCIsXG4gICAgXCJ2a19mM1wiLFxuICAgIFwidmtfZjRcIixcbiAgICBcInZrX2Y1XCIsXG4gICAgXCJ2a19mNlwiLFxuICAgIFwidmtfZjdcIixcbiAgICBcInZrX2Y4XCIsXG4gICAgXCJ2a19mOVwiLFxuICAgIFwidmtfaG9tZVwiLFxuICAgIFwidmtfaW5zZXJ0XCIsXG4gICAgXCJ2a19sYWx0XCIsXG4gICAgXCJ2a19sY29udHJvbFwiLFxuICAgIFwidmtfbGVmdFwiLFxuICAgIFwidmtfbHNoaWZ0XCIsXG4gICAgXCJ2a19tdWx0aXBseVwiLFxuICAgIFwidmtfbm9rZXlcIixcbiAgICBcInZrX251bXBhZDBcIixcbiAgICBcInZrX251bXBhZDFcIixcbiAgICBcInZrX251bXBhZDJcIixcbiAgICBcInZrX251bXBhZDNcIixcbiAgICBcInZrX251bXBhZDRcIixcbiAgICBcInZrX251bXBhZDVcIixcbiAgICBcInZrX251bXBhZDZcIixcbiAgICBcInZrX251bXBhZDdcIixcbiAgICBcInZrX251bXBhZDhcIixcbiAgICBcInZrX251bXBhZDlcIixcbiAgICBcInZrX3BhZ2Vkb3duXCIsXG4gICAgXCJ2a19wYWdldXBcIixcbiAgICBcInZrX3BhdXNlXCIsXG4gICAgXCJ2a19wcmludHNjcmVlblwiLFxuICAgIFwidmtfcmFsdFwiLFxuICAgIFwidmtfcmNvbnRyb2xcIixcbiAgICBcInZrX3JldHVyblwiLFxuICAgIFwidmtfcmlnaHRcIixcbiAgICBcInZrX3JzaGlmdFwiLFxuICAgIFwidmtfc2hpZnRcIixcbiAgICBcInZrX3NwYWNlXCIsXG4gICAgXCJ2a19zdWJ0cmFjdFwiLFxuICAgIFwidmtfdGFiXCIsXG4gICAgXCJ2a191cFwiLFxuICAgIFwid2FsbHBhcGVyX2NvbmZpZ1wiLFxuICAgIFwid2FsbHBhcGVyX3N1YnNjcmlwdGlvbl9kYXRhXCIsXG4gICAgXCJ3cmFwXCJcbiAgXTtcbiAgY29uc3QgTEFOR1VBR0VfVkFSSUFCTEVTID0gW1xuICAgIFwiYWxhcm1cIixcbiAgICBcImFwcGxpY2F0aW9uX3N1cmZhY2VcIixcbiAgICBcImFyZ3VtZW50XCIsXG4gICAgXCJhcmd1bWVudDBcIixcbiAgICBcImFyZ3VtZW50MVwiLFxuICAgIFwiYXJndW1lbnQyXCIsXG4gICAgXCJhcmd1bWVudDNcIixcbiAgICBcImFyZ3VtZW50NFwiLFxuICAgIFwiYXJndW1lbnQ1XCIsXG4gICAgXCJhcmd1bWVudDZcIixcbiAgICBcImFyZ3VtZW50N1wiLFxuICAgIFwiYXJndW1lbnQ4XCIsXG4gICAgXCJhcmd1bWVudDlcIixcbiAgICBcImFyZ3VtZW50MTBcIixcbiAgICBcImFyZ3VtZW50MTFcIixcbiAgICBcImFyZ3VtZW50MTJcIixcbiAgICBcImFyZ3VtZW50MTNcIixcbiAgICBcImFyZ3VtZW50MTRcIixcbiAgICBcImFyZ3VtZW50MTVcIixcbiAgICBcImFyZ3VtZW50X2NvdW50XCIsXG4gICAgXCJhc3luY19sb2FkXCIsXG4gICAgXCJiYWNrZ3JvdW5kX2NvbG9yXCIsXG4gICAgXCJiYWNrZ3JvdW5kX2NvbG91clwiLFxuICAgIFwiYmFja2dyb3VuZF9zaG93Y29sb3JcIixcbiAgICBcImJhY2tncm91bmRfc2hvd2NvbG91clwiLFxuICAgIFwiYmJveF9ib3R0b21cIixcbiAgICBcImJib3hfbGVmdFwiLFxuICAgIFwiYmJveF9yaWdodFwiLFxuICAgIFwiYmJveF90b3BcIixcbiAgICBcImJyb3dzZXJfaGVpZ2h0XCIsXG4gICAgXCJicm93c2VyX3dpZHRoXCIsXG4gICAgXCJjb2xvdXI/Q29sb3VyVHJhY2tcIixcbiAgICBcImN1cnJlbnRfZGF5XCIsXG4gICAgXCJjdXJyZW50X2hvdXJcIixcbiAgICBcImN1cnJlbnRfbWludXRlXCIsXG4gICAgXCJjdXJyZW50X21vbnRoXCIsXG4gICAgXCJjdXJyZW50X3NlY29uZFwiLFxuICAgIFwiY3VycmVudF90aW1lXCIsXG4gICAgXCJjdXJyZW50X3dlZWtkYXlcIixcbiAgICBcImN1cnJlbnRfeWVhclwiLFxuICAgIFwiY3Vyc29yX3Nwcml0ZVwiLFxuICAgIFwiZGVidWdfbW9kZVwiLFxuICAgIFwiZGVsdGFfdGltZVwiLFxuICAgIFwiZGVwdGhcIixcbiAgICBcImRpcmVjdGlvblwiLFxuICAgIFwiZGlzcGxheV9hYVwiLFxuICAgIFwiZHJhd25fYnlfc2VxdWVuY2VcIixcbiAgICBcImV2ZW50X2FjdGlvblwiLFxuICAgIFwiZXZlbnRfZGF0YVwiLFxuICAgIFwiZXZlbnRfbnVtYmVyXCIsXG4gICAgXCJldmVudF9vYmplY3RcIixcbiAgICBcImV2ZW50X3R5cGVcIixcbiAgICBcImZvbnRfdGV4dHVyZV9wYWdlX3NpemVcIixcbiAgICBcImZwc1wiLFxuICAgIFwiZnBzX3JlYWxcIixcbiAgICBcImZyaWN0aW9uXCIsXG4gICAgXCJnYW1lX2Rpc3BsYXlfbmFtZVwiLFxuICAgIFwiZ2FtZV9pZFwiLFxuICAgIFwiZ2FtZV9wcm9qZWN0X25hbWVcIixcbiAgICBcImdhbWVfc2F2ZV9pZFwiLFxuICAgIFwiZ3Jhdml0eVwiLFxuICAgIFwiZ3Jhdml0eV9kaXJlY3Rpb25cIixcbiAgICBcImhlYWx0aFwiLFxuICAgIFwiaHNwZWVkXCIsXG4gICAgXCJpYXBfZGF0YVwiLFxuICAgIFwiaWRcIixcbiAgICBcImltYWdlX2FscGhhXCIsXG4gICAgXCJpbWFnZV9hbmdsZVwiLFxuICAgIFwiaW1hZ2VfYmxlbmRcIixcbiAgICBcImltYWdlX2luZGV4XCIsXG4gICAgXCJpbWFnZV9udW1iZXJcIixcbiAgICBcImltYWdlX3NwZWVkXCIsXG4gICAgXCJpbWFnZV94c2NhbGVcIixcbiAgICBcImltYWdlX3lzY2FsZVwiLFxuICAgIFwiaW5fY29sbGlzaW9uX3RyZWVcIixcbiAgICBcImluX3NlcXVlbmNlXCIsXG4gICAgXCJpbnN0YW5jZV9jb3VudFwiLFxuICAgIFwiaW5zdGFuY2VfaWRcIixcbiAgICBcImtleWJvYXJkX2tleVwiLFxuICAgIFwia2V5Ym9hcmRfbGFzdGNoYXJcIixcbiAgICBcImtleWJvYXJkX2xhc3RrZXlcIixcbiAgICBcImtleWJvYXJkX3N0cmluZ1wiLFxuICAgIFwibGF5ZXJcIixcbiAgICBcImxpdmVzXCIsXG4gICAgXCJsb25nTWVzc2FnZVwiLFxuICAgIFwibWFuYWdlZFwiLFxuICAgIFwibWFza19pbmRleFwiLFxuICAgIFwibWVzc2FnZVwiLFxuICAgIFwibW91c2VfYnV0dG9uXCIsXG4gICAgXCJtb3VzZV9sYXN0YnV0dG9uXCIsXG4gICAgXCJtb3VzZV94XCIsXG4gICAgXCJtb3VzZV95XCIsXG4gICAgXCJvYmplY3RfaW5kZXhcIixcbiAgICBcIm9zX2Jyb3dzZXJcIixcbiAgICBcIm9zX2RldmljZVwiLFxuICAgIFwib3NfdHlwZVwiLFxuICAgIFwib3NfdmVyc2lvblwiLFxuICAgIFwicGF0aF9lbmRhY3Rpb25cIixcbiAgICBcInBhdGhfaW5kZXhcIixcbiAgICBcInBhdGhfb3JpZW50YXRpb25cIixcbiAgICBcInBhdGhfcG9zaXRpb25cIixcbiAgICBcInBhdGhfcG9zaXRpb25wcmV2aW91c1wiLFxuICAgIFwicGF0aF9zY2FsZVwiLFxuICAgIFwicGF0aF9zcGVlZFwiLFxuICAgIFwicGVyc2lzdGVudFwiLFxuICAgIFwicGh5X2FjdGl2ZVwiLFxuICAgIFwicGh5X2FuZ3VsYXJfZGFtcGluZ1wiLFxuICAgIFwicGh5X2FuZ3VsYXJfdmVsb2NpdHlcIixcbiAgICBcInBoeV9idWxsZXRcIixcbiAgICBcInBoeV9jb2xfbm9ybWFsX3hcIixcbiAgICBcInBoeV9jb2xfbm9ybWFsX3lcIixcbiAgICBcInBoeV9jb2xsaXNpb25fcG9pbnRzXCIsXG4gICAgXCJwaHlfY29sbGlzaW9uX3hcIixcbiAgICBcInBoeV9jb2xsaXNpb25feVwiLFxuICAgIFwicGh5X2NvbV94XCIsXG4gICAgXCJwaHlfY29tX3lcIixcbiAgICBcInBoeV9keW5hbWljXCIsXG4gICAgXCJwaHlfZml4ZWRfcm90YXRpb25cIixcbiAgICBcInBoeV9pbmVydGlhXCIsXG4gICAgXCJwaHlfa2luZW1hdGljXCIsXG4gICAgXCJwaHlfbGluZWFyX2RhbXBpbmdcIixcbiAgICBcInBoeV9saW5lYXJfdmVsb2NpdHlfeFwiLFxuICAgIFwicGh5X2xpbmVhcl92ZWxvY2l0eV95XCIsXG4gICAgXCJwaHlfbWFzc1wiLFxuICAgIFwicGh5X3Bvc2l0aW9uX3hcIixcbiAgICBcInBoeV9wb3NpdGlvbl94cHJldmlvdXNcIixcbiAgICBcInBoeV9wb3NpdGlvbl95XCIsXG4gICAgXCJwaHlfcG9zaXRpb25feXByZXZpb3VzXCIsXG4gICAgXCJwaHlfcm90YXRpb25cIixcbiAgICBcInBoeV9zbGVlcGluZ1wiLFxuICAgIFwicGh5X3NwZWVkXCIsXG4gICAgXCJwaHlfc3BlZWRfeFwiLFxuICAgIFwicGh5X3NwZWVkX3lcIixcbiAgICBcInBsYXllcl9hdmF0YXJfc3ByaXRlXCIsXG4gICAgXCJwbGF5ZXJfYXZhdGFyX3VybFwiLFxuICAgIFwicGxheWVyX2lkXCIsXG4gICAgXCJwbGF5ZXJfbG9jYWxcIixcbiAgICBcInBsYXllcl90eXBlXCIsXG4gICAgXCJwbGF5ZXJfdXNlcl9pZFwiLFxuICAgIFwicHJvZ3JhbV9kaXJlY3RvcnlcIixcbiAgICBcInJvbGxiYWNrX2FwaV9zZXJ2ZXJcIixcbiAgICBcInJvbGxiYWNrX2NvbmZpcm1lZF9mcmFtZVwiLFxuICAgIFwicm9sbGJhY2tfY3VycmVudF9mcmFtZVwiLFxuICAgIFwicm9sbGJhY2tfZXZlbnRfaWRcIixcbiAgICBcInJvbGxiYWNrX2V2ZW50X3BhcmFtXCIsXG4gICAgXCJyb2xsYmFja19nYW1lX3J1bm5pbmdcIixcbiAgICBcInJvb21cIixcbiAgICBcInJvb21fZmlyc3RcIixcbiAgICBcInJvb21faGVpZ2h0XCIsXG4gICAgXCJyb29tX2xhc3RcIixcbiAgICBcInJvb21fcGVyc2lzdGVudFwiLFxuICAgIFwicm9vbV9zcGVlZFwiLFxuICAgIFwicm9vbV93aWR0aFwiLFxuICAgIFwic2NvcmVcIixcbiAgICBcInNjcmlwdFwiLFxuICAgIFwic2VxdWVuY2VfaW5zdGFuY2VcIixcbiAgICBcInNvbGlkXCIsXG4gICAgXCJzcGVlZFwiLFxuICAgIFwic3ByaXRlX2hlaWdodFwiLFxuICAgIFwic3ByaXRlX2luZGV4XCIsXG4gICAgXCJzcHJpdGVfd2lkdGhcIixcbiAgICBcInNwcml0ZV94b2Zmc2V0XCIsXG4gICAgXCJzcHJpdGVfeW9mZnNldFwiLFxuICAgIFwic3RhY2t0cmFjZVwiLFxuICAgIFwidGVtcF9kaXJlY3RvcnlcIixcbiAgICBcInRpbWVsaW5lX2luZGV4XCIsXG4gICAgXCJ0aW1lbGluZV9sb29wXCIsXG4gICAgXCJ0aW1lbGluZV9wb3NpdGlvblwiLFxuICAgIFwidGltZWxpbmVfcnVubmluZ1wiLFxuICAgIFwidGltZWxpbmVfc3BlZWRcIixcbiAgICBcInZpZXdfY2FtZXJhXCIsXG4gICAgXCJ2aWV3X2N1cnJlbnRcIixcbiAgICBcInZpZXdfZW5hYmxlZFwiLFxuICAgIFwidmlld19ocG9ydFwiLFxuICAgIFwidmlld19zdXJmYWNlX2lkXCIsXG4gICAgXCJ2aWV3X3Zpc2libGVcIixcbiAgICBcInZpZXdfd3BvcnRcIixcbiAgICBcInZpZXdfeHBvcnRcIixcbiAgICBcInZpZXdfeXBvcnRcIixcbiAgICBcInZpc2libGVcIixcbiAgICBcInZzcGVlZFwiLFxuICAgIFwid2ViZ2xfZW5hYmxlZFwiLFxuICAgIFwid29ya2luZ19kaXJlY3RvcnlcIixcbiAgICBcInhcIixcbiAgICBcInhwcmV2aW91c1wiLFxuICAgIFwieHN0YXJ0XCIsXG4gICAgXCJ5XCIsXG4gICAgXCJ5cHJldmlvdXNcIixcbiAgICBcInlzdGFydFwiXG4gIF07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0dNTCcsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogZmFsc2UsIC8vIGxhbmd1YWdlIGlzIGNhc2UtaW5zZW5zaXRpdmVcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRfSU5TLFxuICAgICAgc3ltYm9sOiBTWU1CT0xTLFxuICAgICAgXCJ2YXJpYWJsZS5sYW5ndWFnZVwiOiBMQU5HVUFHRV9WQVJJQUJMRVNcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnbWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2261\n')},2293:module=>{eval("const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: SCSS\nDescription: Scss is an extension of the syntax of CSS.\nAuthor: Kurt Emch \nWebsite: https://sass-lang.com\nCategory: common, css, web\n*/\n\n\n/** @type LanguageFn */\nfunction scss(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;\n const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;\n\n const AT_IDENTIFIER = '@[a-z-]+'; // @font-face\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b',\n relevance: 0\n };\n\n return {\n name: 'SCSS',\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: '#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n // was there, before, but why?\n relevance: 0\n },\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: ':(:)?(' + PSEUDO_ELEMENTS$1.join('|') + ')'\n },\n VARIABLE,\n { // pseudo-selector params\n begin: /\\(/,\n end: /\\)/,\n contains: [ modes.CSS_NUMBER_MODE ]\n },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n { begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b' },\n {\n begin: /:/,\n end: /[;}{]/,\n relevance: 0,\n contains: [\n modes.BLOCK_COMMENT,\n VARIABLE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.IMPORTANT,\n modes.FUNCTION_DISPATCH\n ]\n },\n // matching these here allows us to treat them more like regular CSS\n // rules so everything between the {} gets regular rule highlighting,\n // which is what we want for page and font-face\n {\n begin: '@(page|font-face)',\n keywords: {\n $pattern: AT_IDENTIFIER,\n keyword: '@page @font-face'\n }\n },\n {\n begin: '@',\n end: '[{;]',\n returnBegin: true,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: AT_IDENTIFIER,\n className: \"keyword\"\n },\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n };\n}\n\nmodule.exports = scss;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjI5My5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixJQUFJLGdCQUFnQixFQUFFLEVBQUUsSUFBSTtBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVEscXBDQUFxcEM7QUFDN3BDO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvc2Nzcy5qcz8zNjZlIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1PREVTID0gKGhsanMpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBJTVBPUlRBTlQ6IHtcbiAgICAgIHNjb3BlOiAnbWV0YScsXG4gICAgICBiZWdpbjogJyFpbXBvcnRhbnQnXG4gICAgfSxcbiAgICBCTE9DS19DT01NRU5UOiBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIEhFWENPTE9SOiB7XG4gICAgICBzY29wZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogLyMoKFswLTlhLWZBLUZdezMsNH0pfCgoWzAtOWEtZkEtRl17Mn0pezMsNH0pKVxcYi9cbiAgICB9LFxuICAgIEZVTkNUSU9OX0RJU1BBVENIOiB7XG4gICAgICBjbGFzc05hbWU6IFwiYnVpbHRfaW5cIixcbiAgICAgIGJlZ2luOiAvW1xcdy1dKyg/PVxcKCkvXG4gICAgfSxcbiAgICBBVFRSSUJVVEVfU0VMRUNUT1JfTU9ERToge1xuICAgICAgc2NvcGU6ICdzZWxlY3Rvci1hdHRyJyxcbiAgICAgIGJlZ2luOiAvXFxbLyxcbiAgICAgIGVuZDogL1xcXS8sXG4gICAgICBpbGxlZ2FsOiAnJCcsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgIF1cbiAgICB9LFxuICAgIENTU19OVU1CRVJfTU9ERToge1xuICAgICAgc2NvcGU6ICdudW1iZXInLFxuICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFICsgJygnICtcbiAgICAgICAgJyV8ZW18ZXh8Y2h8cmVtJyArXG4gICAgICAgICd8dnd8dmh8dm1pbnx2bWF4JyArXG4gICAgICAgICd8Y218bW18aW58cHR8cGN8cHgnICtcbiAgICAgICAgJ3xkZWd8Z3JhZHxyYWR8dHVybicgK1xuICAgICAgICAnfHN8bXMnICtcbiAgICAgICAgJ3xIenxrSHonICtcbiAgICAgICAgJ3xkcGl8ZHBjbXxkcHB4JyArXG4gICAgICAgICcpPycsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIENTU19WQVJJQUJMRToge1xuICAgICAgY2xhc3NOYW1lOiBcImF0dHJcIixcbiAgICAgIGJlZ2luOiAvLS1bQS1aYS16X11bQS1aYS16MC05Xy1dKi9cbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBIVE1MX1RBR1MgPSBbXG4gICdhJyxcbiAgJ2FiYnInLFxuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2F1ZGlvJyxcbiAgJ2InLFxuICAnYmxvY2txdW90ZScsXG4gICdib2R5JyxcbiAgJ2J1dHRvbicsXG4gICdjYW52YXMnLFxuICAnY2FwdGlvbicsXG4gICdjaXRlJyxcbiAgJ2NvZGUnLFxuICAnZGQnLFxuICAnZGVsJyxcbiAgJ2RldGFpbHMnLFxuICAnZGZuJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdlbScsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkZXInLFxuICAnaGdyb3VwJyxcbiAgJ2h0bWwnLFxuICAnaScsXG4gICdpZnJhbWUnLFxuICAnaW1nJyxcbiAgJ2lucHV0JyxcbiAgJ2lucycsXG4gICdrYmQnLFxuICAnbGFiZWwnLFxuICAnbGVnZW5kJyxcbiAgJ2xpJyxcbiAgJ21haW4nLFxuICAnbWFyaycsXG4gICdtZW51JyxcbiAgJ25hdicsXG4gICdvYmplY3QnLFxuICAnb2wnLFxuICAnb3B0Z3JvdXAnLFxuICAnb3B0aW9uJyxcbiAgJ3AnLFxuICAncGljdHVyZScsXG4gICdxJyxcbiAgJ3F1b3RlJyxcbiAgJ3NhbXAnLFxuICAnc2VjdGlvbicsXG4gICdzZWxlY3QnLFxuICAnc291cmNlJyxcbiAgJ3NwYW4nLFxuICAnc3Ryb25nJyxcbiAgJ3N1bW1hcnknLFxuICAnc3VwJyxcbiAgJ3RhYmxlJyxcbiAgJ3Rib2R5JyxcbiAgJ3RkJyxcbiAgJ3RleHRhcmVhJyxcbiAgJ3Rmb290JyxcbiAgJ3RoJyxcbiAgJ3RoZWFkJyxcbiAgJ3RpbWUnLFxuICAndHInLFxuICAndWwnLFxuICAndmFyJyxcbiAgJ3ZpZGVvJ1xuXTtcblxuY29uc3QgU1ZHX1RBR1MgPSBbXG4gICdkZWZzJyxcbiAgJ2cnLFxuICAnbWFya2VyJyxcbiAgJ21hc2snLFxuICAncGF0dGVybicsXG4gICdzdmcnLFxuICAnc3dpdGNoJyxcbiAgJ3N5bWJvbCcsXG4gICdmZUJsZW5kJyxcbiAgJ2ZlQ29sb3JNYXRyaXgnLFxuICAnZmVDb21wb25lbnRUcmFuc2ZlcicsXG4gICdmZUNvbXBvc2l0ZScsXG4gICdmZUNvbnZvbHZlTWF0cml4JyxcbiAgJ2ZlRGlmZnVzZUxpZ2h0aW5nJyxcbiAgJ2ZlRGlzcGxhY2VtZW50TWFwJyxcbiAgJ2ZlRmxvb2QnLFxuICAnZmVHYXVzc2lhbkJsdXInLFxuICAnZmVJbWFnZScsXG4gICdmZU1lcmdlJyxcbiAgJ2ZlTW9ycGhvbG9neScsXG4gICdmZU9mZnNldCcsXG4gICdmZVNwZWN1bGFyTGlnaHRpbmcnLFxuICAnZmVUaWxlJyxcbiAgJ2ZlVHVyYnVsZW5jZScsXG4gICdsaW5lYXJHcmFkaWVudCcsXG4gICdyYWRpYWxHcmFkaWVudCcsXG4gICdzdG9wJyxcbiAgJ2NpcmNsZScsXG4gICdlbGxpcHNlJyxcbiAgJ2ltYWdlJyxcbiAgJ2xpbmUnLFxuICAncGF0aCcsXG4gICdwb2x5Z29uJyxcbiAgJ3BvbHlsaW5lJyxcbiAgJ3JlY3QnLFxuICAndGV4dCcsXG4gICd1c2UnLFxuICAndGV4dFBhdGgnLFxuICAndHNwYW4nLFxuICAnZm9yZWlnbk9iamVjdCcsXG4gICdjbGlwUGF0aCdcbl07XG5cbmNvbnN0IFRBR1MgPSBbXG4gIC4uLkhUTUxfVEFHUyxcbiAgLi4uU1ZHX1RBR1MsXG5dO1xuXG4vLyBTb3J0aW5nLCB0aGVuIHJldmVyc2luZyBtYWtlcyBzdXJlIGxvbmdlciBhdHRyaWJ1dGVzL2VsZW1lbnRzIGxpa2Vcbi8vIGBmb250LXdlaWdodGAgYXJlIG1hdGNoZWQgZnVsbHkgaW5zdGVhZCBvZiBnZXR0aW5nIGZhbHNlIHBvc2l0aXZlcyBvbiBzYXkgYGZvbnRgXG5cbmNvbnN0IE1FRElBX0ZFQVRVUkVTID0gW1xuICAnYW55LWhvdmVyJyxcbiAgJ2FueS1wb2ludGVyJyxcbiAgJ2FzcGVjdC1yYXRpbycsXG4gICdjb2xvcicsXG4gICdjb2xvci1nYW11dCcsXG4gICdjb2xvci1pbmRleCcsXG4gICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgJ2RldmljZS1oZWlnaHQnLFxuICAnZGV2aWNlLXdpZHRoJyxcbiAgJ2Rpc3BsYXktbW9kZScsXG4gICdmb3JjZWQtY29sb3JzJyxcbiAgJ2dyaWQnLFxuICAnaGVpZ2h0JyxcbiAgJ2hvdmVyJyxcbiAgJ2ludmVydGVkLWNvbG9ycycsXG4gICdtb25vY2hyb21lJyxcbiAgJ29yaWVudGF0aW9uJyxcbiAgJ292ZXJmbG93LWJsb2NrJyxcbiAgJ292ZXJmbG93LWlubGluZScsXG4gICdwb2ludGVyJyxcbiAgJ3ByZWZlcnMtY29sb3Itc2NoZW1lJyxcbiAgJ3ByZWZlcnMtY29udHJhc3QnLFxuICAncHJlZmVycy1yZWR1Y2VkLW1vdGlvbicsXG4gICdwcmVmZXJzLXJlZHVjZWQtdHJhbnNwYXJlbmN5JyxcbiAgJ3Jlc29sdXRpb24nLFxuICAnc2NhbicsXG4gICdzY3JpcHRpbmcnLFxuICAndXBkYXRlJyxcbiAgJ3dpZHRoJyxcbiAgLy8gVE9ETzogZmluZCBhIGJldHRlciBzb2x1dGlvbj9cbiAgJ21pbi13aWR0aCcsXG4gICdtYXgtd2lkdGgnLFxuICAnbWluLWhlaWdodCcsXG4gICdtYXgtaGVpZ2h0J1xuXS5zb3J0KCkucmV2ZXJzZSgpO1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvUHNldWRvLWNsYXNzZXNcbmNvbnN0IFBTRVVET19DTEFTU0VTID0gW1xuICAnYWN0aXZlJyxcbiAgJ2FueS1saW5rJyxcbiAgJ2JsYW5rJyxcbiAgJ2NoZWNrZWQnLFxuICAnY3VycmVudCcsXG4gICdkZWZhdWx0JyxcbiAgJ2RlZmluZWQnLFxuICAnZGlyJywgLy8gZGlyKClcbiAgJ2Rpc2FibGVkJyxcbiAgJ2Ryb3AnLFxuICAnZW1wdHknLFxuICAnZW5hYmxlZCcsXG4gICdmaXJzdCcsXG4gICdmaXJzdC1jaGlsZCcsXG4gICdmaXJzdC1vZi10eXBlJyxcbiAgJ2Z1bGxzY3JlZW4nLFxuICAnZnV0dXJlJyxcbiAgJ2ZvY3VzJyxcbiAgJ2ZvY3VzLXZpc2libGUnLFxuICAnZm9jdXMtd2l0aGluJyxcbiAgJ2hhcycsIC8vIGhhcygpXG4gICdob3N0JywgLy8gaG9zdCBvciBob3N0KClcbiAgJ2hvc3QtY29udGV4dCcsIC8vIGhvc3QtY29udGV4dCgpXG4gICdob3ZlcicsXG4gICdpbmRldGVybWluYXRlJyxcbiAgJ2luLXJhbmdlJyxcbiAgJ2ludmFsaWQnLFxuICAnaXMnLCAvLyBpcygpXG4gICdsYW5nJywgLy8gbGFuZygpXG4gICdsYXN0LWNoaWxkJyxcbiAgJ2xhc3Qtb2YtdHlwZScsXG4gICdsZWZ0JyxcbiAgJ2xpbmsnLFxuICAnbG9jYWwtbGluaycsXG4gICdub3QnLCAvLyBub3QoKVxuICAnbnRoLWNoaWxkJywgLy8gbnRoLWNoaWxkKClcbiAgJ250aC1jb2wnLCAvLyBudGgtY29sKClcbiAgJ250aC1sYXN0LWNoaWxkJywgLy8gbnRoLWxhc3QtY2hpbGQoKVxuICAnbnRoLWxhc3QtY29sJywgLy8gbnRoLWxhc3QtY29sKClcbiAgJ250aC1sYXN0LW9mLXR5cGUnLCAvL250aC1sYXN0LW9mLXR5cGUoKVxuICAnbnRoLW9mLXR5cGUnLCAvL250aC1vZi10eXBlKClcbiAgJ29ubHktY2hpbGQnLFxuICAnb25seS1vZi10eXBlJyxcbiAgJ29wdGlvbmFsJyxcbiAgJ291dC1vZi1yYW5nZScsXG4gICdwYXN0JyxcbiAgJ3BsYWNlaG9sZGVyLXNob3duJyxcbiAgJ3JlYWQtb25seScsXG4gICdyZWFkLXdyaXRlJyxcbiAgJ3JlcXVpcmVkJyxcbiAgJ3JpZ2h0JyxcbiAgJ3Jvb3QnLFxuICAnc2NvcGUnLFxuICAndGFyZ2V0JyxcbiAgJ3RhcmdldC13aXRoaW4nLFxuICAndXNlci1pbnZhbGlkJyxcbiAgJ3ZhbGlkJyxcbiAgJ3Zpc2l0ZWQnLFxuICAnd2hlcmUnIC8vIHdoZXJlKClcbl0uc29ydCgpLnJldmVyc2UoKTtcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1BzZXVkby1lbGVtZW50c1xuY29uc3QgUFNFVURPX0VMRU1FTlRTID0gW1xuICAnYWZ0ZXInLFxuICAnYmFja2Ryb3AnLFxuICAnYmVmb3JlJyxcbiAgJ2N1ZScsXG4gICdjdWUtcmVnaW9uJyxcbiAgJ2ZpcnN0LWxldHRlcicsXG4gICdmaXJzdC1saW5lJyxcbiAgJ2dyYW1tYXItZXJyb3InLFxuICAnbWFya2VyJyxcbiAgJ3BhcnQnLFxuICAncGxhY2Vob2xkZXInLFxuICAnc2VsZWN0aW9uJyxcbiAgJ3Nsb3R0ZWQnLFxuICAnc3BlbGxpbmctZXJyb3InXG5dLnNvcnQoKS5yZXZlcnNlKCk7XG5cbmNvbnN0IEFUVFJJQlVURVMgPSBbXG4gICdhY2NlbnQtY29sb3InLFxuICAnYWxpZ24tY29udGVudCcsXG4gICdhbGlnbi1pdGVtcycsXG4gICdhbGlnbi1zZWxmJyxcbiAgJ2FsaWdubWVudC1iYXNlbGluZScsXG4gICdhbGwnLFxuICAnYW5jaG9yLW5hbWUnLFxuICAnYW5pbWF0aW9uJyxcbiAgJ2FuaW1hdGlvbi1jb21wb3NpdGlvbicsXG4gICdhbmltYXRpb24tZGVsYXknLFxuICAnYW5pbWF0aW9uLWRpcmVjdGlvbicsXG4gICdhbmltYXRpb24tZHVyYXRpb24nLFxuICAnYW5pbWF0aW9uLWZpbGwtbW9kZScsXG4gICdhbmltYXRpb24taXRlcmF0aW9uLWNvdW50JyxcbiAgJ2FuaW1hdGlvbi1uYW1lJyxcbiAgJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJyxcbiAgJ2FuaW1hdGlvbi1yYW5nZScsXG4gICdhbmltYXRpb24tcmFuZ2UtZW5kJyxcbiAgJ2FuaW1hdGlvbi1yYW5nZS1zdGFydCcsXG4gICdhbmltYXRpb24tdGltZWxpbmUnLFxuICAnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsXG4gICdhcHBlYXJhbmNlJyxcbiAgJ2FzcGVjdC1yYXRpbycsXG4gICdiYWNrZHJvcC1maWx0ZXInLFxuICAnYmFja2ZhY2UtdmlzaWJpbGl0eScsXG4gICdiYWNrZ3JvdW5kJyxcbiAgJ2JhY2tncm91bmQtYXR0YWNobWVudCcsXG4gICdiYWNrZ3JvdW5kLWJsZW5kLW1vZGUnLFxuICAnYmFja2dyb3VuZC1jbGlwJyxcbiAgJ2JhY2tncm91bmQtY29sb3InLFxuICAnYmFja2dyb3VuZC1pbWFnZScsXG4gICdiYWNrZ3JvdW5kLW9yaWdpbicsXG4gICdiYWNrZ3JvdW5kLXBvc2l0aW9uJyxcbiAgJ2JhY2tncm91bmQtcG9zaXRpb24teCcsXG4gICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknLFxuICAnYmFja2dyb3VuZC1yZXBlYXQnLFxuICAnYmFja2dyb3VuZC1zaXplJyxcbiAgJ2Jhc2VsaW5lLXNoaWZ0JyxcbiAgJ2Jsb2NrLXNpemUnLFxuICAnYm9yZGVyJyxcbiAgJ2JvcmRlci1ibG9jaycsXG4gICdib3JkZXItYmxvY2stY29sb3InLFxuICAnYm9yZGVyLWJsb2NrLWVuZCcsXG4gICdib3JkZXItYmxvY2stZW5kLWNvbG9yJyxcbiAgJ2JvcmRlci1ibG9jay1lbmQtc3R5bGUnLFxuICAnYm9yZGVyLWJsb2NrLWVuZC13aWR0aCcsXG4gICdib3JkZXItYmxvY2stc3RhcnQnLFxuICAnYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yJyxcbiAgJ2JvcmRlci1ibG9jay1zdGFydC1zdHlsZScsXG4gICdib3JkZXItYmxvY2stc3RhcnQtd2lkdGgnLFxuICAnYm9yZGVyLWJsb2NrLXN0eWxlJyxcbiAgJ2JvcmRlci1ibG9jay13aWR0aCcsXG4gICdib3JkZXItYm90dG9tJyxcbiAgJ2JvcmRlci1ib3R0b20tY29sb3InLFxuICAnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cycsXG4gICdib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cycsXG4gICdib3JkZXItYm90dG9tLXN0eWxlJyxcbiAgJ2JvcmRlci1ib3R0b20td2lkdGgnLFxuICAnYm9yZGVyLWNvbGxhcHNlJyxcbiAgJ2JvcmRlci1jb2xvcicsXG4gICdib3JkZXItZW5kLWVuZC1yYWRpdXMnLFxuICAnYm9yZGVyLWVuZC1zdGFydC1yYWRpdXMnLFxuICAnYm9yZGVyLWltYWdlJyxcbiAgJ2JvcmRlci1pbWFnZS1vdXRzZXQnLFxuICAnYm9yZGVyLWltYWdlLXJlcGVhdCcsXG4gICdib3JkZXItaW1hZ2Utc2xpY2UnLFxuICAnYm9yZGVyLWltYWdlLXNvdXJjZScsXG4gICdib3JkZXItaW1hZ2Utd2lkdGgnLFxuICAnYm9yZGVyLWlubGluZScsXG4gICdib3JkZXItaW5saW5lLWNvbG9yJyxcbiAgJ2JvcmRlci1pbmxpbmUtZW5kJyxcbiAgJ2JvcmRlci1pbmxpbmUtZW5kLWNvbG9yJyxcbiAgJ2JvcmRlci1pbmxpbmUtZW5kLXN0eWxlJyxcbiAgJ2JvcmRlci1pbmxpbmUtZW5kLXdpZHRoJyxcbiAgJ2JvcmRlci1pbmxpbmUtc3RhcnQnLFxuICAnYm9yZGVyLWlubGluZS1zdGFydC1jb2xvcicsXG4gICdib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlJyxcbiAgJ2JvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGgnLFxuICAnYm9yZGVyLWlubGluZS1zdHlsZScsXG4gICdib3JkZXItaW5saW5lLXdpZHRoJyxcbiAgJ2JvcmRlci1sZWZ0JyxcbiAgJ2JvcmRlci1sZWZ0LWNvbG9yJyxcbiAgJ2JvcmRlci1sZWZ0LXN0eWxlJyxcbiAgJ2JvcmRlci1sZWZ0LXdpZHRoJyxcbiAgJ2JvcmRlci1yYWRpdXMnLFxuICAnYm9yZGVyLXJpZ2h0JyxcbiAgJ2JvcmRlci1yaWdodC1jb2xvcicsXG4gICdib3JkZXItcmlnaHQtc3R5bGUnLFxuICAnYm9yZGVyLXJpZ2h0LXdpZHRoJyxcbiAgJ2JvcmRlci1zcGFjaW5nJyxcbiAgJ2JvcmRlci1zdGFydC1lbmQtcmFkaXVzJyxcbiAgJ2JvcmRlci1zdGFydC1zdGFydC1yYWRpdXMnLFxuICAnYm9yZGVyLXN0eWxlJyxcbiAgJ2JvcmRlci10b3AnLFxuICAnYm9yZGVyLXRvcC1jb2xvcicsXG4gICdib3JkZXItdG9wLWxlZnQtcmFkaXVzJyxcbiAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgJ2JvcmRlci10b3Atc3R5bGUnLFxuICAnYm9yZGVyLXRvcC13aWR0aCcsXG4gICdib3JkZXItd2lkdGgnLFxuICAnYm90dG9tJyxcbiAgJ2JveC1hbGlnbicsXG4gICdib3gtZGVjb3JhdGlvbi1icmVhaycsXG4gICdib3gtZGlyZWN0aW9uJyxcbiAgJ2JveC1mbGV4JyxcbiAgJ2JveC1mbGV4LWdyb3VwJyxcbiAgJ2JveC1saW5lcycsXG4gICdib3gtb3JkaW5hbC1ncm91cCcsXG4gICdib3gtb3JpZW50JyxcbiAgJ2JveC1wYWNrJyxcbiAgJ2JveC1zaGFkb3cnLFxuICAnYm94LXNpemluZycsXG4gICdicmVhay1hZnRlcicsXG4gICdicmVhay1iZWZvcmUnLFxuICAnYnJlYWstaW5zaWRlJyxcbiAgJ2NhcHRpb24tc2lkZScsXG4gICdjYXJldC1jb2xvcicsXG4gICdjbGVhcicsXG4gICdjbGlwJyxcbiAgJ2NsaXAtcGF0aCcsXG4gICdjbGlwLXJ1bGUnLFxuICAnY29sb3InLFxuICAnY29sb3ItaW50ZXJwb2xhdGlvbicsXG4gICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnLFxuICAnY29sb3ItcHJvZmlsZScsXG4gICdjb2xvci1yZW5kZXJpbmcnLFxuICAnY29sb3Itc2NoZW1lJyxcbiAgJ2NvbHVtbi1jb3VudCcsXG4gICdjb2x1bW4tZmlsbCcsXG4gICdjb2x1bW4tZ2FwJyxcbiAgJ2NvbHVtbi1ydWxlJyxcbiAgJ2NvbHVtbi1ydWxlLWNvbG9yJyxcbiAgJ2NvbHVtbi1ydWxlLXN0eWxlJyxcbiAgJ2NvbHVtbi1ydWxlLXdpZHRoJyxcbiAgJ2NvbHVtbi1zcGFuJyxcbiAgJ2NvbHVtbi13aWR0aCcsXG4gICdjb2x1bW5zJyxcbiAgJ2NvbnRhaW4nLFxuICAnY29udGFpbi1pbnRyaW5zaWMtYmxvY2stc2l6ZScsXG4gICdjb250YWluLWludHJpbnNpYy1oZWlnaHQnLFxuICAnY29udGFpbi1pbnRyaW5zaWMtaW5saW5lLXNpemUnLFxuICAnY29udGFpbi1pbnRyaW5zaWMtc2l6ZScsXG4gICdjb250YWluLWludHJpbnNpYy13aWR0aCcsXG4gICdjb250YWluZXInLFxuICAnY29udGFpbmVyLW5hbWUnLFxuICAnY29udGFpbmVyLXR5cGUnLFxuICAnY29udGVudCcsXG4gICdjb250ZW50LXZpc2liaWxpdHknLFxuICAnY291bnRlci1pbmNyZW1lbnQnLFxuICAnY291bnRlci1yZXNldCcsXG4gICdjb3VudGVyLXNldCcsXG4gICdjdWUnLFxuICAnY3VlLWFmdGVyJyxcbiAgJ2N1ZS1iZWZvcmUnLFxuICAnY3Vyc29yJyxcbiAgJ2N4JyxcbiAgJ2N5JyxcbiAgJ2RpcmVjdGlvbicsXG4gICdkaXNwbGF5JyxcbiAgJ2RvbWluYW50LWJhc2VsaW5lJyxcbiAgJ2VtcHR5LWNlbGxzJyxcbiAgJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcbiAgJ2ZpZWxkLXNpemluZycsXG4gICdmaWxsJyxcbiAgJ2ZpbGwtb3BhY2l0eScsXG4gICdmaWxsLXJ1bGUnLFxuICAnZmlsdGVyJyxcbiAgJ2ZsZXgnLFxuICAnZmxleC1iYXNpcycsXG4gICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWZsb3cnLFxuICAnZmxleC1ncm93JyxcbiAgJ2ZsZXgtc2hyaW5rJyxcbiAgJ2ZsZXgtd3JhcCcsXG4gICdmbG9hdCcsXG4gICdmbG9vZC1jb2xvcicsXG4gICdmbG9vZC1vcGFjaXR5JyxcbiAgJ2Zsb3cnLFxuICAnZm9udCcsXG4gICdmb250LWRpc3BsYXknLFxuICAnZm9udC1mYW1pbHknLFxuICAnZm9udC1mZWF0dXJlLXNldHRpbmdzJyxcbiAgJ2ZvbnQta2VybmluZycsXG4gICdmb250LWxhbmd1YWdlLW92ZXJyaWRlJyxcbiAgJ2ZvbnQtb3B0aWNhbC1zaXppbmcnLFxuICAnZm9udC1wYWxldHRlJyxcbiAgJ2ZvbnQtc2l6ZScsXG4gICdmb250LXNpemUtYWRqdXN0JyxcbiAgJ2ZvbnQtc21vb3RoJyxcbiAgJ2ZvbnQtc21vb3RoaW5nJyxcbiAgJ2ZvbnQtc3RyZXRjaCcsXG4gICdmb250LXN0eWxlJyxcbiAgJ2ZvbnQtc3ludGhlc2lzJyxcbiAgJ2ZvbnQtc3ludGhlc2lzLXBvc2l0aW9uJyxcbiAgJ2ZvbnQtc3ludGhlc2lzLXNtYWxsLWNhcHMnLFxuICAnZm9udC1zeW50aGVzaXMtc3R5bGUnLFxuICAnZm9udC1zeW50aGVzaXMtd2VpZ2h0JyxcbiAgJ2ZvbnQtdmFyaWFudCcsXG4gICdmb250LXZhcmlhbnQtYWx0ZXJuYXRlcycsXG4gICdmb250LXZhcmlhbnQtY2FwcycsXG4gICdmb250LXZhcmlhbnQtZWFzdC1hc2lhbicsXG4gICdmb250LXZhcmlhbnQtZW1vamknLFxuICAnZm9udC12YXJpYW50LWxpZ2F0dXJlcycsXG4gICdmb250LXZhcmlhbnQtbnVtZXJpYycsXG4gICdmb250LXZhcmlhbnQtcG9zaXRpb24nLFxuICAnZm9udC12YXJpYXRpb24tc2V0dGluZ3MnLFxuICAnZm9udC13ZWlnaHQnLFxuICAnZm9yY2VkLWNvbG9yLWFkanVzdCcsXG4gICdnYXAnLFxuICAnZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCcsXG4gICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcsXG4gICdncmlkJyxcbiAgJ2dyaWQtYXJlYScsXG4gICdncmlkLWF1dG8tY29sdW1ucycsXG4gICdncmlkLWF1dG8tZmxvdycsXG4gICdncmlkLWF1dG8tcm93cycsXG4gICdncmlkLWNvbHVtbicsXG4gICdncmlkLWNvbHVtbi1lbmQnLFxuICAnZ3JpZC1jb2x1bW4tc3RhcnQnLFxuICAnZ3JpZC1nYXAnLFxuICAnZ3JpZC1yb3cnLFxuICAnZ3JpZC1yb3ctZW5kJyxcbiAgJ2dyaWQtcm93LXN0YXJ0JyxcbiAgJ2dyaWQtdGVtcGxhdGUnLFxuICAnZ3JpZC10ZW1wbGF0ZS1hcmVhcycsXG4gICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnLFxuICAnZ3JpZC10ZW1wbGF0ZS1yb3dzJyxcbiAgJ2hhbmdpbmctcHVuY3R1YXRpb24nLFxuICAnaGVpZ2h0JyxcbiAgJ2h5cGhlbmF0ZS1jaGFyYWN0ZXInLFxuICAnaHlwaGVuYXRlLWxpbWl0LWNoYXJzJyxcbiAgJ2h5cGhlbnMnLFxuICAnaWNvbicsXG4gICdpbWFnZS1vcmllbnRhdGlvbicsXG4gICdpbWFnZS1yZW5kZXJpbmcnLFxuICAnaW1hZ2UtcmVzb2x1dGlvbicsXG4gICdpbWUtbW9kZScsXG4gICdpbml0aWFsLWxldHRlcicsXG4gICdpbml0aWFsLWxldHRlci1hbGlnbicsXG4gICdpbmxpbmUtc2l6ZScsXG4gICdpbnNldCcsXG4gICdpbnNldC1hcmVhJyxcbiAgJ2luc2V0LWJsb2NrJyxcbiAgJ2luc2V0LWJsb2NrLWVuZCcsXG4gICdpbnNldC1ibG9jay1zdGFydCcsXG4gICdpbnNldC1pbmxpbmUnLFxuICAnaW5zZXQtaW5saW5lLWVuZCcsXG4gICdpbnNldC1pbmxpbmUtc3RhcnQnLFxuICAnaXNvbGF0aW9uJyxcbiAgJ2p1c3RpZnktY29udGVudCcsXG4gICdqdXN0aWZ5LWl0ZW1zJyxcbiAgJ2p1c3RpZnktc2VsZicsXG4gICdrZXJuaW5nJyxcbiAgJ2xlZnQnLFxuICAnbGV0dGVyLXNwYWNpbmcnLFxuICAnbGlnaHRpbmctY29sb3InLFxuICAnbGluZS1icmVhaycsXG4gICdsaW5lLWhlaWdodCcsXG4gICdsaW5lLWhlaWdodC1zdGVwJyxcbiAgJ2xpc3Qtc3R5bGUnLFxuICAnbGlzdC1zdHlsZS1pbWFnZScsXG4gICdsaXN0LXN0eWxlLXBvc2l0aW9uJyxcbiAgJ2xpc3Qtc3R5bGUtdHlwZScsXG4gICdtYXJnaW4nLFxuICAnbWFyZ2luLWJsb2NrJyxcbiAgJ21hcmdpbi1ibG9jay1lbmQnLFxuICAnbWFyZ2luLWJsb2NrLXN0YXJ0JyxcbiAgJ21hcmdpbi1ib3R0b20nLFxuICAnbWFyZ2luLWlubGluZScsXG4gICdtYXJnaW4taW5saW5lLWVuZCcsXG4gICdtYXJnaW4taW5saW5lLXN0YXJ0JyxcbiAgJ21hcmdpbi1sZWZ0JyxcbiAgJ21hcmdpbi1yaWdodCcsXG4gICdtYXJnaW4tdG9wJyxcbiAgJ21hcmdpbi10cmltJyxcbiAgJ21hcmtlcicsXG4gICdtYXJrZXItZW5kJyxcbiAgJ21hcmtlci1taWQnLFxuICAnbWFya2VyLXN0YXJ0JyxcbiAgJ21hcmtzJyxcbiAgJ21hc2snLFxuICAnbWFzay1ib3JkZXInLFxuICAnbWFzay1ib3JkZXItbW9kZScsXG4gICdtYXNrLWJvcmRlci1vdXRzZXQnLFxuICAnbWFzay1ib3JkZXItcmVwZWF0JyxcbiAgJ21hc2stYm9yZGVyLXNsaWNlJyxcbiAgJ21hc2stYm9yZGVyLXNvdXJjZScsXG4gICdtYXNrLWJvcmRlci13aWR0aCcsXG4gICdtYXNrLWNsaXAnLFxuICAnbWFzay1jb21wb3NpdGUnLFxuICAnbWFzay1pbWFnZScsXG4gICdtYXNrLW1vZGUnLFxuICAnbWFzay1vcmlnaW4nLFxuICAnbWFzay1wb3NpdGlvbicsXG4gICdtYXNrLXJlcGVhdCcsXG4gICdtYXNrLXNpemUnLFxuICAnbWFzay10eXBlJyxcbiAgJ21hc29ucnktYXV0by1mbG93JyxcbiAgJ21hdGgtZGVwdGgnLFxuICAnbWF0aC1zaGlmdCcsXG4gICdtYXRoLXN0eWxlJyxcbiAgJ21heC1ibG9jay1zaXplJyxcbiAgJ21heC1oZWlnaHQnLFxuICAnbWF4LWlubGluZS1zaXplJyxcbiAgJ21heC13aWR0aCcsXG4gICdtaW4tYmxvY2stc2l6ZScsXG4gICdtaW4taGVpZ2h0JyxcbiAgJ21pbi1pbmxpbmUtc2l6ZScsXG4gICdtaW4td2lkdGgnLFxuICAnbWl4LWJsZW5kLW1vZGUnLFxuICAnbmF2LWRvd24nLFxuICAnbmF2LWluZGV4JyxcbiAgJ25hdi1sZWZ0JyxcbiAgJ25hdi1yaWdodCcsXG4gICduYXYtdXAnLFxuICAnbm9uZScsXG4gICdub3JtYWwnLFxuICAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2Zmc2V0JyxcbiAgJ29mZnNldC1hbmNob3InLFxuICAnb2Zmc2V0LWRpc3RhbmNlJyxcbiAgJ29mZnNldC1wYXRoJyxcbiAgJ29mZnNldC1wb3NpdGlvbicsXG4gICdvZmZzZXQtcm90YXRlJyxcbiAgJ29wYWNpdHknLFxuICAnb3JkZXInLFxuICAnb3JwaGFucycsXG4gICdvdXRsaW5lJyxcbiAgJ291dGxpbmUtY29sb3InLFxuICAnb3V0bGluZS1vZmZzZXQnLFxuICAnb3V0bGluZS1zdHlsZScsXG4gICdvdXRsaW5lLXdpZHRoJyxcbiAgJ292ZXJmbG93JyxcbiAgJ292ZXJmbG93LWFuY2hvcicsXG4gICdvdmVyZmxvdy1ibG9jaycsXG4gICdvdmVyZmxvdy1jbGlwLW1hcmdpbicsXG4gICdvdmVyZmxvdy1pbmxpbmUnLFxuICAnb3ZlcmZsb3ctd3JhcCcsXG4gICdvdmVyZmxvdy14JyxcbiAgJ292ZXJmbG93LXknLFxuICAnb3ZlcmxheScsXG4gICdvdmVyc2Nyb2xsLWJlaGF2aW9yJyxcbiAgJ292ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2snLFxuICAnb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUnLFxuICAnb3ZlcnNjcm9sbC1iZWhhdmlvci14JyxcbiAgJ292ZXJzY3JvbGwtYmVoYXZpb3IteScsXG4gICdwYWRkaW5nJyxcbiAgJ3BhZGRpbmctYmxvY2snLFxuICAncGFkZGluZy1ibG9jay1lbmQnLFxuICAncGFkZGluZy1ibG9jay1zdGFydCcsXG4gICdwYWRkaW5nLWJvdHRvbScsXG4gICdwYWRkaW5nLWlubGluZScsXG4gICdwYWRkaW5nLWlubGluZS1lbmQnLFxuICAncGFkZGluZy1pbmxpbmUtc3RhcnQnLFxuICAncGFkZGluZy1sZWZ0JyxcbiAgJ3BhZGRpbmctcmlnaHQnLFxuICAncGFkZGluZy10b3AnLFxuICAncGFnZScsXG4gICdwYWdlLWJyZWFrLWFmdGVyJyxcbiAgJ3BhZ2UtYnJlYWstYmVmb3JlJyxcbiAgJ3BhZ2UtYnJlYWstaW5zaWRlJyxcbiAgJ3BhaW50LW9yZGVyJyxcbiAgJ3BhdXNlJyxcbiAgJ3BhdXNlLWFmdGVyJyxcbiAgJ3BhdXNlLWJlZm9yZScsXG4gICdwZXJzcGVjdGl2ZScsXG4gICdwZXJzcGVjdGl2ZS1vcmlnaW4nLFxuICAncGxhY2UtY29udGVudCcsXG4gICdwbGFjZS1pdGVtcycsXG4gICdwbGFjZS1zZWxmJyxcbiAgJ3BvaW50ZXItZXZlbnRzJyxcbiAgJ3Bvc2l0aW9uJyxcbiAgJ3Bvc2l0aW9uLWFuY2hvcicsXG4gICdwb3NpdGlvbi12aXNpYmlsaXR5JyxcbiAgJ3ByaW50LWNvbG9yLWFkanVzdCcsXG4gICdxdW90ZXMnLFxuICAncicsXG4gICdyZXNpemUnLFxuICAncmVzdCcsXG4gICdyZXN0LWFmdGVyJyxcbiAgJ3Jlc3QtYmVmb3JlJyxcbiAgJ3JpZ2h0JyxcbiAgJ3JvdGF0ZScsXG4gICdyb3ctZ2FwJyxcbiAgJ3J1YnktYWxpZ24nLFxuICAncnVieS1wb3NpdGlvbicsXG4gICdzY2FsZScsXG4gICdzY3JvbGwtYmVoYXZpb3InLFxuICAnc2Nyb2xsLW1hcmdpbicsXG4gICdzY3JvbGwtbWFyZ2luLWJsb2NrJyxcbiAgJ3Njcm9sbC1tYXJnaW4tYmxvY2stZW5kJyxcbiAgJ3Njcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQnLFxuICAnc2Nyb2xsLW1hcmdpbi1ib3R0b20nLFxuICAnc2Nyb2xsLW1hcmdpbi1pbmxpbmUnLFxuICAnc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kJyxcbiAgJ3Njcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tbGVmdCcsXG4gICdzY3JvbGwtbWFyZ2luLXJpZ2h0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tdG9wJyxcbiAgJ3Njcm9sbC1wYWRkaW5nJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWJsb2NrJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCcsXG4gICdzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCcsXG4gICdzY3JvbGwtcGFkZGluZy1ib3R0b20nLFxuICAnc2Nyb2xsLXBhZGRpbmctaW5saW5lJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWlubGluZS1lbmQnLFxuICAnc2Nyb2xsLXBhZGRpbmctaW5saW5lLXN0YXJ0JyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWxlZnQnLFxuICAnc2Nyb2xsLXBhZGRpbmctcmlnaHQnLFxuICAnc2Nyb2xsLXBhZGRpbmctdG9wJyxcbiAgJ3Njcm9sbC1zbmFwLWFsaWduJyxcbiAgJ3Njcm9sbC1zbmFwLXN0b3AnLFxuICAnc2Nyb2xsLXNuYXAtdHlwZScsXG4gICdzY3JvbGwtdGltZWxpbmUnLFxuICAnc2Nyb2xsLXRpbWVsaW5lLWF4aXMnLFxuICAnc2Nyb2xsLXRpbWVsaW5lLW5hbWUnLFxuICAnc2Nyb2xsYmFyLWNvbG9yJyxcbiAgJ3Njcm9sbGJhci1ndXR0ZXInLFxuICAnc2Nyb2xsYmFyLXdpZHRoJyxcbiAgJ3NoYXBlLWltYWdlLXRocmVzaG9sZCcsXG4gICdzaGFwZS1tYXJnaW4nLFxuICAnc2hhcGUtb3V0c2lkZScsXG4gICdzaGFwZS1yZW5kZXJpbmcnLFxuICAnc3BlYWsnLFxuICAnc3BlYWstYXMnLFxuICAnc3JjJywgLy8gQGZvbnQtZmFjZVxuICAnc3RvcC1jb2xvcicsXG4gICdzdG9wLW9wYWNpdHknLFxuICAnc3Ryb2tlJyxcbiAgJ3N0cm9rZS1kYXNoYXJyYXknLFxuICAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICAnc3Ryb2tlLWxpbmVjYXAnLFxuICAnc3Ryb2tlLWxpbmVqb2luJyxcbiAgJ3N0cm9rZS1taXRlcmxpbWl0JyxcbiAgJ3N0cm9rZS1vcGFjaXR5JyxcbiAgJ3N0cm9rZS13aWR0aCcsXG4gICd0YWItc2l6ZScsXG4gICd0YWJsZS1sYXlvdXQnLFxuICAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWFsaWduLWFsbCcsXG4gICd0ZXh0LWFsaWduLWxhc3QnLFxuICAndGV4dC1hbmNob3InLFxuICAndGV4dC1jb21iaW5lLXVwcmlnaHQnLFxuICAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcicsXG4gICd0ZXh0LWRlY29yYXRpb24tbGluZScsXG4gICd0ZXh0LWRlY29yYXRpb24tc2tpcCcsXG4gICd0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsnLFxuICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnLFxuICAndGV4dC1lbXBoYXNpcycsXG4gICd0ZXh0LWVtcGhhc2lzLWNvbG9yJyxcbiAgJ3RleHQtZW1waGFzaXMtcG9zaXRpb24nLFxuICAndGV4dC1lbXBoYXNpcy1zdHlsZScsXG4gICd0ZXh0LWluZGVudCcsXG4gICd0ZXh0LWp1c3RpZnknLFxuICAndGV4dC1vcmllbnRhdGlvbicsXG4gICd0ZXh0LW92ZXJmbG93JyxcbiAgJ3RleHQtcmVuZGVyaW5nJyxcbiAgJ3RleHQtc2hhZG93JyxcbiAgJ3RleHQtc2l6ZS1hZGp1c3QnLFxuICAndGV4dC10cmFuc2Zvcm0nLFxuICAndGV4dC11bmRlcmxpbmUtb2Zmc2V0JyxcbiAgJ3RleHQtdW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgJ3RleHQtd3JhcCcsXG4gICd0ZXh0LXdyYXAtbW9kZScsXG4gICd0ZXh0LXdyYXAtc3R5bGUnLFxuICAndGltZWxpbmUtc2NvcGUnLFxuICAndG9wJyxcbiAgJ3RvdWNoLWFjdGlvbicsXG4gICd0cmFuc2Zvcm0nLFxuICAndHJhbnNmb3JtLWJveCcsXG4gICd0cmFuc2Zvcm0tb3JpZ2luJyxcbiAgJ3RyYW5zZm9ybS1zdHlsZScsXG4gICd0cmFuc2l0aW9uJyxcbiAgJ3RyYW5zaXRpb24tYmVoYXZpb3InLFxuICAndHJhbnNpdGlvbi1kZWxheScsXG4gICd0cmFuc2l0aW9uLWR1cmF0aW9uJyxcbiAgJ3RyYW5zaXRpb24tcHJvcGVydHknLFxuICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLFxuICAndHJhbnNsYXRlJyxcbiAgJ3VuaWNvZGUtYmlkaScsXG4gICd1c2VyLW1vZGlmeScsXG4gICd1c2VyLXNlbGVjdCcsXG4gICd2ZWN0b3ItZWZmZWN0JyxcbiAgJ3ZlcnRpY2FsLWFsaWduJyxcbiAgJ3ZpZXctdGltZWxpbmUnLFxuICAndmlldy10aW1lbGluZS1heGlzJyxcbiAgJ3ZpZXctdGltZWxpbmUtaW5zZXQnLFxuICAndmlldy10aW1lbGluZS1uYW1lJyxcbiAgJ3ZpZXctdHJhbnNpdGlvbi1uYW1lJyxcbiAgJ3Zpc2liaWxpdHknLFxuICAndm9pY2UtYmFsYW5jZScsXG4gICd2b2ljZS1kdXJhdGlvbicsXG4gICd2b2ljZS1mYW1pbHknLFxuICAndm9pY2UtcGl0Y2gnLFxuICAndm9pY2UtcmFuZ2UnLFxuICAndm9pY2UtcmF0ZScsXG4gICd2b2ljZS1zdHJlc3MnLFxuICAndm9pY2Utdm9sdW1lJyxcbiAgJ3doaXRlLXNwYWNlJyxcbiAgJ3doaXRlLXNwYWNlLWNvbGxhcHNlJyxcbiAgJ3dpZG93cycsXG4gICd3aWR0aCcsXG4gICd3aWxsLWNoYW5nZScsXG4gICd3b3JkLWJyZWFrJyxcbiAgJ3dvcmQtc3BhY2luZycsXG4gICd3b3JkLXdyYXAnLFxuICAnd3JpdGluZy1tb2RlJyxcbiAgJ3gnLFxuICAneScsXG4gICd6LWluZGV4JyxcbiAgJ3pvb20nXG5dLnNvcnQoKS5yZXZlcnNlKCk7XG5cbi8qXG5MYW5ndWFnZTogU0NTU1xuRGVzY3JpcHRpb246IFNjc3MgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBzeW50YXggb2YgQ1NTLlxuQXV0aG9yOiBLdXJ0IEVtY2ggPGt1cnRAa3VydGVtY2guY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9zYXNzLWxhbmcuY29tXG5DYXRlZ29yeTogY29tbW9uLCBjc3MsIHdlYlxuKi9cblxuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gc2NzcyhobGpzKSB7XG4gIGNvbnN0IG1vZGVzID0gTU9ERVMoaGxqcyk7XG4gIGNvbnN0IFBTRVVET19FTEVNRU5UUyQxID0gUFNFVURPX0VMRU1FTlRTO1xuICBjb25zdCBQU0VVRE9fQ0xBU1NFUyQxID0gUFNFVURPX0NMQVNTRVM7XG5cbiAgY29uc3QgQVRfSURFTlRJRklFUiA9ICdAW2Etei1dKyc7IC8vIEBmb250LWZhY2VcbiAgY29uc3QgQVRfTU9ESUZJRVJTID0gXCJhbmQgb3Igbm90IG9ubHlcIjtcbiAgY29uc3QgSURFTlRfUkUgPSAnW2EtekEtWi1dW2EtekEtWjAtOV8tXSonO1xuICBjb25zdCBWQVJJQUJMRSA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46ICcoXFxcXCQnICsgSURFTlRfUkUgKyAnKVxcXFxiJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdTQ1NTJyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGlsbGVnYWw6ICdbPS98XFwnXScsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICAvLyB0byByZWNvZ25pemUga2V5ZnJhbWUgNDAlIGV0YyB3aGljaCBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2Ygb3VyXG4gICAgICAvLyBhdHRyaWJ1dGUgdmFsdWUgbW9kZVxuICAgICAgbW9kZXMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1pZCcsXG4gICAgICAgIGJlZ2luOiAnI1tBLVphLXowLTlfLV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsXG4gICAgICAgIGJlZ2luOiAnXFxcXC5bQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIG1vZGVzLkFUVFJJQlVURV9TRUxFQ1RPUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci10YWcnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBUQUdTLmpvaW4oJ3wnKSArICcpXFxcXGInLFxuICAgICAgICAvLyB3YXMgdGhlcmUsIGJlZm9yZSwgYnV0IHdoeT9cbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLFxuICAgICAgICBiZWdpbjogJzooJyArIFBTRVVET19DTEFTU0VTJDEuam9pbignfCcpICsgJyknXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLFxuICAgICAgICBiZWdpbjogJzooOik/KCcgKyBQU0VVRE9fRUxFTUVOVFMkMS5qb2luKCd8JykgKyAnKSdcbiAgICAgIH0sXG4gICAgICBWQVJJQUJMRSxcbiAgICAgIHsgLy8gcHNldWRvLXNlbGVjdG9yIHBhcmFtc1xuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbIG1vZGVzLkNTU19OVU1CRVJfTU9ERSBdXG4gICAgICB9LFxuICAgICAgbW9kZXMuQ1NTX1ZBUklBQkxFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBBVFRSSUJVVEVTLmpvaW4oJ3wnKSArICcpXFxcXGInXG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogJ1xcXFxiKHdoaXRlc3BhY2V8d2FpdHx3LXJlc2l6ZXx2aXNpYmxlfHZlcnRpY2FsLXRleHR8dmVydGljYWwtaWRlb2dyYXBoaWN8dXBwZXJjYXNlfHVwcGVyLXJvbWFufHVwcGVyLWFscGhhfHVuZGVybGluZXx0cmFuc3BhcmVudHx0b3B8dGhpbnx0aGlja3x0ZXh0fHRleHQtdG9wfHRleHQtYm90dG9tfHRiLXJsfHRhYmxlLWhlYWRlci1ncm91cHx0YWJsZS1mb290ZXItZ3JvdXB8c3ctcmVzaXplfHN1cGVyfHN0cmljdHxzdGF0aWN8c3F1YXJlfHNvbGlkfHNtYWxsLWNhcHN8c2VwYXJhdGV8c2UtcmVzaXplfHNjcm9sbHxzLXJlc2l6ZXxydGx8cm93LXJlc2l6ZXxyaWRnZXxyaWdodHxyZXBlYXR8cmVwZWF0LXl8cmVwZWF0LXh8cmVsYXRpdmV8cHJvZ3Jlc3N8cG9pbnRlcnxvdmVybGluZXxvdXRzaWRlfG91dHNldHxvYmxpcXVlfG5vd3JhcHxub3QtYWxsb3dlZHxub3JtYWx8bm9uZXxudy1yZXNpemV8bm8tcmVwZWF0fG5vLWRyb3B8bmV3c3BhcGVyfG5lLXJlc2l6ZXxuLXJlc2l6ZXxtb3ZlfG1pZGRsZXxtZWRpdW18bHRyfGxyLXRifGxvd2VyY2FzZXxsb3dlci1yb21hbnxsb3dlci1hbHBoYXxsb29zZXxsaXN0LWl0ZW18bGluZXxsaW5lLXRocm91Z2h8bGluZS1lZGdlfGxpZ2h0ZXJ8bGVmdHxrZWVwLWFsbHxqdXN0aWZ5fGl0YWxpY3xpbnRlci13b3JkfGludGVyLWlkZW9ncmFwaHxpbnNpZGV8aW5zZXR8aW5saW5lfGlubGluZS1ibG9ja3xpbmhlcml0fGluYWN0aXZlfGlkZW9ncmFwaC1zcGFjZXxpZGVvZ3JhcGgtcGFyZW50aGVzaXN8aWRlb2dyYXBoLW51bWVyaWN8aWRlb2dyYXBoLWFscGhhfGhvcml6b250YWx8aGlkZGVufGhlbHB8aGFuZHxncm9vdmV8Zml4ZWR8ZWxsaXBzaXN8ZS1yZXNpemV8ZG91YmxlfGRvdHRlZHxkaXN0cmlidXRlfGRpc3RyaWJ1dGUtc3BhY2V8ZGlzdHJpYnV0ZS1sZXR0ZXJ8ZGlzdHJpYnV0ZS1hbGwtbGluZXN8ZGlzY3xkaXNhYmxlZHxkZWZhdWx0fGRlY2ltYWx8ZGFzaGVkfGNyb3NzaGFpcnxjb2xsYXBzZXxjb2wtcmVzaXplfGNpcmNsZXxjaGFyfGNlbnRlcnxjYXBpdGFsaXplfGJyZWFrLXdvcmR8YnJlYWstYWxsfGJvdHRvbXxib3RofGJvbGRlcnxib2xkfGJsb2NrfGJpZGktb3ZlcnJpZGV8YmVsb3d8YmFzZWxpbmV8YXV0b3xhbHdheXN8YWxsLXNjcm9sbHxhYnNvbHV0ZXx0YWJsZXx0YWJsZS1jZWxsKVxcXFxiJyB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzovLFxuICAgICAgICBlbmQ6IC9bO317XS8sXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBtb2Rlcy5CTE9DS19DT01NRU5ULFxuICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgIG1vZGVzLkhFWENPTE9SLFxuICAgICAgICAgIG1vZGVzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBtb2Rlcy5JTVBPUlRBTlQsXG4gICAgICAgICAgbW9kZXMuRlVOQ1RJT05fRElTUEFUQ0hcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIG1hdGNoaW5nIHRoZXNlIGhlcmUgYWxsb3dzIHVzIHRvIHRyZWF0IHRoZW0gbW9yZSBsaWtlIHJlZ3VsYXIgQ1NTXG4gICAgICAvLyBydWxlcyBzbyBldmVyeXRoaW5nIGJldHdlZW4gdGhlIHt9IGdldHMgcmVndWxhciBydWxlIGhpZ2hsaWdodGluZyxcbiAgICAgIC8vIHdoaWNoIGlzIHdoYXQgd2Ugd2FudCBmb3IgcGFnZSBhbmQgZm9udC1mYWNlXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnQChwYWdlfGZvbnQtZmFjZSknLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICRwYXR0ZXJuOiBBVF9JREVOVElGSUVSLFxuICAgICAgICAgIGtleXdvcmQ6ICdAcGFnZSBAZm9udC1mYWNlJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ0AnLFxuICAgICAgICBlbmQ6ICdbeztdJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgJHBhdHRlcm46IC9bYS16LV0rLyxcbiAgICAgICAgICBrZXl3b3JkOiBBVF9NT0RJRklFUlMsXG4gICAgICAgICAgYXR0cmlidXRlOiBNRURJQV9GRUFUVVJFUy5qb2luKFwiIFwiKVxuICAgICAgICB9LFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBBVF9JREVOVElGSUVSLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImtleXdvcmRcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9bYS16LV0rKD89OikvLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImF0dHJpYnV0ZVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICBtb2Rlcy5IRVhDT0xPUixcbiAgICAgICAgICBtb2Rlcy5DU1NfTlVNQkVSX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIG1vZGVzLkZVTkNUSU9OX0RJU1BBVENIXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNjc3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2293\n")},2302:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar typeOf = __webpack_require__(4480);\nvar extend = __webpack_require__(4972);\n\n/**\n * Parse sections in `input` with the given `options`.\n *\n * ```js\n * var sections = require('{%= name %}');\n * var result = sections(input, options);\n * // { content: 'Content before sections', sections: [] }\n * ```\n * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer.\n * @param {Object} options\n * @return {Object} Returns an object with a `content` string and an array of `sections` objects.\n * @api public\n */\n\nmodule.exports = function(input, options) {\n if (typeof options === 'function') {\n options = { parse: options };\n }\n\n var file = toObject(input);\n var defaults = {section_delimiter: '---', parse: identity};\n var opts = extend({}, defaults, options);\n var delim = opts.section_delimiter;\n var lines = file.content.split(/\\r?\\n/);\n var sections = null;\n var section = createSection();\n var content = [];\n var stack = [];\n\n function initSections(val) {\n file.content = val;\n sections = [];\n content = [];\n }\n\n function closeSection(val) {\n if (stack.length) {\n section.key = getKey(stack[0], delim);\n section.content = val;\n opts.parse(section, sections);\n sections.push(section);\n section = createSection();\n content = [];\n stack = [];\n }\n }\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var len = stack.length;\n var ln = line.trim();\n\n if (isDelimiter(ln, delim)) {\n if (ln.length === 3 && i !== 0) {\n if (len === 0 || len === 2) {\n content.push(line);\n continue;\n }\n stack.push(ln);\n section.data = content.join('\\n');\n content = [];\n continue;\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n }\n\n if (len === 2) {\n closeSection(content.join('\\n'));\n }\n\n stack.push(ln);\n continue;\n }\n\n content.push(line);\n }\n\n if (sections === null) {\n initSections(content.join('\\n'));\n } else {\n closeSection(content.join('\\n'));\n }\n\n file.sections = sections;\n return file;\n};\n\nfunction isDelimiter(line, delim) {\n if (line.slice(0, delim.length) !== delim) {\n return false;\n }\n if (line.charAt(delim.length + 1) === delim.slice(-1)) {\n return false;\n }\n return true;\n}\n\nfunction toObject(input) {\n if (typeOf(input) !== 'object') {\n input = { content: input };\n }\n\n if (typeof input.content !== 'string' && !isBuffer(input.content)) {\n throw new TypeError('expected a buffer or string');\n }\n\n input.content = input.content.toString();\n input.sections = [];\n return input;\n}\n\nfunction getKey(val, delim) {\n return val ? val.slice(delim.length).trim() : '';\n}\n\nfunction createSection() {\n return { key: '', data: '', content: '' };\n}\n\nfunction identity(val) {\n return val;\n}\n\nfunction isBuffer(val) {\n if (val && val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMwMi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLG1CQUFPLENBQUMsSUFBUztBQUM5QixhQUFhLG1CQUFPLENBQUMsSUFBZ0I7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFVBQVU7QUFDdEM7QUFDQSxRQUFRO0FBQ1I7QUFDQSxXQUFXLHNCQUFzQjtBQUNqQyxXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQixzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isa0JBQWtCO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vc2VjdGlvbi1tYXR0ZXJAMS4wLjAvbm9kZV9tb2R1bGVzL3NlY3Rpb24tbWF0dGVyL2luZGV4LmpzP2JlMTEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHlwZU9mID0gcmVxdWlyZSgna2luZC1vZicpO1xudmFyIGV4dGVuZCA9IHJlcXVpcmUoJ2V4dGVuZC1zaGFsbG93Jyk7XG5cbi8qKlxuICogUGFyc2Ugc2VjdGlvbnMgaW4gYGlucHV0YCB3aXRoIHRoZSBnaXZlbiBgb3B0aW9uc2AuXG4gKlxuICogYGBganNcbiAqIHZhciBzZWN0aW9ucyA9IHJlcXVpcmUoJ3slPSBuYW1lICV9Jyk7XG4gKiB2YXIgcmVzdWx0ID0gc2VjdGlvbnMoaW5wdXQsIG9wdGlvbnMpO1xuICogLy8geyBjb250ZW50OiAnQ29udGVudCBiZWZvcmUgc2VjdGlvbnMnLCBzZWN0aW9uczogW10gfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ3xCdWZmZXJ8T2JqZWN0fSBgaW5wdXRgIElmIGlucHV0IGlzIGFuIG9iamVjdCwgaXQncyBgY29udGVudGAgcHJvcGVydHkgbXVzdCBiZSBhIHN0cmluZyBvciBidWZmZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgYGNvbnRlbnRgIHN0cmluZyBhbmQgYW4gYXJyYXkgb2YgYHNlY3Rpb25zYCBvYmplY3RzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMgPSB7IHBhcnNlOiBvcHRpb25zIH07XG4gIH1cblxuICB2YXIgZmlsZSA9IHRvT2JqZWN0KGlucHV0KTtcbiAgdmFyIGRlZmF1bHRzID0ge3NlY3Rpb25fZGVsaW1pdGVyOiAnLS0tJywgcGFyc2U6IGlkZW50aXR5fTtcbiAgdmFyIG9wdHMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgdmFyIGRlbGltID0gb3B0cy5zZWN0aW9uX2RlbGltaXRlcjtcbiAgdmFyIGxpbmVzID0gZmlsZS5jb250ZW50LnNwbGl0KC9cXHI/XFxuLyk7XG4gIHZhciBzZWN0aW9ucyA9IG51bGw7XG4gIHZhciBzZWN0aW9uID0gY3JlYXRlU2VjdGlvbigpO1xuICB2YXIgY29udGVudCA9IFtdO1xuICB2YXIgc3RhY2sgPSBbXTtcblxuICBmdW5jdGlvbiBpbml0U2VjdGlvbnModmFsKSB7XG4gICAgZmlsZS5jb250ZW50ID0gdmFsO1xuICAgIHNlY3Rpb25zID0gW107XG4gICAgY29udGVudCA9IFtdO1xuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VTZWN0aW9uKHZhbCkge1xuICAgIGlmIChzdGFjay5sZW5ndGgpIHtcbiAgICAgIHNlY3Rpb24ua2V5ID0gZ2V0S2V5KHN0YWNrWzBdLCBkZWxpbSk7XG4gICAgICBzZWN0aW9uLmNvbnRlbnQgPSB2YWw7XG4gICAgICBvcHRzLnBhcnNlKHNlY3Rpb24sIHNlY3Rpb25zKTtcbiAgICAgIHNlY3Rpb25zLnB1c2goc2VjdGlvbik7XG4gICAgICBzZWN0aW9uID0gY3JlYXRlU2VjdGlvbigpO1xuICAgICAgY29udGVudCA9IFtdO1xuICAgICAgc3RhY2sgPSBbXTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGxpbmUgPSBsaW5lc1tpXTtcbiAgICB2YXIgbGVuID0gc3RhY2subGVuZ3RoO1xuICAgIHZhciBsbiA9IGxpbmUudHJpbSgpO1xuXG4gICAgaWYgKGlzRGVsaW1pdGVyKGxuLCBkZWxpbSkpIHtcbiAgICAgIGlmIChsbi5sZW5ndGggPT09IDMgJiYgaSAhPT0gMCkge1xuICAgICAgICBpZiAobGVuID09PSAwIHx8IGxlbiA9PT0gMikge1xuICAgICAgICAgIGNvbnRlbnQucHVzaChsaW5lKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKGxuKTtcbiAgICAgICAgc2VjdGlvbi5kYXRhID0gY29udGVudC5qb2luKCdcXG4nKTtcbiAgICAgICAgY29udGVudCA9IFtdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlY3Rpb25zID09PSBudWxsKSB7XG4gICAgICAgIGluaXRTZWN0aW9ucyhjb250ZW50LmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxlbiA9PT0gMikge1xuICAgICAgICBjbG9zZVNlY3Rpb24oY29udGVudC5qb2luKCdcXG4nKSk7XG4gICAgICB9XG5cbiAgICAgIHN0YWNrLnB1c2gobG4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29udGVudC5wdXNoKGxpbmUpO1xuICB9XG5cbiAgaWYgKHNlY3Rpb25zID09PSBudWxsKSB7XG4gICAgaW5pdFNlY3Rpb25zKGNvbnRlbnQuam9pbignXFxuJykpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlU2VjdGlvbihjb250ZW50LmpvaW4oJ1xcbicpKTtcbiAgfVxuXG4gIGZpbGUuc2VjdGlvbnMgPSBzZWN0aW9ucztcbiAgcmV0dXJuIGZpbGU7XG59O1xuXG5mdW5jdGlvbiBpc0RlbGltaXRlcihsaW5lLCBkZWxpbSkge1xuICBpZiAobGluZS5zbGljZSgwLCBkZWxpbS5sZW5ndGgpICE9PSBkZWxpbSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAobGluZS5jaGFyQXQoZGVsaW0ubGVuZ3RoICsgMSkgPT09IGRlbGltLnNsaWNlKC0xKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdG9PYmplY3QoaW5wdXQpIHtcbiAgaWYgKHR5cGVPZihpbnB1dCkgIT09ICdvYmplY3QnKSB7XG4gICAgaW5wdXQgPSB7IGNvbnRlbnQ6IGlucHV0IH07XG4gIH1cblxuICBpZiAodHlwZW9mIGlucHV0LmNvbnRlbnQgIT09ICdzdHJpbmcnICYmICFpc0J1ZmZlcihpbnB1dC5jb250ZW50KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgYnVmZmVyIG9yIHN0cmluZycpO1xuICB9XG5cbiAgaW5wdXQuY29udGVudCA9IGlucHV0LmNvbnRlbnQudG9TdHJpbmcoKTtcbiAgaW5wdXQuc2VjdGlvbnMgPSBbXTtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG5mdW5jdGlvbiBnZXRLZXkodmFsLCBkZWxpbSkge1xuICByZXR1cm4gdmFsID8gdmFsLnNsaWNlKGRlbGltLmxlbmd0aCkudHJpbSgpIDogJyc7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlY3Rpb24oKSB7XG4gIHJldHVybiB7IGtleTogJycsIGRhdGE6ICcnLCBjb250ZW50OiAnJyB9O1xufVxuXG5mdW5jdGlvbiBpZGVudGl0eSh2YWwpIHtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIGlmICh2YWwgJiYgdmFsLmNvbnN0cnVjdG9yICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2302\n")},2324:module=>{eval("/*\nLanguage: Intel x86 Assembly\nAuthor: innocenat \nDescription: x86 assembly language using Intel's mnemonic and NASM syntax\nWebsite: https://en.wikipedia.org/wiki/X86_assembly_language\nCategory: assembler\n*/\n\nfunction x86asm(hljs) {\n return {\n name: 'Intel x86 Assembly',\n case_insensitive: true,\n keywords: {\n $pattern: '[.%]?' + hljs.IDENT_RE,\n keyword:\n 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd '\n + 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\n built_in:\n // Instruction pointer\n 'ip eip rip '\n // 8-bit registers\n + 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b '\n // 16-bit registers\n + 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w '\n // 32-bit registers\n + 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d '\n // 64-bit registers\n + 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 '\n // Segment registers\n + 'cs ds es fs gs ss '\n // Floating point stack registers\n + 'st st0 st1 st2 st3 st4 st5 st6 st7 '\n // MMX Registers\n + 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 '\n // SSE registers\n + 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 '\n + 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 '\n // AVX registers\n + 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 '\n + 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 '\n // AVX-512F registers\n + 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 '\n + 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 '\n // AVX-512F mask registers\n + 'k0 k1 k2 k3 k4 k5 k6 k7 '\n // Bound (MPX) register\n + 'bnd0 bnd1 bnd2 bnd3 '\n // Special register\n + 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 '\n // NASM altreg package\n + 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b '\n + 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d '\n + 'r0h r1h r2h r3h '\n + 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l '\n\n + 'db dw dd dq dt ddq do dy dz '\n + 'resb resw resd resq rest resdq reso resy resz '\n + 'incbin equ times '\n + 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\n\n meta:\n '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif '\n + '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep '\n + '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment '\n + '.nolist '\n + '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ '\n + '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend '\n + 'align alignb sectalign daz nodaz up down zero default option assume public '\n\n + 'bits use16 use32 use64 default section segment absolute extern global common cpu float '\n + '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ '\n + '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ '\n + '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e '\n + 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\n },\n contains: [\n hljs.COMMENT(\n ';',\n '$',\n { relevance: 0 }\n ),\n {\n className: 'number',\n variants: [\n // Float number and x87 BCD\n {\n begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|'\n + '(0[Xx])?[0-9][0-9_]*(\\\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\n relevance: 0\n },\n\n // Hex number in $\n {\n begin: '\\\\$[0-9][0-9A-Fa-f]*',\n relevance: 0\n },\n\n // Number in H,D,T,Q,O,B,Y suffix\n { begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b' },\n\n // Number in X,D,T,Q,O,B,Y prefix\n { begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b' }\n ]\n },\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Single-quoted string\n {\n begin: '\\'',\n end: '[^\\\\\\\\]\\''\n },\n // Backquoted string\n {\n begin: '`',\n end: '[^\\\\\\\\]`'\n }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n // Global label and local label\n { begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)' },\n // Macro-local label\n { begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:' }\n ],\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%[0-9]+',\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%!\\S+',\n relevance: 0\n },\n {\n className: 'meta',\n begin: /^\\s*\\.[\\w_-]+/\n }\n ]\n };\n}\n\nmodule.exports = x86asm;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMyNC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBLFlBQVksMkdBQTJHOztBQUV2SDtBQUNBLFlBQVk7QUFDWjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUEyRDtBQUN2RTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMveDg2YXNtLmpzPzMzYzYiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBJbnRlbCB4ODYgQXNzZW1ibHlcbkF1dGhvcjogaW5ub2NlbmF0IDxpbm5vY2VuYXRAZ21haWwuY29tPlxuRGVzY3JpcHRpb246IHg4NiBhc3NlbWJseSBsYW5ndWFnZSB1c2luZyBJbnRlbCdzIG1uZW1vbmljIGFuZCBOQVNNIHN5bnRheFxuV2Vic2l0ZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWDg2X2Fzc2VtYmx5X2xhbmd1YWdlXG5DYXRlZ29yeTogYXNzZW1ibGVyXG4qL1xuXG5mdW5jdGlvbiB4ODZhc20oaGxqcykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdJbnRlbCB4ODYgQXNzZW1ibHknLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAnWy4lXT8nICsgaGxqcy5JREVOVF9SRSxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdsb2NrIHJlcCByZXBlIHJlcHogcmVwbmUgcmVwbnogeGFxdWlyZSB4cmVsZWFzZSBibmQgbm9ibmQgJ1xuICAgICAgICArICdhYWEgYWFkIGFhbSBhYXMgYWRjIGFkZCBhbmQgYXJwbCBiYjBfcmVzZXQgYmIxX3Jlc2V0IGJvdW5kIGJzZiBic3IgYnN3YXAgYnQgYnRjIGJ0ciBidHMgY2FsbCBjYncgY2RxIGNkcWUgY2xjIGNsZCBjbGkgY2x0cyBjbWMgY21wIGNtcHNiIGNtcHNkIGNtcHNxIGNtcHN3IGNtcHhjaGcgY21weGNoZzQ4NiBjbXB4Y2hnOGIgY21weGNoZzE2YiBjcHVpZCBjcHVfcmVhZCBjcHVfd3JpdGUgY3FvIGN3ZCBjd2RlIGRhYSBkYXMgZGVjIGRpdiBkbWludCBlbW1zIGVudGVyIGVxdSBmMnhtMSBmYWJzIGZhZGQgZmFkZHAgZmJsZCBmYnN0cCBmY2hzIGZjbGV4IGZjbW92YiBmY21vdmJlIGZjbW92ZSBmY21vdm5iIGZjbW92bmJlIGZjbW92bmUgZmNtb3ZudSBmY21vdnUgZmNvbSBmY29taSBmY29taXAgZmNvbXAgZmNvbXBwIGZjb3MgZmRlY3N0cCBmZGlzaSBmZGl2IGZkaXZwIGZkaXZyIGZkaXZycCBmZW1tcyBmZW5pIGZmcmVlIGZmcmVlcCBmaWFkZCBmaWNvbSBmaWNvbXAgZmlkaXYgZmlkaXZyIGZpbGQgZmltdWwgZmluY3N0cCBmaW5pdCBmaXN0IGZpc3RwIGZpc3R0cCBmaXN1YiBmaXN1YnIgZmxkIGZsZDEgZmxkY3cgZmxkZW52IGZsZGwyZSBmbGRsMnQgZmxkbGcyIGZsZGxuMiBmbGRwaSBmbGR6IGZtdWwgZm11bHAgZm5jbGV4IGZuZGlzaSBmbmVuaSBmbmluaXQgZm5vcCBmbnNhdmUgZm5zdGN3IGZuc3RlbnYgZm5zdHN3IGZwYXRhbiBmcHJlbSBmcHJlbTEgZnB0YW4gZnJuZGludCBmcnN0b3IgZnNhdmUgZnNjYWxlIGZzZXRwbSBmc2luIGZzaW5jb3MgZnNxcnQgZnN0IGZzdGN3IGZzdGVudiBmc3RwIGZzdHN3IGZzdWIgZnN1YnAgZnN1YnIgZnN1YnJwIGZ0c3QgZnVjb20gZnVjb21pIGZ1Y29taXAgZnVjb21wIGZ1Y29tcHAgZnhhbSBmeGNoIGZ4dHJhY3QgZnlsMnggZnlsMnhwMSBobHQgaWJ0cyBpY2VicCBpZGl2IGltdWwgaW4gaW5jIGluY2JpbiBpbnNiIGluc2QgaW5zdyBpbnQgaW50MDEgaW50MSBpbnQwMyBpbnQzIGludG8gaW52ZCBpbnZwY2lkIGludmxwZyBpbnZscGdhIGlyZXQgaXJldGQgaXJldHEgaXJldHcgamN4eiBqZWN4eiBqcmN4eiBqbXAgam1wZSBsYWhmIGxhciBsZHMgbGVhIGxlYXZlIGxlcyBsZmVuY2UgbGZzIGxnZHQgbGdzIGxpZHQgbGxkdCBsbXN3IGxvYWRhbGwgbG9hZGFsbDI4NiBsb2RzYiBsb2RzZCBsb2RzcSBsb2RzdyBsb29wIGxvb3BlIGxvb3BuZSBsb29wbnogbG9vcHogbHNsIGxzcyBsdHIgbWZlbmNlIG1vbml0b3IgbW92IG1vdmQgbW92cSBtb3ZzYiBtb3ZzZCBtb3ZzcSBtb3ZzdyBtb3ZzeCBtb3ZzeGQgbW92enggbXVsIG13YWl0IG5lZyBub3Agbm90IG9yIG91dCBvdXRzYiBvdXRzZCBvdXRzdyBwYWNrc3NkdyBwYWNrc3N3YiBwYWNrdXN3YiBwYWRkYiBwYWRkZCBwYWRkc2IgcGFkZHNpdyBwYWRkc3cgcGFkZHVzYiBwYWRkdXN3IHBhZGR3IHBhbmQgcGFuZG4gcGF1c2UgcGF2ZWIgcGF2Z3VzYiBwY21wZXFiIHBjbXBlcWQgcGNtcGVxdyBwY21wZ3RiIHBjbXBndGQgcGNtcGd0dyBwZGlzdGliIHBmMmlkIHBmYWNjIHBmYWRkIHBmY21wZXEgcGZjbXBnZSBwZmNtcGd0IHBmbWF4IHBmbWluIHBmbXVsIHBmcmNwIHBmcmNwaXQxIHBmcmNwaXQyIHBmcnNxaXQxIHBmcnNxcnQgcGZzdWIgcGZzdWJyIHBpMmZkIHBtYWNocml3IHBtYWRkd2QgcG1hZ3cgcG11bGhyaXcgcG11bGhyd2EgcG11bGhyd2MgcG11bGh3IHBtdWxsdyBwbXZnZXpiIHBtdmx6YiBwbXZuemIgcG12emIgcG9wIHBvcGEgcG9wYWQgcG9wYXcgcG9wZiBwb3BmZCBwb3BmcSBwb3BmdyBwb3IgcHJlZmV0Y2ggcHJlZmV0Y2h3IHBzbGxkIHBzbGxxIHBzbGx3IHBzcmFkIHBzcmF3IHBzcmxkIHBzcmxxIHBzcmx3IHBzdWJiIHBzdWJkIHBzdWJzYiBwc3Vic2l3IHBzdWJzdyBwc3VidXNiIHBzdWJ1c3cgcHN1YncgcHVucGNraGJ3IHB1bnBja2hkcSBwdW5wY2tod2QgcHVucGNrbGJ3IHB1bnBja2xkcSBwdW5wY2tsd2QgcHVzaCBwdXNoYSBwdXNoYWQgcHVzaGF3IHB1c2hmIHB1c2hmZCBwdXNoZnEgcHVzaGZ3IHB4b3IgcmNsIHJjciByZHNociByZG1zciByZHBtYyByZHRzYyByZHRzY3AgcmV0IHJldGYgcmV0biByb2wgcm9yIHJkbSByc2RjIHJzbGR0IHJzbSByc3RzIHNhaGYgc2FsIHNhbGMgc2FyIHNiYiBzY2FzYiBzY2FzZCBzY2FzcSBzY2FzdyBzZmVuY2Ugc2dkdCBzaGwgc2hsZCBzaHIgc2hyZCBzaWR0IHNsZHQgc2tpbml0IHNtaSBzbWludCBzbWludG9sZCBzbXN3IHN0YyBzdGQgc3RpIHN0b3NiIHN0b3NkIHN0b3NxIHN0b3N3IHN0ciBzdWIgc3ZkYyBzdmxkdCBzdnRzIHN3YXBncyBzeXNjYWxsIHN5c2VudGVyIHN5c2V4aXQgc3lzcmV0IHRlc3QgdWQwIHVkMSB1ZDJiIHVkMiB1ZDJhIHVtb3YgdmVyciB2ZXJ3IGZ3YWl0IHdiaW52ZCB3cnNociB3cm1zciB4YWRkIHhidHMgeGNoZyB4bGF0YiB4bGF0IHhvciBjbW92ZSBjbW92eiBjbW92bmUgY21vdm56IGNtb3ZhIGNtb3ZuYmUgY21vdmFlIGNtb3ZuYiBjbW92YiBjbW92bmFlIGNtb3ZiZSBjbW92bmEgY21vdmcgY21vdm5sZSBjbW92Z2UgY21vdm5sIGNtb3ZsIGNtb3ZuZ2UgY21vdmxlIGNtb3ZuZyBjbW92YyBjbW92bmMgY21vdm8gY21vdm5vIGNtb3ZzIGNtb3ZucyBjbW92cCBjbW92cGUgY21vdm5wIGNtb3ZwbyBqZSBqeiBqbmUgam56IGphIGpuYmUgamFlIGpuYiBqYiBqbmFlIGpiZSBqbmEgamcgam5sZSBqZ2Ugam5sIGpsIGpuZ2UgamxlIGpuZyBqYyBqbmMgam8gam5vIGpzIGpucyBqcG8gam5wIGpwZSBqcCBzZXRlIHNldHogc2V0bmUgc2V0bnogc2V0YSBzZXRuYmUgc2V0YWUgc2V0bmIgc2V0bmMgc2V0YiBzZXRuYWUgc2V0Y3NldCBzZXRiZSBzZXRuYSBzZXRnIHNldG5sZSBzZXRnZSBzZXRubCBzZXRsIHNldG5nZSBzZXRsZSBzZXRuZyBzZXRzIHNldG5zIHNldG8gc2V0bm8gc2V0cGUgc2V0cCBzZXRwbyBzZXRucCBhZGRwcyBhZGRzcyBhbmRucHMgYW5kcHMgY21wZXFwcyBjbXBlcXNzIGNtcGxlcHMgY21wbGVzcyBjbXBsdHBzIGNtcGx0c3MgY21wbmVxcHMgY21wbmVxc3MgY21wbmxlcHMgY21wbmxlc3MgY21wbmx0cHMgY21wbmx0c3MgY21wb3JkcHMgY21wb3Jkc3MgY21wdW5vcmRwcyBjbXB1bm9yZHNzIGNtcHBzIGNtcHNzIGNvbWlzcyBjdnRwaTJwcyBjdnRwczJwaSBjdnRzaTJzcyBjdnRzczJzaSBjdnR0cHMycGkgY3Z0dHNzMnNpIGRpdnBzIGRpdnNzIGxkbXhjc3IgbWF4cHMgbWF4c3MgbWlucHMgbWluc3MgbW92YXBzIG1vdmhwcyBtb3ZsaHBzIG1vdmxwcyBtb3ZobHBzIG1vdm1za3BzIG1vdm50cHMgbW92c3MgbW92dXBzIG11bHBzIG11bHNzIG9ycHMgcmNwcHMgcmNwc3MgcnNxcnRwcyByc3FydHNzIHNodWZwcyBzcXJ0cHMgc3FydHNzIHN0bXhjc3Igc3VicHMgc3Vic3MgdWNvbWlzcyB1bnBja2hwcyB1bnBja2xwcyB4b3JwcyBmeHJzdG9yIGZ4cnN0b3I2NCBmeHNhdmUgZnhzYXZlNjQgeGdldGJ2IHhzZXRidiB4c2F2ZSB4c2F2ZTY0IHhzYXZlb3B0IHhzYXZlb3B0NjQgeHJzdG9yIHhyc3RvcjY0IHByZWZldGNobnRhIHByZWZldGNodDAgcHJlZmV0Y2h0MSBwcmVmZXRjaHQyIG1hc2ttb3ZxIG1vdm50cSBwYXZnYiBwYXZndyBwZXh0cncgcGluc3J3IHBtYXhzdyBwbWF4dWIgcG1pbnN3IHBtaW51YiBwbW92bXNrYiBwbXVsaHV3IHBzYWRidyBwc2h1ZncgcGYyaXcgcGZuYWNjIHBmcG5hY2MgcGkyZncgcHN3YXBkIG1hc2ttb3ZkcXUgY2xmbHVzaCBtb3ZudGRxIG1vdm50aSBtb3ZudHBkIG1vdmRxYSBtb3ZkcXUgbW92ZHEycSBtb3ZxMmRxIHBhZGRxIHBtdWx1ZHEgcHNodWZkIHBzaHVmaHcgcHNodWZsdyBwc2xsZHEgcHNybGRxIHBzdWJxIHB1bnBja2hxZHEgcHVucGNrbHFkcSBhZGRwZCBhZGRzZCBhbmRucGQgYW5kcGQgY21wZXFwZCBjbXBlcXNkIGNtcGxlcGQgY21wbGVzZCBjbXBsdHBkIGNtcGx0c2QgY21wbmVxcGQgY21wbmVxc2QgY21wbmxlcGQgY21wbmxlc2QgY21wbmx0cGQgY21wbmx0c2QgY21wb3JkcGQgY21wb3Jkc2QgY21wdW5vcmRwZCBjbXB1bm9yZHNkIGNtcHBkIGNvbWlzZCBjdnRkcTJwZCBjdnRkcTJwcyBjdnRwZDJkcSBjdnRwZDJwaSBjdnRwZDJwcyBjdnRwaTJwZCBjdnRwczJkcSBjdnRwczJwZCBjdnRzZDJzaSBjdnRzZDJzcyBjdnRzaTJzZCBjdnRzczJzZCBjdnR0cGQycGkgY3Z0dHBkMmRxIGN2dHRwczJkcSBjdnR0c2Qyc2kgZGl2cGQgZGl2c2QgbWF4cGQgbWF4c2QgbWlucGQgbWluc2QgbW92YXBkIG1vdmhwZCBtb3ZscGQgbW92bXNrcGQgbW92dXBkIG11bHBkIG11bHNkIG9ycGQgc2h1ZnBkIHNxcnRwZCBzcXJ0c2Qgc3VicGQgc3Vic2QgdWNvbWlzZCB1bnBja2hwZCB1bnBja2xwZCB4b3JwZCBhZGRzdWJwZCBhZGRzdWJwcyBoYWRkcGQgaGFkZHBzIGhzdWJwZCBoc3VicHMgbGRkcXUgbW92ZGR1cCBtb3ZzaGR1cCBtb3ZzbGR1cCBjbGdpIHN0Z2kgdm1jYWxsIHZtY2xlYXIgdm1mdW5jIHZtbGF1bmNoIHZtbG9hZCB2bW1jYWxsIHZtcHRybGQgdm1wdHJzdCB2bXJlYWQgdm1yZXN1bWUgdm1ydW4gdm1zYXZlIHZtd3JpdGUgdm14b2ZmIHZteG9uIGludmVwdCBpbnZ2cGlkIHBhYnNiIHBhYnN3IHBhYnNkIHBhbGlnbnIgcGhhZGR3IHBoYWRkZCBwaGFkZHN3IHBoc3VidyBwaHN1YmQgcGhzdWJzdyBwbWFkZHVic3cgcG11bGhyc3cgcHNodWZiIHBzaWduYiBwc2lnbncgcHNpZ25kIGV4dHJxIGluc2VydHEgbW92bnRzZCBtb3ZudHNzIGx6Y250IGJsZW5kcGQgYmxlbmRwcyBibGVuZHZwZCBibGVuZHZwcyBkcHBkIGRwcHMgZXh0cmFjdHBzIGluc2VydHBzIG1vdm50ZHFhIG1wc2FkYncgcGFja3VzZHcgcGJsZW5kdmIgcGJsZW5kdyBwY21wZXFxIHBleHRyYiBwZXh0cmQgcGV4dHJxIHBobWlucG9zdXcgcGluc3JiIHBpbnNyZCBwaW5zcnEgcG1heHNiIHBtYXhzZCBwbWF4dWQgcG1heHV3IHBtaW5zYiBwbWluc2QgcG1pbnVkIHBtaW51dyBwbW92c3hidyBwbW92c3hiZCBwbW92c3hicSBwbW92c3h3ZCBwbW92c3h3cSBwbW92c3hkcSBwbW92enhidyBwbW92enhiZCBwbW92enhicSBwbW92enh3ZCBwbW92enh3cSBwbW92enhkcSBwbXVsZHEgcG11bGxkIHB0ZXN0IHJvdW5kcGQgcm91bmRwcyByb3VuZHNkIHJvdW5kc3MgY3JjMzIgcGNtcGVzdHJpIHBjbXBlc3RybSBwY21waXN0cmkgcGNtcGlzdHJtIHBjbXBndHEgcG9wY250IGdldHNlYyBwZnJjcHYgcGZyc3FydHYgbW92YmUgYWVzZW5jIGFlc2VuY2xhc3QgYWVzZGVjIGFlc2RlY2xhc3QgYWVzaW1jIGFlc2tleWdlbmFzc2lzdCB2YWVzZW5jIHZhZXNlbmNsYXN0IHZhZXNkZWMgdmFlc2RlY2xhc3QgdmFlc2ltYyB2YWVza2V5Z2VuYXNzaXN0IHZhZGRwZCB2YWRkcHMgdmFkZHNkIHZhZGRzcyB2YWRkc3VicGQgdmFkZHN1YnBzIHZhbmRwZCB2YW5kcHMgdmFuZG5wZCB2YW5kbnBzIHZibGVuZHBkIHZibGVuZHBzIHZibGVuZHZwZCB2YmxlbmR2cHMgdmJyb2FkY2FzdHNzIHZicm9hZGNhc3RzZCB2YnJvYWRjYXN0ZjEyOCB2Y21wZXFfb3NwZCB2Y21wZXFwZCB2Y21wbHRfb3NwZCB2Y21wbHRwZCB2Y21wbGVfb3NwZCB2Y21wbGVwZCB2Y21wdW5vcmRfcXBkIHZjbXB1bm9yZHBkIHZjbXBuZXFfdXFwZCB2Y21wbmVxcGQgdmNtcG5sdF91c3BkIHZjbXBubHRwZCB2Y21wbmxlX3VzcGQgdmNtcG5sZXBkIHZjbXBvcmRfcXBkIHZjbXBvcmRwZCB2Y21wZXFfdXFwZCB2Y21wbmdlX3VzcGQgdmNtcG5nZXBkIHZjbXBuZ3RfdXNwZCB2Y21wbmd0cGQgdmNtcGZhbHNlX29xcGQgdmNtcGZhbHNlcGQgdmNtcG5lcV9vcXBkIHZjbXBnZV9vc3BkIHZjbXBnZXBkIHZjbXBndF9vc3BkIHZjbXBndHBkIHZjbXB0cnVlX3VxcGQgdmNtcHRydWVwZCB2Y21wbHRfb3FwZCB2Y21wbGVfb3FwZCB2Y21wdW5vcmRfc3BkIHZjbXBuZXFfdXNwZCB2Y21wbmx0X3VxcGQgdmNtcG5sZV91cXBkIHZjbXBvcmRfc3BkIHZjbXBlcV91c3BkIHZjbXBuZ2VfdXFwZCB2Y21wbmd0X3VxcGQgdmNtcGZhbHNlX29zcGQgdmNtcG5lcV9vc3BkIHZjbXBnZV9vcXBkIHZjbXBndF9vcXBkIHZjbXB0cnVlX3VzcGQgdmNtcHBkIHZjbXBlcV9vc3BzIHZjbXBlcXBzIHZjbXBsdF9vc3BzIHZjbXBsdHBzIHZjbXBsZV9vc3BzIHZjbXBsZXBzIHZjbXB1bm9yZF9xcHMgdmNtcHVub3JkcHMgdmNtcG5lcV91cXBzIHZjbXBuZXFwcyB2Y21wbmx0X3VzcHMgdmNtcG5sdHBzIHZjbXBubGVfdXNwcyB2Y21wbmxlcHMgdmNtcG9yZF9xcHMgdmNtcG9yZHBzIHZjbXBlcV91cXBzIHZjbXBuZ2VfdXNwcyB2Y21wbmdlcHMgdmNtcG5ndF91c3BzIHZjbXBuZ3RwcyB2Y21wZmFsc2Vfb3FwcyB2Y21wZmFsc2VwcyB2Y21wbmVxX29xcHMgdmNtcGdlX29zcHMgdmNtcGdlcHMgdmNtcGd0X29zcHMgdmNtcGd0cHMgdmNtcHRydWVfdXFwcyB2Y21wdHJ1ZXBzIHZjbXBsdF9vcXBzIHZjbXBsZV9vcXBzIHZjbXB1bm9yZF9zcHMgdmNtcG5lcV91c3BzIHZjbXBubHRfdXFwcyB2Y21wbmxlX3VxcHMgdmNtcG9yZF9zcHMgdmNtcGVxX3VzcHMgdmNtcG5nZV91cXBzIHZjbXBuZ3RfdXFwcyB2Y21wZmFsc2Vfb3NwcyB2Y21wbmVxX29zcHMgdmNtcGdlX29xcHMgdmNtcGd0X29xcHMgdmNtcHRydWVfdXNwcyB2Y21wcHMgdmNtcGVxX29zc2QgdmNtcGVxc2QgdmNtcGx0X29zc2QgdmNtcGx0c2QgdmNtcGxlX29zc2QgdmNtcGxlc2QgdmNtcHVub3JkX3FzZCB2Y21wdW5vcmRzZCB2Y21wbmVxX3Vxc2QgdmNtcG5lcXNkIHZjbXBubHRfdXNzZCB2Y21wbmx0c2QgdmNtcG5sZV91c3NkIHZjbXBubGVzZCB2Y21wb3JkX3FzZCB2Y21wb3Jkc2QgdmNtcGVxX3Vxc2QgdmNtcG5nZV91c3NkIHZjbXBuZ2VzZCB2Y21wbmd0X3Vzc2QgdmNtcG5ndHNkIHZjbXBmYWxzZV9vcXNkIHZjbXBmYWxzZXNkIHZjbXBuZXFfb3FzZCB2Y21wZ2Vfb3NzZCB2Y21wZ2VzZCB2Y21wZ3Rfb3NzZCB2Y21wZ3RzZCB2Y21wdHJ1ZV91cXNkIHZjbXB0cnVlc2QgdmNtcGx0X29xc2QgdmNtcGxlX29xc2QgdmNtcHVub3JkX3NzZCB2Y21wbmVxX3Vzc2QgdmNtcG5sdF91cXNkIHZjbXBubGVfdXFzZCB2Y21wb3JkX3NzZCB2Y21wZXFfdXNzZCB2Y21wbmdlX3Vxc2QgdmNtcG5ndF91cXNkIHZjbXBmYWxzZV9vc3NkIHZjbXBuZXFfb3NzZCB2Y21wZ2Vfb3FzZCB2Y21wZ3Rfb3FzZCB2Y21wdHJ1ZV91c3NkIHZjbXBzZCB2Y21wZXFfb3NzcyB2Y21wZXFzcyB2Y21wbHRfb3NzcyB2Y21wbHRzcyB2Y21wbGVfb3NzcyB2Y21wbGVzcyB2Y21wdW5vcmRfcXNzIHZjbXB1bm9yZHNzIHZjbXBuZXFfdXFzcyB2Y21wbmVxc3MgdmNtcG5sdF91c3NzIHZjbXBubHRzcyB2Y21wbmxlX3Vzc3MgdmNtcG5sZXNzIHZjbXBvcmRfcXNzIHZjbXBvcmRzcyB2Y21wZXFfdXFzcyB2Y21wbmdlX3Vzc3MgdmNtcG5nZXNzIHZjbXBuZ3RfdXNzcyB2Y21wbmd0c3MgdmNtcGZhbHNlX29xc3MgdmNtcGZhbHNlc3MgdmNtcG5lcV9vcXNzIHZjbXBnZV9vc3NzIHZjbXBnZXNzIHZjbXBndF9vc3NzIHZjbXBndHNzIHZjbXB0cnVlX3Vxc3MgdmNtcHRydWVzcyB2Y21wbHRfb3FzcyB2Y21wbGVfb3FzcyB2Y21wdW5vcmRfc3NzIHZjbXBuZXFfdXNzcyB2Y21wbmx0X3Vxc3MgdmNtcG5sZV91cXNzIHZjbXBvcmRfc3NzIHZjbXBlcV91c3NzIHZjbXBuZ2VfdXFzcyB2Y21wbmd0X3Vxc3MgdmNtcGZhbHNlX29zc3MgdmNtcG5lcV9vc3NzIHZjbXBnZV9vcXNzIHZjbXBndF9vcXNzIHZjbXB0cnVlX3Vzc3MgdmNtcHNzIHZjb21pc2QgdmNvbWlzcyB2Y3Z0ZHEycGQgdmN2dGRxMnBzIHZjdnRwZDJkcSB2Y3Z0cGQycHMgdmN2dHBzMmRxIHZjdnRwczJwZCB2Y3Z0c2Qyc2kgdmN2dHNkMnNzIHZjdnRzaTJzZCB2Y3Z0c2kyc3MgdmN2dHNzMnNkIHZjdnRzczJzaSB2Y3Z0dHBkMmRxIHZjdnR0cHMyZHEgdmN2dHRzZDJzaSB2Y3Z0dHNzMnNpIHZkaXZwZCB2ZGl2cHMgdmRpdnNkIHZkaXZzcyB2ZHBwZCB2ZHBwcyB2ZXh0cmFjdGYxMjggdmV4dHJhY3RwcyB2aGFkZHBkIHZoYWRkcHMgdmhzdWJwZCB2aHN1YnBzIHZpbnNlcnRmMTI4IHZpbnNlcnRwcyB2bGRkcXUgdmxkcXF1IHZsZG14Y3NyIHZtYXNrbW92ZHF1IHZtYXNrbW92cHMgdm1hc2ttb3ZwZCB2bWF4cGQgdm1heHBzIHZtYXhzZCB2bWF4c3Mgdm1pbnBkIHZtaW5wcyB2bWluc2Qgdm1pbnNzIHZtb3ZhcGQgdm1vdmFwcyB2bW92ZCB2bW92cSB2bW92ZGR1cCB2bW92ZHFhIHZtb3ZxcWEgdm1vdmRxdSB2bW92cXF1IHZtb3ZobHBzIHZtb3ZocGQgdm1vdmhwcyB2bW92bGhwcyB2bW92bHBkIHZtb3ZscHMgdm1vdm1za3BkIHZtb3Ztc2twcyB2bW92bnRkcSB2bW92bnRxcSB2bW92bnRkcWEgdm1vdm50cGQgdm1vdm50cHMgdm1vdnNkIHZtb3ZzaGR1cCB2bW92c2xkdXAgdm1vdnNzIHZtb3Z1cGQgdm1vdnVwcyB2bXBzYWRidyB2bXVscGQgdm11bHBzIHZtdWxzZCB2bXVsc3Mgdm9ycGQgdm9ycHMgdnBhYnNiIHZwYWJzdyB2cGFic2QgdnBhY2tzc3diIHZwYWNrc3NkdyB2cGFja3Vzd2IgdnBhY2t1c2R3IHZwYWRkYiB2cGFkZHcgdnBhZGRkIHZwYWRkcSB2cGFkZHNiIHZwYWRkc3cgdnBhZGR1c2IgdnBhZGR1c3cgdnBhbGlnbnIgdnBhbmQgdnBhbmRuIHZwYXZnYiB2cGF2Z3cgdnBibGVuZHZiIHZwYmxlbmR3IHZwY21wZXN0cmkgdnBjbXBlc3RybSB2cGNtcGlzdHJpIHZwY21waXN0cm0gdnBjbXBlcWIgdnBjbXBlcXcgdnBjbXBlcWQgdnBjbXBlcXEgdnBjbXBndGIgdnBjbXBndHcgdnBjbXBndGQgdnBjbXBndHEgdnBlcm1pbHBkIHZwZXJtaWxwcyB2cGVybTJmMTI4IHZwZXh0cmIgdnBleHRydyB2cGV4dHJkIHZwZXh0cnEgdnBoYWRkdyB2cGhhZGRkIHZwaGFkZHN3IHZwaG1pbnBvc3V3IHZwaHN1YncgdnBoc3ViZCB2cGhzdWJzdyB2cGluc3JiIHZwaW5zcncgdnBpbnNyZCB2cGluc3JxIHZwbWFkZHdkIHZwbWFkZHVic3cgdnBtYXhzYiB2cG1heHN3IHZwbWF4c2QgdnBtYXh1YiB2cG1heHV3IHZwbWF4dWQgdnBtaW5zYiB2cG1pbnN3IHZwbWluc2QgdnBtaW51YiB2cG1pbnV3IHZwbWludWQgdnBtb3Ztc2tiIHZwbW92c3hidyB2cG1vdnN4YmQgdnBtb3ZzeGJxIHZwbW92c3h3ZCB2cG1vdnN4d3EgdnBtb3ZzeGRxIHZwbW92enhidyB2cG1vdnp4YmQgdnBtb3Z6eGJxIHZwbW92enh3ZCB2cG1vdnp4d3EgdnBtb3Z6eGRxIHZwbXVsaHV3IHZwbXVsaHJzdyB2cG11bGh3IHZwbXVsbHcgdnBtdWxsZCB2cG11bHVkcSB2cG11bGRxIHZwb3IgdnBzYWRidyB2cHNodWZiIHZwc2h1ZmQgdnBzaHVmaHcgdnBzaHVmbHcgdnBzaWduYiB2cHNpZ253IHZwc2lnbmQgdnBzbGxkcSB2cHNybGRxIHZwc2xsdyB2cHNsbGQgdnBzbGxxIHZwc3JhdyB2cHNyYWQgdnBzcmx3IHZwc3JsZCB2cHNybHEgdnB0ZXN0IHZwc3ViYiB2cHN1YncgdnBzdWJkIHZwc3VicSB2cHN1YnNiIHZwc3Vic3cgdnBzdWJ1c2IgdnBzdWJ1c3cgdnB1bnBja2hidyB2cHVucGNraHdkIHZwdW5wY2toZHEgdnB1bnBja2hxZHEgdnB1bnBja2xidyB2cHVucGNrbHdkIHZwdW5wY2tsZHEgdnB1bnBja2xxZHEgdnB4b3IgdnJjcHBzIHZyY3BzcyB2cnNxcnRwcyB2cnNxcnRzcyB2cm91bmRwZCB2cm91bmRwcyB2cm91bmRzZCB2cm91bmRzcyB2c2h1ZnBkIHZzaHVmcHMgdnNxcnRwZCB2c3FydHBzIHZzcXJ0c2QgdnNxcnRzcyB2c3RteGNzciB2c3VicGQgdnN1YnBzIHZzdWJzZCB2c3Vic3MgdnRlc3RwcyB2dGVzdHBkIHZ1Y29taXNkIHZ1Y29taXNzIHZ1bnBja2hwZCB2dW5wY2tocHMgdnVucGNrbHBkIHZ1bnBja2xwcyB2eG9ycGQgdnhvcnBzIHZ6ZXJvYWxsIHZ6ZXJvdXBwZXIgcGNsbXVsbHFscWRxIHBjbG11bGhxbHFkcSBwY2xtdWxscWhxZHEgcGNsbXVsaHFocWRxIHBjbG11bHFkcSB2cGNsbXVsbHFscWRxIHZwY2xtdWxocWxxZHEgdnBjbG11bGxxaHFkcSB2cGNsbXVsaHFocWRxIHZwY2xtdWxxZHEgdmZtYWRkMTMycHMgdmZtYWRkMTMycGQgdmZtYWRkMzEycHMgdmZtYWRkMzEycGQgdmZtYWRkMjEzcHMgdmZtYWRkMjEzcGQgdmZtYWRkMTIzcHMgdmZtYWRkMTIzcGQgdmZtYWRkMjMxcHMgdmZtYWRkMjMxcGQgdmZtYWRkMzIxcHMgdmZtYWRkMzIxcGQgdmZtYWRkc3ViMTMycHMgdmZtYWRkc3ViMTMycGQgdmZtYWRkc3ViMzEycHMgdmZtYWRkc3ViMzEycGQgdmZtYWRkc3ViMjEzcHMgdmZtYWRkc3ViMjEzcGQgdmZtYWRkc3ViMTIzcHMgdmZtYWRkc3ViMTIzcGQgdmZtYWRkc3ViMjMxcHMgdmZtYWRkc3ViMjMxcGQgdmZtYWRkc3ViMzIxcHMgdmZtYWRkc3ViMzIxcGQgdmZtc3ViMTMycHMgdmZtc3ViMTMycGQgdmZtc3ViMzEycHMgdmZtc3ViMzEycGQgdmZtc3ViMjEzcHMgdmZtc3ViMjEzcGQgdmZtc3ViMTIzcHMgdmZtc3ViMTIzcGQgdmZtc3ViMjMxcHMgdmZtc3ViMjMxcGQgdmZtc3ViMzIxcHMgdmZtc3ViMzIxcGQgdmZtc3ViYWRkMTMycHMgdmZtc3ViYWRkMTMycGQgdmZtc3ViYWRkMzEycHMgdmZtc3ViYWRkMzEycGQgdmZtc3ViYWRkMjEzcHMgdmZtc3ViYWRkMjEzcGQgdmZtc3ViYWRkMTIzcHMgdmZtc3ViYWRkMTIzcGQgdmZtc3ViYWRkMjMxcHMgdmZtc3ViYWRkMjMxcGQgdmZtc3ViYWRkMzIxcHMgdmZtc3ViYWRkMzIxcGQgdmZubWFkZDEzMnBzIHZmbm1hZGQxMzJwZCB2Zm5tYWRkMzEycHMgdmZubWFkZDMxMnBkIHZmbm1hZGQyMTNwcyB2Zm5tYWRkMjEzcGQgdmZubWFkZDEyM3BzIHZmbm1hZGQxMjNwZCB2Zm5tYWRkMjMxcHMgdmZubWFkZDIzMXBkIHZmbm1hZGQzMjFwcyB2Zm5tYWRkMzIxcGQgdmZubXN1YjEzMnBzIHZmbm1zdWIxMzJwZCB2Zm5tc3ViMzEycHMgdmZubXN1YjMxMnBkIHZmbm1zdWIyMTNwcyB2Zm5tc3ViMjEzcGQgdmZubXN1YjEyM3BzIHZmbm1zdWIxMjNwZCB2Zm5tc3ViMjMxcHMgdmZubXN1YjIzMXBkIHZmbm1zdWIzMjFwcyB2Zm5tc3ViMzIxcGQgdmZtYWRkMTMyc3MgdmZtYWRkMTMyc2QgdmZtYWRkMzEyc3MgdmZtYWRkMzEyc2QgdmZtYWRkMjEzc3MgdmZtYWRkMjEzc2QgdmZtYWRkMTIzc3MgdmZtYWRkMTIzc2QgdmZtYWRkMjMxc3MgdmZtYWRkMjMxc2QgdmZtYWRkMzIxc3MgdmZtYWRkMzIxc2QgdmZtc3ViMTMyc3MgdmZtc3ViMTMyc2QgdmZtc3ViMzEyc3MgdmZtc3ViMzEyc2QgdmZtc3ViMjEzc3MgdmZtc3ViMjEzc2QgdmZtc3ViMTIzc3MgdmZtc3ViMTIzc2QgdmZtc3ViMjMxc3MgdmZtc3ViMjMxc2QgdmZtc3ViMzIxc3MgdmZtc3ViMzIxc2QgdmZubWFkZDEzMnNzIHZmbm1hZGQxMzJzZCB2Zm5tYWRkMzEyc3MgdmZubWFkZDMxMnNkIHZmbm1hZGQyMTNzcyB2Zm5tYWRkMjEzc2QgdmZubWFkZDEyM3NzIHZmbm1hZGQxMjNzZCB2Zm5tYWRkMjMxc3MgdmZubWFkZDIzMXNkIHZmbm1hZGQzMjFzcyB2Zm5tYWRkMzIxc2QgdmZubXN1YjEzMnNzIHZmbm1zdWIxMzJzZCB2Zm5tc3ViMzEyc3MgdmZubXN1YjMxMnNkIHZmbm1zdWIyMTNzcyB2Zm5tc3ViMjEzc2QgdmZubXN1YjEyM3NzIHZmbm1zdWIxMjNzZCB2Zm5tc3ViMjMxc3MgdmZubXN1YjIzMXNkIHZmbm1zdWIzMjFzcyB2Zm5tc3ViMzIxc2QgcmRmc2Jhc2UgcmRnc2Jhc2UgcmRyYW5kIHdyZnNiYXNlIHdyZ3NiYXNlIHZjdnRwaDJwcyB2Y3Z0cHMycGggYWRjeCBhZG94IHJkc2VlZCBjbGFjIHN0YWMgeHN0b3JlIHhjcnlwdGVjYiB4Y3J5cHRjYmMgeGNyeXB0Y3RyIHhjcnlwdGNmYiB4Y3J5cHRvZmIgbW9udG11bCB4c2hhMSB4c2hhMjU2IGxsd3BjYiBzbHdwY2IgbHdwdmFsIGx3cGlucyB2Zm1hZGRwZCB2Zm1hZGRwcyB2Zm1hZGRzZCB2Zm1hZGRzcyB2Zm1hZGRzdWJwZCB2Zm1hZGRzdWJwcyB2Zm1zdWJhZGRwZCB2Zm1zdWJhZGRwcyB2Zm1zdWJwZCB2Zm1zdWJwcyB2Zm1zdWJzZCB2Zm1zdWJzcyB2Zm5tYWRkcGQgdmZubWFkZHBzIHZmbm1hZGRzZCB2Zm5tYWRkc3MgdmZubXN1YnBkIHZmbm1zdWJwcyB2Zm5tc3Vic2QgdmZubXN1YnNzIHZmcmN6cGQgdmZyY3pwcyB2ZnJjenNkIHZmcmN6c3MgdnBjbW92IHZwY29tYiB2cGNvbWQgdnBjb21xIHZwY29tdWIgdnBjb211ZCB2cGNvbXVxIHZwY29tdXcgdnBjb213IHZwaGFkZGJkIHZwaGFkZGJxIHZwaGFkZGJ3IHZwaGFkZGRxIHZwaGFkZHViZCB2cGhhZGR1YnEgdnBoYWRkdWJ3IHZwaGFkZHVkcSB2cGhhZGR1d2QgdnBoYWRkdXdxIHZwaGFkZHdkIHZwaGFkZHdxIHZwaHN1YmJ3IHZwaHN1YmRxIHZwaHN1YndkIHZwbWFjc2RkIHZwbWFjc2RxaCB2cG1hY3NkcWwgdnBtYWNzc2RkIHZwbWFjc3NkcWggdnBtYWNzc2RxbCB2cG1hY3Nzd2QgdnBtYWNzc3d3IHZwbWFjc3dkIHZwbWFjc3d3IHZwbWFkY3Nzd2QgdnBtYWRjc3dkIHZwcGVybSB2cHJvdGIgdnByb3RkIHZwcm90cSB2cHJvdHcgdnBzaGFiIHZwc2hhZCB2cHNoYXEgdnBzaGF3IHZwc2hsYiB2cHNobGQgdnBzaGxxIHZwc2hsdyB2YnJvYWRjYXN0aTEyOCB2cGJsZW5kZCB2cGJyb2FkY2FzdGIgdnBicm9hZGNhc3R3IHZwYnJvYWRjYXN0ZCB2cGJyb2FkY2FzdHEgdnBlcm1kIHZwZXJtcGQgdnBlcm1wcyB2cGVybXEgdnBlcm0yaTEyOCB2ZXh0cmFjdGkxMjggdmluc2VydGkxMjggdnBtYXNrbW92ZCB2cG1hc2ttb3ZxIHZwc2xsdmQgdnBzbGx2cSB2cHNyYXZkIHZwc3JsdmQgdnBzcmx2cSB2Z2F0aGVyZHBkIHZnYXRoZXJxcGQgdmdhdGhlcmRwcyB2Z2F0aGVycXBzIHZwZ2F0aGVyZGQgdnBnYXRoZXJxZCB2cGdhdGhlcmRxIHZwZ2F0aGVycXEgeGFib3J0IHhiZWdpbiB4ZW5kIHh0ZXN0IGFuZG4gYmV4dHIgYmxjaSBibGNpYyBibHNpIGJsc2ljIGJsY2ZpbGwgYmxzZmlsbCBibGNtc2sgYmxzbXNrIGJsc3IgYmxjcyBiemhpIG11bHggcGRlcCBwZXh0IHJvcnggc2FyeCBzaGx4IHNocnggdHpjbnQgdHptc2sgdDFtc2tjIHZhbGlnbmQgdmFsaWducSB2YmxlbmRtcGQgdmJsZW5kbXBzIHZicm9hZGNhc3RmMzJ4NCB2YnJvYWRjYXN0ZjY0eDQgdmJyb2FkY2FzdGkzMng0IHZicm9hZGNhc3RpNjR4NCB2Y29tcHJlc3NwZCB2Y29tcHJlc3NwcyB2Y3Z0cGQydWRxIHZjdnRwczJ1ZHEgdmN2dHNkMnVzaSB2Y3Z0c3MydXNpIHZjdnR0cGQydWRxIHZjdnR0cHMydWRxIHZjdnR0c2QydXNpIHZjdnR0c3MydXNpIHZjdnR1ZHEycGQgdmN2dHVkcTJwcyB2Y3Z0dXNpMnNkIHZjdnR1c2kyc3MgdmV4cGFuZHBkIHZleHBhbmRwcyB2ZXh0cmFjdGYzMng0IHZleHRyYWN0ZjY0eDQgdmV4dHJhY3RpMzJ4NCB2ZXh0cmFjdGk2NHg0IHZmaXh1cGltbXBkIHZmaXh1cGltbXBzIHZmaXh1cGltbXNkIHZmaXh1cGltbXNzIHZnZXRleHBwZCB2Z2V0ZXhwcHMgdmdldGV4cHNkIHZnZXRleHBzcyB2Z2V0bWFudHBkIHZnZXRtYW50cHMgdmdldG1hbnRzZCB2Z2V0bWFudHNzIHZpbnNlcnRmMzJ4NCB2aW5zZXJ0ZjY0eDQgdmluc2VydGkzMng0IHZpbnNlcnRpNjR4NCB2bW92ZHFhMzIgdm1vdmRxYTY0IHZtb3ZkcXUzMiB2bW92ZHF1NjQgdnBhYnNxIHZwYW5kZCB2cGFuZG5kIHZwYW5kbnEgdnBhbmRxIHZwYmxlbmRtZCB2cGJsZW5kbXEgdnBjbXBsdGQgdnBjbXBsZWQgdnBjbXBuZXFkIHZwY21wbmx0ZCB2cGNtcG5sZWQgdnBjbXBkIHZwY21wbHRxIHZwY21wbGVxIHZwY21wbmVxcSB2cGNtcG5sdHEgdnBjbXBubGVxIHZwY21wcSB2cGNtcGVxdWQgdnBjbXBsdHVkIHZwY21wbGV1ZCB2cGNtcG5lcXVkIHZwY21wbmx0dWQgdnBjbXBubGV1ZCB2cGNtcHVkIHZwY21wZXF1cSB2cGNtcGx0dXEgdnBjbXBsZXVxIHZwY21wbmVxdXEgdnBjbXBubHR1cSB2cGNtcG5sZXVxIHZwY21wdXEgdnBjb21wcmVzc2QgdnBjb21wcmVzc3EgdnBlcm1pMmQgdnBlcm1pMnBkIHZwZXJtaTJwcyB2cGVybWkycSB2cGVybXQyZCB2cGVybXQycGQgdnBlcm10MnBzIHZwZXJtdDJxIHZwZXhwYW5kZCB2cGV4cGFuZHEgdnBtYXhzcSB2cG1heHVxIHZwbWluc3EgdnBtaW51cSB2cG1vdmRiIHZwbW92ZHcgdnBtb3ZxYiB2cG1vdnFkIHZwbW92cXcgdnBtb3ZzZGIgdnBtb3ZzZHcgdnBtb3ZzcWIgdnBtb3ZzcWQgdnBtb3ZzcXcgdnBtb3Z1c2RiIHZwbW92dXNkdyB2cG1vdnVzcWIgdnBtb3Z1c3FkIHZwbW92dXNxdyB2cG9yZCB2cG9ycSB2cHJvbGQgdnByb2xxIHZwcm9sdmQgdnByb2x2cSB2cHJvcmQgdnByb3JxIHZwcm9ydmQgdnByb3J2cSB2cHNjYXR0ZXJkZCB2cHNjYXR0ZXJkcSB2cHNjYXR0ZXJxZCB2cHNjYXR0ZXJxcSB2cHNyYXEgdnBzcmF2cSB2cHRlcm5sb2dkIHZwdGVybmxvZ3EgdnB0ZXN0bWQgdnB0ZXN0bXEgdnB0ZXN0bm1kIHZwdGVzdG5tcSB2cHhvcmQgdnB4b3JxIHZyY3AxNHBkIHZyY3AxNHBzIHZyY3AxNHNkIHZyY3AxNHNzIHZybmRzY2FsZXBkIHZybmRzY2FsZXBzIHZybmRzY2FsZXNkIHZybmRzY2FsZXNzIHZyc3FydDE0cGQgdnJzcXJ0MTRwcyB2cnNxcnQxNHNkIHZyc3FydDE0c3MgdnNjYWxlZnBkIHZzY2FsZWZwcyB2c2NhbGVmc2QgdnNjYWxlZnNzIHZzY2F0dGVyZHBkIHZzY2F0dGVyZHBzIHZzY2F0dGVycXBkIHZzY2F0dGVycXBzIHZzaHVmZjMyeDQgdnNodWZmNjR4MiB2c2h1ZmkzMng0IHZzaHVmaTY0eDIga2FuZG53IGthbmR3IGttb3Z3IGtub3R3IGtvcnRlc3R3IGtvcncga3NoaWZ0bHcga3NoaWZ0cncga3VucGNrYncga3hub3J3IGt4b3J3IHZwYnJvYWRjYXN0bWIycSB2cGJyb2FkY2FzdG13MmQgdnBjb25mbGljdGQgdnBjb25mbGljdHEgdnBsemNudGQgdnBsemNudHEgdmV4cDJwZCB2ZXhwMnBzIHZyY3AyOHBkIHZyY3AyOHBzIHZyY3AyOHNkIHZyY3AyOHNzIHZyc3FydDI4cGQgdnJzcXJ0MjhwcyB2cnNxcnQyOHNkIHZyc3FydDI4c3MgdmdhdGhlcnBmMGRwZCB2Z2F0aGVycGYwZHBzIHZnYXRoZXJwZjBxcGQgdmdhdGhlcnBmMHFwcyB2Z2F0aGVycGYxZHBkIHZnYXRoZXJwZjFkcHMgdmdhdGhlcnBmMXFwZCB2Z2F0aGVycGYxcXBzIHZzY2F0dGVycGYwZHBkIHZzY2F0dGVycGYwZHBzIHZzY2F0dGVycGYwcXBkIHZzY2F0dGVycGYwcXBzIHZzY2F0dGVycGYxZHBkIHZzY2F0dGVycGYxZHBzIHZzY2F0dGVycGYxcXBkIHZzY2F0dGVycGYxcXBzIHByZWZldGNod3QxIGJuZG1rIGJuZGNsIGJuZGN1IGJuZGNuIGJuZG1vdiBibmRsZHggYm5kc3R4IHNoYTFybmRzNCBzaGExbmV4dGUgc2hhMW1zZzEgc2hhMW1zZzIgc2hhMjU2cm5kczIgc2hhMjU2bXNnMSBzaGEyNTZtc2cyIGhpbnRfbm9wMCBoaW50X25vcDEgaGludF9ub3AyIGhpbnRfbm9wMyBoaW50X25vcDQgaGludF9ub3A1IGhpbnRfbm9wNiBoaW50X25vcDcgaGludF9ub3A4IGhpbnRfbm9wOSBoaW50X25vcDEwIGhpbnRfbm9wMTEgaGludF9ub3AxMiBoaW50X25vcDEzIGhpbnRfbm9wMTQgaGludF9ub3AxNSBoaW50X25vcDE2IGhpbnRfbm9wMTcgaGludF9ub3AxOCBoaW50X25vcDE5IGhpbnRfbm9wMjAgaGludF9ub3AyMSBoaW50X25vcDIyIGhpbnRfbm9wMjMgaGludF9ub3AyNCBoaW50X25vcDI1IGhpbnRfbm9wMjYgaGludF9ub3AyNyBoaW50X25vcDI4IGhpbnRfbm9wMjkgaGludF9ub3AzMCBoaW50X25vcDMxIGhpbnRfbm9wMzIgaGludF9ub3AzMyBoaW50X25vcDM0IGhpbnRfbm9wMzUgaGludF9ub3AzNiBoaW50X25vcDM3IGhpbnRfbm9wMzggaGludF9ub3AzOSBoaW50X25vcDQwIGhpbnRfbm9wNDEgaGludF9ub3A0MiBoaW50X25vcDQzIGhpbnRfbm9wNDQgaGludF9ub3A0NSBoaW50X25vcDQ2IGhpbnRfbm9wNDcgaGludF9ub3A0OCBoaW50X25vcDQ5IGhpbnRfbm9wNTAgaGludF9ub3A1MSBoaW50X25vcDUyIGhpbnRfbm9wNTMgaGludF9ub3A1NCBoaW50X25vcDU1IGhpbnRfbm9wNTYgaGludF9ub3A1NyBoaW50X25vcDU4IGhpbnRfbm9wNTkgaGludF9ub3A2MCBoaW50X25vcDYxIGhpbnRfbm9wNjIgaGludF9ub3A2MycsXG4gICAgICBidWlsdF9pbjpcbiAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gcG9pbnRlclxuICAgICAgICAnaXAgZWlwIHJpcCAnXG4gICAgICAgIC8vIDgtYml0IHJlZ2lzdGVyc1xuICAgICAgICArICdhbCBhaCBibCBiaCBjbCBjaCBkbCBkaCBzaWwgZGlsIGJwbCBzcGwgcjhiIHI5YiByMTBiIHIxMWIgcjEyYiByMTNiIHIxNGIgcjE1YiAnXG4gICAgICAgIC8vIDE2LWJpdCByZWdpc3RlcnNcbiAgICAgICAgKyAnYXggYnggY3ggZHggc2kgZGkgYnAgc3Agcjh3IHI5dyByMTB3IHIxMXcgcjEydyByMTN3IHIxNHcgcjE1dyAnXG4gICAgICAgIC8vIDMyLWJpdCByZWdpc3RlcnNcbiAgICAgICAgKyAnZWF4IGVieCBlY3ggZWR4IGVzaSBlZGkgZWJwIGVzcCBlaXAgcjhkIHI5ZCByMTBkIHIxMWQgcjEyZCByMTNkIHIxNGQgcjE1ZCAnXG4gICAgICAgIC8vIDY0LWJpdCByZWdpc3RlcnNcbiAgICAgICAgKyAncmF4IHJieCByY3ggcmR4IHJzaSByZGkgcmJwIHJzcCByOCByOSByMTAgcjExIHIxMiByMTMgcjE0IHIxNSAnXG4gICAgICAgIC8vIFNlZ21lbnQgcmVnaXN0ZXJzXG4gICAgICAgICsgJ2NzIGRzIGVzIGZzIGdzIHNzICdcbiAgICAgICAgLy8gRmxvYXRpbmcgcG9pbnQgc3RhY2sgcmVnaXN0ZXJzXG4gICAgICAgICsgJ3N0IHN0MCBzdDEgc3QyIHN0MyBzdDQgc3Q1IHN0NiBzdDcgJ1xuICAgICAgICAvLyBNTVggUmVnaXN0ZXJzXG4gICAgICAgICsgJ21tMCBtbTEgbW0yIG1tMyBtbTQgbW01IG1tNiBtbTcgJ1xuICAgICAgICAvLyBTU0UgcmVnaXN0ZXJzXG4gICAgICAgICsgJ3htbTAgIHhtbTEgIHhtbTIgIHhtbTMgIHhtbTQgIHhtbTUgIHhtbTYgIHhtbTcgIHhtbTggIHhtbTkgeG1tMTAgIHhtbTExIHhtbTEyIHhtbTEzIHhtbTE0IHhtbTE1ICdcbiAgICAgICAgKyAneG1tMTYgeG1tMTcgeG1tMTggeG1tMTkgeG1tMjAgeG1tMjEgeG1tMjIgeG1tMjMgeG1tMjQgeG1tMjUgeG1tMjYgeG1tMjcgeG1tMjggeG1tMjkgeG1tMzAgeG1tMzEgJ1xuICAgICAgICAvLyBBVlggcmVnaXN0ZXJzXG4gICAgICAgICsgJ3ltbTAgIHltbTEgIHltbTIgIHltbTMgIHltbTQgIHltbTUgIHltbTYgIHltbTcgIHltbTggIHltbTkgeW1tMTAgIHltbTExIHltbTEyIHltbTEzIHltbTE0IHltbTE1ICdcbiAgICAgICAgKyAneW1tMTYgeW1tMTcgeW1tMTggeW1tMTkgeW1tMjAgeW1tMjEgeW1tMjIgeW1tMjMgeW1tMjQgeW1tMjUgeW1tMjYgeW1tMjcgeW1tMjggeW1tMjkgeW1tMzAgeW1tMzEgJ1xuICAgICAgICAvLyBBVlgtNTEyRiByZWdpc3RlcnNcbiAgICAgICAgKyAnem1tMCAgem1tMSAgem1tMiAgem1tMyAgem1tNCAgem1tNSAgem1tNiAgem1tNyAgem1tOCAgem1tOSB6bW0xMCAgem1tMTEgem1tMTIgem1tMTMgem1tMTQgem1tMTUgJ1xuICAgICAgICArICd6bW0xNiB6bW0xNyB6bW0xOCB6bW0xOSB6bW0yMCB6bW0yMSB6bW0yMiB6bW0yMyB6bW0yNCB6bW0yNSB6bW0yNiB6bW0yNyB6bW0yOCB6bW0yOSB6bW0zMCB6bW0zMSAnXG4gICAgICAgIC8vIEFWWC01MTJGIG1hc2sgcmVnaXN0ZXJzXG4gICAgICAgICsgJ2swIGsxIGsyIGszIGs0IGs1IGs2IGs3ICdcbiAgICAgICAgLy8gQm91bmQgKE1QWCkgcmVnaXN0ZXJcbiAgICAgICAgKyAnYm5kMCBibmQxIGJuZDIgYm5kMyAnXG4gICAgICAgIC8vIFNwZWNpYWwgcmVnaXN0ZXJcbiAgICAgICAgKyAnY3IwIGNyMSBjcjIgY3IzIGNyNCBjcjggZHIwIGRyMSBkcjIgZHIzIGRyOCB0cjMgdHI0IHRyNSB0cjYgdHI3ICdcbiAgICAgICAgLy8gTkFTTSBhbHRyZWcgcGFja2FnZVxuICAgICAgICArICdyMCByMSByMiByMyByNCByNSByNiByNyByMGIgcjFiIHIyYiByM2IgcjRiIHI1YiByNmIgcjdiICdcbiAgICAgICAgKyAncjB3IHIxdyByMncgcjN3IHI0dyByNXcgcjZ3IHI3dyByMGQgcjFkIHIyZCByM2QgcjRkIHI1ZCByNmQgcjdkICdcbiAgICAgICAgKyAncjBoIHIxaCByMmggcjNoICdcbiAgICAgICAgKyAncjBsIHIxbCByMmwgcjNsIHI0bCByNWwgcjZsIHI3bCByOGwgcjlsIHIxMGwgcjExbCByMTJsIHIxM2wgcjE0bCByMTVsICdcblxuICAgICAgICArICdkYiBkdyBkZCBkcSBkdCBkZHEgZG8gZHkgZHogJ1xuICAgICAgICArICdyZXNiIHJlc3cgcmVzZCByZXNxIHJlc3QgcmVzZHEgcmVzbyByZXN5IHJlc3ogJ1xuICAgICAgICArICdpbmNiaW4gZXF1IHRpbWVzICdcbiAgICAgICAgKyAnYnl0ZSB3b3JkIGR3b3JkIHF3b3JkIG5vc3BsaXQgcmVsIGFicyBzZWcgd3J0IHN0cmljdCBuZWFyIGZhciBhMzIgcHRyJyxcblxuICAgICAgbWV0YTpcbiAgICAgICAgJyVkZWZpbmUgJXhkZWZpbmUgJSsgJXVuZGVmICVkZWZzdHIgJWRlZnRvayAlYXNzaWduICVzdHJjYXQgJXN0cmxlbiAlc3Vic3RyICVyb3RhdGUgJWVsaWYgJWVsc2UgJWVuZGlmICdcbiAgICAgICAgKyAnJWlmICVpZm1hY3JvICVpZmN0eCAlaWZpZG4gJWlmaWRuaSAlaWZpZCAlaWZudW0gJWlmc3RyICVpZnRva2VuICVpZmVtcHR5ICVpZmVudiAlZXJyb3IgJXdhcm5pbmcgJWZhdGFsICVyZXAgJ1xuICAgICAgICArICclZW5kcmVwICVpbmNsdWRlICVwdXNoICVwb3AgJXJlcGwgJXBhdGhzZWFyY2ggJWRlcGVuZCAldXNlICVhcmcgJXN0YWNrc2l6ZSAlbG9jYWwgJWxpbmUgJWNvbW1lbnQgJWVuZGNvbW1lbnQgJ1xuICAgICAgICArICcubm9saXN0ICdcbiAgICAgICAgKyAnX19GSUxFX18gX19MSU5FX18gX19TRUNUX18gIF9fQklUU19fIF9fT1VUUFVUX0ZPUk1BVF9fIF9fREFURV9fIF9fVElNRV9fIF9fREFURV9OVU1fXyBfX1RJTUVfTlVNX18gJ1xuICAgICAgICArICdfX1VUQ19EQVRFX18gX19VVENfVElNRV9fIF9fVVRDX0RBVEVfTlVNX18gX19VVENfVElNRV9OVU1fXyAgX19QQVNTX18gc3RydWMgZW5kc3RydWMgaXN0cnVjIGF0IGllbmQgJ1xuICAgICAgICArICdhbGlnbiBhbGlnbmIgc2VjdGFsaWduIGRheiBub2RheiB1cCBkb3duIHplcm8gZGVmYXVsdCBvcHRpb24gYXNzdW1lIHB1YmxpYyAnXG5cbiAgICAgICAgKyAnYml0cyB1c2UxNiB1c2UzMiB1c2U2NCBkZWZhdWx0IHNlY3Rpb24gc2VnbWVudCBhYnNvbHV0ZSBleHRlcm4gZ2xvYmFsIGNvbW1vbiBjcHUgZmxvYXQgJ1xuICAgICAgICArICdfX3V0ZjE2X18gX191dGYxNmxlX18gX191dGYxNmJlX18gX191dGYzMl9fIF9fdXRmMzJsZV9fIF9fdXRmMzJiZV9fICdcbiAgICAgICAgKyAnX19mbG9hdDhfXyBfX2Zsb2F0MTZfXyBfX2Zsb2F0MzJfXyBfX2Zsb2F0NjRfXyBfX2Zsb2F0ODBtX18gX19mbG9hdDgwZV9fIF9fZmxvYXQxMjhsX18gX19mbG9hdDEyOGhfXyAnXG4gICAgICAgICsgJ19fSW5maW5pdHlfXyBfX1FOYU5fXyBfX1NOYU5fXyBJbmYgTmFOIFFOYU4gU05hTiBmbG9hdDggZmxvYXQxNiBmbG9hdDMyIGZsb2F0NjQgZmxvYXQ4MG0gZmxvYXQ4MGUgJ1xuICAgICAgICArICdmbG9hdDEyOGwgZmxvYXQxMjhoIF9fRkxPQVRfREFaX18gX19GTE9BVF9ST1VORF9fIF9fRkxPQVRfXydcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7IHJlbGV2YW5jZTogMCB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIC8vIEZsb2F0IG51bWJlciBhbmQgeDg3IEJDRFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXGIoPzooWzAtOV1bMC05X10qKT9cXFxcLlswLTlfXSooPzpbZUVdWystXT9bMC05X10rKT98J1xuICAgICAgICAgICAgICAgICAgICsgJygwW1h4XSk/WzAtOV1bMC05X10qKFxcXFwuWzAtOV9dKik/KD86W3BQXSg/OlsrLV0/WzAtOV9dKyk/KT8pXFxcXGInLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcblxuICAgICAgICAgIC8vIEhleCBudW1iZXIgaW4gJFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCRbMC05XVswLTlBLUZhLWZdKicsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgLy8gTnVtYmVyIGluIEgsRCxULFEsTyxCLFkgc3VmZml4XG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKD86WzAtOUEtRmEtZl1bMC05QS1GYS1mX10qW0hoXXxbMC05XVswLTlfXSpbRGRUdF0/fFswLTddWzAtN19dKltRcU9vXXxbMC0xXVswLTFfXSpbQmJZeV0pXFxcXGInIH0sXG5cbiAgICAgICAgICAvLyBOdW1iZXIgaW4gWCxELFQsUSxPLEIsWSBwcmVmaXhcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIoPzowW1h4XVswLTlBLUZhLWZfXSt8MFtEZFR0XVswLTlfXSt8MFtRcU9vXVswLTdfXSt8MFtCYll5XVswLTFfXSspXFxcXGInIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIERvdWJsZSBxdW90ZSBzdHJpbmdcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgLy8gU2luZ2xlLXF1b3RlZCBzdHJpbmdcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgICAgICBlbmQ6ICdbXlxcXFxcXFxcXVxcJydcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIEJhY2txdW90ZWQgc3RyaW5nXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdgJyxcbiAgICAgICAgICAgIGVuZDogJ1teXFxcXFxcXFxdYCdcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAvLyBHbG9iYWwgbGFiZWwgYW5kIGxvY2FsIGxhYmVsXG4gICAgICAgICAgeyBiZWdpbjogJ15cXFxccypbQS1aYS16Ll8/XVtBLVphLXowLTlfJCNAfi4/XSooOnxcXFxccytsYWJlbCknIH0sXG4gICAgICAgICAgLy8gTWFjcm8tbG9jYWwgbGFiZWxcbiAgICAgICAgICB7IGJlZ2luOiAnXlxcXFxzKiUlW0EtWmEtejAtOV8kI0B+Lj9dKjonIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gTWFjcm8gcGFyYW1ldGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICclWzAtOV0rJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gTWFjcm8gcGFyYW1ldGVyXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICAgICAgYmVnaW46ICclIVxcUysnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogL15cXHMqXFwuW1xcd18tXSsvXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHg4NmFzbTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2324\n")},2338:module=>{eval('/*\nLanguage: Caché Object Script\nAuthor: Nikita Savchenko \nCategory: enterprise, scripting\nWebsite: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls\n*/\n\n/** @type LanguageFn */\nfunction cos(hljs) {\n const STRINGS = {\n className: \'string\',\n variants: [\n {\n begin: \'"\',\n end: \'"\',\n contains: [\n { // escaped\n begin: "\\"\\"",\n relevance: 0\n }\n ]\n }\n ]\n };\n\n const NUMBERS = {\n className: "number",\n begin: "\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)",\n relevance: 0\n };\n\n const COS_KEYWORDS =\n \'property parameter class classmethod clientmethod extends as break \'\n + \'catch close continue do d|0 else elseif for goto halt hang h|0 if job \'\n + \'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 \'\n + \'tcommit throw trollback try tstart use view while write w|0 xecute x|0 \'\n + \'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert \'\n + \'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit \'\n + \'zsync ascii\';\n\n // registered function - no need in them due to all functions are highlighted,\n // but I\'ll just leave this here.\n\n // "$bit", "$bitcount",\n // "$bitfind", "$bitlogic", "$case", "$char", "$classmethod", "$classname",\n // "$compile", "$data", "$decimal", "$double", "$extract", "$factor",\n // "$find", "$fnumber", "$get", "$increment", "$inumber", "$isobject",\n // "$isvaliddouble", "$isvalidnum", "$justify", "$length", "$list",\n // "$listbuild", "$listdata", "$listfind", "$listfromstring", "$listget",\n // "$listlength", "$listnext", "$listsame", "$listtostring", "$listvalid",\n // "$locate", "$match", "$method", "$name", "$nconvert", "$next",\n // "$normalize", "$now", "$number", "$order", "$parameter", "$piece",\n // "$prefetchoff", "$prefetchon", "$property", "$qlength", "$qsubscript",\n // "$query", "$random", "$replace", "$reverse", "$sconvert", "$select",\n // "$sortbegin", "$sortend", "$stack", "$text", "$translate", "$view",\n // "$wascii", "$wchar", "$wextract", "$wfind", "$wiswide", "$wlength",\n // "$wreverse", "$xecute", "$zabs", "$zarccos", "$zarcsin", "$zarctan",\n // "$zcos", "$zcot", "$zcsc", "$zdate", "$zdateh", "$zdatetime",\n // "$zdatetimeh", "$zexp", "$zhex", "$zln", "$zlog", "$zpower", "$zsec",\n // "$zsin", "$zsqr", "$ztan", "$ztime", "$ztimeh", "$zboolean",\n // "$zconvert", "$zcrc", "$zcyc", "$zdascii", "$zdchar", "$zf",\n // "$ziswide", "$zlascii", "$zlchar", "$zname", "$zposition", "$zqascii",\n // "$zqchar", "$zsearch", "$zseek", "$zstrip", "$zwascii", "$zwchar",\n // "$zwidth", "$zwpack", "$zwbpack", "$zwunpack", "$zwbunpack", "$zzenkaku",\n // "$change", "$mv", "$mvat", "$mvfmt", "$mvfmts", "$mviconv",\n // "$mviconvs", "$mvinmat", "$mvlover", "$mvoconv", "$mvoconvs", "$mvraise",\n // "$mvtrans", "$mvv", "$mvname", "$zbitand", "$zbitcount", "$zbitfind",\n // "$zbitget", "$zbitlen", "$zbitnot", "$zbitor", "$zbitset", "$zbitstr",\n // "$zbitxor", "$zincrement", "$znext", "$zorder", "$zprevious", "$zsort",\n // "device", "$ecode", "$estack", "$etrap", "$halt", "$horolog",\n // "$io", "$job", "$key", "$namespace", "$principal", "$quit", "$roles",\n // "$storage", "$system", "$test", "$this", "$tlevel", "$username",\n // "$x", "$y", "$za", "$zb", "$zchild", "$zeof", "$zeos", "$zerror",\n // "$zhorolog", "$zio", "$zjob", "$zmode", "$znspace", "$zparent", "$zpi",\n // "$zpos", "$zreference", "$zstorage", "$ztimestamp", "$ztimezone",\n // "$ztrap", "$zversion"\n\n return {\n name: \'Caché Object Script\',\n case_insensitive: true,\n aliases: [ "cls" ],\n keywords: COS_KEYWORDS,\n contains: [\n NUMBERS,\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: "comment",\n begin: /;/,\n end: "$",\n relevance: 0\n },\n { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n className: "built_in",\n begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n },\n { // Macro command: quit $$$OK\n className: "built_in",\n begin: /\\$\\$\\$[a-zA-Z]+/\n },\n { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n className: "built_in",\n begin: /%[a-z]+(?:\\.[a-z]+)*/\n },\n { // Global variable: set ^globalName = 12 write ^globalName\n className: "symbol",\n begin: /\\^%?[a-zA-Z][\\w]*/\n },\n { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n className: "keyword",\n begin: /##class|##super|#define|#dim/\n },\n // sub-languages: are not fully supported by hljs by 11/15/2015\n // left for the future implementation.\n {\n begin: /&sql\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n subLanguage: "sql"\n },\n {\n begin: /&(js|jscript|javascript)/,\n excludeBegin: true,\n excludeEnd: true,\n subLanguage: "javascript"\n },\n {\n // this brakes first and last tag, but this is the only way to embed a valid html\n begin: /&html<\\s*\\s*>/,\n subLanguage: "xml"\n }\n ]\n };\n}\n\nmodule.exports = cos;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMzOC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLE9BQU87QUFDUCxRQUFRO0FBQ1I7QUFDQTtBQUNBLE9BQU87QUFDUCxRQUFRO0FBQ1I7QUFDQTtBQUNBLE9BQU87QUFDUCxRQUFRLHVEQUF1RDtBQUMvRDtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVE7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVE7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY29zLmpzPzdmZWMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBDYWNow6kgT2JqZWN0IFNjcmlwdFxuQXV0aG9yOiBOaWtpdGEgU2F2Y2hlbmtvIDx6aXRyb3MubGFiQGdtYWlsLmNvbT5cbkNhdGVnb3J5OiBlbnRlcnByaXNlLCBzY3JpcHRpbmdcbldlYnNpdGU6IGh0dHBzOi8vY2Vkb2NzLmludGVyc3lzdGVtcy5jb20vbGF0ZXN0L2NzcC9kb2Nib29rL0RvY0Jvb2suVUkuUGFnZS5jbHNcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjb3MoaGxqcykge1xuICBjb25zdCBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IC8vIGVzY2FwZWRcbiAgICAgICAgICAgIGJlZ2luOiBcIlxcXCJcXFwiXCIsXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgY29uc3QgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6IFwibnVtYmVyXCIsXG4gICAgYmVnaW46IFwiXFxcXGIoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspXCIsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgQ09TX0tFWVdPUkRTID1cbiAgICAncHJvcGVydHkgcGFyYW1ldGVyIGNsYXNzIGNsYXNzbWV0aG9kIGNsaWVudG1ldGhvZCBleHRlbmRzIGFzIGJyZWFrICdcbiAgICArICdjYXRjaCBjbG9zZSBjb250aW51ZSBkbyBkfDAgZWxzZSBlbHNlaWYgZm9yIGdvdG8gaGFsdCBoYW5nIGh8MCBpZiBqb2IgJ1xuICAgICsgJ2p8MCBraWxsIGt8MCBsb2NrIGx8MCBtZXJnZSBuZXcgb3BlbiBxdWl0IHF8MCByZWFkIHJ8MCByZXR1cm4gc2V0IHN8MCAnXG4gICAgKyAndGNvbW1pdCB0aHJvdyB0cm9sbGJhY2sgdHJ5IHRzdGFydCB1c2UgdmlldyB3aGlsZSB3cml0ZSB3fDAgeGVjdXRlIHh8MCAnXG4gICAgKyAnemtpbGwgem5zcGFjZSB6biB6dHJhcCB6d3JpdGUgencgenpkdW1wIHp6d3JpdGUgcHJpbnQgemJyZWFrIHppbnNlcnQgJ1xuICAgICsgJ3psb2FkIHpwcmludCB6cmVtb3ZlIHpzYXZlIHp6cHJpbnQgbXYgbXZjYWxsIG12Y3J0IG12ZGltIG12cHJpbnQgenF1aXQgJ1xuICAgICsgJ3pzeW5jIGFzY2lpJztcblxuICAvLyByZWdpc3RlcmVkIGZ1bmN0aW9uIC0gbm8gbmVlZCBpbiB0aGVtIGR1ZSB0byBhbGwgZnVuY3Rpb25zIGFyZSBoaWdobGlnaHRlZCxcbiAgLy8gYnV0IEknbGwganVzdCBsZWF2ZSB0aGlzIGhlcmUuXG5cbiAgLy8gXCIkYml0XCIsIFwiJGJpdGNvdW50XCIsXG4gIC8vIFwiJGJpdGZpbmRcIiwgXCIkYml0bG9naWNcIiwgXCIkY2FzZVwiLCBcIiRjaGFyXCIsIFwiJGNsYXNzbWV0aG9kXCIsIFwiJGNsYXNzbmFtZVwiLFxuICAvLyBcIiRjb21waWxlXCIsIFwiJGRhdGFcIiwgXCIkZGVjaW1hbFwiLCBcIiRkb3VibGVcIiwgXCIkZXh0cmFjdFwiLCBcIiRmYWN0b3JcIixcbiAgLy8gXCIkZmluZFwiLCBcIiRmbnVtYmVyXCIsIFwiJGdldFwiLCBcIiRpbmNyZW1lbnRcIiwgXCIkaW51bWJlclwiLCBcIiRpc29iamVjdFwiLFxuICAvLyBcIiRpc3ZhbGlkZG91YmxlXCIsIFwiJGlzdmFsaWRudW1cIiwgXCIkanVzdGlmeVwiLCBcIiRsZW5ndGhcIiwgXCIkbGlzdFwiLFxuICAvLyBcIiRsaXN0YnVpbGRcIiwgXCIkbGlzdGRhdGFcIiwgXCIkbGlzdGZpbmRcIiwgXCIkbGlzdGZyb21zdHJpbmdcIiwgXCIkbGlzdGdldFwiLFxuICAvLyBcIiRsaXN0bGVuZ3RoXCIsIFwiJGxpc3RuZXh0XCIsIFwiJGxpc3RzYW1lXCIsIFwiJGxpc3R0b3N0cmluZ1wiLCBcIiRsaXN0dmFsaWRcIixcbiAgLy8gXCIkbG9jYXRlXCIsIFwiJG1hdGNoXCIsIFwiJG1ldGhvZFwiLCBcIiRuYW1lXCIsIFwiJG5jb252ZXJ0XCIsIFwiJG5leHRcIixcbiAgLy8gXCIkbm9ybWFsaXplXCIsIFwiJG5vd1wiLCBcIiRudW1iZXJcIiwgXCIkb3JkZXJcIiwgXCIkcGFyYW1ldGVyXCIsIFwiJHBpZWNlXCIsXG4gIC8vIFwiJHByZWZldGNob2ZmXCIsIFwiJHByZWZldGNob25cIiwgXCIkcHJvcGVydHlcIiwgXCIkcWxlbmd0aFwiLCBcIiRxc3Vic2NyaXB0XCIsXG4gIC8vIFwiJHF1ZXJ5XCIsIFwiJHJhbmRvbVwiLCBcIiRyZXBsYWNlXCIsIFwiJHJldmVyc2VcIiwgXCIkc2NvbnZlcnRcIiwgXCIkc2VsZWN0XCIsXG4gIC8vIFwiJHNvcnRiZWdpblwiLCBcIiRzb3J0ZW5kXCIsIFwiJHN0YWNrXCIsIFwiJHRleHRcIiwgXCIkdHJhbnNsYXRlXCIsIFwiJHZpZXdcIixcbiAgLy8gXCIkd2FzY2lpXCIsIFwiJHdjaGFyXCIsIFwiJHdleHRyYWN0XCIsIFwiJHdmaW5kXCIsIFwiJHdpc3dpZGVcIiwgXCIkd2xlbmd0aFwiLFxuICAvLyBcIiR3cmV2ZXJzZVwiLCBcIiR4ZWN1dGVcIiwgXCIkemFic1wiLCBcIiR6YXJjY29zXCIsIFwiJHphcmNzaW5cIiwgXCIkemFyY3RhblwiLFxuICAvLyBcIiR6Y29zXCIsIFwiJHpjb3RcIiwgXCIkemNzY1wiLCBcIiR6ZGF0ZVwiLCBcIiR6ZGF0ZWhcIiwgXCIkemRhdGV0aW1lXCIsXG4gIC8vIFwiJHpkYXRldGltZWhcIiwgXCIkemV4cFwiLCBcIiR6aGV4XCIsIFwiJHpsblwiLCBcIiR6bG9nXCIsIFwiJHpwb3dlclwiLCBcIiR6c2VjXCIsXG4gIC8vIFwiJHpzaW5cIiwgXCIkenNxclwiLCBcIiR6dGFuXCIsIFwiJHp0aW1lXCIsIFwiJHp0aW1laFwiLCBcIiR6Ym9vbGVhblwiLFxuICAvLyBcIiR6Y29udmVydFwiLCBcIiR6Y3JjXCIsIFwiJHpjeWNcIiwgXCIkemRhc2NpaVwiLCBcIiR6ZGNoYXJcIiwgXCIkemZcIixcbiAgLy8gXCIkemlzd2lkZVwiLCBcIiR6bGFzY2lpXCIsIFwiJHpsY2hhclwiLCBcIiR6bmFtZVwiLCBcIiR6cG9zaXRpb25cIiwgXCIkenFhc2NpaVwiLFxuICAvLyBcIiR6cWNoYXJcIiwgXCIkenNlYXJjaFwiLCBcIiR6c2Vla1wiLCBcIiR6c3RyaXBcIiwgXCIkendhc2NpaVwiLCBcIiR6d2NoYXJcIixcbiAgLy8gXCIkendpZHRoXCIsIFwiJHp3cGFja1wiLCBcIiR6d2JwYWNrXCIsIFwiJHp3dW5wYWNrXCIsIFwiJHp3YnVucGFja1wiLCBcIiR6emVua2FrdVwiLFxuICAvLyBcIiRjaGFuZ2VcIiwgXCIkbXZcIiwgXCIkbXZhdFwiLCBcIiRtdmZtdFwiLCBcIiRtdmZtdHNcIiwgXCIkbXZpY29udlwiLFxuICAvLyBcIiRtdmljb252c1wiLCBcIiRtdmlubWF0XCIsIFwiJG12bG92ZXJcIiwgXCIkbXZvY29udlwiLCBcIiRtdm9jb252c1wiLCBcIiRtdnJhaXNlXCIsXG4gIC8vIFwiJG12dHJhbnNcIiwgXCIkbXZ2XCIsIFwiJG12bmFtZVwiLCBcIiR6Yml0YW5kXCIsIFwiJHpiaXRjb3VudFwiLCBcIiR6Yml0ZmluZFwiLFxuICAvLyBcIiR6Yml0Z2V0XCIsIFwiJHpiaXRsZW5cIiwgXCIkemJpdG5vdFwiLCBcIiR6Yml0b3JcIiwgXCIkemJpdHNldFwiLCBcIiR6Yml0c3RyXCIsXG4gIC8vIFwiJHpiaXR4b3JcIiwgXCIkemluY3JlbWVudFwiLCBcIiR6bmV4dFwiLCBcIiR6b3JkZXJcIiwgXCIkenByZXZpb3VzXCIsIFwiJHpzb3J0XCIsXG4gIC8vIFwiZGV2aWNlXCIsIFwiJGVjb2RlXCIsIFwiJGVzdGFja1wiLCBcIiRldHJhcFwiLCBcIiRoYWx0XCIsIFwiJGhvcm9sb2dcIixcbiAgLy8gXCIkaW9cIiwgXCIkam9iXCIsIFwiJGtleVwiLCBcIiRuYW1lc3BhY2VcIiwgXCIkcHJpbmNpcGFsXCIsIFwiJHF1aXRcIiwgXCIkcm9sZXNcIixcbiAgLy8gXCIkc3RvcmFnZVwiLCBcIiRzeXN0ZW1cIiwgXCIkdGVzdFwiLCBcIiR0aGlzXCIsIFwiJHRsZXZlbFwiLCBcIiR1c2VybmFtZVwiLFxuICAvLyBcIiR4XCIsIFwiJHlcIiwgXCIkemFcIiwgXCIkemJcIiwgXCIkemNoaWxkXCIsIFwiJHplb2ZcIiwgXCIkemVvc1wiLCBcIiR6ZXJyb3JcIixcbiAgLy8gXCIkemhvcm9sb2dcIiwgXCIkemlvXCIsIFwiJHpqb2JcIiwgXCIkem1vZGVcIiwgXCIkem5zcGFjZVwiLCBcIiR6cGFyZW50XCIsIFwiJHpwaVwiLFxuICAvLyBcIiR6cG9zXCIsIFwiJHpyZWZlcmVuY2VcIiwgXCIkenN0b3JhZ2VcIiwgXCIkenRpbWVzdGFtcFwiLCBcIiR6dGltZXpvbmVcIixcbiAgLy8gXCIkenRyYXBcIiwgXCIkenZlcnNpb25cIlxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0NhY2jDqSBPYmplY3QgU2NyaXB0JyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGFsaWFzZXM6IFsgXCJjbHNcIiBdLFxuICAgIGtleXdvcmRzOiBDT1NfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIE5VTUJFUlMsXG4gICAgICBTVFJJTkdTLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIixcbiAgICAgICAgYmVnaW46IC87LyxcbiAgICAgICAgZW5kOiBcIiRcIixcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgeyAvLyBGdW5jdGlvbnMgYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM6IHdyaXRlICR6dGltZSg2MCo2MCozKSwgJCRteUZ1bmMoMTApLCAkJF5WYWwoMSlcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICAgIGJlZ2luOiAvKD86XFwkXFwkP3xcXC5cXC4pXFxeP1thLXpBLVpdKy9cbiAgICAgIH0sXG4gICAgICB7IC8vIE1hY3JvIGNvbW1hbmQ6IHF1aXQgJCQkT0tcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICAgIGJlZ2luOiAvXFwkXFwkXFwkW2EtekEtWl0rL1xuICAgICAgfSxcbiAgICAgIHsgLy8gU3BlY2lhbCAoZ2xvYmFsKSB2YXJpYWJsZXM6IHdyaXRlICVyZXF1ZXN0LkNvbnRlbnQ7IEJ1aWx0LWluIGNsYXNzZXM6ICVMaWJyYXJ5LkludGVnZXJcbiAgICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICAgIGJlZ2luOiAvJVthLXpdKyg/OlxcLlthLXpdKykqL1xuICAgICAgfSxcbiAgICAgIHsgLy8gR2xvYmFsIHZhcmlhYmxlOiBzZXQgXmdsb2JhbE5hbWUgPSAxMiB3cml0ZSBeZ2xvYmFsTmFtZVxuICAgICAgICBjbGFzc05hbWU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiAvXFxeJT9bYS16QS1aXVtcXHddKi9cbiAgICAgIH0sXG4gICAgICB7IC8vIFNvbWUgY29udHJvbCBjb25zdHJ1Y3Rpb25zOiBkbyAjI2NsYXNzKFBhY2thZ2UuQ2xhc3NOYW1lKS5NZXRob2QoKSwgIyNzdXBlcigpXG4gICAgICAgIGNsYXNzTmFtZTogXCJrZXl3b3JkXCIsXG4gICAgICAgIGJlZ2luOiAvIyNjbGFzc3wjI3N1cGVyfCNkZWZpbmV8I2RpbS9cbiAgICAgIH0sXG4gICAgICAvLyBzdWItbGFuZ3VhZ2VzOiBhcmUgbm90IGZ1bGx5IHN1cHBvcnRlZCBieSBobGpzIGJ5IDExLzE1LzIwMTVcbiAgICAgIC8vIGxlZnQgZm9yIHRoZSBmdXR1cmUgaW1wbGVtZW50YXRpb24uXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJnNxbFxcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6IFwic3FsXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJihqc3xqc2NyaXB0fGphdmFzY3JpcHQpPC8sXG4gICAgICAgIGVuZDogLz4vLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHN1Ykxhbmd1YWdlOiBcImphdmFzY3JpcHRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gdGhpcyBicmFrZXMgZmlyc3QgYW5kIGxhc3QgdGFnLCBidXQgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZW1iZWQgYSB2YWxpZCBodG1sXG4gICAgICAgIGJlZ2luOiAvJmh0bWw8XFxzKjwvLFxuICAgICAgICBlbmQ6IC8+XFxzKj4vLFxuICAgICAgICBzdWJMYW5ndWFnZTogXCJ4bWxcIlxuICAgICAgfVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2338\n')},2350:module=>{eval("/*\nLanguage: Q\nDescription: Q is a vector-based functional paradigm programming language built into the kdb+ database.\n (K/Q/Kdb+ from Kx Systems)\nAuthor: Sergey Vidyuk \nWebsite: https://kx.com/connect-with-us/developers/\nCategory: enterprise, functional, database\n*/\n\nfunction q(hljs) {\n const KEYWORDS = {\n $pattern: /(`?)[A-Za-z0-9_]+\\b/,\n keyword:\n 'do while select delete by update from',\n literal:\n '0b 1b',\n built_in:\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n type:\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n };\n\n return {\n name: 'Q',\n aliases: [\n 'k',\n 'kdb'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = q;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM1MC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9xLmpzP2E5MWQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBRXG5EZXNjcmlwdGlvbjogUSBpcyBhIHZlY3Rvci1iYXNlZCBmdW5jdGlvbmFsIHBhcmFkaWdtIHByb2dyYW1taW5nIGxhbmd1YWdlIGJ1aWx0IGludG8gdGhlIGtkYisgZGF0YWJhc2UuXG4gICAgICAgICAgICAgKEsvUS9LZGIrIGZyb20gS3ggU3lzdGVtcylcbkF1dGhvcjogU2VyZ2V5IFZpZHl1ayA8c3ZpZHl1a0BnbWFpbC5jb20+XG5XZWJzaXRlOiBodHRwczovL2t4LmNvbS9jb25uZWN0LXdpdGgtdXMvZGV2ZWxvcGVycy9cbkNhdGVnb3J5OiBlbnRlcnByaXNlLCBmdW5jdGlvbmFsLCBkYXRhYmFzZVxuKi9cblxuZnVuY3Rpb24gcShobGpzKSB7XG4gIGNvbnN0IEtFWVdPUkRTID0ge1xuICAgICRwYXR0ZXJuOiAvKGA/KVtBLVphLXowLTlfXStcXGIvLFxuICAgIGtleXdvcmQ6XG4gICAgICAnZG8gd2hpbGUgc2VsZWN0IGRlbGV0ZSBieSB1cGRhdGUgZnJvbScsXG4gICAgbGl0ZXJhbDpcbiAgICAgICcwYiAxYicsXG4gICAgYnVpbHRfaW46XG4gICAgICAnbmVnIG5vdCBudWxsIHN0cmluZyByZWNpcHJvY2FsIGZsb29yIGNlaWxpbmcgc2lnbnVtIG1vZCB4YmFyIHhsb2cgYW5kIG9yIGVhY2ggc2NhbiBvdmVyIHByaW9yIG1tdSBsc3EgaW52IG1kNSBsdGltZSBndGltZSBjb3VudCBmaXJzdCB2YXIgZGV2IG1lZCBjb3YgY29yIGFsbCBhbnkgcmFuZCBzdW1zIHByZHMgbWlucyBtYXhzIGZpbGxzIGRlbHRhcyByYXRpb3MgYXZncyBkaWZmZXIgcHJldiBuZXh0IHJhbmsgcmV2ZXJzZSBpYXNjIGlkZXNjIGFzYyBkZXNjIG1zdW0gbWNvdW50IG1hdmcgbWRldiB4cmFuayBtbWluIG1tYXggeHByZXYgcm90YXRlIGRpc3RpbmN0IGdyb3VwIHdoZXJlIGZsaXAgdHlwZSBrZXkgdGlsIGdldCB2YWx1ZSBhdHRyIGN1dCBzZXQgdXBzZXJ0IHJhemUgdW5pb24gaW50ZXIgZXhjZXB0IGNyb3NzIHN2IHZzIHN1Ymxpc3QgZW5saXN0IHJlYWQwIHJlYWQxIGhvcGVuIGhjbG9zZSBoZGVsIGhzeW0gaGNvdW50IHBlYWNoIHN5c3RlbSBsdHJpbSBydHJpbSB0cmltIGxvd2VyIHVwcGVyIHNzciB2aWV3IHRhYmxlcyB2aWV3cyBjb2xzIHhjb2xzIGtleXMgeGtleSB4Y29sIHhhc2MgeGRlc2MgZmtleXMgbWV0YSBsaiBhaiBhajAgaWogcGogYXNvZiB1aiB3dyB3aiB3ajEgZmJ5IHhncm91cCB1bmdyb3VwIGVqIHNhdmUgbG9hZCByc2F2ZSBybG9hZCBzaG93IGNzdiBwYXJzZSBldmFsIG1pbiBtYXggYXZnIHdhdmcgd3N1bSBzaW4gY29zIHRhbiBzdW0nLFxuICAgIHR5cGU6XG4gICAgICAnYGZsb2F0IGBkb3VibGUgaW50IGB0aW1lc3RhbXAgYHRpbWVzcGFuIGBkYXRldGltZSBgdGltZSBgYm9vbGVhbiBgc3ltYm9sIGBjaGFyIGBieXRlIGBzaG9ydCBgbG9uZyBgcmVhbCBgbW9udGggYGRhdGUgYG1pbnV0ZSBgc2Vjb25kIGBndWlkJ1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1EnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdrJyxcbiAgICAgICdrZGInXG4gICAgXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2350\n")},2367:module=>{"use strict";eval("/*!\n * is-extendable \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM2Ny5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaXMtZXh0ZW5kYWJsZUAwLjEuMS9ub2RlX21vZHVsZXMvaXMtZXh0ZW5kYWJsZS9pbmRleC5qcz9hNDU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogaXMtZXh0ZW5kYWJsZSA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtZXh0ZW5kYWJsZT5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUsIEpvbiBTY2hsaW5rZXJ0LlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0V4dGVuZGFibGUodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsICE9PSAndW5kZWZpbmVkJyAmJiB2YWwgIT09IG51bGxcbiAgICAmJiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJyk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2367\n")},2386:module=>{eval('/*\nLanguage: NSIS\nDescription: Nullsoft Scriptable Install System\nAuthor: Jan T. Sott \nWebsite: https://nsis.sourceforge.io/Main_Page\nCategory: scripting\n*/\n\n\nfunction nsis(hljs) {\n const regex = hljs.regex;\n const LANGUAGE_CONSTANTS = [\n "ADMINTOOLS",\n "APPDATA",\n "CDBURN_AREA",\n "CMDLINE",\n "COMMONFILES32",\n "COMMONFILES64",\n "COMMONFILES",\n "COOKIES",\n "DESKTOP",\n "DOCUMENTS",\n "EXEDIR",\n "EXEFILE",\n "EXEPATH",\n "FAVORITES",\n "FONTS",\n "HISTORY",\n "HWNDPARENT",\n "INSTDIR",\n "INTERNET_CACHE",\n "LANGUAGE",\n "LOCALAPPDATA",\n "MUSIC",\n "NETHOOD",\n "OUTDIR",\n "PICTURES",\n "PLUGINSDIR",\n "PRINTHOOD",\n "PROFILE",\n "PROGRAMFILES32",\n "PROGRAMFILES64",\n "PROGRAMFILES",\n "QUICKLAUNCH",\n "RECENT",\n "RESOURCES_LOCALIZED",\n "RESOURCES",\n "SENDTO",\n "SMPROGRAMS",\n "SMSTARTUP",\n "STARTMENU",\n "SYSDIR",\n "TEMP",\n "TEMPLATES",\n "VIDEOS",\n "WINDIR"\n ];\n\n const PARAM_NAMES = [\n "ARCHIVE",\n "FILE_ATTRIBUTE_ARCHIVE",\n "FILE_ATTRIBUTE_NORMAL",\n "FILE_ATTRIBUTE_OFFLINE",\n "FILE_ATTRIBUTE_READONLY",\n "FILE_ATTRIBUTE_SYSTEM",\n "FILE_ATTRIBUTE_TEMPORARY",\n "HKCR",\n "HKCU",\n "HKDD",\n "HKEY_CLASSES_ROOT",\n "HKEY_CURRENT_CONFIG",\n "HKEY_CURRENT_USER",\n "HKEY_DYN_DATA",\n "HKEY_LOCAL_MACHINE",\n "HKEY_PERFORMANCE_DATA",\n "HKEY_USERS",\n "HKLM",\n "HKPD",\n "HKU",\n "IDABORT",\n "IDCANCEL",\n "IDIGNORE",\n "IDNO",\n "IDOK",\n "IDRETRY",\n "IDYES",\n "MB_ABORTRETRYIGNORE",\n "MB_DEFBUTTON1",\n "MB_DEFBUTTON2",\n "MB_DEFBUTTON3",\n "MB_DEFBUTTON4",\n "MB_ICONEXCLAMATION",\n "MB_ICONINFORMATION",\n "MB_ICONQUESTION",\n "MB_ICONSTOP",\n "MB_OK",\n "MB_OKCANCEL",\n "MB_RETRYCANCEL",\n "MB_RIGHT",\n "MB_RTLREADING",\n "MB_SETFOREGROUND",\n "MB_TOPMOST",\n "MB_USERICON",\n "MB_YESNO",\n "NORMAL",\n "OFFLINE",\n "READONLY",\n "SHCTX",\n "SHELL_CONTEXT",\n "SYSTEM|TEMPORARY",\n ];\n\n const COMPILER_FLAGS = [\n "addincludedir",\n "addplugindir",\n "appendfile",\n "assert",\n "cd",\n "define",\n "delfile",\n "echo",\n "else",\n "endif",\n "error",\n "execute",\n "finalize",\n "getdllversion",\n "gettlbversion",\n "if",\n "ifdef",\n "ifmacrodef",\n "ifmacrondef",\n "ifndef",\n "include",\n "insertmacro",\n "macro",\n "macroend",\n "makensis",\n "packhdr",\n "searchparse",\n "searchreplace",\n "system",\n "tempfile",\n "undef",\n "uninstfinalize",\n "verbose",\n "warning",\n ];\n\n const CONSTANTS = {\n className: \'variable.constant\',\n begin: regex.concat(/\\$/, regex.either(...LANGUAGE_CONSTANTS))\n };\n\n const DEFINES = {\n // ${defines}\n className: \'variable\',\n begin: /\\$+\\{[\\!\\w.:-]+\\}/\n };\n\n const VARIABLES = {\n // $variables\n className: \'variable\',\n begin: /\\$+\\w[\\w\\.]*/,\n illegal: /\\(\\)\\{\\}/\n };\n\n const LANGUAGES = {\n // $(language_strings)\n className: \'variable\',\n begin: /\\$+\\([\\w^.:!-]+\\)/\n };\n\n const PARAMETERS = {\n // command parameters\n className: \'params\',\n begin: regex.either(...PARAM_NAMES)\n };\n\n const COMPILER = {\n // !compiler_flags\n className: \'keyword\',\n begin: regex.concat(\n /!/,\n regex.either(...COMPILER_FLAGS)\n )\n };\n\n const ESCAPE_CHARS = {\n // $\\n, $\\r, $\\t, $$\n className: \'char.escape\',\n begin: /\\$(\\\\[nrt]|\\$)/\n };\n\n const PLUGINS = {\n // plug::ins\n className: \'title.function\',\n begin: /\\w+::\\w+/\n };\n\n const STRING = {\n className: \'string\',\n variants: [\n {\n begin: \'"\',\n end: \'"\'\n },\n {\n begin: \'\\\'\',\n end: \'\\\'\'\n },\n {\n begin: \'`\',\n end: \'`\'\n }\n ],\n illegal: /\\n/,\n contains: [\n ESCAPE_CHARS,\n CONSTANTS,\n DEFINES,\n VARIABLES,\n LANGUAGES\n ]\n };\n\n const KEYWORDS = [\n "Abort",\n "AddBrandingImage",\n "AddSize",\n "AllowRootDirInstall",\n "AllowSkipFiles",\n "AutoCloseWindow",\n "BGFont",\n "BGGradient",\n "BrandingText",\n "BringToFront",\n "Call",\n "CallInstDLL",\n "Caption",\n "ChangeUI",\n "CheckBitmap",\n "ClearErrors",\n "CompletedText",\n "ComponentText",\n "CopyFiles",\n "CRCCheck",\n "CreateDirectory",\n "CreateFont",\n "CreateShortCut",\n "Delete",\n "DeleteINISec",\n "DeleteINIStr",\n "DeleteRegKey",\n "DeleteRegValue",\n "DetailPrint",\n "DetailsButtonText",\n "DirText",\n "DirVar",\n "DirVerify",\n "EnableWindow",\n "EnumRegKey",\n "EnumRegValue",\n "Exch",\n "Exec",\n "ExecShell",\n "ExecShellWait",\n "ExecWait",\n "ExpandEnvStrings",\n "File",\n "FileBufSize",\n "FileClose",\n "FileErrorText",\n "FileOpen",\n "FileRead",\n "FileReadByte",\n "FileReadUTF16LE",\n "FileReadWord",\n "FileWriteUTF16LE",\n "FileSeek",\n "FileWrite",\n "FileWriteByte",\n "FileWriteWord",\n "FindClose",\n "FindFirst",\n "FindNext",\n "FindWindow",\n "FlushINI",\n "GetCurInstType",\n "GetCurrentAddress",\n "GetDlgItem",\n "GetDLLVersion",\n "GetDLLVersionLocal",\n "GetErrorLevel",\n "GetFileTime",\n "GetFileTimeLocal",\n "GetFullPathName",\n "GetFunctionAddress",\n "GetInstDirError",\n "GetKnownFolderPath",\n "GetLabelAddress",\n "GetTempFileName",\n "GetWinVer",\n "Goto",\n "HideWindow",\n "Icon",\n "IfAbort",\n "IfErrors",\n "IfFileExists",\n "IfRebootFlag",\n "IfRtlLanguage",\n "IfShellVarContextAll",\n "IfSilent",\n "InitPluginsDir",\n "InstallButtonText",\n "InstallColors",\n "InstallDir",\n "InstallDirRegKey",\n "InstProgressFlags",\n "InstType",\n "InstTypeGetText",\n "InstTypeSetText",\n "Int64Cmp",\n "Int64CmpU",\n "Int64Fmt",\n "IntCmp",\n "IntCmpU",\n "IntFmt",\n "IntOp",\n "IntPtrCmp",\n "IntPtrCmpU",\n "IntPtrOp",\n "IsWindow",\n "LangString",\n "LicenseBkColor",\n "LicenseData",\n "LicenseForceSelection",\n "LicenseLangString",\n "LicenseText",\n "LoadAndSetImage",\n "LoadLanguageFile",\n "LockWindow",\n "LogSet",\n "LogText",\n "ManifestDPIAware",\n "ManifestLongPathAware",\n "ManifestMaxVersionTested",\n "ManifestSupportedOS",\n "MessageBox",\n "MiscButtonText",\n "Name|0",\n "Nop",\n "OutFile",\n "Page",\n "PageCallbacks",\n "PEAddResource",\n "PEDllCharacteristics",\n "PERemoveResource",\n "PESubsysVer",\n "Pop",\n "Push",\n "Quit",\n "ReadEnvStr",\n "ReadINIStr",\n "ReadRegDWORD",\n "ReadRegStr",\n "Reboot",\n "RegDLL",\n "Rename",\n "RequestExecutionLevel",\n "ReserveFile",\n "Return",\n "RMDir",\n "SearchPath",\n "SectionGetFlags",\n "SectionGetInstTypes",\n "SectionGetSize",\n "SectionGetText",\n "SectionIn",\n "SectionSetFlags",\n "SectionSetInstTypes",\n "SectionSetSize",\n "SectionSetText",\n "SendMessage",\n "SetAutoClose",\n "SetBrandingImage",\n "SetCompress",\n "SetCompressor",\n "SetCompressorDictSize",\n "SetCtlColors",\n "SetCurInstType",\n "SetDatablockOptimize",\n "SetDateSave",\n "SetDetailsPrint",\n "SetDetailsView",\n "SetErrorLevel",\n "SetErrors",\n "SetFileAttributes",\n "SetFont",\n "SetOutPath",\n "SetOverwrite",\n "SetRebootFlag",\n "SetRegView",\n "SetShellVarContext",\n "SetSilent",\n "ShowInstDetails",\n "ShowUninstDetails",\n "ShowWindow",\n "SilentInstall",\n "SilentUnInstall",\n "Sleep",\n "SpaceTexts",\n "StrCmp",\n "StrCmpS",\n "StrCpy",\n "StrLen",\n "SubCaption",\n "Unicode",\n "UninstallButtonText",\n "UninstallCaption",\n "UninstallIcon",\n "UninstallSubCaption",\n "UninstallText",\n "UninstPage",\n "UnRegDLL",\n "Var",\n "VIAddVersionKey",\n "VIFileVersion",\n "VIProductVersion",\n "WindowIcon",\n "WriteINIStr",\n "WriteRegBin",\n "WriteRegDWORD",\n "WriteRegExpandStr",\n "WriteRegMultiStr",\n "WriteRegNone",\n "WriteRegStr",\n "WriteUninstaller",\n "XPStyle"\n ];\n\n const LITERALS = [\n "admin",\n "all",\n "auto",\n "both",\n "bottom",\n "bzip2",\n "colored",\n "components",\n "current",\n "custom",\n "directory",\n "false",\n "force",\n "hide",\n "highest",\n "ifdiff",\n "ifnewer",\n "instfiles",\n "lastused",\n "leave",\n "left",\n "license",\n "listonly",\n "lzma",\n "nevershow",\n "none",\n "normal",\n "notset",\n "off",\n "on",\n "open",\n "print",\n "right",\n "show",\n "silent",\n "silentlog",\n "smooth",\n "textonly",\n "top",\n "true",\n "try",\n "un.components",\n "un.custom",\n "un.directory",\n "un.instfiles",\n "un.license",\n "uninstConfirm",\n "user",\n "Win10",\n "Win7",\n "Win8",\n "WinVista",\n "zlib"\n ];\n\n const FUNCTION_DEFINITION = {\n match: [\n /Function/,\n /\\s+/,\n regex.concat(/(\\.)?/, hljs.IDENT_RE)\n ],\n scope: {\n 1: "keyword",\n 3: "title.function"\n }\n };\n\n // Var Custom.Variable.Name.Item\n // Var /GLOBAL Custom.Variable.Name.Item\n const VARIABLE_NAME_RE = /[A-Za-z][\\w.]*/;\n const VARIABLE_DEFINITION = {\n match: [\n /Var/,\n /\\s+/,\n /(?:\\/GLOBAL\\s+)?/,\n VARIABLE_NAME_RE\n ],\n scope: {\n 1: "keyword",\n 3: "params",\n 4: "variable"\n }\n };\n\n return {\n name: \'NSIS\',\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERALS\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n \';\',\n \'$\',\n { relevance: 0 }\n ),\n VARIABLE_DEFINITION,\n FUNCTION_DEFINITION,\n { beginKeywords: \'Function PageEx Section SectionGroup FunctionEnd SectionEnd\', },\n STRING,\n COMPILER,\n DEFINES,\n VARIABLES,\n LANGUAGES,\n PARAMETERS,\n PLUGINS,\n hljs.NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = nsis;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM4Ni5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsRUFBRTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0VBQStFO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL25zaXMuanM/YjcyYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE5TSVNcbkRlc2NyaXB0aW9uOiBOdWxsc29mdCBTY3JpcHRhYmxlIEluc3RhbGwgU3lzdGVtXG5BdXRob3I6IEphbiBULiBTb3R0IDxqYW4uc290dEBnbWFpbC5jb20+XG5XZWJzaXRlOiBodHRwczovL25zaXMuc291cmNlZm9yZ2UuaW8vTWFpbl9QYWdlXG5DYXRlZ29yeTogc2NyaXB0aW5nXG4qL1xuXG5cbmZ1bmN0aW9uIG5zaXMoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IExBTkdVQUdFX0NPTlNUQU5UUyA9IFtcbiAgICBcIkFETUlOVE9PTFNcIixcbiAgICBcIkFQUERBVEFcIixcbiAgICBcIkNEQlVSTl9BUkVBXCIsXG4gICAgXCJDTURMSU5FXCIsXG4gICAgXCJDT01NT05GSUxFUzMyXCIsXG4gICAgXCJDT01NT05GSUxFUzY0XCIsXG4gICAgXCJDT01NT05GSUxFU1wiLFxuICAgIFwiQ09PS0lFU1wiLFxuICAgIFwiREVTS1RPUFwiLFxuICAgIFwiRE9DVU1FTlRTXCIsXG4gICAgXCJFWEVESVJcIixcbiAgICBcIkVYRUZJTEVcIixcbiAgICBcIkVYRVBBVEhcIixcbiAgICBcIkZBVk9SSVRFU1wiLFxuICAgIFwiRk9OVFNcIixcbiAgICBcIkhJU1RPUllcIixcbiAgICBcIkhXTkRQQVJFTlRcIixcbiAgICBcIklOU1RESVJcIixcbiAgICBcIklOVEVSTkVUX0NBQ0hFXCIsXG4gICAgXCJMQU5HVUFHRVwiLFxuICAgIFwiTE9DQUxBUFBEQVRBXCIsXG4gICAgXCJNVVNJQ1wiLFxuICAgIFwiTkVUSE9PRFwiLFxuICAgIFwiT1VURElSXCIsXG4gICAgXCJQSUNUVVJFU1wiLFxuICAgIFwiUExVR0lOU0RJUlwiLFxuICAgIFwiUFJJTlRIT09EXCIsXG4gICAgXCJQUk9GSUxFXCIsXG4gICAgXCJQUk9HUkFNRklMRVMzMlwiLFxuICAgIFwiUFJPR1JBTUZJTEVTNjRcIixcbiAgICBcIlBST0dSQU1GSUxFU1wiLFxuICAgIFwiUVVJQ0tMQVVOQ0hcIixcbiAgICBcIlJFQ0VOVFwiLFxuICAgIFwiUkVTT1VSQ0VTX0xPQ0FMSVpFRFwiLFxuICAgIFwiUkVTT1VSQ0VTXCIsXG4gICAgXCJTRU5EVE9cIixcbiAgICBcIlNNUFJPR1JBTVNcIixcbiAgICBcIlNNU1RBUlRVUFwiLFxuICAgIFwiU1RBUlRNRU5VXCIsXG4gICAgXCJTWVNESVJcIixcbiAgICBcIlRFTVBcIixcbiAgICBcIlRFTVBMQVRFU1wiLFxuICAgIFwiVklERU9TXCIsXG4gICAgXCJXSU5ESVJcIlxuICBdO1xuXG4gIGNvbnN0IFBBUkFNX05BTUVTID0gW1xuICAgIFwiQVJDSElWRVwiLFxuICAgIFwiRklMRV9BVFRSSUJVVEVfQVJDSElWRVwiLFxuICAgIFwiRklMRV9BVFRSSUJVVEVfTk9STUFMXCIsXG4gICAgXCJGSUxFX0FUVFJJQlVURV9PRkZMSU5FXCIsXG4gICAgXCJGSUxFX0FUVFJJQlVURV9SRUFET05MWVwiLFxuICAgIFwiRklMRV9BVFRSSUJVVEVfU1lTVEVNXCIsXG4gICAgXCJGSUxFX0FUVFJJQlVURV9URU1QT1JBUllcIixcbiAgICBcIkhLQ1JcIixcbiAgICBcIkhLQ1VcIixcbiAgICBcIkhLRERcIixcbiAgICBcIkhLRVlfQ0xBU1NFU19ST09UXCIsXG4gICAgXCJIS0VZX0NVUlJFTlRfQ09ORklHXCIsXG4gICAgXCJIS0VZX0NVUlJFTlRfVVNFUlwiLFxuICAgIFwiSEtFWV9EWU5fREFUQVwiLFxuICAgIFwiSEtFWV9MT0NBTF9NQUNISU5FXCIsXG4gICAgXCJIS0VZX1BFUkZPUk1BTkNFX0RBVEFcIixcbiAgICBcIkhLRVlfVVNFUlNcIixcbiAgICBcIkhLTE1cIixcbiAgICBcIkhLUERcIixcbiAgICBcIkhLVVwiLFxuICAgIFwiSURBQk9SVFwiLFxuICAgIFwiSURDQU5DRUxcIixcbiAgICBcIklESUdOT1JFXCIsXG4gICAgXCJJRE5PXCIsXG4gICAgXCJJRE9LXCIsXG4gICAgXCJJRFJFVFJZXCIsXG4gICAgXCJJRFlFU1wiLFxuICAgIFwiTUJfQUJPUlRSRVRSWUlHTk9SRVwiLFxuICAgIFwiTUJfREVGQlVUVE9OMVwiLFxuICAgIFwiTUJfREVGQlVUVE9OMlwiLFxuICAgIFwiTUJfREVGQlVUVE9OM1wiLFxuICAgIFwiTUJfREVGQlVUVE9ONFwiLFxuICAgIFwiTUJfSUNPTkVYQ0xBTUFUSU9OXCIsXG4gICAgXCJNQl9JQ09OSU5GT1JNQVRJT05cIixcbiAgICBcIk1CX0lDT05RVUVTVElPTlwiLFxuICAgIFwiTUJfSUNPTlNUT1BcIixcbiAgICBcIk1CX09LXCIsXG4gICAgXCJNQl9PS0NBTkNFTFwiLFxuICAgIFwiTUJfUkVUUllDQU5DRUxcIixcbiAgICBcIk1CX1JJR0hUXCIsXG4gICAgXCJNQl9SVExSRUFESU5HXCIsXG4gICAgXCJNQl9TRVRGT1JFR1JPVU5EXCIsXG4gICAgXCJNQl9UT1BNT1NUXCIsXG4gICAgXCJNQl9VU0VSSUNPTlwiLFxuICAgIFwiTUJfWUVTTk9cIixcbiAgICBcIk5PUk1BTFwiLFxuICAgIFwiT0ZGTElORVwiLFxuICAgIFwiUkVBRE9OTFlcIixcbiAgICBcIlNIQ1RYXCIsXG4gICAgXCJTSEVMTF9DT05URVhUXCIsXG4gICAgXCJTWVNURU18VEVNUE9SQVJZXCIsXG4gIF07XG5cbiAgY29uc3QgQ09NUElMRVJfRkxBR1MgPSBbXG4gICAgXCJhZGRpbmNsdWRlZGlyXCIsXG4gICAgXCJhZGRwbHVnaW5kaXJcIixcbiAgICBcImFwcGVuZGZpbGVcIixcbiAgICBcImFzc2VydFwiLFxuICAgIFwiY2RcIixcbiAgICBcImRlZmluZVwiLFxuICAgIFwiZGVsZmlsZVwiLFxuICAgIFwiZWNob1wiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwiZW5kaWZcIixcbiAgICBcImVycm9yXCIsXG4gICAgXCJleGVjdXRlXCIsXG4gICAgXCJmaW5hbGl6ZVwiLFxuICAgIFwiZ2V0ZGxsdmVyc2lvblwiLFxuICAgIFwiZ2V0dGxidmVyc2lvblwiLFxuICAgIFwiaWZcIixcbiAgICBcImlmZGVmXCIsXG4gICAgXCJpZm1hY3JvZGVmXCIsXG4gICAgXCJpZm1hY3JvbmRlZlwiLFxuICAgIFwiaWZuZGVmXCIsXG4gICAgXCJpbmNsdWRlXCIsXG4gICAgXCJpbnNlcnRtYWNyb1wiLFxuICAgIFwibWFjcm9cIixcbiAgICBcIm1hY3JvZW5kXCIsXG4gICAgXCJtYWtlbnNpc1wiLFxuICAgIFwicGFja2hkclwiLFxuICAgIFwic2VhcmNocGFyc2VcIixcbiAgICBcInNlYXJjaHJlcGxhY2VcIixcbiAgICBcInN5c3RlbVwiLFxuICAgIFwidGVtcGZpbGVcIixcbiAgICBcInVuZGVmXCIsXG4gICAgXCJ1bmluc3RmaW5hbGl6ZVwiLFxuICAgIFwidmVyYm9zZVwiLFxuICAgIFwid2FybmluZ1wiLFxuICBdO1xuXG4gIGNvbnN0IENPTlNUQU5UUyA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZS5jb25zdGFudCcsXG4gICAgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFwkLywgcmVnZXguZWl0aGVyKC4uLkxBTkdVQUdFX0NPTlNUQU5UUykpXG4gIH07XG5cbiAgY29uc3QgREVGSU5FUyA9IHtcbiAgICAvLyAke2RlZmluZXN9XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkK1xce1tcXCFcXHcuOi1dK1xcfS9cbiAgfTtcblxuICBjb25zdCBWQVJJQUJMRVMgPSB7XG4gICAgLy8gJHZhcmlhYmxlc1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICBiZWdpbjogL1xcJCtcXHdbXFx3XFwuXSovLFxuICAgIGlsbGVnYWw6IC9cXChcXClcXHtcXH0vXG4gIH07XG5cbiAgY29uc3QgTEFOR1VBR0VTID0ge1xuICAgIC8vICQobGFuZ3VhZ2Vfc3RyaW5ncylcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgYmVnaW46IC9cXCQrXFwoW1xcd14uOiEtXStcXCkvXG4gIH07XG5cbiAgY29uc3QgUEFSQU1FVEVSUyA9IHtcbiAgICAvLyBjb21tYW5kIHBhcmFtZXRlcnNcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiByZWdleC5laXRoZXIoLi4uUEFSQU1fTkFNRVMpXG4gIH07XG5cbiAgY29uc3QgQ09NUElMRVIgPSB7XG4gICAgLy8gIWNvbXBpbGVyX2ZsYWdzXG4gICAgY2xhc3NOYW1lOiAna2V5d29yZCcsXG4gICAgYmVnaW46IHJlZ2V4LmNvbmNhdChcbiAgICAgIC8hLyxcbiAgICAgIHJlZ2V4LmVpdGhlciguLi5DT01QSUxFUl9GTEFHUylcbiAgICApXG4gIH07XG5cbiAgY29uc3QgRVNDQVBFX0NIQVJTID0ge1xuICAgIC8vICRcXG4sICRcXHIsICRcXHQsICQkXG4gICAgY2xhc3NOYW1lOiAnY2hhci5lc2NhcGUnLFxuICAgIGJlZ2luOiAvXFwkKFxcXFxbbnJ0XXxcXCQpL1xuICB9O1xuXG4gIGNvbnN0IFBMVUdJTlMgPSB7XG4gICAgLy8gcGx1Zzo6aW5zXG4gICAgY2xhc3NOYW1lOiAndGl0bGUuZnVuY3Rpb24nLFxuICAgIGJlZ2luOiAvXFx3Kzo6XFx3Ky9cbiAgfTtcblxuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgZW5kOiAnXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcJycsXG4gICAgICAgIGVuZDogJ1xcJydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYCcsXG4gICAgICAgIGVuZDogJ2AnXG4gICAgICB9XG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW1xuICAgICAgRVNDQVBFX0NIQVJTLFxuICAgICAgQ09OU1RBTlRTLFxuICAgICAgREVGSU5FUyxcbiAgICAgIFZBUklBQkxFUyxcbiAgICAgIExBTkdVQUdFU1xuICAgIF1cbiAgfTtcblxuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICBcIkFib3J0XCIsXG4gICAgXCJBZGRCcmFuZGluZ0ltYWdlXCIsXG4gICAgXCJBZGRTaXplXCIsXG4gICAgXCJBbGxvd1Jvb3REaXJJbnN0YWxsXCIsXG4gICAgXCJBbGxvd1NraXBGaWxlc1wiLFxuICAgIFwiQXV0b0Nsb3NlV2luZG93XCIsXG4gICAgXCJCR0ZvbnRcIixcbiAgICBcIkJHR3JhZGllbnRcIixcbiAgICBcIkJyYW5kaW5nVGV4dFwiLFxuICAgIFwiQnJpbmdUb0Zyb250XCIsXG4gICAgXCJDYWxsXCIsXG4gICAgXCJDYWxsSW5zdERMTFwiLFxuICAgIFwiQ2FwdGlvblwiLFxuICAgIFwiQ2hhbmdlVUlcIixcbiAgICBcIkNoZWNrQml0bWFwXCIsXG4gICAgXCJDbGVhckVycm9yc1wiLFxuICAgIFwiQ29tcGxldGVkVGV4dFwiLFxuICAgIFwiQ29tcG9uZW50VGV4dFwiLFxuICAgIFwiQ29weUZpbGVzXCIsXG4gICAgXCJDUkNDaGVja1wiLFxuICAgIFwiQ3JlYXRlRGlyZWN0b3J5XCIsXG4gICAgXCJDcmVhdGVGb250XCIsXG4gICAgXCJDcmVhdGVTaG9ydEN1dFwiLFxuICAgIFwiRGVsZXRlXCIsXG4gICAgXCJEZWxldGVJTklTZWNcIixcbiAgICBcIkRlbGV0ZUlOSVN0clwiLFxuICAgIFwiRGVsZXRlUmVnS2V5XCIsXG4gICAgXCJEZWxldGVSZWdWYWx1ZVwiLFxuICAgIFwiRGV0YWlsUHJpbnRcIixcbiAgICBcIkRldGFpbHNCdXR0b25UZXh0XCIsXG4gICAgXCJEaXJUZXh0XCIsXG4gICAgXCJEaXJWYXJcIixcbiAgICBcIkRpclZlcmlmeVwiLFxuICAgIFwiRW5hYmxlV2luZG93XCIsXG4gICAgXCJFbnVtUmVnS2V5XCIsXG4gICAgXCJFbnVtUmVnVmFsdWVcIixcbiAgICBcIkV4Y2hcIixcbiAgICBcIkV4ZWNcIixcbiAgICBcIkV4ZWNTaGVsbFwiLFxuICAgIFwiRXhlY1NoZWxsV2FpdFwiLFxuICAgIFwiRXhlY1dhaXRcIixcbiAgICBcIkV4cGFuZEVudlN0cmluZ3NcIixcbiAgICBcIkZpbGVcIixcbiAgICBcIkZpbGVCdWZTaXplXCIsXG4gICAgXCJGaWxlQ2xvc2VcIixcbiAgICBcIkZpbGVFcnJvclRleHRcIixcbiAgICBcIkZpbGVPcGVuXCIsXG4gICAgXCJGaWxlUmVhZFwiLFxuICAgIFwiRmlsZVJlYWRCeXRlXCIsXG4gICAgXCJGaWxlUmVhZFVURjE2TEVcIixcbiAgICBcIkZpbGVSZWFkV29yZFwiLFxuICAgIFwiRmlsZVdyaXRlVVRGMTZMRVwiLFxuICAgIFwiRmlsZVNlZWtcIixcbiAgICBcIkZpbGVXcml0ZVwiLFxuICAgIFwiRmlsZVdyaXRlQnl0ZVwiLFxuICAgIFwiRmlsZVdyaXRlV29yZFwiLFxuICAgIFwiRmluZENsb3NlXCIsXG4gICAgXCJGaW5kRmlyc3RcIixcbiAgICBcIkZpbmROZXh0XCIsXG4gICAgXCJGaW5kV2luZG93XCIsXG4gICAgXCJGbHVzaElOSVwiLFxuICAgIFwiR2V0Q3VySW5zdFR5cGVcIixcbiAgICBcIkdldEN1cnJlbnRBZGRyZXNzXCIsXG4gICAgXCJHZXREbGdJdGVtXCIsXG4gICAgXCJHZXRETExWZXJzaW9uXCIsXG4gICAgXCJHZXRETExWZXJzaW9uTG9jYWxcIixcbiAgICBcIkdldEVycm9yTGV2ZWxcIixcbiAgICBcIkdldEZpbGVUaW1lXCIsXG4gICAgXCJHZXRGaWxlVGltZUxvY2FsXCIsXG4gICAgXCJHZXRGdWxsUGF0aE5hbWVcIixcbiAgICBcIkdldEZ1bmN0aW9uQWRkcmVzc1wiLFxuICAgIFwiR2V0SW5zdERpckVycm9yXCIsXG4gICAgXCJHZXRLbm93bkZvbGRlclBhdGhcIixcbiAgICBcIkdldExhYmVsQWRkcmVzc1wiLFxuICAgIFwiR2V0VGVtcEZpbGVOYW1lXCIsXG4gICAgXCJHZXRXaW5WZXJcIixcbiAgICBcIkdvdG9cIixcbiAgICBcIkhpZGVXaW5kb3dcIixcbiAgICBcIkljb25cIixcbiAgICBcIklmQWJvcnRcIixcbiAgICBcIklmRXJyb3JzXCIsXG4gICAgXCJJZkZpbGVFeGlzdHNcIixcbiAgICBcIklmUmVib290RmxhZ1wiLFxuICAgIFwiSWZSdGxMYW5ndWFnZVwiLFxuICAgIFwiSWZTaGVsbFZhckNvbnRleHRBbGxcIixcbiAgICBcIklmU2lsZW50XCIsXG4gICAgXCJJbml0UGx1Z2luc0RpclwiLFxuICAgIFwiSW5zdGFsbEJ1dHRvblRleHRcIixcbiAgICBcIkluc3RhbGxDb2xvcnNcIixcbiAgICBcIkluc3RhbGxEaXJcIixcbiAgICBcIkluc3RhbGxEaXJSZWdLZXlcIixcbiAgICBcIkluc3RQcm9ncmVzc0ZsYWdzXCIsXG4gICAgXCJJbnN0VHlwZVwiLFxuICAgIFwiSW5zdFR5cGVHZXRUZXh0XCIsXG4gICAgXCJJbnN0VHlwZVNldFRleHRcIixcbiAgICBcIkludDY0Q21wXCIsXG4gICAgXCJJbnQ2NENtcFVcIixcbiAgICBcIkludDY0Rm10XCIsXG4gICAgXCJJbnRDbXBcIixcbiAgICBcIkludENtcFVcIixcbiAgICBcIkludEZtdFwiLFxuICAgIFwiSW50T3BcIixcbiAgICBcIkludFB0ckNtcFwiLFxuICAgIFwiSW50UHRyQ21wVVwiLFxuICAgIFwiSW50UHRyT3BcIixcbiAgICBcIklzV2luZG93XCIsXG4gICAgXCJMYW5nU3RyaW5nXCIsXG4gICAgXCJMaWNlbnNlQmtDb2xvclwiLFxuICAgIFwiTGljZW5zZURhdGFcIixcbiAgICBcIkxpY2Vuc2VGb3JjZVNlbGVjdGlvblwiLFxuICAgIFwiTGljZW5zZUxhbmdTdHJpbmdcIixcbiAgICBcIkxpY2Vuc2VUZXh0XCIsXG4gICAgXCJMb2FkQW5kU2V0SW1hZ2VcIixcbiAgICBcIkxvYWRMYW5ndWFnZUZpbGVcIixcbiAgICBcIkxvY2tXaW5kb3dcIixcbiAgICBcIkxvZ1NldFwiLFxuICAgIFwiTG9nVGV4dFwiLFxuICAgIFwiTWFuaWZlc3REUElBd2FyZVwiLFxuICAgIFwiTWFuaWZlc3RMb25nUGF0aEF3YXJlXCIsXG4gICAgXCJNYW5pZmVzdE1heFZlcnNpb25UZXN0ZWRcIixcbiAgICBcIk1hbmlmZXN0U3VwcG9ydGVkT1NcIixcbiAgICBcIk1lc3NhZ2VCb3hcIixcbiAgICBcIk1pc2NCdXR0b25UZXh0XCIsXG4gICAgXCJOYW1lfDBcIixcbiAgICBcIk5vcFwiLFxuICAgIFwiT3V0RmlsZVwiLFxuICAgIFwiUGFnZVwiLFxuICAgIFwiUGFnZUNhbGxiYWNrc1wiLFxuICAgIFwiUEVBZGRSZXNvdXJjZVwiLFxuICAgIFwiUEVEbGxDaGFyYWN0ZXJpc3RpY3NcIixcbiAgICBcIlBFUmVtb3ZlUmVzb3VyY2VcIixcbiAgICBcIlBFU3Vic3lzVmVyXCIsXG4gICAgXCJQb3BcIixcbiAgICBcIlB1c2hcIixcbiAgICBcIlF1aXRcIixcbiAgICBcIlJlYWRFbnZTdHJcIixcbiAgICBcIlJlYWRJTklTdHJcIixcbiAgICBcIlJlYWRSZWdEV09SRFwiLFxuICAgIFwiUmVhZFJlZ1N0clwiLFxuICAgIFwiUmVib290XCIsXG4gICAgXCJSZWdETExcIixcbiAgICBcIlJlbmFtZVwiLFxuICAgIFwiUmVxdWVzdEV4ZWN1dGlvbkxldmVsXCIsXG4gICAgXCJSZXNlcnZlRmlsZVwiLFxuICAgIFwiUmV0dXJuXCIsXG4gICAgXCJSTURpclwiLFxuICAgIFwiU2VhcmNoUGF0aFwiLFxuICAgIFwiU2VjdGlvbkdldEZsYWdzXCIsXG4gICAgXCJTZWN0aW9uR2V0SW5zdFR5cGVzXCIsXG4gICAgXCJTZWN0aW9uR2V0U2l6ZVwiLFxuICAgIFwiU2VjdGlvbkdldFRleHRcIixcbiAgICBcIlNlY3Rpb25JblwiLFxuICAgIFwiU2VjdGlvblNldEZsYWdzXCIsXG4gICAgXCJTZWN0aW9uU2V0SW5zdFR5cGVzXCIsXG4gICAgXCJTZWN0aW9uU2V0U2l6ZVwiLFxuICAgIFwiU2VjdGlvblNldFRleHRcIixcbiAgICBcIlNlbmRNZXNzYWdlXCIsXG4gICAgXCJTZXRBdXRvQ2xvc2VcIixcbiAgICBcIlNldEJyYW5kaW5nSW1hZ2VcIixcbiAgICBcIlNldENvbXByZXNzXCIsXG4gICAgXCJTZXRDb21wcmVzc29yXCIsXG4gICAgXCJTZXRDb21wcmVzc29yRGljdFNpemVcIixcbiAgICBcIlNldEN0bENvbG9yc1wiLFxuICAgIFwiU2V0Q3VySW5zdFR5cGVcIixcbiAgICBcIlNldERhdGFibG9ja09wdGltaXplXCIsXG4gICAgXCJTZXREYXRlU2F2ZVwiLFxuICAgIFwiU2V0RGV0YWlsc1ByaW50XCIsXG4gICAgXCJTZXREZXRhaWxzVmlld1wiLFxuICAgIFwiU2V0RXJyb3JMZXZlbFwiLFxuICAgIFwiU2V0RXJyb3JzXCIsXG4gICAgXCJTZXRGaWxlQXR0cmlidXRlc1wiLFxuICAgIFwiU2V0Rm9udFwiLFxuICAgIFwiU2V0T3V0UGF0aFwiLFxuICAgIFwiU2V0T3ZlcndyaXRlXCIsXG4gICAgXCJTZXRSZWJvb3RGbGFnXCIsXG4gICAgXCJTZXRSZWdWaWV3XCIsXG4gICAgXCJTZXRTaGVsbFZhckNvbnRleHRcIixcbiAgICBcIlNldFNpbGVudFwiLFxuICAgIFwiU2hvd0luc3REZXRhaWxzXCIsXG4gICAgXCJTaG93VW5pbnN0RGV0YWlsc1wiLFxuICAgIFwiU2hvd1dpbmRvd1wiLFxuICAgIFwiU2lsZW50SW5zdGFsbFwiLFxuICAgIFwiU2lsZW50VW5JbnN0YWxsXCIsXG4gICAgXCJTbGVlcFwiLFxuICAgIFwiU3BhY2VUZXh0c1wiLFxuICAgIFwiU3RyQ21wXCIsXG4gICAgXCJTdHJDbXBTXCIsXG4gICAgXCJTdHJDcHlcIixcbiAgICBcIlN0ckxlblwiLFxuICAgIFwiU3ViQ2FwdGlvblwiLFxuICAgIFwiVW5pY29kZVwiLFxuICAgIFwiVW5pbnN0YWxsQnV0dG9uVGV4dFwiLFxuICAgIFwiVW5pbnN0YWxsQ2FwdGlvblwiLFxuICAgIFwiVW5pbnN0YWxsSWNvblwiLFxuICAgIFwiVW5pbnN0YWxsU3ViQ2FwdGlvblwiLFxuICAgIFwiVW5pbnN0YWxsVGV4dFwiLFxuICAgIFwiVW5pbnN0UGFnZVwiLFxuICAgIFwiVW5SZWdETExcIixcbiAgICBcIlZhclwiLFxuICAgIFwiVklBZGRWZXJzaW9uS2V5XCIsXG4gICAgXCJWSUZpbGVWZXJzaW9uXCIsXG4gICAgXCJWSVByb2R1Y3RWZXJzaW9uXCIsXG4gICAgXCJXaW5kb3dJY29uXCIsXG4gICAgXCJXcml0ZUlOSVN0clwiLFxuICAgIFwiV3JpdGVSZWdCaW5cIixcbiAgICBcIldyaXRlUmVnRFdPUkRcIixcbiAgICBcIldyaXRlUmVnRXhwYW5kU3RyXCIsXG4gICAgXCJXcml0ZVJlZ011bHRpU3RyXCIsXG4gICAgXCJXcml0ZVJlZ05vbmVcIixcbiAgICBcIldyaXRlUmVnU3RyXCIsXG4gICAgXCJXcml0ZVVuaW5zdGFsbGVyXCIsXG4gICAgXCJYUFN0eWxlXCJcbiAgXTtcblxuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICBcImFkbWluXCIsXG4gICAgXCJhbGxcIixcbiAgICBcImF1dG9cIixcbiAgICBcImJvdGhcIixcbiAgICBcImJvdHRvbVwiLFxuICAgIFwiYnppcDJcIixcbiAgICBcImNvbG9yZWRcIixcbiAgICBcImNvbXBvbmVudHNcIixcbiAgICBcImN1cnJlbnRcIixcbiAgICBcImN1c3RvbVwiLFxuICAgIFwiZGlyZWN0b3J5XCIsXG4gICAgXCJmYWxzZVwiLFxuICAgIFwiZm9yY2VcIixcbiAgICBcImhpZGVcIixcbiAgICBcImhpZ2hlc3RcIixcbiAgICBcImlmZGlmZlwiLFxuICAgIFwiaWZuZXdlclwiLFxuICAgIFwiaW5zdGZpbGVzXCIsXG4gICAgXCJsYXN0dXNlZFwiLFxuICAgIFwibGVhdmVcIixcbiAgICBcImxlZnRcIixcbiAgICBcImxpY2Vuc2VcIixcbiAgICBcImxpc3Rvbmx5XCIsXG4gICAgXCJsem1hXCIsXG4gICAgXCJuZXZlcnNob3dcIixcbiAgICBcIm5vbmVcIixcbiAgICBcIm5vcm1hbFwiLFxuICAgIFwibm90c2V0XCIsXG4gICAgXCJvZmZcIixcbiAgICBcIm9uXCIsXG4gICAgXCJvcGVuXCIsXG4gICAgXCJwcmludFwiLFxuICAgIFwicmlnaHRcIixcbiAgICBcInNob3dcIixcbiAgICBcInNpbGVudFwiLFxuICAgIFwic2lsZW50bG9nXCIsXG4gICAgXCJzbW9vdGhcIixcbiAgICBcInRleHRvbmx5XCIsXG4gICAgXCJ0b3BcIixcbiAgICBcInRydWVcIixcbiAgICBcInRyeVwiLFxuICAgIFwidW4uY29tcG9uZW50c1wiLFxuICAgIFwidW4uY3VzdG9tXCIsXG4gICAgXCJ1bi5kaXJlY3RvcnlcIixcbiAgICBcInVuLmluc3RmaWxlc1wiLFxuICAgIFwidW4ubGljZW5zZVwiLFxuICAgIFwidW5pbnN0Q29uZmlybVwiLFxuICAgIFwidXNlclwiLFxuICAgIFwiV2luMTBcIixcbiAgICBcIldpbjdcIixcbiAgICBcIldpbjhcIixcbiAgICBcIldpblZpc3RhXCIsXG4gICAgXCJ6bGliXCJcbiAgXTtcblxuICBjb25zdCBGVU5DVElPTl9ERUZJTklUSU9OID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvRnVuY3Rpb24vLFxuICAgICAgL1xccysvLFxuICAgICAgcmVnZXguY29uY2F0KC8oXFwuKT8vLCBobGpzLklERU5UX1JFKVxuICAgIF0sXG4gICAgc2NvcGU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgfVxuICB9O1xuXG4gIC8vIFZhciBDdXN0b20uVmFyaWFibGUuTmFtZS5JdGVtXG4gIC8vIFZhciAvR0xPQkFMIEN1c3RvbS5WYXJpYWJsZS5OYW1lLkl0ZW1cbiAgY29uc3QgVkFSSUFCTEVfTkFNRV9SRSA9IC9bQS1aYS16XVtcXHcuXSovO1xuICBjb25zdCBWQVJJQUJMRV9ERUZJTklUSU9OID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvVmFyLyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIC8oPzpcXC9HTE9CQUxcXHMrKT8vLFxuICAgICAgVkFSSUFCTEVfTkFNRV9SRVxuICAgIF0sXG4gICAgc2NvcGU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJwYXJhbXNcIixcbiAgICAgIDQ6IFwidmFyaWFibGVcIlxuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdOU0lTJyxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICAgIGxpdGVyYWw6IExJVEVSQUxTXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICc7JyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7IHJlbGV2YW5jZTogMCB9XG4gICAgICApLFxuICAgICAgVkFSSUFCTEVfREVGSU5JVElPTixcbiAgICAgIEZVTkNUSU9OX0RFRklOSVRJT04sXG4gICAgICB7IGJlZ2luS2V5d29yZHM6ICdGdW5jdGlvbiBQYWdlRXggU2VjdGlvbiBTZWN0aW9uR3JvdXAgRnVuY3Rpb25FbmQgU2VjdGlvbkVuZCcsIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01QSUxFUixcbiAgICAgIERFRklORVMsXG4gICAgICBWQVJJQUJMRVMsXG4gICAgICBMQU5HVUFHRVMsXG4gICAgICBQQVJBTUVURVJTLFxuICAgICAgUExVR0lOUyxcbiAgICAgIGhsanMuTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbnNpcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2386\n')},2393:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar anchors = __webpack_require__(9357);\nvar identity = __webpack_require__(5900);\nvar stringifyComment = __webpack_require__(272);\nvar stringifyString = __webpack_require__(4356);\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n if (!tagObj)\n tagObj = getTagObject(ctx.doc.schema.tags, node);\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjM5My5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixjQUFjLG1CQUFPLENBQUMsSUFBbUI7QUFDekMsZUFBZSxtQkFBTyxDQUFDLElBQXNCO0FBQzdDLHVCQUF1QixtQkFBTyxDQUFDLEdBQXVCO0FBQ3RELHNCQUFzQixtQkFBTyxDQUFDLElBQXNCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxNQUFNO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLHlCQUF5QjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDZCQUE2QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsYUFBYSxPQUFPLEVBQUUsSUFBSTtBQUMxQixhQUFhLE1BQU0sSUFBSSxXQUFXLEVBQUUsSUFBSTtBQUN4Qzs7QUFFQSw4QkFBOEI7QUFDOUIsaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5LmpzPzgwNjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYW5jaG9ycyA9IHJlcXVpcmUoJy4uL2RvYy9hbmNob3JzLmpzJyk7XG52YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuLi9ub2Rlcy9pZGVudGl0eS5qcycpO1xudmFyIHN0cmluZ2lmeUNvbW1lbnQgPSByZXF1aXJlKCcuL3N0cmluZ2lmeUNvbW1lbnQuanMnKTtcbnZhciBzdHJpbmdpZnlTdHJpbmcgPSByZXF1aXJlKCcuL3N0cmluZ2lmeVN0cmluZy5qcycpO1xuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdpZnlDb250ZXh0KGRvYywgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBibG9ja1F1b3RlOiB0cnVlLFxuICAgICAgICBjb21tZW50U3RyaW5nOiBzdHJpbmdpZnlDb21tZW50LnN0cmluZ2lmeUNvbW1lbnQsXG4gICAgICAgIGRlZmF1bHRLZXlUeXBlOiBudWxsLFxuICAgICAgICBkZWZhdWx0U3RyaW5nVHlwZTogJ1BMQUlOJyxcbiAgICAgICAgZGlyZWN0aXZlczogbnVsbCxcbiAgICAgICAgZG91YmxlUXVvdGVkQXNKU09OOiBmYWxzZSxcbiAgICAgICAgZG91YmxlUXVvdGVkTWluTXVsdGlMaW5lTGVuZ3RoOiA0MCxcbiAgICAgICAgZmFsc2VTdHI6ICdmYWxzZScsXG4gICAgICAgIGZsb3dDb2xsZWN0aW9uUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgaW5kZW50U2VxOiB0cnVlLFxuICAgICAgICBsaW5lV2lkdGg6IDgwLFxuICAgICAgICBtaW5Db250ZW50V2lkdGg6IDIwLFxuICAgICAgICBudWxsU3RyOiAnbnVsbCcsXG4gICAgICAgIHNpbXBsZUtleXM6IGZhbHNlLFxuICAgICAgICBzaW5nbGVRdW90ZTogbnVsbCxcbiAgICAgICAgdHJ1ZVN0cjogJ3RydWUnLFxuICAgICAgICB2ZXJpZnlBbGlhc09yZGVyOiB0cnVlXG4gICAgfSwgZG9jLnNjaGVtYS50b1N0cmluZ09wdGlvbnMsIG9wdGlvbnMpO1xuICAgIGxldCBpbkZsb3c7XG4gICAgc3dpdGNoIChvcHQuY29sbGVjdGlvblN0eWxlKSB7XG4gICAgICAgIGNhc2UgJ2Jsb2NrJzpcbiAgICAgICAgICAgIGluRmxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Zsb3cnOlxuICAgICAgICAgICAgaW5GbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaW5GbG93ID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYW5jaG9yczogbmV3IFNldCgpLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZsb3dDb2xsZWN0aW9uUGFkZGluZzogb3B0LmZsb3dDb2xsZWN0aW9uUGFkZGluZyA/ICcgJyA6ICcnLFxuICAgICAgICBpbmRlbnQ6ICcnLFxuICAgICAgICBpbmRlbnRTdGVwOiB0eXBlb2Ygb3B0LmluZGVudCA9PT0gJ251bWJlcicgPyAnICcucmVwZWF0KG9wdC5pbmRlbnQpIDogJyAgJyxcbiAgICAgICAgaW5GbG93LFxuICAgICAgICBvcHRpb25zOiBvcHRcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0VGFnT2JqZWN0KHRhZ3MsIGl0ZW0pIHtcbiAgICBpZiAoaXRlbS50YWcpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0YWdzLmZpbHRlcih0ID0+IHQudGFnID09PSBpdGVtLnRhZyk7XG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoLmZpbmQodCA9PiB0LmZvcm1hdCA9PT0gaXRlbS5mb3JtYXQpID8/IG1hdGNoWzBdO1xuICAgIH1cbiAgICBsZXQgdGFnT2JqID0gdW5kZWZpbmVkO1xuICAgIGxldCBvYmo7XG4gICAgaWYgKGlkZW50aXR5LmlzU2NhbGFyKGl0ZW0pKSB7XG4gICAgICAgIG9iaiA9IGl0ZW0udmFsdWU7XG4gICAgICAgIGxldCBtYXRjaCA9IHRhZ3MuZmlsdGVyKHQgPT4gdC5pZGVudGlmeT8uKG9iaikpO1xuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgdGVzdE1hdGNoID0gbWF0Y2guZmlsdGVyKHQgPT4gdC50ZXN0KTtcbiAgICAgICAgICAgIGlmICh0ZXN0TWF0Y2gubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICBtYXRjaCA9IHRlc3RNYXRjaDtcbiAgICAgICAgfVxuICAgICAgICB0YWdPYmogPVxuICAgICAgICAgICAgbWF0Y2guZmluZCh0ID0+IHQuZm9ybWF0ID09PSBpdGVtLmZvcm1hdCkgPz8gbWF0Y2guZmluZCh0ID0+ICF0LmZvcm1hdCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBvYmogPSBpdGVtO1xuICAgICAgICB0YWdPYmogPSB0YWdzLmZpbmQodCA9PiB0Lm5vZGVDbGFzcyAmJiBvYmogaW5zdGFuY2VvZiB0Lm5vZGVDbGFzcyk7XG4gICAgfVxuICAgIGlmICghdGFnT2JqKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBvYmo/LmNvbnN0cnVjdG9yPy5uYW1lID8/IHR5cGVvZiBvYmo7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGFnIG5vdCByZXNvbHZlZCBmb3IgJHtuYW1lfSB2YWx1ZWApO1xuICAgIH1cbiAgICByZXR1cm4gdGFnT2JqO1xufVxuLy8gbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB2YWx1ZSBzdHJpbmdpZmllciB0byBhbGxvdyBmb3IgY2lyY3VsYXIgYW5jaG9yIHJlZnNcbmZ1bmN0aW9uIHN0cmluZ2lmeVByb3BzKG5vZGUsIHRhZ09iaiwgeyBhbmNob3JzOiBhbmNob3JzJDEsIGRvYyB9KSB7XG4gICAgaWYgKCFkb2MuZGlyZWN0aXZlcylcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIGNvbnN0IHByb3BzID0gW107XG4gICAgY29uc3QgYW5jaG9yID0gKGlkZW50aXR5LmlzU2NhbGFyKG5vZGUpIHx8IGlkZW50aXR5LmlzQ29sbGVjdGlvbihub2RlKSkgJiYgbm9kZS5hbmNob3I7XG4gICAgaWYgKGFuY2hvciAmJiBhbmNob3JzLmFuY2hvcklzVmFsaWQoYW5jaG9yKSkge1xuICAgICAgICBhbmNob3JzJDEuYWRkKGFuY2hvcik7XG4gICAgICAgIHByb3BzLnB1c2goYCYke2FuY2hvcn1gKTtcbiAgICB9XG4gICAgY29uc3QgdGFnID0gbm9kZS50YWcgPyBub2RlLnRhZyA6IHRhZ09iai5kZWZhdWx0ID8gbnVsbCA6IHRhZ09iai50YWc7XG4gICAgaWYgKHRhZylcbiAgICAgICAgcHJvcHMucHVzaChkb2MuZGlyZWN0aXZlcy50YWdTdHJpbmcodGFnKSk7XG4gICAgcmV0dXJuIHByb3BzLmpvaW4oJyAnKTtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeShpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICBpZiAoaWRlbnRpdHkuaXNQYWlyKGl0ZW0pKVxuICAgICAgICByZXR1cm4gaXRlbS50b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIGlmIChpZGVudGl0eS5pc0FsaWFzKGl0ZW0pKSB7XG4gICAgICAgIGlmIChjdHguZG9jLmRpcmVjdGl2ZXMpXG4gICAgICAgICAgICByZXR1cm4gaXRlbS50b1N0cmluZyhjdHgpO1xuICAgICAgICBpZiAoY3R4LnJlc29sdmVkQWxpYXNlcz8uaGFzKGl0ZW0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3Qgc3RyaW5naWZ5IGNpcmN1bGFyIHN0cnVjdHVyZSB3aXRob3V0IGFsaWFzIG5vZGVzYCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3R4LnJlc29sdmVkQWxpYXNlcylcbiAgICAgICAgICAgICAgICBjdHgucmVzb2x2ZWRBbGlhc2VzLmFkZChpdGVtKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjdHgucmVzb2x2ZWRBbGlhc2VzID0gbmV3IFNldChbaXRlbV0pO1xuICAgICAgICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZShjdHguZG9jKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgdGFnT2JqID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5vZGUgPSBpZGVudGl0eS5pc05vZGUoaXRlbSlcbiAgICAgICAgPyBpdGVtXG4gICAgICAgIDogY3R4LmRvYy5jcmVhdGVOb2RlKGl0ZW0sIHsgb25UYWdPYmo6IG8gPT4gKHRhZ09iaiA9IG8pIH0pO1xuICAgIGlmICghdGFnT2JqKVxuICAgICAgICB0YWdPYmogPSBnZXRUYWdPYmplY3QoY3R4LmRvYy5zY2hlbWEudGFncywgbm9kZSk7XG4gICAgY29uc3QgcHJvcHMgPSBzdHJpbmdpZnlQcm9wcyhub2RlLCB0YWdPYmosIGN0eCk7XG4gICAgaWYgKHByb3BzLmxlbmd0aCA+IDApXG4gICAgICAgIGN0eC5pbmRlbnRBdFN0YXJ0ID0gKGN0eC5pbmRlbnRBdFN0YXJ0ID8/IDApICsgcHJvcHMubGVuZ3RoICsgMTtcbiAgICBjb25zdCBzdHIgPSB0eXBlb2YgdGFnT2JqLnN0cmluZ2lmeSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHRhZ09iai5zdHJpbmdpZnkobm9kZSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKVxuICAgICAgICA6IGlkZW50aXR5LmlzU2NhbGFyKG5vZGUpXG4gICAgICAgICAgICA/IHN0cmluZ2lmeVN0cmluZy5zdHJpbmdpZnlTdHJpbmcobm9kZSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgOiBub2RlLnRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgaWYgKCFwcm9wcylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICByZXR1cm4gaWRlbnRpdHkuaXNTY2FsYXIobm9kZSkgfHwgc3RyWzBdID09PSAneycgfHwgc3RyWzBdID09PSAnWydcbiAgICAgICAgPyBgJHtwcm9wc30gJHtzdHJ9YFxuICAgICAgICA6IGAke3Byb3BzfVxcbiR7Y3R4LmluZGVudH0ke3N0cn1gO1xufVxuXG5leHBvcnRzLmNyZWF0ZVN0cmluZ2lmeUNvbnRleHQgPSBjcmVhdGVTdHJpbmdpZnlDb250ZXh0O1xuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2393\n")},2412:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQxMi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBZTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFlBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9ub2Rlcy90b0pTLmpzPzZiZjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5LmpzJyk7XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY29udmVydCBhbnkgbm9kZSBvciBpdHMgY29udGVudHMgdG8gbmF0aXZlIEphdmFTY3JpcHRcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5wdXQgdmFsdWVcbiAqIEBwYXJhbSBhcmcgLSBJZiBgdmFsdWVgIGRlZmluZXMgYSBgdG9KU09OKClgIG1ldGhvZCwgdXNlIHRoaXNcbiAqICAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50XG4gKiBAcGFyYW0gY3R4IC0gQ29udmVyc2lvbiBjb250ZXh0LCBvcmlnaW5hbGx5IHNldCBpbiBEb2N1bWVudCN0b0pTKCkuIElmXG4gKiAgIGB7IGtlZXA6IHRydWUgfWAgaXMgbm90IHNldCwgb3V0cHV0IHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgSlNPTlxuICogICBzdHJpbmdpZmljYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHRvSlModmFsdWUsIGFyZywgY3R4KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICByZXR1cm4gdmFsdWUubWFwKCh2LCBpKSA9PiB0b0pTKHYsIFN0cmluZyhpKSwgY3R4KSk7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgICAgICBpZiAoIWN0eCB8fCAhaWRlbnRpdHkuaGFzQW5jaG9yKHZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b0pTT04oYXJnLCBjdHgpO1xuICAgICAgICBjb25zdCBkYXRhID0geyBhbGlhc0NvdW50OiAwLCBjb3VudDogMSwgcmVzOiB1bmRlZmluZWQgfTtcbiAgICAgICAgY3R4LmFuY2hvcnMuc2V0KHZhbHVlLCBkYXRhKTtcbiAgICAgICAgY3R4Lm9uQ3JlYXRlID0gcmVzID0+IHtcbiAgICAgICAgICAgIGRhdGEucmVzID0gcmVzO1xuICAgICAgICAgICAgZGVsZXRlIGN0eC5vbkNyZWF0ZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gdmFsdWUudG9KU09OKGFyZywgY3R4KTtcbiAgICAgICAgaWYgKGN0eC5vbkNyZWF0ZSlcbiAgICAgICAgICAgIGN0eC5vbkNyZWF0ZShyZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyAmJiAhY3R4Py5rZWVwKVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydHMudG9KUyA9IHRvSlM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2412\n")},2463:module=>{eval('/*\nLanguage: Batch file (DOS)\nAuthor: Alexander Makarov \nContributors: Anton Kochkov \nWebsite: https://en.wikipedia.org/wiki/Batch_file\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction dos(hljs) {\n const COMMENT = hljs.COMMENT(\n /^\\s*@?rem\\b/, /$/,\n { relevance: 10 }\n );\n const LABEL = {\n className: \'symbol\',\n begin: \'^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)\',\n relevance: 0\n };\n const KEYWORDS = [\n "if",\n "else",\n "goto",\n "for",\n "in",\n "do",\n "call",\n "exit",\n "not",\n "exist",\n "errorlevel",\n "defined",\n "equ",\n "neq",\n "lss",\n "leq",\n "gtr",\n "geq"\n ];\n const BUILT_INS = [\n "prn",\n "nul",\n "lpt3",\n "lpt2",\n "lpt1",\n "con",\n "com4",\n "com3",\n "com2",\n "com1",\n "aux",\n "shift",\n "cd",\n "dir",\n "echo",\n "setlocal",\n "endlocal",\n "set",\n "pause",\n "copy",\n "append",\n "assoc",\n "at",\n "attrib",\n "break",\n "cacls",\n "cd",\n "chcp",\n "chdir",\n "chkdsk",\n "chkntfs",\n "cls",\n "cmd",\n "color",\n "comp",\n "compact",\n "convert",\n "date",\n "dir",\n "diskcomp",\n "diskcopy",\n "doskey",\n "erase",\n "fs",\n "find",\n "findstr",\n "format",\n "ftype",\n "graftabl",\n "help",\n "keyb",\n "label",\n "md",\n "mkdir",\n "mode",\n "more",\n "move",\n "path",\n "pause",\n "print",\n "popd",\n "pushd",\n "promt",\n "rd",\n "recover",\n "rem",\n "rename",\n "replace",\n "restore",\n "rmdir",\n "shift",\n "sort",\n "start",\n "subst",\n "time",\n "title",\n "tree",\n "type",\n "ver",\n "verify",\n "vol",\n // winutils\n "ping",\n "net",\n "ipconfig",\n "taskkill",\n "xcopy",\n "ren",\n "del"\n ];\n return {\n name: \'Batch file (DOS)\',\n aliases: [\n \'bat\',\n \'cmd\'\n ],\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_INS\n },\n contains: [\n {\n className: \'variable\',\n begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n },\n {\n className: \'function\',\n begin: LABEL.begin,\n end: \'goto:eof\',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: \'([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*\' }),\n COMMENT\n ]\n },\n {\n className: \'number\',\n begin: \'\\\\b\\\\d+\',\n relevance: 0\n },\n COMMENT\n ]\n };\n}\n\nmodule.exports = dos;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ2My5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsNERBQTREO0FBQ3RHO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2Rvcy5qcz8xNjc4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogQmF0Y2ggZmlsZSAoRE9TKVxuQXV0aG9yOiBBbGV4YW5kZXIgTWFrYXJvdiA8c2FtQHJtY3JlYXRpdmUucnU+XG5Db250cmlidXRvcnM6IEFudG9uIEtvY2hrb3YgPGFudG9uLmtvY2hrb3ZAZ21haWwuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmF0Y2hfZmlsZVxuQ2F0ZWdvcnk6IHNjcmlwdGluZ1xuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGRvcyhobGpzKSB7XG4gIGNvbnN0IENPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgL15cXHMqQD9yZW1cXGIvLCAvJC8sXG4gICAgeyByZWxldmFuY2U6IDEwIH1cbiAgKTtcbiAgY29uc3QgTEFCRUwgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3ltYm9sJyxcbiAgICBiZWdpbjogJ15cXFxccypbQS1aYS16Ll8/XVtBLVphLXowLTlfJCNAfi4/XSooOnxcXFxccytsYWJlbCknLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICBcImlmXCIsXG4gICAgXCJlbHNlXCIsXG4gICAgXCJnb3RvXCIsXG4gICAgXCJmb3JcIixcbiAgICBcImluXCIsXG4gICAgXCJkb1wiLFxuICAgIFwiY2FsbFwiLFxuICAgIFwiZXhpdFwiLFxuICAgIFwibm90XCIsXG4gICAgXCJleGlzdFwiLFxuICAgIFwiZXJyb3JsZXZlbFwiLFxuICAgIFwiZGVmaW5lZFwiLFxuICAgIFwiZXF1XCIsXG4gICAgXCJuZXFcIixcbiAgICBcImxzc1wiLFxuICAgIFwibGVxXCIsXG4gICAgXCJndHJcIixcbiAgICBcImdlcVwiXG4gIF07XG4gIGNvbnN0IEJVSUxUX0lOUyA9IFtcbiAgICBcInByblwiLFxuICAgIFwibnVsXCIsXG4gICAgXCJscHQzXCIsXG4gICAgXCJscHQyXCIsXG4gICAgXCJscHQxXCIsXG4gICAgXCJjb25cIixcbiAgICBcImNvbTRcIixcbiAgICBcImNvbTNcIixcbiAgICBcImNvbTJcIixcbiAgICBcImNvbTFcIixcbiAgICBcImF1eFwiLFxuICAgIFwic2hpZnRcIixcbiAgICBcImNkXCIsXG4gICAgXCJkaXJcIixcbiAgICBcImVjaG9cIixcbiAgICBcInNldGxvY2FsXCIsXG4gICAgXCJlbmRsb2NhbFwiLFxuICAgIFwic2V0XCIsXG4gICAgXCJwYXVzZVwiLFxuICAgIFwiY29weVwiLFxuICAgIFwiYXBwZW5kXCIsXG4gICAgXCJhc3NvY1wiLFxuICAgIFwiYXRcIixcbiAgICBcImF0dHJpYlwiLFxuICAgIFwiYnJlYWtcIixcbiAgICBcImNhY2xzXCIsXG4gICAgXCJjZFwiLFxuICAgIFwiY2hjcFwiLFxuICAgIFwiY2hkaXJcIixcbiAgICBcImNoa2Rza1wiLFxuICAgIFwiY2hrbnRmc1wiLFxuICAgIFwiY2xzXCIsXG4gICAgXCJjbWRcIixcbiAgICBcImNvbG9yXCIsXG4gICAgXCJjb21wXCIsXG4gICAgXCJjb21wYWN0XCIsXG4gICAgXCJjb252ZXJ0XCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJkaXJcIixcbiAgICBcImRpc2tjb21wXCIsXG4gICAgXCJkaXNrY29weVwiLFxuICAgIFwiZG9za2V5XCIsXG4gICAgXCJlcmFzZVwiLFxuICAgIFwiZnNcIixcbiAgICBcImZpbmRcIixcbiAgICBcImZpbmRzdHJcIixcbiAgICBcImZvcm1hdFwiLFxuICAgIFwiZnR5cGVcIixcbiAgICBcImdyYWZ0YWJsXCIsXG4gICAgXCJoZWxwXCIsXG4gICAgXCJrZXliXCIsXG4gICAgXCJsYWJlbFwiLFxuICAgIFwibWRcIixcbiAgICBcIm1rZGlyXCIsXG4gICAgXCJtb2RlXCIsXG4gICAgXCJtb3JlXCIsXG4gICAgXCJtb3ZlXCIsXG4gICAgXCJwYXRoXCIsXG4gICAgXCJwYXVzZVwiLFxuICAgIFwicHJpbnRcIixcbiAgICBcInBvcGRcIixcbiAgICBcInB1c2hkXCIsXG4gICAgXCJwcm9tdFwiLFxuICAgIFwicmRcIixcbiAgICBcInJlY292ZXJcIixcbiAgICBcInJlbVwiLFxuICAgIFwicmVuYW1lXCIsXG4gICAgXCJyZXBsYWNlXCIsXG4gICAgXCJyZXN0b3JlXCIsXG4gICAgXCJybWRpclwiLFxuICAgIFwic2hpZnRcIixcbiAgICBcInNvcnRcIixcbiAgICBcInN0YXJ0XCIsXG4gICAgXCJzdWJzdFwiLFxuICAgIFwidGltZVwiLFxuICAgIFwidGl0bGVcIixcbiAgICBcInRyZWVcIixcbiAgICBcInR5cGVcIixcbiAgICBcInZlclwiLFxuICAgIFwidmVyaWZ5XCIsXG4gICAgXCJ2b2xcIixcbiAgICAvLyB3aW51dGlsc1xuICAgIFwicGluZ1wiLFxuICAgIFwibmV0XCIsXG4gICAgXCJpcGNvbmZpZ1wiLFxuICAgIFwidGFza2tpbGxcIixcbiAgICBcInhjb3B5XCIsXG4gICAgXCJyZW5cIixcbiAgICBcImRlbFwiXG4gIF07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0JhdGNoIGZpbGUgKERPUyknLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdiYXQnLFxuICAgICAgJ2NtZCdcbiAgICBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgYnVpbHRfaW46IEJVSUxUX0lOU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICBiZWdpbjogLyUlW14gXXwlW14gXSs/JXwhW14gXSs/IS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46IExBQkVMLmJlZ2luLFxuICAgICAgICBlbmQ6ICdnb3RvOmVvZicsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwgeyBiZWdpbjogJyhbX2EtekEtWl1cXFxcdypcXFxcLikqKFtfYS16QS1aXVxcXFx3KjopP1tfYS16QS1aXVxcXFx3KicgfSksXG4gICAgICAgICAgQ09NTUVOVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJ1xcXFxiXFxcXGQrJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgQ09NTUVOVFxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2463\n')},2485:module=>{eval("/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev \nContributors: Joël Porquet \nWebsite: https://www.gnu.org/software/make/manual/html_node/Introduction.html\nCategory: common, build-system\n*/\n\nfunction makefile(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n { begin: /\\$[@%{"use strict";eval("\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ4OS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7O0FBR2I7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZ0RBQWdELGdCQUFnQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLGtCQUFrQixlQUFlO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOzs7QUFHQSx3QkFBd0I7QUFDeEIsdUJBQXVCO0FBQ3ZCLHNCQUFzQjtBQUN0QixxQkFBcUI7QUFDckIsNkJBQTZCO0FBQzdCLHFCQUFxQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9qcy15YW1sQDMuMTQuMS9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9jb21tb24uanM/NzYxYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cblxuZnVuY3Rpb24gaXNOb3RoaW5nKHN1YmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3ViamVjdCA9PT0gJ3VuZGVmaW5lZCcpIHx8IChzdWJqZWN0ID09PSBudWxsKTtcbn1cblxuXG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICdvYmplY3QnKSAmJiAoc3ViamVjdCAhPT0gbnVsbCk7XG59XG5cblxuZnVuY3Rpb24gdG9BcnJheShzZXF1ZW5jZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShzZXF1ZW5jZSkpIHJldHVybiBzZXF1ZW5jZTtcbiAgZWxzZSBpZiAoaXNOb3RoaW5nKHNlcXVlbmNlKSkgcmV0dXJuIFtdO1xuXG4gIHJldHVybiBbIHNlcXVlbmNlIF07XG59XG5cblxuZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBpbmRleCwgbGVuZ3RoLCBrZXksIHNvdXJjZUtleXM7XG5cbiAgaWYgKHNvdXJjZSkge1xuICAgIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHNvdXJjZUtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAga2V5ID0gc291cmNlS2V5c1tpbmRleF07XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cblxuZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgY291bnQpIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBjeWNsZTtcblxuICBmb3IgKGN5Y2xlID0gMDsgY3ljbGUgPCBjb3VudDsgY3ljbGUgKz0gMSkge1xuICAgIHJlc3VsdCArPSBzdHJpbmc7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmVaZXJvKG51bWJlcikge1xuICByZXR1cm4gKG51bWJlciA9PT0gMCkgJiYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gMSAvIG51bWJlcik7XG59XG5cblxubW9kdWxlLmV4cG9ydHMuaXNOb3RoaW5nICAgICAgPSBpc05vdGhpbmc7XG5tb2R1bGUuZXhwb3J0cy5pc09iamVjdCAgICAgICA9IGlzT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMudG9BcnJheSAgICAgICAgPSB0b0FycmF5O1xubW9kdWxlLmV4cG9ydHMucmVwZWF0ICAgICAgICAgPSByZXBlYXQ7XG5tb2R1bGUuZXhwb3J0cy5pc05lZ2F0aXZlWmVybyA9IGlzTmVnYXRpdmVaZXJvO1xubW9kdWxlLmV4cG9ydHMuZXh0ZW5kICAgICAgICAgPSBleHRlbmQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2489\n")},2500:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar YAMLException = __webpack_require__(5447);\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUwMC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixvQkFBb0IsbUJBQU8sQ0FBQyxJQUFhOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9ELG1FQUFtRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzLXlhbWxAMy4xNC4xL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUuanM/YjhiNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBZQU1MRXhjZXB0aW9uID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTtcblxudmFyIFRZUEVfQ09OU1RSVUNUT1JfT1BUSU9OUyA9IFtcbiAgJ2tpbmQnLFxuICAncmVzb2x2ZScsXG4gICdjb25zdHJ1Y3QnLFxuICAnaW5zdGFuY2VPZicsXG4gICdwcmVkaWNhdGUnLFxuICAncmVwcmVzZW50JyxcbiAgJ2RlZmF1bHRTdHlsZScsXG4gICdzdHlsZUFsaWFzZXMnXG5dO1xuXG52YXIgWUFNTF9OT0RFX0tJTkRTID0gW1xuICAnc2NhbGFyJyxcbiAgJ3NlcXVlbmNlJyxcbiAgJ21hcHBpbmcnXG5dO1xuXG5mdW5jdGlvbiBjb21waWxlU3R5bGVBbGlhc2VzKG1hcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG5cbiAgaWYgKG1hcCAhPT0gbnVsbCkge1xuICAgIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGUpIHtcbiAgICAgIG1hcFtzdHlsZV0uZm9yRWFjaChmdW5jdGlvbiAoYWxpYXMpIHtcbiAgICAgICAgcmVzdWx0W1N0cmluZyhhbGlhcyldID0gc3R5bGU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFR5cGUodGFnLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAoVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVW5rbm93biBvcHRpb24gXCInICsgbmFtZSArICdcIiBpcyBtZXQgaW4gZGVmaW5pdGlvbiBvZiBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVE9ETzogQWRkIHRhZyBmb3JtYXQgY2hlY2suXG4gIHRoaXMudGFnICAgICAgICAgID0gdGFnO1xuICB0aGlzLmtpbmQgICAgICAgICA9IG9wdGlvbnNbJ2tpbmQnXSAgICAgICAgIHx8IG51bGw7XG4gIHRoaXMucmVzb2x2ZSAgICAgID0gb3B0aW9uc1sncmVzb2x2ZSddICAgICAgfHwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTtcbiAgdGhpcy5jb25zdHJ1Y3QgICAgPSBvcHRpb25zWydjb25zdHJ1Y3QnXSAgICB8fCBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YTsgfTtcbiAgdGhpcy5pbnN0YW5jZU9mICAgPSBvcHRpb25zWydpbnN0YW5jZU9mJ10gICB8fCBudWxsO1xuICB0aGlzLnByZWRpY2F0ZSAgICA9IG9wdGlvbnNbJ3ByZWRpY2F0ZSddICAgIHx8IG51bGw7XG4gIHRoaXMucmVwcmVzZW50ICAgID0gb3B0aW9uc1sncmVwcmVzZW50J10gICAgfHwgbnVsbDtcbiAgdGhpcy5kZWZhdWx0U3R5bGUgPSBvcHRpb25zWydkZWZhdWx0U3R5bGUnXSB8fCBudWxsO1xuICB0aGlzLnN0eWxlQWxpYXNlcyA9IGNvbXBpbGVTdHlsZUFsaWFzZXMob3B0aW9uc1snc3R5bGVBbGlhc2VzJ10gfHwgbnVsbCk7XG5cbiAgaWYgKFlBTUxfTk9ERV9LSU5EUy5pbmRleE9mKHRoaXMua2luZCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1Vua25vd24ga2luZCBcIicgKyB0aGlzLmtpbmQgKyAnXCIgaXMgc3BlY2lmaWVkIGZvciBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVHlwZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2500\n")},2506:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar applyReviver = __webpack_require__(9154);\nvar identity = __webpack_require__(5900);\nvar toJS = __webpack_require__(2412);\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUwNi5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixtQkFBbUIsbUJBQU8sQ0FBQyxJQUF3QjtBQUNuRCxlQUFlLG1CQUFPLENBQUMsSUFBZTtBQUN0QyxXQUFXLG1CQUFPLENBQUMsSUFBVzs7QUFFOUI7QUFDQTtBQUNBLDBEQUEwRCxhQUFhO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw2Q0FBNkMsSUFBSTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsYUFBYTtBQUN0QztBQUNBO0FBQ0EsbURBQW1ELFNBQVM7QUFDNUQ7QUFDQTtBQUNBOztBQUVBLGdCQUFnQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3Qvbm9kZXMvTm9kZS5qcz82Y2I3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGFwcGx5UmV2aXZlciA9IHJlcXVpcmUoJy4uL2RvYy9hcHBseVJldml2ZXIuanMnKTtcbnZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHkuanMnKTtcbnZhciB0b0pTID0gcmVxdWlyZSgnLi90b0pTLmpzJyk7XG5cbmNsYXNzIE5vZGVCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBpZGVudGl0eS5OT0RFX1RZUEUsIHsgdmFsdWU6IHR5cGUgfSk7XG4gICAgfVxuICAgIC8qKiBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgbm9kZS4gICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIGNvcHkucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgICAvKiogQSBwbGFpbiBKYXZhU2NyaXB0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbm9kZS4gKi9cbiAgICB0b0pTKGRvYywgeyBtYXBBc01hcCwgbWF4QWxpYXNDb3VudCwgb25BbmNob3IsIHJldml2ZXIgfSA9IHt9KSB7XG4gICAgICAgIGlmICghaWRlbnRpdHkuaXNEb2N1bWVudChkb2MpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBkb2N1bWVudCBhcmd1bWVudCBpcyByZXF1aXJlZCcpO1xuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICBhbmNob3JzOiBuZXcgTWFwKCksXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICBrZWVwOiB0cnVlLFxuICAgICAgICAgICAgbWFwQXNNYXA6IG1hcEFzTWFwID09PSB0cnVlLFxuICAgICAgICAgICAgbWFwS2V5V2FybmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1heEFsaWFzQ291bnQ6IHR5cGVvZiBtYXhBbGlhc0NvdW50ID09PSAnbnVtYmVyJyA/IG1heEFsaWFzQ291bnQgOiAxMDBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gdG9KUy50b0pTKHRoaXMsICcnLCBjdHgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uQW5jaG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvdW50LCByZXMgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBvbkFuY2hvcihyZXMsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGFwcGx5UmV2aXZlci5hcHBseVJldml2ZXIocmV2aXZlciwgeyAnJzogcmVzIH0sICcnLCByZXMpXG4gICAgICAgICAgICA6IHJlcztcbiAgICB9XG59XG5cbmV4cG9ydHMuTm9kZUJhc2UgPSBOb2RlQmFzZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2506\n")},2546:(__unused_webpack_module,exports)=>{"use strict";eval("\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU0Ni5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELDBFQUEwRSxJQUFJO0FBQ3BJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE9BQU8sRUFBRSxtQkFBbUI7QUFDbkQ7QUFDQTtBQUNBLDBCQUEwQixXQUFXO0FBQ3JDLHdCQUF3QixPQUFPLEVBQUUsMEJBQTBCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjtBQUNsQixpQkFBaUI7QUFDakIsbUJBQW1CO0FBQ25CLHFCQUFxQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3Qvc3RyaW5naWZ5L2ZvbGRGbG93TGluZXMuanM/YmUzNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEZPTERfRkxPVyA9ICdmbG93JztcbmNvbnN0IEZPTERfQkxPQ0sgPSAnYmxvY2snO1xuY29uc3QgRk9MRF9RVU9URUQgPSAncXVvdGVkJztcbi8qKlxuICogVHJpZXMgdG8ga2VlcCBpbnB1dCBhdCB1cCB0byBgbGluZVdpZHRoYCBjaGFyYWN0ZXJzLCBzcGxpdHRpbmcgb25seSBvbiBzcGFjZXNcbiAqIG5vdCBmb2xsb3dlZCBieSBuZXdsaW5lcyBvciBzcGFjZXMgdW5sZXNzIGBtb2RlYCBpcyBgJ3F1b3RlZCdgLiBMaW5lcyBhcmVcbiAqIHRlcm1pbmF0ZWQgd2l0aCBgXFxuYCBhbmQgc3RhcnRlZCB3aXRoIGBpbmRlbnRgLlxuICovXG5mdW5jdGlvbiBmb2xkRmxvd0xpbmVzKHRleHQsIGluZGVudCwgbW9kZSA9ICdmbG93JywgeyBpbmRlbnRBdFN0YXJ0LCBsaW5lV2lkdGggPSA4MCwgbWluQ29udGVudFdpZHRoID0gMjAsIG9uRm9sZCwgb25PdmVyZmxvdyB9ID0ge30pIHtcbiAgICBpZiAoIWxpbmVXaWR0aCB8fCBsaW5lV2lkdGggPCAwKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICBpZiAobGluZVdpZHRoIDwgbWluQ29udGVudFdpZHRoKVxuICAgICAgICBtaW5Db250ZW50V2lkdGggPSAwO1xuICAgIGNvbnN0IGVuZFN0ZXAgPSBNYXRoLm1heCgxICsgbWluQ29udGVudFdpZHRoLCAxICsgbGluZVdpZHRoIC0gaW5kZW50Lmxlbmd0aCk7XG4gICAgaWYgKHRleHQubGVuZ3RoIDw9IGVuZFN0ZXApXG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIGNvbnN0IGZvbGRzID0gW107XG4gICAgY29uc3QgZXNjYXBlZEZvbGRzID0ge307XG4gICAgbGV0IGVuZCA9IGxpbmVXaWR0aCAtIGluZGVudC5sZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBpbmRlbnRBdFN0YXJ0ID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoaW5kZW50QXRTdGFydCA+IGxpbmVXaWR0aCAtIE1hdGgubWF4KDIsIG1pbkNvbnRlbnRXaWR0aCkpXG4gICAgICAgICAgICBmb2xkcy5wdXNoKDApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBlbmQgPSBsaW5lV2lkdGggLSBpbmRlbnRBdFN0YXJ0O1xuICAgIH1cbiAgICBsZXQgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IHByZXYgPSB1bmRlZmluZWQ7XG4gICAgbGV0IG92ZXJmbG93ID0gZmFsc2U7XG4gICAgbGV0IGkgPSAtMTtcbiAgICBsZXQgZXNjU3RhcnQgPSAtMTtcbiAgICBsZXQgZXNjRW5kID0gLTE7XG4gICAgaWYgKG1vZGUgPT09IEZPTERfQkxPQ0spIHtcbiAgICAgICAgaSA9IGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyh0ZXh0LCBpLCBpbmRlbnQubGVuZ3RoKTtcbiAgICAgICAgaWYgKGkgIT09IC0xKVxuICAgICAgICAgICAgZW5kID0gaSArIGVuZFN0ZXA7XG4gICAgfVxuICAgIGZvciAobGV0IGNoOyAoY2ggPSB0ZXh0WyhpICs9IDEpXSk7KSB7XG4gICAgICAgIGlmIChtb2RlID09PSBGT0xEX1FVT1RFRCAmJiBjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBlc2NTdGFydCA9IGk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRbaSArIDFdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndSc6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gNTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnVSc6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gOTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXNjRW5kID0gaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2ggPT09ICdcXG4nKSB7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9CTE9DSylcbiAgICAgICAgICAgICAgICBpID0gY29uc3VtZU1vcmVJbmRlbnRlZExpbmVzKHRleHQsIGksIGluZGVudC5sZW5ndGgpO1xuICAgICAgICAgICAgZW5kID0gaSArIGluZGVudC5sZW5ndGggKyBlbmRTdGVwO1xuICAgICAgICAgICAgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcgJyAmJlxuICAgICAgICAgICAgICAgIHByZXYgJiZcbiAgICAgICAgICAgICAgICBwcmV2ICE9PSAnICcgJiZcbiAgICAgICAgICAgICAgICBwcmV2ICE9PSAnXFxuJyAmJlxuICAgICAgICAgICAgICAgIHByZXYgIT09ICdcXHQnKSB7XG4gICAgICAgICAgICAgICAgLy8gc3BhY2Ugc3Vycm91bmRlZCBieSBub24tc3BhY2UgY2FuIGJlIHJlcGxhY2VkIHdpdGggbmV3bGluZSArIGluZGVudFxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0ZXh0W2kgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0ICE9PSAnICcgJiYgbmV4dCAhPT0gJ1xcbicgJiYgbmV4dCAhPT0gJ1xcdCcpXG4gICAgICAgICAgICAgICAgICAgIHNwbGl0ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpID49IGVuZCkge1xuICAgICAgICAgICAgICAgIGlmIChzcGxpdCkge1xuICAgICAgICAgICAgICAgICAgICBmb2xkcy5wdXNoKHNwbGl0KTtcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gc3BsaXQgKyBlbmRTdGVwO1xuICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hpdGUtc3BhY2UgY29sbGVjdGVkIGF0IGVuZCBtYXkgc3RyZXRjaCBwYXN0IGxpbmVXaWR0aFxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocHJldiA9PT0gJyAnIHx8IHByZXYgPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHRleHRbKGkgKz0gMSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEFjY291bnQgZm9yIG5ld2xpbmUgZXNjYXBlLCBidXQgZG9uJ3QgYnJlYWsgcHJlY2VkaW5nIGVzY2FwZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqID0gaSA+IGVzY0VuZCArIDEgPyBpIC0gMiA6IGVzY1N0YXJ0IC0gMTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgbGluZVdpZHRoICYgbWluQ29udGVudFdpZHRoIGFyZSBzaG9ydGVyIHRoYW4gYW4gZXNjYXBlIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZEZvbGRzW2pdKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGZvbGRzLnB1c2goaik7XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZWRGb2xkc1tqXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVuZCA9IGogKyBlbmRTdGVwO1xuICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJldiA9IGNoO1xuICAgIH1cbiAgICBpZiAob3ZlcmZsb3cgJiYgb25PdmVyZmxvdylcbiAgICAgICAgb25PdmVyZmxvdygpO1xuICAgIGlmIChmb2xkcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIGlmIChvbkZvbGQpXG4gICAgICAgIG9uRm9sZCgpO1xuICAgIGxldCByZXMgPSB0ZXh0LnNsaWNlKDAsIGZvbGRzWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbGRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGZvbGQgPSBmb2xkc1tpXTtcbiAgICAgICAgY29uc3QgZW5kID0gZm9sZHNbaSArIDFdIHx8IHRleHQubGVuZ3RoO1xuICAgICAgICBpZiAoZm9sZCA9PT0gMClcbiAgICAgICAgICAgIHJlcyA9IGBcXG4ke2luZGVudH0ke3RleHQuc2xpY2UoMCwgZW5kKX1gO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChtb2RlID09PSBGT0xEX1FVT1RFRCAmJiBlc2NhcGVkRm9sZHNbZm9sZF0pXG4gICAgICAgICAgICAgICAgcmVzICs9IGAke3RleHRbZm9sZF19XFxcXGA7XG4gICAgICAgICAgICByZXMgKz0gYFxcbiR7aW5kZW50fSR7dGV4dC5zbGljZShmb2xkICsgMSwgZW5kKX1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG4vKipcbiAqIFByZXN1bWVzIGBpICsgMWAgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZVxuICogQHJldHVybnMgaW5kZXggb2YgbGFzdCBuZXdsaW5lIGluIG1vcmUtaW5kZW50ZWQgYmxvY2tcbiAqL1xuZnVuY3Rpb24gY29uc3VtZU1vcmVJbmRlbnRlZExpbmVzKHRleHQsIGksIGluZGVudCkge1xuICAgIGxldCBlbmQgPSBpO1xuICAgIGxldCBzdGFydCA9IGkgKyAxO1xuICAgIGxldCBjaCA9IHRleHRbc3RhcnRdO1xuICAgIHdoaWxlIChjaCA9PT0gJyAnIHx8IGNoID09PSAnXFx0Jykge1xuICAgICAgICBpZiAoaSA8IHN0YXJ0ICsgaW5kZW50KSB7XG4gICAgICAgICAgICBjaCA9IHRleHRbKytpXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBjaCA9IHRleHRbKytpXTtcbiAgICAgICAgICAgIH0gd2hpbGUgKGNoICYmIGNoICE9PSAnXFxuJyk7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgIGNoID0gdGV4dFtzdGFydF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVuZDtcbn1cblxuZXhwb3J0cy5GT0xEX0JMT0NLID0gRk9MRF9CTE9DSztcbmV4cG9ydHMuRk9MRF9GTE9XID0gRk9MRF9GTE9XO1xuZXhwb3J0cy5GT0xEX1FVT1RFRCA9IEZPTERfUVVPVEVEO1xuZXhwb3J0cy5mb2xkRmxvd0xpbmVzID0gZm9sZEZsb3dMaW5lcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2546\n")},2555:module=>{eval("/*\nLanguage: Vala\nAuthor: Antono Vasiljev \nDescription: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.\nWebsite: https://wiki.gnome.org/Projects/Vala\nCategory: system\n*/\n\nfunction vala(hljs) {\n return {\n name: 'Vala',\n keywords: {\n keyword:\n // Value types\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 '\n + 'uint16 uint32 uint64 float double bool struct enum string void '\n // Reference types\n + 'weak unowned owned '\n // Modifiers\n + 'async signal static abstract interface override virtual delegate '\n // Control Structures\n + 'if while do for foreach else switch case break default return try catch '\n // Visibility\n + 'public private protected internal '\n // Other\n + 'using new this get set const stdout stdin stderr var',\n built_in:\n 'DBus GLib CCode Gee Object Gtk Posix',\n literal:\n 'false true null'\n },\n contains: [\n {\n className: 'class',\n beginKeywords: 'class interface namespace',\n end: /\\{/,\n excludeEnd: true,\n illegal: '[^,:\\\\n\\\\s\\\\.]',\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 5\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '^#',\n end: '$',\n }\n ]\n };\n}\n\nmodule.exports = vala;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjU1NS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvdmFsYS5qcz85OTRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogVmFsYVxuQXV0aG9yOiBBbnRvbm8gVmFzaWxqZXYgPGFudG9uby52YXNpbGpldkBnbWFpbC5jb20+XG5EZXNjcmlwdGlvbjogVmFsYSBpcyBhIG5ldyBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IGFpbXMgdG8gYnJpbmcgbW9kZXJuIHByb2dyYW1taW5nIGxhbmd1YWdlIGZlYXR1cmVzIHRvIEdOT01FIGRldmVsb3BlcnMgd2l0aG91dCBpbXBvc2luZyBhbnkgYWRkaXRpb25hbCBydW50aW1lIHJlcXVpcmVtZW50cyBhbmQgd2l0aG91dCB1c2luZyBhIGRpZmZlcmVudCBBQkkgY29tcGFyZWQgdG8gYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMgd3JpdHRlbiBpbiBDLlxuV2Vic2l0ZTogaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9WYWxhXG5DYXRlZ29yeTogc3lzdGVtXG4qL1xuXG5mdW5jdGlvbiB2YWxhKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnVmFsYScsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIFZhbHVlIHR5cGVzXG4gICAgICAgICdjaGFyIHVjaGFyIHVuaWNoYXIgaW50IHVpbnQgbG9uZyB1bG9uZyBzaG9ydCB1c2hvcnQgaW50OCBpbnQxNiBpbnQzMiBpbnQ2NCB1aW50OCAnXG4gICAgICAgICsgJ3VpbnQxNiB1aW50MzIgdWludDY0IGZsb2F0IGRvdWJsZSBib29sIHN0cnVjdCBlbnVtIHN0cmluZyB2b2lkICdcbiAgICAgICAgLy8gUmVmZXJlbmNlIHR5cGVzXG4gICAgICAgICsgJ3dlYWsgdW5vd25lZCBvd25lZCAnXG4gICAgICAgIC8vIE1vZGlmaWVyc1xuICAgICAgICArICdhc3luYyBzaWduYWwgc3RhdGljIGFic3RyYWN0IGludGVyZmFjZSBvdmVycmlkZSB2aXJ0dWFsIGRlbGVnYXRlICdcbiAgICAgICAgLy8gQ29udHJvbCBTdHJ1Y3R1cmVzXG4gICAgICAgICsgJ2lmIHdoaWxlIGRvIGZvciBmb3JlYWNoIGVsc2Ugc3dpdGNoIGNhc2UgYnJlYWsgZGVmYXVsdCByZXR1cm4gdHJ5IGNhdGNoICdcbiAgICAgICAgLy8gVmlzaWJpbGl0eVxuICAgICAgICArICdwdWJsaWMgcHJpdmF0ZSBwcm90ZWN0ZWQgaW50ZXJuYWwgJ1xuICAgICAgICAvLyBPdGhlclxuICAgICAgICArICd1c2luZyBuZXcgdGhpcyBnZXQgc2V0IGNvbnN0IHN0ZG91dCBzdGRpbiBzdGRlcnIgdmFyJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAnREJ1cyBHTGliIENDb2RlIEdlZSBPYmplY3QgR3RrIFBvc2l4JyxcbiAgICAgIGxpdGVyYWw6XG4gICAgICAgICdmYWxzZSB0cnVlIG51bGwnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UgbmFtZXNwYWNlJyxcbiAgICAgICAgZW5kOiAvXFx7LyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgaWxsZWdhbDogJ1teLDpcXFxcblxcXFxzXFxcXC5dJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiJyxcbiAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnXiMnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsYTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2555\n")},2665:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\nvar visit = __webpack_require__(9885);\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY2NS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBc0I7QUFDN0MsWUFBWSxtQkFBTyxDQUFDLElBQWE7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sTUFBTTtBQUNOO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQyxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELFFBQVE7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsS0FBSztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0Esd0NBQXdDLE9BQU87QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCxRQUFRO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsUUFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLDBDQUEwQyxPQUFPO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsSUFBSTtBQUMvQztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkJBQTJCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxRQUFRLEVBQUUsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQiwyQkFBMkI7O0FBRTNCLGtCQUFrQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3QvZG9jL2RpcmVjdGl2ZXMuanM/ZjVkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4uL25vZGVzL2lkZW50aXR5LmpzJyk7XG52YXIgdmlzaXQgPSByZXF1aXJlKCcuLi92aXNpdC5qcycpO1xuXG5jb25zdCBlc2NhcGVDaGFycyA9IHtcbiAgICAnISc6ICclMjEnLFxuICAgICcsJzogJyUyQycsXG4gICAgJ1snOiAnJTVCJyxcbiAgICAnXSc6ICclNUQnLFxuICAgICd7JzogJyU3QicsXG4gICAgJ30nOiAnJTdEJ1xufTtcbmNvbnN0IGVzY2FwZVRhZ05hbWUgPSAodG4pID0+IHRuLnJlcGxhY2UoL1shLFtcXF17fV0vZywgY2ggPT4gZXNjYXBlQ2hhcnNbY2hdKTtcbmNsYXNzIERpcmVjdGl2ZXMge1xuICAgIGNvbnN0cnVjdG9yKHlhbWwsIHRhZ3MpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBkaXJlY3RpdmVzLWVuZC9kb2Mtc3RhcnQgbWFya2VyIGAtLS1gLiBJZiBgbnVsbGAsIGEgbWFya2VyIG1heSBzdGlsbCBiZVxuICAgICAgICAgKiBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnQncyBzdHJpbmdpZmllZCByZXByZXNlbnRhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZG9jU3RhcnQgPSBudWxsO1xuICAgICAgICAvKiogVGhlIGRvYy1lbmQgbWFya2VyIGAuLi5gLiAgKi9cbiAgICAgICAgdGhpcy5kb2NFbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55YW1sID0gT2JqZWN0LmFzc2lnbih7fSwgRGlyZWN0aXZlcy5kZWZhdWx0WWFtbCwgeWFtbCk7XG4gICAgICAgIHRoaXMudGFncyA9IE9iamVjdC5hc3NpZ24oe30sIERpcmVjdGl2ZXMuZGVmYXVsdFRhZ3MsIHRhZ3MpO1xuICAgIH1cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBEaXJlY3RpdmVzKHRoaXMueWFtbCwgdGhpcy50YWdzKTtcbiAgICAgICAgY29weS5kb2NTdGFydCA9IHRoaXMuZG9jU3RhcnQ7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEdXJpbmcgcGFyc2luZywgZ2V0IGEgRGlyZWN0aXZlcyBpbnN0YW5jZSBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQgYW5kXG4gICAgICogdXBkYXRlIHRoZSBzdHJlYW0gc3RhdGUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHZlcnNpb24ncyBzcGVjLlxuICAgICAqL1xuICAgIGF0RG9jdW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBEaXJlY3RpdmVzKHRoaXMueWFtbCwgdGhpcy50YWdzKTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnlhbWwudmVyc2lvbikge1xuICAgICAgICAgICAgY2FzZSAnMS4xJzpcbiAgICAgICAgICAgICAgICB0aGlzLmF0TmV4dERvY3VtZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEuMic6XG4gICAgICAgICAgICAgICAgdGhpcy5hdE5leHREb2N1bWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMueWFtbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQ6IERpcmVjdGl2ZXMuZGVmYXVsdFlhbWwuZXhwbGljaXQsXG4gICAgICAgICAgICAgICAgICAgIHZlcnNpb246ICcxLjInXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRUYWdzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb25FcnJvciAtIE1heSBiZSBjYWxsZWQgZXZlbiBpZiB0aGUgYWN0aW9uIHdhcyBzdWNjZXNzZnVsXG4gICAgICogQHJldHVybnMgYHRydWVgIG9uIHN1Y2Nlc3NcbiAgICAgKi9cbiAgICBhZGQobGluZSwgb25FcnJvcikge1xuICAgICAgICBpZiAodGhpcy5hdE5leHREb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy55YW1sID0geyBleHBsaWNpdDogRGlyZWN0aXZlcy5kZWZhdWx0WWFtbC5leHBsaWNpdCwgdmVyc2lvbjogJzEuMScgfTtcbiAgICAgICAgICAgIHRoaXMudGFncyA9IE9iamVjdC5hc3NpZ24oe30sIERpcmVjdGl2ZXMuZGVmYXVsdFRhZ3MpO1xuICAgICAgICAgICAgdGhpcy5hdE5leHREb2N1bWVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnRzID0gbGluZS50cmltKCkuc3BsaXQoL1sgXFx0XSsvKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnJVRBRyc6IHtcbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoMCwgJyVUQUcgZGlyZWN0aXZlIHNob3VsZCBjb250YWluIGV4YWN0bHkgdHdvIHBhcnRzJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBbaGFuZGxlLCBwcmVmaXhdID0gcGFydHM7XG4gICAgICAgICAgICAgICAgdGhpcy50YWdzW2hhbmRsZV0gPSBwcmVmaXg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICclWUFNTCc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnlhbWwuZXhwbGljaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcigwLCAnJVlBTUwgZGlyZWN0aXZlIHNob3VsZCBjb250YWluIGV4YWN0bHkgb25lIHBhcnQnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBbdmVyc2lvbl0gPSBwYXJ0cztcbiAgICAgICAgICAgICAgICBpZiAodmVyc2lvbiA9PT0gJzEuMScgfHwgdmVyc2lvbiA9PT0gJzEuMicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55YW1sLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSAvXlxcZCtcXC5cXGQrJC8udGVzdCh2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcig2LCBgVW5zdXBwb3J0ZWQgWUFNTCB2ZXJzaW9uICR7dmVyc2lvbn1gLCBpc1ZhbGlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgb25FcnJvcigwLCBgVW5rbm93biBkaXJlY3RpdmUgJHtuYW1lfWAsIHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlcyBhIHRhZywgbWF0Y2hpbmcgaGFuZGxlcyB0byB0aG9zZSBkZWZpbmVkIGluICVUQUcgZGlyZWN0aXZlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFJlc29sdmVkIHRhZywgd2hpY2ggbWF5IGFsc28gYmUgdGhlIG5vbi1zcGVjaWZpYyB0YWcgYCchJ2Agb3IgYVxuICAgICAqICAgYCchbG9jYWwnYCB0YWcsIG9yIGBudWxsYCBpZiB1bnJlc29sdmFibGUuXG4gICAgICovXG4gICAgdGFnTmFtZShzb3VyY2UsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gJyEnKVxuICAgICAgICAgICAgcmV0dXJuICchJzsgLy8gbm9uLXNwZWNpZmljIHRhZ1xuICAgICAgICBpZiAoc291cmNlWzBdICE9PSAnIScpIHtcbiAgICAgICAgICAgIG9uRXJyb3IoYE5vdCBhIHZhbGlkIHRhZzogJHtzb3VyY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc291cmNlWzFdID09PSAnPCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmJhdGltID0gc291cmNlLnNsaWNlKDIsIC0xKTtcbiAgICAgICAgICAgIGlmICh2ZXJiYXRpbSA9PT0gJyEnIHx8IHZlcmJhdGltID09PSAnISEnKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcihgVmVyYmF0aW0gdGFncyBhcmVuJ3QgcmVzb2x2ZWQsIHNvICR7c291cmNlfSBpcyBpbnZhbGlkLmApO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNvdXJjZVtzb3VyY2UubGVuZ3RoIC0gMV0gIT09ICc+JylcbiAgICAgICAgICAgICAgICBvbkVycm9yKCdWZXJiYXRpbSB0YWdzIG11c3QgZW5kIHdpdGggYSA+Jyk7XG4gICAgICAgICAgICByZXR1cm4gdmVyYmF0aW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgWywgaGFuZGxlLCBzdWZmaXhdID0gc291cmNlLm1hdGNoKC9eKC4qISkoW14hXSopJC9zKTtcbiAgICAgICAgaWYgKCFzdWZmaXgpXG4gICAgICAgICAgICBvbkVycm9yKGBUaGUgJHtzb3VyY2V9IHRhZyBoYXMgbm8gc3VmZml4YCk7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMudGFnc1toYW5kbGVdO1xuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBkZWNvZGVVUklDb21wb25lbnQoc3VmZml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IoU3RyaW5nKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhbmRsZSA9PT0gJyEnKVxuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsgLy8gbG9jYWwgdGFnXG4gICAgICAgIG9uRXJyb3IoYENvdWxkIG5vdCByZXNvbHZlIHRhZzogJHtzb3VyY2V9YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIGZ1bGx5IHJlc29sdmVkIHRhZywgcmV0dXJucyBpdHMgcHJpbnRhYmxlIHN0cmluZyBmb3JtLFxuICAgICAqIHRha2luZyBpbnRvIGFjY291bnQgY3VycmVudCB0YWcgcHJlZml4ZXMgYW5kIGRlZmF1bHRzLlxuICAgICAqL1xuICAgIHRhZ1N0cmluZyh0YWcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaGFuZGxlLCBwcmVmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMudGFncykpIHtcbiAgICAgICAgICAgIGlmICh0YWcuc3RhcnRzV2l0aChwcmVmaXgpKVxuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUgKyBlc2NhcGVUYWdOYW1lKHRhZy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdbMF0gPT09ICchJyA/IHRhZyA6IGAhPCR7dGFnfT5gO1xuICAgIH1cbiAgICB0b1N0cmluZyhkb2MpIHtcbiAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLnlhbWwuZXhwbGljaXRcbiAgICAgICAgICAgID8gW2AlWUFNTCAke3RoaXMueWFtbC52ZXJzaW9uIHx8ICcxLjInfWBdXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICBjb25zdCB0YWdFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModGhpcy50YWdzKTtcbiAgICAgICAgbGV0IHRhZ05hbWVzO1xuICAgICAgICBpZiAoZG9jICYmIHRhZ0VudHJpZXMubGVuZ3RoID4gMCAmJiBpZGVudGl0eS5pc05vZGUoZG9jLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IHt9O1xuICAgICAgICAgICAgdmlzaXQudmlzaXQoZG9jLmNvbnRlbnRzLCAoX2tleSwgbm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpZGVudGl0eS5pc05vZGUobm9kZSkgJiYgbm9kZS50YWcpXG4gICAgICAgICAgICAgICAgICAgIHRhZ3Nbbm9kZS50YWddID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGFnTmFtZXMgPSBPYmplY3Qua2V5cyh0YWdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0YWdOYW1lcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IFtoYW5kbGUsIHByZWZpeF0gb2YgdGFnRW50cmllcykge1xuICAgICAgICAgICAgaWYgKGhhbmRsZSA9PT0gJyEhJyAmJiBwcmVmaXggPT09ICd0YWc6eWFtbC5vcmcsMjAwMjonKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCFkb2MgfHwgdGFnTmFtZXMuc29tZSh0biA9PiB0bi5zdGFydHNXaXRoKHByZWZpeCkpKVxuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goYCVUQUcgJHtoYW5kbGV9ICR7cHJlZml4fWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICB9XG59XG5EaXJlY3RpdmVzLmRlZmF1bHRZYW1sID0geyBleHBsaWNpdDogZmFsc2UsIHZlcnNpb246ICcxLjInIH07XG5EaXJlY3RpdmVzLmRlZmF1bHRUYWdzID0geyAnISEnOiAndGFnOnlhbWwub3JnLDIwMDI6JyB9O1xuXG5leHBvcnRzLkRpcmVjdGl2ZXMgPSBEaXJlY3RpdmVzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2665\n")},2687:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst getEngine = __webpack_require__(8092);\nconst defaults = __webpack_require__(3168);\n\nmodule.exports = function(language, str, options) {\n const opts = defaults(options);\n const engine = getEngine(language, opts);\n if (typeof engine.parse !== 'function') {\n throw new TypeError('expected \"' + language + '.parse\" to be a function');\n }\n return engine.parse(str, opts);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY4Ny5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixrQkFBa0IsbUJBQU8sQ0FBQyxJQUFVO0FBQ3BDLGlCQUFpQixtQkFBTyxDQUFDLElBQVk7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vZ3JheS1tYXR0ZXJANC4wLjMvbm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL2xpYi9wYXJzZS5qcz80OWFkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZ2V0RW5naW5lID0gcmVxdWlyZSgnLi9lbmdpbmUnKTtcbmNvbnN0IGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGxhbmd1YWdlLCBzdHIsIG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0cyA9IGRlZmF1bHRzKG9wdGlvbnMpO1xuICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUobGFuZ3VhZ2UsIG9wdHMpO1xuICBpZiAodHlwZW9mIGVuZ2luZS5wYXJzZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIFwiJyArIGxhbmd1YWdlICsgJy5wYXJzZVwiIHRvIGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICByZXR1cm4gZW5naW5lLnBhcnNlKHN0ciwgb3B0cyk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2687\n")},2690:module=>{eval('/*\nLanguage: DNS Zone\nAuthor: Tim Schumacher \nCategory: config\nWebsite: https://en.wikipedia.org/wiki/Zone_file\n*/\n\n/** @type LanguageFn */\nfunction dns(hljs) {\n const KEYWORDS = [\n "IN",\n "A",\n "AAAA",\n "AFSDB",\n "APL",\n "CAA",\n "CDNSKEY",\n "CDS",\n "CERT",\n "CNAME",\n "DHCID",\n "DLV",\n "DNAME",\n "DNSKEY",\n "DS",\n "HIP",\n "IPSECKEY",\n "KEY",\n "KX",\n "LOC",\n "MX",\n "NAPTR",\n "NS",\n "NSEC",\n "NSEC3",\n "NSEC3PARAM",\n "PTR",\n "RRSIG",\n "RP",\n "SIG",\n "SOA",\n "SRV",\n "SSHFP",\n "TA",\n "TKEY",\n "TLSA",\n "TSIG",\n "TXT"\n ];\n return {\n name: \'DNS Zone\',\n aliases: [\n \'bind\',\n \'zone\'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\';\', \'$\', { relevance: 0 }),\n {\n className: \'meta\',\n begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\n },\n // IPv6\n {\n className: \'number\',\n begin: \'((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b\'\n },\n // IPv4\n {\n className: \'number\',\n begin: \'((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b\'\n },\n hljs.inherit(hljs.NUMBER_MODE, { begin: /\\b\\d+[dhwm]?/ })\n ]\n };\n}\n\nmodule.exports = dns;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjY5MC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixVQUFVLGNBQWM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixJQUFJLEdBQUcsRUFBRSxhQUFhLElBQUksbUJBQW1CLElBQUksR0FBRyxFQUFFLGNBQWMsSUFBSSxrRkFBa0YsRUFBRSxvQkFBb0IsSUFBSSxHQUFHLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxJQUFJLG9GQUFvRixFQUFFLG9CQUFvQixJQUFJLEdBQUcsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLElBQUksaUJBQWlCLElBQUksb0ZBQW9GLEVBQUUscUJBQXFCLElBQUksR0FBRyxFQUFFLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxpQkFBaUIsSUFBSSxFQUFFLElBQUksa0ZBQWtGLEVBQUUscUJBQXFCLElBQUksR0FBRyxFQUFFLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxpQkFBaUIsSUFBSSxFQUFFLElBQUksa0ZBQWtGLEVBQUUscUJBQXFCLElBQUksR0FBRyxFQUFFLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxpQkFBaUIsSUFBSSxFQUFFLElBQUksa0ZBQWtGLEVBQUUseUJBQXlCLElBQUksRUFBRSxJQUFJLGlCQUFpQixJQUFJLEVBQUUsSUFBSSxrRkFBa0YsRUFBRTtBQUNqbkMsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxJQUFJLE9BQU8sSUFBSSxVQUFVLElBQUksbUJBQW1CLElBQUksT0FBTyxJQUFJO0FBQ25HLE9BQU87QUFDUCx1Q0FBdUMsdUJBQXVCO0FBQzlEO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvZG5zLmpzPzYzNzYiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBETlMgWm9uZVxuQXV0aG9yOiBUaW0gU2NodW1hY2hlciA8dGltQGRhdGVua25vdGVuLm1lPlxuQ2F0ZWdvcnk6IGNvbmZpZ1xuV2Vic2l0ZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWm9uZV9maWxlXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gZG5zKGhsanMpIHtcbiAgY29uc3QgS0VZV09SRFMgPSBbXG4gICAgXCJJTlwiLFxuICAgIFwiQVwiLFxuICAgIFwiQUFBQVwiLFxuICAgIFwiQUZTREJcIixcbiAgICBcIkFQTFwiLFxuICAgIFwiQ0FBXCIsXG4gICAgXCJDRE5TS0VZXCIsXG4gICAgXCJDRFNcIixcbiAgICBcIkNFUlRcIixcbiAgICBcIkNOQU1FXCIsXG4gICAgXCJESENJRFwiLFxuICAgIFwiRExWXCIsXG4gICAgXCJETkFNRVwiLFxuICAgIFwiRE5TS0VZXCIsXG4gICAgXCJEU1wiLFxuICAgIFwiSElQXCIsXG4gICAgXCJJUFNFQ0tFWVwiLFxuICAgIFwiS0VZXCIsXG4gICAgXCJLWFwiLFxuICAgIFwiTE9DXCIsXG4gICAgXCJNWFwiLFxuICAgIFwiTkFQVFJcIixcbiAgICBcIk5TXCIsXG4gICAgXCJOU0VDXCIsXG4gICAgXCJOU0VDM1wiLFxuICAgIFwiTlNFQzNQQVJBTVwiLFxuICAgIFwiUFRSXCIsXG4gICAgXCJSUlNJR1wiLFxuICAgIFwiUlBcIixcbiAgICBcIlNJR1wiLFxuICAgIFwiU09BXCIsXG4gICAgXCJTUlZcIixcbiAgICBcIlNTSEZQXCIsXG4gICAgXCJUQVwiLFxuICAgIFwiVEtFWVwiLFxuICAgIFwiVExTQVwiLFxuICAgIFwiVFNJR1wiLFxuICAgIFwiVFhUXCJcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnRE5TIFpvbmUnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdiaW5kJyxcbiAgICAgICd6b25lJ1xuICAgIF0sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcsIHsgcmVsZXZhbmNlOiAwIH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46IC9eXFwkKFRUTHxHRU5FUkFURXxJTkNMVURFfE9SSUdJTilcXGIvXG4gICAgICB9LFxuICAgICAgLy8gSVB2NlxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICBiZWdpbjogJygoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKShcXFxcLigyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldP1xcXFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKFxcXFwuKDI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV0/XFxcXGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkoXFxcXC4oMjVbMC01XXwyWzAtNF1cXFxcZHwxXFxcXGRcXFxcZHxbMS05XT9cXFxcZCkpezN9KSl8OikpKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIC8vIElQdjRcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46ICcoKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXFxcYidcbiAgICAgIH0sXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5OVU1CRVJfTU9ERSwgeyBiZWdpbjogL1xcYlxcZCtbZGh3bV0/LyB9KVxuICAgIF1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkbnM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2690\n')},2732:module=>{eval("/*\nLanguage: AutoHotkey\nAuthor: Seongwon Lee \nDescription: AutoHotkey language definition\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction autohotkey(hljs) {\n const BACKTICK_ESCAPE = { begin: '`[\\\\s\\\\S]' };\n\n return {\n name: 'AutoHotkey',\n case_insensitive: true,\n aliases: [ 'ahk' ],\n keywords: {\n keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',\n literal: 'true false NOT AND OR',\n built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel'\n },\n contains: [\n BACKTICK_ESCAPE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, { contains: [ BACKTICK_ESCAPE ] }),\n hljs.COMMENT(';', '$', { relevance: 0 }),\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n },\n {\n // subst would be the most accurate however fails the point of\n // highlighting. variable is comparably the most accurate that actually\n // has some effect\n className: 'variable',\n begin: '%[a-zA-Z0-9#_$@]+%'\n },\n {\n className: 'built_in',\n begin: '^\\\\s*\\\\w+\\\\s*(,|%)'\n // I don't really know if this is totally relevant\n },\n {\n // symbol would be most accurate however is highlighted just like\n // built_in and that makes up a lot of AutoHotkey code meaning that it\n // would fail to highlight anything\n className: 'title',\n variants: [\n { begin: '^[^\\\\n\";]+::(?!=)' },\n {\n begin: '^[^\\\\n\";]+:(?!=)',\n // zero relevance as it catches a lot of things\n // followed by a single ':' in many languages\n relevance: 0\n }\n ]\n },\n {\n className: 'meta',\n begin: '^\\\\s*#\\\\w+',\n end: '$',\n relevance: 0\n },\n {\n className: 'built_in',\n begin: 'A_[a-zA-Z0-9]+'\n },\n {\n // consecutive commas, not for highlighting but just for relevance\n begin: ',\\\\s*,' }\n ]\n };\n}\n\nmodule.exports = autohotkey;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjczMi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsNkNBQTZDLCtCQUErQjtBQUM1RSxxQkFBcUIsVUFBVSxjQUFjO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0JBQWdCLFlBQVk7QUFDeEM7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL2F1dG9ob3RrZXkuanM/NWUxOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEF1dG9Ib3RrZXlcbkF1dGhvcjogU2Vvbmd3b24gTGVlIDxkbGltcGlkQGdtYWlsLmNvbT5cbkRlc2NyaXB0aW9uOiBBdXRvSG90a2V5IGxhbmd1YWdlIGRlZmluaXRpb25cbkNhdGVnb3J5OiBzY3JpcHRpbmdcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBhdXRvaG90a2V5KGhsanMpIHtcbiAgY29uc3QgQkFDS1RJQ0tfRVNDQVBFID0geyBiZWdpbjogJ2BbXFxcXHNcXFxcU10nIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQXV0b0hvdGtleScsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbICdhaGsnIF0sXG4gICAga2V5d29yZHM6IHtcbiAgICAgIGtleXdvcmQ6ICdCcmVhayBDb250aW51ZSBDcml0aWNhbCBFeGl0IEV4aXRBcHAgR29zdWIgR290byBOZXcgT25FeGl0IFBhdXNlIHJldHVybiBTZXRCYXRjaExpbmVzIFNldFRpbWVyIFN1c3BlbmQgVGhyZWFkIFRocm93IFVudGlsIGFoa19pZCBhaGtfY2xhc3MgYWhrX3BpZCBhaGtfZXhlIGFoa19ncm91cCcsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBOT1QgQU5EIE9SJyxcbiAgICAgIGJ1aWx0X2luOiAnQ29tU3BlYyBDbGlwYm9hcmQgQ2xpcGJvYXJkQWxsIEVycm9yTGV2ZWwnXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgQkFDS1RJQ0tfRVNDQVBFLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHsgY29udGFpbnM6IFsgQkFDS1RJQ0tfRVNDQVBFIF0gfSksXG4gICAgICBobGpzLkNPTU1FTlQoJzsnLCAnJCcsIHsgcmVsZXZhbmNlOiAwIH0pLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgICAgYmVnaW46IGhsanMuTlVNQkVSX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHN1YnN0IHdvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlIGhvd2V2ZXIgZmFpbHMgdGhlIHBvaW50IG9mXG4gICAgICAgIC8vIGhpZ2hsaWdodGluZy4gdmFyaWFibGUgaXMgY29tcGFyYWJseSB0aGUgbW9zdCBhY2N1cmF0ZSB0aGF0IGFjdHVhbGx5XG4gICAgICAgIC8vIGhhcyBzb21lIGVmZmVjdFxuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAnJVthLXpBLVowLTkjXyRAXSslJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYnVpbHRfaW4nLFxuICAgICAgICBiZWdpbjogJ15cXFxccypcXFxcdytcXFxccyooLHwlKSdcbiAgICAgICAgLy8gSSBkb24ndCByZWFsbHkga25vdyBpZiB0aGlzIGlzIHRvdGFsbHkgcmVsZXZhbnRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHN5bWJvbCB3b3VsZCBiZSBtb3N0IGFjY3VyYXRlIGhvd2V2ZXIgaXMgaGlnaGxpZ2h0ZWQganVzdCBsaWtlXG4gICAgICAgIC8vIGJ1aWx0X2luIGFuZCB0aGF0IG1ha2VzIHVwIGEgbG90IG9mIEF1dG9Ib3RrZXkgY29kZSBtZWFuaW5nIHRoYXQgaXRcbiAgICAgICAgLy8gd291bGQgZmFpbCB0byBoaWdobGlnaHQgYW55dGhpbmdcbiAgICAgICAgY2xhc3NOYW1lOiAndGl0bGUnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdeW15cXFxcblwiO10rOjooPyE9KScgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ15bXlxcXFxuXCI7XSs6KD8hPSknLFxuICAgICAgICAgICAgLy8gemVybyByZWxldmFuY2UgYXMgaXQgY2F0Y2hlcyBhIGxvdCBvZiB0aGluZ3NcbiAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgc2luZ2xlICc6JyBpbiBtYW55IGxhbmd1YWdlc1xuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqI1xcXFx3KycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICAgICAgYmVnaW46ICdBX1thLXpBLVowLTldKydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGNvbnNlY3V0aXZlIGNvbW1hcywgbm90IGZvciBoaWdobGlnaHRpbmcgYnV0IGp1c3QgZm9yIHJlbGV2YW5jZVxuICAgICAgICBiZWdpbjogJyxcXFxccyosJyB9XG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGF1dG9ob3RrZXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2732\n")},2760:(__unused_webpack_module,exports)=>{"use strict";eval("\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjc2MC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qix3QkFBd0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3QvcGFyc2UvY3N0LXN0cmluZ2lmeS5qcz9iM2EyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTdHJpbmdpZnkgYSBDU1QgZG9jdW1lbnQsIHRva2VuLCBvciBjb2xsZWN0aW9uIGl0ZW1cbiAqXG4gKiBGYWlyIHdhcm5pbmc6IFRoaXMgYXBwbGllcyBubyB2YWxpZGF0aW9uIHdoYXRzb2V2ZXIsIGFuZFxuICogc2ltcGx5IGNvbmNhdGVuYXRlcyB0aGUgc291cmNlcyBpbiB0aGVpciBsb2dpY2FsIG9yZGVyLlxuICovXG5jb25zdCBzdHJpbmdpZnkgPSAoY3N0KSA9PiAndHlwZScgaW4gY3N0ID8gc3RyaW5naWZ5VG9rZW4oY3N0KSA6IHN0cmluZ2lmeUl0ZW0oY3N0KTtcbmZ1bmN0aW9uIHN0cmluZ2lmeVRva2VuKHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXNjYWxhcic6IHtcbiAgICAgICAgICAgIGxldCByZXMgPSAnJztcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9rIG9mIHRva2VuLnByb3BzKVxuICAgICAgICAgICAgICAgIHJlcyArPSBzdHJpbmdpZnlUb2tlbih0b2spO1xuICAgICAgICAgICAgcmV0dXJuIHJlcyArIHRva2VuLnNvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdibG9jay1tYXAnOlxuICAgICAgICBjYXNlICdibG9jay1zZXEnOiB7XG4gICAgICAgICAgICBsZXQgcmVzID0gJyc7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdG9rZW4uaXRlbXMpXG4gICAgICAgICAgICAgICAgcmVzICs9IHN0cmluZ2lmeUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Zsb3ctY29sbGVjdGlvbic6IHtcbiAgICAgICAgICAgIGxldCByZXMgPSB0b2tlbi5zdGFydC5zb3VyY2U7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdG9rZW4uaXRlbXMpXG4gICAgICAgICAgICAgICAgcmVzICs9IHN0cmluZ2lmeUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN0IG9mIHRva2VuLmVuZClcbiAgICAgICAgICAgICAgICByZXMgKz0gc3Quc291cmNlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdkb2N1bWVudCc6IHtcbiAgICAgICAgICAgIGxldCByZXMgPSBzdHJpbmdpZnlJdGVtKHRva2VuKTtcbiAgICAgICAgICAgIGlmICh0b2tlbi5lbmQpXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdCBvZiB0b2tlbi5lbmQpXG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBzdC5zb3VyY2U7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGxldCByZXMgPSB0b2tlbi5zb3VyY2U7XG4gICAgICAgICAgICBpZiAoJ2VuZCcgaW4gdG9rZW4gJiYgdG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2YgdG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gc3Quc291cmNlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeUl0ZW0oeyBzdGFydCwga2V5LCBzZXAsIHZhbHVlIH0pIHtcbiAgICBsZXQgcmVzID0gJyc7XG4gICAgZm9yIChjb25zdCBzdCBvZiBzdGFydClcbiAgICAgICAgcmVzICs9IHN0LnNvdXJjZTtcbiAgICBpZiAoa2V5KVxuICAgICAgICByZXMgKz0gc3RyaW5naWZ5VG9rZW4oa2V5KTtcbiAgICBpZiAoc2VwKVxuICAgICAgICBmb3IgKGNvbnN0IHN0IG9mIHNlcClcbiAgICAgICAgICAgIHJlcyArPSBzdC5zb3VyY2U7XG4gICAgaWYgKHZhbHVlKVxuICAgICAgICByZXMgKz0gc3RyaW5naWZ5VG9rZW4odmFsdWUpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydHMuc3RyaW5naWZ5ID0gc3RyaW5naWZ5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2760\n")},2801:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n\n\n\nvar Schema = __webpack_require__(6415);\n\n\nmodule.exports = new Schema({\n include: [\n __webpack_require__(592)\n ]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgwMS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHYTs7O0FBR2IsYUFBYSxtQkFBTyxDQUFDLElBQVc7OztBQUdoQztBQUNBO0FBQ0EsSUFBSSxtQkFBTyxDQUFDLEdBQVE7QUFDcEI7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzLXlhbWxAMy4xNC4xL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9jb3JlLmpzP2Y5NDgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hLlxuLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODA0OTIzXG4vL1xuLy8gTk9URTogSlMtWUFNTCBkb2VzIG5vdCBzdXBwb3J0IHNjaGVtYS1zcGVjaWZpYyB0YWcgcmVzb2x1dGlvbiByZXN0cmljdGlvbnMuXG4vLyBTbywgQ29yZSBzY2hlbWEgaGFzIG5vIGRpc3RpbmN0aW9ucyBmcm9tIEpTT04gc2NoZW1hIGlzIEpTLVlBTUwuXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9qc29uJylcbiAgXVxufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2801\n")},2821:module=>{eval("/*\nLanguage: IRPF90\nAuthor: Anthony Scemama \nDescription: IRPF90 is an open-source Fortran code generator\nWebsite: http://irpf90.ups-tlse.fr\nCategory: scientific\n*/\n\n/** @type LanguageFn */\nfunction irpf90(hljs) {\n const regex = hljs.regex;\n const PARAMS = {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)'\n };\n\n // regex in both fortran and irpf90 should match\n const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\\d]+)?/;\n const OPTIONAL_NUMBER_EXP = /([de][+-]?\\d+)?/;\n const NUMBER = {\n className: 'number',\n variants: [\n { begin: regex.concat(/\\b\\d+/, /\\.(\\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) },\n { begin: regex.concat(/\\b\\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) },\n { begin: regex.concat(/\\.\\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }\n ],\n relevance: 0\n };\n\n const F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere '\n + 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then '\n + 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. '\n + 'goto save else use module select case '\n + 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit '\n + 'continue format pause cycle exit '\n + 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg '\n + 'synchronous nopass non_overridable pass protected volatile abstract extends import '\n + 'non_intrinsic value deferred generic final enumerator class associate bind enum '\n + 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t '\n + 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double '\n + 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr '\n + 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer '\n + 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor '\n + 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control '\n + 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive '\n + 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure '\n + 'integer real character complex logical dimension allocatable|10 parameter '\n + 'external implicit|10 none double precision assign intent optional pointer '\n + 'target in out common equivalence data '\n // IRPF90 special keywords\n + 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch '\n + 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint '\n + 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl '\n + 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama '\n + 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod '\n + 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log '\n + 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate '\n + 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product '\n + 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul '\n + 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product '\n + 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind '\n + 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer '\n + 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end '\n + 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode '\n + 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of '\n + 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 '\n + 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits '\n + 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr '\n + 'num_images parity popcnt poppar shifta shiftl shiftr this_image '\n // IRPF90 special built_ins\n + 'IRP_ALIGN irp_here'\n };\n return {\n name: 'IRPF90',\n case_insensitive: true,\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {\n className: 'string',\n relevance: 0\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: 'string',\n relevance: 0\n }),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS\n ]\n },\n hljs.COMMENT('!', '$', { relevance: 0 }),\n hljs.COMMENT('begin_doc', 'end_doc', { relevance: 10 }),\n NUMBER\n ]\n };\n}\n\nmodule.exports = irpf90;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjgyMS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0ZBQXNGO0FBQzlGLFFBQVEsMkVBQTJFO0FBQ25GLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCwrQkFBK0IsY0FBYztBQUM3Qyw2Q0FBNkMsZUFBZTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvaXJwZjkwLmpzPzAxYmYiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBJUlBGOTBcbkF1dGhvcjogQW50aG9ueSBTY2VtYW1hIDxzY2VtYW1hQGlyc2FtYy51cHMtdGxzZS5mcj5cbkRlc2NyaXB0aW9uOiBJUlBGOTAgaXMgYW4gb3Blbi1zb3VyY2UgRm9ydHJhbiBjb2RlIGdlbmVyYXRvclxuV2Vic2l0ZTogaHR0cDovL2lycGY5MC51cHMtdGxzZS5mclxuQ2F0ZWdvcnk6IHNjaWVudGlmaWNcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBpcnBmOTAoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgIGVuZDogJ1xcXFwpJ1xuICB9O1xuXG4gIC8vIHJlZ2V4IGluIGJvdGggZm9ydHJhbiBhbmQgaXJwZjkwIHNob3VsZCBtYXRjaFxuICBjb25zdCBPUFRJT05BTF9OVU1CRVJfU1VGRklYID0gLyhfW2Etel9cXGRdKyk/LztcbiAgY29uc3QgT1BUSU9OQUxfTlVNQkVSX0VYUCA9IC8oW2RlXVsrLV0/XFxkKyk/LztcbiAgY29uc3QgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFxiXFxkKy8sIC9cXC4oXFxkKikvLCBPUFRJT05BTF9OVU1CRVJfRVhQLCBPUFRJT05BTF9OVU1CRVJfU1VGRklYKSB9LFxuICAgICAgeyBiZWdpbjogcmVnZXguY29uY2F0KC9cXGJcXGQrLywgT1BUSU9OQUxfTlVNQkVSX0VYUCwgT1BUSU9OQUxfTlVNQkVSX1NVRkZJWCkgfSxcbiAgICAgIHsgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFwuXFxkKy8sIE9QVElPTkFMX05VTUJFUl9FWFAsIE9QVElPTkFMX05VTUJFUl9TVUZGSVgpIH1cbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEZfS0VZV09SRFMgPSB7XG4gICAgbGl0ZXJhbDogJy5GYWxzZS4gLlRydWUuJyxcbiAgICBrZXl3b3JkOiAna2luZCBkbyB3aGlsZSBwcml2YXRlIGNhbGwgaW50cmluc2ljIHdoZXJlIGVsc2V3aGVyZSAnXG4gICAgICArICd0eXBlIGVuZHR5cGUgZW5kbW9kdWxlIGVuZHNlbGVjdCBlbmRpbnRlcmZhY2UgZW5kIGVuZGRvIGVuZGlmIGlmIGZvcmFsbCBlbmRmb3JhbGwgb25seSBjb250YWlucyBkZWZhdWx0IHJldHVybiBzdG9wIHRoZW4gJ1xuICAgICAgKyAncHVibGljIHN1YnJvdXRpbmV8MTAgZnVuY3Rpb24gcHJvZ3JhbSAuYW5kLiAub3IuIC5ub3QuIC5sZS4gLmVxLiAuZ2UuIC5ndC4gLmx0LiAnXG4gICAgICArICdnb3RvIHNhdmUgZWxzZSB1c2UgbW9kdWxlIHNlbGVjdCBjYXNlICdcbiAgICAgICsgJ2FjY2VzcyBibGFuayBkaXJlY3QgZXhpc3QgZmlsZSBmbXQgZm9ybSBmb3JtYXR0ZWQgaW9zdGF0IG5hbWUgbmFtZWQgbmV4dHJlYyBudW1iZXIgb3BlbmVkIHJlYyByZWNsIHNlcXVlbnRpYWwgc3RhdHVzIHVuZm9ybWF0dGVkIHVuaXQgJ1xuICAgICAgKyAnY29udGludWUgZm9ybWF0IHBhdXNlIGN5Y2xlIGV4aXQgJ1xuICAgICAgKyAnY19udWxsX2NoYXIgY19hbGVydCBjX2JhY2tzcGFjZSBjX2Zvcm1fZmVlZCBmbHVzaCB3YWl0IGRlY2ltYWwgcm91bmQgaW9tc2cgJ1xuICAgICAgKyAnc3luY2hyb25vdXMgbm9wYXNzIG5vbl9vdmVycmlkYWJsZSBwYXNzIHByb3RlY3RlZCB2b2xhdGlsZSBhYnN0cmFjdCBleHRlbmRzIGltcG9ydCAnXG4gICAgICArICdub25faW50cmluc2ljIHZhbHVlIGRlZmVycmVkIGdlbmVyaWMgZmluYWwgZW51bWVyYXRvciBjbGFzcyBhc3NvY2lhdGUgYmluZCBlbnVtICdcbiAgICAgICsgJ2NfaW50IGNfc2hvcnQgY19sb25nIGNfbG9uZ19sb25nIGNfc2lnbmVkX2NoYXIgY19zaXplX3QgY19pbnQ4X3QgY19pbnQxNl90IGNfaW50MzJfdCBjX2ludDY0X3QgY19pbnRfbGVhc3Q4X3QgY19pbnRfbGVhc3QxNl90ICdcbiAgICAgICsgJ2NfaW50X2xlYXN0MzJfdCBjX2ludF9sZWFzdDY0X3QgY19pbnRfZmFzdDhfdCBjX2ludF9mYXN0MTZfdCBjX2ludF9mYXN0MzJfdCBjX2ludF9mYXN0NjRfdCBjX2ludG1heF90IENfaW50cHRyX3QgY19mbG9hdCBjX2RvdWJsZSAnXG4gICAgICArICdjX2xvbmdfZG91YmxlIGNfZmxvYXRfY29tcGxleCBjX2RvdWJsZV9jb21wbGV4IGNfbG9uZ19kb3VibGVfY29tcGxleCBjX2Jvb2wgY19jaGFyIGNfbnVsbF9wdHIgY19udWxsX2Z1bnB0ciAnXG4gICAgICArICdjX25ld19saW5lIGNfY2FycmlhZ2VfcmV0dXJuIGNfaG9yaXpvbnRhbF90YWIgY192ZXJ0aWNhbF90YWIgaXNvX2NfYmluZGluZyBjX2xvYyBjX2Z1bmxvYyBjX2Fzc29jaWF0ZWQgIGNfZl9wb2ludGVyICdcbiAgICAgICsgJ2NfcHRyIGNfZnVucHRyIGlzb19mb3J0cmFuX2VudiBjaGFyYWN0ZXJfc3RvcmFnZV9zaXplIGVycm9yX3VuaXQgZmlsZV9zdG9yYWdlX3NpemUgaW5wdXRfdW5pdCBpb3N0YXRfZW5kIGlvc3RhdF9lb3IgJ1xuICAgICAgKyAnbnVtZXJpY19zdG9yYWdlX3NpemUgb3V0cHV0X3VuaXQgY19mX3Byb2Nwb2ludGVyIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgJ1xuICAgICAgKyAnaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgbmV3dW5pdCBjb250aWd1b3VzIHJlY3Vyc2l2ZSAnXG4gICAgICArICdwYWQgcG9zaXRpb24gYWN0aW9uIGRlbGltIHJlYWR3cml0ZSBlb3IgYWR2YW5jZSBubWwgaW50ZXJmYWNlIHByb2NlZHVyZSBuYW1lbGlzdCBpbmNsdWRlIHNlcXVlbmNlIGVsZW1lbnRhbCBwdXJlICdcbiAgICAgICsgJ2ludGVnZXIgcmVhbCBjaGFyYWN0ZXIgY29tcGxleCBsb2dpY2FsIGRpbWVuc2lvbiBhbGxvY2F0YWJsZXwxMCBwYXJhbWV0ZXIgJ1xuICAgICAgKyAnZXh0ZXJuYWwgaW1wbGljaXR8MTAgbm9uZSBkb3VibGUgcHJlY2lzaW9uIGFzc2lnbiBpbnRlbnQgb3B0aW9uYWwgcG9pbnRlciAnXG4gICAgICArICd0YXJnZXQgaW4gb3V0IGNvbW1vbiBlcXVpdmFsZW5jZSBkYXRhICdcbiAgICAgIC8vIElSUEY5MCBzcGVjaWFsIGtleXdvcmRzXG4gICAgICArICdiZWdpbl9wcm92aWRlciAmYmVnaW5fcHJvdmlkZXIgZW5kX3Byb3ZpZGVyIGJlZ2luX3NoZWxsIGVuZF9zaGVsbCBiZWdpbl90ZW1wbGF0ZSBlbmRfdGVtcGxhdGUgc3Vic3QgYXNzZXJ0IHRvdWNoICdcbiAgICAgICsgJ3NvZnRfdG91Y2ggcHJvdmlkZSBub19kZXAgZnJlZSBpcnBfaWYgaXJwX2Vsc2UgaXJwX2VuZGlmIGlycF93cml0ZSBpcnBfcmVhZCcsXG4gICAgYnVpbHRfaW46ICdhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50ICdcbiAgICAgICsgJ2Rsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgJ1xuICAgICAgKyAnYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hICdcbiAgICAgICsgJ2lxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgJ1xuICAgICAgKyAncW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgJ1xuICAgICAgKyAnbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgJ1xuICAgICAgKyAnYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgJ1xuICAgICAgKyAnZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCAnXG4gICAgICArICdtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0ICdcbiAgICAgICsgJ3JhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kICdcbiAgICAgICsgJ3NldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgJ1xuICAgICAgKyAnZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kICdcbiAgICAgICsgJ2llZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgJ1xuICAgICAgKyAnaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mICdcbiAgICAgICsgJ2Fjb3NoIGFzaW5oIGF0YW5oIGJlc3NlbF9qMCBiZXNzZWxfajEgYmVzc2VsX2puIGJlc3NlbF95MCBiZXNzZWxfeTEgYmVzc2VsX3luIGVyZiBlcmZjIGVyZmNfc2NhbGVkIGdhbW1hIGxvZ19nYW1tYSBoeXBvdCBub3JtMiAnXG4gICAgICArICdhdG9taWNfZGVmaW5lIGF0b21pY19yZWYgZXhlY3V0ZV9jb21tYW5kX2xpbmUgbGVhZHogdHJhaWx6IHN0b3JhZ2Vfc2l6ZSBtZXJnZV9iaXRzICdcbiAgICAgICsgJ2JnZSBiZ3QgYmxlIGJsdCBkc2hpZnRsIGRzaGlmdHIgZmluZGxvYyBpYWxsIGlhbnkgaXBhcml0eSBpbWFnZV9pbmRleCBsY29ib3VuZCB1Y29ib3VuZCBtYXNrbCBtYXNrciAnXG4gICAgICArICdudW1faW1hZ2VzIHBhcml0eSBwb3BjbnQgcG9wcGFyIHNoaWZ0YSBzaGlmdGwgc2hpZnRyIHRoaXNfaW1hZ2UgJ1xuICAgICAgLy8gSVJQRjkwIHNwZWNpYWwgYnVpbHRfaW5zXG4gICAgICArICdJUlBfQUxJR04gaXJwX2hlcmUnXG4gIH07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0lSUEY5MCcsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogRl9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvXFwvXFwqLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuQVBPU19TVFJJTkdfTU9ERSwge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0pLFxuICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnc3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtJyxcbiAgICAgICAgaWxsZWdhbDogJ1skez1cXFxcbl0nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFLFxuICAgICAgICAgIFBBUkFNU1xuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgaGxqcy5DT01NRU5UKCchJywgJyQnLCB7IHJlbGV2YW5jZTogMCB9KSxcbiAgICAgIGhsanMuQ09NTUVOVCgnYmVnaW5fZG9jJywgJ2VuZF9kb2MnLCB7IHJlbGV2YW5jZTogMTAgfSksXG4gICAgICBOVU1CRVJcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXJwZjkwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2821\n")},2841:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar identity = __webpack_require__(5900);\nvar stringify = __webpack_require__(2393);\nvar stringifyComment = __webpack_require__(272);\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg0MS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixlQUFlLG1CQUFPLENBQUMsSUFBc0I7QUFDN0MsZ0JBQWdCLG1CQUFPLENBQUMsSUFBZ0I7QUFDeEMsdUJBQXVCLG1CQUFPLENBQUMsR0FBdUI7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsZ0JBQWdCLFNBQVMsZ0VBQWdFO0FBQzdILFlBQVksbUJBQW1CLGtCQUFrQjtBQUNqRCxvQ0FBb0MsU0FBUyxnQ0FBZ0M7QUFDN0UsMkJBQTJCO0FBQzNCO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQSwrQkFBK0IsT0FBTyxFQUFFLEtBQUs7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxPQUFPLFNBQVMsdUJBQXVCO0FBQzFFLFlBQVksaUVBQWlFLGtCQUFrQjtBQUMvRjtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLO0FBQzlELHNCQUFzQixJQUFJLElBQUksT0FBTyxFQUFFLElBQUk7QUFDM0M7QUFDQTtBQUNBLHNCQUFzQixNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixtQkFBbUIsaUJBQWlCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUEsMkJBQTJCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5Q29sbGVjdGlvbi5qcz8wZmFlIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi4vbm9kZXMvaWRlbnRpdHkuanMnKTtcbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeS5qcycpO1xudmFyIHN0cmluZ2lmeUNvbW1lbnQgPSByZXF1aXJlKCcuL3N0cmluZ2lmeUNvbW1lbnQuanMnKTtcblxuZnVuY3Rpb24gc3RyaW5naWZ5Q29sbGVjdGlvbihjb2xsZWN0aW9uLCBjdHgsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBmbG93ID0gY3R4LmluRmxvdyA/PyBjb2xsZWN0aW9uLmZsb3c7XG4gICAgY29uc3Qgc3RyaW5naWZ5ID0gZmxvdyA/IHN0cmluZ2lmeUZsb3dDb2xsZWN0aW9uIDogc3RyaW5naWZ5QmxvY2tDb2xsZWN0aW9uO1xuICAgIHJldHVybiBzdHJpbmdpZnkoY29sbGVjdGlvbiwgY3R4LCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeUJsb2NrQ29sbGVjdGlvbih7IGNvbW1lbnQsIGl0ZW1zIH0sIGN0eCwgeyBibG9ja0l0ZW1QcmVmaXgsIGZsb3dDaGFycywgaXRlbUluZGVudCwgb25DaG9tcEtlZXAsIG9uQ29tbWVudCB9KSB7XG4gICAgY29uc3QgeyBpbmRlbnQsIG9wdGlvbnM6IHsgY29tbWVudFN0cmluZyB9IH0gPSBjdHg7XG4gICAgY29uc3QgaXRlbUN0eCA9IE9iamVjdC5hc3NpZ24oe30sIGN0eCwgeyBpbmRlbnQ6IGl0ZW1JbmRlbnQsIHR5cGU6IG51bGwgfSk7XG4gICAgbGV0IGNob21wS2VlcCA9IGZhbHNlOyAvLyBmbGFnIGZvciB0aGUgcHJlY2VkaW5nIG5vZGUncyBzdGF0dXNcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICBsZXQgY29tbWVudCA9IG51bGw7XG4gICAgICAgIGlmIChpZGVudGl0eS5pc05vZGUoaXRlbSkpIHtcbiAgICAgICAgICAgIGlmICghY2hvbXBLZWVwICYmIGl0ZW0uc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICBhZGRDb21tZW50QmVmb3JlKGN0eCwgbGluZXMsIGl0ZW0uY29tbWVudEJlZm9yZSwgY2hvbXBLZWVwKTtcbiAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgY29tbWVudCA9IGl0ZW0uY29tbWVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpZGVudGl0eS5pc1BhaXIoaXRlbSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlrID0gaWRlbnRpdHkuaXNOb2RlKGl0ZW0ua2V5KSA/IGl0ZW0ua2V5IDogbnVsbDtcbiAgICAgICAgICAgIGlmIChpaykge1xuICAgICAgICAgICAgICAgIGlmICghY2hvbXBLZWVwICYmIGlrLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgICAgICBhZGRDb21tZW50QmVmb3JlKGN0eCwgbGluZXMsIGlrLmNvbW1lbnRCZWZvcmUsIGNob21wS2VlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBzdHIgPSBzdHJpbmdpZnkuc3RyaW5naWZ5KGl0ZW0sIGl0ZW1DdHgsICgpID0+IChjb21tZW50ID0gbnVsbCksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IHN0cmluZ2lmeUNvbW1lbnQubGluZUNvbW1lbnQoc3RyLCBpdGVtSW5kZW50LCBjb21tZW50U3RyaW5nKGNvbW1lbnQpKTtcbiAgICAgICAgaWYgKGNob21wS2VlcCAmJiBjb21tZW50KVxuICAgICAgICAgICAgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgICAgIGxpbmVzLnB1c2goYmxvY2tJdGVtUHJlZml4ICsgc3RyKTtcbiAgICB9XG4gICAgbGV0IHN0cjtcbiAgICBpZiAobGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHN0ciA9IGZsb3dDaGFycy5zdGFydCArIGZsb3dDaGFycy5lbmQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdHIgPSBsaW5lc1swXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgICAgICAgc3RyICs9IGxpbmUgPyBgXFxuJHtpbmRlbnR9JHtsaW5lfWAgOiAnXFxuJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgICBzdHIgKz0gJ1xcbicgKyBzdHJpbmdpZnlDb21tZW50LmluZGVudENvbW1lbnQoY29tbWVudFN0cmluZyhjb21tZW50KSwgaW5kZW50KTtcbiAgICAgICAgaWYgKG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjaG9tcEtlZXAgJiYgb25DaG9tcEtlZXApXG4gICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgcmV0dXJuIHN0cjtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeUZsb3dDb2xsZWN0aW9uKHsgaXRlbXMgfSwgY3R4LCB7IGZsb3dDaGFycywgaXRlbUluZGVudCB9KSB7XG4gICAgY29uc3QgeyBpbmRlbnQsIGluZGVudFN0ZXAsIGZsb3dDb2xsZWN0aW9uUGFkZGluZzogZmNQYWRkaW5nLCBvcHRpb25zOiB7IGNvbW1lbnRTdHJpbmcgfSB9ID0gY3R4O1xuICAgIGl0ZW1JbmRlbnQgKz0gaW5kZW50U3RlcDtcbiAgICBjb25zdCBpdGVtQ3R4ID0gT2JqZWN0LmFzc2lnbih7fSwgY3R4LCB7XG4gICAgICAgIGluZGVudDogaXRlbUluZGVudCxcbiAgICAgICAgaW5GbG93OiB0cnVlLFxuICAgICAgICB0eXBlOiBudWxsXG4gICAgfSk7XG4gICAgbGV0IHJlcU5ld2xpbmUgPSBmYWxzZTtcbiAgICBsZXQgbGluZXNBdFZhbHVlID0gMDtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICBsZXQgY29tbWVudCA9IG51bGw7XG4gICAgICAgIGlmIChpZGVudGl0eS5pc05vZGUoaXRlbSkpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgYWRkQ29tbWVudEJlZm9yZShjdHgsIGxpbmVzLCBpdGVtLmNvbW1lbnRCZWZvcmUsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgY29tbWVudCA9IGl0ZW0uY29tbWVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpZGVudGl0eS5pc1BhaXIoaXRlbSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlrID0gaWRlbnRpdHkuaXNOb2RlKGl0ZW0ua2V5KSA/IGl0ZW0ua2V5IDogbnVsbDtcbiAgICAgICAgICAgIGlmIChpaykge1xuICAgICAgICAgICAgICAgIGlmIChpay5zcGFjZUJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICAgICAgYWRkQ29tbWVudEJlZm9yZShjdHgsIGxpbmVzLCBpay5jb21tZW50QmVmb3JlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlrLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIHJlcU5ld2xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXYgPSBpZGVudGl0eS5pc05vZGUoaXRlbS52YWx1ZSkgPyBpdGVtLnZhbHVlIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChpdikge1xuICAgICAgICAgICAgICAgIGlmIChpdi5jb21tZW50KVxuICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gaXYuY29tbWVudDtcbiAgICAgICAgICAgICAgICBpZiAoaXYuY29tbWVudEJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLnZhbHVlID09IG51bGwgJiYgaWs/LmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gaWsuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tbWVudClcbiAgICAgICAgICAgIHJlcU5ld2xpbmUgPSB0cnVlO1xuICAgICAgICBsZXQgc3RyID0gc3RyaW5naWZ5LnN0cmluZ2lmeShpdGVtLCBpdGVtQ3R4LCAoKSA9PiAoY29tbWVudCA9IG51bGwpKTtcbiAgICAgICAgaWYgKGkgPCBpdGVtcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgc3RyICs9ICcsJztcbiAgICAgICAgaWYgKGNvbW1lbnQpXG4gICAgICAgICAgICBzdHIgKz0gc3RyaW5naWZ5Q29tbWVudC5saW5lQ29tbWVudChzdHIsIGl0ZW1JbmRlbnQsIGNvbW1lbnRTdHJpbmcoY29tbWVudCkpO1xuICAgICAgICBpZiAoIXJlcU5ld2xpbmUgJiYgKGxpbmVzLmxlbmd0aCA+IGxpbmVzQXRWYWx1ZSB8fCBzdHIuaW5jbHVkZXMoJ1xcbicpKSlcbiAgICAgICAgICAgIHJlcU5ld2xpbmUgPSB0cnVlO1xuICAgICAgICBsaW5lcy5wdXNoKHN0cik7XG4gICAgICAgIGxpbmVzQXRWYWx1ZSA9IGxpbmVzLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBmbG93Q2hhcnM7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc3RhcnQgKyBlbmQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoIXJlcU5ld2xpbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IGxpbmVzLnJlZHVjZSgoc3VtLCBsaW5lKSA9PiBzdW0gKyBsaW5lLmxlbmd0aCArIDIsIDIpO1xuICAgICAgICAgICAgcmVxTmV3bGluZSA9IGN0eC5vcHRpb25zLmxpbmVXaWR0aCA+IDAgJiYgbGVuID4gY3R4Lm9wdGlvbnMubGluZVdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXFOZXdsaW5lKSB7XG4gICAgICAgICAgICBsZXQgc3RyID0gc3RhcnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpXG4gICAgICAgICAgICAgICAgc3RyICs9IGxpbmUgPyBgXFxuJHtpbmRlbnRTdGVwfSR7aW5kZW50fSR7bGluZX1gIDogJ1xcbic7XG4gICAgICAgICAgICByZXR1cm4gYCR7c3RyfVxcbiR7aW5kZW50fSR7ZW5kfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c3RhcnR9JHtmY1BhZGRpbmd9JHtsaW5lcy5qb2luKCcgJyl9JHtmY1BhZGRpbmd9JHtlbmR9YDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZENvbW1lbnRCZWZvcmUoeyBpbmRlbnQsIG9wdGlvbnM6IHsgY29tbWVudFN0cmluZyB9IH0sIGxpbmVzLCBjb21tZW50LCBjaG9tcEtlZXApIHtcbiAgICBpZiAoY29tbWVudCAmJiBjaG9tcEtlZXApXG4gICAgICAgIGNvbW1lbnQgPSBjb21tZW50LnJlcGxhY2UoL15cXG4rLywgJycpO1xuICAgIGlmIChjb21tZW50KSB7XG4gICAgICAgIGNvbnN0IGljID0gc3RyaW5naWZ5Q29tbWVudC5pbmRlbnRDb21tZW50KGNvbW1lbnRTdHJpbmcoY29tbWVudCksIGluZGVudCk7XG4gICAgICAgIGxpbmVzLnB1c2goaWMudHJpbVN0YXJ0KCkpOyAvLyBBdm9pZCBkb3VibGUgaW5kZW50IG9uIGZpcnN0IGxpbmVcbiAgICB9XG59XG5cbmV4cG9ydHMuc3RyaW5naWZ5Q29sbGVjdGlvbiA9IHN0cmluZ2lmeUNvbGxlY3Rpb247XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2841\n")},2850:module=>{eval("/*\nLanguage: Brainfuck\nAuthor: Evgeny Stepanischev \nWebsite: https://esolangs.org/wiki/Brainfuck\n*/\n\n/** @type LanguageFn */\nfunction brainfuck(hljs) {\n const LITERAL = {\n className: 'literal',\n begin: /[+-]+/,\n relevance: 0\n };\n return {\n name: 'Brainfuck',\n aliases: [ 'bf' ],\n contains: [\n hljs.COMMENT(\n /[^\\[\\]\\.,\\+\\-<> \\r\\n]/,\n /[\\[\\]\\.,\\+\\-<> \\r\\n]/,\n {\n contains: [\n {\n match: /[ ]+[^\\[\\]\\.,\\+\\-<> \\r\\n]/,\n relevance: 0\n }\n ],\n returnEnd: true,\n relevance: 0\n }\n ),\n {\n className: 'title',\n begin: '[\\\\[\\\\]]',\n relevance: 0\n },\n {\n className: 'string',\n begin: '[\\\\.,]',\n relevance: 0\n },\n {\n // this mode works as the only relevance counter\n // it looks ahead to find the start of a run of literals\n // so only the runs are counted as relevant\n begin: /(?=\\+\\+|--)/,\n contains: [ LITERAL ]\n },\n LITERAL\n ]\n };\n}\n\nmodule.exports = brainfuck;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg1MC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9icmFpbmZ1Y2suanM/MDYzOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEJyYWluZnVja1xuQXV0aG9yOiBFdmdlbnkgU3RlcGFuaXNjaGV2IDxpbWJvbGtAZ21haWwuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9lc29sYW5ncy5vcmcvd2lraS9CcmFpbmZ1Y2tcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBicmFpbmZ1Y2soaGxqcykge1xuICBjb25zdCBMSVRFUkFMID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIGJlZ2luOiAvWystXSsvLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdCcmFpbmZ1Y2snLFxuICAgIGFsaWFzZXM6IFsgJ2JmJyBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgIC9bXlxcW1xcXVxcLixcXCtcXC08PiBcXHJcXG5dLyxcbiAgICAgICAgL1tcXFtcXF1cXC4sXFwrXFwtPD4gXFxyXFxuXS8sXG4gICAgICAgIHtcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXRjaDogL1sgXStbXlxcW1xcXVxcLixcXCtcXC08PiBcXHJcXG5dLyxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICAgICAgYmVnaW46ICdbXFxcXFtcXFxcXV0nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAnW1xcXFwuLF0nLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMgbW9kZSB3b3JrcyBhcyB0aGUgb25seSByZWxldmFuY2UgY291bnRlclxuICAgICAgICAvLyBpdCBsb29rcyBhaGVhZCB0byBmaW5kIHRoZSBzdGFydCBvZiBhIHJ1biBvZiBsaXRlcmFsc1xuICAgICAgICAvLyBzbyBvbmx5IHRoZSBydW5zIGFyZSBjb3VudGVkIGFzIHJlbGV2YW50XG4gICAgICAgIGJlZ2luOiAvKD89XFwrXFwrfC0tKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbIExJVEVSQUwgXVxuICAgICAgfSxcbiAgICAgIExJVEVSQUxcbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYnJhaW5mdWNrO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2850\n")},2854:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar Alias = __webpack_require__(9424);\nvar identity = __webpack_require__(5900);\nvar composeCollection = __webpack_require__(4634);\nvar composeScalar = __webpack_require__(9070);\nvar resolveEnd = __webpack_require__(9013);\nvar utilEmptyScalarPosition = __webpack_require__(9544);\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjg1NC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsSUFBbUI7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLElBQXNCO0FBQzdDLHdCQUF3QixtQkFBTyxDQUFDLElBQXlCO0FBQ3pELG9CQUFvQixtQkFBTyxDQUFDLElBQXFCO0FBQ2pELGlCQUFpQixtQkFBTyxDQUFDLElBQWtCO0FBQzNDLDhCQUE4QixtQkFBTyxDQUFDLElBQWlDOztBQUV2RSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFlBQVksb0NBQW9DO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsV0FBVztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx3Q0FBd0M7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixTQUFTLElBQUkscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEIsbUJBQW1CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL3lhbWxAMi43LjAvbm9kZV9tb2R1bGVzL3lhbWwvZGlzdC9jb21wb3NlL2NvbXBvc2Utbm9kZS5qcz9lOTc5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIEFsaWFzID0gcmVxdWlyZSgnLi4vbm9kZXMvQWxpYXMuanMnKTtcbnZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4uL25vZGVzL2lkZW50aXR5LmpzJyk7XG52YXIgY29tcG9zZUNvbGxlY3Rpb24gPSByZXF1aXJlKCcuL2NvbXBvc2UtY29sbGVjdGlvbi5qcycpO1xudmFyIGNvbXBvc2VTY2FsYXIgPSByZXF1aXJlKCcuL2NvbXBvc2Utc2NhbGFyLmpzJyk7XG52YXIgcmVzb2x2ZUVuZCA9IHJlcXVpcmUoJy4vcmVzb2x2ZS1lbmQuanMnKTtcbnZhciB1dGlsRW1wdHlTY2FsYXJQb3NpdGlvbiA9IHJlcXVpcmUoJy4vdXRpbC1lbXB0eS1zY2FsYXItcG9zaXRpb24uanMnKTtcblxuY29uc3QgQ04gPSB7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH07XG5mdW5jdGlvbiBjb21wb3NlTm9kZShjdHgsIHRva2VuLCBwcm9wcywgb25FcnJvcikge1xuICAgIGNvbnN0IGF0S2V5ID0gY3R4LmF0S2V5O1xuICAgIGNvbnN0IHsgc3BhY2VCZWZvcmUsIGNvbW1lbnQsIGFuY2hvciwgdGFnIH0gPSBwcm9wcztcbiAgICBsZXQgbm9kZTtcbiAgICBsZXQgaXNTcmNUb2tlbiA9IHRydWU7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2FsaWFzJzpcbiAgICAgICAgICAgIG5vZGUgPSBjb21wb3NlQWxpYXMoY3R4LCB0b2tlbiwgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoYW5jaG9yIHx8IHRhZylcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnQUxJQVNfUFJPUFMnLCAnQW4gYWxpYXMgbm9kZSBtdXN0IG5vdCBzcGVjaWZ5IGFueSBwcm9wZXJ0aWVzJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLXNjYWxhcic6XG4gICAgICAgICAgICBub2RlID0gY29tcG9zZVNjYWxhci5jb21wb3NlU2NhbGFyKGN0eCwgdG9rZW4sIHRhZywgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoYW5jaG9yKVxuICAgICAgICAgICAgICAgIG5vZGUuYW5jaG9yID0gYW5jaG9yLnNvdXJjZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYmxvY2stbWFwJzpcbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzpcbiAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIG5vZGUgPSBjb21wb3NlQ29sbGVjdGlvbi5jb21wb3NlQ29sbGVjdGlvbihDTiwgY3R4LCB0b2tlbiwgcHJvcHMsIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGFuY2hvcilcbiAgICAgICAgICAgICAgICBub2RlLmFuY2hvciA9IGFuY2hvci5zb3VyY2Uuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0b2tlbi50eXBlID09PSAnZXJyb3InXG4gICAgICAgICAgICAgICAgPyB0b2tlbi5tZXNzYWdlXG4gICAgICAgICAgICAgICAgOiBgVW5zdXBwb3J0ZWQgdG9rZW4gKHR5cGU6ICR7dG9rZW4udHlwZX0pYDtcbiAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdVTkVYUEVDVEVEX1RPS0VOJywgbWVzc2FnZSk7XG4gICAgICAgICAgICBub2RlID0gY29tcG9zZUVtcHR5Tm9kZShjdHgsIHRva2VuLm9mZnNldCwgdW5kZWZpbmVkLCBudWxsLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBpc1NyY1Rva2VuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFuY2hvciAmJiBub2RlLmFuY2hvciA9PT0gJycpXG4gICAgICAgIG9uRXJyb3IoYW5jaG9yLCAnQkFEX0FMSUFTJywgJ0FuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgaWYgKGF0S2V5ICYmXG4gICAgICAgIGN0eC5vcHRpb25zLnN0cmluZ0tleXMgJiZcbiAgICAgICAgKCFpZGVudGl0eS5pc1NjYWxhcihub2RlKSB8fFxuICAgICAgICAgICAgdHlwZW9mIG5vZGUudmFsdWUgIT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAobm9kZS50YWcgJiYgbm9kZS50YWcgIT09ICd0YWc6eWFtbC5vcmcsMjAwMjpzdHInKSkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ1dpdGggc3RyaW5nS2V5cywgYWxsIGtleXMgbXVzdCBiZSBzdHJpbmdzJztcbiAgICAgICAgb25FcnJvcih0YWcgPz8gdG9rZW4sICdOT05fU1RSSU5HX0tFWScsIG1zZyk7XG4gICAgfVxuICAgIGlmIChzcGFjZUJlZm9yZSlcbiAgICAgICAgbm9kZS5zcGFjZUJlZm9yZSA9IHRydWU7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09ICdzY2FsYXInICYmIHRva2VuLnNvdXJjZSA9PT0gJycpXG4gICAgICAgICAgICBub2RlLmNvbW1lbnQgPSBjb21tZW50O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBub2RlLmNvbW1lbnRCZWZvcmUgPSBjb21tZW50O1xuICAgIH1cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgY2hlY2tpbmcgbWlzc2VzIG1lYW5pbmcgb2YgaXNTcmNUb2tlblxuICAgIGlmIChjdHgub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zICYmIGlzU3JjVG9rZW4pXG4gICAgICAgIG5vZGUuc3JjVG9rZW4gPSB0b2tlbjtcbiAgICByZXR1cm4gbm9kZTtcbn1cbmZ1bmN0aW9uIGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBvZmZzZXQsIGJlZm9yZSwgcG9zLCB7IHNwYWNlQmVmb3JlLCBjb21tZW50LCBhbmNob3IsIHRhZywgZW5kIH0sIG9uRXJyb3IpIHtcbiAgICBjb25zdCB0b2tlbiA9IHtcbiAgICAgICAgdHlwZTogJ3NjYWxhcicsXG4gICAgICAgIG9mZnNldDogdXRpbEVtcHR5U2NhbGFyUG9zaXRpb24uZW1wdHlTY2FsYXJQb3NpdGlvbihvZmZzZXQsIGJlZm9yZSwgcG9zKSxcbiAgICAgICAgaW5kZW50OiAtMSxcbiAgICAgICAgc291cmNlOiAnJ1xuICAgIH07XG4gICAgY29uc3Qgbm9kZSA9IGNvbXBvc2VTY2FsYXIuY29tcG9zZVNjYWxhcihjdHgsIHRva2VuLCB0YWcsIG9uRXJyb3IpO1xuICAgIGlmIChhbmNob3IpIHtcbiAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgaWYgKG5vZGUuYW5jaG9yID09PSAnJylcbiAgICAgICAgICAgIG9uRXJyb3IoYW5jaG9yLCAnQkFEX0FMSUFTJywgJ0FuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmIChzcGFjZUJlZm9yZSlcbiAgICAgICAgbm9kZS5zcGFjZUJlZm9yZSA9IHRydWU7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgbm9kZS5jb21tZW50ID0gY29tbWVudDtcbiAgICAgICAgbm9kZS5yYW5nZVsyXSA9IGVuZDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBjb21wb3NlQWxpYXMoeyBvcHRpb25zIH0sIHsgb2Zmc2V0LCBzb3VyY2UsIGVuZCB9LCBvbkVycm9yKSB7XG4gICAgY29uc3QgYWxpYXMgPSBuZXcgQWxpYXMuQWxpYXMoc291cmNlLnN1YnN0cmluZygxKSk7XG4gICAgaWYgKGFsaWFzLnNvdXJjZSA9PT0gJycpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkFEX0FMSUFTJywgJ0FsaWFzIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICBpZiAoYWxpYXMuc291cmNlLmVuZHNXaXRoKCc6JykpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0ICsgc291cmNlLmxlbmd0aCAtIDEsICdCQURfQUxJQVMnLCAnQWxpYXMgZW5kaW5nIGluIDogaXMgYW1iaWd1b3VzJywgdHJ1ZSk7XG4gICAgY29uc3QgdmFsdWVFbmQgPSBvZmZzZXQgKyBzb3VyY2UubGVuZ3RoO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZC5yZXNvbHZlRW5kKGVuZCwgdmFsdWVFbmQsIG9wdGlvbnMuc3RyaWN0LCBvbkVycm9yKTtcbiAgICBhbGlhcy5yYW5nZSA9IFtvZmZzZXQsIHZhbHVlRW5kLCByZS5vZmZzZXRdO1xuICAgIGlmIChyZS5jb21tZW50KVxuICAgICAgICBhbGlhcy5jb21tZW50ID0gcmUuY29tbWVudDtcbiAgICByZXR1cm4gYWxpYXM7XG59XG5cbmV4cG9ydHMuY29tcG9zZUVtcHR5Tm9kZSA9IGNvbXBvc2VFbXB0eU5vZGU7XG5leHBvcnRzLmNvbXBvc2VOb2RlID0gY29tcG9zZU5vZGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2854\n")},2952:module=>{eval("/*\nLanguage: PHP Template\nRequires: xml.js, php.js\nAuthor: Josh Goebel \nWebsite: https://www.php.net\nCategory: common\n*/\n\nfunction phpTemplate(hljs) {\n return {\n name: \"PHP template\",\n subLanguage: 'xml',\n contains: [\n {\n begin: /<\\?(php|=)?/,\n end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {\n begin: '/\\\\*',\n end: '\\\\*/',\n skip: true\n },\n {\n begin: 'b\"',\n end: '\"',\n skip: true\n },\n {\n begin: 'b\\'',\n end: '\\'',\n skip: true\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n })\n ]\n }\n ]\n };\n}\n\nmodule.exports = phpTemplate;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk1Mi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvcGhwLXRlbXBsYXRlLmpzPzRiYjAiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBQSFAgVGVtcGxhdGVcblJlcXVpcmVzOiB4bWwuanMsIHBocC5qc1xuQXV0aG9yOiBKb3NoIEdvZWJlbCA8aGVsbG9Aam9zaGdvZWJlbC5jb20+XG5XZWJzaXRlOiBodHRwczovL3d3dy5waHAubmV0XG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG5mdW5jdGlvbiBwaHBUZW1wbGF0ZShobGpzKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJQSFAgdGVtcGxhdGVcIixcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC88XFw/KHBocHw9KT8vLFxuICAgICAgICBlbmQ6IC9cXD8+LyxcbiAgICAgICAgc3ViTGFuZ3VhZ2U6ICdwaHAnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIHBocCBjbG9zaW5nIHRhZyA/PiB0byBjbG9zZSB0aGUgUEhQIGJsb2NrIHdoZW5cbiAgICAgICAgICAvLyBpbnNpZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgYmxvY2tzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnL1xcXFwqJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFwqLycsXG4gICAgICAgICAgICBza2lwOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ2JcIicsXG4gICAgICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgICAgICBza2lwOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ2JcXCcnLFxuICAgICAgICAgICAgZW5kOiAnXFwnJyxcbiAgICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHtcbiAgICAgICAgICAgIGlsbGVnYWw6IG51bGwsXG4gICAgICAgICAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgICAgICAgICBjb250YWluczogbnVsbCxcbiAgICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge1xuICAgICAgICAgICAgaWxsZWdhbDogbnVsbCxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBudWxsLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGhwVGVtcGxhdGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2952\n")},2991:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar Scalar = __webpack_require__(2042);\nvar stringifyNumber = __webpack_require__(1232);\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk5MS5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLG1CQUFPLENBQUMsSUFBdUI7QUFDNUMsc0JBQXNCLG1CQUFPLENBQUMsSUFBb0M7O0FBRWxFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxhQUFhO0FBQ2IsZ0JBQWdCO0FBQ2hCLGdCQUFnQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL2Zsb2F0LmpzP2U5NmMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgU2NhbGFyID0gcmVxdWlyZSgnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJyk7XG52YXIgc3RyaW5naWZ5TnVtYmVyID0gcmVxdWlyZSgnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcycpO1xuXG5jb25zdCBmbG9hdE5hTiA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICB0ZXN0OiAvXig/OlstK10/XFwuKD86aW5mfEluZnxJTkYpfFxcLm5hbnxcXC5OYU58XFwuTkFOKSQvLFxuICAgIHJlc29sdmU6IChzdHIpID0+IHN0ci5zbGljZSgtMykudG9Mb3dlckNhc2UoKSA9PT0gJ25hbidcbiAgICAgICAgPyBOYU5cbiAgICAgICAgOiBzdHJbMF0gPT09ICctJ1xuICAgICAgICAgICAgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICAgIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyLnN0cmluZ2lmeU51bWJlclxufTtcbmNvbnN0IGZsb2F0RXhwID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIGZvcm1hdDogJ0VYUCcsXG4gICAgdGVzdDogL15bLStdPyg/OlswLTldWzAtOV9dKik/KD86XFwuWzAtOV9dKik/W2VFXVstK10/WzAtOV0rJC8sXG4gICAgcmVzb2x2ZTogKHN0cikgPT4gcGFyc2VGbG9hdChzdHIucmVwbGFjZSgvXy9nLCAnJykpLFxuICAgIHN0cmluZ2lmeShub2RlKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihub2RlLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGlzRmluaXRlKG51bSkgPyBudW0udG9FeHBvbmVudGlhbCgpIDogc3RyaW5naWZ5TnVtYmVyLnN0cmluZ2lmeU51bWJlcihub2RlKTtcbiAgICB9XG59O1xuY29uc3QgZmxvYXQgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgdGVzdDogL15bLStdPyg/OlswLTldWzAtOV9dKik/XFwuWzAtOV9dKiQvLFxuICAgIHJlc29sdmUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgU2NhbGFyLlNjYWxhcihwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9fL2csICcnKSkpO1xuICAgICAgICBjb25zdCBkb3QgPSBzdHIuaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoZG90ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgZiA9IHN0ci5zdWJzdHJpbmcoZG90ICsgMSkucmVwbGFjZSgvXy9nLCAnJyk7XG4gICAgICAgICAgICBpZiAoZltmLmxlbmd0aCAtIDFdID09PSAnMCcpXG4gICAgICAgICAgICAgICAgbm9kZS5taW5GcmFjdGlvbkRpZ2l0cyA9IGYubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXIuc3RyaW5naWZ5TnVtYmVyXG59O1xuXG5leHBvcnRzLmZsb2F0ID0gZmxvYXQ7XG5leHBvcnRzLmZsb2F0RXhwID0gZmxvYXRFeHA7XG5leHBvcnRzLmZsb2F0TmFOID0gZmxvYXROYU47XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2991\n")},3027:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar map = __webpack_require__(4078);\nvar _null = __webpack_require__(8703);\nvar seq = __webpack_require__(1079);\nvar string = __webpack_require__(8491);\nvar bool = __webpack_require__(4676);\nvar float = __webpack_require__(3716);\nvar int = __webpack_require__(867);\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAyNy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixVQUFVLG1CQUFPLENBQUMsSUFBa0I7QUFDcEMsWUFBWSxtQkFBTyxDQUFDLElBQW1CO0FBQ3ZDLFVBQVUsbUJBQU8sQ0FBQyxJQUFrQjtBQUNwQyxhQUFhLG1CQUFPLENBQUMsSUFBcUI7QUFDMUMsV0FBVyxtQkFBTyxDQUFDLElBQVc7QUFDOUIsWUFBWSxtQkFBTyxDQUFDLElBQVk7QUFDaEMsVUFBVSxtQkFBTyxDQUFDLEdBQVU7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0veWFtbEAyLjcuMC9ub2RlX21vZHVsZXMveWFtbC9kaXN0L3NjaGVtYS9jb3JlL3NjaGVtYS5qcz81MzE4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIG1hcCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9tYXAuanMnKTtcbnZhciBfbnVsbCA9IHJlcXVpcmUoJy4uL2NvbW1vbi9udWxsLmpzJyk7XG52YXIgc2VxID0gcmVxdWlyZSgnLi4vY29tbW9uL3NlcS5qcycpO1xudmFyIHN0cmluZyA9IHJlcXVpcmUoJy4uL2NvbW1vbi9zdHJpbmcuanMnKTtcbnZhciBib29sID0gcmVxdWlyZSgnLi9ib29sLmpzJyk7XG52YXIgZmxvYXQgPSByZXF1aXJlKCcuL2Zsb2F0LmpzJyk7XG52YXIgaW50ID0gcmVxdWlyZSgnLi9pbnQuanMnKTtcblxuY29uc3Qgc2NoZW1hID0gW1xuICAgIG1hcC5tYXAsXG4gICAgc2VxLnNlcSxcbiAgICBzdHJpbmcuc3RyaW5nLFxuICAgIF9udWxsLm51bGxUYWcsXG4gICAgYm9vbC5ib29sVGFnLFxuICAgIGludC5pbnRPY3QsXG4gICAgaW50LmludCxcbiAgICBpbnQuaW50SGV4LFxuICAgIGZsb2F0LmZsb2F0TmFOLFxuICAgIGZsb2F0LmZsb2F0RXhwLFxuICAgIGZsb2F0LmZsb2F0XG5dO1xuXG5leHBvcnRzLnNjaGVtYSA9IHNjaGVtYTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3027\n")},3070:module=>{eval("/*\nLanguage: Oxygene\nAuthor: Carlo Kok \nDescription: Oxygene is built on the foundation of Object Pascal, revamped and extended to be a modern language for the twenty-first century.\nWebsite: https://www.elementscompiler.com/elements/default.aspx\nCategory: build-system\n*/\n\nfunction oxygene(hljs) {\n const OXYGENE_KEYWORDS = {\n $pattern: /\\.?\\w+/,\n keyword:\n 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue '\n + 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false '\n + 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited '\n + 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of '\n + 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly '\n + 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple '\n + 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal '\n + 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained'\n };\n const CURLY_COMMENT = hljs.COMMENT(\n /\\{/,\n /\\}/,\n { relevance: 0 }\n );\n const PAREN_COMMENT = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n { relevance: 10 }\n );\n const STRING = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n contains: [ { begin: '\\'\\'' } ]\n };\n const CHAR_STRING = {\n className: 'string',\n begin: '(#\\\\d+)+'\n };\n const FUNCTION = {\n beginKeywords: 'function constructor destructor procedure method',\n end: '[:;]',\n keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { scope: \"title.function\" }),\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n keywords: OXYGENE_KEYWORDS,\n contains: [\n STRING,\n CHAR_STRING\n ]\n },\n CURLY_COMMENT,\n PAREN_COMMENT\n ]\n };\n\n const SEMICOLON = {\n scope: \"punctuation\",\n match: /;/,\n relevance: 0\n };\n\n return {\n name: 'Oxygene',\n case_insensitive: true,\n keywords: OXYGENE_KEYWORDS,\n illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*||->)',\n contains: [\n CURLY_COMMENT,\n PAREN_COMMENT,\n hljs.C_LINE_COMMENT_MODE,\n STRING,\n CHAR_STRING,\n hljs.NUMBER_MODE,\n FUNCTION,\n SEMICOLON\n ]\n };\n}\n\nmodule.exports = oxygene;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA3MC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnQkFBZ0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLHNDQUFzQyx5QkFBeUI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9veHlnZW5lLmpzPzVhOTEiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBPeHlnZW5lXG5BdXRob3I6IENhcmxvIEtvayA8Y2tAcmVtb2JqZWN0cy5jb20+XG5EZXNjcmlwdGlvbjogT3h5Z2VuZSBpcyBidWlsdCBvbiB0aGUgZm91bmRhdGlvbiBvZiBPYmplY3QgUGFzY2FsLCByZXZhbXBlZCBhbmQgZXh0ZW5kZWQgdG8gYmUgYSBtb2Rlcm4gbGFuZ3VhZ2UgZm9yIHRoZSB0d2VudHktZmlyc3QgY2VudHVyeS5cbldlYnNpdGU6IGh0dHBzOi8vd3d3LmVsZW1lbnRzY29tcGlsZXIuY29tL2VsZW1lbnRzL2RlZmF1bHQuYXNweFxuQ2F0ZWdvcnk6IGJ1aWxkLXN5c3RlbVxuKi9cblxuZnVuY3Rpb24gb3h5Z2VuZShobGpzKSB7XG4gIGNvbnN0IE9YWUdFTkVfS0VZV09SRFMgPSB7XG4gICAgJHBhdHRlcm46IC9cXC4/XFx3Ky8sXG4gICAga2V5d29yZDpcbiAgICAgICdhYnN0cmFjdCBhZGQgYW5kIGFycmF5IGFzIGFzYyBhc3BlY3QgYXNzZW1ibHkgYXN5bmMgYmVnaW4gYnJlYWsgYmxvY2sgYnkgY2FzZSBjbGFzcyBjb25jYXQgY29uc3QgY29weSBjb25zdHJ1Y3RvciBjb250aW51ZSAnXG4gICAgICArICdjcmVhdGUgZGVmYXVsdCBkZWxlZ2F0ZSBkZXNjIGRpc3RpbmN0IGRpdiBkbyBkb3dudG8gZHluYW1pYyBlYWNoIGVsc2UgZW1wdHkgZW5kIGVuc3VyZSBlbnVtIGVxdWFscyBldmVudCBleGNlcHQgZXhpdCBleHRlbnNpb24gZXh0ZXJuYWwgZmFsc2UgJ1xuICAgICAgKyAnZmluYWwgZmluYWxpemUgZmluYWxpemVyIGZpbmFsbHkgZmxhZ3MgZm9yIGZvcndhcmQgZnJvbSBmdW5jdGlvbiBmdXR1cmUgZ2xvYmFsIGdyb3VwIGhhcyBpZiBpbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRzIGltcGxpZXMgaW4gaW5kZXggaW5oZXJpdGVkICdcbiAgICAgICsgJ2lubGluZSBpbnRlcmZhY2UgaW50byBpbnZhcmlhbnRzIGlzIGl0ZXJhdG9yIGpvaW4gbG9ja2VkIGxvY2tpbmcgbG9vcCBtYXRjaGluZyBtZXRob2QgbW9kIG1vZHVsZSBuYW1lc3BhY2UgbmVzdGVkIG5ldyBuaWwgbm90IG5vdGlmeSBudWxsYWJsZSBvZiAnXG4gICAgICArICdvbGQgb24gb3BlcmF0b3Igb3Igb3JkZXIgb3V0IG92ZXJyaWRlIHBhcmFsbGVsIHBhcmFtcyBwYXJ0aWFsIHBpbm5lZCBwcml2YXRlIHByb2NlZHVyZSBwcm9wZXJ0eSBwcm90ZWN0ZWQgcHVibGljIHF1ZXJ5YWJsZSByYWlzZSByZWFkIHJlYWRvbmx5ICdcbiAgICAgICsgJ3JlY29yZCByZWludHJvZHVjZSByZW1vdmUgcmVwZWF0IHJlcXVpcmUgcmVzdWx0IHJldmVyc2Ugc2VhbGVkIHNlbGVjdCBzZWxmIHNlcXVlbmNlIHNldCBzaGwgc2hyIHNraXAgc3RhdGljIHN0ZXAgc29mdCB0YWtlIHRoZW4gdG8gdHJ1ZSB0cnkgdHVwbGUgJ1xuICAgICAgKyAndHlwZSB1bmlvbiB1bml0IHVuc2FmZSB1bnRpbCB1c2VzIHVzaW5nIHZhciB2aXJ0dWFsIHJhaXNlcyB2b2xhdGlsZSB3aGVyZSB3aGlsZSB3aXRoIHdyaXRlIHhvciB5aWVsZCBhd2FpdCBtYXBwZWQgZGVwcmVjYXRlZCBzdGRjYWxsIGNkZWNsIHBhc2NhbCAnXG4gICAgICArICdyZWdpc3RlciBzYWZlY2FsbCBvdmVybG9hZCBsaWJyYXJ5IHBsYXRmb3JtIHJlZmVyZW5jZSBwYWNrZWQgc3RyaWN0IHB1Ymxpc2hlZCBhdXRvcmVsZWFzZXBvb2wgc2VsZWN0b3Igc3Ryb25nIHdlYWsgdW5yZXRhaW5lZCdcbiAgfTtcbiAgY29uc3QgQ1VSTFlfQ09NTUVOVCA9IGhsanMuQ09NTUVOVChcbiAgICAvXFx7LyxcbiAgICAvXFx9LyxcbiAgICB7IHJlbGV2YW5jZTogMCB9XG4gICk7XG4gIGNvbnN0IFBBUkVOX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgJ1xcXFwoXFxcXConLFxuICAgICdcXFxcKlxcXFwpJyxcbiAgICB7IHJlbGV2YW5jZTogMTAgfVxuICApO1xuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ1xcJycsXG4gICAgZW5kOiAnXFwnJyxcbiAgICBjb250YWluczogWyB7IGJlZ2luOiAnXFwnXFwnJyB9IF1cbiAgfTtcbiAgY29uc3QgQ0hBUl9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJygjXFxcXGQrKSsnXG4gIH07XG4gIGNvbnN0IEZVTkNUSU9OID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdmdW5jdGlvbiBjb25zdHJ1Y3RvciBkZXN0cnVjdG9yIHByb2NlZHVyZSBtZXRob2QnLFxuICAgIGVuZDogJ1s6O10nLFxuICAgIGtleXdvcmRzOiAnZnVuY3Rpb24gY29uc3RydWN0b3J8MTAgZGVzdHJ1Y3RvcnwxMCBwcm9jZWR1cmV8MTAgbWV0aG9kfDEwJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwgeyBzY29wZTogXCJ0aXRsZS5mdW5jdGlvblwiIH0pLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgQ0hBUl9TVFJJTkdcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIENVUkxZX0NPTU1FTlQsXG4gICAgICBQQVJFTl9DT01NRU5UXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IFNFTUlDT0xPTiA9IHtcbiAgICBzY29wZTogXCJwdW5jdHVhdGlvblwiLFxuICAgIG1hdGNoOiAvOy8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnT3h5Z2VuZScsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBrZXl3b3JkczogT1hZR0VORV9LRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAnKFwifFxcXFwkW0ctWmctel18XFxcXC9cXFxcKnw8L3w9PnwtPiknLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDVVJMWV9DT01NRU5ULFxuICAgICAgUEFSRU5fQ09NTUVOVCxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIFNUUklORyxcbiAgICAgIENIQVJfU1RSSU5HLFxuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgU0VNSUNPTE9OXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG94eWdlbmU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3070\n")},3072:module=>{eval('/*\n Language: GraphQL\n Author: John Foster (GH jf990), and others\n Description: GraphQL is a query language for APIs\n Category: web, common\n*/\n\n/** @type LanguageFn */\nfunction graphql(hljs) {\n const regex = hljs.regex;\n const GQL_NAME = /[_A-Za-z][_0-9A-Za-z]*/;\n return {\n name: "GraphQL",\n aliases: [ "gql" ],\n case_insensitive: true,\n disableAutodetect: false,\n keywords: {\n keyword: [\n "query",\n "mutation",\n "subscription",\n "type",\n "input",\n "schema",\n "directive",\n "interface",\n "union",\n "scalar",\n "fragment",\n "enum",\n "on"\n ],\n literal: [\n "true",\n "false",\n "null"\n ]\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n scope: "punctuation",\n match: /[.]{3}/,\n relevance: 0\n },\n {\n scope: "punctuation",\n begin: /[\\!\\(\\)\\:\\=\\[\\]\\{\\|\\}]{1}/,\n relevance: 0\n },\n {\n scope: "variable",\n begin: /\\$/,\n end: /\\W/,\n excludeEnd: true,\n relevance: 0\n },\n {\n scope: "meta",\n match: /@\\w+/,\n excludeEnd: true\n },\n {\n scope: "symbol",\n begin: regex.concat(GQL_NAME, regex.lookahead(/\\s*:/)),\n relevance: 0\n }\n ],\n illegal: [\n /[;<\']/,\n /BEGIN/\n ]\n };\n}\n\nmodule.exports = graphql;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzA3Mi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixFQUFFO0FBQ3RCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxpQ0FBaUMsSUFBSSxFQUFFLEVBQUU7QUFDekM7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9ncmFwaHFsLmpzP2FjYWQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiBMYW5ndWFnZTogR3JhcGhRTFxuIEF1dGhvcjogSm9obiBGb3N0ZXIgKEdIIGpmOTkwKSwgYW5kIG90aGVyc1xuIERlc2NyaXB0aW9uOiBHcmFwaFFMIGlzIGEgcXVlcnkgbGFuZ3VhZ2UgZm9yIEFQSXNcbiBDYXRlZ29yeTogd2ViLCBjb21tb25cbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBncmFwaHFsKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBHUUxfTkFNRSA9IC9bX0EtWmEtel1bXzAtOUEtWmEtel0qLztcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcIkdyYXBoUUxcIixcbiAgICBhbGlhc2VzOiBbIFwiZ3FsXCIgXSxcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiB0cnVlLFxuICAgIGRpc2FibGVBdXRvZGV0ZWN0OiBmYWxzZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogW1xuICAgICAgICBcInF1ZXJ5XCIsXG4gICAgICAgIFwibXV0YXRpb25cIixcbiAgICAgICAgXCJzdWJzY3JpcHRpb25cIixcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwiaW5wdXRcIixcbiAgICAgICAgXCJzY2hlbWFcIixcbiAgICAgICAgXCJkaXJlY3RpdmVcIixcbiAgICAgICAgXCJpbnRlcmZhY2VcIixcbiAgICAgICAgXCJ1bmlvblwiLFxuICAgICAgICBcInNjYWxhclwiLFxuICAgICAgICBcImZyYWdtZW50XCIsXG4gICAgICAgIFwiZW51bVwiLFxuICAgICAgICBcIm9uXCJcbiAgICAgIF0sXG4gICAgICBsaXRlcmFsOiBbXG4gICAgICAgIFwidHJ1ZVwiLFxuICAgICAgICBcImZhbHNlXCIsXG4gICAgICAgIFwibnVsbFwiXG4gICAgICBdXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBzY29wZTogXCJwdW5jdHVhdGlvblwiLFxuICAgICAgICBtYXRjaDogL1suXXszfS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6IFwicHVuY3R1YXRpb25cIixcbiAgICAgICAgYmVnaW46IC9bXFwhXFwoXFwpXFw6XFw9XFxbXFxdXFx7XFx8XFx9XXsxfS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6IFwidmFyaWFibGVcIixcbiAgICAgICAgYmVnaW46IC9cXCQvLFxuICAgICAgICBlbmQ6IC9cXFcvLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNjb3BlOiBcIm1ldGFcIixcbiAgICAgICAgbWF0Y2g6IC9AXFx3Ky8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNjb3BlOiBcInN5bWJvbFwiLFxuICAgICAgICBiZWdpbjogcmVnZXguY29uY2F0KEdRTF9OQU1FLCByZWdleC5sb29rYWhlYWQoL1xccyo6LykpLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IFtcbiAgICAgIC9bOzwnXS8sXG4gICAgICAvQkVHSU4vXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYXBocWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3072\n')},3139:module=>{eval('/*\nLanguage: Apache config\nAuthor: Ruslan Keba \nContributors: Ivan Sagalaev \nWebsite: https://httpd.apache.org\nDescription: language definition for Apache configuration files (httpd.conf & .htaccess)\nCategory: config, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction apache(hljs) {\n const NUMBER_REF = {\n className: \'number\',\n begin: /[$%]\\d+/\n };\n const NUMBER = {\n className: \'number\',\n begin: /\\b\\d+/\n };\n const IP_ADDRESS = {\n className: "number",\n begin: /\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?/\n };\n const PORT_NUMBER = {\n className: "number",\n begin: /:\\d{1,5}/\n };\n return {\n name: \'Apache config\',\n aliases: [ \'apacheconf\' ],\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: \'section\',\n begin: /<\\/?/,\n end: />/,\n contains: [\n IP_ADDRESS,\n PORT_NUMBER,\n // low relevance prevents us from claming XML/HTML where this rule would\n // match strings inside of XML tags\n hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 })\n ]\n },\n {\n className: \'attribute\',\n begin: /\\w+/,\n relevance: 0,\n // keywords aren’t needed for highlighting per se, they only boost relevance\n // for a very generally defined mode (starts with a word, ends with line-end\n keywords: { _: [\n "order",\n "deny",\n "allow",\n "setenv",\n "rewriterule",\n "rewriteengine",\n "rewritecond",\n "documentroot",\n "sethandler",\n "errordocument",\n "loadmodule",\n "options",\n "header",\n "listen",\n "serverroot",\n "servername"\n ] },\n starts: {\n end: /$/,\n relevance: 0,\n keywords: { literal: \'on off all deny allow\' },\n contains: [\n {\n scope: "punctuation",\n match: /\\\\\\n/\n },\n {\n className: \'meta\',\n begin: /\\s\\[/,\n end: /\\]$/\n },\n {\n className: \'variable\',\n begin: /[\\$%]\\{/,\n end: /\\}/,\n contains: [\n \'self\',\n NUMBER_REF\n ]\n },\n IP_ADDRESS,\n NUMBER,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ],\n illegal: /\\S/\n };\n}\n\nmodule.exports = apache;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEzOS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxjQUFjO0FBQy9EO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0NBQWtDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0Isc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2hpZ2hsaWdodC5qc0AxMS4xMS4xL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvbGliL2xhbmd1YWdlcy9hcGFjaGUuanM/NTZiNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEFwYWNoZSBjb25maWdcbkF1dGhvcjogUnVzbGFuIEtlYmEgPHJ1a2ViYUBnbWFpbC5jb20+XG5Db250cmlidXRvcnM6IEl2YW4gU2FnYWxhZXYgPG1hbmlhY0Bzb2Z0d2FyZW1hbmlhY3Mub3JnPlxuV2Vic2l0ZTogaHR0cHM6Ly9odHRwZC5hcGFjaGUub3JnXG5EZXNjcmlwdGlvbjogbGFuZ3VhZ2UgZGVmaW5pdGlvbiBmb3IgQXBhY2hlIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGh0dHBkLmNvbmYgJiAuaHRhY2Nlc3MpXG5DYXRlZ29yeTogY29uZmlnLCB3ZWJcbkF1ZGl0OiAyMDIwXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gYXBhY2hlKGhsanMpIHtcbiAgY29uc3QgTlVNQkVSX1JFRiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAvWyQlXVxcZCsvXG4gIH07XG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIGJlZ2luOiAvXFxiXFxkKy9cbiAgfTtcbiAgY29uc3QgSVBfQUREUkVTUyA9IHtcbiAgICBjbGFzc05hbWU6IFwibnVtYmVyXCIsXG4gICAgYmVnaW46IC9cXGR7MSwzfVxcLlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfSg6XFxkezEsNX0pPy9cbiAgfTtcbiAgY29uc3QgUE9SVF9OVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIGJlZ2luOiAvOlxcZHsxLDV9L1xuICB9O1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdBcGFjaGUgY29uZmlnJyxcbiAgICBhbGlhc2VzOiBbICdhcGFjaGVjb25mJyBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlY3Rpb24nLFxuICAgICAgICBiZWdpbjogLzxcXC8/LyxcbiAgICAgICAgZW5kOiAvPi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgSVBfQUREUkVTUyxcbiAgICAgICAgICBQT1JUX05VTUJFUixcbiAgICAgICAgICAvLyBsb3cgcmVsZXZhbmNlIHByZXZlbnRzIHVzIGZyb20gY2xhbWluZyBYTUwvSFRNTCB3aGVyZSB0aGlzIHJ1bGUgd291bGRcbiAgICAgICAgICAvLyBtYXRjaCBzdHJpbmdzIGluc2lkZSBvZiBYTUwgdGFnc1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IHJlbGV2YW5jZTogMCB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogL1xcdysvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIC8vIGtleXdvcmRzIGFyZW7igJl0IG5lZWRlZCBmb3IgaGlnaGxpZ2h0aW5nIHBlciBzZSwgdGhleSBvbmx5IGJvb3N0IHJlbGV2YW5jZVxuICAgICAgICAvLyBmb3IgYSB2ZXJ5IGdlbmVyYWxseSBkZWZpbmVkIG1vZGUgKHN0YXJ0cyB3aXRoIGEgd29yZCwgZW5kcyB3aXRoIGxpbmUtZW5kXG4gICAgICAgIGtleXdvcmRzOiB7IF86IFtcbiAgICAgICAgICBcIm9yZGVyXCIsXG4gICAgICAgICAgXCJkZW55XCIsXG4gICAgICAgICAgXCJhbGxvd1wiLFxuICAgICAgICAgIFwic2V0ZW52XCIsXG4gICAgICAgICAgXCJyZXdyaXRlcnVsZVwiLFxuICAgICAgICAgIFwicmV3cml0ZWVuZ2luZVwiLFxuICAgICAgICAgIFwicmV3cml0ZWNvbmRcIixcbiAgICAgICAgICBcImRvY3VtZW50cm9vdFwiLFxuICAgICAgICAgIFwic2V0aGFuZGxlclwiLFxuICAgICAgICAgIFwiZXJyb3Jkb2N1bWVudFwiLFxuICAgICAgICAgIFwibG9hZG1vZHVsZVwiLFxuICAgICAgICAgIFwib3B0aW9uc1wiLFxuICAgICAgICAgIFwiaGVhZGVyXCIsXG4gICAgICAgICAgXCJsaXN0ZW5cIixcbiAgICAgICAgICBcInNlcnZlcnJvb3RcIixcbiAgICAgICAgICBcInNlcnZlcm5hbWVcIlxuICAgICAgICBdIH0sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogLyQvLFxuICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICBrZXl3b3JkczogeyBsaXRlcmFsOiAnb24gb2ZmIGFsbCBkZW55IGFsbG93JyB9LFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNjb3BlOiBcInB1bmN0dWF0aW9uXCIsXG4gICAgICAgICAgICAgIG1hdGNoOiAvXFxcXFxcbi9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICAgICAgICBiZWdpbjogL1xcc1xcWy8sXG4gICAgICAgICAgICAgIGVuZDogL1xcXSQvXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgIGJlZ2luOiAvW1xcJCVdXFx7LyxcbiAgICAgICAgICAgICAgZW5kOiAvXFx9LyxcbiAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgICAgTlVNQkVSX1JFRlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSVBfQUREUkVTUyxcbiAgICAgICAgICAgIE5VTUJFUixcbiAgICAgICAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGlsbGVnYWw6IC9cXFMvXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBhY2hlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3139\n')},3149:module=>{eval("/**\n * callbag-map\n * -----------\n *\n * Callbag operator that applies a transformation on data passing through it.\n * Works on either pullable or listenable sources.\n *\n * `npm install callbag-map`\n *\n * Example:\n *\n * const fromIter = require('callbag-from-iter');\n * const iterate = require('callbag-iterate');\n * const map = require('callbag-map');\n *\n * const source = map(x => x * 0.1)(fromIter([10,20,30,40]));\n *\n * iterate(x => console.log(x))(source); // 1\n * // 2\n * // 3\n * // 4\n */\n\nconst map = f => source => (start, sink) => {\n if (start !== 0) return;\n source(0, (t, d) => {\n sink(t, t === 1 ? f(d) : d)\n });\n};\n\nmodule.exports = map;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE0OS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2NhbGxiYWctbWFwQDEuMS4wL25vZGVfbW9kdWxlcy9jYWxsYmFnLW1hcC9yZWFkbWUuanM/ZGI4NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNhbGxiYWctbWFwXG4gKiAtLS0tLS0tLS0tLVxuICpcbiAqIENhbGxiYWcgb3BlcmF0b3IgdGhhdCBhcHBsaWVzIGEgdHJhbnNmb3JtYXRpb24gb24gZGF0YSBwYXNzaW5nIHRocm91Z2ggaXQuXG4gKiBXb3JrcyBvbiBlaXRoZXIgcHVsbGFibGUgb3IgbGlzdGVuYWJsZSBzb3VyY2VzLlxuICpcbiAqIGBucG0gaW5zdGFsbCBjYWxsYmFnLW1hcGBcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBmcm9tSXRlciA9IHJlcXVpcmUoJ2NhbGxiYWctZnJvbS1pdGVyJyk7XG4gKiAgICAgY29uc3QgaXRlcmF0ZSA9IHJlcXVpcmUoJ2NhbGxiYWctaXRlcmF0ZScpO1xuICogICAgIGNvbnN0IG1hcCA9IHJlcXVpcmUoJ2NhbGxiYWctbWFwJyk7XG4gKlxuICogICAgIGNvbnN0IHNvdXJjZSA9IG1hcCh4ID0+IHggKiAwLjEpKGZyb21JdGVyKFsxMCwyMCwzMCw0MF0pKTtcbiAqXG4gKiAgICAgaXRlcmF0ZSh4ID0+IGNvbnNvbGUubG9nKHgpKShzb3VyY2UpOyAvLyAxXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0XG4gKi9cblxuY29uc3QgbWFwID0gZiA9PiBzb3VyY2UgPT4gKHN0YXJ0LCBzaW5rKSA9PiB7XG4gIGlmIChzdGFydCAhPT0gMCkgcmV0dXJuO1xuICBzb3VyY2UoMCwgKHQsIGQpID0+IHtcbiAgICBzaW5rKHQsIHQgPT09IDEgPyBmKGQpIDogZClcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3149\n")},3165:module=>{eval("/*\nLanguage: Vim Script\nAuthor: Jun Yang \nDescription: full keyword and built-in from http://vimdoc.sourceforge.net/htmldoc/\nWebsite: https://www.vim.org\nCategory: scripting\n*/\n\nfunction vim(hljs) {\n return {\n name: 'Vim Script',\n keywords: {\n $pattern: /[!#@\\w]+/,\n keyword:\n // express version except: ! & * < = > !! # @ @@\n 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope '\n + 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc '\n + 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 '\n + 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor '\n + 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew '\n + 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ '\n // full version\n + 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload '\n + 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap '\n + 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor '\n + 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap '\n + 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview '\n + 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap '\n + 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext '\n + 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding '\n + 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace '\n + 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious ' + 'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew '\n + 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\n built_in: // built in func\n 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv '\n + 'complete_check add getwinposx getqflist getwinposy screencol '\n + 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg '\n + 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable '\n + 'shiftwidth max sinh isdirectory synID system inputrestore winline '\n + 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck '\n + 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline '\n + 'taglist string getmatches bufnr strftime winwidth bufexists '\n + 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist '\n + 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval '\n + 'resolve libcallnr foldclosedend reverse filter has_key bufname '\n + 'str2float strlen setline getcharmod setbufvar index searchpos '\n + 'shellescape undofile foldclosed setqflist buflisted strchars str2nr '\n + 'virtcol floor remove undotree remote_expr winheight gettabwinvar '\n + 'reltime cursor tabpagenr finddir localtime acos getloclist search '\n + 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval '\n + 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded '\n + 'synconcealed nextnonblank server2client complete settabwinvar '\n + 'executable input wincol setmatches getftype hlID inputsave '\n + 'searchpair or screenrow line settabvar histadd deepcopy strpart '\n + 'remote_peek and eval getftime submatch screenchar winsaveview '\n + 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize '\n + 'winnr invert pow getbufline byte2line soundfold repeat fnameescape '\n + 'tagfiles sin strwidth spellbadword trunc maparg log lispindent '\n + 'hostname setpos globpath remote_foreground getchar synIDattr '\n + 'fnamemodify cscope_connection stridx winbufnr indent min '\n + 'complete_add nr2char searchpairpos inputdialog values matchlist '\n + 'items hlexists strridx browsedir expand fmod pathshorten line2byte '\n + 'argc count getwinvar glob foldtextresult getreg foreground cosh '\n + 'matchdelete has char2nr simplify histget searchdecl iconv '\n + 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos '\n + 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar '\n + 'islocked escape eventhandler remote_send serverlist winrestview '\n + 'synstack pyeval prevnonblank readfile cindent filereadable changenr '\n + 'exp'\n },\n illegal: /;/,\n contains: [\n hljs.NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n'\n },\n\n /*\n A double quote can start either a string or a line comment. Strings are\n ended before the end of a line by another double quote and can contain\n escaped double-quotes and post-escaped line breaks.\n\n Also, any double quote at the beginning of a line is a comment but we\n don't handle that properly at the moment: any double quote inside will\n turn them into a string. Handling it properly will require a smarter\n parser.\n */\n {\n className: 'string',\n begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\n },\n hljs.COMMENT('\"', '$'),\n\n {\n className: 'variable',\n begin: /[bwtglsav]:[\\w\\d_]+/\n },\n {\n begin: [\n /\\b(?:function|function!)/,\n /\\s+/,\n hljs.IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n },\n end: '$',\n relevance: 0,\n contains: [\n {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)'\n }\n ]\n },\n {\n className: 'symbol',\n begin: /<[\\w-]+>/\n }\n ]\n };\n}\n\nmodule.exports = vim;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE2NS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vYnNpZGlhbi1taW5kbWFwLW5leHRnZW4vLi9ub2RlX21vZHVsZXMvLnBucG0vaGlnaGxpZ2h0LmpzQDExLjExLjEvbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvbGFuZ3VhZ2VzL3ZpbS5qcz84NDFiIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogVmltIFNjcmlwdFxuQXV0aG9yOiBKdW4gWWFuZyA8eWFuZ2p2bkAxMjYuY29tPlxuRGVzY3JpcHRpb246IGZ1bGwga2V5d29yZCBhbmQgYnVpbHQtaW4gZnJvbSBodHRwOi8vdmltZG9jLnNvdXJjZWZvcmdlLm5ldC9odG1sZG9jL1xuV2Vic2l0ZTogaHR0cHM6Ly93d3cudmltLm9yZ1xuQ2F0ZWdvcnk6IHNjcmlwdGluZ1xuKi9cblxuZnVuY3Rpb24gdmltKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnVmltIFNjcmlwdCcsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAvWyEjQFxcd10rLyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC8vIGV4cHJlc3MgdmVyc2lvbiBleGNlcHQ6ICEgJiAqIDwgPSA+ICEhICMgQCBAQFxuICAgICAgICAnTnwwIFB8MCBYfDAgYXwwIGFiIGFiYyBhYm8gYWwgYW0gYW58MCBhciBhcmdhIGFyZ2QgYXJnZSBhcmdkbyBhcmdnIGFyZ2wgYXJndSBhcyBhdSBhdWcgYXVuIGJ8MCBiTiBiYSBiYWQgYmQgYmUgYmVsIGJmIGJsIGJtIGJuIGJvIGJwIGJyIGJyZWEgYnJlYWthIGJyZWFrZCBicmVha2wgYnJvIGJ1ZmRvIGJ1ZmZlcnMgYnVuIGJ3IGN8MCBjTiBjTmYgY2EgY2FiYyBjYWRkYiBjYWQgY2FkZGYgY2FsIGNhdCBjYiBjYyBjY2wgY2QgY2UgY2V4IGNmIGNmaXIgY2dldGIgY2dldGUgY2cgY2hhbmdlcyBjaGQgY2hlIGNoZWNrdCBjbCBjbGEgY2xvIGNtIGNtYXBjIGNtZSBjbiBjbmV3IGNuZiBjbm8gY25vcmVhIGNub3JlbWUgY28gY29sIGNvbG8gY29tIGNvbWMgY29tcCBjb24gY29uZiBjb3BlICdcbiAgICAgICAgKyAnY3AgY3BmIGNxIGNyIGNzIGNzdCBjdSBjdW5hIGN1bm1lIGN3IGRlbG0gZGViIGRlYnVnZyBkZWxjIGRlbGYgZGlmIGRpZmZnIGRpZmZvIGRpZmZwIGRpZmZwdSBkaWZmcyBkaWZmdGhpcyBkaWcgZGkgZGwgZGVsbCBkaiBkbGkgZG8gZG9hdXRvYSBkcCBkciBkcyBkc3AgZXwwIGVhIGVjIGVjaG9lIGVjaG9oIGVjaG9tIGVjaG9uIGVsIGVsc2VpIGVtIGVuIGVuZGZvIGVuZGYgZW5kdCBlbmR3IGVuZSBleCBleGUgZXhpIGV4dSBmfDAgZmlsZXMgZmlsZXQgZmluIGZpbmEgZmluaSBmaXIgZml4IGZvIGZvbGRjIGZvbGRkIGZvbGRkb2MgZm9sZG8gZm9yIGZ1IGdvIGdyIGdyZXBhIGd1IGd2IGhhIGhlbHBmIGhlbHBnIGhlbHB0IGhpIGhpZCBoaXMgaWEgaWFiYyBpZiBpaiBpbCBpbSBpbWFwYyAnXG4gICAgICAgICsgJ2ltZSBpbm8gaW5vcmVhIGlub3JlbWUgaW50IGlzIGlzcCBpdSBpdW5hIGl1bm1lIGp8MCBqdSBrfDAga2VlcGEga2VlIGtlZXBqIGxOIGxOZiBsfDAgbGFkIGxhZGRiIGxhZGRmIGxhIGxhbiBsYXQgbGIgbGMgbGNoIGxjbCBsY3MgbGUgbGVmdGEgbGV0IGxleCBsZiBsZmlyIGxnZXRiIGxnZXRlIGxnIGxnciBsZ3JlcGEgbGggbGwgbGxhIGxsaSBsbWFrIGxtIGxtYXBjIGxuZSBsbmV3IGxuZiBsbiBsb2FkayBsbyBsb2MgbG9ja3YgbG9sIGxvcGUgbHAgbHBmIGxyIGxzIGx0IGx1IGx1YSBsdWFkIGx1YWYgbHYgbHZpbWdyZXBhIGx3IG18MCBtYSBtYWsgbWFwIG1hcGMgbWFya3MgbWF0IG1lIG1lbnV0IG1lcyBtayBta3MgbWtzcCBta3YgbWt2aWUgbW9kIG16IG16ZiBuYmMgbmIgbmJzIG5ldyBubSBubWFwYyBubWUgbm4gbm5vcmVtZSBub2Egbm8gbm9oIG5vcmVhIG5vcmVtZSBub3JtIG51IG51biBudW5tZSBvbCBvfDAgb20gb21hcGMgb21lIG9uIG9ubyBvbm9yZW1lIG9wdCBvdSBvdW5tZSBvdyBwfDAgJ1xuICAgICAgICArICdwcm9mZCBwcm9mIHBybyBwcm9tcHRyIHBjIHBlZCBwZSBwZXJsZCBwbyBwb3B1IHBwIHByZSBwcmV2IHBzIHB0IHB0TiBwdGYgcHRqIHB0bCBwdG4gcHRwIHB0ciBwdHMgcHUgcHcgcHkzIHB5dGhvbjMgcHkzZCBweTNmIHB5IHB5ZCBweWYgcXVpdGEgcWEgcmVjIHJlZCByZWRpIHJlZHIgcmVkcmF3cyByZWcgcmVzIHJldCByZXR1IHJldyByaSByaWdodGIgcnViIHJ1YnlkIHJ1YnlmIHJ1bmQgcnUgcnYgc04gc2FuIHNhIHNhbCBzYXYgc2Igc2JOIHNiYSBzYmYgc2JsIHNibSBzYm4gc2JwIHNiciBzY3JpcCBzY3JpcHRlIHNjcyBzZSBzZXRmIHNldGcgc2V0bCBzZiBzZmlyIHNoIHNpbSBzaWcgc2lsIHNsIHNsYSBzbSBzbWFwIHNtYXBjIHNtZSBzbiBzbmkgc25vIHNub3Igc25vcmVtZSBzb3IgJ1xuICAgICAgICArICdzbyBzcGVsbGQgc3BlIHNwZWxsaSBzcGVsbHIgc3BlbGx1IHNwZWxsdyBzcCBzcHIgc3JlIHN0IHN0YSBzdGFydGcgc3RhcnRyIHN0YXIgc3RvcGkgc3RqIHN0cyBzdW4gc3VubSBzdW5tZSBzdXMgc3Ygc3cgc3kgc3ludGkgc3luYyB0TiB0YWJOIHRhYmMgdGFiZG8gdGFiZSB0YWJmIHRhYmZpciB0YWJsIHRhYm0gdGFibmV3ICdcbiAgICAgICAgKyAndGFibiB0YWJvIHRhYnAgdGFiciB0YWJzIHRhYiB0YSB0YWdzIHRjIHRjbGQgdGNsZiB0ZSB0ZiB0aCB0aiB0bCB0bSB0biB0byB0cCB0ciB0cnkgdHMgdHUgdXwwIHVuZG9qIHVuZG9sIHVuYSB1bmggdW5sIHVubG8gdW5tIHVubWUgdW5zIHVwIHZlIHZlcmIgdmVydCB2aW0gdmltZ3JlcGEgdmkgdml1IHZpZSB2bSB2bWFwYyB2bWUgdm5lIHZuIHZub3JlbWUgdnMgdnUgdnVubWUgd2luZG8gd3wwIHdOIHdhIHdoIHdpIHdpbmMgd2lucCB3biB3cCB3cSB3cWEgd3Mgd3Ugd3YgeHwwIHhhIHhtYXBjIHhtIHhtZSB4biB4bm9yZW1lIHh1IHh1bm1lIHl8MCB6fDAgfiAnXG4gICAgICAgIC8vIGZ1bGwgdmVyc2lvblxuICAgICAgICArICdOZXh0IFByaW50IGFwcGVuZCBhYmJyZXZpYXRlIGFiY2xlYXIgYWJvdmVsZWZ0IGFsbCBhbWVudSBhbm9yZW1lbnUgYXJncyBhcmdhZGQgYXJnZGVsZXRlIGFyZ2VkaXQgYXJnZ2xvYmFsIGFyZ2xvY2FsIGFyZ3VtZW50IGFzY2lpIGF1dG9jbWQgYXVncm91cCBhdW5tZW51IGJ1ZmZlciBiTmV4dCBiYWxsIGJhZGQgYmRlbGV0ZSBiZWhhdmUgYmVsb3dyaWdodCBiZmlyc3QgYmxhc3QgYm1vZGlmaWVkIGJuZXh0IGJvdHJpZ2h0IGJwcmV2aW91cyBicmV3aW5kIGJyZWFrIGJyZWFrYWRkIGJyZWFrZGVsIGJyZWFrbGlzdCBicm93c2UgYnVubG9hZCAnXG4gICAgICAgICsgJ2J3aXBlb3V0IGNoYW5nZSBjTmV4dCBjTmZpbGUgY2FiYnJldiBjYWJjbGVhciBjYWRkYnVmZmVyIGNhZGRleHByIGNhZGRmaWxlIGNhbGwgY2F0Y2ggY2J1ZmZlciBjY2xvc2UgY2VudGVyIGNleHByIGNmaWxlIGNmaXJzdCBjZ2V0YnVmZmVyIGNnZXRleHByIGNnZXRmaWxlIGNoZGlyIGNoZWNrcGF0aCBjaGVja3RpbWUgY2xpc3QgY2xhc3QgY2xvc2UgY21hcCBjbWFwY2xlYXIgY21lbnUgY25leHQgY25ld2VyIGNuZmlsZSBjbm9yZW1hcCBjbm9yZWFiYnJldiBjbm9yZW1lbnUgY29weSBjb2xkZXIgY29sb3JzY2hlbWUgY29tbWFuZCBjb21jbGVhciBjb21waWxlciBjb250aW51ZSBjb25maXJtIGNvcGVuIGNwcmV2aW91cyBjcGZpbGUgY3F1aXQgY3Jld2luZCBjc2NvcGUgY3N0YWcgY3VubWFwICdcbiAgICAgICAgKyAnY3VuYWJicmV2IGN1bm1lbnUgY3dpbmRvdyBkZWxldGUgZGVsbWFya3MgZGVidWcgZGVidWdncmVlZHkgZGVsY29tbWFuZCBkZWxmdW5jdGlvbiBkaWZmdXBkYXRlIGRpZmZnZXQgZGlmZm9mZiBkaWZmcGF0Y2ggZGlmZnB1dCBkaWZmc3BsaXQgZGlncmFwaHMgZGlzcGxheSBkZWxldGVsIGRqdW1wIGRsaXN0IGRvYXV0b2NtZCBkb2F1dG9hbGwgZGVsZXRlcCBkcm9wIGRzZWFyY2ggZHNwbGl0IGVkaXQgZWFybGllciBlY2hvIGVjaG9lcnIgZWNob2hsIGVjaG9tc2cgZWxzZSBlbHNlaWYgZW1lbnUgZW5kaWYgZW5kZm9yICdcbiAgICAgICAgKyAnZW5kZnVuY3Rpb24gZW5kdHJ5IGVuZHdoaWxlIGVuZXcgZXhlY3V0ZSBleGl0IGV4dXNhZ2UgZmlsZSBmaWxldHlwZSBmaW5kIGZpbmFsbHkgZmluaXNoIGZpcnN0IGZpeGRlbCBmb2xkIGZvbGRjbG9zZSBmb2xkZG9vcGVuIGZvbGRkb2Nsb3NlZCBmb2xkb3BlbiBmdW5jdGlvbiBnbG9iYWwgZ290byBncmVwIGdyZXBhZGQgZ3VpIGd2aW0gaGFyZGNvcHkgaGVscCBoZWxwZmluZCBoZWxwZ3JlcCBoZWxwdGFncyBoaWdobGlnaHQgaGlkZSBoaXN0b3J5IGluc2VydCBpYWJicmV2IGlhYmNsZWFyIGlqdW1wIGlsaXN0IGltYXAgJ1xuICAgICAgICArICdpbWFwY2xlYXIgaW1lbnUgaW5vcmVtYXAgaW5vcmVhYmJyZXYgaW5vcmVtZW51IGludHJvIGlzZWFyY2ggaXNwbGl0IGl1bm1hcCBpdW5hYmJyZXYgaXVubWVudSBqb2luIGp1bXBzIGtlZXBhbHQga2VlcG1hcmtzIGtlZXBqdW1wcyBsTmV4dCBsTmZpbGUgbGlzdCBsYWRkZXhwciBsYWRkYnVmZmVyIGxhZGRmaWxlIGxhc3QgbGFuZ3VhZ2UgbGF0ZXIgbGJ1ZmZlciBsY2QgbGNoZGlyIGxjbG9zZSBsY3Njb3BlIGxlZnQgbGVmdGFib3ZlIGxleHByIGxmaWxlIGxmaXJzdCBsZ2V0YnVmZmVyIGxnZXRleHByIGxnZXRmaWxlIGxncmVwIGxncmVwYWRkIGxoZWxwZ3JlcCBsbGFzdCBsbGlzdCBsbWFrZSBsbWFwIGxtYXBjbGVhciBsbmV4dCBsbmV3ZXIgbG5maWxlIGxub3JlbWFwIGxvYWRrZXltYXAgbG9hZHZpZXcgJ1xuICAgICAgICArICdsb2NrbWFya3MgbG9ja3ZhciBsb2xkZXIgbG9wZW4gbHByZXZpb3VzIGxwZmlsZSBscmV3aW5kIGx0YWcgbHVubWFwIGx1YWRvIGx1YWZpbGUgbHZpbWdyZXAgbHZpbWdyZXBhZGQgbHdpbmRvdyBtb3ZlIG1hcmsgbWFrZSBtYXBjbGVhciBtYXRjaCBtZW51IG1lbnV0cmFuc2xhdGUgbWVzc2FnZXMgbWtleHJjIG1rc2Vzc2lvbiBta3NwZWxsIG1rdmltcmMgbWt2aWV3IG1vZGUgbXpzY2hlbWUgbXpmaWxlIG5iY2xvc2UgbmJrZXkgbmJzYXJ0IG5leHQgbm1hcCBubWFwY2xlYXIgbm1lbnUgbm5vcmVtYXAgJ1xuICAgICAgICArICdubm9yZW1lbnUgbm9hdXRvY21kIG5vcmVtYXAgbm9obHNlYXJjaCBub3JlYWJicmV2IG5vcmVtZW51IG5vcm1hbCBudW1iZXIgbnVubWFwIG51bm1lbnUgb2xkZmlsZXMgb3BlbiBvbWFwIG9tYXBjbGVhciBvbWVudSBvbmx5IG9ub3JlbWFwIG9ub3JlbWVudSBvcHRpb25zIG91bm1hcCBvdW5tZW51IG93bnN5bnRheCBwcmludCBwcm9mZGVsIHByb2ZpbGUgcHJvbXB0ZmluZCBwcm9tcHRyZXBsIHBjbG9zZSBwZWRpdCBwZXJsIHBlcmxkbyBwb3AgcG9wdXAgcHBvcCBwcmVzZXJ2ZSBwcmV2aW91cyBwc2VhcmNoIHB0YWcgcHROZXh0ICdcbiAgICAgICAgKyAncHRmaXJzdCBwdGp1bXAgcHRsYXN0IHB0bmV4dCBwdHByZXZpb3VzIHB0cmV3aW5kIHB0c2VsZWN0IHB1dCBwd2QgcHkzZG8gcHkzZmlsZSBweXRob24gcHlkbyBweWZpbGUgcXVpdCBxdWl0YWxsIHFhbGwgcmVhZCByZWNvdmVyIHJlZG8gcmVkaXIgcmVkcmF3IHJlZHJhd3N0YXR1cyByZWdpc3RlcnMgcmVzaXplIHJldGFiIHJldHVybiByZXdpbmQgcmlnaHQgcmlnaHRiZWxvdyBydWJ5IHJ1YnlkbyBydWJ5ZmlsZSBydW5kbyBydW50aW1lIHJ2aW1pbmZvIHN1YnN0aXR1dGUgc05leHQgc2FuZGJveCBzYXJndW1lbnQgc2FsbCBzYXZlYXMgc2J1ZmZlciBzYk5leHQgc2JhbGwgc2JmaXJzdCBzYmxhc3Qgc2Jtb2RpZmllZCBzYm5leHQgc2JwcmV2aW91cyBzYnJld2luZCBzY3JpcHRuYW1lcyBzY3JpcHRlbmNvZGluZyAnXG4gICAgICAgICsgJ3Njc2NvcGUgc2V0IHNldGZpbGV0eXBlIHNldGdsb2JhbCBzZXRsb2NhbCBzZmluZCBzZmlyc3Qgc2hlbGwgc2ltYWx0IHNpZ24gc2lsZW50IHNsZWVwIHNsYXN0IHNtYWdpYyBzbWFwY2xlYXIgc21lbnUgc25leHQgc25pZmYgc25vbWFnaWMgc25vcmVtYXAgc25vcmVtZW51IHNvcnQgc291cmNlIHNwZWxsZHVtcCBzcGVsbGdvb2Qgc3BlbGxpbmZvIHNwZWxscmVwYWxsIHNwZWxsdW5kbyBzcGVsbHdyb25nIHNwbGl0IHNwcmV2aW91cyBzcmV3aW5kIHN0b3Agc3RhZyBzdGFydGdyZXBsYWNlIHN0YXJ0cmVwbGFjZSAnXG4gICAgICAgICsgJ3N0YXJ0aW5zZXJ0IHN0b3BpbnNlcnQgc3RqdW1wIHN0c2VsZWN0IHN1bmhpZGUgc3VubWFwIHN1bm1lbnUgc3VzcGVuZCBzdmlldyBzd2FwbmFtZSBzeW50YXggc3ludGltZSBzeW5jYmluZCB0TmV4dCB0YWJOZXh0IHRhYmNsb3NlIHRhYmVkaXQgdGFiZmluZCB0YWJmaXJzdCB0YWJsYXN0IHRhYm1vdmUgdGFibmV4dCB0YWJvbmx5IHRhYnByZXZpb3VzIHRhYnJld2luZCB0YWcgdGNsIHRjbGRvIHRjbGZpbGUgdGVhcm9mZiB0Zmlyc3QgdGhyb3cgdGp1bXAgdGxhc3QgdG1lbnUgdG5leHQgdG9wbGVmdCB0cHJldmlvdXMgJyArICd0cmV3aW5kIHRzZWxlY3QgdHVubWVudSB1bmRvIHVuZG9qb2luIHVuZG9saXN0IHVuYWJicmV2aWF0ZSB1bmhpZGUgdW5sZXQgdW5sb2NrdmFyIHVubWFwIHVubWVudSB1bnNpbGVudCB1cGRhdGUgdmdsb2JhbCB2ZXJzaW9uIHZlcmJvc2UgdmVydGljYWwgdmltZ3JlcCB2aW1ncmVwYWRkIHZpc3VhbCB2aXVzYWdlIHZpZXcgdm1hcCB2bWFwY2xlYXIgdm1lbnUgdm5ldyAnXG4gICAgICAgICsgJ3Zub3JlbWFwIHZub3JlbWVudSB2c3BsaXQgdnVubWFwIHZ1bm1lbnUgd3JpdGUgd05leHQgd2FsbCB3aGlsZSB3aW5zaXplIHdpbmNtZCB3aW5wb3Mgd25leHQgd3ByZXZpb3VzIHdxYWxsIHdzdmVyYiB3dW5kbyB3dmltaW5mbyB4aXQgeGFsbCB4bWFwY2xlYXIgeG1hcCB4bWVudSB4bm9yZW1hcCB4bm9yZW1lbnUgeHVubWFwIHh1bm1lbnUgeWFuaycsXG4gICAgICBidWlsdF9pbjogLy8gYnVpbHQgaW4gZnVuY1xuICAgICAgICAnc3luSUR0cmFucyBhdGFuMiByYW5nZSBtYXRjaGFyZyBkaWRfZmlsZXR5cGUgYXNpbiBmZWVka2V5cyB4b3IgYXJndiAnXG4gICAgICAgICsgJ2NvbXBsZXRlX2NoZWNrIGFkZCBnZXR3aW5wb3N4IGdldHFmbGlzdCBnZXR3aW5wb3N5IHNjcmVlbmNvbCAnXG4gICAgICAgICsgJ2NsZWFybWF0Y2hlcyBlbXB0eSBleHRlbmQgZ2V0Y21kcG9zIG16ZXZhbCBnYXJiYWdlY29sbGVjdCBzZXRyZWcgJ1xuICAgICAgICArICdjZWlsIHNxcnQgZGlmZl9obElEIGlucHV0c2VjcmV0IGdldCBnZXRmcGVybSBnZXRwaWQgZmlsZXdyaXRhYmxlICdcbiAgICAgICAgKyAnc2hpZnR3aWR0aCBtYXggc2luaCBpc2RpcmVjdG9yeSBzeW5JRCBzeXN0ZW0gaW5wdXRyZXN0b3JlIHdpbmxpbmUgJ1xuICAgICAgICArICdhdGFuIHZpc3VhbG1vZGUgaW5wdXRsaXN0IHRhYnBhZ2V3aW5uciByb3VuZCBnZXRyZWd0eXBlIG1hcGNoZWNrICdcbiAgICAgICAgKyAnaGFzbWFwdG8gaGlzdGRlbCBhcmdpZHggZmluZGZpbGUgc2hhMjU2IGV4aXN0cyB0b3VwcGVyIGdldGNtZGxpbmUgJ1xuICAgICAgICArICd0YWdsaXN0IHN0cmluZyBnZXRtYXRjaGVzIGJ1Zm5yIHN0cmZ0aW1lIHdpbndpZHRoIGJ1ZmV4aXN0cyAnXG4gICAgICAgICsgJ3N0cnRyYW5zIHRhYnBhZ2VidWZsaXN0IHNldGNtZHBvcyByZW1vdGVfcmVhZCBwcmludGYgc2V0bG9jbGlzdCAnXG4gICAgICAgICsgJ2dldHBvcyBnZXRsaW5lIGJ1Zndpbm5yIGZsb2F0Mm5yIGxlbiBnZXRjbWR0eXBlIGRpZmZfZmlsbGVyIGx1YWV2YWwgJ1xuICAgICAgICArICdyZXNvbHZlIGxpYmNhbGxuciBmb2xkY2xvc2VkZW5kIHJldmVyc2UgZmlsdGVyIGhhc19rZXkgYnVmbmFtZSAnXG4gICAgICAgICsgJ3N0cjJmbG9hdCBzdHJsZW4gc2V0bGluZSBnZXRjaGFybW9kIHNldGJ1ZnZhciBpbmRleCBzZWFyY2hwb3MgJ1xuICAgICAgICArICdzaGVsbGVzY2FwZSB1bmRvZmlsZSBmb2xkY2xvc2VkIHNldHFmbGlzdCBidWZsaXN0ZWQgc3RyY2hhcnMgc3RyMm5yICdcbiAgICAgICAgKyAndmlydGNvbCBmbG9vciByZW1vdmUgdW5kb3RyZWUgcmVtb3RlX2V4cHIgd2luaGVpZ2h0IGdldHRhYndpbnZhciAnXG4gICAgICAgICsgJ3JlbHRpbWUgY3Vyc29yIHRhYnBhZ2VuciBmaW5kZGlyIGxvY2FsdGltZSBhY29zIGdldGxvY2xpc3Qgc2VhcmNoICdcbiAgICAgICAgKyAndGFuaCBtYXRjaGVuZCByZW5hbWUgZ2V0dGFidmFyIHN0cmRpc3BsYXl3aWR0aCB0eXBlIGFicyBweTNldmFsICdcbiAgICAgICAgKyAnc2V0d2ludmFyIHRvbG93ZXIgd2lsZG1lbnVtb2RlIGxvZzEwIHNwZWxsc3VnZ2VzdCBidWZsb2FkZWQgJ1xuICAgICAgICArICdzeW5jb25jZWFsZWQgbmV4dG5vbmJsYW5rIHNlcnZlcjJjbGllbnQgY29tcGxldGUgc2V0dGFid2ludmFyICdcbiAgICAgICAgKyAnZXhlY3V0YWJsZSBpbnB1dCB3aW5jb2wgc2V0bWF0Y2hlcyBnZXRmdHlwZSBobElEIGlucHV0c2F2ZSAnXG4gICAgICAgICsgJ3NlYXJjaHBhaXIgb3Igc2NyZWVucm93IGxpbmUgc2V0dGFidmFyIGhpc3RhZGQgZGVlcGNvcHkgc3RycGFydCAnXG4gICAgICAgICsgJ3JlbW90ZV9wZWVrIGFuZCBldmFsIGdldGZ0aW1lIHN1Ym1hdGNoIHNjcmVlbmNoYXIgd2luc2F2ZXZpZXcgJ1xuICAgICAgICArICdtYXRjaGFkZCBta2RpciBzY3JlZW5hdHRyIGdldGZvbnRuYW1lIGxpYmNhbGwgcmVsdGltZXN0ciBnZXRmc2l6ZSAnXG4gICAgICAgICsgJ3dpbm5yIGludmVydCBwb3cgZ2V0YnVmbGluZSBieXRlMmxpbmUgc291bmRmb2xkIHJlcGVhdCBmbmFtZWVzY2FwZSAnXG4gICAgICAgICsgJ3RhZ2ZpbGVzIHNpbiBzdHJ3aWR0aCBzcGVsbGJhZHdvcmQgdHJ1bmMgbWFwYXJnIGxvZyBsaXNwaW5kZW50ICdcbiAgICAgICAgKyAnaG9zdG5hbWUgc2V0cG9zIGdsb2JwYXRoIHJlbW90ZV9mb3JlZ3JvdW5kIGdldGNoYXIgc3luSURhdHRyICdcbiAgICAgICAgKyAnZm5hbWVtb2RpZnkgY3Njb3BlX2Nvbm5lY3Rpb24gc3RyaWR4IHdpbmJ1Zm5yIGluZGVudCBtaW4gJ1xuICAgICAgICArICdjb21wbGV0ZV9hZGQgbnIyY2hhciBzZWFyY2hwYWlycG9zIGlucHV0ZGlhbG9nIHZhbHVlcyBtYXRjaGxpc3QgJ1xuICAgICAgICArICdpdGVtcyBobGV4aXN0cyBzdHJyaWR4IGJyb3dzZWRpciBleHBhbmQgZm1vZCBwYXRoc2hvcnRlbiBsaW5lMmJ5dGUgJ1xuICAgICAgICArICdhcmdjIGNvdW50IGdldHdpbnZhciBnbG9iIGZvbGR0ZXh0cmVzdWx0IGdldHJlZyBmb3JlZ3JvdW5kIGNvc2ggJ1xuICAgICAgICArICdtYXRjaGRlbGV0ZSBoYXMgY2hhcjJuciBzaW1wbGlmeSBoaXN0Z2V0IHNlYXJjaGRlY2wgaWNvbnYgJ1xuICAgICAgICArICd3aW5yZXN0Y21kIHB1bXZpc2libGUgd3JpdGVmaWxlIGZvbGRsZXZlbCBoYXNsb2NhbGRpciBrZXlzIGNvcyAnXG4gICAgICAgICsgJ21hdGNoc3RyIGZvbGR0ZXh0IGhpc3RuciB0YW4gdGVtcG5hbWUgZ2V0Y3dkIGJ5dGVpZHggZ2V0YnVmdmFyICdcbiAgICAgICAgKyAnaXNsb2NrZWQgZXNjYXBlIGV2ZW50aGFuZGxlciByZW1vdGVfc2VuZCBzZXJ2ZXJsaXN0IHdpbnJlc3R2aWV3ICdcbiAgICAgICAgKyAnc3luc3RhY2sgcHlldmFsIHByZXZub25ibGFuayByZWFkZmlsZSBjaW5kZW50IGZpbGVyZWFkYWJsZSBjaGFuZ2VuciAnXG4gICAgICAgICsgJ2V4cCdcbiAgICB9LFxuICAgIGlsbGVnYWw6IC87LyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnXFxcXG4nXG4gICAgICB9LFxuXG4gICAgICAvKlxuICAgICAgQSBkb3VibGUgcXVvdGUgY2FuIHN0YXJ0IGVpdGhlciBhIHN0cmluZyBvciBhIGxpbmUgY29tbWVudC4gU3RyaW5ncyBhcmVcbiAgICAgIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9mIGEgbGluZSBieSBhbm90aGVyIGRvdWJsZSBxdW90ZSBhbmQgY2FuIGNvbnRhaW5cbiAgICAgIGVzY2FwZWQgZG91YmxlLXF1b3RlcyBhbmQgcG9zdC1lc2NhcGVkIGxpbmUgYnJlYWtzLlxuXG4gICAgICBBbHNvLCBhbnkgZG91YmxlIHF1b3RlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIGlzIGEgY29tbWVudCBidXQgd2VcbiAgICAgIGRvbid0IGhhbmRsZSB0aGF0IHByb3Blcmx5IGF0IHRoZSBtb21lbnQ6IGFueSBkb3VibGUgcXVvdGUgaW5zaWRlIHdpbGxcbiAgICAgIHR1cm4gdGhlbSBpbnRvIGEgc3RyaW5nLiBIYW5kbGluZyBpdCBwcm9wZXJseSB3aWxsIHJlcXVpcmUgYSBzbWFydGVyXG4gICAgICBwYXJzZXIuXG4gICAgICAqL1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogL1wiKFxcXFxcInxcXG5cXFxcfFteXCJcXG5dKSpcIi9cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoJ1wiJywgJyQnKSxcblxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgIGJlZ2luOiAvW2J3dGdsc2F2XTpbXFx3XFxkX10rL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICAvXFxiKD86ZnVuY3Rpb258ZnVuY3Rpb24hKS8sXG4gICAgICAgICAgL1xccysvLFxuICAgICAgICAgIGhsanMuSURFTlRfUkVcbiAgICAgICAgXSxcbiAgICAgICAgY2xhc3NOYW1lOiB7XG4gICAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgMzogXCJ0aXRsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgICAgICAgICAgZW5kOiAnXFxcXCknXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogLzxbXFx3LV0rPi9cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmltO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3165\n")},3166:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar Alias = __webpack_require__(9424);\nvar Collection = __webpack_require__(9782);\nvar identity = __webpack_require__(5900);\nvar Pair = __webpack_require__(1094);\nvar toJS = __webpack_require__(2412);\nvar Schema = __webpack_require__(7033);\nvar stringifyDocument = __webpack_require__(1408);\nvar anchors = __webpack_require__(9357);\nvar applyReviver = __webpack_require__(9154);\nvar createNode = __webpack_require__(3547);\nvar directives = __webpack_require__(2665);\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE2Ni5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixZQUFZLG1CQUFPLENBQUMsSUFBbUI7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsSUFBd0I7QUFDakQsZUFBZSxtQkFBTyxDQUFDLElBQXNCO0FBQzdDLFdBQVcsbUJBQU8sQ0FBQyxJQUFrQjtBQUNyQyxXQUFXLG1CQUFPLENBQUMsSUFBa0I7QUFDckMsYUFBYSxtQkFBTyxDQUFDLElBQXFCO0FBQzFDLHdCQUF3QixtQkFBTyxDQUFDLElBQW1DO0FBQ25FLGNBQWMsbUJBQU8sQ0FBQyxJQUFjO0FBQ3BDLG1CQUFtQixtQkFBTyxDQUFDLElBQW1CO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLElBQWlCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLElBQWlCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxxQkFBcUI7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLGNBQWMsVUFBVTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsU0FBUztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxXQUFXO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDBFQUEwRTtBQUMxRixnQkFBZ0Isc0NBQXNDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsZ0JBQWdCO0FBQ2xGLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0UsU0FBUztBQUMzRSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtGQUErRixHQUFHO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsaUJBQWlCO0FBQzlFO0FBQ0E7QUFDQSxXQUFXLDREQUE0RCxJQUFJO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGFBQWE7QUFDdEM7QUFDQTtBQUNBLG1EQUFtRCxTQUFTO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixnREFBZ0Q7QUFDM0U7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0VBQStFLEVBQUU7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQiIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS95YW1sQDIuNy4wL25vZGVfbW9kdWxlcy95YW1sL2Rpc3QvZG9jL0RvY3VtZW50LmpzPzk2MDciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQWxpYXMgPSByZXF1aXJlKCcuLi9ub2Rlcy9BbGlhcy5qcycpO1xudmFyIENvbGxlY3Rpb24gPSByZXF1aXJlKCcuLi9ub2Rlcy9Db2xsZWN0aW9uLmpzJyk7XG52YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuLi9ub2Rlcy9pZGVudGl0eS5qcycpO1xudmFyIFBhaXIgPSByZXF1aXJlKCcuLi9ub2Rlcy9QYWlyLmpzJyk7XG52YXIgdG9KUyA9IHJlcXVpcmUoJy4uL25vZGVzL3RvSlMuanMnKTtcbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEvU2NoZW1hLmpzJyk7XG52YXIgc3RyaW5naWZ5RG9jdW1lbnQgPSByZXF1aXJlKCcuLi9zdHJpbmdpZnkvc3RyaW5naWZ5RG9jdW1lbnQuanMnKTtcbnZhciBhbmNob3JzID0gcmVxdWlyZSgnLi9hbmNob3JzLmpzJyk7XG52YXIgYXBwbHlSZXZpdmVyID0gcmVxdWlyZSgnLi9hcHBseVJldml2ZXIuanMnKTtcbnZhciBjcmVhdGVOb2RlID0gcmVxdWlyZSgnLi9jcmVhdGVOb2RlLmpzJyk7XG52YXIgZGlyZWN0aXZlcyA9IHJlcXVpcmUoJy4vZGlyZWN0aXZlcy5qcycpO1xuXG5jbGFzcyBEb2N1bWVudCB7XG4gICAgY29uc3RydWN0b3IodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIC8qKiBBIGNvbW1lbnQgYmVmb3JlIHRoaXMgRG9jdW1lbnQgKi9cbiAgICAgICAgdGhpcy5jb21tZW50QmVmb3JlID0gbnVsbDtcbiAgICAgICAgLyoqIEEgY29tbWVudCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIERvY3VtZW50ICovXG4gICAgICAgIHRoaXMuY29tbWVudCA9IG51bGw7XG4gICAgICAgIC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIHBhcnNpbmcuICovXG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIC8qKiBXYXJuaW5ncyBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZy4gKi9cbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgaWRlbnRpdHkuTk9ERV9UWVBFLCB7IHZhbHVlOiBpZGVudGl0eS5ET0MgfSk7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nIHx8IEFycmF5LmlzQXJyYXkocmVwbGFjZXIpKSB7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgaW50QXNCaWdJbnQ6IGZhbHNlLFxuICAgICAgICAgICAga2VlcFNvdXJjZVRva2VuczogZmFsc2UsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3dhcm4nLFxuICAgICAgICAgICAgcHJldHR5RXJyb3JzOiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgc3RyaW5nS2V5czogZmFsc2UsXG4gICAgICAgICAgICB1bmlxdWVLZXlzOiB0cnVlLFxuICAgICAgICAgICAgdmVyc2lvbjogJzEuMidcbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdDtcbiAgICAgICAgbGV0IHsgdmVyc2lvbiB9ID0gb3B0O1xuICAgICAgICBpZiAob3B0aW9ucz8uX2RpcmVjdGl2ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG9wdGlvbnMuX2RpcmVjdGl2ZXMuYXREb2N1bWVudCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcy55YW1sLmV4cGxpY2l0KVxuICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBkaXJlY3RpdmVzLkRpcmVjdGl2ZXMoeyB2ZXJzaW9uIH0pO1xuICAgICAgICB0aGlzLnNldFNjaGVtYSh2ZXJzaW9uLCBvcHRpb25zKTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgdGhpcy5jb250ZW50cyA9XG4gICAgICAgICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHRoaXMuY3JlYXRlTm9kZSh2YWx1ZSwgX3JlcGxhY2VyLCBvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgZGVlcCBjb3B5IG9mIHRoaXMgRG9jdW1lbnQgYW5kIGl0cyBjb250ZW50cy5cbiAgICAgKlxuICAgICAqIEN1c3RvbSBOb2RlIHZhbHVlcyB0aGF0IGluaGVyaXQgZnJvbSBgT2JqZWN0YCBzdGlsbCByZWZlciB0byB0aGVpciBvcmlnaW5hbCBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKERvY3VtZW50LnByb3RvdHlwZSwge1xuICAgICAgICAgICAgW2lkZW50aXR5Lk5PREVfVFlQRV06IHsgdmFsdWU6IGlkZW50aXR5LkRPQyB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb3B5LmNvbW1lbnRCZWZvcmUgPSB0aGlzLmNvbW1lbnRCZWZvcmU7XG4gICAgICAgIGNvcHkuY29tbWVudCA9IHRoaXMuY29tbWVudDtcbiAgICAgICAgY29weS5lcnJvcnMgPSB0aGlzLmVycm9ycy5zbGljZSgpO1xuICAgICAgICBjb3B5Lndhcm5pbmdzID0gdGhpcy53YXJuaW5ncy5zbGljZSgpO1xuICAgICAgICBjb3B5Lm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICBpZiAodGhpcy5kaXJlY3RpdmVzKVxuICAgICAgICAgICAgY29weS5kaXJlY3RpdmVzID0gdGhpcy5kaXJlY3RpdmVzLmNsb25lKCk7XG4gICAgICAgIGNvcHkuc2NoZW1hID0gdGhpcy5zY2hlbWEuY2xvbmUoKTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgY29weS5jb250ZW50cyA9IGlkZW50aXR5LmlzTm9kZSh0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRzLmNsb25lKGNvcHkuc2NoZW1hKVxuICAgICAgICAgICAgOiB0aGlzLmNvbnRlbnRzO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIGNvcHkucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgICAvKiogQWRkcyBhIHZhbHVlIHRvIHRoZSBkb2N1bWVudC4gKi9cbiAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgaWYgKGFzc2VydENvbGxlY3Rpb24odGhpcy5jb250ZW50cykpXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzLmFkZCh2YWx1ZSk7XG4gICAgfVxuICAgIC8qKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGRvY3VtZW50LiAqL1xuICAgIGFkZEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpKVxuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5hZGRJbihwYXRoLCB2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBgQWxpYXNgIG5vZGUsIGVuc3VyaW5nIHRoYXQgdGhlIHRhcmdldCBgbm9kZWAgaGFzIHRoZSByZXF1aXJlZCBhbmNob3IuXG4gICAgICpcbiAgICAgKiBJZiBgbm9kZWAgYWxyZWFkeSBoYXMgYW4gYW5jaG9yLCBgbmFtZWAgaXMgaWdub3JlZC5cbiAgICAgKiBPdGhlcndpc2UsIHRoZSBgbm9kZS5hbmNob3JgIHZhbHVlIHdpbGwgYmUgc2V0IHRvIGBuYW1lYCxcbiAgICAgKiBvciBpZiBhbiBhbmNob3Igd2l0aCB0aGF0IG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBkb2N1bWVudCxcbiAgICAgKiBgbmFtZWAgd2lsbCBiZSB1c2VkIGFzIGEgcHJlZml4IGZvciBhIG5ldyB1bmlxdWUgYW5jaG9yLlxuICAgICAqIElmIGBuYW1lYCBpcyB1bmRlZmluZWQsIHRoZSBnZW5lcmF0ZWQgYW5jaG9yIHdpbGwgdXNlICdhJyBhcyBhIHByZWZpeC5cbiAgICAgKi9cbiAgICBjcmVhdGVBbGlhcyhub2RlLCBuYW1lKSB7XG4gICAgICAgIGlmICghbm9kZS5hbmNob3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBhbmNob3JzLmFuY2hvck5hbWVzKHRoaXMpO1xuICAgICAgICAgICAgbm9kZS5hbmNob3IgPVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW51bGxpc2gtY29hbGVzY2luZ1xuICAgICAgICAgICAgICAgICFuYW1lIHx8IHByZXYuaGFzKG5hbWUpID8gYW5jaG9ycy5maW5kTmV3QW5jaG9yKG5hbWUgfHwgJ2EnLCBwcmV2KSA6IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBbGlhcy5BbGlhcyhub2RlLmFuY2hvcik7XG4gICAgfVxuICAgIGNyZWF0ZU5vZGUodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZXIuY2FsbCh7ICcnOiB2YWx1ZSB9LCAnJywgdmFsdWUpO1xuICAgICAgICAgICAgX3JlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleVRvU3RyID0gKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyB8fCB2IGluc3RhbmNlb2YgU3RyaW5nIHx8IHYgaW5zdGFuY2VvZiBOdW1iZXI7XG4gICAgICAgICAgICBjb25zdCBhc1N0ciA9IHJlcGxhY2VyLmZpbHRlcihrZXlUb1N0cikubWFwKFN0cmluZyk7XG4gICAgICAgICAgICBpZiAoYXNTdHIubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICByZXBsYWNlciA9IHJlcGxhY2VyLmNvbmNhdChhc1N0cik7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWxpYXNEdXBsaWNhdGVPYmplY3RzLCBhbmNob3JQcmVmaXgsIGZsb3csIGtlZXBVbmRlZmluZWQsIG9uVGFnT2JqLCB0YWcgfSA9IG9wdGlvbnMgPz8ge307XG4gICAgICAgIGNvbnN0IHsgb25BbmNob3IsIHNldEFuY2hvcnMsIHNvdXJjZU9iamVjdHMgfSA9IGFuY2hvcnMuY3JlYXRlTm9kZUFuY2hvcnModGhpcywgXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW51bGxpc2gtY29hbGVzY2luZ1xuICAgICAgICBhbmNob3JQcmVmaXggfHwgJ2EnKTtcbiAgICAgICAgY29uc3QgY3R4ID0ge1xuICAgICAgICAgICAgYWxpYXNEdXBsaWNhdGVPYmplY3RzOiBhbGlhc0R1cGxpY2F0ZU9iamVjdHMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGtlZXBVbmRlZmluZWQ6IGtlZXBVbmRlZmluZWQgPz8gZmFsc2UsXG4gICAgICAgICAgICBvbkFuY2hvcixcbiAgICAgICAgICAgIG9uVGFnT2JqLFxuICAgICAgICAgICAgcmVwbGFjZXI6IF9yZXBsYWNlcixcbiAgICAgICAgICAgIHNjaGVtYTogdGhpcy5zY2hlbWEsXG4gICAgICAgICAgICBzb3VyY2VPYmplY3RzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5vZGUgPSBjcmVhdGVOb2RlLmNyZWF0ZU5vZGUodmFsdWUsIHRhZywgY3R4KTtcbiAgICAgICAgaWYgKGZsb3cgJiYgaWRlbnRpdHkuaXNDb2xsZWN0aW9uKG5vZGUpKVxuICAgICAgICAgICAgbm9kZS5mbG93ID0gdHJ1ZTtcbiAgICAgICAgc2V0QW5jaG9ycygpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIGtleSBhbmQgYSB2YWx1ZSBpbnRvIGEgYFBhaXJgIHVzaW5nIHRoZSBjdXJyZW50IHNjaGVtYSxcbiAgICAgKiByZWN1cnNpdmVseSB3cmFwcGluZyBhbGwgdmFsdWVzIGFzIGBTY2FsYXJgIG9yIGBDb2xsZWN0aW9uYCBub2Rlcy5cbiAgICAgKi9cbiAgICBjcmVhdGVQYWlyKGtleSwgdmFsdWUsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCBrID0gdGhpcy5jcmVhdGVOb2RlKGtleSwgbnVsbCwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZU5vZGUodmFsdWUsIG51bGwsIG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gbmV3IFBhaXIuUGFpcihrLCB2KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSA/IHRoaXMuY29udGVudHMuZGVsZXRlKGtleSkgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlSW4ocGF0aCkge1xuICAgICAgICBpZiAoQ29sbGVjdGlvbi5pc0VtcHR5UGF0aChwYXRoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudHMgPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFByZXN1bWVkIGltcG9zc2libGUgaWYgU3RyaWN0IGV4dGVuZHMgZmFsc2VcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzc2VydENvbGxlY3Rpb24odGhpcy5jb250ZW50cylcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy5kZWxldGVJbihwYXRoKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIGF0IGBrZXlgLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgZm91bmQuIEJ5IGRlZmF1bHQgdW53cmFwc1xuICAgICAqIHNjYWxhciB2YWx1ZXMgZnJvbSB0aGVpciBzdXJyb3VuZGluZyBub2RlOyB0byBkaXNhYmxlIHNldCBga2VlcFNjYWxhcmAgdG9cbiAgICAgKiBgdHJ1ZWAgKGNvbGxlY3Rpb25zIGFyZSBhbHdheXMgcmV0dXJuZWQgaW50YWN0KS5cbiAgICAgKi9cbiAgICBnZXQoa2V5LCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eS5pc0NvbGxlY3Rpb24odGhpcy5jb250ZW50cylcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy5nZXQoa2V5LCBrZWVwU2NhbGFyKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaXRlbSBhdCBgcGF0aGAsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZC4gQnkgZGVmYXVsdCB1bndyYXBzXG4gICAgICogc2NhbGFyIHZhbHVlcyBmcm9tIHRoZWlyIHN1cnJvdW5kaW5nIG5vZGU7IHRvIGRpc2FibGUgc2V0IGBrZWVwU2NhbGFyYCB0b1xuICAgICAqIGB0cnVlYCAoY29sbGVjdGlvbnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbnRhY3QpLlxuICAgICAqL1xuICAgIGdldEluKHBhdGgsIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgaWYgKENvbGxlY3Rpb24uaXNFbXB0eVBhdGgocGF0aCkpXG4gICAgICAgICAgICByZXR1cm4gIWtlZXBTY2FsYXIgJiYgaWRlbnRpdHkuaXNTY2FsYXIodGhpcy5jb250ZW50cylcbiAgICAgICAgICAgICAgICA/IHRoaXMuY29udGVudHMudmFsdWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuY29udGVudHM7XG4gICAgICAgIHJldHVybiBpZGVudGl0eS5pc0NvbGxlY3Rpb24odGhpcy5jb250ZW50cylcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy5nZXRJbihwYXRoLCBrZWVwU2NhbGFyKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZG9jdW1lbnQgaW5jbHVkZXMgYSB2YWx1ZSB3aXRoIHRoZSBrZXkgYGtleWAuXG4gICAgICovXG4gICAgaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHkuaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy5oYXMoa2V5KSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGRvY3VtZW50IGluY2x1ZGVzIGEgdmFsdWUgYXQgYHBhdGhgLlxuICAgICAqL1xuICAgIGhhc0luKHBhdGgpIHtcbiAgICAgICAgaWYgKENvbGxlY3Rpb24uaXNFbXB0eVBhdGgocGF0aCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50cyAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gaWRlbnRpdHkuaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy5oYXNJbihwYXRoKSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdmFsdWUgaW4gdGhpcyBkb2N1bWVudC4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICovXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBDb2xsZWN0aW9uLmNvbGxlY3Rpb25Gcm9tUGF0aCh0aGlzLnNjaGVtYSwgW2tleV0sIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdmFsdWUgaW4gdGhpcyBkb2N1bWVudC4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICovXG4gICAgc2V0SW4ocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKENvbGxlY3Rpb24uaXNFbXB0eVBhdGgocGF0aCkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb250ZW50cyA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGNhbid0IHJlYWxseSBrbm93IHRoYXQgdGhpcyBtYXRjaGVzIENvbnRlbnRzLlxuICAgICAgICAgICAgdGhpcy5jb250ZW50cyA9IENvbGxlY3Rpb24uY29sbGVjdGlvbkZyb21QYXRoKHRoaXMuc2NoZW1hLCBBcnJheS5mcm9tKHBhdGgpLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXRJbihwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBZQU1MIHZlcnNpb24gYW5kIHNjaGVtYSB1c2VkIGJ5IHRoZSBkb2N1bWVudC5cbiAgICAgKiBBIGBudWxsYCB2ZXJzaW9uIGRpc2FibGVzIHN1cHBvcnQgZm9yIGRpcmVjdGl2ZXMsIGV4cGxpY2l0IHRhZ3MsIGFuY2hvcnMsIGFuZCBhbGlhc2VzLlxuICAgICAqIEl0IGFsc28gcmVxdWlyZXMgdGhlIGBzY2hlbWFgIG9wdGlvbiB0byBiZSBnaXZlbiBhcyBhIGBTY2hlbWFgIGluc3RhbmNlIHZhbHVlLlxuICAgICAqXG4gICAgICogT3ZlcnJpZGVzIGFsbCBwcmV2aW91c2x5IHNldCBzY2hlbWEgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBzZXRTY2hlbWEodmVyc2lvbiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICB2ZXJzaW9uID0gU3RyaW5nKHZlcnNpb24pO1xuICAgICAgICBsZXQgb3B0O1xuICAgICAgICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbiA9ICcxLjEnO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gbmV3IGRpcmVjdGl2ZXMuRGlyZWN0aXZlcyh7IHZlcnNpb246ICcxLjEnIH0pO1xuICAgICAgICAgICAgICAgIG9wdCA9IHsgcmVzb2x2ZUtub3duVGFnczogZmFsc2UsIHNjaGVtYTogJ3lhbWwtMS4xJyB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMS4yJzpcbiAgICAgICAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcy55YW1sLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gbmV3IGRpcmVjdGl2ZXMuRGlyZWN0aXZlcyh7IHZlcnNpb24gfSk7XG4gICAgICAgICAgICAgICAgb3B0ID0geyByZXNvbHZlS25vd25UYWdzOiB0cnVlLCBzY2hlbWE6ICdjb3JlJyB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZXMpXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpcmVjdGl2ZXM7XG4gICAgICAgICAgICAgICAgb3B0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdiA9IEpTT04uc3RyaW5naWZ5KHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJzEuMScsICcxLjInIG9yIG51bGwgYXMgZmlyc3QgYXJndW1lbnQsIGJ1dCBmb3VuZDogJHtzdn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBOb3QgdXNpbmcgYGluc3RhbmNlb2YgU2NoZW1hYCB0byBhbGxvdyBmb3IgZHVjayB0eXBpbmdcbiAgICAgICAgaWYgKG9wdGlvbnMuc2NoZW1hIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgICAgICAgICAgdGhpcy5zY2hlbWEgPSBvcHRpb25zLnNjaGVtYTtcbiAgICAgICAgZWxzZSBpZiAob3B0KVxuICAgICAgICAgICAgdGhpcy5zY2hlbWEgPSBuZXcgU2NoZW1hLlNjaGVtYShPYmplY3QuYXNzaWduKG9wdCwgb3B0aW9ucykpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpdGggYSBudWxsIFlBTUwgdmVyc2lvbiwgdGhlIHsgc2NoZW1hOiBTY2hlbWEgfSBvcHRpb24gaXMgcmVxdWlyZWRgKTtcbiAgICB9XG4gICAgLy8ganNvbiAmIGpzb25BcmcgYXJlIG9ubHkgdXNlZCBmcm9tIHRvSlNPTigpXG4gICAgdG9KUyh7IGpzb24sIGpzb25BcmcsIG1hcEFzTWFwLCBtYXhBbGlhc0NvdW50LCBvbkFuY2hvciwgcmV2aXZlciB9ID0ge30pIHtcbiAgICAgICAgY29uc3QgY3R4ID0ge1xuICAgICAgICAgICAgYW5jaG9yczogbmV3IE1hcCgpLFxuICAgICAgICAgICAgZG9jOiB0aGlzLFxuICAgICAgICAgICAga2VlcDogIWpzb24sXG4gICAgICAgICAgICBtYXBBc01hcDogbWFwQXNNYXAgPT09IHRydWUsXG4gICAgICAgICAgICBtYXBLZXlXYXJuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWF4QWxpYXNDb3VudDogdHlwZW9mIG1heEFsaWFzQ291bnQgPT09ICdudW1iZXInID8gbWF4QWxpYXNDb3VudCA6IDEwMFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXMgPSB0b0pTLnRvSlModGhpcy5jb250ZW50cywganNvbkFyZyA/PyAnJywgY3R4KTtcbiAgICAgICAgaWYgKHR5cGVvZiBvbkFuY2hvciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBjb3VudCwgcmVzIH0gb2YgY3R4LmFuY2hvcnMudmFsdWVzKCkpXG4gICAgICAgICAgICAgICAgb25BbmNob3IocmVzLCBjb3VudCk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgcmV2aXZlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBhcHBseVJldml2ZXIuYXBwbHlSZXZpdmVyKHJldml2ZXIsIHsgJyc6IHJlcyB9LCAnJywgcmVzKVxuICAgICAgICAgICAgOiByZXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQgYGNvbnRlbnRzYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBqc29uQXJnIFVzZWQgYnkgYEpTT04uc3RyaW5naWZ5YCB0byBpbmRpY2F0ZSB0aGUgYXJyYXkgaW5kZXggb3JcbiAgICAgKiAgIHByb3BlcnR5IG5hbWUuXG4gICAgICovXG4gICAgdG9KU09OKGpzb25BcmcsIG9uQW5jaG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvSlMoeyBqc29uOiB0cnVlLCBqc29uQXJnLCBtYXBBc01hcDogZmFsc2UsIG9uQW5jaG9yIH0pO1xuICAgIH1cbiAgICAvKiogQSBZQU1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkb2N1bWVudC4gKi9cbiAgICB0b1N0cmluZyhvcHRpb25zID0ge30pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JzLmxlbmd0aCA+IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RvY3VtZW50IHdpdGggZXJyb3JzIGNhbm5vdCBiZSBzdHJpbmdpZmllZCcpO1xuICAgICAgICBpZiAoJ2luZGVudCcgaW4gb3B0aW9ucyAmJlxuICAgICAgICAgICAgKCFOdW1iZXIuaXNJbnRlZ2VyKG9wdGlvbnMuaW5kZW50KSB8fCBOdW1iZXIob3B0aW9ucy5pbmRlbnQpIDw9IDApKSB7XG4gICAgICAgICAgICBjb25zdCBzID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5pbmRlbnQpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcImluZGVudFwiIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgbm90ICR7c31gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyaW5naWZ5RG9jdW1lbnQuc3RyaW5naWZ5RG9jdW1lbnQodGhpcywgb3B0aW9ucyk7XG4gICAgfVxufVxuZnVuY3Rpb24gYXNzZXJ0Q29sbGVjdGlvbihjb250ZW50cykge1xuICAgIGlmIChpZGVudGl0eS5pc0NvbGxlY3Rpb24oY29udGVudHMpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgWUFNTCBjb2xsZWN0aW9uIGFzIGRvY3VtZW50IGNvbnRlbnRzJyk7XG59XG5cbmV4cG9ydHMuRG9jdW1lbnQgPSBEb2N1bWVudDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3166\n")},3168:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nconst engines = __webpack_require__(163);\nconst utils = __webpack_require__(8549);\n\nmodule.exports = function(options) {\n const opts = Object.assign({}, options);\n\n // ensure that delimiters are an array\n opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---');\n if (opts.delimiters.length === 1) {\n opts.delimiters.push(opts.delimiters[0]);\n }\n\n opts.language = (opts.language || opts.lang || 'yaml').toLowerCase();\n opts.engines = Object.assign({}, engines, opts.parsers, opts.engines);\n return opts;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzE2OC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixnQkFBZ0IsbUJBQU8sQ0FBQyxHQUFXO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxJQUFTOztBQUUvQjtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb2JzaWRpYW4tbWluZG1hcC1uZXh0Z2VuLy4vbm9kZV9tb2R1bGVzLy5wbnBtL2dyYXktbWF0dGVyQDQuMC4zL25vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9saWIvZGVmYXVsdHMuanM/ZDk5OSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGVuZ2luZXMgPSByZXF1aXJlKCcuL2VuZ2luZXMnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpO1xuXG4gIC8vIGVuc3VyZSB0aGF0IGRlbGltaXRlcnMgYXJlIGFuIGFycmF5XG4gIG9wdHMuZGVsaW1pdGVycyA9IHV0aWxzLmFycmF5aWZ5KG9wdHMuZGVsaW1zIHx8IG9wdHMuZGVsaW1pdGVycyB8fCAnLS0tJyk7XG4gIGlmIChvcHRzLmRlbGltaXRlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgb3B0cy5kZWxpbWl0ZXJzLnB1c2gob3B0cy5kZWxpbWl0ZXJzWzBdKTtcbiAgfVxuXG4gIG9wdHMubGFuZ3VhZ2UgPSAob3B0cy5sYW5ndWFnZSB8fCBvcHRzLmxhbmcgfHwgJ3lhbWwnKS50b0xvd2VyQ2FzZSgpO1xuICBvcHRzLmVuZ2luZXMgPSBPYmplY3QuYXNzaWduKHt9LCBlbmdpbmVzLCBvcHRzLnBhcnNlcnMsIG9wdHMuZW5naW5lcyk7XG4gIHJldHVybiBvcHRzO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3168\n")},3206:module=>{eval("/*\nLanguage: C#\nAuthor: Jason Diamond \nContributor: Nicolas LLOBERA , Pieter Vantorre , David Pine \nWebsite: https://docs.microsoft.com/dotnet/csharp/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction csharp(hljs) {\n const BUILT_IN_KEYWORDS = [\n 'bool',\n 'byte',\n 'char',\n 'decimal',\n 'delegate',\n 'double',\n 'dynamic',\n 'enum',\n 'float',\n 'int',\n 'long',\n 'nint',\n 'nuint',\n 'object',\n 'sbyte',\n 'short',\n 'string',\n 'ulong',\n 'uint',\n 'ushort'\n ];\n const FUNCTION_MODIFIERS = [\n 'public',\n 'private',\n 'protected',\n 'static',\n 'internal',\n 'protected',\n 'abstract',\n 'async',\n 'extern',\n 'override',\n 'unsafe',\n 'virtual',\n 'new',\n 'sealed',\n 'partial'\n ];\n const LITERAL_KEYWORDS = [\n 'default',\n 'false',\n 'null',\n 'true'\n ];\n const NORMAL_KEYWORDS = [\n 'abstract',\n 'as',\n 'base',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'const',\n 'continue',\n 'do',\n 'else',\n 'event',\n 'explicit',\n 'extern',\n 'finally',\n 'fixed',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'namespace',\n 'new',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'record',\n 'ref',\n 'return',\n 'scoped',\n 'sealed',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'typeof',\n 'unchecked',\n 'unsafe',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while'\n ];\n const CONTEXTUAL_KEYWORDS = [\n 'add',\n 'alias',\n 'and',\n 'ascending',\n 'args',\n 'async',\n 'await',\n 'by',\n 'descending',\n 'dynamic',\n 'equals',\n 'file',\n 'from',\n 'get',\n 'global',\n 'group',\n 'init',\n 'into',\n 'join',\n 'let',\n 'nameof',\n 'not',\n 'notnull',\n 'on',\n 'or',\n 'orderby',\n 'partial',\n 'record',\n 'remove',\n 'required',\n 'scoped',\n 'select',\n 'set',\n 'unmanaged',\n 'value|0',\n 'var',\n 'when',\n 'where',\n 'with',\n 'yield'\n ];\n\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\\\.?\\\\w)*' });\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n const RAW_STRING = {\n className: 'string',\n begin: /\"\"\"(\"*)(?!\")(.|\\n)*?\"\"\"\\1/,\n relevance: 1\n };\n const VERBATIM_STRING = {\n className: 'string',\n begin: '@\"',\n end: '\"',\n contains: [ { begin: '\"\"' } ]\n };\n const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\\n/ });\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\\n/ });\n const INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/,\n end: '\"',\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n hljs.BACKSLASH_ESCAPE,\n SUBST_NO_LF\n ]\n };\n const INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/,\n end: '\"',\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST\n ]\n };\n const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST_NO_LF\n ]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\\n/ })\n ];\n const STRING = { variants: [\n RAW_STRING,\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ] };\n\n const GENERIC_MODIFIER = {\n begin: \"<\",\n end: \">\",\n contains: [\n { beginKeywords: \"in out\" },\n TITLE_MODE\n ]\n };\n const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n const AT_IDENTIFIER = {\n // prevents expressions like `@class` from incorrect flagging\n // `class` as a keyword\n begin: \"@\" + hljs.IDENT_RE,\n relevance: 0\n };\n\n return {\n name: 'C#',\n aliases: [\n 'cs',\n 'c#'\n ],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///',\n relevance: 0\n },\n { begin: '\x3c!--|--\x3e' },\n {\n begin: ''\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n { beginKeywords: \"where class\" },\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'record',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[(?=[\\\\w])',\n excludeBegin: true,\n end: '\\\\]',\n excludeEnd: true,\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n end: /\\s*[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n // prevents these from being highlighted `title`\n {\n beginKeywords: FUNCTION_MODIFIERS.join(\" \"),\n relevance: 0\n },\n {\n begin: hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n GENERIC_MODIFIER\n ],\n relevance: 0\n },\n { match: /\\(\\)/ },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n AT_IDENTIFIER\n ]\n };\n}\n\nmodule.exports = csharp;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIwNi5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELDZCQUE2QjtBQUNsRjtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlCQUF5QjtBQUNqQyxRQUFRLDZFQUE2RTtBQUNyRixRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEM7QUFDQSxnRUFBZ0UsZUFBZTtBQUMvRTtBQUNBO0FBQ0EsY0FBYztBQUNkLFlBQVk7QUFDWjtBQUNBO0FBQ0EsNENBQTRDLGVBQWU7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxVQUFVLEVBQUUsR0FBRztBQUN2QixRQUFRLFVBQVUsRUFBRSxHQUFHO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsVUFBVSxFQUFFLEdBQUc7QUFDdkIsUUFBUSxVQUFVLEVBQUUsR0FBRztBQUN2QixRQUFRLGFBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxVQUFVLEVBQUUsR0FBRztBQUN2QixRQUFRLFVBQVUsRUFBRSxHQUFHO0FBQ3ZCLFFBQVEsYUFBYTtBQUNyQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGVBQWU7QUFDN0Q7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlCQUF5QjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFlBQVksOEJBQThCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsWUFBWSxlQUFlO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL29ic2lkaWFuLW1pbmRtYXAtbmV4dGdlbi8uL25vZGVfbW9kdWxlcy8ucG5wbS9oaWdobGlnaHQuanNAMTEuMTEuMS9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9sYW5ndWFnZXMvY3NoYXJwLmpzPzA2Y2YiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBDI1xuQXV0aG9yOiBKYXNvbiBEaWFtb25kIDxqYXNvbkBkaWFtb25kLm5hbWU+XG5Db250cmlidXRvcjogTmljb2xhcyBMTE9CRVJBIDxubGxvYmVyYUBnbWFpbC5jb20+LCBQaWV0ZXIgVmFudG9ycmUgPHBpZXRlcnZhbnRvcnJlQGdtYWlsLmNvbT4sIERhdmlkIFBpbmUgPGRhdmlkLnBpbmVAbWljcm9zb2Z0LmNvbT5cbldlYnNpdGU6IGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2RvdG5ldC9jc2hhcnAvXG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gY3NoYXJwKGhsanMpIHtcbiAgY29uc3QgQlVJTFRfSU5fS0VZV09SRFMgPSBbXG4gICAgJ2Jvb2wnLFxuICAgICdieXRlJyxcbiAgICAnY2hhcicsXG4gICAgJ2RlY2ltYWwnLFxuICAgICdkZWxlZ2F0ZScsXG4gICAgJ2RvdWJsZScsXG4gICAgJ2R5bmFtaWMnLFxuICAgICdlbnVtJyxcbiAgICAnZmxvYXQnLFxuICAgICdpbnQnLFxuICAgICdsb25nJyxcbiAgICAnbmludCcsXG4gICAgJ251aW50JyxcbiAgICAnb2JqZWN0JyxcbiAgICAnc2J5dGUnLFxuICAgICdzaG9ydCcsXG4gICAgJ3N0cmluZycsXG4gICAgJ3Vsb25nJyxcbiAgICAndWludCcsXG4gICAgJ3VzaG9ydCdcbiAgXTtcbiAgY29uc3QgRlVOQ1RJT05fTU9ESUZJRVJTID0gW1xuICAgICdwdWJsaWMnLFxuICAgICdwcml2YXRlJyxcbiAgICAncHJvdGVjdGVkJyxcbiAgICAnc3RhdGljJyxcbiAgICAnaW50ZXJuYWwnLFxuICAgICdwcm90ZWN0ZWQnLFxuICAgICdhYnN0cmFjdCcsXG4gICAgJ2FzeW5jJyxcbiAgICAnZXh0ZXJuJyxcbiAgICAnb3ZlcnJpZGUnLFxuICAgICd1bnNhZmUnLFxuICAgICd2aXJ0dWFsJyxcbiAgICAnbmV3JyxcbiAgICAnc2VhbGVkJyxcbiAgICAncGFydGlhbCdcbiAgXTtcbiAgY29uc3QgTElURVJBTF9LRVlXT1JEUyA9IFtcbiAgICAnZGVmYXVsdCcsXG4gICAgJ2ZhbHNlJyxcbiAgICAnbnVsbCcsXG4gICAgJ3RydWUnXG4gIF07XG4gIGNvbnN0IE5PUk1BTF9LRVlXT1JEUyA9IFtcbiAgICAnYWJzdHJhY3QnLFxuICAgICdhcycsXG4gICAgJ2Jhc2UnLFxuICAgICdicmVhaycsXG4gICAgJ2Nhc2UnLFxuICAgICdjYXRjaCcsXG4gICAgJ2NsYXNzJyxcbiAgICAnY29uc3QnLFxuICAgICdjb250aW51ZScsXG4gICAgJ2RvJyxcbiAgICAnZWxzZScsXG4gICAgJ2V2ZW50JyxcbiAgICAnZXhwbGljaXQnLFxuICAgICdleHRlcm4nLFxuICAgICdmaW5hbGx5JyxcbiAgICAnZml4ZWQnLFxuICAgICdmb3InLFxuICAgICdmb3JlYWNoJyxcbiAgICAnZ290bycsXG4gICAgJ2lmJyxcbiAgICAnaW1wbGljaXQnLFxuICAgICdpbicsXG4gICAgJ2ludGVyZmFjZScsXG4gICAgJ2ludGVybmFsJyxcbiAgICAnaXMnLFxuICAgICdsb2NrJyxcbiAgICAnbmFtZXNwYWNlJyxcbiAgICAnbmV3JyxcbiAgICAnb3BlcmF0b3InLFxuICAgICdvdXQnLFxuICAgICdvdmVycmlkZScsXG4gICAgJ3BhcmFtcycsXG4gICAgJ3ByaXZhdGUnLFxuICAgICdwcm90ZWN0ZWQnLFxuICAgICdwdWJsaWMnLFxuICAgICdyZWFkb25seScsXG4gICAgJ3JlY29yZCcsXG4gICAgJ3JlZicsXG4gICAgJ3JldHVybicsXG4gICAgJ3Njb3BlZCcsXG4gICAgJ3NlYWxlZCcsXG4gICAgJ3NpemVvZicsXG4gICAgJ3N0YWNrYWxsb2MnLFxuICAgICdzdGF0aWMnLFxuICAgICdzdHJ1Y3QnLFxuICAgICdzd2l0Y2gnLFxuICAgICd0aGlzJyxcbiAgICAndGhyb3cnLFxuICAgICd0cnknLFxuICAgICd0eXBlb2YnLFxuICAgICd1bmNoZWNrZWQnLFxuICAgICd1bnNhZmUnLFxuICAgICd1c2luZycsXG4gICAgJ3ZpcnR1YWwnLFxuICAgICd2b2lkJyxcbiAgICAndm9sYXRpbGUnLFxuICAgICd3aGlsZSdcbiAgXTtcbiAgY29uc3QgQ09OVEVYVFVBTF9LRVlXT1JEUyA9IFtcbiAgICAnYWRkJyxcbiAgICAnYWxpYXMnLFxuICAgICdhbmQnLFxuICAgICdhc2NlbmRpbmcnLFxuICAgICdhcmdzJyxcbiAgICAnYXN5bmMnLFxuICAgICdhd2FpdCcsXG4gICAgJ2J5JyxcbiAgICAnZGVzY2VuZGluZycsXG4gICAgJ2R5bmFtaWMnLFxuICAgICdlcXVhbHMnLFxuICAgICdmaWxlJyxcbiAgICAnZnJvbScsXG4gICAgJ2dldCcsXG4gICAgJ2dsb2JhbCcsXG4gICAgJ2dyb3VwJyxcbiAgICAnaW5pdCcsXG4gICAgJ2ludG8nLFxuICAgICdqb2luJyxcbiAgICAnbGV0JyxcbiAgICAnbmFtZW9mJyxcbiAgICAnbm90JyxcbiAgICAnbm90bnVsbCcsXG4gICAgJ29uJyxcbiAgICAnb3InLFxuICAgICdvcmRlcmJ5JyxcbiAgICAncGFydGlhbCcsXG4gICAgJ3JlY29yZCcsXG4gICAgJ3JlbW92ZScsXG4gICAgJ3JlcXVpcmVkJyxcbiAgICAnc2NvcGVkJyxcbiAgICAnc2VsZWN0JyxcbiAgICAnc2V0JyxcbiAgICAndW5tYW5hZ2VkJyxcbiAgICAndmFsdWV8MCcsXG4gICAgJ3ZhcicsXG4gICAgJ3doZW4nLFxuICAgICd3aGVyZScsXG4gICAgJ3dpdGgnLFxuICAgICd5aWVsZCdcbiAgXTtcblxuICBjb25zdCBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOiBOT1JNQUxfS0VZV09SRFMuY29uY2F0KENPTlRFWFRVQUxfS0VZV09SRFMpLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTl9LRVlXT1JEUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMX0tFWVdPUkRTXG4gIH07XG4gIGNvbnN0IFRJVExFX01PREUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7IGJlZ2luOiAnW2EtekEtWl0oXFxcXC4/XFxcXHcpKicgfSk7XG4gIGNvbnN0IE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgUkFXX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCJcIlwiKFwiKikoPyFcIikoLnxcXG4pKj9cIlwiXCJcXDEvLFxuICAgIHJlbGV2YW5jZTogMVxuICB9O1xuICBjb25zdCBWRVJCQVRJTV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogJ0BcIicsXG4gICAgZW5kOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbIHsgYmVnaW46ICdcIlwiJyB9IF1cbiAgfTtcbiAgY29uc3QgVkVSQkFUSU1fU1RSSU5HX05PX0xGID0gaGxqcy5pbmhlcml0KFZFUkJBVElNX1NUUklORywgeyBpbGxlZ2FsOiAvXFxuLyB9KTtcbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvXFx7LyxcbiAgICBlbmQ6IC9cXH0vLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICB9O1xuICBjb25zdCBTVUJTVF9OT19MRiA9IGhsanMuaW5oZXJpdChTVUJTVCwgeyBpbGxlZ2FsOiAvXFxuLyB9KTtcbiAgY29uc3QgSU5URVJQT0xBVEVEX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXFwkXCIvLFxuICAgIGVuZDogJ1wiJyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW1xuICAgICAgeyBiZWdpbjogL1xce1xcey8gfSxcbiAgICAgIHsgYmVnaW46IC9cXH1cXH0vIH0sXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBTVUJTVF9OT19MRlxuICAgIF1cbiAgfTtcbiAgY29uc3QgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXFwkQFwiLyxcbiAgICBlbmQ6ICdcIicsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgYmVnaW46IC9cXHtcXHsvIH0sXG4gICAgICB7IGJlZ2luOiAvXFx9XFx9LyB9LFxuICAgICAgeyBiZWdpbjogJ1wiXCInIH0sXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgY29uc3QgSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRiA9IGhsanMuaW5oZXJpdChJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLCB7XG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgYmVnaW46IC9cXHtcXHsvIH0sXG4gICAgICB7IGJlZ2luOiAvXFx9XFx9LyB9LFxuICAgICAgeyBiZWdpbjogJ1wiXCInIH0sXG4gICAgICBTVUJTVF9OT19MRlxuICAgIF1cbiAgfSk7XG4gIFNVQlNULmNvbnRhaW5zID0gW1xuICAgIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkcsXG4gICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICBWRVJCQVRJTV9TVFJJTkcsXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSUyxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gIF07XG4gIFNVQlNUX05PX0xGLmNvbnRhaW5zID0gW1xuICAgIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkdfTk9fTEYsXG4gICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICBWRVJCQVRJTV9TVFJJTkdfTk9fTEYsXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgTlVNQkVSUyxcbiAgICBobGpzLmluaGVyaXQoaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSwgeyBpbGxlZ2FsOiAvXFxuLyB9KVxuICBdO1xuICBjb25zdCBTVFJJTkcgPSB7IHZhcmlhbnRzOiBbXG4gICAgUkFXX1NUUklORyxcbiAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgIElOVEVSUE9MQVRFRF9TVFJJTkcsXG4gICAgVkVSQkFUSU1fU1RSSU5HLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gIF0gfTtcblxuICBjb25zdCBHRU5FUklDX01PRElGSUVSID0ge1xuICAgIGJlZ2luOiBcIjxcIixcbiAgICBlbmQ6IFwiPlwiLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IGJlZ2luS2V5d29yZHM6IFwiaW4gb3V0XCIgfSxcbiAgICAgIFRJVExFX01PREVcbiAgICBdXG4gIH07XG4gIGNvbnN0IFRZUEVfSURFTlRfUkUgPSBobGpzLklERU5UX1JFICsgJyg8JyArIGhsanMuSURFTlRfUkUgKyAnKFxcXFxzKixcXFxccyonICsgaGxqcy5JREVOVF9SRSArICcpKj4pPyhcXFxcW1xcXFxdKT8nO1xuICBjb25zdCBBVF9JREVOVElGSUVSID0ge1xuICAgIC8vIHByZXZlbnRzIGV4cHJlc3Npb25zIGxpa2UgYEBjbGFzc2AgZnJvbSBpbmNvcnJlY3QgZmxhZ2dpbmdcbiAgICAvLyBgY2xhc3NgIGFzIGEga2V5d29yZFxuICAgIGJlZ2luOiBcIkBcIiArIGhsanMuSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQyMnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdjcycsXG4gICAgICAnYyMnXG4gICAgXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzo6LyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5DT01NRU5UKFxuICAgICAgICAnLy8vJyxcbiAgICAgICAgJyQnLFxuICAgICAgICB7XG4gICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJy8vLycsXG4gICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgYmVnaW46ICc8IS0tfC0tPicgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiZWdpbjogJzwvPycsXG4gICAgICAgICAgICAgICAgICBlbmQ6ICc+J1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJyMnLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IHsga2V5d29yZDogJ2lmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lIHJlZ2lvbiBlbmRyZWdpb24gcHJhZ21hIGNoZWNrc3VtJyB9XG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSUyxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2NsYXNzIGludGVyZmFjZScsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZW5kOiAvW3s7PV0vLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHM6LF0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgYmVnaW5LZXl3b3JkczogXCJ3aGVyZSBjbGFzc1wiIH0sXG4gICAgICAgICAgVElUTEVfTU9ERSxcbiAgICAgICAgICBHRU5FUklDX01PRElGSUVSLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogL1t7Oz1dLyxcbiAgICAgICAgaWxsZWdhbDogL1teXFxzOl0vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFRJVExFX01PREUsXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ3JlY29yZCcsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZW5kOiAvW3s7PV0vLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHM6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVElUTEVfTU9ERSxcbiAgICAgICAgICBHRU5FUklDX01PRElGSUVSLFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFtBdHRyaWJ1dGVzKFwiXCIpXVxuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgYmVnaW46ICdeXFxcXHMqXFxcXFsoPz1bXFxcXHddKScsXG4gICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAnXFxcXF0nLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgICAgIGVuZDogL1wiL1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gRXhwcmVzc2lvbiBrZXl3b3JkcyBwcmV2ZW50ICdrZXl3b3JkIE5hbWUoLi4uKScgZnJvbSBiZWluZ1xuICAgICAgICAvLyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmV3IHJldHVybiB0aHJvdyBhd2FpdCBlbHNlJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgIGJlZ2luOiAnKCcgKyBUWVBFX0lERU5UX1JFICsgJ1xcXFxzKykrJyArIGhsanMuSURFTlRfUkUgKyAnXFxcXHMqKDxbXj1dKz5cXFxccyopP1xcXFwoJyxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGVuZDogL1xccypbezs9XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAvLyBwcmV2ZW50cyB0aGVzZSBmcm9tIGJlaW5nIGhpZ2hsaWdodGVkIGB0aXRsZWBcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiBGVU5DVElPTl9NT0RJRklFUlMuam9pbihcIiBcIiksXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJ1xcXFxzKig8W149XSs+XFxcXHMqKT9cXFxcKCcsXG4gICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIGhsanMuVElUTEVfTU9ERSxcbiAgICAgICAgICAgICAgR0VORVJJQ19NT0RJRklFUlxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBtYXRjaDogL1xcKFxcKS8gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBBVF9JREVOVElGSUVSXG4gICAgXVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNzaGFycDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///3206\n")},3208:module=>{eval("/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /`]+/ }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: 'meta',\n begin: //,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: //,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n /\x3c!--/,\n /--\x3e/,\n { relevance: 10 }\n ),\n {\n begin: //,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/,\n }\n ]\n\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n ')/,\n end: />/,\n keywords: { name: 'style' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the