You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
1.1 MiB

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "vendor-chunks/parse5";
exports.ids = ["vendor-chunks/parse5"];
exports.modules = {
/***/ "(ssr)/./node_modules/parse5/dist/common/doctype.js":
/*!****************************************************!*\
!*** ./node_modules/parse5/dist/common/doctype.js ***!
\****************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDocumentMode: () => (/* binding */ getDocumentMode),\n/* harmony export */ isConforming: () => (/* binding */ isConforming)\n/* harmony export */ });\n/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n\n//Const\nconst VALID_DOCTYPE_NAME = \"html\";\nconst VALID_SYSTEM_ID = \"about:legacy-compat\";\nconst QUIRKS_MODE_SYSTEM_ID = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n \"+//silmaril//dtd html pro v0r11 19970101//\",\n \"-//as//dtd html 3.0 aswedit + extensions//\",\n \"-//advasoft ltd//dtd html 3.0 aswedit + extensions//\",\n \"-//ietf//dtd html 2.0 level 1//\",\n \"-//ietf//dtd html 2.0 level 2//\",\n \"-//ietf//dtd html 2.0 strict level 1//\",\n \"-//ietf//dtd html 2.0 strict level 2//\",\n \"-//ietf//dtd html 2.0 strict//\",\n \"-//ietf//dtd html 2.0//\",\n \"-//ietf//dtd html 2.1e//\",\n \"-//ietf//dtd html 3.0//\",\n \"-//ietf//dtd html 3.2 final//\",\n \"-//ietf//dtd html 3.2//\",\n \"-//ietf//dtd html 3//\",\n \"-//ietf//dtd html level 0//\",\n \"-//ietf//dtd html level 1//\",\n \"-//ietf//dtd html level 2//\",\n \"-//ietf//dtd html level 3//\",\n \"-//ietf//dtd html strict level 0//\",\n \"-//ietf//dtd html strict level 1//\",\n \"-//ietf//dtd html strict level 2//\",\n \"-//ietf//dtd html strict level 3//\",\n \"-//ietf//dtd html strict//\",\n \"-//ietf//dtd html//\",\n \"-//metrius//dtd metrius presentational//\",\n \"-//microsoft//dtd internet explorer 2.0 html strict//\",\n \"-//microsoft//dtd internet explorer 2.0 html//\",\n \"-//microsoft//dtd internet explorer 2.0 tables//\",\n \"-//microsoft//dtd internet explorer 3.0 html strict//\",\n \"-//microsoft//dtd internet explorer 3.0 html//\",\n \"-//microsoft//dtd internet explorer 3.0 tables//\",\n \"-//netscape comm. corp.//dtd html//\",\n \"-//netscape comm. corp.//dtd strict html//\",\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n \"-//sq//dtd html 2.0 hotmetal + extensions//\",\n \"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//\",\n \"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//\",\n \"-//spyglass//dtd html 2.0 extended//\",\n \"-//sun microsystems corp.//dtd hotjava html//\",\n \"-//sun microsystems corp.//dtd hotjava strict html//\",\n \"-//w3c//dtd html 3 1995-03-24//\",\n \"-//w3c//dtd html 3.2 draft//\",\n \"-//w3c//dtd html 3.2 final//\",\n \"-//w3c//dtd html 3.2//\",\n \"-//w3c//dtd html 3.2s draft//\",\n \"-//w3c//dtd html 4.0 frameset//\",\n \"-//w3c//dtd html 4.0 transitional//\",\n \"-//w3c//dtd html experimental 19960712//\",\n \"-//w3c//dtd html experimental 970421//\",\n \"-//w3c//dtd w3 html//\",\n \"-//w3o//dtd w3 html 3.0//\",\n \"-//webtechs//dtd mozilla html 2.0//\",\n \"-//webtechs//dtd mozilla html//\"\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n \"-//w3c//dtd html 4.01 frameset//\",\n \"-//w3c//dtd html 4.01 transitional//\"\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n \"-//w3o//dtd w3 html strict 3.0//en//\",\n \"-/w3c/dtd html 4.0 transitional/en\",\n \"html\"\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = [\n \"-//w3c//dtd xhtml 1.0 frameset//\",\n \"-//w3c//dtd xhtml 1.0 transitional//\"\n];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n \"-//w3c//dtd html 4.01 frameset//\",\n \"-//w3c//dtd html 4.01 transitional//\"\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix)=>publicId.startsWith(prefix));\n}\n//API\nfunction isConforming(token) {\n return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID);\n}\nfunction getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.QUIRKS;\n }\n prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return _html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.NO_QUIRKS;\n} //# sourceMappingURL=doctype.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2RvY3R5cGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQzFDLE9BQU87QUFDUCxNQUFNQyxxQkFBcUI7QUFDM0IsTUFBTUMsa0JBQWtCO0FBQ3hCLE1BQU1DLHdCQUF3QjtBQUM5QixNQUFNQyxpQ0FBaUM7SUFDbkM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSDtBQUNELE1BQU1DLDhDQUE4QztPQUM3Q0Q7SUFDSDtJQUNBO0NBQ0g7QUFDRCxNQUFNRSx5QkFBeUIsSUFBSUMsSUFBSTtJQUNuQztJQUNBO0lBQ0E7Q0FDSDtBQUNELE1BQU1DLG9DQUFvQztJQUFDO0lBQW9DO0NBQXVDO0FBQ3RILE1BQU1DLG1EQUFtRDtPQUNsREQ7SUFDSDtJQUNBO0NBQ0g7QUFDRCxPQUFPO0FBQ1AsU0FBU0UsVUFBVUMsUUFBUSxFQUFFQyxRQUFRO0lBQ2pDLE9BQU9BLFNBQVNDLElBQUksQ0FBQyxDQUFDQyxTQUFXSCxTQUFTSSxVQUFVLENBQUNEO0FBQ3pEO0FBQ0EsS0FBSztBQUNFLFNBQVNFLGFBQWFDLEtBQUs7SUFDOUIsT0FBUUEsTUFBTUMsSUFBSSxLQUFLakIsc0JBQ25CZ0IsTUFBTU4sUUFBUSxLQUFLLFFBQ2xCTSxDQUFBQSxNQUFNRSxRQUFRLEtBQUssUUFBUUYsTUFBTUUsUUFBUSxLQUFLakIsZUFBYztBQUNyRTtBQUNPLFNBQVNrQixnQkFBZ0JILEtBQUs7SUFDakMsSUFBSUEsTUFBTUMsSUFBSSxLQUFLakIsb0JBQW9CO1FBQ25DLE9BQU9ELG1EQUFhQSxDQUFDcUIsTUFBTTtJQUMvQjtJQUNBLE1BQU0sRUFBRUYsUUFBUSxFQUFFLEdBQUdGO0lBQ3JCLElBQUlFLFlBQVlBLFNBQVNHLFdBQVcsT0FBT25CLHVCQUF1QjtRQUM5RCxPQUFPSCxtREFBYUEsQ0FBQ3FCLE1BQU07SUFDL0I7SUFDQSxJQUFJLEVBQUVWLFFBQVEsRUFBRSxHQUFHTTtJQUNuQixJQUFJTixhQUFhLE1BQU07UUFDbkJBLFdBQVdBLFNBQVNXLFdBQVc7UUFDL0IsSUFBSWhCLHVCQUF1QmlCLEdBQUcsQ0FBQ1osV0FBVztZQUN0QyxPQUFPWCxtREFBYUEsQ0FBQ3FCLE1BQU07UUFDL0I7UUFDQSxJQUFJVCxXQUFXTyxhQUFhLE9BQU9kLDhDQUE4Q0Q7UUFDakYsSUFBSU0sVUFBVUMsVUFBVUMsV0FBVztZQUMvQixPQUFPWixtREFBYUEsQ0FBQ3FCLE1BQU07UUFDL0I7UUFDQVQsV0FDSU8sYUFBYSxPQUFPWCxvQ0FBb0NDO1FBQzVELElBQUlDLFVBQVVDLFVBQVVDLFdBQVc7WUFDL0IsT0FBT1osbURBQWFBLENBQUN3QixjQUFjO1FBQ3ZDO0lBQ0o7SUFDQSxPQUFPeEIsbURBQWFBLENBQUN5QixTQUFTO0FBQ2xDLEVBQ0EsbUNBQW1DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2RvY3R5cGUuanM/NzZlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVF9NT0RFIH0gZnJvbSAnLi9odG1sLmpzJztcbi8vQ29uc3RcbmNvbnN0IFZBTElEX0RPQ1RZUEVfTkFNRSA9ICdodG1sJztcbmNvbnN0IFZBTElEX1NZU1RFTV9JRCA9ICdhYm91dDpsZWdhY3ktY29tcGF0JztcbmNvbnN0IFFVSVJLU19NT0RFX1NZU1RFTV9JRCA9ICdodHRwOi8vd3d3LmlibS5jb20vZGF0YS9kdGQvdjExL2libXhodG1sMS10cmFuc2l0aW9uYWwuZHRkJztcbmNvbnN0IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFtcbiAgICAnKy8vc2lsbWFyaWwvL2R0ZCBodG1sIHBybyB2MHIxMSAxOTk3MDEwMS8vJyxcbiAgICAnLS8vYXMvL2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vYWR2YXNvZnQgbHRkLy9kdGQgaHRtbCAzLjAgYXN3ZWRpdCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDIvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4xZS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4wLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjIgZmluYWwvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMS8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgbGV2ZWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDMvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwvLycsXG4gICAgJy0vL21ldHJpdXMvL2R0ZCBtZXRyaXVzIHByZXNlbnRhdGlvbmFsLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAyLjAgdGFibGVzLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgaHRtbCBzdHJpY3QvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sLy8nLFxuICAgICctLy9taWNyb3NvZnQvL2R0ZCBpbnRlcm5ldCBleHBsb3JlciAzLjAgdGFibGVzLy8nLFxuICAgICctLy9uZXRzY2FwZSBjb21tLiBjb3JwLi8vZHRkIGh0bWwvLycsXG4gICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgc3RyaWN0IGh0bWwvLycsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgMi4wLy9cIixcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCBleHRlbmRlZCAxLjAvL1wiLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIHJlbGF4ZWQgMS4wLy9cIixcbiAgICAnLS8vc3EvL2R0ZCBodG1sIDIuMCBob3RtZXRhbCArIGV4dGVuc2lvbnMvLycsXG4gICAgJy0vL3NvZnRxdWFkIHNvZnR3YXJlLy9kdGQgaG90bWV0YWwgcHJvIDYuMDo6MTk5OTA2MDE6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLycsXG4gICAgJy0vL3NvZnRxdWFkLy9kdGQgaG90bWV0YWwgcHJvIDQuMDo6MTk5NzEwMTA6OmV4dGVuc2lvbnMgdG8gaHRtbCA0LjAvLycsXG4gICAgJy0vL3NweWdsYXNzLy9kdGQgaHRtbCAyLjAgZXh0ZW5kZWQvLycsXG4gICAgJy0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZhIGh0bWwvLycsXG4gICAgJy0vL3N1biBtaWNyb3N5c3RlbXMgY29ycC4vL2R0ZCBob3RqYXZhIHN0cmljdCBodG1sLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMgMTk5NS0wMy0yNC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIgZHJhZnQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yIGZpbmFsLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMi8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjJzIGRyYWZ0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCBmcmFtZXNldC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCAxOTk2MDcxMi8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCBleHBlcmltZW50YWwgOTcwNDIxLy8nLFxuICAgICctLy93M2MvL2R0ZCB3MyBodG1sLy8nLFxuICAgICctLy93M28vL2R0ZCB3MyBodG1sIDMuMC8vJyxcbiAgICAnLS8vd2VidGVjaHMvL2R0ZCBtb3ppbGxhIGh0bWwgMi4wLy8nLFxuICAgICctLy93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbC8vJyxcbl07XG5jb25zdCBRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgIC4uLlFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8nLFxuXTtcbmNvbnN0IFFVSVJLU19NT0RFX1BVQkxJQ19JRFMgPSBuZXcgU2V0KFtcbiAgICAnLS8vdzNvLy9kdGQgdzMgaHRtbCBzdHJpY3QgMy4wLy9lbi8vJyxcbiAgICAnLS93M2MvZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC9lbicsXG4gICAgJ2h0bWwnLFxuXSk7XG5jb25zdCBMSU1JVEVEX1FVSVJLU19QVUJMSUNfSURfUFJFRklYRVMgPSBbJy0vL3czYy8vZHRkIHhodG1sIDEuMCBmcmFtZXNldC8vJywgJy0vL3czYy8vZHRkIHhodG1sIDEuMCB0cmFuc2l0aW9uYWwvLyddO1xuY29uc3QgTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgIC4uLkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCA0LjAxIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgdHJhbnNpdGlvbmFsLy8nLFxuXTtcbi8vVXRpbHNcbmZ1bmN0aW9uIGhhc1ByZWZpeChwdWJsaWNJZCwgcHJlZml4ZXMpIHtcbiAgICByZXR1cm4gcHJlZml4ZXMuc29tZSgocHJlZml4KSA9PiBwdWJsaWNJZC5zdGFydHNXaXRoKHByZWZpeCkpO1xufVxuLy9BUElcbmV4cG9ydCBmdW5jdGlvbiBpc0NvbmZvcm1pbmcodG9rZW4pIHtcbiAgICByZXR1cm4gKHRva2VuLm5hbWUgPT09IFZBTElEX0RPQ1RZUEVfTkFNRSAmJlxuICAgICAgICB0b2tlbi5wdWJsaWNJZCA9PT0gbnVsbCAmJlxuICAgICAgICAodG9rZW4uc3lzdGVtSWQgPT09IG51bGwgfHwgdG9rZW4uc3lzdGVtSWQgPT09IFZBTElEX1NZU1RFTV9JRCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERvY3VtZW50TW9kZSh0b2tlbikge1xuICAgIGlmICh0b2tlbi5uYW1lICE9PSBWQUxJRF9ET0NUWVBFX05BTUUpIHtcbiAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgIH1cbiAgICBjb25zdCB7IHN5c3RlbUlkIH0gPSB0b2tlbjtcbiAgICBpZiAoc3lzdGVtSWQgJiYgc3lzdGVtSWQudG9Mb3dlckNhc2UoKSA9PT0gUVVJUktTX01PREVfU1lTVEVNX0lEKSB7XG4gICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICB9XG4gICAgbGV0IHsgcHVibGljSWQgfSA9IHRva2VuO1xuICAgIGlmIChwdWJsaWNJZCAhPT0gbnVsbCkge1xuICAgICAgICBwdWJsaWNJZCA9IHB1YmxpY0lkLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChRVUlSS1NfTU9ERV9QVUJMSUNfSURTLmhhcyhwdWJsaWNJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLlFVSVJLUztcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJlZml4ZXMgPSBzeXN0ZW1JZCA9PT0gbnVsbCA/IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgOiBRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVM7XG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG4gICAgICAgIHByZWZpeGVzID1cbiAgICAgICAgICAgIHN5c3RlbUlkID09PSBudWxsID8gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTIDogTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTO1xuICAgICAgICBpZiAoaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBET0NVTUVOVF9NT0RFLkxJTUlURURfUVVJUktTO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBET0NVTUVOVF9NT0RFLk5PX1FVSVJLUztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRvY3R5cGUuanMubWFwIl0sIm5hbWVzIjpbIkRPQ1VNRU5UX01PREUiLCJWQUxJRF9ET0NUWVBFX05BTUUiLCJWQUxJRF9TWVNURU1fSUQiLCJRVUlSS1NfTU9ERV9TWVNURU1fSUQiLCJRVUlSS1NfTU9ERV9QVUJMSUNfSURfUFJFRklYRVMiLCJRVUlSS1NfTU9ERV9OT19TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTIiwiUVVJUktTX01PREVfUFVCTElDX0lEUyIsIlNldCIsIkxJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyIsIkxJTUlURURfUVVJUktTX1dJVEhfU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyIsImhhc1ByZWZpeCIsInB1YmxpY0lkIiwicHJlZml4ZXMiLCJzb21lIiwicHJlZml4Iiwic3RhcnRzV2l0aCIsImlzQ29uZm9ybWluZyIsInRva2VuIiwibmFtZSIsInN5c3RlbUlkIiwiZ2V0RG9jdW1lbnRNb2RlIiwiUVVJUktTIiwidG9Mb3dlckNhc2UiLCJoYXMiLCJMSU1JVEVEX1FVSVJLUyIsIk5PX1FVSVJLUyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/common/doctype.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/common/error-codes.js":
/*!********************************************************!*\
!*** ./node_modules/parse5/dist/common/error-codes.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ERR: () => (/* binding */ ERR)\n/* harmony export */ });\nvar ERR;\n(function(ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {})); //# sourceMappingURL=error-codes.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2Vycm9yLWNvZGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxJQUFJQSxJQUFJO0FBQ2QsVUFBVUEsR0FBRztJQUNWQSxHQUFHLENBQUMsZ0NBQWdDLEdBQUc7SUFDdkNBLEdBQUcsQ0FBQyw0QkFBNEIsR0FBRztJQUNuQ0EsR0FBRyxDQUFDLHlCQUF5QixHQUFHO0lBQ2hDQSxHQUFHLENBQUMsZ0RBQWdELEdBQUc7SUFDdkRBLEdBQUcsQ0FBQyx1QkFBdUIsR0FBRztJQUM5QkEsR0FBRyxDQUFDLDRCQUE0QixHQUFHO0lBQ25DQSxHQUFHLENBQUMseUJBQXlCLEdBQUc7SUFDaENBLEdBQUcsQ0FBQywwQkFBMEIsR0FBRztJQUNqQ0EsR0FBRyxDQUFDLHlDQUF5QyxHQUFHO0lBQ2hEQSxHQUFHLENBQUMsaUNBQWlDLEdBQUc7SUFDeENBLEdBQUcsQ0FBQywwQ0FBMEMsR0FBRztJQUNqREEsR0FBRyxDQUFDLG9CQUFvQixHQUFHO0lBQzNCQSxHQUFHLENBQUMscUNBQXFDLEdBQUc7SUFDNUNBLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRztJQUN4Q0EsR0FBRyxDQUFDLDBDQUEwQyxHQUFHO0lBQ2pEQSxHQUFHLENBQUMsa0RBQWtELEdBQUc7SUFDekRBLEdBQUcsQ0FBQyw4Q0FBOEMsR0FBRztJQUNyREEsR0FBRyxDQUFDLG1CQUFtQixHQUFHO0lBQzFCQSxHQUFHLENBQUMsV0FBVyxHQUFHO0lBQ2xCQSxHQUFHLENBQUMsd0JBQXdCLEdBQUc7SUFDL0JBLEdBQUcsQ0FBQyxxQ0FBcUMsR0FBRztJQUM1Q0EsR0FBRyxDQUFDLDZDQUE2QyxHQUFHO0lBQ3BEQSxHQUFHLENBQUMsNERBQTRELEdBQUc7SUFDbkVBLEdBQUcsQ0FBQyw2Q0FBNkMsR0FBRztJQUNwREEsR0FBRyxDQUFDLDRDQUE0QyxHQUFHO0lBQ25EQSxHQUFHLENBQUMsNENBQTRDLEdBQUc7SUFDbkRBLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRztJQUN4Q0EsR0FBRyxDQUFDLGlDQUFpQyxHQUFHO0lBQ3hDQSxHQUFHLENBQUMsZ0NBQWdDLEdBQUc7SUFDdkNBLEdBQUcsQ0FBQyxnQ0FBZ0MsR0FBRztJQUN2Q0EsR0FBRyxDQUFDLHFCQUFxQixHQUFHO0lBQzVCQSxHQUFHLENBQUMsMkJBQTJCLEdBQUc7SUFDbENBLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRztJQUN4Q0EsR0FBRyxDQUFDLGVBQWUsR0FBRztJQUN0QkEsR0FBRyxDQUFDLGdCQUFnQixHQUFHO0lBQ3ZCQSxHQUFHLENBQUMsOEJBQThCLEdBQUc7SUFDckNBLEdBQUcsQ0FBQyxlQUFlLEdBQUc7SUFDdEJBLEdBQUcsQ0FBQywyQkFBMkIsR0FBRztJQUNsQ0EsR0FBRyxDQUFDLGFBQWEsR0FBRztJQUNwQkEsR0FBRyxDQUFDLDZDQUE2QyxHQUFHO0lBQ3BEQSxHQUFHLENBQUMseUJBQXlCLEdBQUc7SUFDaENBLEdBQUcsQ0FBQyw4QkFBOEIsR0FBRztJQUNyQ0EsR0FBRyxDQUFDLHdDQUF3QyxHQUFHO0lBQy9DQSxHQUFHLENBQUMsNEJBQTRCLEdBQUc7SUFDbkNBLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRztJQUN4Q0EsR0FBRyxDQUFDLHFDQUFxQyxHQUFHO0lBQzVDQSxHQUFHLENBQUMscUJBQXFCLEdBQUc7SUFDNUJBLEdBQUcsQ0FBQywyQ0FBMkMsR0FBRztJQUNsREEsR0FBRyxDQUFDLHFCQUFxQixHQUFHO0lBQzVCQSxHQUFHLENBQUMsdUJBQXVCLEdBQUc7SUFDOUJBLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRztJQUN4QkEsR0FBRyxDQUFDLG1CQUFtQixHQUFHO0lBQzFCQSxHQUFHLENBQUMsbUNBQW1DLEdBQUc7SUFDMUNBLEdBQUcsQ0FBQyx3Q0FBd0MsR0FBRztJQUMvQ0EsR0FBRyxDQUFDLG9DQUFvQyxHQUFHO0lBQzNDQSxHQUFHLENBQUMsMkJBQTJCLEdBQUc7SUFDbENBLEdBQUcsQ0FBQyw0QkFBNEIsR0FBRztJQUNuQ0EsR0FBRyxDQUFDLGtDQUFrQyxHQUFHO0lBQ3pDQSxHQUFHLENBQUMsdUJBQXVCLEdBQUc7SUFDOUJBLEdBQUcsQ0FBQyxxQ0FBcUMsR0FBRztBQUNoRCxHQUFHQSxNQUFNQSxPQUFRQSxDQUFBQSxNQUFNLENBQUMsS0FDeEIsdUNBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2Vycm9yLWNvZGVzLmpzPzcyOTciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBFUlI7XG4oZnVuY3Rpb24gKEVSUikge1xuICAgIEVSUltcImNvbnRyb2xDaGFyYWN0ZXJJbklucHV0U3RyZWFtXCJdID0gXCJjb250cm9sLWNoYXJhY3Rlci1pbi1pbnB1dC1zdHJlYW1cIjtcbiAgICBFUlJbXCJub25jaGFyYWN0ZXJJbklucHV0U3RyZWFtXCJdID0gXCJub25jaGFyYWN0ZXItaW4taW5wdXQtc3RyZWFtXCI7XG4gICAgRVJSW1wic3Vycm9nYXRlSW5JbnB1dFN0cmVhbVwiXSA9IFwic3Vycm9nYXRlLWluLWlucHV0LXN0cmVhbVwiO1xuICAgIEVSUltcIm5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1c1wiXSA9IFwibm9uLXZvaWQtaHRtbC1lbGVtZW50LXN0YXJ0LXRhZy13aXRoLXRyYWlsaW5nLXNvbGlkdXNcIjtcbiAgICBFUlJbXCJlbmRUYWdXaXRoQXR0cmlidXRlc1wiXSA9IFwiZW5kLXRhZy13aXRoLWF0dHJpYnV0ZXNcIjtcbiAgICBFUlJbXCJlbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzXCJdID0gXCJlbmQtdGFnLXdpdGgtdHJhaWxpbmctc29saWR1c1wiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRTb2xpZHVzSW5UYWdcIl0gPSBcInVuZXhwZWN0ZWQtc29saWR1cy1pbi10YWdcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkTnVsbENoYXJhY3RlclwiXSA9IFwidW5leHBlY3RlZC1udWxsLWNoYXJhY3RlclwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lXCJdID0gXCJ1bmV4cGVjdGVkLXF1ZXN0aW9uLW1hcmstaW5zdGVhZC1vZi10YWctbmFtZVwiO1xuICAgIEVSUltcImludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZVwiXSA9IFwiaW52YWxpZC1maXJzdC1jaGFyYWN0ZXItb2YtdGFnLW5hbWVcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkRXF1YWxzU2lnbkJlZm9yZUF0dHJpYnV0ZU5hbWVcIl0gPSBcInVuZXhwZWN0ZWQtZXF1YWxzLXNpZ24tYmVmb3JlLWF0dHJpYnV0ZS1uYW1lXCI7XG4gICAgRVJSW1wibWlzc2luZ0VuZFRhZ05hbWVcIl0gPSBcIm1pc3NpbmctZW5kLXRhZy1uYW1lXCI7XG4gICAgRVJSW1widW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZVwiXSA9IFwidW5leHBlY3RlZC1jaGFyYWN0ZXItaW4tYXR0cmlidXRlLW5hbWVcIjtcbiAgICBFUlJbXCJ1bmtub3duTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcInVua25vd24tbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcIm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwibWlzc2luZy1zZW1pY29sb24tYWZ0ZXItY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCJdID0gXCJ1bmV4cGVjdGVkLWNoYXJhY3Rlci1hZnRlci1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1widW5leHBlY3RlZENoYXJhY3RlckluVW5xdW90ZWRBdHRyaWJ1dGVWYWx1ZVwiXSA9IFwidW5leHBlY3RlZC1jaGFyYWN0ZXItaW4tdW5xdW90ZWQtYXR0cmlidXRlLXZhbHVlXCI7XG4gICAgRVJSW1wiZW9mQmVmb3JlVGFnTmFtZVwiXSA9IFwiZW9mLWJlZm9yZS10YWctbmFtZVwiO1xuICAgIEVSUltcImVvZkluVGFnXCJdID0gXCJlb2YtaW4tdGFnXCI7XG4gICAgRVJSW1wibWlzc2luZ0F0dHJpYnV0ZVZhbHVlXCJdID0gXCJtaXNzaW5nLWF0dHJpYnV0ZS12YWx1ZVwiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXNcIl0gPSBcIm1pc3Npbmctd2hpdGVzcGFjZS1iZXR3ZWVuLWF0dHJpYnV0ZXNcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmRcIl0gPSBcIm1pc3Npbmctd2hpdGVzcGFjZS1hZnRlci1kb2N0eXBlLXB1YmxpYy1rZXl3b3JkXCI7XG4gICAgRVJSW1wibWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYmV0d2Vlbi1kb2N0eXBlLXB1YmxpYy1hbmQtc3lzdGVtLWlkZW50aWZpZXJzXCI7XG4gICAgRVJSW1wibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYWZ0ZXItZG9jdHlwZS1zeXN0ZW0ta2V5d29yZFwiO1xuICAgIEVSUltcIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyXCJdID0gXCJtaXNzaW5nLXF1b3RlLWJlZm9yZS1kb2N0eXBlLXB1YmxpYy1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wibWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJcIl0gPSBcIm1pc3NpbmctcXVvdGUtYmVmb3JlLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJtaXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJcIl0gPSBcIm1pc3NpbmctZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllclwiO1xuICAgIEVSUltcIm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllclwiXSA9IFwibWlzc2luZy1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wiYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXJcIl0gPSBcImFicnVwdC1kb2N0eXBlLXB1YmxpYy1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wiYWJydXB0RG9jdHlwZVN5c3RlbUlkZW50aWZpZXJcIl0gPSBcImFicnVwdC1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wiY2RhdGFJbkh0bWxDb250ZW50XCJdID0gXCJjZGF0YS1pbi1odG1sLWNvbnRlbnRcIjtcbiAgICBFUlJbXCJpbmNvcnJlY3RseU9wZW5lZENvbW1lbnRcIl0gPSBcImluY29ycmVjdGx5LW9wZW5lZC1jb21tZW50XCI7XG4gICAgRVJSW1wiZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0XCJdID0gXCJlb2YtaW4tc2NyaXB0LWh0bWwtY29tbWVudC1saWtlLXRleHRcIjtcbiAgICBFUlJbXCJlb2ZJbkRvY3R5cGVcIl0gPSBcImVvZi1pbi1kb2N0eXBlXCI7XG4gICAgRVJSW1wibmVzdGVkQ29tbWVudFwiXSA9IFwibmVzdGVkLWNvbW1lbnRcIjtcbiAgICBFUlJbXCJhYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnRcIl0gPSBcImFicnVwdC1jbG9zaW5nLW9mLWVtcHR5LWNvbW1lbnRcIjtcbiAgICBFUlJbXCJlb2ZJbkNvbW1lbnRcIl0gPSBcImVvZi1pbi1jb21tZW50XCI7XG4gICAgRVJSW1wiaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50XCJdID0gXCJpbmNvcnJlY3RseS1jbG9zZWQtY29tbWVudFwiO1xuICAgIEVSUltcImVvZkluQ2RhdGFcIl0gPSBcImVvZi1pbi1jZGF0YVwiO1xuICAgIEVSUltcImFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwiYWJzZW5jZS1vZi1kaWdpdHMtaW4tbnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1wibnVsbENoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwibnVsbC1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1wic3Vycm9nYXRlQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJzdXJyb2dhdGUtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcImNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2VcIl0gPSBcImNoYXJhY3Rlci1yZWZlcmVuY2Utb3V0c2lkZS11bmljb2RlLXJhbmdlXCI7XG4gICAgRVJSW1wiY29udHJvbENoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwiY29udHJvbC1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1wibm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJub25jaGFyYWN0ZXItY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWVcIl0gPSBcIm1pc3Npbmctd2hpdGVzcGFjZS1iZWZvcmUtZG9jdHlwZS1uYW1lXCI7XG4gICAgRVJSW1wibWlzc2luZ0RvY3R5cGVOYW1lXCJdID0gXCJtaXNzaW5nLWRvY3R5cGUtbmFtZVwiO1xuICAgIEVSUltcImludmFsaWRDaGFyYWN0ZXJTZXF1ZW5jZUFmdGVyRG9jdHlwZU5hbWVcIl0gPSBcImludmFsaWQtY2hhcmFjdGVyLXNlcXVlbmNlLWFmdGVyLWRvY3R5cGUtbmFtZVwiO1xuICAgIEVSUltcImR1cGxpY2F0ZUF0dHJpYnV0ZVwiXSA9IFwiZHVwbGljYXRlLWF0dHJpYnV0ZVwiO1xuICAgIEVSUltcIm5vbkNvbmZvcm1pbmdEb2N0eXBlXCJdID0gXCJub24tY29uZm9ybWluZy1kb2N0eXBlXCI7XG4gICAgRVJSW1wibWlzc2luZ0RvY3R5cGVcIl0gPSBcIm1pc3NpbmctZG9jdHlwZVwiO1xuICAgIEVSUltcIm1pc3BsYWNlZERvY3R5cGVcIl0gPSBcIm1pc3BsYWNlZC1kb2N0eXBlXCI7XG4gICAgRVJSW1wiZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnRcIl0gPSBcImVuZC10YWctd2l0aG91dC1tYXRjaGluZy1vcGVuLWVsZW1lbnRcIjtcbiAgICBFUlJbXCJjbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzXCJdID0gXCJjbG9zaW5nLW9mLWVsZW1lbnQtd2l0aC1vcGVuLWNoaWxkLWVsZW1lbnRzXCI7XG4gICAgRVJSW1wiZGlzYWxsb3dlZENvbnRlbnRJbk5vc2NyaXB0SW5IZWFkXCJdID0gXCJkaXNhbGxvd2VkLWNvbnRlbnQtaW4tbm9zY3JpcHQtaW4taGVhZFwiO1xuICAgIEVSUltcIm9wZW5FbGVtZW50c0xlZnRBZnRlckVvZlwiXSA9IFwib3Blbi1lbGVtZW50cy1sZWZ0LWFmdGVyLWVvZlwiO1xuICAgIEVSUltcImFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGRcIl0gPSBcImFiYW5kb25lZC1oZWFkLWVsZW1lbnQtY2hpbGRcIjtcbiAgICBFUlJbXCJtaXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50XCJdID0gXCJtaXNwbGFjZWQtc3RhcnQtdGFnLWZvci1oZWFkLWVsZW1lbnRcIjtcbiAgICBFUlJbXCJuZXN0ZWROb3NjcmlwdEluSGVhZFwiXSA9IFwibmVzdGVkLW5vc2NyaXB0LWluLWhlYWRcIjtcbiAgICBFUlJbXCJlb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0XCJdID0gXCJlb2YtaW4tZWxlbWVudC10aGF0LWNhbi1jb250YWluLW9ubHktdGV4dFwiO1xufSkoRVJSID0gRVJSIHx8IChFUlIgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItY29kZXMuanMubWFwIl0sIm5hbWVzIjpbIkVSUiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/common/error-codes.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/common/foreign-content.js":
/*!************************************************************!*\
!*** ./node_modules/parse5/dist/common/foreign-content.js ***!
\************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SVG_TAG_NAMES_ADJUSTMENT_MAP: () => (/* binding */ SVG_TAG_NAMES_ADJUSTMENT_MAP),\n/* harmony export */ adjustTokenMathMLAttrs: () => (/* binding */ adjustTokenMathMLAttrs),\n/* harmony export */ adjustTokenSVGAttrs: () => (/* binding */ adjustTokenSVGAttrs),\n/* harmony export */ adjustTokenSVGTagName: () => (/* binding */ adjustTokenSVGTagName),\n/* harmony export */ adjustTokenXMLAttrs: () => (/* binding */ adjustTokenXMLAttrs),\n/* harmony export */ causesExit: () => (/* binding */ causesExit),\n/* harmony export */ isIntegrationPoint: () => (/* binding */ isIntegrationPoint)\n/* harmony export */ });\n/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: \"text/html\",\n APPLICATION_XML: \"application/xhtml+xml\"\n};\n//Attributes\nconst DEFINITION_URL_ATTR = \"definitionurl\";\nconst ADJUSTED_DEFINITION_URL_ATTR = \"definitionURL\";\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\"\n].map((attr)=>[\n attr.toLowerCase(),\n attr\n ]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n [\n \"xlink:actuate\",\n {\n prefix: \"xlink\",\n name: \"actuate\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xlink:arcrole\",\n {\n prefix: \"xlink\",\n name: \"arcrole\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xlink:href\",\n {\n prefix: \"xlink\",\n name: \"href\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xlink:role\",\n {\n prefix: \"xlink\",\n name: \"role\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xlink:show\",\n {\n prefix: \"xlink\",\n name: \"show\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xlink:title\",\n {\n prefix: \"xlink\",\n name: \"title\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xlink:type\",\n {\n prefix: \"xlink\",\n name: \"type\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK\n }\n ],\n [\n \"xml:base\",\n {\n prefix: \"xml\",\n name: \"base\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML\n }\n ],\n [\n \"xml:lang\",\n {\n prefix: \"xml\",\n name: \"lang\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML\n }\n ],\n [\n \"xml:space\",\n {\n prefix: \"xml\",\n name: \"space\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML\n }\n ],\n [\n \"xmlns\",\n {\n prefix: \"\",\n name: \"xmlns\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XMLNS\n }\n ],\n [\n \"xmlns:xlink\",\n {\n prefix: \"xmlns\",\n name: \"xlink\",\n namespace: _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XMLNS\n }\n ]\n]);\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\"\n].map((tn)=>[\n tn.toLowerCase(),\n tn\n ]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.B,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BIG,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BLOCKQUOTE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BODY,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BR,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CENTER,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CODE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DD,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DIV,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DT,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.EM,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.EMBED,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H1,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H2,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H3,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H4,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H5,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H6,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HEAD,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HR,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.I,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.IMG,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.LI,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.LISTING,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MENU,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.META,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.NOBR,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.P,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.PRE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RUBY,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.S,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SMALL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SPAN,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.STRONG,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.STRIKE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SUB,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.SUP,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TT,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.U,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.UL,\n _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.VAR\n]);\n//Check exit from foreign content\nfunction causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.FONT && startTagToken.attrs.some(({ name })=>name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.COLOR || name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.SIZE || name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nfunction adjustTokenMathMLAttrs(token) {\n for(let i = 0; i < token.attrs.length; i++){\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nfunction adjustTokenSVGAttrs(token) {\n for(let i = 0; i < token.attrs.length; i++){\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nfunction adjustTokenXMLAttrs(token) {\n for(let i = 0; i < token.attrs.length; i++){\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nfunction adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = (0,_html_js__WEBPACK_IMPORTED_MODULE_0__.getTagID)(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML && (tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MI || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MO || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MN || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MS || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML && tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.ANNOTATION_XML) {\n for(let i = 0; i < attrs.length; i++){\n if (attrs[i].name === _html_js__WEBPACK_IMPORTED_MODULE_0__.ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG && (tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.FOREIGN_OBJECT || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DESC || tn === _html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TITLE);\n}\nfunction isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (!foreignNS || foreignNS === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === _html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns);\n} //# sourceMappingURL=foreign-content.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE2RDtBQUM3RCxZQUFZO0FBQ1osTUFBTUssYUFBYTtJQUNmQyxXQUFXO0lBQ1hDLGlCQUFpQjtBQUNyQjtBQUNBLFlBQVk7QUFDWixNQUFNQyxzQkFBc0I7QUFDNUIsTUFBTUMsK0JBQStCO0FBQ3JDLE1BQU1DLDJCQUEyQixJQUFJQyxJQUFJO0lBQ3JDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0gsQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLE9BQVM7UUFBQ0EsS0FBS0MsV0FBVztRQUFJRDtLQUFLO0FBQzFDLE1BQU1FLDJCQUEyQixJQUFJSixJQUFJO0lBQ3JDO1FBQUM7UUFBaUI7WUFBRUssUUFBUTtZQUFTQyxNQUFNO1lBQVdDLFdBQVdoQix3Q0FBRUEsQ0FBQ2lCLEtBQUs7UUFBQztLQUFFO0lBQzVFO1FBQUM7UUFBaUI7WUFBRUgsUUFBUTtZQUFTQyxNQUFNO1lBQVdDLFdBQVdoQix3Q0FBRUEsQ0FBQ2lCLEtBQUs7UUFBQztLQUFFO0lBQzVFO1FBQUM7UUFBYztZQUFFSCxRQUFRO1lBQVNDLE1BQU07WUFBUUMsV0FBV2hCLHdDQUFFQSxDQUFDaUIsS0FBSztRQUFDO0tBQUU7SUFDdEU7UUFBQztRQUFjO1lBQUVILFFBQVE7WUFBU0Ms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Q0FBQyxDQUFDbUMsYUFBYUEsY0FBYzVHLHdDQUFFQSxDQUFDNkYsTUFBTSxLQUFLRiw2QkFBNkJ0RSxJQUFJdUU7QUFDckYsRUFDQSwyQ0FBMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vZm9yZWlnbi1jb250ZW50LmpzP2QyZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVEFHX0lEIGFzICQsIE5TLCBBVFRSUywgZ2V0VGFnSUQgfSBmcm9tICcuL2h0bWwuanMnO1xuLy9NSU1FIHR5cGVzXG5jb25zdCBNSU1FX1RZUEVTID0ge1xuICAgIFRFWFRfSFRNTDogJ3RleHQvaHRtbCcsXG4gICAgQVBQTElDQVRJT05fWE1MOiAnYXBwbGljYXRpb24veGh0bWwreG1sJyxcbn07XG4vL0F0dHJpYnV0ZXNcbmNvbnN0IERFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvbnVybCc7XG5jb25zdCBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSID0gJ2RlZmluaXRpb25VUkwnO1xuY29uc3QgU1ZHX0FUVFJTX0FESlVTVE1FTlRfTUFQID0gbmV3IE1hcChbXG4gICAgJ2F0dHJpYnV0ZU5hbWUnLFxuICAgICdhdHRyaWJ1dGVUeXBlJyxcbiAgICAnYmFzZUZyZXF1ZW5jeScsXG4gICAgJ2Jhc2VQcm9maWxlJyxcbiAgICAnY2FsY01vZGUnLFxuICAgICdjbGlwUGF0aFVuaXRzJyxcbiAgICAnZGlmZnVzZUNvbnN0YW50JyxcbiAgICAnZWRnZU1vZGUnLFxuICAgICdmaWx0ZXJVbml0cycsXG4gICAgJ2dseXBoUmVmJyxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICAgICdncmFkaWVudFVuaXRzJyxcbiAgICAna2VybmVsTWF0cml4JyxcbiAgICAna2VybmVsVW5pdExlbmd0aCcsXG4gICAgJ2tleVBvaW50cycsXG4gICAgJ2tleVNwbGluZXMnLFxuICAgICdrZXlUaW1lcycsXG4gICAgJ2xlbmd0aEFkanVzdCcsXG4gICAgJ2xpbWl0aW5nQ29uZUFuZ2xlJyxcbiAgICAnbWFya2VySGVpZ2h0JyxcbiAgICAnbWFya2VyVW5pdHMnLFxuICAgICdtYXJrZXJXaWR0aCcsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnLFxuICAgICdtYXNrVW5pdHMnLFxuICAgICdudW1PY3RhdmVzJyxcbiAgICAncGF0aExlbmd0aCcsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJyxcbiAgICAncGF0dGVyblVuaXRzJyxcbiAgICAncG9pbnRzQXRYJyxcbiAgICAncG9pbnRzQXRZJyxcbiAgICAncG9pbnRzQXRaJyxcbiAgICAncHJlc2VydmVBbHBoYScsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICAgICdwcmltaXRpdmVVbml0cycsXG4gICAgJ3JlZlgnLFxuICAgICdyZWZZJyxcbiAgICAncmVwZWF0Q291bnQnLFxuICAgICdyZXBlYXREdXInLFxuICAgICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgICAnc3BlY3VsYXJDb25zdGFudCcsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnLFxuICAgICdzcHJlYWRNZXRob2QnLFxuICAgICdzdGFydE9mZnNldCcsXG4gICAgJ3N0ZERldmlhdGlvbicsXG4gICAgJ3N0aXRjaFRpbGVzJyxcbiAgICAnc3VyZmFjZVNjYWxlJyxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnLFxuICAgICd0YWJsZVZhbHVlcycsXG4gICAgJ3RhcmdldFgnLFxuICAgICd0YXJnZXRZJyxcbiAgICAndGV4dExlbmd0aCcsXG4gICAgJ3ZpZXdCb3gnLFxuICAgICd2aWV3VGFyZ2V0JyxcbiAgICAneENoYW5uZWxTZWxlY3RvcicsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InLFxuICAgICd6b29tQW5kUGFuJyxcbl0ubWFwKChhdHRyKSA9PiBbYXR0ci50b0xvd2VyQ2FzZSgpLCBhdHRyXSkpO1xuY29uc3QgWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQID0gbmV3IE1hcChbXG4gICAgWyd4bGluazphY3R1YXRlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhY3R1YXRlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOmFyY3JvbGUnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ2FyY3JvbGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH1dLFxuICAgIFsneGxpbms6aHJlZicsIHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnaHJlZicsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazpyb2xlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdyb2xlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOnNob3cnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3Nob3cnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH1dLFxuICAgIFsneGxpbms6dGl0bGUnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3RpdGxlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOnR5cGUnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3R5cGUnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH1dLFxuICAgIFsneG1sOmJhc2UnLCB7IHByZWZpeDogJ3htbCcsIG5hbWU6ICdiYXNlJywgbmFtZXNwYWNlOiBOUy5YTUwgfV0sXG4gICAgWyd4bWw6bGFuZycsIHsgcHJlZml4OiAneG1sJywgbmFtZTogJ2xhbmcnLCBuYW1lc3BhY2U6IE5TLlhNTCB9XSxcbiAgICBbJ3htbDpzcGFjZScsIHsgcHJlZml4OiAneG1sJywgbmFtZTogJ3NwYWNlJywgbmFtZXNwYWNlOiBOUy5YTUwgfV0sXG4gICAgWyd4bWxucycsIHsgcHJlZml4OiAnJywgbmFtZTogJ3htbG5zJywgbmFtZXNwYWNlOiBOUy5YTUxOUyB9XSxcbiAgICBbJ3htbG5zOnhsaW5rJywgeyBwcmVmaXg6ICd4bWxucycsIG5hbWU6ICd4bGluaycsIG5hbWVzcGFjZTogTlMuWE1MTlMgfV0sXG5dKTtcbi8vU1ZHIHRhZyBuYW1lcyBhZGp1c3RtZW50IG1hcFxuZXhwb3J0IGNvbnN0IFNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSBuZXcgTWFwKFtcbiAgICAnYWx0R2x5cGgnLFxuICAgICdhbHRHbHlwaERlZicsXG4gICAgJ2FsdEdseXBoSXRlbScsXG4gICAgJ2FuaW1hdGVDb2xvcicsXG4gICAgJ2FuaW1hdGVNb3Rpb24nLFxuICAgICdhbmltYXRlVHJhbnNmb3JtJyxcbiAgICAnY2xpcFBhdGgnLFxuICAgICdmZUJsZW5kJyxcbiAgICAnZmVDb2xvck1hdHJpeCcsXG4gICAgJ2ZlQ29tcG9uZW50VHJhbnNmZXInLFxuICAgICdmZUNvbXBvc2l0ZScsXG4gICAgJ2ZlQ29udm9sdmVNYXRyaXgnLFxuICAgICdmZURpZmZ1c2VMaWdodGluZycsXG4gICAgJ2ZlRGlzcGxhY2VtZW50TWFwJyxcbiAgICAnZmVEaXN0YW50TGlnaHQnLFxuICAgICdmZUZsb29kJyxcbiAgICAnZmVGdW5jQScsXG4gICAgJ2ZlRnVuY0InLFxuICAgICdmZUZ1bmNHJyxcbiAgICAnZmVGdW5jUicsXG4gICAgJ2ZlR2F1c3NpYW5CbHVyJyxcbiAgICAnZmVJbWFnZScsXG4gICAgJ2ZlTWVyZ2UnLFxuICAgICdmZU1lcmdlTm9kZScsXG4gICAgJ2ZlTW9ycGhvbG9neScsXG4gICAgJ2ZlT2Zmc2V0JyxcbiAgICAnZmVQb2ludExpZ2h0JyxcbiAgICAnZmVTcGVjdWxhckxpZ2h0aW5nJyxcbiAgICAnZmVTcG90TGlnaHQnLFxuICAgICdmZVRpbGUnLFxuICAgICdmZVR1cmJ1bGVuY2UnLFxuICAgICdmb3JlaWduT2JqZWN0JyxcbiAgICAnZ2x5cGhSZWYnLFxuICAgICdsaW5lYXJHcmFkaWVudCcsXG4gICAgJ3JhZGlhbEdyYWRpZW50JyxcbiAgICAndGV4dFBhdGgnLFxuXS5tYXAoKHRuKSA9PiBbdG4udG9Mb3dlckNhc2UoKSwgdG5dKSk7XG4vL1RhZ3MgdGhhdCBjYXVzZXMgZXhpdCBmcm9tIGZvcmVpZ24gY29udGVudFxuY29uc3QgRVhJVFNfRk9SRUlHTl9DT05URU5UID0gbmV3IFNldChbXG4gICAgJC5CLFxuICAgICQuQklHLFxuICAgICQuQkxPQ0tRVU9URSxcbiAgICAkLkJPRFksXG4gICAgJC5CUixcbiAgICAkLkNFTlRFUixcbiAgICAkLkNPREUsXG4gICAgJC5ERCxcbiAgICAkLkRJVixcbiAgICAkLkRMLFxuICAgICQuRFQsXG4gICAgJC5FTSxcbiAgICAkLkVNQkVELFxuICAgICQuSDEsXG4gICAgJC5IMixcbiAgICAkLkgzLFxuICAgICQuSDQsXG4gICAgJC5INSxcbiAgICAkLkg2LFxuICAgICQuSEVBRCxcbiAgICAkLkhSLFxuICAgICQuSSxcbiAgICAkLklNRyxcbiAgICAkLkxJLFxuICAgICQuTElTVElORyxcbiAgICAkLk1FTlUsXG4gICAgJC5NRVRBLFxuICAgICQuTk9CUixcbiAgICAkLk9MLFxuICAgICQuUCxcbiAgICAkLlBSRSxcbiAgICAkLlJVQlksXG4gICAgJC5TLFxuICAgICQuU01BTEwsXG4gICAgJC5TUEFOLFxuICAgICQuU1RST05HLFxuICAgICQuU1RSSUtFLFxuICAgICQuU1VCLFxuICAgICQuU1VQLFxuICAgICQuVEFCTEUsXG4gICAgJC5UVCxcbiAgICAkLlUsXG4gICAgJC5VTCxcbiAgICAkLlZBUixcbl0pO1xuLy9DaGVjayBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5leHBvcnQgZnVuY3Rpb24gY2F1c2VzRXhpdChzdGFydFRhZ1Rva2VuKSB7XG4gICAgY29uc3QgdG4gPSBzdGFydFRhZ1Rva2VuLnRhZ0lEO1xuICAgIGNvbnN0IGlzRm9udFdpdGhBdHRycyA9IHRuID09PSAkLkZPTlQgJiZcbiAgICAgICAgc3RhcnRUYWdUb2tlbi5hdHRycy5zb21lKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gQVRUUlMuQ09MT1IgfHwgbmFtZSA9PT0gQVRUUlMuU0laRSB8fCBuYW1lID09PSBBVFRSUy5GQUNFKTtcbiAgICByZXR1cm4gaXNGb250V2l0aEF0dHJzIHx8IEVYSVRTX0ZPUkVJR05fQ09OVEVOVC5oYXModG4pO1xufVxuLy9Ub2tlbiBhZGp1c3RtZW50c1xuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFRva2VuTWF0aE1MQXR0cnModG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbi5hdHRyc1tpXS5uYW1lID09PSBERUZJTklUSU9OX1VSTF9BVFRSKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFRva2VuU1ZHQXR0cnModG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ck5hbWUgPSBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVAuZ2V0KHRva2VuLmF0dHJzW2ldLm5hbWUpO1xuICAgICAgICBpZiAoYWRqdXN0ZWRBdHRyTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyTmFtZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbi5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBhZGp1c3RlZEF0dHJFbnRyeSA9IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUC5nZXQodG9rZW4uYXR0cnNbaV0ubmFtZSk7XG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJFbnRyeSkge1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ucHJlZml4ID0gYWRqdXN0ZWRBdHRyRW50cnkucHJlZml4O1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWU7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lc3BhY2UgPSBhZGp1c3RlZEF0dHJFbnRyeS5uYW1lc3BhY2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VG9rZW5TVkdUYWdOYW1lKHRva2VuKSB7XG4gICAgY29uc3QgYWRqdXN0ZWRUYWdOYW1lID0gU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUC5nZXQodG9rZW4udGFnTmFtZSk7XG4gICAgaWYgKGFkanVzdGVkVGFnTmFtZSAhPSBudWxsKSB7XG4gICAgICAgIHRva2VuLnRhZ05hbWUgPSBhZGp1c3RlZFRhZ05hbWU7XG4gICAgICAgIHRva2VuLnRhZ0lEID0gZ2V0VGFnSUQodG9rZW4udGFnTmFtZSk7XG4gICAgfVxufVxuLy9JbnRlZ3JhdGlvbiBwb2ludHNcbmZ1bmN0aW9uIGlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQodG4sIG5zKSB7XG4gICAgcmV0dXJuIG5zID09PSBOUy5NQVRITUwgJiYgKHRuID09PSAkLk1JIHx8IHRuID09PSAkLk1PIHx8IHRuID09PSAkLk1OIHx8IHRuID09PSAkLk1TIHx8IHRuID09PSAkLk1URVhUKTtcbn1cbmZ1bmN0aW9uIGlzSHRtbEludGVncmF0aW9uUG9pbnQodG4sIG5zLCBhdHRycykge1xuICAgIGlmIChucyA9PT0gTlMuTUFUSE1MICYmIHRuID09PSAkLkFOTk9UQVRJT05fWE1MKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChhdHRyc1tpXS5uYW1lID09PSBBVFRSUy5FTkNPRElORykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXR0cnNbaV0udmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IE1JTUVfVFlQRVMuVEVYVF9IVE1MIHx8IHZhbHVlID09PSBNSU1FX1RZUEVTLkFQUExJQ0FUSU9OX1hNTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnMgPT09IE5TLlNWRyAmJiAodG4gPT09ICQuRk9SRUlHTl9PQkpFQ1QgfHwgdG4gPT09ICQuREVTQyB8fCB0biA9PT0gJC5USVRMRSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMsIGZvcmVpZ25OUykge1xuICAgIHJldHVybiAoKCghZm9yZWlnbk5TIHx8IGZvcmVpZ25OUyA9PT0gTlMuSFRNTCkgJiYgaXNIdG1sSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzKSkgfHxcbiAgICAgICAgKCghZm9yZWlnbk5TIHx8IGZvcmVpZ25OUyA9PT0gTlMuTUFUSE1MKSAmJiBpc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KHRuLCBucykpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcmVpZ24tY29udGVudC5qcy5tYXAiXSwibmFtZXMiOlsiVEFHX0lEIiwiJCIsIk5TIiwiQVRUUlMiLCJnZXRUYWdJRCIsIk1JTUVfVFlQRVMiLCJURVhUX0hUTUwiLCJBUFBMSUNBVElPTl9YTUwiLCJERUZJTklUSU9OX1VSTF9BVFRSIiwiQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUiIsIlNWR19BVFRSU19BREpVU1RNRU5UX01BUCIsIk1hcCIsIm1hcCIsImF0dHIiLCJ0b0xvd2VyQ2FzZSIsIlhNTF9BVFRSU19BREpVU1RNRU5UX01BUCIsInByZWZpeCIsIm5hbWUiLCJuYW1lc3BhY2UiLCJYTElOSyIsIlhNTCIsIlhNTE5TIiwiU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCIsInRuIiwiRVhJVFNfRk9SRUlHTl9DT05URU5UIiwiU2V0IiwiQiIsIkJJRyIsIkJMT0NLUVVPVEUiLCJCT0RZIiwiQlIiLCJDRU5URVIiLCJDT0RFIiwiREQiLCJESVYiLCJETCIsIkRUIiwiRU0iLCJFTUJFRCIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkhFQUQiLCJIUiIsIkkiLCJJTUciLCJMSSIsIkxJU1RJTkciLCJNRU5VIiwiTUVUQSIsIk5PQlIiLCJPTCIsIlAiLCJQUkUiLCJSVUJZIiwiUyIsIlNNQUxMIiwiU1BBTiIsIlNUUk9ORyIsIlNUUklLRSIsIlNVQiIsIlNVUCIsIlRBQkxFIiwiVFQiLCJVIiwiVUwiLCJWQVIiLCJjYXVzZXNFeGl0Iiwic3RhcnRUYWdUb2tlbiIsInRhZ0lEIiwiaXNGb250V2l0aEF0dHJzIiwiRk9OVCIsImF0dHJzIiwic29tZSIsIkNPTE9SIiwiU0laRSIsIkZBQ0UiLCJoYXMiLCJhZGp1c3RUb2tlbk1hdGhNTEF0dHJzIiwidG9rZW4iLCJpIiwibGVuZ3RoIiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImFkanVzdGVkQXR0ck5hbWUiLCJnZXQiLCJhZGp1c3RUb2tlblhNTEF0dHJzIiwiYWRqdXN0ZWRBdHRyRW50cnkiLCJhZGp1c3RUb2tlblNWR1RhZ05hbWUiLCJhZGp1c3RlZFRhZ05hbWUiLCJ0YWdOYW1lIiwiaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCIsIm5zIiwiTUFUSE1MIiwiTUkiLCJNTyIsIk1OIiwiTVMiLCJNVEVYVCIsImlzSHRtbEludGVncmF0aW9uUG9pbnQiLCJBTk5PVEFUSU9OX1hNTCIsIkVOQ09ESU5HIiwidmFsdWUiLCJTVkciLCJGT1JFSUdOX09CSkVDVCIsIkRFU0MiLCJUSVRMRSIsImlzSW50ZWdyYXRpb25Qb2ludCIsImZvcmVpZ25OUyIsIkhUTUwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/common/foreign-content.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/common/html.js":
/*!*************************************************!*\
!*** ./node_modules/parse5/dist/common/html.js ***!
\*************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ATTRS: () => (/* binding */ ATTRS),\n/* harmony export */ DOCUMENT_MODE: () => (/* binding */ DOCUMENT_MODE),\n/* harmony export */ NS: () => (/* binding */ NS),\n/* harmony export */ SPECIAL_ELEMENTS: () => (/* binding */ SPECIAL_ELEMENTS),\n/* harmony export */ TAG_ID: () => (/* binding */ TAG_ID),\n/* harmony export */ TAG_NAMES: () => (/* binding */ TAG_NAMES),\n/* harmony export */ getTagID: () => (/* binding */ getTagID),\n/* harmony export */ hasUnescapedText: () => (/* binding */ hasUnescapedText),\n/* harmony export */ isNumberedHeader: () => (/* binding */ isNumberedHeader)\n/* harmony export */ });\n/** All valid namespaces in HTML. */ var NS;\n(function(NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nvar ATTRS;\n(function(ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */ var DOCUMENT_MODE;\n(function(DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nvar TAG_NAMES;\n(function(TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */ var TAG_ID;\n(function(TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [\n TAG_NAMES.A,\n TAG_ID.A\n ],\n [\n TAG_NAMES.ADDRESS,\n TAG_ID.ADDRESS\n ],\n [\n TAG_NAMES.ANNOTATION_XML,\n TAG_ID.ANNOTATION_XML\n ],\n [\n TAG_NAMES.APPLET,\n TAG_ID.APPLET\n ],\n [\n TAG_NAMES.AREA,\n TAG_ID.AREA\n ],\n [\n TAG_NAMES.ARTICLE,\n TAG_ID.ARTICLE\n ],\n [\n TAG_NAMES.ASIDE,\n TAG_ID.ASIDE\n ],\n [\n TAG_NAMES.B,\n TAG_ID.B\n ],\n [\n TAG_NAMES.BASE,\n TAG_ID.BASE\n ],\n [\n TAG_NAMES.BASEFONT,\n TAG_ID.BASEFONT\n ],\n [\n TAG_NAMES.BGSOUND,\n TAG_ID.BGSOUND\n ],\n [\n TAG_NAMES.BIG,\n TAG_ID.BIG\n ],\n [\n TAG_NAMES.BLOCKQUOTE,\n TAG_ID.BLOCKQUOTE\n ],\n [\n TAG_NAMES.BODY,\n TAG_ID.BODY\n ],\n [\n TAG_NAMES.BR,\n TAG_ID.BR\n ],\n [\n TAG_NAMES.BUTTON,\n TAG_ID.BUTTON\n ],\n [\n TAG_NAMES.CAPTION,\n TAG_ID.CAPTION\n ],\n [\n TAG_NAMES.CENTER,\n TAG_ID.CENTER\n ],\n [\n TAG_NAMES.CODE,\n TAG_ID.CODE\n ],\n [\n TAG_NAMES.COL,\n TAG_ID.COL\n ],\n [\n TAG_NAMES.COLGROUP,\n TAG_ID.COLGROUP\n ],\n [\n TAG_NAMES.DD,\n TAG_ID.DD\n ],\n [\n TAG_NAMES.DESC,\n TAG_ID.DESC\n ],\n [\n TAG_NAMES.DETAILS,\n TAG_ID.DETAILS\n ],\n [\n TAG_NAMES.DIALOG,\n TAG_ID.DIALOG\n ],\n [\n TAG_NAMES.DIR,\n TAG_ID.DIR\n ],\n [\n TAG_NAMES.DIV,\n TAG_ID.DIV\n ],\n [\n TAG_NAMES.DL,\n TAG_ID.DL\n ],\n [\n TAG_NAMES.DT,\n TAG_ID.DT\n ],\n [\n TAG_NAMES.EM,\n TAG_ID.EM\n ],\n [\n TAG_NAMES.EMBED,\n TAG_ID.EMBED\n ],\n [\n TAG_NAMES.FIELDSET,\n TAG_ID.FIELDSET\n ],\n [\n TAG_NAMES.FIGCAPTION,\n TAG_ID.FIGCAPTION\n ],\n [\n TAG_NAMES.FIGURE,\n TAG_ID.FIGURE\n ],\n [\n TAG_NAMES.FONT,\n TAG_ID.FONT\n ],\n [\n TAG_NAMES.FOOTER,\n TAG_ID.FOOTER\n ],\n [\n TAG_NAMES.FOREIGN_OBJECT,\n TAG_ID.FOREIGN_OBJECT\n ],\n [\n TAG_NAMES.FORM,\n TAG_ID.FORM\n ],\n [\n TAG_NAMES.FRAME,\n TAG_ID.FRAME\n ],\n [\n TAG_NAMES.FRAMESET,\n TAG_ID.FRAMESET\n ],\n [\n TAG_NAMES.H1,\n TAG_ID.H1\n ],\n [\n TAG_NAMES.H2,\n TAG_ID.H2\n ],\n [\n TAG_NAMES.H3,\n TAG_ID.H3\n ],\n [\n TAG_NAMES.H4,\n TAG_ID.H4\n ],\n [\n TAG_NAMES.H5,\n TAG_ID.H5\n ],\n [\n TAG_NAMES.H6,\n TAG_ID.H6\n ],\n [\n TAG_NAMES.HEAD,\n TAG_ID.HEAD\n ],\n [\n TAG_NAMES.HEADER,\n TAG_ID.HEADER\n ],\n [\n TAG_NAMES.HGROUP,\n TAG_ID.HGROUP\n ],\n [\n TAG_NAMES.HR,\n TAG_ID.HR\n ],\n [\n TAG_NAMES.HTML,\n TAG_ID.HTML\n ],\n [\n TAG_NAMES.I,\n TAG_ID.I\n ],\n [\n TAG_NAMES.IMG,\n TAG_ID.IMG\n ],\n [\n TAG_NAMES.IMAGE,\n TAG_ID.IMAGE\n ],\n [\n TAG_NAMES.INPUT,\n TAG_ID.INPUT\n ],\n [\n TAG_NAMES.IFRAME,\n TAG_ID.IFRAME\n ],\n [\n TAG_NAMES.KEYGEN,\n TAG_ID.KEYGEN\n ],\n [\n TAG_NAMES.LABEL,\n TAG_ID.LABEL\n ],\n [\n TAG_NAMES.LI,\n TAG_ID.LI\n ],\n [\n TAG_NAMES.LINK,\n TAG_ID.LINK\n ],\n [\n TAG_NAMES.LISTING,\n TAG_ID.LISTING\n ],\n [\n TAG_NAMES.MAIN,\n TAG_ID.MAIN\n ],\n [\n TAG_NAMES.MALIGNMARK,\n TAG_ID.MALIGNMARK\n ],\n [\n TAG_NAMES.MARQUEE,\n TAG_ID.MARQUEE\n ],\n [\n TAG_NAMES.MATH,\n TAG_ID.MATH\n ],\n [\n TAG_NAMES.MENU,\n TAG_ID.MENU\n ],\n [\n TAG_NAMES.META,\n TAG_ID.META\n ],\n [\n TAG_NAMES.MGLYPH,\n TAG_ID.MGLYPH\n ],\n [\n TAG_NAMES.MI,\n TAG_ID.MI\n ],\n [\n TAG_NAMES.MO,\n TAG_ID.MO\n ],\n [\n TAG_NAMES.MN,\n TAG_ID.MN\n ],\n [\n TAG_NAMES.MS,\n TAG_ID.MS\n ],\n [\n TAG_NAMES.MTEXT,\n TAG_ID.MTEXT\n ],\n [\n TAG_NAMES.NAV,\n TAG_ID.NAV\n ],\n [\n TAG_NAMES.NOBR,\n TAG_ID.NOBR\n ],\n [\n TAG_NAMES.NOFRAMES,\n TAG_ID.NOFRAMES\n ],\n [\n TAG_NAMES.NOEMBED,\n TAG_ID.NOEMBED\n ],\n [\n TAG_NAMES.NOSCRIPT,\n TAG_ID.NOSCRIPT\n ],\n [\n TAG_NAMES.OBJECT,\n TAG_ID.OBJECT\n ],\n [\n TAG_NAMES.OL,\n TAG_ID.OL\n ],\n [\n TAG_NAMES.OPTGROUP,\n TAG_ID.OPTGROUP\n ],\n [\n TAG_NAMES.OPTION,\n TAG_ID.OPTION\n ],\n [\n TAG_NAMES.P,\n TAG_ID.P\n ],\n [\n TAG_NAMES.PARAM,\n TAG_ID.PARAM\n ],\n [\n TAG_NAMES.PLAINTEXT,\n TAG_ID.PLAINTEXT\n ],\n [\n TAG_NAMES.PRE,\n TAG_ID.PRE\n ],\n [\n TAG_NAMES.RB,\n TAG_ID.RB\n ],\n [\n TAG_NAMES.RP,\n TAG_ID.RP\n ],\n [\n TAG_NAMES.RT,\n TAG_ID.RT\n ],\n [\n TAG_NAMES.RTC,\n TAG_ID.RTC\n ],\n [\n TAG_NAMES.RUBY,\n TAG_ID.RUBY\n ],\n [\n TAG_NAMES.S,\n TAG_ID.S\n ],\n [\n TAG_NAMES.SCRIPT,\n TAG_ID.SCRIPT\n ],\n [\n TAG_NAMES.SECTION,\n TAG_ID.SECTION\n ],\n [\n TAG_NAMES.SELECT,\n TAG_ID.SELECT\n ],\n [\n TAG_NAMES.SOURCE,\n TAG_ID.SOURCE\n ],\n [\n TAG_NAMES.SMALL,\n TAG_ID.SMALL\n ],\n [\n TAG_NAMES.SPAN,\n TAG_ID.SPAN\n ],\n [\n TAG_NAMES.STRIKE,\n TAG_ID.STRIKE\n ],\n [\n TAG_NAMES.STRONG,\n TAG_ID.STRONG\n ],\n [\n TAG_NAMES.STYLE,\n TAG_ID.STYLE\n ],\n [\n TAG_NAMES.SUB,\n TAG_ID.SUB\n ],\n [\n TAG_NAMES.SUMMARY,\n TAG_ID.SUMMARY\n ],\n [\n TAG_NAMES.SUP,\n TAG_ID.SUP\n ],\n [\n TAG_NAMES.TABLE,\n TAG_ID.TABLE\n ],\n [\n TAG_NAMES.TBODY,\n TAG_ID.TBODY\n ],\n [\n TAG_NAMES.TEMPLATE,\n TAG_ID.TEMPLATE\n ],\n [\n TAG_NAMES.TEXTAREA,\n TAG_ID.TEXTAREA\n ],\n [\n TAG_NAMES.TFOOT,\n TAG_ID.TFOOT\n ],\n [\n TAG_NAMES.TD,\n TAG_ID.TD\n ],\n [\n TAG_NAMES.TH,\n TAG_ID.TH\n ],\n [\n TAG_NAMES.THEAD,\n TAG_ID.THEAD\n ],\n [\n TAG_NAMES.TITLE,\n TAG_ID.TITLE\n ],\n [\n TAG_NAMES.TR,\n TAG_ID.TR\n ],\n [\n TAG_NAMES.TRACK,\n TAG_ID.TRACK\n ],\n [\n TAG_NAMES.TT,\n TAG_ID.TT\n ],\n [\n TAG_NAMES.U,\n TAG_ID.U\n ],\n [\n TAG_NAMES.UL,\n TAG_ID.UL\n ],\n [\n TAG_NAMES.SVG,\n TAG_ID.SVG\n ],\n [\n TAG_NAMES.VAR,\n TAG_ID.VAR\n ],\n [\n TAG_NAMES.WBR,\n TAG_ID.WBR\n ],\n [\n TAG_NAMES.XMP,\n TAG_ID.XMP\n ]\n]);\nfunction getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nconst SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP\n ]),\n [NS.MATHML]: new Set([\n $.MI,\n $.MO,\n $.MN,\n $.MS,\n $.MTEXT,\n $.ANNOTATION_XML\n ]),\n [NS.SVG]: new Set([\n $.TITLE,\n $.FOREIGN_OBJECT,\n $.DESC\n ]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set()\n};\nfunction isNumberedHeader(tn) {\n return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT\n]);\nfunction hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || scriptingEnabled && tn === TAG_NAMES.NOSCRIPT;\n} //# sourceMappingURL=html.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2h0bWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWtDLEdBQzNCLElBQUlBLEdBQUc7QUFDYixVQUFVQSxFQUFFO0lBQ1RBLEVBQUUsQ0FBQyxPQUFPLEdBQUc7SUFDYkEsRUFBRSxDQUFDLFNBQVMsR0FBRztJQUNmQSxFQUFFLENBQUMsTUFBTSxHQUFHO0lBQ1pBLEVBQUUsQ0FBQyxRQUFRLEdBQUc7SUFDZEEsRUFBRSxDQUFDLE1BQU0sR0FBRztJQUNaQSxFQUFFLENBQUMsUUFBUSxHQUFHO0FBQ2xCLEdBQUdBLEtBQUtBLE1BQU9BLENBQUFBLEtBQUssQ0FBQztBQUNkLElBQUlDLE1BQU07QUFDaEIsVUFBVUEsS0FBSztJQUNaQSxLQUFLLENBQUMsT0FBTyxHQUFHO0lBQ2hCQSxLQUFLLENBQUMsU0FBUyxHQUFHO0lBQ2xCQSxLQUFLLENBQUMsV0FBVyxHQUFHO0lBQ3BCQSxLQUFLLENBQUMsU0FBUyxHQUFHO0lBQ2xCQSxLQUFLLENBQUMsT0FBTyxHQUFHO0lBQ2hCQSxLQUFLLENBQUMsUUFBUSxHQUFHO0lBQ2pCQSxLQUFLLENBQUMsT0FBTyxHQUFHO0lBQ2hCQSxLQUFLLENBQUMsT0FBTyxHQUFHO0FBQ3BCLEdBQUdBLFFBQVFBLFNBQVVBLENBQUFBLFFBQVEsQ0FBQztBQUM5Qjs7OztDQUlDLEdBQ00sSUFBSUMsY0FBYztBQUN4QixVQUFVQSxhQUFhO0lBQ3BCQSxhQUFhLENBQUMsWUFBWSxHQUFHO0lBQzdCQSxhQUFhLENBQUMsU0FBUyxHQUFHO0lBQzFCQSxhQUFhLENBQUMsaUJBQWlCLEdBQUc7QUFDdEMsR0FBR0EsZ0JBQWdCQSxpQkFBa0JBLENBQUFBLGdCQUFnQixDQUFDO0FBQy9DLElBQUlDLFVBQVU7QUFDcEIsVUFBVUEsU0FBUztJQUNoQkEsU0FBUyxDQUFDLElBQUksR0FBRztJQUNqQkEsU0FBUyxDQUFDLFVBQVUsR0FBRztJQUN2QkEsU0FBUyxDQUFDLGlCQUFpQixHQUFHO0lBQzlCQSxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3RCQSxTQUFTLENBQUMsT0FBTyxHQUFHO0lBQ3BCQSxTQUFTLENBQUMsVUFBVSxHQUFHO0lBQ3ZCQSxTQUFTLENBQUMsUUFBUSxHQUFHO0lBQ3JCQSxTQUFTLENBQUMsSUFBSSxHQUFHO0lBQ2pCQSxTQUFTLENBQUMsT0FBTyxHQUFHO0lBQ3BCQSxTQUFTLENBQUMsV0FBVyxHQUFHO0lBQ3hCQSxTQUFTLENBQUMsVUFBVSxHQUFHO0lBQ3ZCQSxTQUFTLENBQUMsTUFBTSxHQUFHO0lBQ25CQSxTQUFTLENBQUMsYUFBYSxHQUFHO0lBQzFCQSxTQUFTLENBQUMsT0FBTyxHQUFHO0lBQ3BCQSxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ2xCQSxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3RCQSxTQUFTLENBQUMsVUFBVSxHQUFHO0lBQ3ZCQSxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3RCQSxTQUFTLENBQUMsT0FBTyxHQUFHO0lBQ3BCQSxTQUFTLENBQUMsTUFBTSxHQUFHO0lBQ25CQSxTQUFTLENBQUMsV0FBVyxHQUFHO0lBQ3hCQSxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ2xCQSxTQUFTLENBQUMsT0FBTyxHQUFHO0lBQ3BCQSxTQUFTLENBQUMsVUFBVSxHQUFHO0lBQ3ZCQSxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3RCQSxTQUFTLENBQUMsTUFBTSxHQUFHO0lBQ25CQSxTQUFTLENBQUMsTUFBTSxHQUFHO0lBQ25CQSxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ2xCQSxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ2xCQSxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ2xCQSxTQUFTLENBQUMsUUFBUSxHQUFHO0lBQ3JCQSxTQUFTLENBQUMsV0FBVyxHQUFHO0lBQ3hCQSxTQUFTLENBQUMsYUFBYSxHQUFHO0lBQzFCQSxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3RCQSxTQUFTLENBQUMsT0FBTyxHQUFHO0lBQ3BCQSxTQUFTLENBQUMsU0FBUyxHQUFHO0lBQ3RCQSxTQUFTLENBQUMsaUJBQWlCLEdBQUc7SUFDOUJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDeEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxJQUFJLEdBQUc7SUFDakJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxVQUFVLEdBQUc7SUFDdkJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxhQUFhLEdBQUc7SUFDMUJBLFNBQVMsQ0FBQyxVQUFVLEdBQUc7SUFDdkJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDeEJBLFNBQVMsQ0FBQyxVQUFVLEdBQUc7SUFDdkJBLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDeEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDeEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxJQUFJLEdBQUc7SUFDakJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxZQUFZLEdBQUc7SUFDekJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxJQUFJLEdBQUc7SUFDakJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxVQUFVLEdBQUc7SUFDdkJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxPQUFPLEdBQUc7SUFDcEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxTQUFTLEdBQUc7SUFDdEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxVQUFVLEdBQUc7SUFDdkJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDeEJBLFNBQVMsQ0FBQyxXQUFXLEdBQUc7SUFDeEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxRQUFRLEdBQUc7SUFDckJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxJQUFJLEdBQUc7SUFDakJBLFNBQVMsQ0FBQyxLQUFLLEdBQUc7SUFDbEJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7SUFDbkJBLFNBQVMsQ0FBQyxNQUFNLEdBQUc7QUFDdkIsR0FBR0EsWUFBWUEsYUFBY0EsQ0FBQUEsWUFBWSxDQUFDO0FBQzFDOzs7O0NBSUMsR0FDTSxJQUFJQyxPQUFPO0FBQ2pCLFVBQVVBLE1BQU07SUFDYkEsTUFBTSxDQUFDQSxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUNoQ0EsTUFBTSxDQUFDQSxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRztJQUMxQkEsTUFBTSxDQUFDQSxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUNoQ0EsTUFBTSxDQUFDQSxNQUFNLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxHQUFHO0lBQ3ZDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHO0lBQy9CQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHO0lBQzdCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHO0lBQ2hDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxRQUFRLEdBQUcsRUFBRSxHQUFHO0lBQzlCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHO0lBQzFCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHO0lBQzdCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHO0lBQ2xDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHO0lBQ2pDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHO0lBQzdCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHO0lBQ3BDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHO0lBQzlCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHO0lBQzVCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHO0lBQ2hDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHO0lBQ2pDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHO0lBQ2hDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHO0lBQzlCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHO0lBQzdCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHO0lBQ2xDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHO0lBQzVCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHO0lBQzlCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHO0lBQ2pDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHO0lBQ2hDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHO0lBQzdCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHO0lBQzdCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHO0lBQzVCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHO0lBQzVCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHO0lBQzVCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHO0lBQy9CQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHO0lBQ2xDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHO0lBQ3BDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHO0lBQ2hDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHO0lBQzlCQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHO0lBQ2hDQSxNQUFNLENBQUNBLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEdBQUc7SUFDeENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUc7SUFDbENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUc7SUFDM0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUc7SUFDakNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUc7SUFDcENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUc7SUFDakNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUc7SUFDbENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUc7SUFDakNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUc7SUFDbENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUc7SUFDbENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUc7SUFDM0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUc7SUFDbkNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUc7SUFDNUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUc7SUFDM0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUc7SUFDakNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDL0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUc7SUFDakNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUc7SUFDbENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUc7SUFDOUJBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUc7SUFDbkNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUc7SUFDbkNBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUc7SUFDaENBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUc7SUFDN0JBLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUc7SUFDNUJBLE1BQU0sQ0FB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d0QsRUFBRXZELEtBQUs7UUFBRXVELEVBQUU3SCxjQUFjO0tBQUM7SUFDeEUsQ0FBQ1QsR0FBRzZILEdBQUcsQ0FBQyxFQUFFLElBQUlXLElBQUk7UUFBQ0YsRUFBRWYsS0FBSztRQUFFZSxFQUFFM0YsY0FBYztRQUFFMkYsRUFBRXpHLElBQUk7S0FBQztJQUNyRCxDQUFDN0IsR0FBRzBJLEtBQUssQ0FBQyxFQUFFLElBQUlGO0lBQ2hCLENBQUN4SSxHQUFHMkksR0FBRyxDQUFDLEVBQUUsSUFBSUg7SUFDZCxDQUFDeEksR0FBRzRJLEtBQUssQ0FBQyxFQUFFLElBQUlKO0FBQ3BCLEVBQUU7QUFDSyxTQUFTSyxpQkFBaUJDLEVBQUU7SUFDL0IsT0FBT0EsT0FBT1IsRUFBRXZGLEVBQUUsSUFBSStGLE9BQU9SLEVBQUV0RixFQUFFLElBQUk4RixPQUFPUixFQUFFckYsRUFBRSxJQUFJNkYsT0FBT1IsRUFBRXBGLEVBQUUsSUFBSTRGLE9BQU9SLEVBQUVuRixFQUFFLElBQUkyRixPQUFPUixFQUFFbEYsRUFBRTtBQUNqRztBQUNBLE1BQU0yRixpQkFBaUIsSUFBSVAsSUFBSTtJQUMzQnJJLFVBQVV3RyxLQUFLO0lBQ2Z4RyxVQUFVZ0csTUFBTTtJQUNoQmhHLFVBQVU2SCxHQUFHO0lBQ2I3SCxVQUFVMkQsTUFBTTtJQUNoQjNELFVBQVVnRixPQUFPO0lBQ2pCaEYsVUFBVStFLFFBQVE7SUFDbEIvRSxVQUFVd0YsU0FBUztDQUN0QjtBQUNNLFNBQVNxRCxpQkFBaUJGLEVBQUUsRUFBRUcsZ0JBQWdCO0lBQ2pELE9BQU9GLGVBQWVHLEdBQUcsQ0FBQ0osT0FBUUcsb0JBQW9CSCxPQUFPM0ksVUFBVWlGLFFBQVE7QUFDbkYsRUFDQSxnQ0FBZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vaHRtbC5qcz9mYzJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBBbGwgdmFsaWQgbmFtZXNwYWNlcyBpbiBIVE1MLiAqL1xuZXhwb3J0IHZhciBOUztcbihmdW5jdGlvbiAoTlMpIHtcbiAgICBOU1tcIkhUTUxcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjtcbiAgICBOU1tcIk1BVEhNTFwiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO1xuICAgIE5TW1wiU1ZHXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIE5TW1wiWExJTktcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIjtcbiAgICBOU1tcIlhNTFwiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCI7XG4gICAgTlNbXCJYTUxOU1wiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIjtcbn0pKE5TID0gTlMgfHwgKE5TID0ge30pKTtcbmV4cG9ydCB2YXIgQVRUUlM7XG4oZnVuY3Rpb24gKEFUVFJTKSB7XG4gICAgQVRUUlNbXCJUWVBFXCJdID0gXCJ0eXBlXCI7XG4gICAgQVRUUlNbXCJBQ1RJT05cIl0gPSBcImFjdGlvblwiO1xuICAgIEFUVFJTW1wiRU5DT0RJTkdcIl0gPSBcImVuY29kaW5nXCI7XG4gICAgQVRUUlNbXCJQUk9NUFRcIl0gPSBcInByb21wdFwiO1xuICAgIEFUVFJTW1wiTkFNRVwiXSA9IFwibmFtZVwiO1xuICAgIEFUVFJTW1wiQ09MT1JcIl0gPSBcImNvbG9yXCI7XG4gICAgQVRUUlNbXCJGQUNFXCJdID0gXCJmYWNlXCI7XG4gICAgQVRUUlNbXCJTSVpFXCJdID0gXCJzaXplXCI7XG59KShBVFRSUyA9IEFUVFJTIHx8IChBVFRSUyA9IHt9KSk7XG4vKipcbiAqIFRoZSBtb2RlIG9mIHRoZSBkb2N1bWVudC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtZG9jdW1lbnQtbGltaXRlZC1xdWlya3N9XG4gKi9cbmV4cG9ydCB2YXIgRE9DVU1FTlRfTU9ERTtcbihmdW5jdGlvbiAoRE9DVU1FTlRfTU9ERSkge1xuICAgIERPQ1VNRU5UX01PREVbXCJOT19RVUlSS1NcIl0gPSBcIm5vLXF1aXJrc1wiO1xuICAgIERPQ1VNRU5UX01PREVbXCJRVUlSS1NcIl0gPSBcInF1aXJrc1wiO1xuICAgIERPQ1VNRU5UX01PREVbXCJMSU1JVEVEX1FVSVJLU1wiXSA9IFwibGltaXRlZC1xdWlya3NcIjtcbn0pKERPQ1VNRU5UX01PREUgPSBET0NVTUVOVF9NT0RFIHx8IChET0NVTUVOVF9NT0RFID0ge30pKTtcbmV4cG9ydCB2YXIgVEFHX05BTUVTO1xuKGZ1bmN0aW9uIChUQUdfTkFNRVMpIHtcbiAgICBUQUdfTkFNRVNbXCJBXCJdID0gXCJhXCI7XG4gICAgVEFHX05BTUVTW1wiQUREUkVTU1wiXSA9IFwiYWRkcmVzc1wiO1xuICAgIFRBR19OQU1FU1tcIkFOTk9UQVRJT05fWE1MXCJdID0gXCJhbm5vdGF0aW9uLXhtbFwiO1xuICAgIFRBR19OQU1FU1tcIkFQUExFVFwiXSA9IFwiYXBwbGV0XCI7XG4gICAgVEFHX05BTUVTW1wiQVJFQVwiXSA9IFwiYXJlYVwiO1xuICAgIFRBR19OQU1FU1tcIkFSVElDTEVcIl0gPSBcImFydGljbGVcIjtcbiAgICBUQUdfTkFNRVNbXCJBU0lERVwiXSA9IFwiYXNpZGVcIjtcbiAgICBUQUdfTkFNRVNbXCJCXCJdID0gXCJiXCI7XG4gICAgVEFHX05BTUVTW1wiQkFTRVwiXSA9IFwiYmFzZVwiO1xuICAgIFRBR19OQU1FU1tcIkJBU0VGT05UXCJdID0gXCJiYXNlZm9udFwiO1xuICAgIFRBR19OQU1FU1tcIkJHU09VTkRcIl0gPSBcImJnc291bmRcIjtcbiAgICBUQUdfTkFNRVNbXCJCSUdcIl0gPSBcImJpZ1wiO1xuICAgIFRBR19OQU1FU1tcIkJMT0NLUVVPVEVcIl0gPSBcImJsb2NrcXVvdGVcIjtcbiAgICBUQUdfTkFNRVNbXCJCT0RZXCJdID0gXCJib2R5XCI7XG4gICAgVEFHX05BTUVTW1wiQlJcIl0gPSBcImJyXCI7XG4gICAgVEFHX05BTUVTW1wiQlVUVE9OXCJdID0gXCJidXR0b25cIjtcbiAgICBUQUdfTkFNRVNbXCJDQVBUSU9OXCJdID0gXCJjYXB0aW9uXCI7XG4gICAgVEFHX05BTUVTW1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0RFXCJdID0gXCJjb2RlXCI7XG4gICAgVEFHX05BTUVTW1wiQ09MXCJdID0gXCJjb2xcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0xHUk9VUFwiXSA9IFwiY29sZ3JvdXBcIjtcbiAgICBUQUdfTkFNRVNbXCJERFwiXSA9IFwiZGRcIjtcbiAgICBUQUdfTkFNRVNbXCJERVNDXCJdID0gXCJkZXNjXCI7XG4gICAgVEFHX05BTUVTW1wiREVUQUlMU1wiXSA9IFwiZGV0YWlsc1wiO1xuICAgIFRBR19OQU1FU1tcIkRJQUxPR1wiXSA9IFwiZGlhbG9nXCI7XG4gICAgVEFHX05BTUVTW1wiRElSXCJdID0gXCJkaXJcIjtcbiAgICBUQUdfTkFNRVNbXCJESVZcIl0gPSBcImRpdlwiO1xuICAgIFRBR19OQU1FU1tcIkRMXCJdID0gXCJkbFwiO1xuICAgIFRBR19OQU1FU1tcIkRUXCJdID0gXCJkdFwiO1xuICAgIFRBR19OQU1FU1tcIkVNXCJdID0gXCJlbVwiO1xuICAgIFRBR19OQU1FU1tcIkVNQkVEXCJdID0gXCJlbWJlZFwiO1xuICAgIFRBR19OQU1FU1tcIkZJRUxEU0VUXCJdID0gXCJmaWVsZHNldFwiO1xuICAgIFRBR19OQU1FU1tcIkZJR0NBUFRJT05cIl0gPSBcImZpZ2NhcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJGSUdVUkVcIl0gPSBcImZpZ3VyZVwiO1xuICAgIFRBR19OQU1FU1tcIkZPTlRcIl0gPSBcImZvbnRcIjtcbiAgICBUQUdfTkFNRVNbXCJGT09URVJcIl0gPSBcImZvb3RlclwiO1xuICAgIFRBR19OQU1FU1tcIkZPUkVJR05fT0JKRUNUXCJdID0gXCJmb3JlaWduT2JqZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiRk9STVwiXSA9IFwiZm9ybVwiO1xuICAgIFRBR19OQU1FU1tcIkZSQU1FXCJdID0gXCJmcmFtZVwiO1xuICAgIFRBR19OQU1FU1tcIkZSQU1FU0VUXCJdID0gXCJmcmFtZXNldFwiO1xuICAgIFRBR19OQU1FU1tcIkgxXCJdID0gXCJoMVwiO1xuICAgIFRBR19OQU1FU1tcIkgyXCJdID0gXCJoMlwiO1xuICAgIFRBR19OQU1FU1tcIkgzXCJdID0gXCJoM1wiO1xuICAgIFRBR19OQU1FU1tcIkg0XCJdID0gXCJoNFwiO1xuICAgIFRBR19OQU1FU1tcIkg1XCJdID0gXCJoNVwiO1xuICAgIFRBR19OQU1FU1tcIkg2XCJdID0gXCJoNlwiO1xuICAgIFRBR19OQU1FU1tcIkhFQURcIl0gPSBcImhlYWRcIjtcbiAgICBUQUdfTkFNRVNbXCJIRUFERVJcIl0gPSBcImhlYWRlclwiO1xuICAgIFRBR19OQU1FU1tcIkhHUk9VUFwiXSA9IFwiaGdyb3VwXCI7XG4gICAgVEFHX05BTUVTW1wiSFJcIl0gPSBcImhyXCI7XG4gICAgVEFHX05BTUVTW1wiSFRNTFwiXSA9IFwiaHRtbFwiO1xuICAgIFRBR19OQU1FU1tcIklcIl0gPSBcImlcIjtcbiAgICBUQUdfTkFNRVNbXCJJTUdcIl0gPSBcImltZ1wiO1xuICAgIFRBR19OQU1FU1tcIklNQUdFXCJdID0gXCJpbWFnZVwiO1xuICAgIFRBR19OQU1FU1tcIklOUFVUXCJdID0gXCJpbnB1dFwiO1xuICAgIFRBR19OQU1FU1tcIklGUkFNRVwiXSA9IFwiaWZyYW1lXCI7XG4gICAgVEFHX05BTUVTW1wiS0VZR0VOXCJdID0gXCJrZXlnZW5cIjtcbiAgICBUQUdfTkFNRVNbXCJMQUJFTFwiXSA9IFwibGFiZWxcIjtcbiAgICBUQUdfTkFNRVNbXCJMSVwiXSA9IFwibGlcIjtcbiAgICBUQUdfTkFNRVNbXCJMSU5LXCJdID0gXCJsaW5rXCI7XG4gICAgVEFHX05BTUVTW1wiTElTVElOR1wiXSA9IFwibGlzdGluZ1wiO1xuICAgIFRBR19OQU1FU1tcIk1BSU5cIl0gPSBcIm1haW5cIjtcbiAgICBUQUdfTkFNRVNbXCJNQUxJR05NQVJLXCJdID0gXCJtYWxpZ25tYXJrXCI7XG4gICAgVEFHX05BTUVTW1wiTUFSUVVFRVwiXSA9IFwibWFycXVlZVwiO1xuICAgIFRBR19OQU1FU1tcIk1BVEhcIl0gPSBcIm1hdGhcIjtcbiAgICBUQUdfTkFNRVNbXCJNRU5VXCJdID0gXCJtZW51XCI7XG4gICAgVEFHX05BTUVTW1wiTUVUQVwiXSA9IFwibWV0YVwiO1xuICAgIFRBR19OQU1FU1tcIk1HTFlQSFwiXSA9IFwibWdseXBoXCI7XG4gICAgVEFHX05BTUVTW1wiTUlcIl0gPSBcIm1pXCI7XG4gICAgVEFHX05BTUVTW1wiTU9cIl0gPSBcIm1vXCI7XG4gICAgVEFHX05BTUVTW1wiTU5cIl0gPSBcIm1uXCI7XG4gICAgVEFHX05BTUVTW1wiTVNcIl0gPSBcIm1zXCI7XG4gICAgVEFHX05BTUVTW1wiTVRFWFRcIl0gPSBcIm10ZXh0XCI7XG4gICAgVEFHX05BTUVTW1wiTkFWXCJdID0gXCJuYXZcIjtcbiAgICBUQUdfTkFNRVNbXCJOT0JSXCJdID0gXCJub2JyXCI7XG4gICAgVEFHX05BTUVTW1wiTk9GUkFNRVNcIl0gPSBcIm5vZnJhbWVzXCI7XG4gICAgVEFHX05BTUVTW1wiTk9FTUJFRFwiXSA9IFwibm9lbWJlZFwiO1xuICAgIFRBR19OQU1FU1tcIk5PU0NSSVBUXCJdID0gXCJub3NjcmlwdFwiO1xuICAgIFRBR19OQU1FU1tcIk9CSkVDVFwiXSA9IFwib2JqZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiT0xcIl0gPSBcIm9sXCI7XG4gICAgVEFHX05BTUVTW1wiT1BUR1JPVVBcIl0gPSBcIm9wdGdyb3VwXCI7XG4gICAgVEFHX05BTUVTW1wiT1BUSU9OXCJdID0gXCJvcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJQXCJdID0gXCJwXCI7XG4gICAgVEFHX05BTUVTW1wiUEFSQU1cIl0gPSBcInBhcmFtXCI7XG4gICAgVEFHX05BTUVTW1wiUExBSU5URVhUXCJdID0gXCJwbGFpbnRleHRcIjtcbiAgICBUQUdfTkFNRVNbXCJQUkVcIl0gPSBcInByZVwiO1xuICAgIFRBR19OQU1FU1tcIlJCXCJdID0gXCJyYlwiO1xuICAgIFRBR19OQU1FU1tcIlJQXCJdID0gXCJycFwiO1xuICAgIFRBR19OQU1FU1tcIlJUXCJdID0gXCJydFwiO1xuICAgIFRBR19OQU1FU1tcIlJUQ1wiXSA9IFwicnRjXCI7XG4gICAgVEFHX05BTUVTW1wiUlVCWVwiXSA9IFwicnVieVwiO1xuICAgIFRBR19OQU1FU1tcIlNcIl0gPSBcInNcIjtcbiAgICBUQUdfTkFNRVNbXCJTQ1JJUFRcIl0gPSBcInNjcmlwdFwiO1xuICAgIFRBR19OQU1FU1tcIlNFQ1RJT05cIl0gPSBcInNlY3Rpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJTRUxFQ1RcIl0gPSBcInNlbGVjdFwiO1xuICAgIFRBR19OQU1FU1tcIlNPVVJDRVwiXSA9IFwic291cmNlXCI7XG4gICAgVEFHX05BTUVTW1wiU01BTExcIl0gPSBcInNtYWxsXCI7XG4gICAgVEFHX05BTUVTW1wiU1BBTlwiXSA9IFwic3BhblwiO1xuICAgIFRBR19OQU1FU1tcIlNUUklLRVwiXSA9IFwic3RyaWtlXCI7XG4gICAgVEFHX05BTUVTW1wiU1RST05HXCJdID0gXCJzdHJvbmdcIjtcbiAgICBUQUdfTkFNRVNbXCJTVFlMRVwiXSA9IFwic3R5bGVcIjtcbiAgICBUQUdfTkFNRVNbXCJTVUJcIl0gPSBcInN1YlwiO1xuICAgIFRBR19OQU1FU1tcIlNVTU1BUllcIl0gPSBcInN1bW1hcnlcIjtcbiAgICBUQUdfTkFNRVNbXCJTVVBcIl0gPSBcInN1cFwiO1xuICAgIFRBR19OQU1FU1tcIlRBQkxFXCJdID0gXCJ0YWJsZVwiO1xuICAgIFRBR19OQU1FU1tcIlRCT0RZXCJdID0gXCJ0Ym9keVwiO1xuICAgIFRBR19OQU1FU1tcIlRFTVBMQVRFXCJdID0gXCJ0ZW1wbGF0ZVwiO1xuICAgIFRBR19OQU1FU1tcIlRFWFRBUkVBXCJdID0gXCJ0ZXh0YXJlYVwiO1xuICAgIFRBR19OQU1FU1tcIlRGT09UXCJdID0gXCJ0Zm9vdFwiO1xuICAgIFRBR19OQU1FU1tcIlREXCJdID0gXCJ0ZFwiO1xuICAgIFRBR19OQU1FU1tcIlRIXCJdID0gXCJ0aFwiO1xuICAgIFRBR19OQU1FU1tcIlRIRUFEXCJdID0gXCJ0aGVhZFwiO1xuICAgIFRBR19OQU1FU1tcIlRJVExFXCJdID0gXCJ0aXRsZVwiO1xuICAgIFRBR19OQU1FU1tcIlRSXCJdID0gXCJ0clwiO1xuICAgIFRBR19OQU1FU1tcIlRSQUNLXCJdID0gXCJ0cmFja1wiO1xuICAgIFRBR19OQU1FU1tcIlRUXCJdID0gXCJ0dFwiO1xuICAgIFRBR19OQU1FU1tcIlVcIl0gPSBcInVcIjtcbiAgICBUQUdfTkFNRVNbXCJVTFwiXSA9IFwidWxcIjtcbiAgICBUQUdfTkFNRVNbXCJTVkdcIl0gPSBcInN2Z1wiO1xuICAgIFRBR19OQU1FU1tcIlZBUlwiXSA9IFwidmFyXCI7XG4gICAgVEFHX05BTUVTW1wiV0JSXCJdID0gXCJ3YnJcIjtcbiAgICBUQUdfTkFNRVNbXCJYTVBcIl0gPSBcInhtcFwiO1xufSkoVEFHX05BTUVTID0gVEFHX05BTUVTIHx8IChUQUdfTkFNRVMgPSB7fSkpO1xuLyoqXG4gKiBUYWcgSURzIGFyZSBudW1lcmljIElEcyBmb3Iga25vd24gdGFnIG5hbWVzLlxuICpcbiAqIFdlIHVzZSB0YWcgSURzIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHRhZyBuYW1lIGNvbXBhcmlzb25zLlxuICovXG5leHBvcnQgdmFyIFRBR19JRDtcbihmdW5jdGlvbiAoVEFHX0lEKSB7XG4gICAgVEFHX0lEW1RBR19JRFtcIlVOS05PV05cIl0gPSAwXSA9IFwiVU5LTk9XTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBXCJdID0gMV0gPSBcIkFcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQUREUkVTU1wiXSA9IDJdID0gXCJBRERSRVNTXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFOTk9UQVRJT05fWE1MXCJdID0gM10gPSBcIkFOTk9UQVRJT05fWE1MXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFQUExFVFwiXSA9IDRdID0gXCJBUFBMRVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQVJFQVwiXSA9IDVdID0gXCJBUkVBXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFSVElDTEVcIl0gPSA2XSA9IFwiQVJUSUNMRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBU0lERVwiXSA9IDddID0gXCJBU0lERVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCXCJdID0gOF0gPSBcIkJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQkFTRVwiXSA9IDldID0gXCJCQVNFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJBU0VGT05UXCJdID0gMTBdID0gXCJCQVNFRk9OVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCR1NPVU5EXCJdID0gMTFdID0gXCJCR1NPVU5EXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJJR1wiXSA9IDEyXSA9IFwiQklHXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJMT0NLUVVPVEVcIl0gPSAxM10gPSBcIkJMT0NLUVVPVEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQk9EWVwiXSA9IDE0XSA9IFwiQk9EWVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCUlwiXSA9IDE1XSA9IFwiQlJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQlVUVE9OXCJdID0gMTZdID0gXCJCVVRUT05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQ0FQVElPTlwiXSA9IDE3XSA9IFwiQ0FQVElPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDRU5URVJcIl0gPSAxOF0gPSBcIkNFTlRFUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDT0RFXCJdID0gMTldID0gXCJDT0RFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNPTFwiXSA9IDIwXSA9IFwiQ09MXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNPTEdST1VQXCJdID0gMjFdID0gXCJDT0xHUk9VUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJERFwiXSA9IDIyXSA9IFwiRERcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiREVTQ1wiXSA9IDIzXSA9IFwiREVTQ1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJERVRBSUxTXCJdID0gMjRdID0gXCJERVRBSUxTXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRJQUxPR1wiXSA9IDI1XSA9IFwiRElBTE9HXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRJUlwiXSA9IDI2XSA9IFwiRElSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRJVlwiXSA9IDI3XSA9IFwiRElWXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRMXCJdID0gMjhdID0gXCJETFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJEVFwiXSA9IDI5XSA9IFwiRFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRU1cIl0gPSAzMF0gPSBcIkVNXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkVNQkVEXCJdID0gMzFdID0gXCJFTUJFRFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGSUVMRFNFVFwiXSA9IDMyXSA9IFwiRklFTERTRVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRklHQ0FQVElPTlwiXSA9IDMzXSA9IFwiRklHQ0FQVElPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGSUdVUkVcIl0gPSAzNF0gPSBcIkZJR1VSRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGT05UXCJdID0gMzVdID0gXCJGT05UXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZPT1RFUlwiXSA9IDM2XSA9IFwiRk9PVEVSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZPUkVJR05fT0JKRUNUXCJdID0gMzddID0gXCJGT1JFSUdOX09CSkVDVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGT1JNXCJdID0gMzhdID0gXCJGT1JNXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZSQU1FXCJdID0gMzldID0gXCJGUkFNRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGUkFNRVNFVFwiXSA9IDQwXSA9IFwiRlJBTUVTRVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDFcIl0gPSA0MV0gPSBcIkgxXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkgyXCJdID0gNDJdID0gXCJIMlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIM1wiXSA9IDQzXSA9IFwiSDNcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDRcIl0gPSA0NF0gPSBcIkg0XCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkg1XCJdID0gNDVdID0gXCJINVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJINlwiXSA9IDQ2XSA9IFwiSDZcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSEVBRFwiXSA9IDQ3XSA9IFwiSEVBRFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIRUFERVJcIl0gPSA0OF0gPSBcIkhFQURFUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIR1JPVVBcIl0gPSA0OV0gPSBcIkhHUk9VUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIUlwiXSA9IDUwXSA9IFwiSFJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSFRNTFwiXSA9IDUxXSA9IFwiSFRNTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJXCJdID0gNTJdID0gXCJJXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklNR1wiXSA9IDUzXSA9IFwiSU1HXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklNQUdFXCJdID0gNTRdID0gXCJJTUFHRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJTlBVVFwiXSA9IDU1XSA9IFwiSU5QVVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSUZSQU1FXCJdID0gNTZdID0gXCJJRlJBTUVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiS0VZR0VOXCJdID0gNTddID0gXCJLRVlHRU5cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTEFCRUxcIl0gPSA1OF0gPSBcIkxBQkVMXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkxJXCJdID0gNTldID0gXCJMSVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJMSU5LXCJdID0gNjBdID0gXCJMSU5LXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkxJU1RJTkdcIl0gPSA2MV0gPSBcIkxJU1RJTkdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUFJTlwiXSA9IDYyXSA9IFwiTUFJTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNQUxJR05NQVJLXCJdID0gNjNdID0gXCJNQUxJR05NQVJLXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1BUlFVRUVcIl0gPSA2NF0gPSBcIk1BUlFVRUVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUFUSFwiXSA9IDY1XSA9IFwiTUFUSFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNRU5VXCJdID0gNjZdID0gXCJNRU5VXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1FVEFcIl0gPSA2N10gPSBcIk1FVEFcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUdMWVBIXCJdID0gNjhdID0gXCJNR0xZUEhcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUlcIl0gPSA2OV0gPSBcIk1JXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1PXCJdID0gNzBdID0gXCJNT1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNTlwiXSA9IDcxXSA9IFwiTU5cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTVNcIl0gPSA3Ml0gPSBcIk1TXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1URVhUXCJdID0gNzNdID0gXCJNVEVYVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOQVZcIl0gPSA3NF0gPSBcIk5BVlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOT0JSXCJdID0gNzVdID0gXCJOT0JSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5PRlJBTUVTXCJdID0gNzZdID0gXCJOT0ZSQU1FU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOT0VNQkVEXCJdID0gNzddID0gXCJOT0VNQkVEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5PU0NSSVBUXCJdID0gNzhdID0gXCJOT1NDUklQVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJPQkpFQ1RcIl0gPSA3OV0gPSBcIk9CSkVDVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJPTFwiXSA9IDgwXSA9IFwiT0xcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiT1BUR1JPVVBcIl0gPSA4MV0gPSBcIk9QVEdST1VQXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk9QVElPTlwiXSA9IDgyXSA9IFwiT1BUSU9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBcIl0gPSA4M10gPSBcIlBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUEFSQU1cIl0gPSA4NF0gPSBcIlBBUkFNXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBMQUlOVEVYVFwiXSA9IDg1XSA9IFwiUExBSU5URVhUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBSRVwiXSA9IDg2XSA9IFwiUFJFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJCXCJdID0gODddID0gXCJSQlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJSUFwiXSA9IDg4XSA9IFwiUlBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUlRcIl0gPSA4OV0gPSBcIlJUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJUQ1wiXSA9IDkwXSA9IFwiUlRDXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJVQllcIl0gPSA5MV0gPSBcIlJVQllcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU1wiXSA9IDkyXSA9IFwiU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTQ1JJUFRcIl0gPSA5M10gPSBcIlNDUklQVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTRUNUSU9OXCJdID0gOTRdID0gXCJTRUNUSU9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNFTEVDVFwiXSA9IDk1XSA9IFwiU0VMRUNUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNPVVJDRVwiXSA9IDk2XSA9IFwiU09VUkNFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNNQUxMXCJdID0gOTddID0gXCJTTUFMTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTUEFOXCJdID0gOThdID0gXCJTUEFOXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNUUklLRVwiXSA9IDk5XSA9IFwiU1RSSUtFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNUUk9OR1wiXSA9IDEwMF0gPSBcIlNUUk9OR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVFlMRVwiXSA9IDEwMV0gPSBcIlNUWUxFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNVQlwiXSA9IDEwMl0gPSBcIlNVQlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVU1NQVJZXCJdID0gMTAzXSA9IFwiU1VNTUFSWVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVVBcIl0gPSAxMDRdID0gXCJTVVBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEFCTEVcIl0gPSAxMDVdID0gXCJUQUJMRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUQk9EWVwiXSA9IDEwNl0gPSBcIlRCT0RZXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRFTVBMQVRFXCJdID0gMTA3XSA9IFwiVEVNUExBVEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEVYVEFSRUFcIl0gPSAxMDhdID0gXCJURVhUQVJFQVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJURk9PVFwiXSA9IDEwOV0gPSBcIlRGT09UXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlREXCJdID0gMTEwXSA9IFwiVERcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEhcIl0gPSAxMTFdID0gXCJUSFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUSEVBRFwiXSA9IDExMl0gPSBcIlRIRUFEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRJVExFXCJdID0gMTEzXSA9IFwiVElUTEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVFJcIl0gPSAxMTRdID0gXCJUUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUUkFDS1wiXSA9IDExNV0gPSBcIlRSQUNLXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRUXCJdID0gMTE2XSA9IFwiVFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVVwiXSA9IDExN10gPSBcIlVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVUxcIl0gPSAxMThdID0gXCJVTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVkdcIl0gPSAxMTldID0gXCJTVkdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVkFSXCJdID0gMTIwXSA9IFwiVkFSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIldCUlwiXSA9IDEyMV0gPSBcIldCUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJYTVBcIl0gPSAxMjJdID0gXCJYTVBcIjtcbn0pKFRBR19JRCA9IFRBR19JRCB8fCAoVEFHX0lEID0ge30pKTtcbmNvbnN0IFRBR19OQU1FX1RPX0lEID0gbmV3IE1hcChbXG4gICAgW1RBR19OQU1FUy5BLCBUQUdfSUQuQV0sXG4gICAgW1RBR19OQU1FUy5BRERSRVNTLCBUQUdfSUQuQUREUkVTU10sXG4gICAgW1RBR19OQU1FUy5BTk5PVEFUSU9OX1hNTCwgVEFHX0lELkFOTk9UQVRJT05fWE1MXSxcbiAgICBbVEFHX05BTUVTLkFQUExFVCwgVEFHX0lELkFQUExFVF0sXG4gICAgW1RBR19OQU1FUy5BUkVBLCBUQUdfSUQuQVJFQV0sXG4gICAgW1RBR19OQU1FUy5BUlRJQ0xFLCBUQUdfSUQuQVJUSUNMRV0sXG4gICAgW1RBR19OQU1FUy5BU0lERSwgVEFHX0lELkFTSURFXSxcbiAgICBbVEFHX05BTUVTLkIsIFRBR19JRC5CXSxcbiAgICBbVEFHX05BTUVTLkJBU0UsIFRBR19JRC5CQVNFXSxcbiAgICBbVEFHX05BTUVTLkJBU0VGT05ULCBUQUdfSUQuQkFTRUZPTlRdLFxuICAgIFtUQUdfTkFNRVMuQkdTT1VORCwgVEFHX0lELkJHU09VTkRdLFxuICAgIFtUQUdfTkFNRVMuQklHLCBUQUdfSUQuQklHXSxcbiAgICBbVEFHX05BTUVTLkJMT0NLUVVPVEUsIFRBR19JRC5CTE9DS1FVT1RFXSxcbiAgICBbVEFHX05BTUVTLkJPRFksIFRBR19JRC5CT0RZXSxcbiAgICBbVEFHX05BTUVTLkJSLCBUQUdfSUQuQlJdLFxuICAgIFtUQUdfTkFNRVMuQlVUVE9OLCBUQUdfSUQuQlVUVE9OXSxcbiAgICBbVEFHX05BTUVTLkNBUFRJT04sIFRBR19JRC5DQVBUSU9OXSxcbiAgICBbVEFHX05BTUVTLkNFTlRFUiwgVEFHX0lELkNFTlRFUl0sXG4gICAgW1RBR19OQU1FUy5DT0RFLCBUQUdfSUQuQ09ERV0sXG4gICAgW1RBR19OQU1FUy5DT0wsIFRBR19JRC5DT0xdLFxuICAgIFtUQUdfTkFNRVMuQ09MR1JPVVAsIFRBR19JRC5DT0xHUk9VUF0sXG4gICAgW1RBR19OQU1FUy5ERCwgVEFHX0lELkREXSxcbiAgICBbVEFHX05BTUVTLkRFU0MsIFRBR19JRC5ERVNDXSxcbiAgICBbVEFHX05BTUVTLkRFVEFJTFMsIFRBR19JRC5ERVRBSUxTXSxcbiAgICBbVEFHX05BTUVTLkRJQUxPRywgVEFHX0lELkRJQUxPR10sXG4gICAgW1RBR19OQU1FUy5ESVIsIFRBR19JRC5ESVJdLFxuICAgIFtUQUdfTkFNRVMuRElWLCBUQUdfSUQuRElWXSxcbiAgICBbVEFHX05BTUVTLkRMLCBUQUdfSUQuRExdLFxuICAgIFtUQUdfTkFNRVMuRFQsIFRBR19JRC5EVF0sXG4gICAgW1RBR19OQU1FUy5FTSwgVEFHX0lELkVNXSxcbiAgICBbVEFHX05BTUVTLkVNQkVELCBUQUdfSUQuRU1CRURdLFxuICAgIFtUQUdfTkFNRVMuRklFTERTRVQsIFRBR19JRC5GSUVMRFNFVF0sXG4gICAgW1RBR19OQU1FUy5GSUdDQVBUSU9OLCBUQUdfSUQuRklHQ0FQVElPTl0sXG4gICAgW1RBR19OQU1FUy5GSUdVUkUsIFRBR19JRC5GSUdVUkVdLFxuICAgIFtUQUdfTkFNRVMuRk9OVCwgVEFHX0lELkZPTlRdLFxuICAgIFtUQUdfTkFNRVMuRk9PVEVSLCBUQUdfSUQuRk9PVEVSXSxcbiAgICBbVEFHX05BTUVTLkZPUkVJR05fT0JKRUNULCBUQUdfSUQuRk9SRUlHTl9PQkpFQ1RdLFxuICAgIFtUQUdfTkFNRVMuRk9STSwgVEFHX0lELkZPUk1dLFxuICAgIFtUQUdfTkFNRVMuRlJBTUUsIFRBR19JRC5GUkFNRV0sXG4gICAgW1RBR19OQU1FUy5GUkFNRVNFVCwgVEFHX0lELkZSQU1FU0VUXSxcbiAgICBbVEFHX05BTUVTLkgxLCBUQUdfSUQuSDFdLFxuICAgIFtUQUdfTkFNRVMuSDIsIFRBR19JRC5IMl0sXG4gICAgW1RBR19OQU1FUy5IMywgVEFHX0lELkgzXSxcbiAgICBbVEFHX05BTUVTLkg0LCBUQUdfSUQuSDRdLFxuICAgIFtUQUdfTkFNRVMuSDUsIFRBR19JRC5INV0sXG4gICAgW1RBR19OQU1FUy5INiwgVEFHX0lELkg2XSxcbiAgICBbVEFHX05BTUVTLkhFQUQsIFRBR19JRC5IRUFEXSxcbiAgICBbVEFHX05BTUVTLkhFQURFUiwgVEFHX0lELkhFQURFUl0sXG4gICAgW1RBR19OQU1FUy5IR1JPVVAsIFRBR19JRC5IR1JPVVBdLFxuICAgIFtUQUdfTkFNRVMuSFIsIFRBR19JRC5IUl0sXG4gICAgW1RBR19OQU1FUy5IVE1MLCBUQUdfSUQuSFRNTF0sXG4gICAgW1RBR19OQU1FUy5JLCBUQUdfSUQuSV0sXG4gICAgW1RBR19OQU1FUy5JTUcsIFRBR19JRC5JTUddLFxuICAgIFtUQUdfTkFNRVMuSU1BR0UsIFRBR19JRC5JTUFHRV0sXG4gICAgW1RBR19OQU1FUy5JTlBVVCwgVEFHX0lELklOUFVUXSxcbiAgICBbVEFHX05BTUVTLklGUkFNRSwgVEFHX0lELklGUkFNRV0sXG4gICAgW1RBR19OQU1FUy5LRVlHRU4sIFRBR19JRC5LRVlHRU5dLFxuICAgIFtUQUdfTkFNRVMuTEFCRUwsIFRBR19JRC5MQUJFTF0sXG4gICAgW1RBR19OQU1FUy5MSSwgVEFHX0lELkxJXSxcbiAgICBbVEFHX05BTUVTLkxJTkssIFRBR19JRC5MSU5LXSxcbiAgICBbVEFHX05BTUVTLkxJU1RJTkcsIFRBR19JRC5MSVNUSU5HXSxcbiAgICBbVEFHX05BTUVTLk1BSU4sIFRBR19JRC5NQUlOXSxcbiAgICBbVEFHX05BTUVTLk1BTElHTk1BUkssIFRBR19JRC5NQUxJR05NQVJLXSxcbiAgICBbVEFHX05BTUVTLk1BUlFVRUUsIFRBR19JRC5NQVJRVUVFXSxcbiAgICBbVEFHX05BTUVTLk1BVEgsIFRBR19JRC5NQVRIXSxcbiAgICBbVEFHX05BTUVTLk1FTlUsIFRBR19JRC5NRU5VXSxcbiAgICBbVEFHX05BTUVTLk1FVEEsIFRBR19JRC5NRVRBXSxcbiAgICBbVEFHX05BTUVTLk1HTFlQSCwgVEFHX0lELk1HTFlQSF0sXG4gICAgW1RBR19OQU1FUy5NSSwgVEFHX0lELk1JXSxcbiAgICBbVEFHX05BTUVTLk1PLCBUQUdfSUQuTU9dLFxuICAgIFtUQUdfTkFNRVMuTU4sIFRBR19JRC5NTl0sXG4gICAgW1RBR19OQU1FUy5NUywgVEFHX0lELk1TXSxcbiAgICBbVEFHX05BTUVTLk1URVhULCBUQUdfSUQuTVRFWFRdLFxuICAgIFtUQUdfTkFNRVMuTkFWLCBUQUdfSUQuTkFWXSxcbiAgICBbVEFHX05BTUVTLk5PQlIsIFRBR19JRC5OT0JSXSxcbiAgICBbVEFHX05BTUVTLk5PRlJBTUVTLCBUQUdfSUQuTk9GUkFNRVNdLFxuICAgIFtUQUdfTkFNRVMuTk9FTUJFRCwgVEFHX0lELk5PRU1CRURdLFxuICAgIFtUQUdfTkFNRVMuTk9TQ1JJUFQsIFRBR19JRC5OT1NDUklQVF0sXG4gICAgW1RBR19OQU1FUy5PQkpFQ1QsIFRBR19JRC5PQkpFQ1RdLFxuICAgIFtUQUdfTkFNRVMuT0wsIFRBR19JRC5PTF0sXG4gICAgW1RBR19OQU1FUy5PUFRHUk9VUCwgVEFHX0lELk9QVEdST1VQXSxcbiAgICBbVEFHX05BTUVTLk9QVElPTiwgVEFHX0lELk9QVElPTl0sXG4gICAgW1RBR19OQU1FUy5QLCBUQUdfSUQuUF0sXG4gICAgW1RBR19OQU1FUy5QQVJBTSwgVEFHX0lELlBBUkFNXSxcbiAgICBbVEFHX05BTUVTLlBMQUlOVEVYVCwgVEFHX0lELlBMQUlOVEVYVF0sXG4gICAgW1RBR19OQU1FUy5QUkUsIFRBR19JRC5QUkVdLFxuICAgIFtUQUdfTkFNRVMuUkIsIFRBR19JRC5SQl0sXG4gICAgW1RBR19OQU1FUy5SUCwgVEFHX0lELlJQXSxcbiAgICBbVEFHX05BTUVTLlJULCBUQUdfSUQuUlRdLFxuICAgIFtUQUdfTkFNRVMuUlRDLCBUQUdfSUQuUlRDXSxcbiAgICBbVEFHX05BTUVTLlJVQlksIFRBR19JRC5SVUJZXSxcbiAgICBbVEFHX05BTUVTLlMsIFRBR19JRC5TXSxcbiAgICBbVEFHX05BTUVTLlNDUklQVCwgVEFHX0lELlNDUklQVF0sXG4gICAgW1RBR19OQU1FUy5TRUNUSU9OLCBUQUdfSUQuU0VDVElPTl0sXG4gICAgW1RBR19OQU1FUy5TRUxFQ1QsIFRBR19JRC5TRUxFQ1RdLFxuICAgIFtUQUdfTkFNRVMuU09VUkNFLCBUQUdfSUQuU09VUkNFXSxcbiAgICBbVEFHX05BTUVTLlNNQUxMLCBUQUdfSUQuU01BTExdLFxuICAgIFtUQUdfTkFNRVMuU1BBTiwgVEFHX0lELlNQQU5dLFxuICAgIFtUQUdfTkFNRVMuU1RSSUtFLCBUQUdfSUQuU1RSSUtFXSxcbiAgICBbVEFHX05BTUVTLlNUUk9ORywgVEFHX0lELlNUUk9OR10sXG4gICAgW1RBR19OQU1FUy5TVFlMRSwgVEFHX0lELlNUWUxFXSxcbiAgICBbVEFHX05BTUVTLlNVQiwgVEFHX0lELlNVQl0sXG4gICAgW1RBR19OQU1FUy5TVU1NQVJZLCBUQUdfSUQuU1VNTUFSWV0sXG4gICAgW1RBR19OQU1FUy5TVVAsIFRBR19JRC5TVVBdLFxuICAgIFtUQUdfTkFNRVMuVEFCTEUsIFRBR19JRC5UQUJMRV0sXG4gICAgW1RBR19OQU1FUy5UQk9EWSwgVEFHX0lELlRCT0RZXSxcbiAgICBbVEFHX05BTUVTLlRFTVBMQVRFLCBUQUdfSUQuVEVNUExBVEVdLFxuICAgIFtUQUdfTkFNRVMuVEVYVEFSRUEsIFRBR19JRC5URVhUQVJFQV0sXG4gICAgW1RBR19OQU1FUy5URk9PVCwgVEFHX0lELlRGT09UXSxcbiAgICBbVEFHX05BTUVTLlRELCBUQUdfSUQuVERdLFxuICAgIFtUQUdfTkFNRVMuVEgsIFRBR19JRC5USF0sXG4gICAgW1RBR19OQU1FUy5USEVBRCwgVEFHX0lELlRIRUFEXSxcbiAgICBbVEFHX05BTUVTLlRJVExFLCBUQUdfSUQuVElUTEVdLFxuICAgIFtUQUdfTkFNRVMuVFIsIFRBR19JRC5UUl0sXG4gICAgW1RBR19OQU1FUy5UUkFDSywgVEFHX0lELlRSQUNLXSxcbiAgICBbVEFHX05BTUVTLlRULCBUQUdfSUQuVFRdLFxuICAgIFtUQUdfTkFNRVMuVSwgVEFHX0lELlVdLFxuICAgIFtUQUdfTkFNRVMuVUwsIFRBR19JRC5VTF0sXG4gICAgW1RBR19OQU1FUy5TVkcsIFRBR19JRC5TVkddLFxuICAgIFtUQUdfTkFNRVMuVkFSLCBUQUdfSUQuVkFSXSxcbiAgICBbVEFHX05BTUVTLldCUiwgVEFHX0lELldCUl0sXG4gICAgW1RBR19OQU1FUy5YTVAsIFRBR19JRC5YTVBdLFxuXSk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnSUQodGFnTmFtZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gVEFHX05BTUVfVE9fSUQuZ2V0KHRhZ05hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBUQUdfSUQuVU5LTk9XTjtcbn1cbmNvbnN0ICQgPSBUQUdfSUQ7XG5leHBvcnQgY29uc3QgU1BFQ0lBTF9FTEVNRU5UUyA9IHtcbiAgICBbTlMuSFRNTF06IG5ldyBTZXQoW1xuICAgICAgICAkLkFERFJFU1MsXG4gICAgICAgICQuQVBQTEVULFxuICAgICAgICAkLkFSRUEsXG4gICAgICAgICQuQVJUSUNMRSxcbiAgICAgICAgJC5BU0lERSxcbiAgICAgICAgJC5CQVNFLFxuICAgICAgICAkLkJBU0VGT05ULFxuICAgICAgICAkLkJHU09VTkQsXG4gICAgICAgICQuQkxPQ0tRVU9URSxcbiAgICAgICAgJC5CT0RZLFxuICAgICAgICAkLkJSLFxuICAgICAgICAkLkJVVFRPTixcbiAgICAgICAgJC5DQVBUSU9OLFxuICAgICAgICAkLkNFTlRFUixcbiAgICAgICAgJC5DT0wsXG4gICAgICAgICQuQ09MR1JPVVAsXG4gICAgICAgICQuREQsXG4gICAgICAgICQuREVUQUlMUyxcbiAgICAgICAgJC5ESVIsXG4gICAgICAgICQuRElWLFxuICAgICAgICAkLkRMLFxuICAgICAgICAkLkRULFxuICAgICAgICAkLkVNQkVELFxuICAgICAgICAkLkZJRUxEU0VULFxuICAgICAgICAkLkZJR0NBUFRJT04sXG4gICAgICAgICQuRklHVVJFLFxuICAgICAgICAkLkZPT1RFUixcbiAgICAgICAgJC5GT1JNLFxuICAgICAgICAkLkZSQU1FLFxuICAgICAgICAkLkZSQU1FU0VULFxuICAgICAgICAkLkgxLFxuICAgICAgICAkLkgyLFxuICAgICAgICAkLkgzLFxuICAgICAgICAkLkg0LFxuICAgICAgICAkLkg1LFxuICAgICAgICAkLkg2LFxuICAgICAgICAkLkhFQUQsXG4gICAgICAgICQuSEVBREVSLFxuICAgICAgICAkLkhHUk9VUCxcbiAgICAgICAgJC5IUixcbiAgICAgICAgJC5IVE1MLFxuICAgICAgICAkLklGUkFNRSxcbiAgICAgICAgJC5JTUcsXG4gICAgICAgICQuSU5QVVQsXG4gICAgICAgICQuTEksXG4gICAgICAgICQuTElOSyxcbiAgICAgICAgJC5MSVNUSU5HLFxuICAgICAgICAkLk1BSU4sXG4gICAgICAgICQuTUFSUVVFRSxcbiAgICAgICAgJC5NRU5VLFxuICAgICAgICAkLk1FVEEsXG4gICAgICAgICQuTkFWLFxuICAgICAgICAkLk5PRU1CRUQsXG4gICAgICAgICQuTk9GUkFNRVMsXG4gICAgICAgICQuTk9TQ1JJUFQsXG4gICAgICAgICQuT0JKRUNULFxuICAgICAgICAkLk9MLFxuICAgICAgICAkLlAsXG4gICAgICAgICQuUEFSQU0sXG4gICAgICAgICQuUExBSU5URVhULFxuICAgICAgICAkLlBSRSxcbiAgICAgICAgJC5TQ1JJUFQsXG4gICAgICAgICQuU0VDVElPTixcbiAgICAgICAgJC5TRUxFQ1QsXG4gICAgICAgICQuU09VUkNFLFxuICAgICAgICAkLlNUWUxFLFxuICAgICAgICAkLlNVTU1BUlksXG4gICAgICAgICQuVEFCTEUsXG4gICAgICAgICQuVEJPRFksXG4gICAgICAgICQuVEQsXG4gICAgICAgICQuVEVNUExBVEUsXG4gICAgICAgICQuVEVYVEFSRUEsXG4gICAgICAgICQuVEZPT1QsXG4gICAgICAgICQuVEgsXG4gICAgICAgICQuVEhFQUQsXG4gICAgICAgICQuVElUTEUsXG4gICAgICAgICQuVFIsXG4gICAgICAgICQuVFJBQ0ssXG4gICAgICAgICQuVUwsXG4gICAgICAgICQuV0JSLFxuICAgICAgICAkLlhNUCxcbiAgICBdKSxcbiAgICBbTlMuTUFUSE1MXTogbmV3IFNldChbJC5NSSwgJC5NTywgJC5NTiwgJC5NUywgJC5NVEVYVCwgJC5BTk5PVEFUSU9OX1hNTF0pLFxuICAgIFtOUy5TVkddOiBuZXcgU2V0KFskLlRJVExFLCAkLkZPUkVJR05fT0JKRUNULCAkLkRFU0NdKSxcbiAgICBbTlMuWExJTktdOiBuZXcgU2V0KCksXG4gICAgW05TLlhNTF06IG5ldyBTZXQoKSxcbiAgICBbTlMuWE1MTlNdOiBuZXcgU2V0KCksXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyZWRIZWFkZXIodG4pIHtcbiAgICByZXR1cm4gdG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDY7XG59XG5jb25zdCBVTkVTQ0FQRURfVEVYVCA9IG5ldyBTZXQoW1xuICAgIFRBR19OQU1FUy5TVFlMRSxcbiAgICBUQUdfTkFNRVMuU0NSSVBULFxuICAgIFRBR19OQU1FUy5YTVAsXG4gICAgVEFHX05BTUVTLklGUkFNRSxcbiAgICBUQUdfTkFNRVMuTk9FTUJFRCxcbiAgICBUQUdfTkFNRVMuTk9GUkFNRVMsXG4gICAgVEFHX05BTUVTLlBMQUlOVEVYVCxcbl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1VuZXNjYXBlZFRleHQodG4sIHNjcmlwdGluZ0VuYWJsZWQpIHtcbiAgICByZXR1cm4gVU5FU0NBUEVEX1RFWFQuaGFzKHRuKSB8fCAoc2NyaXB0aW5nRW5hYmxlZCAmJiB0biA9PT0gVEFHX05BTUVTLk5PU0NSSVBUKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWh0bWwuanMubWFwIl0sIm5hbWVzIjpbIk5TIiwiQVRUUlMiLCJET0NVTUVOVF9NT0RFIiwiVEFHX05BTUVTIiwiVEFHX0lEIiwiVEFHX05BTUVfVE9fSUQiLCJNYXAiLCJBIiwiQUREUkVTUyIsIkFOTk9UQVRJT05fWE1MIiwiQVBQTEVUIiwiQVJFQSIsIkFSVElDTEUiLCJBU0lERSIsIkIiLCJCQVNFIiwiQkFTRUZPTlQiLCJCR1NPVU5EIiwiQklHIiwiQkxPQ0tRVU9URSIsIkJPRFkiLCJCUiIsIkJVVFRPTiIsIkNBUFRJT04iLCJDRU5URVIiLCJDT0RFIiwiQ09MIiwiQ09MR1JPVVAiLCJERCIsIkRFU0MiLCJERVRBSUxTIiwiRElBTE9HIiwiRElSIiwiRElWIiwiREwiLCJEVCIsIkVNIiwiRU1CRUQiLCJGSUVMRFNFVCIsIkZJR0NBUFRJT04iLCJGSUdVUkUiLCJGT05UIiwiRk9PVEVSIiwiRk9SRUlHTl9PQkpFQ1QiLCJGT1JNIiwiRlJBTUUiLCJGUkFNRVNFVCIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkhFQUQiLCJIRUFERVIiLCJIR1JPVVAiLCJIUiIsIkhUTUwiLCJJIiwiSU1HIiwiSU1BR0UiLCJJTlBVVCIsIklGUkFNRSIsIktFWUdFTiIsIkxBQkVMIiwiTEkiLCJMSU5LIiwiTElTVElORyIsIk1BSU4iLCJNQUxJR05NQVJLIiwiTUFSUVVFRSIsIk1BVEgiLCJNRU5VIiwiTUVUQSIsIk1HTFlQSCIsIk1JIiwiTU8iLCJNTiIsIk1TIiwiTVRFWFQiLCJOQVYiLCJOT0JSIiwiTk9GUkFNRVMiLCJOT0VNQkVEIiwiTk9TQ1JJUFQiLCJPQkpFQ1QiLCJPTCIsIk9QVEdST1VQIiwiT1BUSU9OIiwiUCIsIlBBUkFNIiwiUExBSU5URVhUIiwiUFJFIiwiUkIiLCJSUCIsIlJUIiwiUlRDIiwiUlVCWSIsIlMiLCJTQ1JJUFQiLCJTRUNUSU9OIiwiU0VMRUNUIiwiU09VUkNFIiwiU01BTEwiLCJTUEFOIiwiU1RSSUtFIiwiU1RST05HIiwiU1RZTEUiLCJTVUIiLCJTVU1NQVJZIiwiU1VQIiwiVEFCTEUiLCJUQk9EWSIsIlRFTVBMQVRFIiwiVEVYVEFSRUEiLCJURk9PVCIsIlREIiwiVEgiLCJUSEVBRCIsIlRJVExFIiwiVFIiLCJUUkFDSyIsIlRUIiwiVSIsIlVMIiwiU1ZHIiwiVkFSIiwiV0JSIiwiWE1QIiwiZ2V0VGFnSUQiLCJ0YWdOYW1lIiwiX2EiLCJnZXQiLCJVTktOT1dOIiwiJCIsIlNQRUNJQUxfRUxFTUVOVFMiLCJTZXQiLCJNQVRITUwiLCJYTElOSyIsIlhNTCIsIlhNTE5TIiwiaXNOdW1iZXJlZEhlYWRlciIsInRuIiwiVU5FU0NBUEVEX1RFWFQiLCJoYXNVbmVzY2FwZWRUZXh0Iiwic2NyaXB0aW5nRW5hYmxlZCIsImhhcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/common/html.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/common/token.js":
/*!**************************************************!*\
!*** ./node_modules/parse5/dist/common/token.js ***!
\**************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TokenType: () => (/* binding */ TokenType),\n/* harmony export */ getTokenAttr: () => (/* binding */ getTokenAttr)\n/* harmony export */ });\nvar TokenType;\n(function(TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nfunction getTokenAttr(token, attrName) {\n for(let i = token.attrs.length - 1; i >= 0; i--){\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n} //# sourceMappingURL=token.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL3Rva2VuLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBSUEsVUFBVTtBQUNwQixVQUFVQSxTQUFTO0lBQ2hCQSxTQUFTLENBQUNBLFNBQVMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHO0lBQ3hDQSxTQUFTLENBQUNBLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLEdBQUc7SUFDN0NBLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDLHVCQUF1QixHQUFHLEVBQUUsR0FBRztJQUNuREEsU0FBUyxDQUFDQSxTQUFTLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRztJQUN4Q0EsU0FBUyxDQUFDQSxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUN0Q0EsU0FBUyxDQUFDQSxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUN0Q0EsU0FBUyxDQUFDQSxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUN0Q0EsU0FBUyxDQUFDQSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRztJQUNsQ0EsU0FBUyxDQUFDQSxTQUFTLENBQUMsY0FBYyxHQUFHLEVBQUUsR0FBRztBQUM5QyxHQUFHQSxZQUFZQSxhQUFjQSxDQUFBQSxZQUFZLENBQUM7QUFDbkMsU0FBU0MsYUFBYUMsS0FBSyxFQUFFQyxRQUFRO0lBQ3hDLElBQUssSUFBSUMsSUFBSUYsTUFBTUcsS0FBSyxDQUFDQyxNQUFNLEdBQUcsR0FBR0YsS0FBSyxHQUFHQSxJQUFLO1FBQzlDLElBQUlGLE1BQU1HLEtBQUssQ0FBQ0QsRUFBRSxDQUFDRyxJQUFJLEtBQUtKLFVBQVU7WUFDbEMsT0FBT0QsTUFBTUcsS0FBSyxDQUFDRCxFQUFFLENBQUNJLEtBQUs7UUFDL0I7SUFDSjtJQUNBLE9BQU87QUFDWCxFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2NvbW1vbi90b2tlbi5qcz82M2U3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgVG9rZW5UeXBlO1xuKGZ1bmN0aW9uIChUb2tlblR5cGUpIHtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiQ0hBUkFDVEVSXCJdID0gMF0gPSBcIkNIQVJBQ1RFUlwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJOVUxMX0NIQVJBQ1RFUlwiXSA9IDFdID0gXCJOVUxMX0NIQVJBQ1RFUlwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJXSElURVNQQUNFX0NIQVJBQ1RFUlwiXSA9IDJdID0gXCJXSElURVNQQUNFX0NIQVJBQ1RFUlwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJTVEFSVF9UQUdcIl0gPSAzXSA9IFwiU1RBUlRfVEFHXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkVORF9UQUdcIl0gPSA0XSA9IFwiRU5EX1RBR1wiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJDT01NRU5UXCJdID0gNV0gPSBcIkNPTU1FTlRcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiRE9DVFlQRVwiXSA9IDZdID0gXCJET0NUWVBFXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkVPRlwiXSA9IDddID0gXCJFT0ZcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiSElCRVJOQVRJT05cIl0gPSA4XSA9IFwiSElCRVJOQVRJT05cIjtcbn0pKFRva2VuVHlwZSA9IFRva2VuVHlwZSB8fCAoVG9rZW5UeXBlID0ge30pKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb2tlbkF0dHIodG9rZW4sIGF0dHJOYW1lKSB7XG4gICAgZm9yIChsZXQgaSA9IHRva2VuLmF0dHJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmICh0b2tlbi5hdHRyc1tpXS5uYW1lID09PSBhdHRyTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuLmF0dHJzW2ldLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9rZW4uanMubWFwIl0sIm5hbWVzIjpbIlRva2VuVHlwZSIsImdldFRva2VuQXR0ciIsInRva2VuIiwiYXR0ck5hbWUiLCJpIiwiYXR0cnMiLCJsZW5ndGgiLCJuYW1lIiwidmFsdWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/common/token.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/common/unicode.js":
/*!****************************************************!*\
!*** ./node_modules/parse5/dist/common/unicode.js ***!
\****************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CODE_POINTS: () => (/* binding */ CODE_POINTS),\n/* harmony export */ REPLACEMENT_CHARACTER: () => (/* binding */ REPLACEMENT_CHARACTER),\n/* harmony export */ SEQUENCES: () => (/* binding */ SEQUENCES),\n/* harmony export */ getSurrogatePairCodePoint: () => (/* binding */ getSurrogatePairCodePoint),\n/* harmony export */ isControlCodePoint: () => (/* binding */ isControlCodePoint),\n/* harmony export */ isSurrogate: () => (/* binding */ isSurrogate),\n/* harmony export */ isSurrogatePair: () => (/* binding */ isSurrogatePair),\n/* harmony export */ isUndefinedCodePoint: () => (/* binding */ isUndefinedCodePoint)\n/* harmony export */ });\nconst UNDEFINED_CODE_POINTS = new Set([\n 65534,\n 65535,\n 131070,\n 131071,\n 196606,\n 196607,\n 262142,\n 262143,\n 327678,\n 327679,\n 393214,\n 393215,\n 458750,\n 458751,\n 524286,\n 524287,\n 589822,\n 589823,\n 655358,\n 655359,\n 720894,\n 720895,\n 786430,\n 786431,\n 851966,\n 851967,\n 917502,\n 917503,\n 983038,\n 983039,\n 1048574,\n 1048575,\n 1114110,\n 1114111\n]);\nconst REPLACEMENT_CHARACTER = \"<22>\";\nvar CODE_POINTS;\n(function(CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nconst SEQUENCES = {\n DASH_DASH: \"--\",\n CDATA_START: \"[CDATA[\",\n DOCTYPE: \"doctype\",\n SCRIPT: \"script\",\n PUBLIC: \"public\",\n SYSTEM: \"system\"\n};\n//Surrogates\nfunction isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nfunction isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nfunction getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nfunction isControlCodePoint(cp) {\n return cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f || cp >= 0x7f && cp <= 0x9f;\n}\nfunction isUndefinedCodePoint(cp) {\n return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp);\n} //# sourceMappingURL=unicode.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL3VuaWNvZGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxNQUFNQSx3QkFBd0IsSUFBSUMsSUFBSTtJQUNsQztJQUFPO0lBQU87SUFBUTtJQUFRO0lBQVE7SUFBUTtJQUFRO0lBQVE7SUFBUTtJQUFRO0lBQzlFO0lBQVE7SUFBUTtJQUFRO0lBQVE7SUFBUTtJQUFRO0lBQVE7SUFBUTtJQUFRO0lBQ3hFO0lBQVE7SUFBUTtJQUFRO0lBQVE7SUFBUTtJQUFRO0lBQVE7SUFBUTtJQUFRO0lBQ3hFO0lBQVM7SUFBUztDQUNyQjtBQUNNLE1BQU1DLHdCQUF3QixJQUFTO0FBQ3ZDLElBQUlDLFlBQVk7QUFDdEIsVUFBVUEsV0FBVztJQUNsQkEsV0FBVyxDQUFDQSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxHQUFHO0lBQ3ZDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHO0lBQ3ZDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHO0lBQzdDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEdBQUc7SUFDbkRBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUc7SUFDN0NBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUc7SUFDN0NBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUc7SUFDekNBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLG1CQUFtQixHQUFHLEdBQUcsR0FBRztJQUNwREEsV0FBVyxDQUFDQSxXQUFXLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxHQUFHO0lBQ2xEQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHO0lBQy9DQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHO0lBQzdDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHO0lBQzlDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHO0lBQ2hEQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHO0lBQzNDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHO0lBQzNDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHO0lBQzNDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHO0lBQzdDQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEdBQUc7SUFDbERBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUc7SUFDL0NBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLG9CQUFvQixHQUFHLEdBQUcsR0FBRztJQUNyREEsV0FBVyxDQUFDQSxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxHQUFHO0lBQ2pEQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEdBQUc7SUFDbkRBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLGtCQUFrQixHQUFHLEdBQUcsR0FBRztJQUNuREEsV0FBVyxDQUFDQSxXQUFXLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHO0lBQ25EQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEdBQUc7SUFDbkRBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLHVCQUF1QixHQUFHLEdBQUcsR0FBRztJQUN4REEsV0FBVyxDQUFDQSxXQUFXLENBQUMsZUFBZSxHQUFHLEdBQUcsR0FBRztJQUNoREEsV0FBVyxDQUFDQSxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxHQUFHO0lBQ2pEQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUc7SUFDbERBLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRztJQUNsREEsV0FBVyxDQUFDQSxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHO0lBQ2xEQSxXQUFXLENBQUNBLFdBQVcsQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLEdBQUc7QUFDaEUsR0FBR0EsY0FBY0EsZUFBZ0JBLENBQUFBLGNBQWMsQ0FBQztBQUN6QyxNQUFNQyxZQUFZO0lBQ3JCQyxXQUFXO0lBQ1hDLGFBQWE7SUFDYkMsU0FBUztJQUNUQyxRQUFRO0lBQ1JDLFFBQVE7SUFDUkMsUUFBUTtBQUNaLEVBQUU7QUFDRixZQUFZO0FBQ0wsU0FBU0MsWUFBWUMsRUFBRTtJQUMxQixPQUFPQSxNQUFNLFNBQVNBLE1BQU07QUFDaEM7QUFDTyxTQUFTQyxnQkFBZ0JELEVBQUU7SUFDOUIsT0FBT0EsTUFBTSxTQUFTQSxNQUFNO0FBQ2hDO0FBQ08sU0FBU0UsMEJBQTBCQyxHQUFHLEVBQUVDLEdBQUc7SUFDOUMsT0FBTyxDQUFDRCxNQUFNLEtBQUksSUFBSyxPQUFPLE9BQU9DO0FBQ3pDO0FBQ0EsMkNBQTJDO0FBQ3BDLFNBQVNDLG1CQUFtQkwsRUFBRTtJQUNqQyxPQUFRLE9BQVEsUUFBUUEsT0FBTyxRQUFRQSxPQUFPLFFBQVFBLE9BQU8sUUFBUUEsT0FBTyxRQUFRQSxNQUFNLFFBQVFBLE1BQU0sUUFDbkdBLE1BQU0sUUFBUUEsTUFBTTtBQUM3QjtBQUNPLFNBQVNNLHFCQUFxQk4sRUFBRTtJQUNuQyxPQUFPLE1BQU8sU0FBU0EsTUFBTSxTQUFVWixzQkFBc0JtQixHQUFHLENBQUNQO0FBQ3JFLEVBQ0EsbUNBQW1DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL3VuaWNvZGUuanM/NWQ4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBVTkRFRklORURfQ09ERV9QT0lOVFMgPSBuZXcgU2V0KFtcbiAgICA2NTUzNCwgNjU1MzUsIDEzMTA3MCwgMTMxMDcxLCAxOTY2MDYsIDE5NjYwNywgMjYyMTQyLCAyNjIxNDMsIDMyNzY3OCwgMzI3Njc5LCAzOTMyMTQsXG4gICAgMzkzMjE1LCA0NTg3NTAsIDQ1ODc1MSwgNTI0Mjg2LCA1MjQyODcsIDU4OTgyMiwgNTg5ODIzLCA2NTUzNTgsIDY1NTM1OSwgNzIwODk0LFxuICAgIDcyMDg5NSwgNzg2NDMwLCA3ODY0MzEsIDg1MTk2NiwgODUxOTY3LCA5MTc1MDIsIDkxNzUwMywgOTgzMDM4LCA5ODMwMzksIDEwNDg1NzQsXG4gICAgMTA0ODU3NSwgMTExNDExMCwgMTExNDExMSxcbl0pO1xuZXhwb3J0IGNvbnN0IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA9ICdcXHVGRkZEJztcbmV4cG9ydCB2YXIgQ09ERV9QT0lOVFM7XG4oZnVuY3Rpb24gKENPREVfUE9JTlRTKSB7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJFT0ZcIl0gPSAtMV0gPSBcIkVPRlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTlVMTFwiXSA9IDBdID0gXCJOVUxMXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJUQUJVTEFUSU9OXCJdID0gOV0gPSBcIlRBQlVMQVRJT05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkNBUlJJQUdFX1JFVFVSTlwiXSA9IDEzXSA9IFwiQ0FSUklBR0VfUkVUVVJOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMSU5FX0ZFRURcIl0gPSAxMF0gPSBcIkxJTkVfRkVFRFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRk9STV9GRUVEXCJdID0gMTJdID0gXCJGT1JNX0ZFRURcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlNQQUNFXCJdID0gMzJdID0gXCJTUEFDRVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRVhDTEFNQVRJT05fTUFSS1wiXSA9IDMzXSA9IFwiRVhDTEFNQVRJT05fTUFSS1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiUVVPVEFUSU9OX01BUktcIl0gPSAzNF0gPSBcIlFVT1RBVElPTl9NQVJLXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJOVU1CRVJfU0lHTlwiXSA9IDM1XSA9IFwiTlVNQkVSX1NJR05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkFNUEVSU0FORFwiXSA9IDM4XSA9IFwiQU1QRVJTQU5EXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJBUE9TVFJPUEhFXCJdID0gMzldID0gXCJBUE9TVFJPUEhFXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJIWVBIRU5fTUlOVVNcIl0gPSA0NV0gPSBcIkhZUEhFTl9NSU5VU1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiU09MSURVU1wiXSA9IDQ3XSA9IFwiU09MSURVU1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRElHSVRfMFwiXSA9IDQ4XSA9IFwiRElHSVRfMFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRElHSVRfOVwiXSA9IDU3XSA9IFwiRElHSVRfOVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiU0VNSUNPTE9OXCJdID0gNTldID0gXCJTRU1JQ09MT05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxFU1NfVEhBTl9TSUdOXCJdID0gNjBdID0gXCJMRVNTX1RIQU5fU0lHTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRVFVQUxTX1NJR05cIl0gPSA2MV0gPSBcIkVRVUFMU19TSUdOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJHUkVBVEVSX1RIQU5fU0lHTlwiXSA9IDYyXSA9IFwiR1JFQVRFUl9USEFOX1NJR05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlFVRVNUSU9OX01BUktcIl0gPSA2M10gPSBcIlFVRVNUSU9OX01BUktcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX0NBUElUQUxfQVwiXSA9IDY1XSA9IFwiTEFUSU5fQ0FQSVRBTF9BXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9DQVBJVEFMX0ZcIl0gPSA3MF0gPSBcIkxBVElOX0NBUElUQUxfRlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fQ0FQSVRBTF9YXCJdID0gODhdID0gXCJMQVRJTl9DQVBJVEFMX1hcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX0NBUElUQUxfWlwiXSA9IDkwXSA9IFwiTEFUSU5fQ0FQSVRBTF9aXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJSSUdIVF9TUVVBUkVfQlJBQ0tFVFwiXSA9IDkzXSA9IFwiUklHSFRfU1FVQVJFX0JSQUNLRVRcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkdSQVZFX0FDQ0VOVFwiXSA9IDk2XSA9IFwiR1JBVkVfQUNDRU5UXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9TTUFMTF9BXCJdID0gOTddID0gXCJMQVRJTl9TTUFMTF9BXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9TTUFMTF9GXCJdID0gMTAyXSA9IFwiTEFUSU5fU01BTExfRlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fU01BTExfWFwiXSA9IDEyMF0gPSBcIkxBVElOX1NNQUxMX1hcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX1NNQUxMX1pcIl0gPSAxMjJdID0gXCJMQVRJTl9TTUFMTF9aXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJSRVBMQUNFTUVOVF9DSEFSQUNURVJcIl0gPSA2NTUzM10gPSBcIlJFUExBQ0VNRU5UX0NIQVJBQ1RFUlwiO1xufSkoQ09ERV9QT0lOVFMgPSBDT0RFX1BPSU5UUyB8fCAoQ09ERV9QT0lOVFMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFNFUVVFTkNFUyA9IHtcbiAgICBEQVNIX0RBU0g6ICctLScsXG4gICAgQ0RBVEFfU1RBUlQ6ICdbQ0RBVEFbJyxcbiAgICBET0NUWVBFOiAnZG9jdHlwZScsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBQVUJMSUM6ICdwdWJsaWMnLFxuICAgIFNZU1RFTTogJ3N5c3RlbScsXG59O1xuLy9TdXJyb2dhdGVzXG5leHBvcnQgZnVuY3Rpb24gaXNTdXJyb2dhdGUoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gNTUyOTYgJiYgY3AgPD0gNTczNDM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDU2MzIwICYmIGNwIDw9IDU3MzQzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQoY3AxLCBjcDIpIHtcbiAgICByZXR1cm4gKGNwMSAtIDU1Mjk2KSAqIDEwMjQgKyA5MjE2ICsgY3AyO1xufVxuLy9OT1RFOiBleGNsdWRpbmcgTlVMTCBhbmQgQVNDSUkgd2hpdGVzcGFjZVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbENvZGVQb2ludChjcCkge1xuICAgIHJldHVybiAoKGNwICE9PSAweDIwICYmIGNwICE9PSAweDBhICYmIGNwICE9PSAweDBkICYmIGNwICE9PSAweDA5ICYmIGNwICE9PSAweDBjICYmIGNwID49IDB4MDEgJiYgY3AgPD0gMHgxZikgfHxcbiAgICAgICAgKGNwID49IDB4N2YgJiYgY3AgPD0gMHg5ZikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuIChjcCA+PSA2NDk3NiAmJiBjcCA8PSA2NTAwNykgfHwgVU5ERUZJTkVEX0NPREVfUE9JTlRTLmhhcyhjcCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmljb2RlLmpzLm1hcCJdLCJuYW1lcyI6WyJVTkRFRklORURfQ09ERV9QT0lOVFMiLCJTZXQiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJDT0RFX1BPSU5UUyIsIlNFUVVFTkNFUyIsIkRBU0hfREFTSCIsIkNEQVRBX1NUQVJUIiwiRE9DVFlQRSIsIlNDUklQVCIsIlBVQkxJQyIsIlNZU1RFTSIsImlzU3Vycm9nYXRlIiwiY3AiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50IiwiY3AxIiwiY3AyIiwiaXNDb250cm9sQ29kZVBvaW50IiwiaXNVbmRlZmluZWRDb2RlUG9pbnQiLCJoYXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/common/unicode.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/index.js":
/*!*******************************************!*\
!*** ./node_modules/parse5/dist/index.js ***!
\*******************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ErrorCodes: () => (/* reexport safe */ _common_error_codes_js__WEBPACK_IMPORTED_MODULE_3__.ERR),\n/* harmony export */ Parser: () => (/* reexport safe */ _parser_index_js__WEBPACK_IMPORTED_MODULE_0__.Parser),\n/* harmony export */ Token: () => (/* reexport module object */ _common_token_js__WEBPACK_IMPORTED_MODULE_6__),\n/* harmony export */ Tokenizer: () => (/* reexport safe */ _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_7__.Tokenizer),\n/* harmony export */ TokenizerMode: () => (/* reexport safe */ _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_7__.TokenizerMode),\n/* harmony export */ defaultTreeAdapter: () => (/* reexport safe */ _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_1__.defaultTreeAdapter),\n/* harmony export */ foreignContent: () => (/* reexport module object */ _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_4__),\n/* harmony export */ html: () => (/* reexport module object */ _common_html_js__WEBPACK_IMPORTED_MODULE_5__),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseFragment: () => (/* binding */ parseFragment),\n/* harmony export */ serialize: () => (/* reexport safe */ _serializer_index_js__WEBPACK_IMPORTED_MODULE_2__.serialize),\n/* harmony export */ serializeOuter: () => (/* reexport safe */ _serializer_index_js__WEBPACK_IMPORTED_MODULE_2__.serializeOuter)\n/* harmony export */ });\n/* harmony import */ var _parser_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parser/index.js */ \"(ssr)/./node_modules/parse5/dist/parser/index.js\");\n/* harmony import */ var _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree-adapters/default.js */ \"(ssr)/./node_modules/parse5/dist/tree-adapters/default.js\");\n/* harmony import */ var _serializer_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serializer/index.js */ \"(ssr)/./node_modules/parse5/dist/serializer/index.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common/error-codes.js */ \"(ssr)/./node_modules/parse5/dist/common/error-codes.js\");\n/* harmony import */ var _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common/foreign-content.js */ \"(ssr)/./node_modules/parse5/dist/common/foreign-content.js\");\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./common/html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n/* harmony import */ var _common_token_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common/token.js */ \"(ssr)/./node_modules/parse5/dist/common/token.js\");\n/* harmony import */ var _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tokenizer/index.js */ \"(ssr)/./node_modules/parse5/dist/tokenizer/index.js\");\n\n\n\n\n\n/** @internal */ \n/** @internal */ \n/** @internal */ \n/** @internal */ \n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */ function parse(html, options) {\n return _parser_index_js__WEBPACK_IMPORTED_MODULE_0__.Parser.parse(html, options);\n}\nfunction parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === \"string\") {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = _parser_index_js__WEBPACK_IMPORTED_MODULE_0__.Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMkM7QUFDcUI7QUFDSjtBQUNNO0FBQ047QUFDNUQsY0FBYyxHQUNnRDtBQUM5RCxjQUFjLEdBQzJCO0FBQ3pDLGNBQWMsR0FDNkI7QUFDM0MsY0FBYyxHQUNrRDtBQUNoRSxhQUFhO0FBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDTSxTQUFTVyxNQUFNSixJQUFJLEVBQUVLLE9BQU87SUFDL0IsT0FBT1osb0RBQU1BLENBQUNXLEtBQUssQ0FBQ0osTUFBTUs7QUFDOUI7QUFDTyxTQUFTQyxjQUFjQyxlQUFlLEVBQUVQLElBQUksRUFBRUssT0FBTztJQUN4RCxJQUFJLE9BQU9FLG9CQUFvQixVQUFVO1FBQ3JDRixVQUFVTDtRQUNWQSxPQUFPTztRQUNQQSxrQkFBa0I7SUFDdEI7SUFDQSxNQUFNQyxTQUFTZixvREFBTUEsQ0FBQ2dCLGlCQUFpQixDQUFDRixpQkFBaUJGO0lBQ3pERyxPQUFPRSxTQUFTLENBQUNDLEtBQUssQ0FBQ1gsTUFBTTtJQUM3QixPQUFPUSxPQUFPSSxXQUFXO0FBQzdCLEVBQ0EsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvaW5kZXguanM/ZTFhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZXIgfSBmcm9tICcuL3BhcnNlci9pbmRleC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0VHJlZUFkYXB0ZXIgfSBmcm9tICcuL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyc7XG5leHBvcnQgeyAvKiogQGludGVybmFsICovIFBhcnNlciB9IGZyb20gJy4vcGFyc2VyL2luZGV4LmpzJztcbmV4cG9ydCB7IHNlcmlhbGl6ZSwgc2VyaWFsaXplT3V0ZXIgfSBmcm9tICcuL3NlcmlhbGl6ZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRVJSIGFzIEVycm9yQ29kZXMgfSBmcm9tICcuL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyc7XG4vKiogQGludGVybmFsICovXG5leHBvcnQgKiBhcyBmb3JlaWduQ29udGVudCBmcm9tICcuL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMnO1xuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0ICogYXMgaHRtbCBmcm9tICcuL2NvbW1vbi9odG1sLmpzJztcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCAqIGFzIFRva2VuIGZyb20gJy4vY29tbW9uL3Rva2VuLmpzJztcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCB7IFRva2VuaXplciwgVG9rZW5pemVyTW9kZSB9IGZyb20gJy4vdG9rZW5pemVyL2luZGV4LmpzJztcbi8vIFNob3J0aGFuZHNcbi8qKlxuICogUGFyc2VzIGFuIEhUTUwgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBodG1sIElucHV0IEhUTUwgc3RyaW5nLlxuICogQHBhcmFtIG9wdGlvbnMgUGFyc2luZyBvcHRpb25zLlxuICogQHJldHVybnMgRG9jdW1lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwYXJzZTUgPSByZXF1aXJlKCdwYXJzZTUnKTtcbiAqXG4gKiBjb25zdCBkb2N1bWVudCA9IHBhcnNlNS5wYXJzZSgnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PkhpIHRoZXJlITwvYm9keT48L2h0bWw+Jyk7XG4gKlxuICogY29uc29sZS5sb2coZG9jdW1lbnQuY2hpbGROb2Rlc1sxXS50YWdOYW1lKTsgLy8+ICdodG1sJ1xuICpgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGh0bWwsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUGFyc2VyLnBhcnNlKGh0bWwsIG9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJhZ21lbnQoZnJhZ21lbnRDb250ZXh0LCBodG1sLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBmcmFnbWVudENvbnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9wdGlvbnMgPSBodG1sO1xuICAgICAgICBodG1sID0gZnJhZ21lbnRDb250ZXh0O1xuICAgICAgICBmcmFnbWVudENvbnRleHQgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZXIgPSBQYXJzZXIuZ2V0RnJhZ21lbnRQYXJzZXIoZnJhZ21lbnRDb250ZXh0LCBvcHRpb25zKTtcbiAgICBwYXJzZXIudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgIHJldHVybiBwYXJzZXIuZ2V0RnJhZ21lbnQoKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJQYXJzZXIiLCJkZWZhdWx0VHJlZUFkYXB0ZXIiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVPdXRlciIsIkVSUiIsIkVycm9yQ29kZXMiLCJmb3JlaWduQ29udGVudCIsImh0bWwiLCJUb2tlbiIsIlRva2VuaXplciIsIlRva2VuaXplck1vZGUiLCJwYXJzZSIsIm9wdGlvbnMiLCJwYXJzZUZyYWdtZW50IiwiZnJhZ21lbnRDb250ZXh0IiwicGFyc2VyIiwiZ2V0RnJhZ21lbnRQYXJzZXIiLCJ0b2tlbml6ZXIiLCJ3cml0ZSIsImdldEZyYWdtZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/parser/formatting-element-list.js":
/*!********************************************************************!*\
!*** ./node_modules/parse5/dist/parser/formatting-element-list.js ***!
\********************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EntryType: () => (/* binding */ EntryType),\n/* harmony export */ FormattingElementList: () => (/* binding */ FormattingElementList)\n/* harmony export */ });\n//Const\nconst NOAH_ARK_CAPACITY = 3;\nvar EntryType;\n(function(EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = {\n type: EntryType.Marker\n};\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter){\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for(let i = 0; i < this.entries.length; i++){\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName && this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({\n idx: i,\n attrs: elementAttrs\n });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY) return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY) return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr)=>[\n neAttr.name,\n neAttr.value\n ]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for(let i = 0; i < candidates.length; i++){\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr)=>neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */ clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n } else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry)=>entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry)=>entry.type === EntryType.Element && entry.element === element);\n }\n} //# sourceMappingURL=formatting-element-list.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTztBQUNQLE1BQU1BLG9CQUFvQjtBQUNuQixJQUFJQyxVQUFVO0FBQ3BCLFVBQVVBLFNBQVM7SUFDaEJBLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUc7SUFDckNBLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUc7QUFDMUMsR0FBR0EsWUFBWUEsYUFBY0EsQ0FBQUEsWUFBWSxDQUFDO0FBQzFDLE1BQU1DLFNBQVM7SUFBRUMsTUFBTUYsVUFBVUcsTUFBTTtBQUFDO0FBQ3hDLDZCQUE2QjtBQUN0QixNQUFNQztJQUNUQyxZQUFZQyxXQUFXLENBQUU7UUFDckIsSUFBSSxDQUFDQSxXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsT0FBTyxHQUFHLEVBQUU7UUFDakIsSUFBSSxDQUFDQyxRQUFRLEdBQUc7SUFDcEI7SUFDQSxzQkFBc0I7SUFDdEIsK0VBQStFO0lBQy9FLDJEQUEyRDtJQUMzREMsK0JBQStCQyxVQUFVLEVBQUVDLE9BQU8sRUFBRTtRQUNoRCxNQUFNQyxhQUFhLEVBQUU7UUFDckIsTUFBTUMsZ0JBQWdCRixRQUFRRyxNQUFNO1FBQ3BDLE1BQU1DLFlBQVksSUFBSSxDQUFDVCxXQUFXLENBQUNVLFVBQVUsQ0FBQ047UUFDOUMsTUFBTU8saUJBQWlCLElBQUksQ0FBQ1gsV0FBVyxDQUFDWSxlQUFlLENBQUNSO1FBQ3hELElBQUssSUFBSVMsSUFBSSxHQUFHQSxJQUFJLElBQUksQ0FBQ1osT0FBTyxDQUFDTyxNQUFNLEVBQUVLLElBQUs7WUFDMUMsTUFBTUMsUUFBUSxJQUFJLENBQUNiLE9BQU8sQ0FBQ1ksRUFBRTtZQUM3QixJQUFJQyxNQUFNbEIsSUFBSSxLQUFLRixVQUFVRyxNQUFNLEVBQUU7Z0JBQ2pDO1lBQ0o7WUFDQSxNQUFN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c0Msa0NBQWtDQyxPQUFPLEVBQUU7UUFDdkMsTUFBTWpDLFFBQVEsSUFBSSxDQUFDYixPQUFPLENBQUMrQyxJQUFJLENBQUMsQ0FBQ2xDLFFBQVVBLE1BQU1sQixJQUFJLEtBQUtGLFVBQVVHLE1BQU0sSUFBSSxJQUFJLENBQUNHLFdBQVcsQ0FBQ1UsVUFBVSxDQUFDSSxNQUFNQyxPQUFPLE1BQU1nQztRQUM3SCxPQUFPakMsU0FBU0EsTUFBTWxCLElBQUksS0FBS0YsVUFBVTRDLE9BQU8sR0FBR3hCLFFBQVE7SUFDL0Q7SUFDQW1DLGdCQUFnQmxDLE9BQU8sRUFBRTtRQUNyQixPQUFPLElBQUksQ0FBQ2QsT0FBTyxDQUFDK0MsSUFBSSxDQUFDLENBQUNsQyxRQUFVQSxNQUFNbEIsSUFBSSxLQUFLRixVQUFVNEMsT0FBTyxJQUFJeEIsTUFBTUMsT0FBTyxLQUFLQTtJQUM5RjtBQUNKLEVBQ0EsbURBQW1EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0LmpzPzMxNzMiXSwic291cmNlc0NvbnRlbnQiOlsiLy9Db25zdFxuY29uc3QgTk9BSF9BUktfQ0FQQUNJVFkgPSAzO1xuZXhwb3J0IHZhciBFbnRyeVR5cGU7XG4oZnVuY3Rpb24gKEVudHJ5VHlwZSkge1xuICAgIEVudHJ5VHlwZVtFbnRyeVR5cGVbXCJNYXJrZXJcIl0gPSAwXSA9IFwiTWFya2VyXCI7XG4gICAgRW50cnlUeXBlW0VudHJ5VHlwZVtcIkVsZW1lbnRcIl0gPSAxXSA9IFwiRWxlbWVudFwiO1xufSkoRW50cnlUeXBlID0gRW50cnlUeXBlIHx8IChFbnRyeVR5cGUgPSB7fSkpO1xuY29uc3QgTUFSS0VSID0geyB0eXBlOiBFbnRyeVR5cGUuTWFya2VyIH07XG4vL0xpc3Qgb2YgZm9ybWF0dGluZyBlbGVtZW50c1xuZXhwb3J0IGNsYXNzIEZvcm1hdHRpbmdFbGVtZW50TGlzdCB7XG4gICAgY29uc3RydWN0b3IodHJlZUFkYXB0ZXIpIHtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlciA9IHRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5ib29rbWFyayA9IG51bGw7XG4gICAgfVxuICAgIC8vTm9haCBBcmsncyBjb25kaXRpb25cbiAgICAvL09QVElNSVpBVElPTjogYXQgZmlyc3Qgd2UgdHJ5IHRvIGZpbmQgcG9zc2libGUgY2FuZGlkYXRlcyBmb3IgZXhjbHVzaW9uIHVzaW5nXG4gICAgLy9saWdodHdlaWdodCBoZXVyaXN0aWNzIHdpdGhvdXQgdGhvcm91Z2ggYXR0cmlidXRlcyBjaGVjay5cbiAgICBfZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCwgbmVBdHRycykge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gW107XG4gICAgICAgIGNvbnN0IG5lQXR0cnNMZW5ndGggPSBuZUF0dHJzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmVUYWdOYW1lID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5ld0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBuZU5hbWVzcGFjZVVSSSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKG5ld0VsZW1lbnQpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXNbaV07XG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gRW50cnlUeXBlLk1hcmtlcikge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBlbGVtZW50IH0gPSBlbnRyeTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IG5lVGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBuZU5hbWVzcGFjZVVSSSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRBdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRBdHRycy5sZW5ndGggPT09IG5lQXR0cnNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHsgaWR4OiBpLCBhdHRyczogZWxlbWVudEF0dHJzIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FuZGlkYXRlcztcbiAgICB9XG4gICAgX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24obmV3RWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5lbnRyaWVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZUF0dHJzID0gdGhpcy50cmVlQWRhcHRlci5nZXRBdHRyTGlzdChuZXdFbGVtZW50KTtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IHRoaXMuX2dldE5vYWhBcmtDb25kaXRpb25DYW5kaWRhdGVzKG5ld0VsZW1lbnQsIG5lQXR0cnMpO1xuICAgICAgICBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPCBOT0FIX0FSS19DQVBBQ0lUWSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy9OT1RFOiBidWlsZCBhdHRycyBtYXAgZm9yIHRoZSBuZXcgZWxlbWVudCwgc28gd2UgY2FuIHBlcmZvcm0gZmFzdCBsb29rdXBzXG4gICAgICAgIGNvbnN0IG5lQXR0cnNNYXAgPSBuZXcgTWFwKG5lQXR0cnMubWFwKChuZUF0dHIpID0+IFtuZUF0dHIubmFtZSwgbmVBdHRyLnZhbHVlXSkpO1xuICAgICAgICBsZXQgdmFsaWRDYW5kaWRhdGVzID0gMDtcbiAgICAgICAgLy9OT1RFOiByZW1vdmUgYm90dG9tbW9zdCBjYW5kaWRhdGVzLCB1bnRpbCBOb2FoJ3MgQXJrIGNvbmRpdGlvbiB3aWxsIG5vdCBiZSBtZXRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYW5kaWRhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSBjYW5kaWRhdGVzW2ldO1xuICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IGBjYW5kaWRhdGUuYXR0cnMubGVuZ3RoID09PSBuZUF0dHJzLmxlbmd0aGBcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuYXR0cnMuZXZlcnkoKGNBdHRyKSA9PiBuZUF0dHJzTWFwLmdldChjQXR0ci5uYW1lKSA9PT0gY0F0dHIudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRDYW5kaWRhdGVzICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkQ2FuZGlkYXRlcyA+PSBOT0FIX0FSS19DQVBBQ0lUWSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGNhbmRpZGF0ZS5pZHgsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL011dGF0aW9uc1xuICAgIGluc2VydE1hcmtlcigpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVuc2hpZnQoTUFSS0VSKTtcbiAgICB9XG4gICAgcHVzaEVsZW1lbnQoZWxlbWVudCwgdG9rZW4pIHtcbiAgICAgICAgdGhpcy5fZW5zdXJlTm9haEFya0NvbmRpdGlvbihlbGVtZW50KTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnVuc2hpZnQoe1xuICAgICAgICAgICAgdHlwZTogRW50cnlUeXBlLkVsZW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhlbGVtZW50LCB0b2tlbikge1xuICAgICAgICBjb25zdCBib29rbWFya0lkeCA9IHRoaXMuZW50cmllcy5pbmRleE9mKHRoaXMuYm9va21hcmspO1xuICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGJvb2ttYXJrSWR4LCAwLCB7XG4gICAgICAgICAgICB0eXBlOiBFbnRyeVR5cGUuRWxlbWVudCxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlbW92ZUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIGNvbnN0IGVudHJ5SW5kZXggPSB0aGlzLmVudHJpZXMuaW5kZXhPZihlbnRyeSk7XG4gICAgICAgIGlmIChlbnRyeUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoZW50cnlJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBsaXN0IG9mIGZvcm1hdHRpbmcgZWxlbWVudHMgdXAgdG8gdGhlIGxhc3QgbWFya2VyLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjY2xlYXItdGhlLWxpc3Qtb2YtYWN0aXZlLWZvcm1hdHRpbmctZWxlbWVudHMtdXAtdG8tdGhlLWxhc3QtbWFya2VyXG4gICAgICovXG4gICAgY2xlYXJUb0xhc3RNYXJrZXIoKSB7XG4gICAgICAgIGNvbnN0IG1hcmtlcklkeCA9IHRoaXMuZW50cmllcy5pbmRleE9mKE1BUktFUik7XG4gICAgICAgIGlmIChtYXJrZXJJZHggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZSgwLCBtYXJrZXJJZHggKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5sZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vU2VhcmNoXG4gICAgZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5NYXJrZXIgfHwgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVudHJ5LmVsZW1lbnQpID09PSB0YWdOYW1lKTtcbiAgICAgICAgcmV0dXJuIGVudHJ5ICYmIGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5FbGVtZW50ID8gZW50cnkgOiBudWxsO1xuICAgIH1cbiAgICBnZXRFbGVtZW50RW50cnkoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuRWxlbWVudCAmJiBlbnRyeS5lbGVtZW50ID09PSBlbGVtZW50KTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JtYXR0aW5nLWVsZW1lbnQtbGlzdC5qcy5tYXAiXSwibmFtZXMiOlsiTk9BSF9BUktfQ0FQQUNJVFkiLCJFbnRyeVR5cGUiLCJNQVJLRVIiLCJ0eXBlIiwiTWFya2VyIiwiRm9ybWF0dGluZ0VsZW1lbnRMaXN0IiwiY29uc3RydWN0b3IiLCJ0cmVlQWRhcHRlciIsImVudHJpZXMiLCJib29rbWFyayIsIl9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyIsIm5ld0VsZW1lbnQiLCJuZUF0dHJzIiwiY2FuZGlkYXRlcyIsIm5lQXR0cnNMZW5ndGgiLCJsZW5ndGgiLCJuZVRhZ05hbWUiLCJnZXRUYWdOYW1lIiwibmVOYW1lc3BhY2VVUkkiLCJnZXROYW1lc3BhY2VVUkkiLCJpIiwiZW50cnkiLCJlbGVtZW50IiwiZWxlbWVudEF0dHJzIiwiZ2V0QXR0ckxpc3QiLCJwdXNoIiwiaWR4IiwiYXR0cnMiLCJfZW5zdXJlTm9haEFya0NvbmRpdGlvbiIsIm5lQXR0cnNNYXAiLCJNYXAiLCJtYXAiLCJuZUF0dHIiLCJuYW1lIiwidmFsdWUiLCJ2YWxpZENhbmRpZGF0ZXMiLCJjYW5kaWRhdGUiLCJldmVyeSIsImNBdHRyIiwiZ2V0Iiwic3BsaWNlIiwiaW5zZXJ0TWFya2VyIiwidW5zaGlmdCIsInB1c2hFbGVtZW50IiwidG9rZW4iLCJFbGVtZW50IiwiaW5zZXJ0RWxlbWVudEFmdGVyQm9va21hcmsiLCJib29rbWFya0lkeCIsImluZGV4T2YiLCJyZW1vdmVFbnRyeSIsImVudHJ5SW5kZXgiLCJjbGVhclRvTGFzdE1hcmtlciIsIm1hcmtlcklkeCIsImdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSIsInRhZ05hbWUiLCJmaW5kIiwiZ2V0RWxlbWVudEVudHJ5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/parser/formatting-element-list.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/parser/index.js":
/*!**************************************************!*\
!*** ./node_modules/parse5/dist/parser/index.js ***!
\**************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Parser: () => (/* binding */ Parser)\n/* harmony export */ });\n/* harmony import */ var _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../tokenizer/index.js */ \"(ssr)/./node_modules/parse5/dist/tokenizer/index.js\");\n/* harmony import */ var _open_element_stack_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./open-element-stack.js */ \"(ssr)/./node_modules/parse5/dist/parser/open-element-stack.js\");\n/* harmony import */ var _formatting_element_list_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatting-element-list.js */ \"(ssr)/./node_modules/parse5/dist/parser/formatting-element-list.js\");\n/* harmony import */ var _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../tree-adapters/default.js */ \"(ssr)/./node_modules/parse5/dist/tree-adapters/default.js\");\n/* harmony import */ var _common_doctype_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/doctype.js */ \"(ssr)/./node_modules/parse5/dist/common/doctype.js\");\n/* harmony import */ var _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/foreign-content.js */ \"(ssr)/./node_modules/parse5/dist/common/foreign-content.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/error-codes.js */ \"(ssr)/./node_modules/parse5/dist/common/error-codes.js\");\n/* harmony import */ var _common_unicode_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../common/unicode.js */ \"(ssr)/./node_modules/parse5/dist/common/unicode.js\");\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n/* harmony import */ var _common_token_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../common/token.js */ \"(ssr)/./node_modules/parse5/dist/common/token.js\");\n\n\n\n\n\n\n\n\n\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = \"hidden\";\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function(InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n};\nconst TABLE_STRUCTURE_TAGS = new Set([\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR\n]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_3__.defaultTreeAdapter,\n onParseError: null\n};\n//Parser\nclass Parser {\n constructor(options, document, fragmentContext = null, scriptHandler = null){\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n this.insertionMode = InsertionMode.INITIAL;\n this.originalInsertionMode = InsertionMode.INITIAL;\n this.headElement = null;\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */ this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n */ this.tmplInsertionModeStack = [];\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.Tokenizer(this.options, this);\n this.activeFormattingElements = new _formatting_element_list_js__WEBPACK_IMPORTED_MODULE_2__.FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? (0,_common_html_js__WEBPACK_IMPORTED_MODULE_8__.getTagID)(this.treeAdapter.getTagName(fragmentContext)) : _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new _open_element_stack_js__WEBPACK_IMPORTED_MODULE_1__.OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : fragmentContext = opts.treeAdapter.createElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.TEMPLATE, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement(\"documentmock\", _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError) return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset\n };\n this.onParseError(err);\n }\n //Stack events\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0) this._setContextModes(node, tid);\n }\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n } else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML;\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n }\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current;\n }\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while(node){\n if (this.treeAdapter.getTagName(node) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n return;\n }\n switch(this.fragmentContextID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEXTAREA:\n {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RCDATA;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.XMP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IFRAME:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOEMBED:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT:\n {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.SCRIPT_DATA;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PLAINTEXT:\n {\n this.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n }\n }\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || \"\";\n const publicId = token.publicId || \"\";\n const systemId = token.systemId || \"\";\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node)=>this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n } else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent, element);\n }\n }\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo) this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.HTML, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML, []);\n if (this.options.sourceCodeLocationInfo) this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML);\n }\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n } else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n } else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location) return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, {\n endLine,\n endCol,\n endOffset\n });\n } else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n _adoptNodes(donor, recipient) {\n for(let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)){\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.END_TAG && tn === closingToken.tagName ? {\n endTag: {\n ...ctLoc\n },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset\n } : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML) return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n } else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SVG && this.treeAdapter.getTagName(current) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML) {\n return false;\n }\n return(// Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode || // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MGLYPH || token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MALIGNMARK) && !this._isIntegrationPoint(currentTagId, current, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML));\n }\n _processToken(token) {\n switch(token.type){\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.CHARACTER:\n {\n this.onCharacter(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.NULL_CHARACTER:\n {\n this.onNullCharacter(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.COMMENT:\n {\n this.onComment(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.DOCTYPE:\n {\n this.onDoctype(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.START_TAG:\n {\n this._processStartTag(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.END_TAG:\n {\n this.onEndTag(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.EOF:\n {\n this.onEof(token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.WHITESPACE_CHARACTER:\n {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry)=>entry.type === _formatting_element_list_js__WEBPACK_IMPORTED_MODULE_2__.EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n for(let i = unopenIdx; i >= 0; i--){\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P);\n this.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P);\n }\n //Insertion modes\n _resetInsertionMode() {\n for(let i = this.openElements.stackTop; i >= 0; i--){\n //Insertion mode reset map\n switch(i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET:\n {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT:\n {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for(let i = selectIdx - 1; i > 0; i--){\n const tn = this.openElements.tagIDs[i];\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n break;\n } else if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n }\n _findFosterParentingLocation() {\n for(let i = this.openElements.stackTop; i >= 0; i--){\n const openElement = this.openElements.items[i];\n switch(this.openElements.tagIDs[i]){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n if (this.treeAdapter.getNamespaceURI(openElement) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n return {\n parent: this.treeAdapter.getTemplateContent(openElement),\n beforeElement: null\n };\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return {\n parent,\n beforeElement: openElement\n };\n }\n return {\n parent: this.openElements.items[i - 1],\n beforeElement: null\n };\n }\n default:\n }\n }\n return {\n parent: this.openElements.items[0],\n beforeElement: null\n };\n }\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return _common_html_js__WEBPACK_IMPORTED_MODULE_8__.SPECIAL_ELEMENTS[ns].has(id);\n }\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML:\n {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD:\n {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD:\n {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP:\n {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n }\n }\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML:\n {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD:\n {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD:\n {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT:\n {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP:\n {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n }\n }\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET:\n {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n }\n }\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n {\n this._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n tokenInTableText(this, token);\n break;\n }\n default:\n }\n }\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n */ _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n } else {\n this._startTagOutsideForeignContent(token);\n }\n }\n _startTagOutsideForeignContent(token) {\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML:\n {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD:\n {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD:\n {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION:\n {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP:\n {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY:\n {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW:\n {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL:\n {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT:\n {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE:\n {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE:\n {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET:\n {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET:\n {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET:\n {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n }\n }\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n } else {\n this._endTagOutsideForeignContent(token);\n }\n }\n _endTagOutsideForeignContent(token) {\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML:\n {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD:\n {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD:\n {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION:\n {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP:\n {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY:\n {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW:\n {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL:\n {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT:\n {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE:\n {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE:\n {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET:\n {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET:\n {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n }\n }\n onEof(token) {\n switch(this.insertionMode){\n case InsertionMode.INITIAL:\n {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML:\n {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD:\n {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD:\n {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE:\n {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET:\n {\n stopParsing(this, token);\n break;\n }\n default:\n }\n }\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === _common_unicode_js__WEBPACK_IMPORTED_MODULE_7__.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch(this.insertionMode){\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET:\n {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT:\n {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for(; idx >= 0; idx--){\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for(let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement){\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n } else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = (0,_common_html_js__WEBPACK_IMPORTED_MODULE_8__.getTagID)(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n } else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for(let i = 0; i < AA_OUTER_LOOP_ITER; i++){\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor) aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for(let i = p.openElements.stackTop; i >= target; i--){\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? _common_html_js__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT_MODE.QUIRKS : _common_doctype_js__WEBPACK_IMPORTED_MODULE_4__.getDocumentMode(token);\n if (!_common_doctype_js__WEBPACK_IMPORTED_MODULE_4__.isConforming(token)) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n } else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default:\n {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR) {\n tokenBeforeHead(p, token);\n } else {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.HEAD, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RCDATA);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT:\n {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n } else {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.SCRIPT_DATA);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.misplacedStartTagForHeadElement);\n break;\n }\n default:\n {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n tokenInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n } else {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n {\n startTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.nestedNoscriptInHead);\n break;\n }\n default:\n {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT:\n {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n {\n tokenInHeadNoScript(p, token);\n break;\n }\n default:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.EOF ? _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.openElementsLeftAfterEof : _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET:\n {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.misplacedStartTagForHeadElement);\n break;\n }\n default:\n {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n {\n tokenAfterHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.BODY, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch(token.type){\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.CHARACTER:\n {\n characterInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.WHITESPACE_CHARACTER:\n {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.COMMENT:\n {\n appendComment(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.START_TAG:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.END_TAG:\n {\n endTagInBody(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.EOF:\n {\n eofInBody(p, token);\n break;\n }\n default:\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n if ((0,_common_html_js__WEBPACK_IMPORTED_MODULE_8__.isNumberedHeader)(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for(let i = p.openElements.stackTop; i >= 0; i--){\n const elementId = p.openElements.tagIDs[i];\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI && elementId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI || (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT) && (elementId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD || elementId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT)) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ADDRESS && elementId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIV && elementId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P && p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = (0,_common_token_js__WEBPACK_IMPORTED_MODULE_9__.getTokenAttr)(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.IMG;\n token.tagID = _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, _tokenizer_index_js__WEBPACK_IMPORTED_MODULE_0__.TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.framesetOk = false;\n p.insertionMode = p.insertionMode === InsertionMode.IN_TABLE || p.insertionMode === InsertionMode.IN_CAPTION || p.insertionMode === InsertionMode.IN_TABLE_BODY || p.insertionMode === InsertionMode.IN_ROW || p.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RTC);\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenMathMLAttrs(token);\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML);\n } else {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenSVGAttrs(token);\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.SVG);\n } else {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.I:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.S:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.B:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.U:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.EM:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BIG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CODE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SMALL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRIKE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRONG:\n {\n bStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.A:\n {\n aStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H1:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H2:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H3:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H4:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H5:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H6:\n {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NAV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MAIN:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MENU:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ASIDE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CENTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGURE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FOOTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEADER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIALOG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DETAILS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ADDRESS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ARTICLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SECTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SUMMARY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIELDSET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BLOCKQUOTE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGCAPTION:\n {\n addressStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT:\n {\n listItemStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IMG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.WBR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.AREA:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.EMBED:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.KEYGEN:\n {\n areaStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HR:\n {\n hrStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RB:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RTC:\n {\n rbStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.RP:\n {\n rtStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PRE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LISTING:\n {\n preStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.XMP:\n {\n xmpStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SVG:\n {\n svgStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n htmlStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n startTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n {\n bodyStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM:\n {\n formStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOBR:\n {\n nobrStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MATH:\n {\n mathStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n tableStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.INPUT:\n {\n inputStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PARAM:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TRACK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SOURCE:\n {\n paramStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IMAGE:\n {\n imageStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON:\n {\n buttonStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.APPLET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OBJECT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MARQUEE:\n {\n appletStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.IFRAME:\n {\n iframeStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT:\n {\n selectStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP:\n {\n optgroupStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOEMBED:\n {\n noembedStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET:\n {\n framesetStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEXTAREA:\n {\n textareaStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOSCRIPT:\n {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PLAINTEXT:\n {\n plaintextStartTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAME:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n {\n break;\n }\n default:\n {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM);\n } else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P)) {\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.P, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI);\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.BR, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for(let i = p.openElements.stackTop; i > 0; i--){\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i) p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.A:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.B:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.I:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.S:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.U:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.EM:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BIG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CODE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOBR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SMALL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRIKE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STRONG:\n {\n callAdoptionAgency(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P:\n {\n pEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.UL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIR:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NAV:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.PRE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MAIN:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MENU:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ASIDE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BUTTON:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CENTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGURE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FOOTER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HEADER:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DIALOG:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ADDRESS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.ARTICLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DETAILS:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SECTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SUMMARY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LISTING:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIELDSET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BLOCKQUOTE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FIGCAPTION:\n {\n addressEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LI:\n {\n liEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.DT:\n {\n ddEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H1:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H2:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H3:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H4:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H5:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.H6:\n {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR:\n {\n brEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n {\n bodyEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n htmlEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM:\n {\n formEndTagInBody(p);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.APPLET:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OBJECT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.MARQUEE:\n {\n appletEndTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n } else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, _common_error_codes_js__WEBPACK_IMPORTED_MODULE_6__.ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch(token.type){\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.CHARACTER:\n {\n characterInTableText(p, token);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_9__.TokenType.WHITESPACE_CHARACTER:\n {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n }\n } else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.COLGROUP, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.TBODY, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n } else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n tdStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n startTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n {\n colStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FORM:\n {\n formStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n tableStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n {\n tbodyStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.INPUT:\n {\n inputStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n {\n captionStartTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n {\n colgroupStartTagInTable(p, token);\n break;\n }\n default:\n {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n templateEndTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n break;\n }\n default:\n {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for(; i < p.pendingCharacterTokens.length; i++){\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n } else {\n for(; i < p.pendingCharacterTokens.length; i++){\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR\n]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch(tn){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n break;\n }\n default:\n {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n startTagInHead(p, token);\n break;\n }\n default:\n {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n templateEndTagInHead(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n {\n break;\n }\n default:\n {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_NAMES.TR, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default:\n {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n break;\n }\n default:\n {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default:\n {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n {\n break;\n }\n default:\n {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD) || p.openElements.hasInTableScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch(tn){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n break;\n }\n default:\n {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION:\n {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP:\n {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.INPUT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.KEYGEN:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEXTAREA:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT:\n {\n if (p.openElements.hasInSelectScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n startTagInHead(p, token);\n break;\n }\n default:\n }\n}\nfunction endTagInSelect(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP:\n {\n if (p.openElements.stackTop > 0 && p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION && p.openElements.tagIDs[p.openElements.stackTop - 1] === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION:\n {\n if (p.openElements.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT:\n {\n if (p.openElements.hasInSelectScope(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n } else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TABLE || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n } else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch(token.tagID){\n // First, handle tags that can start without a mode change\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BASEFONT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BGSOUND:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.LINK:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.META:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.SCRIPT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.STYLE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TITLE:\n {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.CAPTION:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COLGROUP:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TBODY:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TFOOT:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.THEAD:\n {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.COL:\n {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TR:\n {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TD:\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TH:\n {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default:\n {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped(_common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n } else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n } else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET:\n {\n p._insertElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAME:\n {\n p._appendElement(token, _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n {\n startTagInHead(p, token);\n break;\n }\n default:\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n {\n startTagInHead(p, token);\n break;\n }\n default:\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch(token.tagID){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.HTML:\n {\n startTagInBody(p, token);\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.NOFRAMES:\n {\n startTagInHead(p, token);\n break;\n }\n default:\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = _common_unicode_js__WEBPACK_IMPORTED_MODULE_7__.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while(p.treeAdapter.getNamespaceURI(p.openElements.current) !== _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML && !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)){\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (_common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n } else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.MATHML) {\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenMathMLAttrs(token);\n } else if (currentNs === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.SVG) {\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenSVGTagName(token);\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenSVGAttrs(token);\n }\n _common_foreign_content_js__WEBPACK_IMPORTED_MODULE_5__.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n } else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.P || token.tagID === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.TAG_ID.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for(let i = p.openElements.stackTop; i > 0; i--){\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === _common_html_js__WEBPACK_IMPORTED_MODULE_8__.NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWlFO0FBQ047QUFDcUI7QUFDZjtBQUNqQjtBQUNlO0FBQ2hCO0FBQ0M7QUFDMEY7QUFDNUU7QUFDOUQsZ0JBQWdCO0FBQ2hCLE1BQU1zQixvQkFBb0I7QUFDMUIsdUNBQXVDO0FBQ3ZDLE1BQU1DLHFCQUFxQjtBQUMzQixNQUFNQyxxQkFBcUI7QUFDM0IsaUJBQWlCO0FBQ2pCLElBQUlDO0FBQ0gsVUFBVUEsYUFBYTtJQUNwQkEsYUFBYSxDQUFDQSxhQUFhLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUM5Q0EsYUFBYSxDQUFDQSxhQUFhLENBQUMsY0FBYyxHQUFHLEVBQUUsR0FBRztJQUNsREEsYUFBYSxDQUFDQSxhQUFhLENBQUMsY0FBYyxHQUFHLEVBQUUsR0FBRztJQUNsREEsYUFBYSxDQUFDQSxhQUFhLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztJQUM5Q0EsYUFBYSxDQUFDQSxhQUFhLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxHQUFHO0lBQ3hEQSxhQUFhLENBQUNBLGFBQWEsQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHO0lBQ2pEQSxhQUFhLENBQUNBLGFBQWEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHO0lBQzlDQSxhQUFhLENBQUNBLGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHO0lBQzNDQSxhQUFhLENBQUNBLGFBQWEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHO0lBQy9DQSxhQUFhLENBQUNBLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLEdBQUc7SUFDcERBLGFBQWEsQ0FBQ0EsYUFBYSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUc7SUFDbERBLGFBQWEsQ0FBQ0EsYUFBYSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsR0FBRztJQUN2REEsYUFBYSxDQUFDQSxhQUFhLENBQUMsZ0JBQWdCLEdBQUcs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QkFBNEIsQ0FBQ3pPO1lBQy9CO1FBQ0o7UUFDQSxNQUFNa0UsVUFBVXNNLEVBQUU3VCxXQUFXLENBQUMwQixVQUFVLENBQUNvRjtRQUN6QyxJQUFJUyxRQUFReVMsV0FBVyxPQUFPM1csTUFBTWtFLE9BQU8sRUFBRTtZQUN6Qyx3REFBd0Q7WUFDeERsRSxNQUFNa0UsT0FBTyxHQUFHQTtZQUNoQnNNLEVBQUVoUyxZQUFZLENBQUN5UyxlQUFlLENBQUN0STtZQUMvQjtRQUNKO0lBQ0o7QUFDSixFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3BhcnNlci9pbmRleC5qcz9iYTIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuaXplciwgVG9rZW5pemVyTW9kZSB9IGZyb20gJy4uL3Rva2VuaXplci9pbmRleC5qcyc7XG5pbXBvcnQgeyBPcGVuRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9vcGVuLWVsZW1lbnQtc3RhY2suanMnO1xuaW1wb3J0IHsgRm9ybWF0dGluZ0VsZW1lbnRMaXN0LCBFbnRyeVR5cGUgfSBmcm9tICcuL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0LmpzJztcbmltcG9ydCB7IGRlZmF1bHRUcmVlQWRhcHRlciB9IGZyb20gJy4uL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyc7XG5pbXBvcnQgKiBhcyBkb2N0eXBlIGZyb20gJy4uL2NvbW1vbi9kb2N0eXBlLmpzJztcbmltcG9ydCAqIGFzIGZvcmVpZ25Db250ZW50IGZyb20gJy4uL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMnO1xuaW1wb3J0IHsgRVJSIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9yLWNvZGVzLmpzJztcbmltcG9ydCAqIGFzIHVuaWNvZGUgZnJvbSAnLi4vY29tbW9uL3VuaWNvZGUuanMnO1xuaW1wb3J0IHsgVEFHX0lEIGFzICQsIFRBR19OQU1FUyBhcyBUTiwgTlMsIEFUVFJTLCBTUEVDSUFMX0VMRU1FTlRTLCBET0NVTUVOVF9NT0RFLCBpc051bWJlcmVkSGVhZGVyLCBnZXRUYWdJRCwgfSBmcm9tICcuLi9jb21tb24vaHRtbC5qcyc7XG5pbXBvcnQgeyBUb2tlblR5cGUsIGdldFRva2VuQXR0ciwgfSBmcm9tICcuLi9jb21tb24vdG9rZW4uanMnO1xuLy9NaXNjIGNvbnN0YW50c1xuY29uc3QgSElEREVOX0lOUFVUX1RZUEUgPSAnaGlkZGVuJztcbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxuY29uc3QgQUFfT1VURVJfTE9PUF9JVEVSID0gODtcbmNvbnN0IEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XG4vL0luc2VydGlvbiBtb2Rlc1xudmFyIEluc2VydGlvbk1vZGU7XG4oZnVuY3Rpb24gKEluc2VydGlvbk1vZGUpIHtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTklUSUFMXCJdID0gMF0gPSBcIklOSVRJQUxcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJCRUZPUkVfSFRNTFwiXSA9IDFdID0gXCJCRUZPUkVfSFRNTFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkJFRk9SRV9IRUFEXCJdID0gMl0gPSBcIkJFRk9SRV9IRUFEXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fSEVBRFwiXSA9IDNdID0gXCJJTl9IRUFEXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fSEVBRF9OT19TQ1JJUFRcIl0gPSA0XSA9IFwiSU5fSEVBRF9OT19TQ1JJUFRcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9IRUFEXCJdID0gNV0gPSBcIkFGVEVSX0hFQURcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9CT0RZXCJdID0gNl0gPSBcIklOX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJURVhUXCJdID0gN10gPSBcIlRFWFRcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9UQUJMRVwiXSA9IDhdID0gXCJJTl9UQUJMRVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFX1RFWFRcIl0gPSA5XSA9IFwiSU5fVEFCTEVfVEVYVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NBUFRJT05cIl0gPSAxMF0gPSBcIklOX0NBUFRJT05cIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9DT0xVTU5fR1JPVVBcIl0gPSAxMV0gPSBcIklOX0NPTFVNTl9HUk9VUFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFX0JPRFlcIl0gPSAxMl0gPSBcIklOX1RBQkxFX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9ST1dcIl0gPSAxM10gPSBcIklOX1JPV1wiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NFTExcIl0gPSAxNF0gPSBcIklOX0NFTExcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9TRUxFQ1RcIl0gPSAxNV0gPSBcIklOX1NFTEVDVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1NFTEVDVF9JTl9UQUJMRVwiXSA9IDE2XSA9IFwiSU5fU0VMRUNUX0lOX1RBQkxFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fVEVNUExBVEVcIl0gPSAxN10gPSBcIklOX1RFTVBMQVRFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiQUZURVJfQk9EWVwiXSA9IDE4XSA9IFwiQUZURVJfQk9EWVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0ZSQU1FU0VUXCJdID0gMTldID0gXCJJTl9GUkFNRVNFVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0ZSQU1FU0VUXCJdID0gMjBdID0gXCJBRlRFUl9GUkFNRVNFVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0FGVEVSX0JPRFlcIl0gPSAyMV0gPSBcIkFGVEVSX0FGVEVSX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9BRlRFUl9GUkFNRVNFVFwiXSA9IDIyXSA9IFwiQUZURVJfQUZURVJfRlJBTUVTRVRcIjtcbn0pKEluc2VydGlvbk1vZGUgfHwgKEluc2VydGlvbk1vZGUgPSB7fSkpO1xuY29uc3QgQkFTRV9MT0MgPSB7XG4gICAgc3RhcnRMaW5lOiAtMSxcbiAgICBzdGFydENvbDogLTEsXG4gICAgc3RhcnRPZmZzZXQ6IC0xLFxuICAgIGVuZExpbmU6IC0xLFxuICAgIGVuZENvbDogLTEsXG4gICAgZW5kT2Zmc2V0OiAtMSxcbn07XG5jb25zdCBUQUJMRV9TVFJVQ1RVUkVfVEFHUyA9IG5ldyBTZXQoWyQuVEFCTEUsICQuVEJPRFksICQuVEZPT1QsICQuVEhFQUQsICQuVFJdKTtcbmNvbnN0IGRlZmF1bHRQYXJzZXJPcHRpb25zID0ge1xuICAgIHNjcmlwdGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlcixcbiAgICBvblBhcnNlRXJyb3I6IG51bGwsXG59O1xuLy9QYXJzZXJcbmV4cG9ydCBjbGFzcyBQYXJzZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQgPSBudWxsLCBzY3JpcHRIYW5kbGVyID0gbnVsbCkge1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dCA9IGZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgdGhpcy5zY3JpcHRIYW5kbGVyID0gc2NyaXB0SGFuZGxlcjtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgICAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTklUSUFMO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5JVElBTDtcbiAgICAgICAgdGhpcy5oZWFkRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAvKiogSW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBub3QgYW4gZWxlbWVudCBpbiB0aGUgSFRNTCBuYW1lc3BhY2UgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGVtcGxhdGUgaW5zZXJ0aW9uIG1vZGUgc3RhY2sgaXMgbWFpbnRhaW5lZCBmcm9tIHRoZSBsZWZ0LlxuICAgICAgICAgKiBJZS4gdGhlIHRvcG1vc3QgZWxlbWVudCB3aWxsIGFsd2F5cyBoYXZlIGluZGV4IDAuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zID0gW107XG4gICAgICAgIHRoaXMuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZyYW1lc2V0T2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdFBhcnNlck9wdGlvbnMsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvciA9IHRoaXMub3B0aW9ucy5vblBhcnNlRXJyb3I7XG4gICAgICAgIC8vIEFsd2F5cyBlbmFibGUgbG9jYXRpb24gaW5mbyBpZiB3ZSByZXBvcnQgcGFyc2UgZXJyb3JzLlxuICAgICAgICBpZiAodGhpcy5vblBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQgIT09IG51bGwgJiYgZG9jdW1lbnQgIT09IHZvaWQgMCA/IGRvY3VtZW50IDogdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpO1xuICAgICAgICB0aGlzLnRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIodGhpcy5vcHRpb25zLCB0aGlzKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBuZXcgRm9ybWF0dGluZ0VsZW1lbnRMaXN0KHRoaXMudHJlZUFkYXB0ZXIpO1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dElEID0gZnJhZ21lbnRDb250ZXh0ID8gZ2V0VGFnSUQodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGZyYWdtZW50Q29udGV4dCkpIDogJC5VTktOT1dOO1xuICAgICAgICB0aGlzLl9zZXRDb250ZXh0TW9kZXMoZnJhZ21lbnRDb250ZXh0ICE9PSBudWxsICYmIGZyYWdtZW50Q29udGV4dCAhPT0gdm9pZCAwID8gZnJhZ21lbnRDb250ZXh0IDogdGhpcy5kb2N1bWVudCwgdGhpcy5mcmFnbWVudENvbnRleHRJRCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzID0gbmV3IE9wZW5FbGVtZW50U3RhY2sodGhpcy5kb2N1bWVudCwgdGhpcy50cmVlQWRhcHRlciwgdGhpcyk7XG4gICAgfVxuICAgIC8vIEFQSVxuICAgIHN0YXRpYyBwYXJzZShodG1sLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyB0aGlzKG9wdGlvbnMpO1xuICAgICAgICBwYXJzZXIudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgICAgICByZXR1cm4gcGFyc2VyLmRvY3VtZW50O1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0RnJhZ21lbnRQYXJzZXIoZnJhZ21lbnRDb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0UGFyc2VyT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIH07XG4gICAgICAgIC8vTk9URTogdXNlIGEgPHRlbXBsYXRlPiBlbGVtZW50IGFzIHRoZSBmcmFnbWVudCBjb250ZXh0IGlmIG5vIGNvbnRleHQgZWxlbWVudCB3YXMgcHJvdmlkZWQsXG4gICAgICAgIC8vc28gd2Ugd2lsbCBwYXJzZSBpbiBhIFwiZm9yZ2l2aW5nXCIgbWFubmVyXG4gICAgICAgIGZyYWdtZW50Q29udGV4dCAhPT0gbnVsbCAmJiBmcmFnbWVudENvbnRleHQgIT09IHZvaWQgMCA/IGZyYWdtZW50Q29udGV4dCA6IChmcmFnbWVudENvbnRleHQgPSBvcHRzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoVE4uVEVNUExBVEUsIE5TLkhUTUwsIFtdKSk7XG4gICAgICAgIC8vTk9URTogY3JlYXRlIGEgZmFrZSBlbGVtZW50IHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgYGRvY3VtZW50YCBmb3IgZnJhZ21lbnQgcGFyc2luZy5cbiAgICAgICAgLy9UaGlzIGlzIGltcG9ydGFudCBmb3IganNkb20sIHdoZXJlIGEgbmV3IGBkb2N1bWVudGAgY2Fubm90IGJlIGNyZWF0ZWQuIFRoaXMgbGVkIHRvXG4gICAgICAgIC8vZnJhZ21lbnQgcGFyc2luZyBtZXNzaW5nIHdpdGggdGhlIG1haW4gYGRvY3VtZW50YC5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRNb2NrID0gb3B0cy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCdkb2N1bWVudG1vY2snLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyB0aGlzKG9wdHMsIGRvY3VtZW50TW9jaywgZnJhZ21lbnRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcnNlci5mcmFnbWVudENvbnRleHRJRCA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgcGFyc2VyLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sudW5zaGlmdChJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZXIuX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKTtcbiAgICAgICAgcGFyc2VyLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKTtcbiAgICAgICAgcGFyc2VyLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcGFyc2VyLl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCk7XG4gICAgICAgIHJldHVybiBwYXJzZXI7XG4gICAgfVxuICAgIGdldEZyYWdtZW50KCkge1xuICAgICAgICBjb25zdCByb290RWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZCh0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgdGhpcy5fYWRvcHROb2Rlcyhyb290RWxlbWVudCwgZnJhZ21lbnQpO1xuICAgICAgICByZXR1cm4gZnJhZ21lbnQ7XG4gICAgfVxuICAgIC8vRXJyb3JzXG4gICAgX2Vycih0b2tlbiwgY29kZSwgYmVmb3JlVG9rZW4pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXRoaXMub25QYXJzZUVycm9yKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsb2MgPSAoX2EgPSB0b2tlbi5sb2NhdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogQkFTRV9MT0M7XG4gICAgICAgIGNvbnN0IGVyciA9IHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICBzdGFydExpbmU6IGxvYy5zdGFydExpbmUsXG4gICAgICAgICAgICBzdGFydENvbDogbG9jLnN0YXJ0Q29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxvYy5zdGFydE9mZnNldCxcbiAgICAgICAgICAgIGVuZExpbmU6IGJlZm9yZVRva2VuID8gbG9jLnN0YXJ0TGluZSA6IGxvYy5lbmRMaW5lLFxuICAgICAgICAgICAgZW5kQ29sOiBiZWZvcmVUb2tlbiA/IGxvYy5zdGFydENvbCA6IGxvYy5lbmRDb2wsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IGJlZm9yZVRva2VuID8gbG9jLnN0YXJ0T2Zmc2V0IDogbG9jLmVuZE9mZnNldCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblBhcnNlRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgLy9TdGFjayBldmVudHNcbiAgICBvbkl0ZW1QdXNoKG5vZGUsIHRpZCwgaXNUb3ApIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy50cmVlQWRhcHRlcikub25JdGVtUHVzaCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIG5vZGUpO1xuICAgICAgICBpZiAoaXNUb3AgJiYgdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPiAwKVxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGV4dE1vZGVzKG5vZGUsIHRpZCk7XG4gICAgfVxuICAgIG9uSXRlbVBvcChub2RlLCBpc1RvcCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEVuZExvY2F0aW9uKG5vZGUsIHRoaXMuY3VycmVudFRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLnRyZWVBZGFwdGVyKS5vbkl0ZW1Qb3ApID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBub2RlLCB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50KTtcbiAgICAgICAgaWYgKGlzVG9wKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudDtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VGFnSWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhZ0lkID0gdGhpcy5mcmFnbWVudENvbnRleHRJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICh7IGN1cnJlbnQsIGN1cnJlbnRUYWdJZCB9ID0gdGhpcy5vcGVuRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGV4dE1vZGVzKGN1cnJlbnQsIGN1cnJlbnRUYWdJZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3NldENvbnRleHRNb2RlcyhjdXJyZW50LCB0aWQpIHtcbiAgICAgICAgY29uc3QgaXNIVE1MID0gY3VycmVudCA9PT0gdGhpcy5kb2N1bWVudCB8fCB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSA9PT0gTlMuSFRNTDtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gIWlzSFRNTDtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSA9ICFpc0hUTUwgJiYgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludCh0aWQsIGN1cnJlbnQpO1xuICAgIH1cbiAgICBfc3dpdGNoVG9UZXh0UGFyc2luZyhjdXJyZW50VG9rZW4sIG5leHRUb2tlbml6ZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGN1cnJlbnRUb2tlbiwgTlMuSFRNTCk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gbmV4dFRva2VuaXplclN0YXRlO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IHRoaXMuaW5zZXJ0aW9uTW9kZTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5URVhUO1xuICAgIH1cbiAgICBzd2l0Y2hUb1BsYWludGV4dFBhcnNpbmcoKSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuVEVYVDtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyTW9kZS5QTEFJTlRFWFQ7XG4gICAgfVxuICAgIC8vRnJhZ21lbnQgcGFyc2luZ1xuICAgIF9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHRcbiAgICAgICAgICAgID8gdGhpcy5mcmFnbWVudENvbnRleHRcbiAgICAgICAgICAgIDogdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICB9XG4gICAgX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpID09PSBUTi5GT1JNKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IG5vZGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuZnJhZ21lbnRDb250ZXh0IHx8IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuZnJhZ21lbnRDb250ZXh0KSAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodGhpcy5mcmFnbWVudENvbnRleHRJRCkge1xuICAgICAgICAgICAgY2FzZSAkLlRJVExFOlxuICAgICAgICAgICAgY2FzZSAkLlRFWFRBUkVBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlJDREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgICAgIGNhc2UgJC5YTVA6XG4gICAgICAgICAgICBjYXNlICQuSUZSQU1FOlxuICAgICAgICAgICAgY2FzZSAkLk5PRU1CRUQ6XG4gICAgICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuUkFXVEVYVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUExBSU5URVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlBMQUlOVEVYVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9UcmVlIG11dGF0aW9uXG4gICAgX3NldERvY3VtZW50VHlwZSh0b2tlbikge1xuICAgICAgICBjb25zdCBuYW1lID0gdG9rZW4ubmFtZSB8fCAnJztcbiAgICAgICAgY29uc3QgcHVibGljSWQgPSB0b2tlbi5wdWJsaWNJZCB8fCAnJztcbiAgICAgICAgY29uc3Qgc3lzdGVtSWQgPSB0b2tlbi5zeXN0ZW1JZCB8fCAnJztcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXREb2N1bWVudFR5cGUodGhpcy5kb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTtcbiAgICAgICAgaWYgKHRva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudENoaWxkcmVuID0gdGhpcy50cmVlQWRhcHRlci5nZXRDaGlsZE5vZGVzKHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgZG9jVHlwZU5vZGUgPSBkb2N1bWVudENoaWxkcmVuLmZpbmQoKG5vZGUpID0+IHRoaXMudHJlZUFkYXB0ZXIuaXNEb2N1bWVudFR5cGVOb2RlKG5vZGUpKTtcbiAgICAgICAgICAgIGlmIChkb2NUeXBlTm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihkb2NUeXBlTm9kZSwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQsIGxvY2F0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgY29uc3QgbG9jID0gbG9jYXRpb24gJiYge1xuICAgICAgICAgICAgICAgIC4uLmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIHN0YXJ0VGFnOiBsb2NhdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCwgbG9jKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfYXBwZW5kRWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgdG9rZW4ubG9jYXRpb24pO1xuICAgIH1cbiAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQsIHRva2VuLnRhZ0lEKTtcbiAgICB9XG4gICAgX2luc2VydEZha2VFbGVtZW50KHRhZ05hbWUsIHRhZ0lEKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgTlMuSFRNTCwgW10pO1xuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQsIG51bGwpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQsIHRhZ0lEKTtcbiAgICB9XG4gICAgX2luc2VydFRlbXBsYXRlKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IHRtcGwgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgTlMuSFRNTCwgdG9rZW4uYXR0cnMpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0VGVtcGxhdGVDb250ZW50KHRtcGwsIGNvbnRlbnQpO1xuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKHRtcGwsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaCh0bXBsLCB0b2tlbi50YWdJRCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbylcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihjb250ZW50LCBudWxsKTtcbiAgICB9XG4gICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChUTi5IVE1MLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbylcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZCh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50LCBlbGVtZW50KTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaChlbGVtZW50LCAkLkhUTUwpO1xuICAgIH1cbiAgICBfYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHBhcmVudCkge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlQ29tbWVudE5vZGUodG9rZW4uZGF0YSk7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBjb21tZW50Tm9kZSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGNvbW1lbnROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2luc2VydENoYXJhY3RlcnModG9rZW4pIHtcbiAgICAgICAgbGV0IHBhcmVudDtcbiAgICAgICAgbGV0IGJlZm9yZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRGb3N0ZXJQYXJlbnRPbkluc2VydGlvbigpKSB7XG4gICAgICAgICAgICAoeyBwYXJlbnQsIGJlZm9yZUVsZW1lbnQgfSA9IHRoaXMuX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpKTtcbiAgICAgICAgICAgIGlmIChiZWZvcmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRUZXh0QmVmb3JlKHBhcmVudCwgdG9rZW4uY2hhcnMsIGJlZm9yZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRUZXh0KHBhcmVudCwgdG9rZW4uY2hhcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGFyZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50T3JOb2RlO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5pbnNlcnRUZXh0KHBhcmVudCwgdG9rZW4uY2hhcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9rZW4ubG9jYXRpb24pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gdGhpcy50cmVlQWRhcHRlci5nZXRDaGlsZE5vZGVzKHBhcmVudCk7XG4gICAgICAgIGNvbnN0IHRleHROb2RlSWR4ID0gYmVmb3JlRWxlbWVudCA/IHNpYmxpbmdzLmxhc3RJbmRleE9mKGJlZm9yZUVsZW1lbnQpIDogc2libGluZ3MubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZSA9IHNpYmxpbmdzW3RleHROb2RlSWR4IC0gMV07XG4gICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBhIGxvY2F0aW9uIGFzc2lnbmVkIGJ5IGFub3RoZXIgdG9rZW4sIHRoZW4ganVzdCB1cGRhdGUgdGhlIGVuZCBwb3NpdGlvblxuICAgICAgICBjb25zdCB0bkxvYyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXh0Tm9kZSk7XG4gICAgICAgIGlmICh0bkxvYykge1xuICAgICAgICAgICAgY29uc3QgeyBlbmRMaW5lLCBlbmRDb2wsIGVuZE9mZnNldCB9ID0gdG9rZW4ubG9jYXRpb247XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnVwZGF0ZU5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUsIHsgZW5kTGluZSwgZW5kQ29sLCBlbmRPZmZzZXQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXh0Tm9kZSwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9hZG9wdE5vZGVzKGRvbm9yLCByZWNpcGllbnQpIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpOyBjaGlsZDsgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoY2hpbGQpO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChyZWNpcGllbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfc2V0RW5kTG9jYXRpb24oZWxlbWVudCwgY2xvc2luZ1Rva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCkgJiYgY2xvc2luZ1Rva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjdExvYyA9IGNsb3NpbmdUb2tlbi5sb2NhdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgZW5kTG9jID0gXG4gICAgICAgICAgICAvLyBOT1RFOiBGb3IgY2FzZXMgbGlrZSA8cD4gPHA+IDwvcD4gLSBGaXJzdCAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nXG4gICAgICAgICAgICAvLyB0YWcgYW5kIGZvciBjYXNlcyBsaWtlIDx0ZD4gPHA+IDwvdGQ+IC0gJ3AnIGNsb3NlcyB3aXRob3V0IGEgY2xvc2luZyB0YWcuXG4gICAgICAgICAgICBjbG9zaW5nVG9rZW4udHlwZSA9PT0gVG9rZW5UeXBlLkVORF9UQUcgJiYgdG4gPT09IGNsb3NpbmdUb2tlbi50YWdOYW1lXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGVuZFRhZzogeyAuLi5jdExvYyB9LFxuICAgICAgICAgICAgICAgICAgICBlbmRMaW5lOiBjdExvYy5lbmRMaW5lLFxuICAgICAgICAgICAgICAgICAgICBlbmRDb2w6IGN0TG9jLmVuZENvbCxcbiAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiBjdExvYy5lbmRPZmZzZXQsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICBlbmRMaW5lOiBjdExvYy5zdGFydExpbmUsXG4gICAgICAgICAgICAgICAgICAgIGVuZENvbDogY3RMb2Muc3RhcnRDb2wsXG4gICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogY3RMb2Muc3RhcnRPZmZzZXQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIudXBkYXRlTm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50LCBlbmRMb2MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vVG9rZW4gcHJvY2Vzc2luZ1xuICAgIHNob3VsZFByb2Nlc3NTdGFydFRhZ1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICAvLyBDaGVjayB0aGF0IG5laXRoZXIgY3VycmVudCA9PT0gZG9jdW1lbnQsIG9yIG5zID09PSBOUy5IVE1MXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Tm90SW5IVE1MKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgY3VycmVudDtcbiAgICAgICAgbGV0IGN1cnJlbnRUYWdJZDtcbiAgICAgICAgaWYgKHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG4gICAgICAgICAgICBjdXJyZW50VGFnSWQgPSB0aGlzLmZyYWdtZW50Q29udGV4dElEO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgKHsgY3VycmVudCwgY3VycmVudFRhZ0lkIH0gPSB0aGlzLm9wZW5FbGVtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLlNWRyAmJlxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGN1cnJlbnQpID09PSBUTi5BTk5PVEFUSU9OX1hNTCAmJlxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCkgPT09IE5TLk1BVEhNTCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIENoZWNrIHRoYXQgYGN1cnJlbnRgIGlzIG5vdCBhbiBpbnRlZ3JhdGlvbiBwb2ludCBmb3IgSFRNTCBvciBNYXRoTUwgZWxlbWVudHMuXG4gICAgICAgIHRoaXMudG9rZW5pemVyLmluRm9yZWlnbk5vZGUgfHxcbiAgICAgICAgICAgIC8vIElmIGl0IF9pc18gYW4gaW50ZWdyYXRpb24gcG9pbnQsIHRoZW4gd2UgbWlnaHQgaGF2ZSB0byBjaGVjayB0aGF0IGl0IGlzIG5vdCBhbiBIVE1MXG4gICAgICAgICAgICAvLyBpbnRlZ3JhdGlvbiBwb2ludC5cbiAgICAgICAgICAgICgodG9rZW4udGFnSUQgPT09ICQuTUdMWVBIIHx8IHRva2VuLnRhZ0lEID09PSAkLk1BTElHTk1BUkspICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludChjdXJyZW50VGFnSWQsIGN1cnJlbnQsIE5TLkhUTUwpKSk7XG4gICAgfVxuICAgIF9wcm9jZXNzVG9rZW4odG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhcmFjdGVyKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk51bGxDaGFyYWN0ZXIodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuQ09NTUVOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkRPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5TVEFSVF9UQUc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzU3RhcnRUYWcodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuRU5EX1RBRzoge1xuICAgICAgICAgICAgICAgIHRoaXMub25FbmRUYWcodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVvZih0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL0ludGVncmF0aW9uIHBvaW50c1xuICAgIF9pc0ludGVncmF0aW9uUG9pbnQodGlkLCBlbGVtZW50LCBmb3JlaWduTlMpIHtcbiAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KTtcbiAgICAgICAgY29uc3QgYXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZm9yZWlnbkNvbnRlbnQuaXNJbnRlZ3JhdGlvblBvaW50KHRpZCwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xuICAgIH1cbiAgICAvL0FjdGl2ZSBmb3JtYXR0aW5nIGVsZW1lbnRzIHJlY29uc3RydWN0aW9uXG4gICAgX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCkge1xuICAgICAgICBjb25zdCBsaXN0TGVuZ3RoID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllcy5sZW5ndGg7XG4gICAgICAgIGlmIChsaXN0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXMuZmluZEluZGV4KChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gRW50cnlUeXBlLk1hcmtlciB8fCB0aGlzLm9wZW5FbGVtZW50cy5jb250YWlucyhlbnRyeS5lbGVtZW50KSk7XG4gICAgICAgICAgICBjb25zdCB1bm9wZW5JZHggPSBlbmRJbmRleCA8IDAgPyBsaXN0TGVuZ3RoIC0gMSA6IGVuZEluZGV4IC0gMTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB1bm9wZW5JZHg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoZW50cnkudG9rZW4sIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVudHJ5LmVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL0Nsb3NlIGVsZW1lbnRzXG4gICAgX2Nsb3NlVGFibGVDZWxsKCkge1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFibGVDZWxsUG9wcGVkKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgIH1cbiAgICBfY2xvc2VQRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5QKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuUCk7XG4gICAgfVxuICAgIC8vSW5zZXJ0aW9uIG1vZGVzXG4gICAgX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgLy9JbnNlcnRpb24gbW9kZSByZXNldCBtYXBcbiAgICAgICAgICAgIHN3aXRjaCAoaSA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dCA/IHRoaXMuZnJhZ21lbnRDb250ZXh0SUQgOiB0aGlzLm9wZW5FbGVtZW50cy50YWdJRHNbaV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEZPT1Q6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5DQVBUSU9OOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuQ09MR1JPVVA6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkJPRFk6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5TRUxFQ1Q6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KGkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gdGhpcy5oZWFkRWxlbWVudCA/IEluc2VydGlvbk1vZGUuQUZURVJfSEVBRCA6IEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5USDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ0VMTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICB9XG4gICAgX3Jlc2V0SW5zZXJ0aW9uTW9kZUZvclNlbGVjdChzZWxlY3RJZHgpIHtcbiAgICAgICAgaWYgKHNlbGVjdElkeCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzZWxlY3RJZHggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHRuID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDtcbiAgICB9XG4gICAgLy9Gb3N0ZXIgcGFyZW50aW5nXG4gICAgX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyh0bikge1xuICAgICAgICByZXR1cm4gVEFCTEVfU1RSVUNUVVJFX1RBR1MuaGFzKHRuKTtcbiAgICB9XG4gICAgX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkICYmIHRoaXMuX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQpO1xuICAgIH1cbiAgICBfZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVuRWxlbWVudCA9IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLm9wZW5FbGVtZW50cy50YWdJRHNbaV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKG9wZW5FbGVtZW50KSA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50OiB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChvcGVuRWxlbWVudCksIGJlZm9yZUVsZW1lbnQ6IG51bGwgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0UGFyZW50Tm9kZShvcGVuRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhcmVudCwgYmVmb3JlRWxlbWVudDogb3BlbkVsZW1lbnQgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXJlbnQ6IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2kgLSAxXSwgYmVmb3JlRWxlbWVudDogbnVsbCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwYXJlbnQ6IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zWzBdLCBiZWZvcmVFbGVtZW50OiBudWxsIH07XG4gICAgfVxuICAgIF9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKTtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9TcGVjaWFsIGVsZW1lbnRzXG4gICAgX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCwgaWQpIHtcbiAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIFNQRUNJQUxfRUxFTUVOVFNbbnNdLmhhcyhpZCk7XG4gICAgfVxuICAgIG9uQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbk51bGxDaGFyYWN0ZXIodG9rZW4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5pemVyLmluRm9yZWlnbk5vZGUpIHtcbiAgICAgICAgICAgIG51bGxDaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Db21tZW50KHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnROb3RJbkhUTUwpIHtcbiAgICAgICAgICAgIGFwcGVuZENvbW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBhcHBlbmRDb21tZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIGFwcGVuZENvbW1lbnRUb0RvY3VtZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Eb2N0eXBlKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIGRvY3R5cGVJbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIodG9rZW4sIEVSUi5taXNwbGFjZWREb2N0eXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uU3RhcnRUYWcodG9rZW4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICAgICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nICYmICF0b2tlbi5hY2tTZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgdGhpcy5fZXJyKHRva2VuLCBFUlIubm9uVm9pZEh0bWxFbGVtZW50U3RhcnRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgYSBnaXZlbiBzdGFydCB0YWcuXG4gICAgICpcbiAgICAgKiBgb25TdGFydFRhZ2AgY2hlY2tzIGlmIGEgc2VsZi1jbG9zaW5nIHRhZyB3YXMgcmVjb2duaXplZC4gV2hlbiBhIHRva2VuXG4gICAgICogaXMgbW92ZWQgaW5iZXR3ZWVuIG11bHRpcGxlIGluc2VydGlvbiBtb2RlcywgdGhpcyBjaGVjayBmb3Igc2VsZi1jbG9zaW5nXG4gICAgICogY291bGQgbGVhZCB0byBmYWxzZSBwb3NpdGl2ZXMuIFRvIGF2b2lkIHRoaXMsIGBfcHJvY2Vzc1N0YXJ0VGFnYCBpcyB1c2VkXG4gICAgICogZm9yIG5lc3RlZCBjYWxscy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0b2tlbiBUaGUgdG9rZW4gdG8gcHJvY2Vzcy5cbiAgICAgKi9cbiAgICBfcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZFByb2Nlc3NTdGFydFRhZ1Rva2VuSW5Gb3JlaWduQ29udGVudCh0b2tlbikpIHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGFydFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3N0YXJ0VGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0JlZm9yZUh0bWwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdCZWZvcmVIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWROb1NjcmlwdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQWZ0ZXJIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5DYXB0aW9uKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luQ29sdW1uR3JvdXAodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGFibGVCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9ST1c6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luUm93KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkNlbGwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9URU1QTEFURToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5UZW1wbGF0ZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5GcmFtZXNldCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVyRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVyQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQWZ0ZXJBZnRlckZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgb25FbmRUYWcodG9rZW4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB0b2tlbjtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE5vdEluSFRNTCkge1xuICAgICAgICAgICAgZW5kVGFnSW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbmRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQodG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9lbmRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0JlZm9yZUh0bWwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkhlYWROb1NjcmlwdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0FmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luQ2FwdGlvbih0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5Db2x1bW5Hcm91cCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGFibGVCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9ST1c6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblJvdyh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0VMTDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luQ2VsbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5TZWxlY3QodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luU2VsZWN0SW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRlbXBsYXRlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnQWZ0ZXJGcmFtZXNldCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkVvZih0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBlb2ZJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6IHtcbiAgICAgICAgICAgICAgICBlb2ZJblRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9URU1QTEFURToge1xuICAgICAgICAgICAgICAgIGVvZkluVGVtcGxhdGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfRlJBTUVTRVQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHN0b3BQYXJzaW5nKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgb25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLnNraXBOZXh0TmV3TGluZSkge1xuICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5jaGFyQ29kZUF0KDApID09PSB1bmljb2RlLkNPREVfUE9JTlRTLkxJTkVfRkVFRCkge1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbi5jaGFycyA9IHRva2VuLmNoYXJzLnN1YnN0cigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxufVxuLy9BZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGhtXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RyZWUtY29uc3RydWN0aW9uLmh0bWwjYWRvcHRpb25BZ2VuY3kpXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9TdGVwcyA1LTggb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5Gb3JtYXR0aW5nRWxlbWVudEVudHJ5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodG9rZW4udGFnTmFtZSk7XG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ0lEKSkge1xuICAgICAgICAgICAgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbn1cbi8vU3RlcHMgOSBhbmQgMTAgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBsZXQgZnVydGhlc3RCbG9jayA9IG51bGw7XG4gICAgbGV0IGlkeCA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wO1xuICAgIGZvciAoOyBpZHggPj0gMDsgaWR4LS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2lkeF07XG4gICAgICAgIGlmIChlbGVtZW50ID09PSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQsIHAub3BlbkVsZW1lbnRzLnRhZ0lEc1tpZHhdKSkge1xuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnNob3J0ZW5Ub0xlbmd0aChpZHggPCAwID8gMCA6IGlkeCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cbiAgICByZXR1cm4gZnVydGhlc3RCbG9jaztcbn1cbi8vU3RlcCAxMyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudCkge1xuICAgIGxldCBsYXN0RWxlbWVudCA9IGZ1cnRoZXN0QmxvY2s7XG4gICAgbGV0IG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZnVydGhlc3RCbG9jayk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGVsZW1lbnQgPSBuZXh0RWxlbWVudDsgZWxlbWVudCAhPT0gZm9ybWF0dGluZ0VsZW1lbnQ7IGkrKywgZWxlbWVudCA9IG5leHRFbGVtZW50KSB7XG4gICAgICAgIC8vTk9URTogc3RvcmUgdGhlIG5leHQgZWxlbWVudCBmb3IgdGhlIG5leHQgbG9vcCBpdGVyYXRpb24gKGl0IG1heSBiZSBkZWxldGVkIGZyb20gdGhlIHN0YWNrIGJ5IHN0ZXAgOS41KVxuICAgICAgICBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBlbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnkoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJPdmVyZmxvdyA9IGVsZW1lbnRFbnRyeSAmJiBpID49IEFBX0lOTkVSX0xPT1BfSVRFUjtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cyA9ICFlbGVtZW50RW50cnkgfHwgY291bnRlck92ZXJmbG93O1xuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXJPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGVsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkocCwgZWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGlmIChsYXN0RWxlbWVudCA9PT0gZnVydGhlc3RCbG9jaykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZWxlbWVudEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCwgbGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsYXN0RWxlbWVudDtcbn1cbi8vU3RlcCAxMy43IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVjcmVhdGVFbGVtZW50RnJvbUVudHJ5KHAsIGVsZW1lbnRFbnRyeSkge1xuICAgIGNvbnN0IG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBwLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoZWxlbWVudEVudHJ5LnRva2VuLnRhZ05hbWUsIG5zLCBlbGVtZW50RW50cnkudG9rZW4uYXR0cnMpO1xuICAgIHAub3BlbkVsZW1lbnRzLnJlcGxhY2UoZWxlbWVudEVudHJ5LmVsZW1lbnQsIG5ld0VsZW1lbnQpO1xuICAgIGVsZW1lbnRFbnRyeS5lbGVtZW50ID0gbmV3RWxlbWVudDtcbiAgICByZXR1cm4gbmV3RWxlbWVudDtcbn1cbi8vU3RlcCAxNCBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvcihwLCBjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpIHtcbiAgICBjb25zdCB0biA9IHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShjb21tb25BbmNlc3Rvcik7XG4gICAgY29uc3QgdGlkID0gZ2V0VGFnSUQodG4pO1xuICAgIGlmIChwLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGlkKSkge1xuICAgICAgICBwLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGxhc3RFbGVtZW50KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICBpZiAodGlkID09PSAkLlRFTVBMQVRFICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IHAudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KGNvbW1vbkFuY2VzdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCk7XG4gICAgfVxufVxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IHsgdG9rZW4gfSA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHAudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBucywgdG9rZW4uYXR0cnMpO1xuICAgIHAuX2Fkb3B0Tm9kZXMoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG4gICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50KTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCB0b2tlbik7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgcC5vcGVuRWxlbWVudHMuaW5zZXJ0QWZ0ZXIoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCwgdG9rZW4udGFnSUQpO1xufVxuLy9BbGdvcml0aG0gZW50cnkgcG9pbnRcbmZ1bmN0aW9uIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQUFfT1VURVJfTE9PUF9JVEVSOyBpKyspIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbik7XG4gICAgICAgIGlmICghZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZnVydGhlc3RCbG9jayA9IGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG4gICAgICAgIGNvbnN0IGxhc3RFbGVtZW50ID0gYWFJbm5lckxvb3AocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tbW9uQW5jZXN0b3IgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3Rvcihmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xuICAgICAgICBpZiAoY29tbW9uQW5jZXN0b3IpXG4gICAgICAgICAgICBhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvcihwLCBjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgICAgICBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICB9XG59XG4vL0dlbmVyaWMgdG9rZW4gaGFuZGxlcnNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBhcHBlbmRDb21tZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5vcGVuRWxlbWVudHMuaXRlbXNbMF0pO1xufVxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5kb2N1bWVudCk7XG59XG5mdW5jdGlvbiBzdG9wUGFyc2luZyhwLCB0b2tlbikge1xuICAgIHAuc3RvcHBlZCA9IHRydWU7XG4gICAgLy8gTk9URTogU2V0IGVuZCBsb2NhdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgcmVtYWluIG9uIHRoZSBvcGVuIGVsZW1lbnQgc3RhY2suXG4gICAgaWYgKHRva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgIC8vIE5PVEU6IElmIHdlIGFyZSBub3QgaW4gYSBmcmFnbWVudCwgYGh0bWxgIGFuZCBgYm9keWAgd2lsbCBzdGF5IG9uIHRoZSBzdGFjay5cbiAgICAgICAgLy8gVGhpcyBpcyBhIHByb2JsZW0sIGFzIHdlIG1pZ2h0IG92ZXJ3cml0ZSB0aGVpciBlbmQgcG9zaXRpb24gaGVyZS5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gcC5mcmFnbWVudENvbnRleHQgPyAwIDogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IHRhcmdldDsgaS0tKSB7XG4gICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihwLm9wZW5FbGVtZW50cy5pdGVtc1tpXSwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEhhbmRsZSBgaHRtbGAgYW5kIGBib2R5YFxuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0ICYmIHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbMF07XG4gICAgICAgICAgICBjb25zdCBodG1sTG9jYXRpb24gPSBwLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oaHRtbEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGh0bWxMb2NhdGlvbiAmJiAhaHRtbExvY2F0aW9uLmVuZFRhZykge1xuICAgICAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKGh0bWxFbGVtZW50LCB0b2tlbik7XG4gICAgICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keUxvY2F0aW9uID0gcC50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGJvZHlFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHlMb2NhdGlvbiAmJiAhYm9keUxvY2F0aW9uLmVuZFRhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oYm9keUVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluaXRpYWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGRvY3R5cGVJbkluaXRpYWxNb2RlKHAsIHRva2VuKSB7XG4gICAgcC5fc2V0RG9jdW1lbnRUeXBlKHRva2VuKTtcbiAgICBjb25zdCBtb2RlID0gdG9rZW4uZm9yY2VRdWlya3MgPyBET0NVTUVOVF9NT0RFLlFVSVJLUyA6IGRvY3R5cGUuZ2V0RG9jdW1lbnRNb2RlKHRva2VuKTtcbiAgICBpZiAoIWRvY3R5cGUuaXNDb25mb3JtaW5nKHRva2VuKSkge1xuICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5ub25Db25mb3JtaW5nRG9jdHlwZSk7XG4gICAgfVxuICAgIHAudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQsIG1vZGUpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw7XG59XG5mdW5jdGlvbiB0b2tlbkluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIodG9rZW4sIEVSUi5taXNzaW5nRG9jdHlwZSwgdHJ1ZSk7XG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgRE9DVU1FTlRfTU9ERS5RVUlSS1MpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cbi8vIFRoZSBcImJlZm9yZSBodG1sXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuSEVBRCB8fCB0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkJSKSB7XG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZVJvb3RFbGVtZW50KCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmICh0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5CUikge1xuICAgICAgICB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLkhFQUQsICQuSEVBRCk7XG4gICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CQVNFOlxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuTElOSzpcbiAgICAgICAgY2FzZSAkLk1FVEE6IHtcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRJVExFOiB7XG4gICAgICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJDREFUQSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuUkFXVEVYVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOlxuICAgICAgICBjYXNlICQuU1RZTEU6IHtcbiAgICAgICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuUkFXVEVYVCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuU0NSSVBUOiB7XG4gICAgICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlNDUklQVF9EQVRBKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgcC5faW5zZXJ0VGVtcGxhdGUodG9rZW4pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sudW5zaGlmdChJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5taXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5CUjpcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHRva2VuSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSgpO1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkICE9PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5jbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5URU1QTEFURSk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFjay5zaGlmdCgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gaGVhZCBubyBzY3JpcHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuSEVBRDpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TVFlMRToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PU0NSSVBUOiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5uZXN0ZWROb3NjcmlwdEluSGVhZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luSGVhZE5vU2NyaXB0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJSOiB7XG4gICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBjb25zdCBlcnJDb2RlID0gdG9rZW4udHlwZSA9PT0gVG9rZW5UeXBlLkVPRiA/IEVSUi5vcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2YgOiBFUlIuZGlzYWxsb3dlZENvbnRlbnRJbk5vc2NyaXB0SW5IZWFkO1xuICAgIHAuX2Vycih0b2tlbiwgZXJyQ29kZSk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJhZnRlciBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkZSQU1FU0VUOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQkFTRTpcbiAgICAgICAgY2FzZSAkLkJBU0VGT05UOlxuICAgICAgICBjYXNlICQuQkdTT1VORDpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOlxuICAgICAgICBjYXNlICQuVElUTEU6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGQpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucHVzaChwLmhlYWRFbGVtZW50LCAkLkhFQUQpO1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkhUTUw6XG4gICAgICAgIGNhc2UgJC5CUjoge1xuICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkFmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLkJPRFksICQuQk9EWSk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gbW9kZUluQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgIGNoYXJhY3RlckluQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFRva2VuVHlwZS5DT01NRU5UOiB7XG4gICAgICAgICAgICBhcHBlbmRDb21tZW50KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLlNUQVJUX1RBRzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUb2tlblR5cGUuRU5EX1RBRzoge1xuICAgICAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLkVPRjoge1xuICAgICAgICAgICAgZW9mSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cbmZ1bmN0aW9uIGNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKHAub3BlbkVsZW1lbnRzLml0ZW1zWzBdLCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuZnVuY3Rpb24gYm9keVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuICAgIGlmIChib2R5RWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKGJvZHlFbGVtZW50LCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZnJhbWVzZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcbiAgICBpZiAocC5mcmFtZXNldE9rICYmIGJvZHlFbGVtZW50KSB7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShib2R5RWxlbWVudCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcEFsbFVwVG9IdG1sRWxlbWVudCgpO1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIGlmIChpc051bWJlcmVkSGVhZGVyKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gcHJlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiBwcmUgYmxvY2tzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgaWYgKCFwLmZvcm1FbGVtZW50IHx8IGluVGVtcGxhdGUpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBpZiAoIWluVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHAuZm9ybUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gbGlzdEl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgIGlmICgodG4gPT09ICQuTEkgJiYgZWxlbWVudElkID09PSAkLkxJKSB8fFxuICAgICAgICAgICAgKCh0biA9PT0gJC5ERCB8fCB0biA9PT0gJC5EVCkgJiYgKGVsZW1lbnRJZCA9PT0gJC5ERCB8fCBlbGVtZW50SWQgPT09ICQuRFQpKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oZWxlbWVudElkKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChlbGVtZW50SWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRJZCAhPT0gJC5BRERSRVNTICYmXG4gICAgICAgICAgICBlbGVtZW50SWQgIT09ICQuRElWICYmXG4gICAgICAgICAgICBlbGVtZW50SWQgIT09ICQuUCAmJlxuICAgICAgICAgICAgcC5faXNTcGVjaWFsRWxlbWVudChwLm9wZW5FbGVtZW50cy5pdGVtc1tpXSwgZWxlbWVudElkKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlBMQUlOVEVYVDtcbn1cbmZ1bmN0aW9uIGJ1dHRvblN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5CVVRUT04pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuQlVUVE9OKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRFbnRyeSA9IHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZShUTi5BKTtcbiAgICBpZiAoYWN0aXZlRWxlbWVudEVudHJ5KSB7XG4gICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShhY3RpdmVFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGFjdGl2ZUVsZW1lbnRFbnRyeSk7XG4gICAgfVxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5mdW5jdGlvbiBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLnRyZWVBZGFwdGVyLmdldERvY3VtZW50TW9kZShwLmRvY3VtZW50KSAhPT0gRE9DVU1FTlRfTU9ERS5RVUlSS1MgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbn1cbmZ1bmN0aW9uIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gaXNIaWRkZW5JbnB1dCh0b2tlbikge1xuICAgIGNvbnN0IGlucHV0VHlwZSA9IGdldFRva2VuQXR0cih0b2tlbiwgQVRUUlMuVFlQRSk7XG4gICAgcmV0dXJuIGlucHV0VHlwZSAhPSBudWxsICYmIGlucHV0VHlwZS50b0xvd2VyQ2FzZSgpID09PSBISURERU5fSU5QVVRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlucHV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIGlmICghaXNIaWRkZW5JbnB1dCh0b2tlbikpIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHBhcmFtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGltYWdlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICB0b2tlbi50YWdOYW1lID0gVE4uSU1HO1xuICAgIHRva2VuLnRhZ0lEID0gJC5JTUc7XG4gICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIHRleHRhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAvL05PVEU6IElmIHRoZSBuZXh0IHRva2VuIGlzIGEgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlciB0b2tlbiwgdGhlbiBpZ25vcmUgdGhhdCB0b2tlbiBhbmQgbW92ZVxuICAgIC8vb24gdG8gdGhlIG5leHQgb25lLiAoTmV3bGluZXMgYXQgdGhlIHN0YXJ0IG9mIHRleHRhcmVhIGVsZW1lbnRzIGFyZSBpZ25vcmVkIGFzIGFuIGF1dGhvcmluZyBjb252ZW5pZW5jZS4pXG4gICAgcC5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgIHAudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyTW9kZS5SQ0RBVEE7XG4gICAgcC5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBwLmluc2VydGlvbk1vZGU7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5URVhUO1xufVxuZnVuY3Rpb24geG1wU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuZnVuY3Rpb24gaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHdlIGFsd2F5cyBhY3QgYXMgYW4gdXNlciBhZ2VudCB3aXRoIGVuYWJsZWQgcGx1Z2lucywgc28gd2UgcGFyc2Vcbi8vPG5vZW1iZWQ+IGFzIHJhd3RleHQuXG5mdW5jdGlvbiBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuZnVuY3Rpb24gc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRSB8fFxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT04gfHxcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZIHx8XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fUk9XIHx8XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fQ0VMTFxuICAgICAgICAgICAgPyBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRVxuICAgICAgICAgICAgOiBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDtcbn1cbmZ1bmN0aW9uIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLk9QVElPTikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLlJVQlkpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLlJUQyk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuTUFUSE1MKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLk1BVEhNTCk7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLlNWRyk7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBzdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkk6XG4gICAgICAgIGNhc2UgJC5TOlxuICAgICAgICBjYXNlICQuQjpcbiAgICAgICAgY2FzZSAkLlU6XG4gICAgICAgIGNhc2UgJC5FTTpcbiAgICAgICAgY2FzZSAkLlRUOlxuICAgICAgICBjYXNlICQuQklHOlxuICAgICAgICBjYXNlICQuQ09ERTpcbiAgICAgICAgY2FzZSAkLkZPTlQ6XG4gICAgICAgIGNhc2UgJC5TTUFMTDpcbiAgICAgICAgY2FzZSAkLlNUUklLRTpcbiAgICAgICAgY2FzZSAkLlNUUk9ORzoge1xuICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5BOiB7XG4gICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkgxOlxuICAgICAgICBjYXNlICQuSDI6XG4gICAgICAgIGNhc2UgJC5IMzpcbiAgICAgICAgY2FzZSAkLkg0OlxuICAgICAgICBjYXNlICQuSDU6XG4gICAgICAgIGNhc2UgJC5INjoge1xuICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUDpcbiAgICAgICAgY2FzZSAkLkRMOlxuICAgICAgICBjYXNlICQuT0w6XG4gICAgICAgIGNhc2UgJC5VTDpcbiAgICAgICAgY2FzZSAkLkRJVjpcbiAgICAgICAgY2FzZSAkLkRJUjpcbiAgICAgICAgY2FzZSAkLk5BVjpcbiAgICAgICAgY2FzZSAkLk1BSU46XG4gICAgICAgIGNhc2UgJC5NRU5VOlxuICAgICAgICBjYXNlICQuQVNJREU6XG4gICAgICAgIGNhc2UgJC5DRU5URVI6XG4gICAgICAgIGNhc2UgJC5GSUdVUkU6XG4gICAgICAgIGNhc2UgJC5GT09URVI6XG4gICAgICAgIGNhc2UgJC5IRUFERVI6XG4gICAgICAgIGNhc2UgJC5IR1JPVVA6XG4gICAgICAgIGNhc2UgJC5ESUFMT0c6XG4gICAgICAgIGNhc2UgJC5ERVRBSUxTOlxuICAgICAgICBjYXNlICQuQUREUkVTUzpcbiAgICAgICAgY2FzZSAkLkFSVElDTEU6XG4gICAgICAgIGNhc2UgJC5TRUNUSU9OOlxuICAgICAgICBjYXNlICQuU1VNTUFSWTpcbiAgICAgICAgY2FzZSAkLkZJRUxEU0VUOlxuICAgICAgICBjYXNlICQuQkxPQ0tRVU9URTpcbiAgICAgICAgY2FzZSAkLkZJR0NBUFRJT046IHtcbiAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTEk6XG4gICAgICAgIGNhc2UgJC5ERDpcbiAgICAgICAgY2FzZSAkLkRUOiB7XG4gICAgICAgICAgICBsaXN0SXRlbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CUjpcbiAgICAgICAgY2FzZSAkLklNRzpcbiAgICAgICAgY2FzZSAkLldCUjpcbiAgICAgICAgY2FzZSAkLkFSRUE6XG4gICAgICAgIGNhc2UgJC5FTUJFRDpcbiAgICAgICAgY2FzZSAkLktFWUdFTjoge1xuICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IUjoge1xuICAgICAgICAgICAgaHJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUkI6XG4gICAgICAgIGNhc2UgJC5SVEM6IHtcbiAgICAgICAgICAgIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlJUOlxuICAgICAgICBjYXNlICQuUlA6IHtcbiAgICAgICAgICAgIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlBSRTpcbiAgICAgICAgY2FzZSAkLkxJU1RJTkc6IHtcbiAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5YTVA6IHtcbiAgICAgICAgICAgIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TVkc6IHtcbiAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJBU0U6XG4gICAgICAgIGNhc2UgJC5MSU5LOlxuICAgICAgICBjYXNlICQuTUVUQTpcbiAgICAgICAgY2FzZSAkLlNUWUxFOlxuICAgICAgICBjYXNlICQuVElUTEU6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6IHtcbiAgICAgICAgICAgIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRk9STToge1xuICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0JSOiB7XG4gICAgICAgICAgICBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk1BVEg6IHtcbiAgICAgICAgICAgIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklOUFVUOiB7XG4gICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5QQVJBTTpcbiAgICAgICAgY2FzZSAkLlRSQUNLOlxuICAgICAgICBjYXNlICQuU09VUkNFOiB7XG4gICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5JTUFHRToge1xuICAgICAgICAgICAgaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQlVUVE9OOiB7XG4gICAgICAgICAgICBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQVBQTEVUOlxuICAgICAgICBjYXNlICQuT0JKRUNUOlxuICAgICAgICBjYXNlICQuTUFSUVVFRToge1xuICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklGUkFNRToge1xuICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlNFTEVDVDoge1xuICAgICAgICAgICAgc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk9QVElPTjpcbiAgICAgICAgY2FzZSAkLk9QVEdST1VQOiB7XG4gICAgICAgICAgICBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0VNQkVEOiB7XG4gICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkZSQU1FU0VUOiB7XG4gICAgICAgICAgICBmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URVhUQVJFQToge1xuICAgICAgICAgICAgdGV4dGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlBMQUlOVEVYVDoge1xuICAgICAgICAgICAgcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5UUjpcbiAgICAgICAgY2FzZSAkLkhFQUQ6XG4gICAgICAgIGNhc2UgJC5GUkFNRTpcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gYm9keUVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZO1xuICAgICAgICAvL05PVEU6IDxib2R5PiBpcyBuZXZlciBwb3BwZWQgZnJvbSB0aGUgc3RhY2ssIHNvIHdlIG5lZWQgdG8gdXBkYXRlZFxuICAgICAgICAvL3RoZSBlbmQgbG9jYXRpb24gZXhwbGljaXRseS5cbiAgICAgICAgaWYgKHAub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAoYm9keUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihib2R5RWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZO1xuICAgICAgICBlbmRUYWdBZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgfVxufVxuZnVuY3Rpb24gZm9ybUVuZFRhZ0luQm9keShwKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgY29uc3QgeyBmb3JtRWxlbWVudCB9ID0gcDtcbiAgICBpZiAoIWluVGVtcGxhdGUpIHtcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmICgoZm9ybUVsZW1lbnQgfHwgaW5UZW1wbGF0ZSkgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLkZPUk0pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgaWYgKGluVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkZPUk0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZvcm1FbGVtZW50KSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gcEVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uUCwgJC5QKTtcbiAgICB9XG4gICAgcC5fY2xvc2VQRWxlbWVudCgpO1xufVxuZnVuY3Rpb24gbGlFbmRUYWdJbkJvZHkocCkge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkxpc3RJdGVtU2NvcGUoJC5MSSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5MSSk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkxJKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRuKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBudW1iZXJlZEhlYWRlckVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc051bWJlcmVkSGVhZGVySW5TY29wZSgpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxOdW1iZXJlZEhlYWRlclBvcHBlZCgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBickVuZFRhZ0luQm9keShwKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChUTi5CUiwgJC5CUik7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdOYW1lO1xuICAgIGNvbnN0IHRpZCA9IHRva2VuLnRhZ0lEO1xuICAgIGZvciAobGV0IGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG4gICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IHAub3BlbkVsZW1lbnRzLnRhZ0lEc1tpXTtcbiAgICAgICAgLy8gQ29tcGFyZSB0aGUgdGFnIG5hbWUgaGVyZSwgYXMgdGhlIHRhZyBtaWdodCBub3QgYmUgYSBrbm93biB0YWcgd2l0aCBhbiBJRC5cbiAgICAgICAgaWYgKHRpZCA9PT0gZWxlbWVudElkICYmICh0aWQgIT09ICQuVU5LTk9XTiB8fCBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCkgPT09IHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24odGlkKTtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5zdGFja1RvcCA+PSBpKVxuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnNob3J0ZW5Ub0xlbmd0aChpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRJZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuQTpcbiAgICAgICAgY2FzZSAkLkI6XG4gICAgICAgIGNhc2UgJC5JOlxuICAgICAgICBjYXNlICQuUzpcbiAgICAgICAgY2FzZSAkLlU6XG4gICAgICAgIGNhc2UgJC5FTTpcbiAgICAgICAgY2FzZSAkLlRUOlxuICAgICAgICBjYXNlICQuQklHOlxuICAgICAgICBjYXNlICQuQ09ERTpcbiAgICAgICAgY2FzZSAkLkZPTlQ6XG4gICAgICAgIGNhc2UgJC5OT0JSOlxuICAgICAgICBjYXNlICQuU01BTEw6XG4gICAgICAgIGNhc2UgJC5TVFJJS0U6XG4gICAgICAgIGNhc2UgJC5TVFJPTkc6IHtcbiAgICAgICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUDoge1xuICAgICAgICAgICAgcEVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5ETDpcbiAgICAgICAgY2FzZSAkLlVMOlxuICAgICAgICBjYXNlICQuT0w6XG4gICAgICAgIGNhc2UgJC5ESVI6XG4gICAgICAgIGNhc2UgJC5ESVY6XG4gICAgICAgIGNhc2UgJC5OQVY6XG4gICAgICAgIGNhc2UgJC5QUkU6XG4gICAgICAgIGNhc2UgJC5NQUlOOlxuICAgICAgICBjYXNlICQuTUVOVTpcbiAgICAgICAgY2FzZSAkLkFTSURFOlxuICAgICAgICBjYXNlICQuQlVUVE9OOlxuICAgICAgICBjYXNlICQuQ0VOVEVSOlxuICAgICAgICBjYXNlICQuRklHVVJFOlxuICAgICAgICBjYXNlICQuRk9PVEVSOlxuICAgICAgICBjYXNlICQuSEVBREVSOlxuICAgICAgICBjYXNlICQuSEdST1VQOlxuICAgICAgICBjYXNlICQuRElBTE9HOlxuICAgICAgICBjYXNlICQuQUREUkVTUzpcbiAgICAgICAgY2FzZSAkLkFSVElDTEU6XG4gICAgICAgIGNhc2UgJC5ERVRBSUxTOlxuICAgICAgICBjYXNlICQuU0VDVElPTjpcbiAgICAgICAgY2FzZSAkLlNVTU1BUlk6XG4gICAgICAgIGNhc2UgJC5MSVNUSU5HOlxuICAgICAgICBjYXNlICQuRklFTERTRVQ6XG4gICAgICAgIGNhc2UgJC5CTE9DS1FVT1RFOlxuICAgICAgICBjYXNlICQuRklHQ0FQVElPTjoge1xuICAgICAgICAgICAgYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTEk6IHtcbiAgICAgICAgICAgIGxpRW5kVGFnSW5Cb2R5KHApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkREOlxuICAgICAgICBjYXNlICQuRFQ6IHtcbiAgICAgICAgICAgIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IMTpcbiAgICAgICAgY2FzZSAkLkgyOlxuICAgICAgICBjYXNlICQuSDM6XG4gICAgICAgIGNhc2UgJC5INDpcbiAgICAgICAgY2FzZSAkLkg1OlxuICAgICAgICBjYXNlICQuSDY6IHtcbiAgICAgICAgICAgIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJSOiB7XG4gICAgICAgICAgICBickVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOiB7XG4gICAgICAgICAgICBib2R5RW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBodG1sRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5GT1JNOiB7XG4gICAgICAgICAgICBmb3JtRW5kVGFnSW5Cb2R5KHApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkFQUExFVDpcbiAgICAgICAgY2FzZSAkLk9CSkVDVDpcbiAgICAgICAgY2FzZSAkLk1BUlFVRUU6IHtcbiAgICAgICAgICAgIGFwcGxldEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW9mSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAudG1wbEluc2VydGlvbk1vZGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVvZkluVGVtcGxhdGUocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RvcFBhcnNpbmcocCwgdG9rZW4pO1xuICAgIH1cbn1cbi8vIFRoZSBcInRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGVuZFRhZ0luVGV4dChwLCB0b2tlbikge1xuICAgIHZhciBfYTtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuU0NSSVBUKSB7XG4gICAgICAgIChfYSA9IHAuc2NyaXB0SGFuZGxlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocCwgcC5vcGVuRWxlbWVudHMuY3VycmVudCk7XG4gICAgfVxuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xufVxuZnVuY3Rpb24gZW9mSW5UZXh0KHAsIHRva2VuKSB7XG4gICAgcC5fZXJyKHRva2VuLCBFUlIuZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dCk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG4gICAgcC5vbkVvZih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiB0YWJsZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gY2hhcmFjdGVySW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChUQUJMRV9TVFJVQ1RVUkVfVEFHUy5oYXMocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkKSkge1xuICAgICAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoID0gMDtcbiAgICAgICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG4gICAgICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ7XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWdub3JlIG51bGxcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjYXB0aW9uU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT047XG59XG5mdW5jdGlvbiBjb2xncm91cFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG59XG5mdW5jdGlvbiBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLkNPTEdST1VQLCAkLkNPTEdST1VQKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDtcbiAgICBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gdGJvZHlTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbn1cbmZ1bmN0aW9uIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChUTi5UQk9EWSwgJC5UQk9EWSk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgIHN0YXJ0VGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gdGFibGVTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRBQkxFKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NTdGFydFRhZyh0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gaW5wdXRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAoaXNIaWRkZW5JbnB1dCh0b2tlbikpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgaWYgKCFwLmZvcm1FbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgdGRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlNUWUxFOlxuICAgICAgICBjYXNlICQuU0NSSVBUOlxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0w6IHtcbiAgICAgICAgICAgIGNvbFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRk9STToge1xuICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6IHtcbiAgICAgICAgICAgIHRib2R5U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5JTlBVVDoge1xuICAgICAgICAgICAgaW5wdXRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNBUFRJT046IHtcbiAgICAgICAgICAgIGNhcHRpb25TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOiB7XG4gICAgICAgICAgICBjb2xncm91cFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEFCTEUpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEFCTEUpO1xuICAgICAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLkhUTUw6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOlxuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGUgPSBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQ7XG4gICAgcC5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAvLyBQcm9jZXNzIHRva2VuIGluIGBJbiBCb2R5YCBtb2RlXG4gICAgbW9kZUluQm9keShwLCB0b2tlbik7XG4gICAgcC5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkID0gc2F2ZWRGb3N0ZXJQYXJlbnRpbmdTdGF0ZTtcbn1cbi8vIFRoZSBcImluIHRhYmxlIHRleHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbn1cbmZ1bmN0aW9uIGNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKSB7XG4gICAgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLnB1c2godG9rZW4pO1xuICAgIHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IHRydWU7XG59XG5mdW5jdGlvbiB0b2tlbkluVGFibGVUZXh0KHAsIHRva2VuKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGlmIChwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmb3IgKDsgaSA8IHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcC5faW5zZXJ0Q2hhcmFjdGVycyhwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBjYXB0aW9uXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBUQUJMRV9WT0lEX0VMRU1FTlRTID0gbmV3IFNldChbJC5DQVBUSU9OLCAkLkNPTCwgJC5DT0xHUk9VUCwgJC5UQk9EWSwgJC5URCwgJC5URk9PVCwgJC5USCwgJC5USEVBRCwgJC5UUl0pO1xuZnVuY3Rpb24gc3RhcnRUYWdJbkNhcHRpb24ocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmIChUQUJMRV9WT0lEX0VMRU1FTlRTLmhhcyh0bikpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLkNBUFRJT04pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luQ2FwdGlvbihwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgc3dpdGNoICh0bikge1xuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLlRBQkxFOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuQ0FQVElPTikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuQ0FQVElPTik7XG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQUJMRSkge1xuICAgICAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuSFRNTDpcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gY29sdW1uIGdyb3VwXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ09MOiB7XG4gICAgICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0w6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuQ09MR1JPVVApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gdGFibGUgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5URDoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChUTi5UUiwgJC5UUik7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUoKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblRhYmxlQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5IVE1MOlxuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gcm93XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luUm93KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5URDoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DRUxMO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOlxuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblJvdyhwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVFIpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRva2VuLnRhZ0lEKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLkhUTUw6XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRIOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgZW5kIHRhZ1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGUgXCJpbiBjZWxsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKFRBQkxFX1ZPSURfRUxFTUVOVFMuaGFzKHRuKSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEQpIHx8IHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRIKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VUYWJsZUNlbGwoKTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5DZWxsKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBzd2l0Y2ggKHRuKSB7XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRIOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEFCTEU6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luUm93KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOlxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gc2VsZWN0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk9QVElPTjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk9QVEdST1VQOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuSU5QVVQ6XG4gICAgICAgIGNhc2UgJC5LRVlHRU46XG4gICAgICAgIGNhc2UgJC5URVhUQVJFQTpcbiAgICAgICAgY2FzZSAkLlNFTEVDVDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2VsZWN0U2NvcGUoJC5TRUxFQ1QpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4udGFnSUQgIT09ICQuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuX3Byb2Nlc3NTdGFydFRhZyh0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlNDUklQVDpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5PUFRHUk9VUDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID4gMCAmJlxuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04gJiZcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy50YWdJRHNbcC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgLSAxXSA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRHUk9VUCkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk9QVElPTjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TRUxFQ1Q6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG4vLyBUaGUgXCJpbiBzZWxlY3QgaW4gdGFibGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAodG4gPT09ICQuQ0FQVElPTiB8fFxuICAgICAgICB0biA9PT0gJC5UQUJMRSB8fFxuICAgICAgICB0biA9PT0gJC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gJC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gJC5USEVBRCB8fFxuICAgICAgICB0biA9PT0gJC5UUiB8fFxuICAgICAgICB0biA9PT0gJC5URCB8fFxuICAgICAgICB0biA9PT0gJC5USCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luU2VsZWN0SW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuVEFCTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFIgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHxcbiAgICAgICAgdG4gPT09ICQuVEgpIHtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIHAub25FbmRUYWcodG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBlbmRUYWdJblNlbGVjdChwLCB0b2tlbik7XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gdGVtcGxhdGVcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgLy8gRmlyc3QsIGhhbmRsZSB0YWdzIHRoYXQgY2FuIHN0YXJ0IHdpdGhvdXQgYSBtb2RlIGNoYW5nZVxuICAgICAgICBjYXNlICQuQkFTRTpcbiAgICAgICAgY2FzZSAkLkJBU0VGT05UOlxuICAgICAgICBjYXNlICQuQkdTT1VORDpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOlxuICAgICAgICBjYXNlICQuVElUTEU6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlLXByb2Nlc3MgdGhlIHRva2VuIGluIHRoZSBhcHByb3ByaWF0ZSBtb2RlXG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0w6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG4gICAgICAgICAgICBzdGFydFRhZ0luQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRIOiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgc3RhcnRUYWdJblJvdyhwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEVNUExBVEUpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2suc2hpZnQoKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAub25Fb2YodG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RvcFBhcnNpbmcocCwgdG9rZW4pO1xuICAgIH1cbn1cbi8vIFRoZSBcImFmdGVyIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHZhciBfYTtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0KSB7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk7XG4gICAgICAgIH1cbiAgICAgICAgLy9OT1RFOiA8aHRtbD4gaXMgbmV2ZXIgcG9wcGVkIGZyb20gdGhlIHN0YWNrLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZWRcbiAgICAgICAgLy90aGUgZW5kIGxvY2F0aW9uIGV4cGxpY2l0bHkuXG4gICAgICAgIGlmIChwLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbyAmJiBwLm9wZW5FbGVtZW50cy50YWdJRHNbMF0gPT09ICQuSFRNTCkge1xuICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24ocC5vcGVuRWxlbWVudHMuaXRlbXNbMF0sIHRva2VuKTtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgYm9keSBlbGVtZW50LCBpZiBpdCBkb2Vzbid0IGhhdmUgYW4gZW5kIHRhZ1xuICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1sxXTtcbiAgICAgICAgICAgIGlmIChib2R5RWxlbWVudCAmJiAhKChfYSA9IHAudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihib2R5RWxlbWVudCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5lbmRUYWcpKSB7XG4gICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oYm9keUVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5GcmFtZXNldChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5GUkFNRVNFVDoge1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRlJBTUU6IHtcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5GcmFtZXNldChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5GUkFNRVNFVCAmJiAhcC5vcGVuRWxlbWVudHMuaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkICE9PSAkLkZSQU1FU0VUKSB7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiYWZ0ZXIgZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJGcmFtZXNldChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUO1xuICAgIH1cbn1cbi8vIFRoZSBcImFmdGVyIGFmdGVyIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xufVxuLy8gVGhlIFwiYWZ0ZXIgYWZ0ZXIgZnJhbWVzZXRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQWZ0ZXJBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuLy8gVGhlIHJ1bGVzIGZvciBwYXJzaW5nIHRva2VucyBpbiBmb3JlaWduIGNvbnRlbnRcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHRva2VuLmNoYXJzID0gdW5pY29kZS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBwb3BVbnRpbEh0bWxPckludGVncmF0aW9uUG9pbnQocCkge1xuICAgIHdoaWxlIChwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShwLm9wZW5FbGVtZW50cy5jdXJyZW50KSAhPT0gTlMuSFRNTCAmJlxuICAgICAgICAhcC5faXNJbnRlZ3JhdGlvblBvaW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCwgcC5vcGVuRWxlbWVudHMuY3VycmVudCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHAsIHRva2VuKSB7XG4gICAgaWYgKGZvcmVpZ25Db250ZW50LmNhdXNlc0V4aXQodG9rZW4pKSB7XG4gICAgICAgIHBvcFVudGlsSHRtbE9ySW50ZWdyYXRpb25Qb2ludChwKTtcbiAgICAgICAgcC5fc3RhcnRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQodG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHAuX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCk7XG4gICAgICAgIGlmIChjdXJyZW50TnMgPT09IE5TLk1BVEhNTCkge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudE5zID09PSBOUy5TVkcpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuU1ZHVGFnTmFtZSh0b2tlbik7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICAgICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBjdXJyZW50TnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfVxuICAgICAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5QIHx8IHRva2VuLnRhZ0lEID09PSAkLkJSKSB7XG4gICAgICAgIHBvcFVudGlsSHRtbE9ySW50ZWdyYXRpb25Qb2ludChwKTtcbiAgICAgICAgcC5fZW5kVGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBpZiAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgIHAuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWdOYW1lID0gcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpO1xuICAgICAgICBpZiAodGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0b2tlbi50YWdOYW1lKSB7XG4gICAgICAgICAgICAvL05PVEU6IHVwZGF0ZSB0aGUgdG9rZW4gdGFnIG5hbWUgZm9yIGBfc2V0RW5kTG9jYXRpb25gLlxuICAgICAgICAgICAgdG9rZW4udGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5zaG9ydGVuVG9MZW5ndGgoaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJUb2tlbml6ZXIiLCJUb2tlbml6ZXJNb2RlIiwiT3BlbkVsZW1lbnRTdGFjayIsIkZvcm1hdHRpbmdFbGVtZW50TGlzdCIsIkVudHJ5VHlwZSIsImRlZmF1bHRUcmVlQWRhcHRlciIsImRvY3R5cGUiLCJmb3JlaWduQ29udGVudCIsIkVSUiIsInVuaWNvZGUiLCJUQUdfSUQiLCIkIiwiVEFHX05BTUVTIiwiVE4iLCJOUyIsIkFUVFJTIiwiU1BFQ0lBTF9FTEVNRU5UUyIsIkRPQ1VNRU5UX01PREUiLCJpc051bWJlcmVkSGVhZGVyIiwiZ2V0VGFnSUQiLCJUb2tlblR5cGUiLCJnZXRUb2tlbkF0dHIiLCJISURERU5fSU5QVVRfVFlQRSIsIkFBX09VVEVSX0xPT1BfSVRFUiIsIkFBX0lOTkVSX0xPT1BfSVRFUiIsIkluc2VydGlvbk1vZGUiLCJCQVNFX0xPQyIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3RhcnRPZmZzZXQiLCJlbmRMaW5lIiwiZW5kQ29sIiwiZW5kT2Zmc2V0IiwiVEFCTEVfU1RSVUNUVVJFX1RBR1MiLCJTZXQiLCJUQUJMRSIsIlRCT0RZIiwiVEZPT1QiLCJUSEVBRCIsIlRSIiwiZGVmYXVsdFBhcnNlck9wdGlvbnMiLCJzY3JpcHRpbmdFbmFibGVkIiwic291cmNlQ29kZUxvY2F0aW9uSW5mbyIsInRyZWVBZGFwdGVyIiwib25QYXJzZUVycm9yIiwiUGFyc2VyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiZG9jdW1lbnQiLCJmcmFnbWVudENvbnRleHQiLCJzY3JpcHRIYW5kbGVyIiwiY3VycmVudFRva2VuIiwic3RvcHBlZCIsImluc2VydGlvbk1vZGUiLCJJTklUSUFMIiwib3JpZ2luYWxJbnNlcnRpb25Nb2RlIiwiaGVhZEVsZW1lbnQiLCJmb3JtRWxlbWVudCIsImN1cnJlbnROb3RJbkhUTUwiLCJ0bXBsSW5zZXJ0aW9uTW9kZVN0YWNrIiwicGVuZGluZ0NoYXJhY3RlclRva2VucyIsImhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4iLCJmcmFtZXNldE9rIiwic2tpcE5leHROZXdMaW5lIiwiZm9zdGVyUGFyZW50aW5nRW5hYmxlZCIsImNyZWF0ZURvY3VtZW50IiwidG9rZW5pemVyIiwiYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzIiwiZnJhZ21lbnRDb250ZXh0SUQiLCJnZXRUYWdOYW1lIiwiVU5LTk9XTiIsIl9zZXRDb250ZXh0TW9kZXMiLCJvcGVuRWxlbWVudHMiLCJwYXJzZSIsImh0bWwiLCJwYXJzZXIiLCJ3cml0ZSIsImdldEZyYWdtZW50UGFyc2VyIiwib3B0cyIsImNyZWF0ZUVsZW1lbnQiLCJURU1QTEFURSIsIkhUTUwiLCJkb2N1bWVudE1vY2siLCJ1bnNoaWZ0IiwiSU5fVEVNUExBVEUiLCJfaW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZyIsIl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQiLCJfcmVzZXRJbnNlcnRpb25Nb2RlIiwiX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQiLCJnZXRGcmFnbWVudCIsInJvb3RFbGVtZW50IiwiZ2V0Rmlyc3RDaGlsZCIsImZyYWdtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsIl9hZG9wdE5vZGVzIiwiX2VyciIsInRva2VuIiwiY29kZSIsImJlZm9yZVRva2VuIiwiX2EiLCJsb2MiLCJsb2NhdGlvbiIsImVyciIsIm9uSXRlbVB1c2giLCJub2RlIiwidGlkIiwiaXNUb3AiLCJfYiIsImNhbGwiLCJzdGFja1RvcCIsIm9uSXRlbVBvcCIsIl9zZXRFbmRMb2NhdGlvbiIsImN1cnJlbnQiLCJjdXJyZW50VGFnSWQiLCJpc0hUTUwiLCJnZXROYW1lc3BhY2VVUkkiLCJpbkZvcmVpZ25Ob2RlIiwiX2lzSW50ZWdyYXRpb25Qb2ludCIsIl9zd2l0Y2hUb1RleHRQYXJzaW5nIiwibmV4dFRva2VuaXplclN0YXRlIiwiX2luc2VydEVsZW1lbnQiLCJzdGF0ZSIsIlRFWFQiLCJzd2l0Y2hUb1BsYWludGV4dFBhcnNpbmciLCJJTl9CT0RZIiwiUExBSU5URVhUIiwiX2dldEFkanVzdGVkQ3VycmVudEVsZW1lbnQiLCJGT1JNIiwiZ2V0UGFyZW50Tm9kZSIsIlRJVExFIiwiVEVYVEFSRUEiLCJSQ0RBVEEiLCJTVFlMRSIsIlhNUCIsIklGUkFNRSIsIk5PRU1CRUQiLCJOT0ZSQU1FUyIsIk5PU0NSSVBUIiwiUkFXVEVYVCIsIlNDUklQVCIsIlNDUklQVF9EQVRBIiwiX3NldERvY3VtZW50VHlwZSIsIm5hbWUiLCJwdWJsaWNJZCIsInN5c3RlbUlkIiwic2V0RG9jdW1lbnRUeXBlIiwiZG9jdW1lbnRDaGlsZHJlbiIsImdldENoaWxkTm9kZXMiLCJkb2NUeXBlTm9kZSIsImZpbmQiLCJpc0RvY3VtZW50VHlwZU5vZGUiLCJzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uIiwiX2F0dGFjaEVsZW1lbnRUb1RyZWUiLCJlbGVtZW50Iiwic3RhcnRUYWciLCJfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24iLCJfZm9zdGVyUGFyZW50RWxlbWVudCIsInBhcmVudCIsImN1cnJlbnRUbXBsQ29udGVudE9yTm9kZSIsImFwcGVuZENoaWxkIiwiX2FwcGVuZEVsZW1lbnQiLCJuYW1lc3BhY2VVUkkiLCJ0YWdOYW1lIiwiYXR0cnMiLCJwdXNoIiwidGFnSUQiLCJfaW5zZXJ0RmFrZUVsZW1lbnQiLCJfaW5zZXJ0VGVtcGxhdGUiLCJ0bXBsIiwiY29udGVudCIsInNldFRlbXBsYXRlQ29udGVudCIsIl9hcHBlbmRDb21tZW50Tm9kZSIsImNvbW1lbnROb2RlIiwiY3JlYXRlQ29tbWVudE5vZGUiLCJkYXRhIiwiX2luc2VydENoYXJhY3RlcnMiLCJiZWZvcmVFbGVtZW50IiwiX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbiIsImluc2VydFRleHRCZWZvcmUiLCJjaGFycyIsImluc2VydFRleHQiLCJzaWJsaW5ncyIsInRleHROb2RlSWR4IiwibGFzdEluZGV4T2YiLCJsZW5ndGgiLCJ0ZXh0Tm9kZSIsInRuTG9jIiwiZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsInVwZGF0ZU5vZGVTb3VyY2VDb2RlTG9jYXRpb24iLCJkb25vciIsInJlY2lwaWVudCIsImNoaWxkIiwiZGV0YWNoTm9kZSIsImNsb3NpbmdUb2tlbiIsImN0TG9jIiwidG4iLCJlbmRMb2MiLCJ0eXBlIiwiRU5EX1RBRyIsImVuZFRhZyIsInNob3VsZFByb2Nlc3NTdGFydFRhZ1Rva2VuSW5Gb3JlaWduQ29udGVudCIsIlNWRyIsIkFOTk9UQVRJT05fWE1MIiwiTUFUSE1MIiwiTUdMWVBIIiwiTUFMSUdOTUFSSyIsIl9wcm9jZXNzVG9rZW4iLCJDSEFSQUNURVIiLCJvbkNoYXJhY3RlciIsIk5VTExfQ0hBUkFDVEVSIiwib25OdWxsQ2hhcmFjdGVyIiwiQ09NTUVOVCIsIm9uQ29tbWVudCIsIkRPQ1RZUEUiLCJvbkRvY3R5cGUiLCJTVEFSVF9UQUciLCJfcHJvY2Vzc1N0YXJ0VGFnIiwib25FbmRUYWciLCJFT0YiLCJvbkVvZiIsIldISVRFU1BBQ0VfQ0hBUkFDVEVSIiwib25XaGl0ZXNwYWNlQ2hhcmFjdGVyIiwiZm9yZWlnbk5TIiwibnMiLCJnZXRBdHRyTGlzdCIsImlzSW50ZWdyYXRpb25Qb2ludCIsIl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyIsImxpc3RMZW5ndGgiLCJlbnRyaWVzIiwiZW5kSW5kZXgiLCJmaW5kSW5kZXgiLCJlbnRyeSIsIk1hcmtlciIsImNvbnRhaW5zIiwidW5vcGVuSWR4IiwiaSIsIl9jbG9zZVRhYmxlQ2VsbCIsImdlbmVyYXRlSW1wbGllZEVuZFRhZ3MiLCJwb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCIsImNsZWFyVG9MYXN0TWFya2VyIiwiSU5fUk9XIiwiX2Nsb3NlUEVsZW1lbnQiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbiIsIlAiLCJwb3BVbnRpbFRhZ05hbWVQb3BwZWQiLCJ0YWdJRHMiLCJJTl9UQUJMRV9CT0RZIiwiQ0FQVElPTiIsIklOX0NBUFRJT04iLCJDT0xHUk9VUCIsIklOX0NPTFVNTl9HUk9VUCIsIklOX1RBQkxFIiwiQk9EWSIsIkZSQU1FU0VUIiwiSU5fRlJBTUVTRVQiLCJTRUxFQ1QiLCJfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0IiwiQUZURVJfSEVBRCIsIkJFRk9SRV9IRUFEIiwiVEQiLCJUSCIsIklOX0NFTEwiLCJIRUFEIiwiSU5fSEVBRCIsInNlbGVjdElkeCIsIklOX1NFTEVDVF9JTl9UQUJMRSIsIklOX1NFTEVDVCIsIl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmciLCJoYXMiLCJvcGVuRWxlbWVudCIsIml0ZW1zIiwiZ2V0VGVtcGxhdGVDb250ZW50IiwiaW5zZXJ0QmVmb3JlIiwiX2lzU3BlY2lhbEVsZW1lbnQiLCJpZCIsImNoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQiLCJ0b2tlbkluSW5pdGlhbE1vZGUiLCJCRUZPUkVfSFRNTCIsInRva2VuQmVmb3JlSHRtbCIsInRva2VuQmVmb3JlSGVhZCIsInRva2VuSW5IZWFkIiwiSU5fSEVBRF9OT19TQ1JJUFQiLCJ0b2tlbkluSGVhZE5vU2NyaXB0IiwidG9rZW5BZnRlckhlYWQiLCJjaGFyYWN0ZXJJbkJvZHkiLCJjaGFyYWN0ZXJJblRhYmxlIiwiSU5fVEFCTEVfVEVYVCIsImNoYXJhY3RlckluVGFibGVUZXh0IiwidG9rZW5JbkNvbHVtbkdyb3VwIiwiQUZURVJfQk9EWSIsInRva2VuQWZ0ZXJCb2R5IiwiQUZURVJfQUZURVJfQk9EWSIsInRva2VuQWZ0ZXJBZnRlckJvZHkiLCJudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCIsImFwcGVuZENvbW1lbnQiLCJBRlRFUl9GUkFNRVNFVCIsInRva2VuSW5UYWJsZVRleHQiLCJhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQiLCJBRlRFUl9BRlRFUl9GUkFNRVNFVCIsImFwcGVuZENvbW1lbnRUb0RvY3VtZW50IiwiZG9jdHlwZUluSW5pdGlhbE1vZGUiLCJtaXNwbGFjZWREb2N0eXBlIiwib25TdGFydFRhZyIsInNlbGZDbG9zaW5nIiwiYWNrU2VsZkNsb3NpbmciLCJub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQiLCJfc3RhcnRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQiLCJzdGFydFRhZ0JlZm9yZUh0bWwiLCJzdGFydFRhZ0JlZm9yZUhlYWQiLCJzdGFydFRhZ0luSGVhZCIsInN0YXJ0VGFnSW5IZWFkTm9TY3JpcHQiLCJzdGFydFRhZ0FmdGVySGVhZCIsInN0YXJ0VGFnSW5Cb2R5Iiwic3RhcnRUYWdJblRhYmxlIiwic3RhcnRUYWdJbkNhcHRpb24iLCJzdGFydFRhZ0luQ29sdW1uR3JvdXAiLCJzdGFydFRhZ0luVGFibGVCb2R5Iiwic3RhcnRUYWdJblJvdyIsInN0YXJ0VGFnSW5DZWxsIiwic3RhcnRUYWdJblNlbGVjdCIsInN0YXJ0VGFnSW5TZWxlY3RJblRhYmxlIiwic3RhcnRUYWdJblRlbXBsYXRlIiwic3RhcnRUYWdBZnRlckJvZHkiLCJzdGFydFRhZ0luRnJhbWVzZXQiLCJzdGFydFRhZ0FmdGVyRnJhbWVzZXQiLCJzdGFydFRhZ0FmdGVyQWZ0ZXJCb2R5Iiwic3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQiLCJlbmRUYWdJbkZvcmVpZ25Db250ZW50IiwiX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCIsImVuZFRhZ0JlZm9yZUh0bWwiLCJlbmRUYWdCZWZvcmVIZWFkIiwiZW5kVGFnSW5IZWFkIiwiZW5kVGFnSW5IZWFkTm9TY3JpcHQiLCJlbmRUYWdBZnRlckhlYWQiLCJlbmRUYWdJbkJvZHkiLCJlbmRUYWdJblRleHQiLCJlbmRUYWdJblRhYmxlIiwiZW5kVGFnSW5DYXB0aW9uIiwiZW5kVGFnSW5Db2x1bW5Hcm91cCIsImVuZFRhZ0luVGFibGVCb2R5IiwiZW5kVGFnSW5Sb3ciLCJlbmRUYWdJbkNlbGwiLCJlbmRUYWdJblNlbGVjdCIsImVuZFRhZ0luU2VsZWN0SW5UYWJsZSIsImVuZFRhZ0luVGVtcGxhdGUiLCJlbmRUYWdBZnRlckJvZHkiLCJlbmRUYWdJbkZyYW1lc2V0IiwiZW5kVGFnQWZ0ZXJGcmFtZXNldCIsImVvZkluQm9keSIsImVvZkluVGV4dCIsImVvZkluVGVtcGxhdGUiLCJzdG9wUGFyc2luZyIsImNoYXJDb2RlQXQiLCJDT0RFX1BPSU5UUyIsIkxJTkVfRkVFRCIsInN1YnN0ciIsIndoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkiLCJ3aGl0ZXNwYWNlQ2hhcmFjdGVySW5UYWJsZVRleHQiLCJhYU9idGFpbkZvcm1hdHRpbmdFbGVtZW50RW50cnkiLCJwIiwiZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSIsImdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSIsInJlbW92ZUVudHJ5IiwiaGFzSW5TY29wZSIsImdlbmVyaWNFbmRUYWdJbkJvZHkiLCJhYU9idGFpbkZ1cnRoZXN0QmxvY2siLCJmdXJ0aGVzdEJsb2NrIiwiaWR4Iiwic2hvcnRlblRvTGVuZ3RoIiwiYWFJbm5lckxvb3AiLCJmb3JtYXR0aW5nRWxlbWVudCIsImxhc3RFbGVtZW50IiwibmV4dEVsZW1lbnQiLCJnZXRDb21tb25BbmNlc3RvciIsImVsZW1lbnRFbnRyeSIsImdldEVsZW1lbnRFbnRyeSIsImNvdW50ZXJPdmVyZmxvdyIsInNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMiLCJyZW1vdmUiLCJhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeSIsImJvb2ttYXJrIiwibmV3RWxlbWVudCIsInJlcGxhY2UiLCJhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvciIsImNvbW1vbkFuY2VzdG9yIiwiYWFSZXBsYWNlRm9ybWF0dGluZ0VsZW1lbnQiLCJpbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayIsImluc2VydEFmdGVyIiwiY2FsbEFkb3B0aW9uQWdlbmN5IiwidGFyZ2V0IiwiaHRtbEVsZW1lbnQiLCJodG1sTG9jYXRpb24iLCJib2R5RWxlbWVudCIsImJvZHlMb2NhdGlvbiIsIm1vZGUiLCJmb3JjZVF1aXJrcyIsIlFVSVJLUyIsImdldERvY3VtZW50TW9kZSIsImlzQ29uZm9ybWluZyIsIm5vbkNvbmZvcm1pbmdEb2N0eXBlIiwic2V0RG9jdW1lbnRNb2RlIiwibWlzc2luZ0RvY3R5cGUiLCJCUiIsImVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50IiwiQkFTRSIsIkJBU0VGT05UIiwiQkdTT1VORCIsIkxJTksiLCJNRVRBIiwiaW5zZXJ0TWFya2VyIiwibWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudCIsInBvcCIsInRlbXBsYXRlRW5kVGFnSW5IZWFkIiwidG1wbENvdW50IiwiZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkiLCJjbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzIiwic2hpZnQiLCJuZXN0ZWROb3NjcmlwdEluSGVhZCIsImVyckNvZGUiLCJvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2YiLCJkaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWQiLCJhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkIiwibW9kZUluQm9keSIsImh0bWxTdGFydFRhZ0luQm9keSIsImFkb3B0QXR0cmlidXRlcyIsImJvZHlTdGFydFRhZ0luQm9keSIsInRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50IiwiZnJhbWVzZXRTdGFydFRhZ0luQm9keSIsInBvcEFsbFVwVG9IdG1sRWxlbWVudCIsImFkZHJlc3NTdGFydFRhZ0luQm9keSIsImhhc0luQnV0dG9uU2NvcGUiLCJudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5IiwicHJlU3RhcnRUYWdJbkJvZHkiLCJmb3JtU3RhcnRUYWdJbkJvZHkiLCJpblRlbXBsYXRlIiwibGlzdEl0ZW1TdGFydFRhZ0luQm9keSIsImVsZW1lbnRJZCIsIkxJIiwiREQiLCJEVCIsIkFERFJFU1MiLCJESVYiLCJwbGFpbnRleHRTdGFydFRhZ0luQm9keSIsImJ1dHRvblN0YXJ0VGFnSW5Cb2R5IiwiQlVUVE9OIiwiYVN0YXJ0VGFnSW5Cb2R5IiwiYWN0aXZlRWxlbWVudEVudHJ5IiwiQSIsInB1c2hFbGVtZW50IiwiYlN0YXJ0VGFnSW5Cb2R5Iiwibm9iclN0YXJ0VGFnSW5Cb2R5IiwiTk9CUiIsImFwcGxldFN0YXJ0VGFnSW5Cb2R5IiwidGFibGVTdGFydFRhZ0luQm9keSIsImFyZWFTdGFydFRhZ0luQm9keSIsImlzSGlkZGVuSW5wdXQiLCJpbnB1dFR5cGUiLCJUWVBFIiwidG9Mb3dlckNhc2UiLCJpbnB1dFN0YXJ0VGFnSW5Cb2R5IiwicGFyYW1TdGFydFRhZ0luQm9keSIsImhyU3RhcnRUYWdJbkJvZHkiLCJpbWFnZVN0YXJ0VGFnSW5Cb2R5IiwiSU1HIiwidGV4dGFyZWFTdGFydFRhZ0luQm9keSIsInhtcFN0YXJ0VGFnSW5Cb2R5IiwiaWZyYW1lU3RhcnRUYWdJbkJvZHkiLCJub2VtYmVkU3RhcnRUYWdJbkJvZHkiLCJzZWxlY3RTdGFydFRhZ0luQm9keSIsIm9wdGdyb3VwU3RhcnRUYWdJbkJvZHkiLCJPUFRJT04iLCJyYlN0YXJ0VGFnSW5Cb2R5IiwiUlVCWSIsInJ0U3RhcnRUYWdJbkJvZHkiLCJSVEMiLCJtYXRoU3RhcnRUYWdJbkJvZHkiLCJhZGp1c3RUb2tlbk1hdGhNTEF0dHJzIiwiYWRqdXN0VG9rZW5YTUxBdHRycyIsInN2Z1N0YXJ0VGFnSW5Cb2R5IiwiYWRqdXN0VG9rZW5TVkdBdHRycyIsImdlbmVyaWNTdGFydFRhZ0luQm9keSIsIkkiLCJTIiwiQiIsIlUiLCJFTSIsIlRUIiwiQklHIiwiQ09ERSIsIkZPTlQiLCJTTUFMTCIsIlNUUklLRSIsIlNUUk9ORyIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkRMIiwiT0wiLCJVTCIsIkRJUiIsIk5BViIsIk1BSU4iLCJNRU5VIiwiQVNJREUiLCJDRU5URVIiLCJGSUdVUkUiLCJGT09URVIiLCJIRUFERVIiLCJIR1JPVVAiLCJESUFMT0ciLCJERVRBSUxTIiwiQVJUSUNMRSIsIlNFQ1RJT04iLCJTVU1NQVJZIiwiRklFTERTRVQiLCJCTE9DS1FVT1RFIiwiRklHQ0FQVElPTiIsIldCUiIsIkFSRUEiLCJFTUJFRCIsIktFWUdFTiIsIkhSIiwiUkIiLCJSVCIsIlJQIiwiUFJFIiwiTElTVElORyIsIk1BVEgiLCJJTlBVVCIsIlBBUkFNIiwiVFJBQ0siLCJTT1VSQ0UiLCJJTUFHRSIsIkFQUExFVCIsIk9CSkVDVCIsIk1BUlFVRUUiLCJPUFRHUk9VUCIsIkNPTCIsIkZSQU1FIiwiYm9keUVuZFRhZ0luQm9keSIsImh0bWxFbmRUYWdJbkJvZHkiLCJhZGRyZXNzRW5kVGFnSW5Cb2R5IiwiZm9ybUVuZFRhZ0luQm9keSIsInBFbmRUYWdJbkJvZHkiLCJsaUVuZFRhZ0luQm9keSIsImhhc0luTGlzdEl0ZW1TY29wZSIsImRkRW5kVGFnSW5Cb2R5IiwibnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkiLCJoYXNOdW1iZXJlZEhlYWRlckluU2NvcGUiLCJwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkIiwiYXBwbGV0RW5kVGFnSW5Cb2R5IiwiYnJFbmRUYWdJbkJvZHkiLCJlb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0IiwidG9rZW5JblRhYmxlIiwiY2FwdGlvblN0YXJ0VGFnSW5UYWJsZSIsImNsZWFyQmFja1RvVGFibGVDb250ZXh0IiwiY29sZ3JvdXBTdGFydFRhZ0luVGFibGUiLCJjb2xTdGFydFRhZ0luVGFibGUiLCJ0Ym9keVN0YXJ0VGFnSW5UYWJsZSIsInRkU3RhcnRUYWdJblRhYmxlIiwidGFibGVTdGFydFRhZ0luVGFibGUiLCJoYXNJblRhYmxlU2NvcGUiLCJpbnB1dFN0YXJ0VGFnSW5UYWJsZSIsImZvcm1TdGFydFRhZ0luVGFibGUiLCJzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlIiwiVEFCTEVfVk9JRF9FTEVNRU5UUyIsImNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCIsImhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUiLCJjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCIsImhhc0luU2VsZWN0U2NvcGUiLCJpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJwb3BVbnRpbEh0bWxPckludGVncmF0aW9uUG9pbnQiLCJjYXVzZXNFeGl0IiwiY3VycmVudE5zIiwiYWRqdXN0VG9rZW5TVkdUYWdOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/parser/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/parser/open-element-stack.js":
/*!***************************************************************!*\
!*** ./node_modules/parse5/dist/parser/open-element-stack.js ***!
\***************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OpenElementStack: () => (/* binding */ OpenElementStack)\n/* harmony export */ });\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.LI,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTGROUP,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTION,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.P,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RB,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RP,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.RTC\n]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CAPTION,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.COLGROUP,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TBODY,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TFOOT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TH,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.THEAD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TR\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.APPLET,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.CAPTION,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MARQUEE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OBJECT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TH,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.ANNOTATION_XML,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MI,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MN,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MO,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MS,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.MTEXT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.MATHML\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.DESC,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.FOREIGN_OBJECT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG\n ],\n [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TITLE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.SVG\n ]\n]);\nconst NAMED_HEADERS = [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H1,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H2,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H3,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H4,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H5,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.H6\n];\nconst TABLE_ROW_CONTEXT = [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TR,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML\n];\nconst TABLE_BODY_CONTEXT = [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TBODY,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TFOOT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.THEAD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML\n];\nconst TABLE_CONTEXT = [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML\n];\nconst TABLE_CELLS = [\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TD,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TH\n];\n//Stack of open elements\nclass OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler){\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n }while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while(this.stackTop >= idx){\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NAMED_HEADERS, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for(let i = this.stackTop; i >= 0; i--){\n if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n } else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML;\n }\n //Element in scope\n hasInScope(tagName) {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if ((0,_common_html_js__WEBPACK_IMPORTED_MODULE_0__.isNumberedHeader)(tn) && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n return true;\n }\n if ((tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.UL || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OL) && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n return true;\n }\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.BUTTON && ns === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TEMPLATE || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n continue;\n }\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TBODY || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.THEAD || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TFOOT) {\n return true;\n }\n if (tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.TABLE || tn === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for(let i = this.stackTop; i >= 0; i--){\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTION && tn !== _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_ID.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while(IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)){\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while(IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)){\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while(this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)){\n this.pop();\n }\n }\n} //# sourceMappingURL=open-element-stack.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL29wZW4tZWxlbWVudC1zdGFjay5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRTtBQUN0RSxlQUFlO0FBQ2YsTUFBTUksNEJBQTRCLElBQUlDLElBQUk7SUFBQ0osbURBQUNBLENBQUNLLEVBQUU7SUFBRUwsbURBQUNBLENBQUNNLEVBQUU7SUFBRU4sbURBQUNBLENBQUNPLEVBQUU7SUFBRVAsbURBQUNBLENBQUNRLFFBQVE7SUFBRVIsbURBQUNBLENBQUNTLE1BQU07SUFBRVQsbURBQUNBLENBQUNVLENBQUM7SUFBRVYsbURBQUNBLENBQUNXLEVBQUU7SUFBRVgsbURBQUNBLENBQUNZLEVBQUU7SUFBRVosbURBQUNBLENBQUNhLEVBQUU7SUFBRWIsbURBQUNBLENBQUNjLEdBQUc7Q0FBQztBQUNoSCxNQUFNQyx1Q0FBdUMsSUFBSVgsSUFBSTtPQUM5Q0Q7SUFDSEgsbURBQUNBLENBQUNnQixPQUFPO0lBQ1RoQixtREFBQ0EsQ0FBQ2lCLFFBQVE7SUFDVmpCLG1EQUFDQSxDQUFDa0IsS0FBSztJQUNQbEIsbURBQUNBLENBQUNtQixFQUFFO0lBQ0puQixtREFBQ0EsQ0FBQ29CLEtBQUs7SUFDUHBCLG1EQUFDQSxDQUFDcUIsRUFBRTtJQUNKckIsbURBQUNBLENBQUNzQixLQUFLO0lBQ1B0QixtREFBQ0EsQ0FBQ3VCLEVBQUU7Q0FDUDtBQUNELE1BQU1DLHFCQUFxQixJQUFJQyxJQUFJO0lBQy9CO1FBQUN6QixtREFBQ0EsQ0FBQzBCLE1BQU07UUFBRXpCLCtDQUFFQSxDQUFDMEIsSUFBSTtLQUFDO0lBQ25CO1FBQUMzQixtREFBQ0EsQ0FBQ2dCLE9BQU87UUFBRWYsK0NBQUVBLENBQUMwQixJQUFJO0tBQUM7SUFDcEI7UUFBQzNCLG1EQUFDQSxDQUFDMkIsSUFBSTtRQUFFMUIsK0NBQUVBLENBQUMwQixJQUFJO0tBQUM7SUFDakI7UUFBQzNCLG1EQUFDQSxDQUFDNEIsT0FBTztRQUFFM0IsK0NB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TzFCLFNBQVM7Z0JBQ2hCLE9BQU87WUFDWDtZQUNBLElBQUkwQixPQUFPcEgsbURBQUNBLENBQUNTLE1BQU0sSUFBSTJHLE9BQU9wSCxtREFBQ0EsQ0FBQ1EsUUFBUSxFQUFFO2dCQUN0QyxPQUFPO1lBQ1g7UUFDSjtRQUNBLE9BQU87SUFDWDtJQUNBLGtCQUFrQjtJQUNsQndILHlCQUF5QjtRQUNyQixNQUFPN0gsMEJBQTBCOEgsR0FBRyxDQUFDLElBQUksQ0FBQzlELFlBQVksRUFBRztZQUNyRCxJQUFJLENBQUNVLEdBQUc7UUFDWjtJQUNKO0lBQ0FxRCxtQ0FBbUM7UUFDL0IsTUFBT25ILHFDQUFxQ2tILEdBQUcsQ0FBQyxJQUFJLENBQUM5RCxZQUFZLEVBQUc7WUFDaEUsSUFBSSxDQUFDVSxHQUFHO1FBQ1o7SUFDSjtJQUNBc0Qsb0NBQW9DQyxXQUFXLEVBQUU7UUFDN0MsTUFBTyxJQUFJLENBQUNqRSxZQUFZLEtBQUtpRSxlQUFlckgscUNBQXFDa0gsR0FBRyxDQUFDLElBQUksQ0FBQzlELFlBQVksRUFBRztZQUNyRyxJQUFJLENBQUNVLEdBQUc7UUFDWjtJQUNKO0FBQ0osRUFDQSw4Q0FBOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9wYXJzZXIvb3Blbi1lbGVtZW50LXN0YWNrLmpzPzE5ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVEFHX0lEIGFzICQsIE5TLCBpc051bWJlcmVkSGVhZGVyIH0gZnJvbSAnLi4vY29tbW9uL2h0bWwuanMnO1xuLy9FbGVtZW50IHV0aWxzXG5jb25zdCBJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVEID0gbmV3IFNldChbJC5ERCwgJC5EVCwgJC5MSSwgJC5PUFRHUk9VUCwgJC5PUFRJT04sICQuUCwgJC5SQiwgJC5SUCwgJC5SVCwgJC5SVENdKTtcbmNvbnN0IElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWSA9IG5ldyBTZXQoW1xuICAgIC4uLklNUExJQ0lUX0VORF9UQUdfUkVRVUlSRUQsXG4gICAgJC5DQVBUSU9OLFxuICAgICQuQ09MR1JPVVAsXG4gICAgJC5UQk9EWSxcbiAgICAkLlRELFxuICAgICQuVEZPT1QsXG4gICAgJC5USCxcbiAgICAkLlRIRUFELFxuICAgICQuVFIsXG5dKTtcbmNvbnN0IFNDT1BJTkdfRUxFTUVOVF9OUyA9IG5ldyBNYXAoW1xuICAgIFskLkFQUExFVCwgTlMuSFRNTF0sXG4gICAgWyQuQ0FQVElPTiwgTlMuSFRNTF0sXG4gICAgWyQuSFRNTCwgTlMuSFRNTF0sXG4gICAgWyQuTUFSUVVFRSwgTlMuSFRNTF0sXG4gICAgWyQuT0JKRUNULCBOUy5IVE1MXSxcbiAgICBbJC5UQUJMRSwgTlMuSFRNTF0sXG4gICAgWyQuVEQsIE5TLkhUTUxdLFxuICAgIFskLlRFTVBMQVRFLCBOUy5IVE1MXSxcbiAgICBbJC5USCwgTlMuSFRNTF0sXG4gICAgWyQuQU5OT1RBVElPTl9YTUwsIE5TLk1BVEhNTF0sXG4gICAgWyQuTUksIE5TLk1BVEhNTF0sXG4gICAgWyQuTU4sIE5TLk1BVEhNTF0sXG4gICAgWyQuTU8sIE5TLk1BVEhNTF0sXG4gICAgWyQuTVMsIE5TLk1BVEhNTF0sXG4gICAgWyQuTVRFWFQsIE5TLk1BVEhNTF0sXG4gICAgWyQuREVTQywgTlMuU1ZHXSxcbiAgICBbJC5GT1JFSUdOX09CSkVDVCwgTlMuU1ZHXSxcbiAgICBbJC5USVRMRSwgTlMuU1ZHXSxcbl0pO1xuY29uc3QgTkFNRURfSEVBREVSUyA9IFskLkgxLCAkLkgyLCAkLkgzLCAkLkg0LCAkLkg1LCAkLkg2XTtcbmNvbnN0IFRBQkxFX1JPV19DT05URVhUID0gWyQuVFIsICQuVEVNUExBVEUsICQuSFRNTF07XG5jb25zdCBUQUJMRV9CT0RZX0NPTlRFWFQgPSBbJC5UQk9EWSwgJC5URk9PVCwgJC5USEVBRCwgJC5URU1QTEFURSwgJC5IVE1MXTtcbmNvbnN0IFRBQkxFX0NPTlRFWFQgPSBbJC5UQUJMRSwgJC5URU1QTEFURSwgJC5IVE1MXTtcbmNvbnN0IFRBQkxFX0NFTExTID0gWyQuVEQsICQuVEhdO1xuLy9TdGFjayBvZiBvcGVuIGVsZW1lbnRzXG5leHBvcnQgY2xhc3MgT3BlbkVsZW1lbnRTdGFjayB7XG4gICAgZ2V0IGN1cnJlbnRUbXBsQ29udGVudE9yTm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5UZW1wbGF0ZSgpID8gdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQodGhpcy5jdXJyZW50KSA6IHRoaXMuY3VycmVudDtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQsIHRyZWVBZGFwdGVyLCBoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbiAgICAgICAgdGhpcy5oYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnRhZ0lEcyA9IFtdO1xuICAgICAgICB0aGlzLnN0YWNrVG9wID0gLTE7XG4gICAgICAgIHRoaXMudG1wbENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnSWQgPSAkLlVOS05PV047XG4gICAgICAgIHRoaXMuY3VycmVudCA9IGRvY3VtZW50O1xuICAgIH1cbiAgICAvL0luZGV4IG9mIGVsZW1lbnRcbiAgICBfaW5kZXhPZihlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmxhc3RJbmRleE9mKGVsZW1lbnQsIHRoaXMuc3RhY2tUb3ApO1xuICAgIH1cbiAgICAvL1VwZGF0ZSBjdXJyZW50IGVsZW1lbnRcbiAgICBfaXNJblRlbXBsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFnSWQgPT09ICQuVEVNUExBVEUgJiYgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5jdXJyZW50KSA9PT0gTlMuSFRNTDtcbiAgICB9XG4gICAgX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCkge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLml0ZW1zW3RoaXMuc3RhY2tUb3BdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWdJZCA9IHRoaXMudGFnSURzW3RoaXMuc3RhY2tUb3BdO1xuICAgIH1cbiAgICAvL011dGF0aW9uc1xuICAgIHB1c2goZWxlbWVudCwgdGFnSUQpIHtcbiAgICAgICAgdGhpcy5zdGFja1RvcCsrO1xuICAgICAgICB0aGlzLml0ZW1zW3RoaXMuc3RhY2tUb3BdID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy50YWdJRHNbdGhpcy5zdGFja1RvcF0gPSB0YWdJRDtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnSWQgPSB0YWdJRDtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1QdXNoKGVsZW1lbnQsIHRhZ0lELCB0cnVlKTtcbiAgICB9XG4gICAgcG9wKCkge1xuICAgICAgICBjb25zdCBwb3BwZWQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgIGlmICh0aGlzLnRtcGxDb3VudCA+IDAgJiYgdGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG1wbENvdW50LS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFja1RvcC0tO1xuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKHBvcHBlZCwgdHJ1ZSk7XG4gICAgfVxuICAgIHJlcGxhY2Uob2xkRWxlbWVudCwgbmV3RWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKG9sZEVsZW1lbnQpO1xuICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSBuZXdFbGVtZW50O1xuICAgICAgICBpZiAoaWR4ID09PSB0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBuZXdFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydEFmdGVyKHJlZmVyZW5jZUVsZW1lbnQsIG5ld0VsZW1lbnQsIG5ld0VsZW1lbnRJRCkge1xuICAgICAgICBjb25zdCBpbnNlcnRpb25JZHggPSB0aGlzLl9pbmRleE9mKHJlZmVyZW5jZUVsZW1lbnQpICsgMTtcbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdFbGVtZW50KTtcbiAgICAgICAgdGhpcy50YWdJRHMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudElEKTtcbiAgICAgICAgdGhpcy5zdGFja1RvcCsrO1xuICAgICAgICBpZiAoaW5zZXJ0aW9uSWR4ID09PSB0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1QdXNoKHRoaXMuY3VycmVudCwgdGhpcy5jdXJyZW50VGFnSWQsIGluc2VydGlvbklkeCA9PT0gdGhpcy5zdGFja1RvcCk7XG4gICAgfVxuICAgIHBvcFVudGlsVGFnTmFtZVBvcHBlZCh0YWdOYW1lKSB7XG4gICAgICAgIGxldCB0YXJnZXRJZHggPSB0aGlzLnN0YWNrVG9wICsgMTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdGFyZ2V0SWR4ID0gdGhpcy50YWdJRHMubGFzdEluZGV4T2YodGFnTmFtZSwgdGFyZ2V0SWR4IC0gMSk7XG4gICAgICAgIH0gd2hpbGUgKHRhcmdldElkeCA+IDAgJiYgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1t0YXJnZXRJZHhdKSAhPT0gTlMuSFRNTCk7XG4gICAgICAgIHRoaXMuc2hvcnRlblRvTGVuZ3RoKHRhcmdldElkeCA8IDAgPyAwIDogdGFyZ2V0SWR4KTtcbiAgICB9XG4gICAgc2hvcnRlblRvTGVuZ3RoKGlkeCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFja1RvcCA+PSBpZHgpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcHBlZCA9IHRoaXMuY3VycmVudDtcbiAgICAgICAgICAgIGlmICh0aGlzLnRtcGxDb3VudCA+IDAgJiYgdGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRtcGxDb3VudCAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGFja1RvcC0tO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1Qb3AocG9wcGVkLCB0aGlzLnN0YWNrVG9wIDwgaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwb3BVbnRpbEVsZW1lbnRQb3BwZWQoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnNob3J0ZW5Ub0xlbmd0aChpZHggPCAwID8gMCA6IGlkeCk7XG4gICAgfVxuICAgIHBvcFVudGlsUG9wcGVkKHRhZ05hbWVzLCB0YXJnZXROUykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mVGFnTmFtZXModGFnTmFtZXMsIHRhcmdldE5TKTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoaWR4IDwgMCA/IDAgOiBpZHgpO1xuICAgIH1cbiAgICBwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCkge1xuICAgICAgICB0aGlzLnBvcFVudGlsUG9wcGVkKE5BTUVEX0hFQURFUlMsIE5TLkhUTUwpO1xuICAgIH1cbiAgICBwb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpIHtcbiAgICAgICAgdGhpcy5wb3BVbnRpbFBvcHBlZChUQUJMRV9DRUxMUywgTlMuSFRNTCk7XG4gICAgfVxuICAgIHBvcEFsbFVwVG9IdG1sRWxlbWVudCgpIHtcbiAgICAgICAgLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHRoZSByb290IDxodG1sPiBlbGVtZW50IGlzIGFsd2F5cyBmaXJzdCBpbiB0aGUgb3BlbiBlbGVtZW50IHN0YWNrLCBzb1xuICAgICAgICAvL3dlIHBlcmZvcm0gdGhpcyBmYXN0IHN0YWNrIGNsZWFuIHVwLlxuICAgICAgICB0aGlzLnRtcGxDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuc2hvcnRlblRvTGVuZ3RoKDEpO1xuICAgIH1cbiAgICBfaW5kZXhPZlRhZ05hbWVzKHRhZ05hbWVzLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGFnTmFtZXMuaW5jbHVkZXModGhpcy50YWdJRHNbaV0pICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pID09PSBuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvKHRhZ05hbWVzLCB0YXJnZXROUykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mVGFnTmFtZXModGFnTmFtZXMsIHRhcmdldE5TKTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoaWR4ICsgMSk7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvVGFibGVDb250ZXh0KCkge1xuICAgICAgICB0aGlzLmNsZWFyQmFja1RvKFRBQkxFX0NPTlRFWFQsIE5TLkhUTUwpO1xuICAgIH1cbiAgICBjbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJCYWNrVG8oVEFCTEVfQk9EWV9DT05URVhULCBOUy5IVE1MKTtcbiAgICB9XG4gICAgY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJCYWNrVG8oVEFCTEVfUk9XX0NPTlRFWFQsIE5TLkhUTUwpO1xuICAgIH1cbiAgICByZW1vdmUoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKGVsZW1lbnQpO1xuICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgIGlmIChpZHggPT09IHRoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0lEcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1NlYXJjaFxuICAgIHRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCkge1xuICAgICAgICAvL1Byb3Blcmx5IG5lc3RlZCA8Ym9keT4gZWxlbWVudCAoc2hvdWxkIGJlIHNlY29uZCBlbGVtZW50IGluIHN0YWNrKS5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUb3AgPj0gMSAmJiB0aGlzLnRhZ0lEc1sxXSA9PT0gJC5CT0RZID8gdGhpcy5pdGVtc1sxXSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9XG4gICAgZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KSAtIDE7XG4gICAgICAgIHJldHVybiBlbGVtZW50SWR4ID49IDAgPyB0aGlzLml0ZW1zW2VsZW1lbnRJZHhdIDogbnVsbDtcbiAgICB9XG4gICAgaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLnRhZ0lEc1swXSA9PT0gJC5IVE1MO1xuICAgIH1cbiAgICAvL0VsZW1lbnQgaW4gc2NvcGVcbiAgICBoYXNJblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudGFnSURzW2ldO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFNDT1BJTkdfRUxFTUVOVF9OUy5nZXQodG4pID09PSBucykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyZWRIZWFkZXIodG4pICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoU0NPUElOR19FTEVNRU5UX05TLmdldCh0bikgPT09IG5zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBoYXNJbkxpc3RJdGVtU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKCh0biA9PT0gJC5VTCB8fCB0biA9PT0gJC5PTCkgJiYgbnMgPT09IE5TLkhUTUwpIHx8IFNDT1BJTkdfRUxFTUVOVF9OUy5nZXQodG4pID09PSBucykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaGFzSW5CdXR0b25TY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodG4gPT09ICQuQlVUVE9OICYmIG5zID09PSBOUy5IVE1MKSB8fCBTQ09QSU5HX0VMRU1FTlRfTlMuZ2V0KHRuKSA9PT0gbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc0luVGFibGVTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLlRFTVBMQVRFIHx8IHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBpZiAobnMgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0biA9PT0gJC5UQk9EWSB8fCB0biA9PT0gJC5USEVBRCB8fCB0biA9PT0gJC5URk9PVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFIHx8IHRuID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc0luU2VsZWN0U2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgaWYgKG5zICE9PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0biAhPT0gJC5PUFRJT04gJiYgdG4gIT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vSW1wbGllZCBlbmQgdGFnc1xuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKSB7XG4gICAgICAgIHdoaWxlIChJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVELmhhcyh0aGlzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKSB7XG4gICAgICAgIHdoaWxlIChJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVEX1RIT1JPVUdITFkuaGFzKHRoaXMuY3VycmVudFRhZ0lkKSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihleGNsdXNpb25JZCkge1xuICAgICAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnSWQgIT09IGV4Y2x1c2lvbklkICYmIElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWS5oYXModGhpcy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3Blbi1lbGVtZW50LXN0YWNrLmpzLm1hcCJdLCJuYW1lcyI6WyJUQUdfSUQiLCIkIiwiTlMiLCJpc051bWJlcmVkSGVhZGVyIiwiSU1QTElDSVRfRU5EX1RBR19SRVFVSVJFRCIsIlNldCIsIkREIiwiRFQiLCJMSSIsIk9QVEdST1VQIiwiT1BUSU9OIiwiUCIsIlJCIiwiUlAiLCJSVCIsIlJUQyIsIklNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWSIsIkNBUFRJT04iLCJDT0xHUk9VUCIsIlRCT0RZIiwiVEQiLCJURk9PVCIsIlRIIiwiVEhFQUQiLCJUUiIsIlNDT1BJTkdfRUxFTUVOVF9OUyIsIk1hcCIsIkFQUExFVCIsIkhUTUwiLCJNQVJRVUVFIiwiT0JKRUNUIiwiVEFCTEUiLCJURU1QTEFURSIsIkFOTk9UQVRJT05fWE1MIiwiTUFUSE1MIiwiTUkiLCJNTiIsIk1PIiwiTVMiLCJNVEVYVCIsIkRFU0MiLCJTVkciLCJGT1JFSUdOX09CSkVDVCIsIlRJVExFIiwiTkFNRURfSEVBREVSUyIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIlRBQkxFX1JPV19DT05URVhUIiwiVEFCTEVfQk9EWV9DT05URVhUIiwiVEFCTEVfQ09OVEVYVCIsIlRBQkxFX0NFTExTIiwiT3BlbkVsZW1lbnRTdGFjayIsImN1cnJlbnRUbXBsQ29udGVudE9yTm9kZSIsIl9pc0luVGVtcGxhdGUiLCJ0cmVlQWRhcHRlciIsImdldFRlbXBsYXRlQ29udGVudCIsImN1cnJlbnQiLCJjb25zdHJ1Y3RvciIsImRvY3VtZW50IiwiaGFuZGxlciIsIml0ZW1zIiwidGFnSURzIiwic3RhY2tUb3AiLCJ0bXBsQ291bnQiLCJjdXJyZW50VGFnSWQiLCJVTktOT1dOIiwiX2luZGV4T2YiLCJlbGVtZW50IiwibGFzdEluZGV4T2YiLCJnZXROYW1lc3BhY2VVUkkiLCJfdXBkYXRlQ3VycmVudEVsZW1lbnQiLCJwdXNoIiwidGFnSUQiLCJvbkl0ZW1QdXNoIiwicG9wIiwicG9wcGVkIiwib25JdGVtUG9wIiwicmVwbGFjZSIsIm9sZEVsZW1lbnQiLCJuZXdFbGVtZW50IiwiaWR4IiwiaW5zZXJ0QWZ0ZXIiLCJyZWZlcmVuY2VFbGVtZW50IiwibmV3RWxlbWVudElEIiwiaW5zZXJ0aW9uSWR4Iiwic3BsaWNlIiwicG9wVW50aWxUYWdOYW1lUG9wcGVkIiwidGFnTmFtZSIsInRhcmdldElkeCIsInNob3J0ZW5Ub0xlbmd0aCIsInBvcFVudGlsRWxlbWVudFBvcHBlZCIsInBvcFVudGlsUG9wcGVkIiwidGFnTmFtZXMiLCJ0YXJnZXROUyIsIl9pbmRleE9mVGFnTmFtZXMiLCJwb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkIiwicG9wVW50aWxUYWJsZUNlbGxQb3BwZWQiLCJwb3BBbGxVcFRvSHRtbEVsZW1lbnQiLCJuYW1lc3BhY2UiLCJpIiwiaW5jbHVkZXMiLCJjbGVhckJhY2tUbyIsImNsZWFyQmFja1RvVGFibGVDb250ZXh0IiwiY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0IiwiY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQiLCJyZW1vdmUiLCJ0cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCIsIkJPRFkiLCJjb250YWlucyIsImdldENvbW1vbkFuY2VzdG9yIiwiZWxlbWVudElkeCIsImlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCIsImhhc0luU2NvcGUiLCJ0biIsIm5zIiwiZ2V0IiwiaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlIiwiaGFzSW5MaXN0SXRlbVNjb3BlIiwiVUwiLCJPTCIsImhhc0luQnV0dG9uU2NvcGUiLCJCVVRUT04iLCJoYXNJblRhYmxlU2NvcGUiLCJoYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlIiwiaGFzSW5TZWxlY3RTY29wZSIsImdlbmVyYXRlSW1wbGllZEVuZFRhZ3MiLCJoYXMiLCJnZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSIsImdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uIiwiZXhjbHVzaW9uSWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/parser/open-element-stack.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/serializer/index.js":
/*!******************************************************!*\
!*** ./node_modules/parse5/dist/serializer/index.js ***!
\******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ serialize: () => (/* binding */ serialize),\n/* harmony export */ serializeOuter: () => (/* binding */ serializeOuter)\n/* harmony export */ });\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n/* harmony import */ var entities_lib_escape_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! entities/lib/escape.js */ \"(ssr)/./node_modules/entities/lib/esm/escape.js\");\n/* harmony import */ var _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../tree-adapters/default.js */ \"(ssr)/./node_modules/parse5/dist/tree-adapters/default.js\");\n\n\n\n// Sets\nconst VOID_ELEMENTS = new Set([\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.AREA,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BASE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BASEFONT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BGSOUND,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.BR,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.COL,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.EMBED,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.FRAME,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.HR,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.IMG,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.INPUT,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.KEYGEN,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.LINK,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.META,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.PARAM,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.SOURCE,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.TRACK,\n _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.WBR\n]);\nfunction isVoidElement(node, options) {\n return options.treeAdapter.isElementNode(node) && options.treeAdapter.getNamespaceURI(node) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML && VOID_ELEMENTS.has(options.treeAdapter.getTagName(node));\n}\nconst defaultOpts = {\n treeAdapter: _tree_adapters_default_js__WEBPACK_IMPORTED_MODULE_2__.defaultTreeAdapter,\n scriptingEnabled: true\n};\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */ function serialize(node, options) {\n const opts = {\n ...defaultOpts,\n ...options\n };\n if (isVoidElement(node, opts)) {\n return \"\";\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */ function serializeOuter(node, options) {\n const opts = {\n ...defaultOpts,\n ...options\n };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = \"\";\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) && options.treeAdapter.getTagName(parentNode) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.TAG_NAMES.TEMPLATE && options.treeAdapter.getNamespaceURI(parentNode) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML ? options.treeAdapter.getTemplateContent(parentNode) : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes){\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return \"\";\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? \"\" : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = \"\";\n for (const attr of treeAdapter.getAttrList(node)){\n html += \" \";\n if (!attr.namespace) {\n html += attr.name;\n } else switch(attr.namespace){\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XML:\n {\n html += `xml:${attr.name}`;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XMLNS:\n {\n if (attr.name !== \"xmlns\") {\n html += \"xmlns:\";\n }\n html += attr.name;\n break;\n }\n case _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.XLINK:\n {\n html += `xlink:${attr.name}`;\n break;\n }\n default:\n {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n html += `=\"${(0,entities_lib_escape_js__WEBPACK_IMPORTED_MODULE_1__.escapeAttribute)(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn && treeAdapter.getNamespaceURI(parent) === _common_html_js__WEBPACK_IMPORTED_MODULE_0__.NS.HTML && (0,_common_html_js__WEBPACK_IMPORTED_MODULE_0__.hasUnescapedText)(parentTn, options.scriptingEnabled) ? content : (0,entities_lib_escape_js__WEBPACK_IMPORTED_MODULE_1__.escapeText)(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3Qvc2VyaWFsaXplci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUF5RTtBQUNKO0FBQ0o7QUFDakUsT0FBTztBQUNQLE1BQU1PLGdCQUFnQixJQUFJQyxJQUFJO0lBQzFCUCxzREFBQ0EsQ0FBQ1EsSUFBSTtJQUNOUixzREFBQ0EsQ0FBQ1MsSUFBSTtJQUNOVCxzREFBQ0EsQ0FBQ1UsUUFBUTtJQUNWVixzREFBQ0EsQ0FBQ1csT0FBTztJQUNUWCxzREFBQ0EsQ0FBQ1ksRUFBRTtJQUNKWixzREFBQ0EsQ0FBQ2EsR0FBRztJQUNMYixzREFBQ0EsQ0FBQ2MsS0FBSztJQUNQZCxzREFBQ0EsQ0FBQ2UsS0FBSztJQUNQZixzREFBQ0EsQ0FBQ2dCLEVBQUU7SUFDSmhCLHNEQUFDQSxDQUFDaUIsR0FBRztJQUNMakIsc0RBQUNBLENBQUNrQixLQUFLO0lBQ1BsQixzREFBQ0EsQ0FBQ21CLE1BQU07SUFDUm5CLHNEQUFDQSxDQUFDb0IsSUFBSTtJQUNOcEIsc0RBQUNBLENBQUNxQixJQUFJO0lBQ05yQixzREFBQ0EsQ0FBQ3NCLEtBQUs7SUFDUHRCLHNEQUFDQSxDQUFDdUIsTUFBTTtJQUNSdkIsc0RBQUNBLENBQUN3QixLQUFLO0lBQ1B4QixzREFBQ0EsQ0FBQ3lCLEdBQUc7Q0FDUjtBQUNELFNBQVNDLGNBQWNDLElBQUksRUFBRUMsT0FBTztJQUNoQyxPQUFRQSxRQUFRQyxXQUFXLENBQUNDLGFBQWEsQ0FBQ0gsU0FDdENDLFFBQVFDLFdBQVcsQ0FBQ0UsZUFBZSxDQUFDSixVQUFVMUIsK0NBQUVBLENBQUMrQixJQUFJLElBQ3JEMUIsY0FBYzJCLEdBQUcsQ0FBQ0wsUUFBUUMsV0FBVyxDQUFDSyxVQUFVLENBQUNQO0FBQ3pEO0FBQ0EsTUFBTVEsY0FBYztJQUFFTixhQUFheEIseUVBQWtCQTtJQUFFK0Isa0JBQWtCO0FBQUs7QUFDOUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUNNLFNBQVND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WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3Qvc2VyaWFsaXplci9pbmRleC5qcz85ZWJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRBR19OQU1FUyBhcyAkLCBOUywgaGFzVW5lc2NhcGVkVGV4dCB9IGZyb20gJy4uL2NvbW1vbi9odG1sLmpzJztcbmltcG9ydCB7IGVzY2FwZVRleHQsIGVzY2FwZUF0dHJpYnV0ZSB9IGZyb20gJ2VudGl0aWVzL2xpYi9lc2NhcGUuanMnO1xuaW1wb3J0IHsgZGVmYXVsdFRyZWVBZGFwdGVyIH0gZnJvbSAnLi4vdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzJztcbi8vIFNldHNcbmNvbnN0IFZPSURfRUxFTUVOVFMgPSBuZXcgU2V0KFtcbiAgICAkLkFSRUEsXG4gICAgJC5CQVNFLFxuICAgICQuQkFTRUZPTlQsXG4gICAgJC5CR1NPVU5ELFxuICAgICQuQlIsXG4gICAgJC5DT0wsXG4gICAgJC5FTUJFRCxcbiAgICAkLkZSQU1FLFxuICAgICQuSFIsXG4gICAgJC5JTUcsXG4gICAgJC5JTlBVVCxcbiAgICAkLktFWUdFTixcbiAgICAkLkxJTkssXG4gICAgJC5NRVRBLFxuICAgICQuUEFSQU0sXG4gICAgJC5TT1VSQ0UsXG4gICAgJC5UUkFDSyxcbiAgICAkLldCUixcbl0pO1xuZnVuY3Rpb24gaXNWb2lkRWxlbWVudChub2RlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzRWxlbWVudE5vZGUobm9kZSkgJiZcbiAgICAgICAgb3B0aW9ucy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobm9kZSkgPT09IE5TLkhUTUwgJiZcbiAgICAgICAgVk9JRF9FTEVNRU5UUy5oYXMob3B0aW9ucy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpKSk7XG59XG5jb25zdCBkZWZhdWx0T3B0cyA9IHsgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlciwgc2NyaXB0aW5nRW5hYmxlZDogdHJ1ZSB9O1xuLyoqXG4gKiBTZXJpYWxpemVzIGFuIEFTVCBub2RlIHRvIGFuIEhUTUwgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBhcnNlNSA9IHJlcXVpcmUoJ3BhcnNlNScpO1xuICpcbiAqIGNvbnN0IGRvY3VtZW50ID0gcGFyc2U1LnBhcnNlKCc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+SGkgdGhlcmUhPC9ib2R5PjwvaHRtbD4nKTtcbiAqXG4gKiAvLyBTZXJpYWxpemVzIGEgZG9jdW1lbnQuXG4gKiBjb25zdCBodG1sID0gcGFyc2U1LnNlcmlhbGl6ZShkb2N1bWVudCk7XG4gKlxuICogLy8gU2VyaWFsaXplcyB0aGUgPGh0bWw+IGVsZW1lbnQgY29udGVudC5cbiAqIGNvbnN0IHN0ciA9IHBhcnNlNS5zZXJpYWxpemUoZG9jdW1lbnQuY2hpbGROb2Rlc1sxXSk7XG4gKlxuICogY29uc29sZS5sb2coc3RyKTsgLy8+ICc8aGVhZD48L2hlYWQ+PGJvZHk+SGkgdGhlcmUhPC9ib2R5PidcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIG9wdGlvbnMgU2VyaWFsaXphdGlvbiBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRzID0geyAuLi5kZWZhdWx0T3B0cywgLi4ub3B0aW9ucyB9O1xuICAgIGlmIChpc1ZvaWRFbGVtZW50KG5vZGUsIG9wdHMpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUNoaWxkTm9kZXMobm9kZSwgb3B0cyk7XG59XG4vKipcbiAqIFNlcmlhbGl6ZXMgYW4gQVNUIGVsZW1lbnQgbm9kZSB0byBhbiBIVE1MIHN0cmluZywgaW5jbHVkaW5nIHRoZSBlbGVtZW50IG5vZGUuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGFyc2U1ID0gcmVxdWlyZSgncGFyc2U1Jyk7XG4gKlxuICogY29uc3QgZG9jdW1lbnQgPSBwYXJzZTUucGFyc2VGcmFnbWVudCgnPGRpdj5IZWxsbywgPGI+d29ybGQ8L2I+ITwvZGl2PicpO1xuICpcbiAqIC8vIFNlcmlhbGl6ZXMgdGhlIDxkaXY+IGVsZW1lbnQuXG4gKiBjb25zdCBodG1sID0gcGFyc2U1LnNlcmlhbGl6ZU91dGVyKGRvY3VtZW50LmNoaWxkTm9kZXNbMF0pO1xuICpcbiAqIGNvbnNvbGUubG9nKHN0cik7IC8vPiAnPGRpdj5IZWxsbywgPGI+d29ybGQ8L2I+ITwvZGl2PidcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIG9wdGlvbnMgU2VyaWFsaXphdGlvbiBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplT3V0ZXIobm9kZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLmRlZmF1bHRPcHRzLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUobm9kZSwgb3B0cyk7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVDaGlsZE5vZGVzKHBhcmVudE5vZGUsIG9wdGlvbnMpIHtcbiAgICBsZXQgaHRtbCA9ICcnO1xuICAgIC8vIEdldCBjb250YWluZXIgb2YgdGhlIGNoaWxkIG5vZGVzXG4gICAgY29uc3QgY29udGFpbmVyID0gb3B0aW9ucy50cmVlQWRhcHRlci5pc0VsZW1lbnROb2RlKHBhcmVudE5vZGUpICYmXG4gICAgICAgIG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwYXJlbnROb2RlKSA9PT0gJC5URU1QTEFURSAmJlxuICAgICAgICBvcHRpb25zLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShwYXJlbnROb2RlKSA9PT0gTlMuSFRNTFxuICAgICAgICA/IG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHBhcmVudE5vZGUpXG4gICAgICAgIDogcGFyZW50Tm9kZTtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gb3B0aW9ucy50cmVlQWRhcHRlci5nZXRDaGlsZE5vZGVzKGNvbnRhaW5lcik7XG4gICAgaWYgKGNoaWxkTm9kZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50Tm9kZSBvZiBjaGlsZE5vZGVzKSB7XG4gICAgICAgICAgICBodG1sICs9IHNlcmlhbGl6ZU5vZGUoY3VycmVudE5vZGUsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBodG1sO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNFbGVtZW50Tm9kZShub2RlKSkge1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplRWxlbWVudChub2RlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNUZXh0Tm9kZShub2RlKSkge1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplVGV4dE5vZGUobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzQ29tbWVudE5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUNvbW1lbnROb2RlKG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cmVlQWRhcHRlci5pc0RvY3VtZW50VHlwZU5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZURvY3VtZW50VHlwZU5vZGUobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgZm9yIHVua25vd24gbm9kZXNcbiAgICByZXR1cm4gJyc7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KG5vZGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB0biA9IG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShub2RlKTtcbiAgICByZXR1cm4gYDwke3RufSR7c2VyaWFsaXplQXR0cmlidXRlcyhub2RlLCBvcHRpb25zKX0+JHtpc1ZvaWRFbGVtZW50KG5vZGUsIG9wdGlvbnMpID8gJycgOiBgJHtzZXJpYWxpemVDaGlsZE5vZGVzKG5vZGUsIG9wdGlvbnMpfTwvJHt0bn0+YH1gO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplQXR0cmlidXRlcyhub2RlLCB7IHRyZWVBZGFwdGVyIH0pIHtcbiAgICBsZXQgaHRtbCA9ICcnO1xuICAgIGZvciAoY29uc3QgYXR0ciBvZiB0cmVlQWRhcHRlci5nZXRBdHRyTGlzdChub2RlKSkge1xuICAgICAgICBodG1sICs9ICcgJztcbiAgICAgICAgaWYgKCFhdHRyLm5hbWVzcGFjZSkge1xuICAgICAgICAgICAgaHRtbCArPSBhdHRyLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3dpdGNoIChhdHRyLm5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTlMuWE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYHhtbDoke2F0dHIubmFtZX1gO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5YTUxOUzoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci5uYW1lICE9PSAneG1sbnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICd4bWxuczonO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYXR0ci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5YTElOSzoge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGB4bGluazoke2F0dHIubmFtZX1gO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGAke2F0dHIucHJlZml4fToke2F0dHIubmFtZX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgaHRtbCArPSBgPVwiJHtlc2NhcGVBdHRyaWJ1dGUoYXR0ci52YWx1ZSl9XCJgO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZVRleHROb2RlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHRyZWVBZGFwdGVyIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0cmVlQWRhcHRlci5nZXRUZXh0Tm9kZUNvbnRlbnQobm9kZSk7XG4gICAgY29uc3QgcGFyZW50ID0gdHJlZUFkYXB0ZXIuZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgICBjb25zdCBwYXJlbnRUbiA9IHBhcmVudCAmJiB0cmVlQWRhcHRlci5pc0VsZW1lbnROb2RlKHBhcmVudCkgJiYgdHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwYXJlbnQpO1xuICAgIHJldHVybiBwYXJlbnRUbiAmJlxuICAgICAgICB0cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocGFyZW50KSA9PT0gTlMuSFRNTCAmJlxuICAgICAgICBoYXNVbmVzY2FwZWRUZXh0KHBhcmVudFRuLCBvcHRpb25zLnNjcmlwdGluZ0VuYWJsZWQpXG4gICAgICAgID8gY29udGVudFxuICAgICAgICA6IGVzY2FwZVRleHQoY29udGVudCk7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVDb21tZW50Tm9kZShub2RlLCB7IHRyZWVBZGFwdGVyIH0pIHtcbiAgICByZXR1cm4gYDwhLS0ke3RyZWVBZGFwdGVyLmdldENvbW1lbnROb2RlQ29udGVudChub2RlKX0tLT5gO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplRG9jdW1lbnRUeXBlTm9kZShub2RlLCB7IHRyZWVBZGFwdGVyIH0pIHtcbiAgICByZXR1cm4gYDwhRE9DVFlQRSAke3RyZWVBZGFwdGVyLmdldERvY3VtZW50VHlwZU5vZGVOYW1lKG5vZGUpfT5gO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIlRBR19OQU1FUyIsIiQiLCJOUyIsImhhc1VuZXNjYXBlZFRleHQiLCJlc2NhcGVUZXh0IiwiZXNjYXBlQXR0cmlidXRlIiwiZGVmYXVsdFRyZWVBZGFwdGVyIiwiVk9JRF9FTEVNRU5UUyIsIlNldCIsIkFSRUEiLCJCQVNFIiwiQkFTRUZPTlQiLCJCR1NPVU5EIiwiQlIiLCJDT0wiLCJFTUJFRCIsIkZSQU1FIiwiSFIiLCJJTUciLCJJTlBVVCIsIktFWUdFTiIsIkxJTksiLCJNRVRBIiwiUEFSQU0iLCJTT1VSQ0UiLCJUUkFDSyIsIldCUiIsImlzVm9pZEVsZW1lbnQiLCJub2RlIiwib3B0aW9ucyIsInRyZWVBZGFwdGVyIiwiaXNFbGVtZW50Tm9kZSIsImdldE5hbWVzcGFjZVVSSSIsIkhUTUwiLCJoYXMiLCJnZXRUYWdOYW1lIiwiZGVmYXVsdE9wdHMiLCJzY3JpcHRpbmdFbmFibGVkIiwic2VyaWFsaXplIiwib3B0cyIsInNlcmlhbGl6ZUNoaWxkTm9kZXMiLCJzZXJpYWxpemVPdXRlciIsInNlcmlhbGl6ZU5vZGUiLCJwYXJlbnROb2RlIiwiaHRtbCIsImNvbnRhaW5lciIsIlRFTVBMQVRFIiwiZ2V0VGVtcGxhdGVDb250ZW50IiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjdXJyZW50Tm9kZSIsInNlcmlhbGl6ZUVsZW1lbnQiLCJpc1RleHROb2RlIiwic2VyaWFsaXplVGV4dE5vZGUiLCJpc0NvbW1lbnROb2RlIiwic2VyaWFsaXplQ29tbWVudE5vZGUiLCJpc0RvY3VtZW50VHlwZU5vZGUiLCJzZXJpYWxpemVEb2N1bWVudFR5cGVOb2RlIiwidG4iLCJzZXJpYWxpemVBdHRyaWJ1dGVzIiwiYXR0ciIsImdldEF0dHJMaXN0IiwibmFtZXNwYWNlIiwibmFtZSIsIlhNTCIsIlhNTE5TIiwiWExJTksiLCJwcmVmaXgiLCJ2YWx1ZSIsImNvbnRlbnQiLCJnZXRUZXh0Tm9kZUNvbnRlbnQiLCJwYXJlbnQiLCJnZXRQYXJlbnROb2RlIiwicGFyZW50VG4iLCJnZXRDb21tZW50Tm9kZUNvbnRlbnQiLCJnZXREb2N1bWVudFR5cGVOb2RlTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/serializer/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/tokenizer/index.js":
/*!*****************************************************!*\
!*** ./node_modules/parse5/dist/tokenizer/index.js ***!
\*****************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Tokenizer: () => (/* binding */ Tokenizer),\n/* harmony export */ TokenizerMode: () => (/* binding */ TokenizerMode)\n/* harmony export */ });\n/* harmony import */ var _preprocessor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./preprocessor.js */ \"(ssr)/./node_modules/parse5/dist/tokenizer/preprocessor.js\");\n/* harmony import */ var _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/unicode.js */ \"(ssr)/./node_modules/parse5/dist/common/unicode.js\");\n/* harmony import */ var _common_token_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/token.js */ \"(ssr)/./node_modules/parse5/dist/common/token.js\");\n/* harmony import */ var entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! entities/lib/decode.js */ \"(ssr)/./node_modules/entities/lib/esm/decode.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/error-codes.js */ \"(ssr)/./node_modules/parse5/dist/common/error-codes.js\");\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n\n\n\n\n\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n [\n 0x80,\n 8364\n ],\n [\n 0x82,\n 8218\n ],\n [\n 0x83,\n 402\n ],\n [\n 0x84,\n 8222\n ],\n [\n 0x85,\n 8230\n ],\n [\n 0x86,\n 8224\n ],\n [\n 0x87,\n 8225\n ],\n [\n 0x88,\n 710\n ],\n [\n 0x89,\n 8240\n ],\n [\n 0x8a,\n 352\n ],\n [\n 0x8b,\n 8249\n ],\n [\n 0x8c,\n 338\n ],\n [\n 0x8e,\n 381\n ],\n [\n 0x91,\n 8216\n ],\n [\n 0x92,\n 8217\n ],\n [\n 0x93,\n 8220\n ],\n [\n 0x94,\n 8221\n ],\n [\n 0x95,\n 8226\n ],\n [\n 0x96,\n 8211\n ],\n [\n 0x97,\n 8212\n ],\n [\n 0x98,\n 732\n ],\n [\n 0x99,\n 8482\n ],\n [\n 0x9a,\n 353\n ],\n [\n 0x9b,\n 8250\n ],\n [\n 0x9c,\n 339\n ],\n [\n 0x9e,\n 382\n ],\n [\n 0x9f,\n 376\n ]\n]);\n//States\nvar State;\n(function(State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nconst TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.DIGIT_0 && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_A && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_A && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_A && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_A && cp <= _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n return nextCp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN;\n}\n//Tokenizer\nclass Tokenizer {\n constructor(options, handler){\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */ this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */ this.inForeignNode = false;\n this.lastStartTagName = \"\";\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.charRefCode = -1;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = {\n name: \"\",\n value: \"\"\n };\n this.preprocessor = new _preprocessor_js__WEBPACK_IMPORTED_MODULE_0__.Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n }\n //Errors\n _err(code) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n _runParsingLoop() {\n if (this.inLoop) return;\n this.inLoop = true;\n while(this.active && !this.paused){\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error(\"Parser was already resumed\");\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop) return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this._unconsume(this.consumedAfterSnapshot);\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume(count) {\n this.consumedAfterSnapshot -= count;\n this.preprocessor.retreat(count);\n }\n _reconsumeInState(state, cp) {\n this.state = state;\n this._callState(cp);\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for(let i = 0; i < count; i++){\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.START_TAG,\n tagName: \"\",\n tagID: _common_html_js__WEBPACK_IMPORTED_MODULE_5__.TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1)\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.END_TAG,\n tagName: \"\",\n tagID: _common_html_js__WEBPACK_IMPORTED_MODULE_5__.TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2)\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.COMMENT,\n data: \"\",\n location: this.getCurrentLocation(offset)\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: \"\"\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if ((0,_common_token_js__WEBPACK_IMPORTED_MODULE_2__.getTokenAttr)(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = (_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : _b.attrs = Object.create(null);\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n } else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = (0,_common_html_js__WEBPACK_IMPORTED_MODULE_5__.getTagID)(ct.tagName);\n if (ct.type === _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n } else {\n if (ct.attrs.length > 0) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch(this.currentCharacterToken.type){\n case _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.CHARACTER:\n {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.NULL_CHARACTER:\n {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.WHITESPACE_CHARACTER:\n {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({\n type: _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.EOF,\n location\n });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type !== type) {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n } else {\n this.currentCharacterToken.chars += ch;\n return;\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp) ? _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.WHITESPACE_CHARACTER : cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL ? _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.NULL_CHARACTER : _common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(_common_token_js__WEBPACK_IMPORTED_MODULE_2__.TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _matchNamedCharacterReference(cp) {\n let result = null;\n let excess = 0;\n let withoutSemicolon = false;\n for(let i = 0, current = entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree[0]; i >= 0; cp = this._consume()){\n i = (0,entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.determineBranch)(entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree, current, i + 1, cp);\n if (i < 0) break;\n excess += 1;\n current = entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree[i];\n const masked = current & entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n if (cp !== _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SEMICOLON && this._isCharacterReferenceInAttribute() && isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n result = [\n _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND\n ];\n // Skip over the value.\n i += valueLength;\n } else {\n // If this is a surrogate pair, consume the next two bytes.\n result = valueLength === 0 ? [\n entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree[i] & ~entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.BinTrieFlags.VALUE_LENGTH\n ] : valueLength === 1 ? [\n entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree[++i]\n ] : [\n entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree[++i],\n entities_lib_decode_js__WEBPACK_IMPORTED_MODULE_3__.htmlDecodeTree[++i]\n ];\n excess = 0;\n withoutSemicolon = cp !== _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SEMICOLON;\n }\n if (valueLength === 0) {\n // If the value is zero-length, we're done.\n this._consume();\n break;\n }\n }\n }\n this._unconsume(excess);\n if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingSemicolonAfterCharacterReference);\n }\n // We want to emit the error above on the code point after the entity.\n // We always consume one code point too many in the loop, and we wait to\n // unconsume it until after the error is emitted.\n this._unconsume(1);\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED;\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n } else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch(this.state){\n case State.DATA:\n {\n this._stateData(cp);\n break;\n }\n case State.RCDATA:\n {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT:\n {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA:\n {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT:\n {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN:\n {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN:\n {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME:\n {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN:\n {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN:\n {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME:\n {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN:\n {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN:\n {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME:\n {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN:\n {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN:\n {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME:\n {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START:\n {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH:\n {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED:\n {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH:\n {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH:\n {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:\n {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:\n {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME:\n {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START:\n {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED:\n {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:\n {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:\n {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:\n {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END:\n {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME:\n {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME:\n {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME:\n {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE:\n {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED:\n {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED:\n {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED:\n {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED:\n {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG:\n {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT:\n {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN:\n {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START:\n {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH:\n {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT:\n {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN:\n {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG:\n {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH:\n {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:\n {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH:\n {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END:\n {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG:\n {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE:\n {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME:\n {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME:\n {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME:\n {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD:\n {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:\n {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:\n {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:\n {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:\n {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:\n {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD:\n {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:\n {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:\n {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:\n {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:\n {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE:\n {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION:\n {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET:\n {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END:\n {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE:\n {\n this._stateCharacterReference(cp);\n break;\n }\n case State.NAMED_CHARACTER_REFERENCE:\n {\n this._stateNamedCharacterReference(cp);\n break;\n }\n case State.AMBIGUOUS_AMPERSAND:\n {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE:\n {\n this._stateNumericCharacterReference(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE_START:\n {\n this._stateHexademicalCharacterReferenceStart(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE:\n {\n this._stateHexademicalCharacterReference(cp);\n break;\n }\n case State.DECIMAL_CHARACTER_REFERENCE:\n {\n this._stateDecimalCharacterReference(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE_END:\n {\n this._stateNumericCharacterReferenceEnd(cp);\n break;\n }\n default:\n {\n throw new Error(\"Unknown state\");\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.TAG_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND:\n {\n this.returnState = State.DATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND:\n {\n this.returnState = State.RCDATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n } else switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK:\n {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUESTION_MARK:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofBeforeTagName);\n this._emitChars(\"<\");\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.invalidFirstCharacterOfTagName);\n this._emitChars(\"<\");\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n } else switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofBeforeTagName);\n this._emitChars(\"</\");\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.tagName += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n } else {\n this._emitChars(\"<\");\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n } else {\n this._emitChars(\"</\");\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default:\n {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars(\"</\");\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n } else {\n this._emitChars(\"<\");\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n } else {\n this._emitChars(\"</\");\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars(\"</\");\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK:\n {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars(\"<!\");\n break;\n }\n default:\n {\n this._emitChars(\"<\");\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n } else {\n this._emitChars(\"</\");\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars(\"</\");\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars(\"-\");\n } else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars(\"-\");\n } else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars(\"-\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars(\"-\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this._emitChars(\"-\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA;\n this._emitChars(\">\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n } else if (isAsciiLetter(cp)) {\n this._emitChars(\"<\");\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n } else {\n this._emitChars(\"<\");\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n } else {\n this._emitChars(\"</\");\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars(\"</\");\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for(let i = 0; i < _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length; i++){\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n } else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars(\"-\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars(\"<\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars(\"-\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars(\"<\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this._emitChars(\"-\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars(\"<\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.SCRIPT_DATA;\n this._emitChars(\">\");\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars(\"/\");\n } else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for(let i = 0; i < _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SCRIPT.length; i++){\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n } else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr(\"=\");\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default:\n {\n this._createAttr(\"\");\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN:\n {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.name += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n default:\n {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN:\n {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._createAttr(\"\");\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default:\n {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND:\n {\n this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.value += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND:\n {\n this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.value += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND:\n {\n this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this.currentAttr.value += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EQUALS_SIGN:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GRAVE_ACCENT:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SOLIDUS:\n {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.data += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n default:\n {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DASH_DASH, true)) {\n this._createCommentToken(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n } else if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n } else if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n } else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.cdataInHtmlContent);\n this._createCommentToken(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.CDATA_START.length + 1);\n this.currentToken.data = \"[CDATA[\";\n this.state = State.BOGUS_COMMENT;\n }\n } else if (!this._ensureHibernation()) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default:\n {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.COMMENT_END;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.data += \"-\";\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n token.data += \"<\";\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.data += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK:\n {\n token.data += \"!\";\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LESS_THAN_SIGN:\n {\n token.data += \"<\";\n break;\n }\n default:\n {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n } else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n } else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN && cp !== _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n this.state = State.COMMENT_END;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.data += \"-\";\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EXCLAMATION_MARK:\n {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n token.data += \"-\";\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.data += \"--\";\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.HYPHEN_MINUS:\n {\n token.data += \"--!\";\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.data += \"--!\";\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n } else switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n this._createDoctypeToken(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.name += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n } else if (this._consumeSequenceIfMatch(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.SEQUENCES.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n } else if (!this._ensureHibernation()) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = \"\";\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = \"\";\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n token.publicId = \"\";\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n token.publicId = \"\";\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.publicId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.publicId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n token.systemId = \"\";\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.QUOTATION_MARK:\n {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.systemId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.APOSTROPHE:\n {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n token.systemId += _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.REPLACEMENT_CHARACTER;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SPACE:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LINE_FEED:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.TABULATION:\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.FORM_FEED:\n {\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unexpectedNullCharacter);\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.RIGHT_SQUARE_BRACKET:\n {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.EOF:\n {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default:\n {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n } else {\n this._emitChars(\"]\");\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch(cp){\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.GREATER_THAN_SIGN:\n {\n this.state = State.DATA;\n break;\n }\n case _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.RIGHT_SQUARE_BRACKET:\n {\n this._emitChars(\"]\");\n break;\n }\n default:\n {\n this._emitChars(\"]]\");\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference(cp) {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NUMBER_SIGN) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this.state = State.NAMED_CHARACTER_REFERENCE;\n this._stateNamedCharacterReference(cp);\n } else {\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Named character reference state\n //------------------------------------------------------------------\n _stateNamedCharacterReference(cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n //NOTE: Matching can be abrupted by hibernation. In that case, match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n // Stay in the state, try again.\n } else if (matchResult) {\n for(let i = 0; i < matchResult.length; i++){\n this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n }\n this.state = this.returnState;\n } else {\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND);\n this.state = State.AMBIGUOUS_AMPERSAND;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n } else {\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SEMICOLON) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Numeric character reference state\n //------------------------------------------------------------------\n _stateNumericCharacterReference(cp) {\n this.charRefCode = 0;\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_SMALL_X || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.LATIN_CAPITAL_X) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n } else if (isAsciiDigit(cp)) {\n this.state = State.DECIMAL_CHARACTER_REFERENCE;\n this._stateDecimalCharacterReference(cp);\n } else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NUMBER_SIGN);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Hexademical character reference start state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReferenceStart(cp) {\n if (isAsciiHexDigit(cp)) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n this._stateHexademicalCharacterReference(cp);\n } else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference(_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NUMBER_SIGN);\n this._unconsume(2);\n this.state = this.returnState;\n }\n }\n // Hexademical character reference state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReference(cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n } else if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n } else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Decimal character reference state\n //------------------------------------------------------------------\n _stateDecimalCharacterReference(cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n } else if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n } else {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Numeric character reference end state\n //------------------------------------------------------------------\n _stateNumericCharacterReferenceEnd(cp) {\n if (this.charRefCode === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.NULL) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.nullCharacterReference);\n this.charRefCode = _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 1114111) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.REPLACEMENT_CHARACTER;\n } else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.isSurrogate)(this.charRefCode)) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.surrogateCharacterReference);\n this.charRefCode = _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.REPLACEMENT_CHARACTER;\n } else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.isUndefinedCodePoint)(this.charRefCode)) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.noncharacterCharacterReference);\n } else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.isControlCodePoint)(this.charRefCode) || this.charRefCode === _common_unicode_js__WEBPACK_IMPORTED_MODULE_1__.CODE_POINTS.CARRIAGE_RETURN) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_4__.ERR.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n if (replacement !== undefined) {\n this.charRefCode = replacement;\n }\n }\n this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n this._reconsumeInState(this.returnState, cp);\n }\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdG9rZW5pemVyL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ3VHO0FBQzFGO0FBQ3lCO0FBQ3hDO0FBQ007QUFDckQscURBQXFEO0FBQ3JELE1BQU1pQixxQ0FBcUMsSUFBSUMsSUFBSTtJQUMvQztRQUFDO1FBQU07S0FBSztJQUNaO1FBQUM7UUFBTTtLQUFLO0lBQ1o7UUFBQztRQUFNO0tBQUk7SUFDWDtRQUFDO1FBQU07S0FBSztJQUNaO1FBQUM7UUFBTTtLQUFLO0lBQ1o7UUFBQztRQUFNO0tBQUs7SUFDWjtRQUFDO1FBQU07S0FBSztJQUNaO1FBQUM7UUFBTTtLQUFJO0lBQ1g7UUFBQztRQUFNO0tBQUs7SUFDWjtRQUFDO1FBQU07S0FBSTtJQUNYO1FBQUM7UUFBTTtLQUFLO0lBQ1o7UUFBQztRQUFNO0tBQUk7SUFDWDtRQUFDO1FBQU07S0FBSTtJQUNYO1FBQUM7UUFBTTtLQUFLO0lBQ1o7UUFBQztRQUFNO0tBQUs7SUFDWjtRQUFDO1FBQU07S0FBSztJQUNaO1FBQUM7UUFBTTtLQUFLO0lBQ1o7UUFBQztRQUFNO0tBQUs7SUFDWjtRQUFDO1FBQU07S0FBSztJQUNaO1FBQUM7UUFBTTtLQUFLO0lBQ1o7UUFBQztRQUFNO0tBQUk7SUFDWDtRQUFDO1FBQU07S0FBSztJQUNaO1FBQUM7UUFBTTtLQUFJO0lBQ1g7UUFBQztRQUFNO0tBQUs7SUFDWjtRQUFDO1FBQU07S0FBSTtJQUNYO1FBQUM7UUFBTTtLQUFJO0lBQ1g7UUFBQztRQUFNO0tBQUk7Q0FDZDtBQUNELFFBQVE7QUFDUixJQUFJQztBQUNILFVBQVVBLEtBQUs7SUFDWkEsS0FBSyxDQUFDQSxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRztJQUMzQkEsS0FBSyxDQUFDQSxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRztJQUM3QkEsS0FBSyxDQUFDQSxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FB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QUksQ0FBQzRELFdBQVcsR0FBRztZQUM3QyxJQUFJLENBQUNVLElBQUksQ0FBQy9ELHVEQUFHQSxDQUFDdVksOEJBQThCO1FBQ2hELE9BQ0ssSUFBSTdZLHNFQUFrQkEsQ0FBQyxJQUFJLENBQUMyRCxXQUFXLEtBQUssSUFBSSxDQUFDQSxXQUFXLEtBQUtqRSwyREFBQ0EsQ0FBQ29aLGVBQWUsRUFBRTtZQUNyRixJQUFJLENBQUN6VSxJQUFJLENBQUMvRCx1REFBR0EsQ0FBQ3lZLHlCQUF5QjtZQUN2QyxNQUFNQyxjQUFjdlksbUNBQW1Dd1ksR0FBRyxDQUFDLElBQUksQ0FBQ3RWLFdBQVc7WUFDM0UsSUFBSXFWLGdCQUFnQkUsV0FBVztnQkFDM0IsSUFBSSxDQUFDdlYsV0FBVyxHQUFHcVY7WUFDdkI7UUFDSjtRQUNBLElBQUksQ0FBQ2xOLDJDQUEyQyxDQUFDLElBQUksQ0FBQ25JLFdBQVc7UUFDakUsSUFBSSxDQUFDNEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDN0MsV0FBVyxFQUFFdEM7SUFDN0M7QUFDSixFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3Rva2VuaXplci9pbmRleC5qcz81ZWU5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZXByb2Nlc3NvciB9IGZyb20gJy4vcHJlcHJvY2Vzc29yLmpzJztcbmltcG9ydCB7IENPREVfUE9JTlRTIGFzICQsIFNFUVVFTkNFUyBhcyAkJCwgUkVQTEFDRU1FTlRfQ0hBUkFDVEVSLCBpc1N1cnJvZ2F0ZSwgaXNVbmRlZmluZWRDb2RlUG9pbnQsIGlzQ29udHJvbENvZGVQb2ludCwgfSBmcm9tICcuLi9jb21tb24vdW5pY29kZS5qcyc7XG5pbXBvcnQgeyBUb2tlblR5cGUsIGdldFRva2VuQXR0ciwgfSBmcm9tICcuLi9jb21tb24vdG9rZW4uanMnO1xuaW1wb3J0IHsgaHRtbERlY29kZVRyZWUsIEJpblRyaWVGbGFncywgZGV0ZXJtaW5lQnJhbmNoIH0gZnJvbSAnZW50aXRpZXMvbGliL2RlY29kZS5qcyc7XG5pbXBvcnQgeyBFUlIgfSBmcm9tICcuLi9jb21tb24vZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHsgVEFHX0lELCBnZXRUYWdJRCB9IGZyb20gJy4uL2NvbW1vbi9odG1sLmpzJztcbi8vQzEgVW5pY29kZSBjb250cm9sIGNoYXJhY3RlciByZWZlcmVuY2UgcmVwbGFjZW1lbnRzXG5jb25zdCBDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTID0gbmV3IE1hcChbXG4gICAgWzB4ODAsIDgzNjRdLFxuICAgIFsweDgyLCA4MjE4XSxcbiAgICBbMHg4MywgNDAyXSxcbiAgICBbMHg4NCwgODIyMl0sXG4gICAgWzB4ODUsIDgyMzBdLFxuICAgIFsweDg2LCA4MjI0XSxcbiAgICBbMHg4NywgODIyNV0sXG4gICAgWzB4ODgsIDcxMF0sXG4gICAgWzB4ODksIDgyNDBdLFxuICAgIFsweDhhLCAzNTJdLFxuICAgIFsweDhiLCA4MjQ5XSxcbiAgICBbMHg4YywgMzM4XSxcbiAgICBbMHg4ZSwgMzgxXSxcbiAgICBbMHg5MSwgODIxNl0sXG4gICAgWzB4OTIsIDgyMTddLFxuICAgIFsweDkzLCA4MjIwXSxcbiAgICBbMHg5NCwgODIyMV0sXG4gICAgWzB4OTUsIDgyMjZdLFxuICAgIFsweDk2LCA4MjExXSxcbiAgICBbMHg5NywgODIxMl0sXG4gICAgWzB4OTgsIDczMl0sXG4gICAgWzB4OTksIDg0ODJdLFxuICAgIFsweDlhLCAzNTNdLFxuICAgIFsweDliLCA4MjUwXSxcbiAgICBbMHg5YywgMzM5XSxcbiAgICBbMHg5ZSwgMzgyXSxcbiAgICBbMHg5ZiwgMzc2XSxcbl0pO1xuLy9TdGF0ZXNcbnZhciBTdGF0ZTtcbihmdW5jdGlvbiAoU3RhdGUpIHtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRBVEFcIl0gPSAwXSA9IFwiREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkNEQVRBXCJdID0gMV0gPSBcIlJDREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkFXVEVYVFwiXSA9IDJdID0gXCJSQVdURVhUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQVwiXSA9IDNdID0gXCJTQ1JJUFRfREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUExBSU5URVhUXCJdID0gNF0gPSBcIlBMQUlOVEVYVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiVEFHX09QRU5cIl0gPSA1XSA9IFwiVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkVORF9UQUdfT1BFTlwiXSA9IDZdID0gXCJFTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlRBR19OQU1FXCJdID0gN10gPSBcIlRBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfTEVTU19USEFOX1NJR05cIl0gPSA4XSA9IFwiUkNEQVRBX0xFU1NfVEhBTl9TSUdOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfRU5EX1RBR19PUEVOXCJdID0gOV0gPSBcIlJDREFUQV9FTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJDREFUQV9FTkRfVEFHX05BTUVcIl0gPSAxMF0gPSBcIlJDREFUQV9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfTEVTU19USEFOX1NJR05cIl0gPSAxMV0gPSBcIlJBV1RFWFRfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfRU5EX1RBR19PUEVOXCJdID0gMTJdID0gXCJSQVdURVhUX0VORF9UQUdfT1BFTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkFXVEVYVF9FTkRfVEFHX05BTUVcIl0gPSAxM10gPSBcIlJBV1RFWFRfRU5EX1RBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTlwiXSA9IDE0XSA9IFwiU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTlwiXSA9IDE1XSA9IFwiU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVcIl0gPSAxNl0gPSBcIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUXCJdID0gMTddID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIXCJdID0gMThdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRFwiXSA9IDE5XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIXCJdID0gMjBdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIXCJdID0gMjFdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiXSA9IDIyXSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5cIl0gPSAyM10gPSBcIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRVwiXSA9IDI0XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRcIl0gPSAyNV0gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEXCJdID0gMjZdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSFwiXSA9IDI3XSA9IFwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIXCJdID0gMjhdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOXCJdID0gMjldID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRcIl0gPSAzMF0gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfQVRUUklCVVRFX05BTUVcIl0gPSAzMV0gPSBcIkJFRk9SRV9BVFRSSUJVVEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX05BTUVcIl0gPSAzMl0gPSBcIkFUVFJJQlVURV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9BVFRSSUJVVEVfTkFNRVwiXSA9IDMzXSA9IFwiQUZURVJfQVRUUklCVVRFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9BVFRSSUJVVEVfVkFMVUVcIl0gPSAzNF0gPSBcIkJFRk9SRV9BVFRSSUJVVEVfVkFMVUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEXCJdID0gMzVdID0gXCJBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURcIl0gPSAzNl0gPSBcIkFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURcIl0gPSAzN10gPSBcIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRFwiXSA9IDM4XSA9IFwiQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR1wiXSA9IDM5XSA9IFwiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiQk9HVVNfQ09NTUVOVFwiXSA9IDQwXSA9IFwiQk9HVVNfQ09NTUVOVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5cIl0gPSA0MV0gPSBcIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX1NUQVJUXCJdID0gNDJdID0gXCJDT01NRU5UX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX1NUQVJUX0RBU0hcIl0gPSA0M10gPSBcIkNPTU1FTlRfU1RBUlRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVFwiXSA9IDQ0XSA9IFwiQ09NTUVOVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTlwiXSA9IDQ1XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HXCJdID0gNDZdID0gXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIXCJdID0gNDddID0gXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSFwiXSA9IDQ4XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRfREFTSFwiXSA9IDQ5XSA9IFwiQ09NTUVOVF9FTkRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRcIl0gPSA1MF0gPSBcIkNPTU1FTlRfRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX0VORF9CQU5HXCJdID0gNTFdID0gXCJDT01NRU5UX0VORF9CQU5HXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFXCJdID0gNTJdID0gXCJET0NUWVBFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfRE9DVFlQRV9OQU1FXCJdID0gNTNdID0gXCJCRUZPUkVfRE9DVFlQRV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX05BTUVcIl0gPSA1NF0gPSBcIkRPQ1RZUEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9OQU1FXCJdID0gNTVdID0gXCJBRlRFUl9ET0NUWVBFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRcIl0gPSA1Nl0gPSBcIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCJdID0gNTddID0gXCJCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEXCJdID0gNThdID0gXCJET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRFwiXSA9IDU5XSA9IFwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCJdID0gNjBdID0gXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNcIl0gPSA2MV0gPSBcIkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRFwiXSA9IDYyXSA9IFwiQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIl0gPSA2M10gPSBcIkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIl0gPSA2NF0gPSBcIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCJdID0gNjVdID0gXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIl0gPSA2Nl0gPSBcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJPR1VTX0RPQ1RZUEVcIl0gPSA2N10gPSBcIkJPR1VTX0RPQ1RZUEVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNEQVRBX1NFQ1RJT05cIl0gPSA2OF0gPSBcIkNEQVRBX1NFQ1RJT05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVFwiXSA9IDY5XSA9IFwiQ0RBVEFfU0VDVElPTl9CUkFDS0VUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDREFUQV9TRUNUSU9OX0VORFwiXSA9IDcwXSA9IFwiQ0RBVEFfU0VDVElPTl9FTkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3MV0gPSBcIkNIQVJBQ1RFUl9SRUZFUkVOQ0VcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3Ml0gPSBcIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFNQklHVU9VU19BTVBFUlNBTkRcIl0gPSA3M10gPSBcIkFNQklHVU9VU19BTVBFUlNBTkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRVwiXSA9IDc0XSA9IFwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUXCJdID0gNzVdID0gXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFXCJdID0gNzZdID0gXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3N10gPSBcIkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORFwiXSA9IDc4XSA9IFwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORFwiO1xufSkoU3RhdGUgfHwgKFN0YXRlID0ge30pKTtcbi8vVG9rZW5pemVyIGluaXRpYWwgc3RhdGVzIGZvciBkaWZmZXJlbnQgbW9kZXNcbmV4cG9ydCBjb25zdCBUb2tlbml6ZXJNb2RlID0ge1xuICAgIERBVEE6IFN0YXRlLkRBVEEsXG4gICAgUkNEQVRBOiBTdGF0ZS5SQ0RBVEEsXG4gICAgUkFXVEVYVDogU3RhdGUuUkFXVEVYVCxcbiAgICBTQ1JJUFRfREFUQTogU3RhdGUuU0NSSVBUX0RBVEEsXG4gICAgUExBSU5URVhUOiBTdGF0ZS5QTEFJTlRFWFQsXG4gICAgQ0RBVEFfU0VDVElPTjogU3RhdGUuQ0RBVEFfU0VDVElPTixcbn07XG4vL1V0aWxzXG4vL09QVElNSVpBVElPTjogdGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBtb3ZlZCBvdXQgb2YgdGhpcyBtb2R1bGUuIFY4IENyYW5rc2hhZnQgd2lsbCBub3QgaW5saW5lXG4vL3RoaXMgZnVuY3Rpb25zIGlmIHRoZXkgd2lsbCBiZSBzaXR1YXRlZCBpbiBhbm90aGVyIG1vZHVsZSBkdWUgdG8gY29udGV4dCBzd2l0Y2guXG4vL0Fsd2F5cyBwZXJmb3JtIGlubGluaW5nIGNoZWNrIGJlZm9yZSBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbnMgKCdub2RlIC0tdHJhY2UtaW5saW5pbmcnKS5cbmZ1bmN0aW9uIGlzQXNjaWlEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkRJR0lUXzAgJiYgY3AgPD0gJC5ESUdJVF85O1xufVxuZnVuY3Rpb24gaXNBc2NpaVVwcGVyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fQ0FQSVRBTF9BICYmIGNwIDw9ICQuTEFUSU5fQ0FQSVRBTF9aO1xufVxuZnVuY3Rpb24gaXNBc2NpaUxvd2VyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fU01BTExfQSAmJiBjcCA8PSAkLkxBVElOX1NNQUxMX1o7XG59XG5mdW5jdGlvbiBpc0FzY2lpTGV0dGVyKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMb3dlcihjcCkgfHwgaXNBc2NpaVVwcGVyKGNwKTtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlBbHBoYU51bWVyaWMoY3ApIHtcbiAgICByZXR1cm4gaXNBc2NpaUxldHRlcihjcCkgfHwgaXNBc2NpaURpZ2l0KGNwKTtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlVcHBlckhleERpZ2l0KGNwKSB7XG4gICAgcmV0dXJuIGNwID49ICQuTEFUSU5fQ0FQSVRBTF9BICYmIGNwIDw9ICQuTEFUSU5fQ0FQSVRBTF9GO1xufVxuZnVuY3Rpb24gaXNBc2NpaUxvd2VySGV4RGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5MQVRJTl9TTUFMTF9BICYmIGNwIDw9ICQuTEFUSU5fU01BTExfRjtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBpc0FzY2lpRGlnaXQoY3ApIHx8IGlzQXNjaWlVcHBlckhleERpZ2l0KGNwKSB8fCBpc0FzY2lpTG93ZXJIZXhEaWdpdChjcCk7XG59XG5mdW5jdGlvbiB0b0FzY2lpTG93ZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgKyAzMjtcbn1cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjcCkge1xuICAgIHJldHVybiBjcCA9PT0gJC5TUEFDRSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuVEFCVUxBVElPTiB8fCBjcCA9PT0gJC5GT1JNX0ZFRUQ7XG59XG5mdW5jdGlvbiBpc0VudGl0eUluQXR0cmlidXRlSW52YWxpZEVuZChuZXh0Q3ApIHtcbiAgICByZXR1cm4gbmV4dENwID09PSAkLkVRVUFMU19TSUdOIHx8IGlzQXNjaWlBbHBoYU51bWVyaWMobmV4dENwKTtcbn1cbmZ1bmN0aW9uIGlzU2NyaXB0RGF0YURvdWJsZUVzY2FwZVNlcXVlbmNlRW5kKGNwKSB7XG4gICAgcmV0dXJuIGlzV2hpdGVzcGFjZShjcCkgfHwgY3AgPT09ICQuU09MSURVUyB8fCBjcCA9PT0gJC5HUkVBVEVSX1RIQU5fU0lHTjtcbn1cbi8vVG9rZW5pemVyXG5leHBvcnQgY2xhc3MgVG9rZW5pemVyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIC8qKiBFbnN1cmVzIHRoYXQgdGhlIHBhcnNpbmcgbG9vcCBpc24ndCBydW4gbXVsdGlwbGUgdGltZXMgYXQgb25jZS4gKi9cbiAgICAgICAgdGhpcy5pbkxvb3AgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGFkanVzdGVkIG5vZGUgZXhpc3RzLCBpcyBub3QgYW4gZWxlbWVudCBpbiB0aGUgSFRNTCBuYW1lc3BhY2UsXG4gICAgICAgICAqIGFuZCB0aGF0IGl0IGlzIG5vdCBhbiBpbnRlZ3JhdGlvbiBwb2ludCBmb3IgZWl0aGVyIE1hdGhNTCBvciBIVE1MLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAc2VlIHtAbGluayBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjdHJlZS1jb25zdHJ1Y3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmluRm9yZWlnbk5vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gJyc7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IC0xO1xuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IC0xO1xuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IHsgbmFtZTogJycsIHZhbHVlOiAnJyB9O1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NvciA9IG5ldyBQcmVwcm9jZXNzb3IoaGFuZGxlcik7XG4gICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oLTEpO1xuICAgIH1cbiAgICAvL0Vycm9yc1xuICAgIF9lcnIoY29kZSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmhhbmRsZXIpLm9uUGFyc2VFcnJvcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHRoaXMucHJlcHJvY2Vzc29yLmdldEVycm9yKGNvZGUpKTtcbiAgICB9XG4gICAgLy8gTk9URTogYG9mZnNldGAgbWF5IG5ldmVyIHJ1biBhY3Jvc3MgbGluZSBib3VuZGFyaWVzLlxuICAgIGdldEN1cnJlbnRMb2NhdGlvbihvZmZzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0TGluZTogdGhpcy5wcmVwcm9jZXNzb3IubGluZSxcbiAgICAgICAgICAgIHN0YXJ0Q29sOiB0aGlzLnByZXByb2Nlc3Nvci5jb2wgLSBvZmZzZXQsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogdGhpcy5wcmVwcm9jZXNzb3Iub2Zmc2V0IC0gb2Zmc2V0LFxuICAgICAgICAgICAgZW5kTGluZTogLTEsXG4gICAgICAgICAgICBlbmRDb2w6IC0xLFxuICAgICAgICAgICAgZW5kT2Zmc2V0OiAtMSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX3J1blBhcnNpbmdMb29wKCkge1xuICAgICAgICBpZiAodGhpcy5pbkxvb3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaW5Mb29wID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKHRoaXMuYWN0aXZlICYmICF0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAwO1xuICAgICAgICAgICAgY29uc3QgY3AgPSB0aGlzLl9jb25zdW1lKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxsU3RhdGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5Mb29wID0gZmFsc2U7XG4gICAgfVxuICAgIC8vQVBJXG4gICAgcGF1c2UoKSB7XG4gICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmVzdW1lKHdyaXRlQ2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJzZXIgd2FzIGFscmVhZHkgcmVzdW1lZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIC8vIE5lY2Vzc2FyeSBmb3Igc3luY2hyb25vdXMgcmVzdW1lLlxuICAgICAgICBpZiAodGhpcy5pbkxvb3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKCk7XG4gICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICAgICAgICAgIHdyaXRlQ2FsbGJhY2sgPT09IG51bGwgfHwgd3JpdGVDYWxsYmFjayA9PT0gdm9pZCAwID8gdm9pZCAwIDogd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaywgd3JpdGVDYWxsYmFjaykge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLndyaXRlKGNodW5rLCBpc0xhc3RDaHVuayk7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKCk7XG4gICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICAgICAgICAgIHdyaXRlQ2FsbGJhY2sgPT09IG51bGwgfHwgd3JpdGVDYWxsYmFjayA9PT0gdm9pZCAwID8gdm9pZCAwIDogd3JpdGVDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5pbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AoKTtcbiAgICB9XG4gICAgLy9IaWJlcm5hdGlvblxuICAgIF9lbnN1cmVIaWJlcm5hdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLmVuZE9mQ2h1bmtIaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3VuY29uc3VtZSh0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvL0NvbnN1bXB0aW9uXG4gICAgX2NvbnN1bWUoKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90Kys7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG4gICAgfVxuICAgIF91bmNvbnN1bWUoY291bnQpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgLT0gY291bnQ7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLnJldHJlYXQoY291bnQpO1xuICAgIH1cbiAgICBfcmVjb25zdW1lSW5TdGF0ZShzdGF0ZSwgY3ApIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLl9jYWxsU3RhdGUoY3ApO1xuICAgIH1cbiAgICBfYWR2YW5jZUJ5KGNvdW50KSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ICs9IGNvdW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmFkdmFuY2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfY29uc3VtZVNlcXVlbmNlSWZNYXRjaChwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKHBhdHRlcm4sIGNhc2VTZW5zaXRpdmUpKSB7XG4gICAgICAgICAgICAvLyBXZSB3aWxsIGFscmVhZHkgaGF2ZSBjb25zdW1lZCBvbmUgY2hhcmFjdGVyIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHBhdHRlcm4ubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vVG9rZW4gY3JlYXRpb25cbiAgICBfY3JlYXRlU3RhcnRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlblR5cGUuU1RBUlRfVEFHLFxuICAgICAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgICAgICB0YWdJRDogVEFHX0lELlVOS05PV04sXG4gICAgICAgICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhY2tTZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhdHRyczogW10sXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMSksXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9jcmVhdGVFbmRUYWdUb2tlbigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiBUb2tlblR5cGUuRU5EX1RBRyxcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgdGFnSUQ6IFRBR19JRC5VTktOT1dOLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYWNrU2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDIpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfY3JlYXRlQ29tbWVudFRva2VuKG9mZnNldCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuVHlwZS5DT01NRU5ULFxuICAgICAgICAgICAgZGF0YTogJycsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5nZXRDdXJyZW50TG9jYXRpb24ob2Zmc2V0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuVHlwZS5ET0NUWVBFLFxuICAgICAgICAgICAgbmFtZTogaW5pdGlhbE5hbWUsXG4gICAgICAgICAgICBmb3JjZVF1aXJrczogZmFsc2UsXG4gICAgICAgICAgICBwdWJsaWNJZDogbnVsbCxcbiAgICAgICAgICAgIHN5c3RlbUlkOiBudWxsLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuY3VycmVudExvY2F0aW9uLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2hhcnMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgY2hhcnMsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vVGFnIGF0dHJpYnV0ZXNcbiAgICBfY3JlYXRlQXR0cihhdHRyTmFtZUZpcnN0Q2gpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IHtcbiAgICAgICAgICAgIG5hbWU6IGF0dHJOYW1lRmlyc3RDaCxcbiAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigwKTtcbiAgICB9XG4gICAgX2xlYXZlQXR0ck5hbWUoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBpZiAoZ2V0VG9rZW5BdHRyKHRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xuICAgICAgICAgICAgaWYgKHRva2VuLmxvY2F0aW9uICYmIHRoaXMuY3VycmVudExvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ckxvY2F0aW9ucyA9ICgoX2EgPSAoX2IgPSB0b2tlbi5sb2NhdGlvbikuYXR0cnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChfYi5hdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCkpKTtcbiAgICAgICAgICAgICAgICBhdHRyTG9jYXRpb25zW3RoaXMuY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRMb2NhdGlvbjtcbiAgICAgICAgICAgICAgICAvLyBTZXQgZW5kIGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZHVwbGljYXRlQXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfbGVhdmVBdHRyVmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMb2NhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24uZW5kTGluZSA9IHRoaXMucHJlcHJvY2Vzc29yLmxpbmU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnByZXByb2Nlc3Nvci5jb2w7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5lbmRPZmZzZXQgPSB0aGlzLnByZXByb2Nlc3Nvci5vZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9Ub2tlbiBlbWlzc2lvblxuICAgIHByZXBhcmVUb2tlbihjdCkge1xuICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKGN0LmxvY2F0aW9uKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgICAgICBpZiAoY3QubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGN0LmxvY2F0aW9uLmVuZExpbmUgPSB0aGlzLnByZXByb2Nlc3Nvci5saW5lO1xuICAgICAgICAgICAgY3QubG9jYXRpb24uZW5kQ29sID0gdGhpcy5wcmVwcm9jZXNzb3IuY29sICsgMTtcbiAgICAgICAgICAgIGN0LmxvY2F0aW9uLmVuZE9mZnNldCA9IHRoaXMucHJlcHJvY2Vzc29yLm9mZnNldCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigtMSk7XG4gICAgfVxuICAgIGVtaXRDdXJyZW50VGFnVG9rZW4oKSB7XG4gICAgICAgIGNvbnN0IGN0ID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHRoaXMucHJlcGFyZVRva2VuKGN0KTtcbiAgICAgICAgY3QudGFnSUQgPSBnZXRUYWdJRChjdC50YWdOYW1lKTtcbiAgICAgICAgaWYgKGN0LnR5cGUgPT09IFRva2VuVHlwZS5TVEFSVF9UQUcpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9IGN0LnRhZ05hbWU7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25TdGFydFRhZyhjdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3QuYXR0cnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW5kVGFnV2l0aEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN0LnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lbmRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbkVuZFRhZyhjdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG4gICAgfVxuICAgIGVtaXRDdXJyZW50Q29tbWVudChjdCkge1xuICAgICAgICB0aGlzLnByZXBhcmVUb2tlbihjdCk7XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkNvbW1lbnQoY3QpO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcbiAgICB9XG4gICAgZW1pdEN1cnJlbnREb2N0eXBlKGN0KSB7XG4gICAgICAgIHRoaXMucHJlcGFyZVRva2VuKGN0KTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uRG9jdHlwZShjdCk7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuICAgIH1cbiAgICBfZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbihuZXh0TG9jYXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgYSBwZW5kaW5nIGNoYXJhY3RlciB0b2tlbiwgbWFrZSBpdCdzIGVuZCBsb2NhdGlvbiBlcXVhbCB0byB0aGVcbiAgICAgICAgICAgIC8vY3VycmVudCB0b2tlbidzIHN0YXJ0IGxvY2F0aW9uLlxuICAgICAgICAgICAgaWYgKG5leHRMb2NhdGlvbiAmJiB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZExpbmUgPSBuZXh0TG9jYXRpb24uc3RhcnRMaW5lO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZENvbCA9IG5leHRMb2NhdGlvbi5zdGFydENvbDtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5sb2NhdGlvbi5lbmRPZmZzZXQgPSBuZXh0TG9jYXRpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uQ2hhcmFjdGVyKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbk51bGxDaGFyYWN0ZXIodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uV2hpdGVzcGFjZUNoYXJhY3Rlcih0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfZW1pdEVPRlRva2VuKCkge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDApO1xuICAgICAgICBpZiAobG9jYXRpb24pIHtcbiAgICAgICAgICAgIGxvY2F0aW9uLmVuZExpbmUgPSBsb2NhdGlvbi5zdGFydExpbmU7XG4gICAgICAgICAgICBsb2NhdGlvbi5lbmRDb2wgPSBsb2NhdGlvbi5zdGFydENvbDtcbiAgICAgICAgICAgIGxvY2F0aW9uLmVuZE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4obG9jYXRpb24pO1xuICAgICAgICB0aGlzLmhhbmRsZXIub25Fb2YoeyB0eXBlOiBUb2tlblR5cGUuRU9GLCBsb2NhdGlvbiB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gICAgLy9DaGFyYWN0ZXJzIGVtaXNzaW9uXG4gICAgLy9PUFRJTUlaQVRJT046IHNwZWNpZmljYXRpb24gdXNlcyBvbmx5IG9uZSB0eXBlIG9mIGNoYXJhY3RlciB0b2tlbnMgKG9uZSB0b2tlbiBwZXIgY2hhcmFjdGVyKS5cbiAgICAvL1RoaXMgY2F1c2VzIGEgaHVnZSBtZW1vcnkgb3ZlcmhlYWQgYW5kIGEgbG90IG9mIHVubmVjZXNzYXJ5IHBhcnNlciBsb29wcy4gcGFyc2U1IHVzZXMgMyBncm91cHMgb2YgY2hhcmFjdGVycy5cbiAgICAvL0lmIHdlIGhhdmUgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGdyb3VwLCB0aGUgcGFyc2VyIGNhbiBwcm9jZXNzIGl0XG4gICAgLy9hcyBhIHNpbmdsZSBzb2xpZCBjaGFyYWN0ZXIgdG9rZW4uXG4gICAgLy9TbywgdGhlcmUgYXJlIDMgdHlwZXMgb2YgY2hhcmFjdGVyIHRva2VucyBpbiBwYXJzZTU6XG4gICAgLy8xKVRva2VuVHlwZS5OVUxMX0NIQVJBQ1RFUiAtIFxcdTAwMDAtY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFx1MDAwMFxcdTAwMDBcXHUwMDAwJylcbiAgICAvLzIpVG9rZW5UeXBlLldISVRFU1BBQ0VfQ0hBUkFDVEVSIC0gYW55IHdoaXRlc3BhY2UvbmV3LWxpbmUgY2hhcmFjdGVyIHNlcXVlbmNlcyAoZS5nLiAnXFxuICBcXHJcXHQgICBcXGYnKVxuICAgIC8vMylUb2tlblR5cGUuQ0hBUkFDVEVSIC0gYW55IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb24ndCBiZWxvbmcgdG8gZ3JvdXBzIDEgYW5kIDIgKGUuZy4gJ2FiY2RlZjEyMzRAQCMkJV4nKVxuICAgIF9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4udHlwZSAhPT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbih0aGlzLmN1cnJlbnRMb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi5jaGFycyArPSBjaDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3JlYXRlQ2hhcmFjdGVyVG9rZW4odHlwZSwgY2gpO1xuICAgIH1cbiAgICBfZW1pdENvZGVQb2ludChjcCkge1xuICAgICAgICBjb25zdCB0eXBlID0gaXNXaGl0ZXNwYWNlKGNwKVxuICAgICAgICAgICAgPyBUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVJcbiAgICAgICAgICAgIDogY3AgPT09ICQuTlVMTFxuICAgICAgICAgICAgICAgID8gVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSXG4gICAgICAgICAgICAgICAgOiBUb2tlblR5cGUuQ0hBUkFDVEVSO1xuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApKTtcbiAgICB9XG4gICAgLy9OT1RFOiB1c2VkIHdoZW4gd2UgZW1pdCBjaGFyYWN0ZXJzIGV4cGxpY2l0bHkuXG4gICAgLy9UaGlzIGlzIGFsd2F5cyBmb3Igbm9uLXdoaXRlc3BhY2UgYW5kIG5vbi1udWxsIGNoYXJhY3RlcnMsIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZCBhZGRpdGlvbmFsIGNoZWNrcy5cbiAgICBfZW1pdENoYXJzKGNoKSB7XG4gICAgICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbihUb2tlblR5cGUuQ0hBUkFDVEVSLCBjaCk7XG4gICAgfVxuICAgIC8vIENoYXJhY3RlciByZWZlcmVuY2UgaGVscGVyc1xuICAgIF9tYXRjaE5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICBsZXQgZXhjZXNzID0gMDtcbiAgICAgICAgbGV0IHdpdGhvdXRTZW1pY29sb24gPSBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGN1cnJlbnQgPSBodG1sRGVjb2RlVHJlZVswXTsgaSA+PSAwOyBjcCA9IHRoaXMuX2NvbnN1bWUoKSkge1xuICAgICAgICAgICAgaSA9IGRldGVybWluZUJyYW5jaChodG1sRGVjb2RlVHJlZSwgY3VycmVudCwgaSArIDEsIGNwKTtcbiAgICAgICAgICAgIGlmIChpIDwgMClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGV4Y2VzcyArPSAxO1xuICAgICAgICAgICAgY3VycmVudCA9IGh0bWxEZWNvZGVUcmVlW2ldO1xuICAgICAgICAgICAgY29uc3QgbWFza2VkID0gY3VycmVudCAmIEJpblRyaWVGbGFncy5WQUxVRV9MRU5HVEg7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYnJhbmNoIGlzIGEgdmFsdWUsIHN0b3JlIGl0IGFuZCBjb250aW51ZVxuICAgICAgICAgICAgaWYgKG1hc2tlZCkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBtYXNrIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgdGhlIHZhbHVlLCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgYnl0ZS5cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUxlbmd0aCA9IChtYXNrZWQgPj4gMTQpIC0gMTtcbiAgICAgICAgICAgICAgICAvLyBBdHRyaWJ1dGUgdmFsdWVzIHRoYXQgYXJlbid0IHRlcm1pbmF0ZWQgcHJvcGVybHkgYXJlbid0IHBhcnNlZCwgYW5kIHNob3VsZG4ndCBsZWFkIHRvIGEgcGFyc2VyIGVycm9yLlxuICAgICAgICAgICAgICAgIC8vIFNlZSB0aGUgZXhhbXBsZSBpbiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZS1zdGF0ZVxuICAgICAgICAgICAgICAgIGlmIChjcCAhPT0gJC5TRU1JQ09MT04gJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpICYmXG4gICAgICAgICAgICAgICAgICAgIGlzRW50aXR5SW5BdHRyaWJ1dGVJbnZhbGlkRW5kKHRoaXMucHJlcHJvY2Vzc29yLnBlZWsoMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vTk9URTogd2UgZG9uJ3QgZmx1c2ggYWxsIGNvbnN1bWVkIGNvZGUgcG9pbnRzIGhlcmUsIGFuZCBpbnN0ZWFkIHN3aXRjaCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzdGF0ZSBhZnRlclxuICAgICAgICAgICAgICAgICAgICAvL2VtaXR0aW5nIGFuIGFtcGVyc2FuZC4gVGhpcyBpcyBmaW5lLCBhcyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3b24ndCBiZSBwYXJzZWQgZGlmZmVyZW50bHkgaW4gYXR0cmlidXRlcy5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gWyQuQU1QRVJTQU5EXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBvdmVyIHRoZSB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgICAgaSArPSB2YWx1ZUxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdXJyb2dhdGUgcGFpciwgY29uc3VtZSB0aGUgbmV4dCB0d28gYnl0ZXMuXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gW2h0bWxEZWNvZGVUcmVlW2ldICYgfkJpblRyaWVGbGFncy5WQUxVRV9MRU5HVEhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZUxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFtodG1sRGVjb2RlVHJlZVsrK2ldXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtodG1sRGVjb2RlVHJlZVsrK2ldLCBodG1sRGVjb2RlVHJlZVsrK2ldXTtcbiAgICAgICAgICAgICAgICAgICAgZXhjZXNzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2l0aG91dFNlbWljb2xvbiA9IGNwICE9PSAkLlNFTUlDT0xPTjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyB6ZXJvLWxlbmd0aCwgd2UncmUgZG9uZS5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdW5jb25zdW1lKGV4Y2Vzcyk7XG4gICAgICAgIGlmICh3aXRob3V0U2VtaWNvbG9uICYmICF0aGlzLnByZXByb2Nlc3Nvci5lbmRPZkNodW5rSGl0KSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2Ugd2FudCB0byBlbWl0IHRoZSBlcnJvciBhYm92ZSBvbiB0aGUgY29kZSBwb2ludCBhZnRlciB0aGUgZW50aXR5LlxuICAgICAgICAvLyBXZSBhbHdheXMgY29uc3VtZSBvbmUgY29kZSBwb2ludCB0b28gbWFueSBpbiB0aGUgbG9vcCwgYW5kIHdlIHdhaXQgdG9cbiAgICAgICAgLy8gdW5jb25zdW1lIGl0IHVudGlsIGFmdGVyIHRoZSBlcnJvciBpcyBlbWl0dGVkLlxuICAgICAgICB0aGlzLl91bmNvbnN1bWUoMSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMucmV0dXJuU3RhdGUgPT09IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRCB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEKTtcbiAgICB9XG4gICAgX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZShjcCkge1xuICAgICAgICBpZiAodGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENhbGxpbmcgc3RhdGVzIHRoaXMgd2F5IHR1cm5zIG91dCB0byBiZSBtdWNoIGZhc3RlciB0aGFuIGFueSBvdGhlciBhcHByb2FjaC5cbiAgICBfY2FsbFN0YXRlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSBTdGF0ZS5EQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEYXRhKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkNEQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGEoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQVdURVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5QTEFJTlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVBsYWludGV4dChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlRBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YUxlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJDREFUQV9FTkRfVEFHX09QRU46IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YUVuZFRhZ09wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkFXVEVYVF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhTGVzc1RoYW5TaWduKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVTdGFydChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQVRUUklCVVRFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9WQUxVRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlVmFsdWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfVU5RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2VsZkNsb3NpbmdTdGFydFRhZyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJPR1VTX0NPTU1FTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk1BUktVUF9ERUNMQVJBVElPTl9PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVNYXJrdXBEZWNsYXJhdGlvbk9wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX1NUQVJUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50U3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX1NUQVJUX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRTdGFydERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFORzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmcoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfRU5EX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRFbmREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9FTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRFbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0VORF9CQU5HOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kQmFuZyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJPR1VTX0RPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT05fQlJBQ0tFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uQnJhY2tldChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT05fRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDZGF0YVNlY3Rpb25FbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5OQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkFNQklHVU9VU19BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFtYmlndW91c0FtcGVyc2FuZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUhleGFkZW1pY2FsQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5IRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVIZXhhZGVtaWNhbENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRGVjaW1hbENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2VFbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzdGF0ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFN0YXRlIG1hY2hpbmVcbiAgICAvLyBEYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEYXRhKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5UQUdfT1BFTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gIFJDREFUQSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gU3RhdGUuUkNEQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DSEFSQUNURVJfUkVGRVJFTkNFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQV9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkFXVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGEoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBQTEFJTlRFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVBsYWludGV4dChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVUYWdPcGVuKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlU3RhcnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLkVYQ0xBTUFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk1BUktVUF9ERUNMQVJBVElPTl9PUEVOO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkVORF9UQUdfT1BFTjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5RVUVTVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFF1ZXN0aW9uTWFya0luc3RlYWRPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRGF0YShjcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBFbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0VuZFRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZCZWZvcmVUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUYWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlVGFnTmFtZShjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4udGFnTmFtZSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4udGFnTmFtZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChpc0FzY2lpVXBwZXIoY3ApID8gdG9Bc2NpaUxvd2VyKGNwKSA6IGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQ0RBVEEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJjZGF0YUxlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQV9FTkRfVEFHX09QRU47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhRW5kVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlU3BlY2lhbEVuZFRhZyhfY3ApIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKHRoaXMubGFzdFN0YXJ0VGFnTmFtZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IHRoaXMubGFzdFN0YXJ0VGFnTmFtZTtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLnByZXByb2Nlc3Nvci5wZWVrKHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZHZhbmNlQnkodGhpcy5sYXN0U3RhcnRUYWdOYW1lLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhRW5kVGFnTmFtZShjcCkge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVTcGVjaWFsRW5kVGFnKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmNkYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSYXd0ZXh0TGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVF9FTkRfVEFHX09QRU47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dEVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVF9FTkRfVEFHX05BTUU7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJhd3RleHRFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dEVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUxlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU09MSURVUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FTkRfVEFHX09QRU47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8IScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnQoY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZSBzdGFydCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSDtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnQoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUU7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZW5kIHRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBzdGFydCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0KGNwKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKCQkLlNDUklQVCwgZmFsc2UpICYmXG4gICAgICAgICAgICBpc1NjcmlwdERhdGFEb3VibGVFc2NhcGVTZXF1ZW5jZUVuZCh0aGlzLnByZXByb2Nlc3Nvci5wZWVrKCQkLlNDUklQVC5sZW5ndGgpKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICQkLlNDUklQVC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQodGhpcy5fY29uc3VtZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPicpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORDtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmQoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLnN0YXJ0c1dpdGgoJCQuU0NSSVBULCBmYWxzZSkgJiZcbiAgICAgICAgICAgIGlzU2NyaXB0RGF0YURvdWJsZUVzY2FwZVNlcXVlbmNlRW5kKHRoaXMucHJlcHJvY2Vzc29yLnBlZWsoJCQuU0NSSVBULmxlbmd0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgJCQuU0NSSVBULmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludCh0aGlzLl9jb25zdW1lKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBhdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOlxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOlxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignPScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyTmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfVkFMVUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRTpcbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoaXNBc2NpaVVwcGVyKGNwKSA/IHRvQXNjaWlMb3dlcihjcCkgOiBjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgYXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9WQUxVRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUF0dHIoJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBhdHRyaWJ1dGUgdmFsdWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZUF0dHJpYnV0ZVZhbHVlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFNUEVSU0FORDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXR0cmlidXRlIHZhbHVlIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAodW5xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOlxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046XG4gICAgICAgICAgICBjYXNlICQuR1JBVkVfQUNDRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkQ2hhcmFjdGVySW5VbnF1b3RlZEF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBhdHRyaWJ1dGUgdmFsdWUgKHF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2VsZi1jbG9zaW5nIHN0YXJ0IHRhZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2VsZkNsb3NpbmdTdGFydFRhZyhjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICAgICAgICAgIHRva2VuLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRTb2xpZHVzSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCb2d1cyBjb21tZW50IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCb2d1c0NvbW1lbnQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gTWFya3VwIGRlY2xhcmF0aW9uIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZU1hcmt1cERlY2xhcmF0aW9uT3BlbihjcCkge1xuICAgICAgICBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5EQVNIX0RBU0gsIHRydWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oJCQuREFTSF9EQVNILmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfU1RBUlQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5ET0NUWVBFLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IERvY3R5cGVzIHRva2VucyBhcmUgY3JlYXRlZCB3aXRob3V0IGZpeGVkIG9mZnNldHMuIFdlIGtlZXAgdHJhY2sgb2YgdGhlIG1vbWVudCBhIGRvY3R5cGUgKm1pZ2h0KiBzdGFydCBoZXJlLlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigkJC5ET0NUWVBFLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5DREFUQV9TVEFSVCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluRm9yZWlnbk5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY2RhdGFJbkh0bWxDb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oJCQuQ0RBVEFfU1RBUlQubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSA9ICdbQ0RBVEFbJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IFNlcXVlbmNlIGxvb2t1cHMgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UsIGxvb2t1cFxuICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmluY29ycmVjdGx5T3BlbmVkQ29tbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNDb21tZW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50U3RhcnQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX1NUQVJUX0RBU0g7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRTdGFydERhc2goY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORF9EQVNIO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnPCc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJyEnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICc8JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmcoY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50TGVzc1RoYW5TaWduQmFuZ0Rhc2goY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfREFTSDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZERhc2goY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaERhc2goY3ApIHtcbiAgICAgICAgaWYgKGNwICE9PSAkLkdSRUFURVJfVEhBTl9TSUdOICYmIGNwICE9PSAkLkVPRikge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5uZXN0ZWRDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkQ7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZChjcCk7XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRFbmREYXNoKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50RW5kKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FWENMQU1BVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfRU5EX0JBTkc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctLSc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IGVuZCBiYW5nIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50RW5kQmFuZyhjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLS0hJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfREFTSDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlDbG9zZWRDb21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4oU3RyaW5nLmZyb21DaGFyQ29kZSh0b0FzY2lpTG93ZXIoY3ApKSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9OQU1FO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5uYW1lICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5uYW1lICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGlzQXNjaWlVcHBlcihjcCkgPyB0b0FzY2lpTG93ZXIoY3ApIDogY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlTmFtZShjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5QVUJMSUMsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCgkJC5TWVNURU0sIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9OT1RFOiBzZXF1ZW5jZSBsb29rdXAgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UgbG9va3VwXG4gICAgICAgICAgICAgICAgLy9yZXN1bHRzIGFyZSBubyBsb25nZXIgdmFsaWQgYW5kIHdlIHdpbGwgbmVlZCB0byBzdGFydCBvdmVyLlxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW52YWxpZENoYXJhY3RlclNlcXVlbmNlQWZ0ZXJEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBwdWJsaWMga2V5d29yZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBET0NUWVBFIHN5c3RlbSBrZXl3b3JkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBzeXN0ZW0gaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQm9ndXMgRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQm9ndXNEb2N0eXBlKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDREFUQSBzZWN0aW9uIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDZGF0YVNlY3Rpb24oY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNEQVRBX1NFQ1RJT05fQlJBQ0tFVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ2RhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENEQVRBIHNlY3Rpb24gYnJhY2tldCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ2RhdGFTZWN0aW9uQnJhY2tldChjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OX0VORDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXScpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNEQVRBX1NFQ1RJT047XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ0RBVEEgc2VjdGlvbiBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNkYXRhU2VjdGlvbkVuZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5SSUdIVF9TUVVBUkVfQlJBQ0tFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnXV0nKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTjtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5OVU1CRVJfU0lHTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgkLkFNUEVSU0FORCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUsIGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShjcCkge1xuICAgICAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRoaXMuX21hdGNoTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICAvL05PVEU6IE1hdGNoaW5nIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlLCBtYXRjaFxuICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgIGlmICh0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICAvLyBTdGF5IGluIHRoZSBzdGF0ZSwgdHJ5IGFnYWluLlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1hdGNoUmVzdWx0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoUmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKG1hdGNoUmVzdWx0W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCQuQU1QRVJTQU5EKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BTUJJR1VPVVNfQU1QRVJTQU5EO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFtYmlndW9zIGFtcGVyc2FuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQW1iaWd1b3VzQW1wZXJzYW5kKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjcCA9PT0gJC5TRU1JQ09MT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUsIGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IDA7XG4gICAgICAgIGlmIChjcCA9PT0gJC5MQVRJTl9TTUFMTF9YIHx8IGNwID09PSAkLkxBVElOX0NBUElUQUxfWCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5saW5lZCBkZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhcnQgc3RhdGVcbiAgICAgICAgZWxzZSBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlRGVjaW1hbENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoJC5BTVBFUlNBTkQpO1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCQuTlVNQkVSX1NJR04pO1xuICAgICAgICAgICAgdGhpcy5fcmVjb25zdW1lSW5TdGF0ZSh0aGlzLnJldHVyblN0YXRlLCBjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gSGV4YWRlbWljYWwgY2hhcmFjdGVyIHJlZmVyZW5jZSBzdGFydCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlSGV4YWRlbWljYWxDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydChjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZUhleGFkZW1pY2FsQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSgkLkFNUEVSU0FORCk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoJC5OVU1CRVJfU0lHTik7XG4gICAgICAgICAgICB0aGlzLl91bmNvbnN1bWUoMik7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5yZXR1cm5TdGF0ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBIZXhhZGVtaWNhbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVIZXhhZGVtaWNhbENoYXJhY3RlclJlZmVyZW5jZShjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaVVwcGVySGV4RGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDM3O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzQXNjaWlMb3dlckhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxNiArIGNwIC0gMHg1NztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDE2ICsgY3AgLSAweDMwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZUVuZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEZWNpbWFsQ2hhcmFjdGVyUmVmZXJlbmNlKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpRGlnaXQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdGhpcy5jaGFyUmVmQ29kZSAqIDEwICsgY3AgLSAweDMwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZUVuZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZUVuZChjcCkge1xuICAgICAgICBpZiAodGhpcy5jaGFyUmVmQ29kZSA9PT0gJC5OVUxMKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm51bGxDaGFyYWN0ZXJSZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9ICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY2hhclJlZkNvZGUgPiAxMTE0MTExKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2UpO1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9ICQuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzU3Vycm9nYXRlKHRoaXMuY2hhclJlZkNvZGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gJC5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWRDb2RlUG9pbnQodGhpcy5jaGFyUmVmQ29kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIubm9uY2hhcmFjdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0NvbnRyb2xDb2RlUG9pbnQodGhpcy5jaGFyUmVmQ29kZSkgfHwgdGhpcy5jaGFyUmVmQ29kZSA9PT0gJC5DQVJSSUFHRV9SRVRVUk4pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuY29udHJvbENoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IEMxX0NPTlRST0xTX1JFRkVSRU5DRV9SRVBMQUNFTUVOVFMuZ2V0KHRoaXMuY2hhclJlZkNvZGUpO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKHRoaXMuY2hhclJlZkNvZGUpO1xuICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUsIGNwKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOlsiUHJlcHJvY2Vzc29yIiwiQ09ERV9QT0lOVFMiLCIkIiwiU0VRVUVOQ0VTIiwiJCQiLCJSRVBMQUNFTUVOVF9DSEFSQUNURVIiLCJpc1N1cnJvZ2F0ZSIsImlzVW5kZWZpbmVkQ29kZVBvaW50IiwiaXNDb250cm9sQ29kZVBvaW50IiwiVG9rZW5UeXBlIiwiZ2V0VG9rZW5BdHRyIiwiaHRtbERlY29kZVRyZWUiLCJCaW5UcmllRmxhZ3MiLCJkZXRlcm1pbmVCcmFuY2giLCJFUlIiLCJUQUdfSUQiLCJnZXRUYWdJRCIsIkMxX0NPTlRST0xTX1JFRkVSRU5DRV9SRVBMQUNFTUVOVFMiLCJNYXAiLCJTdGF0ZSIsIlRva2VuaXplck1vZGUiLCJEQVRBIiwiUkNEQVRBIiwiUkFXVEVYVCIsIlNDUklQVF9EQVRBIiwiUExBSU5URVhUIiwiQ0RBVEFfU0VDVElPTiIsImlzQXNjaWlEaWdpdCIsImNwIiwiRElHSVRfMCIsIkRJR0lUXzkiLCJpc0FzY2lpVXBwZXIiLCJMQVRJTl9DQVBJVEFMX0EiLCJMQVRJTl9DQVBJVEFMX1oiLCJpc0FzY2lpTG93ZXIiLCJMQVRJTl9TTUFMTF9BIiwiTEFUSU5fU01BTExfWiIsImlzQXNjaWlMZXR0ZXIiLCJpc0FzY2lpQWxwaGFOdW1lcmljIiwiaXNBc2NpaVVwcGVySGV4RGlnaXQiLCJMQVRJTl9DQVBJVEFMX0YiLCJpc0FzY2lpTG93ZXJIZXhEaWdpdCIsIkxBVElOX1NNQUxMX0YiLCJpc0FzY2lpSGV4RGlnaXQiLCJ0b0FzY2lpTG93ZXIiLCJpc1doaXRlc3BhY2UiLCJTUEFDRSIsIkxJTkVfRkVFRCIsIlRBQlVMQVRJT04iLCJGT1JNX0ZFRUQiLCJpc0VudGl0eUluQXR0cmlidXRlSW52YWxpZEVuZCIsIm5leHRDcCIsIkVRVUFMU19TSUdOIiwiaXNTY3JpcHREYXRhRG91YmxlRXNjYXBlU2VxdWVuY2VFbmQiLCJTT0xJRFVTIiwiR1JFQVRFUl9USEFOX1NJR04iLCJUb2tlbml6ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJoYW5kbGVyIiwicGF1c2VkIiwiaW5Mb29wIiwiaW5Gb3JlaWduTm9kZSIsImxhc3RTdGFydFRhZ05hbWUiLCJhY3RpdmUiLCJzdGF0ZSIsInJldHVyblN0YXRlIiwiY2hhclJlZkNvZGUiLCJjb25zdW1lZEFmdGVyU25hcHNob3QiLCJjdXJyZW50Q2hhcmFjdGVyVG9rZW4iLCJjdXJyZW50VG9rZW4iLCJjdXJyZW50QXR0ciIsIm5hbWUiLCJ2YWx1ZSIsInByZXByb2Nlc3NvciIsImN1cnJlbnRMb2NhdGlvbiIsImdldEN1cnJlbnRMb2NhdGlvbiIsIl9lcnIiLCJjb2RlIiwiX2EiLCJfYiIsIm9uUGFyc2VFcnJvciIsImNhbGwiLCJnZXRFcnJvciIsIm9mZnNldCIsInNvdXJjZUNvZGVMb2NhdGlvbkluZm8iLCJzdGFydExpbmUiLCJsaW5lIiwic3RhcnRDb2wiLCJjb2wiLCJzdGFydE9mZnNldCIsImVuZExpbmUiLCJlbmRDb2wiLCJlbmRPZmZzZXQiLCJfcnVuUGFyc2luZ0xvb3AiLCJfY29uc3VtZSIsIl9lbnN1cmVIaWJlcm5hdGlvbiIsIl9jYWxsU3RhdGUiLCJwYXVzZSIsInJlc3VtZSIsIndyaXRlQ2FsbGJhY2siLCJFcnJvciIsIndyaXRlIiwiY2h1bmsiLCJpc0xhc3RDaHVuayIsImluc2VydEh0bWxBdEN1cnJlbnRQb3MiLCJlbmRPZkNodW5rSGl0IiwiX3VuY29uc3VtZSIsImFkdmFuY2UiLCJjb3VudCIsInJldHJlYXQiLCJfcmVjb25zdW1lSW5TdGF0ZSIsIl9hZHZhbmNlQnkiLCJpIiwiX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2giLCJwYXR0ZXJuIiwiY2FzZVNlbnNpdGl2ZSIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJfY3JlYXRlU3RhcnRUYWdUb2tlbiIsInR5cGUiLCJTVEFSVF9UQUciLCJ0YWdOYW1lIiwidGFnSUQiLCJVTktOT1dOIiwic2VsZkNsb3NpbmciLCJhY2tTZWxmQ2xvc2luZyIsImF0dHJzIiwibG9jYXRpb24iLCJfY3JlYXRlRW5kVGFnVG9rZW4iLCJFTkRfVEFHIiwiX2NyZWF0ZUNvbW1lbnRUb2tlbiIsIkNPTU1FTlQiLCJkYXRhIiwiX2NyZWF0ZURvY3R5cGVUb2tlbiIsImluaXRpYWxOYW1lIiwiRE9DVFlQRSIsImZvcmNlUXVpcmtzIiwicHVibGljSWQiLCJzeXN0ZW1JZCIsIl9jcmVhdGVDaGFyYWN0ZXJUb2tlbiIsImNoYXJzIiwiX2NyZWF0ZUF0dHIiLCJhdHRyTmFtZUZpcnN0Q2giLCJfbGVhdmVBdHRyTmFtZSIsInRva2VuIiwicHVzaCIsImF0dHJMb2NhdGlvbnMiLCJPYmplY3QiLCJjcmVhdGUiLCJfbGVhdmVBdHRyVmFsdWUiLCJkdXBsaWNhdGVBdHRyaWJ1dGUiLCJwcmVwYXJlVG9rZW4iLCJjdCIsIl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuIiwiZW1pdEN1cnJlbnRUYWdUb2tlbiIsIm9uU3RhcnRUYWciLCJlbmRUYWdXaXRoQXR0cmlidXRlcyIsImVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMiLCJvbkVuZFRhZyIsImRyb3BQYXJzZWRDaHVuayIsImVtaXRDdXJyZW50Q29tbWVudCIsIm9uQ29tbWVudCIsImVtaXRDdXJyZW50RG9jdHlwZSIsIm9uRG9jdHlwZSIsIm5leHRMb2NhdGlvbiIsIkNIQVJBQ1RFUiIsIm9uQ2hhcmFjdGVyIiwiTlVMTF9DSEFSQUNURVIiLCJvbk51bGxDaGFyYWN0ZXIiLCJXSElURVNQQUNFX0NIQVJBQ1RFUiIsIm9uV2hpdGVzcGFjZUNoYXJhY3RlciIsIl9lbWl0RU9GVG9rZW4iLCJvbkVvZiIsIkVPRiIsIl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4iLCJjaCIsIl9lbWl0Q29kZVBvaW50IiwiTlVMTCIsIlN0cmluZyIsImZyb21Db2RlUG9pbnQiLCJfZW1pdENoYXJzIiwiX21hdGNoTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UiLCJyZXN1bHQiLCJleGNlc3MiLCJ3aXRob3V0U2VtaWNvbG9uIiwiY3VycmVudCIsIm1hc2tlZCIsIlZBTFVFX0xFTkdUSCIsInZhbHVlTGVuZ3RoIiwiU0VNSUNPTE9OIiwiX2lzQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGUiLCJwZWVrIiwiQU1QRVJTQU5EIiwibWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlIiwiQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URUQiLCJBVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRCIsIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRCIsIl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UiLCJfc3RhdGVEYXRhIiwiX3N0YXRlUmNkYXRhIiwiX3N0YXRlUmF3dGV4dCIsIl9zdGF0ZVNjcmlwdERhdGEiLCJfc3RhdGVQbGFpbnRleHQiLCJUQUdfT1BFTiIsIl9zdGF0ZVRhZ09wZW4iLCJFTkRfVEFHX09QRU4iLCJfc3RhdGVFbmRUYWdPcGVuIiwiVEFHX05BTUUiLCJfc3RhdGVUYWdOYW1lIiwiUkNEQVRBX0xFU1NfVEhBTl9TSUdOIiwiX3N0YXRlUmNkYXRhTGVzc1RoYW5TaWduIiwiUkNEQVRBX0VORF9UQUdfT1BFTiIsIl9zdGF0ZVJjZGF0YUVuZFRhZ09wZW4iLCJSQ0RBVEFfRU5EX1RBR19OQU1FIiwiX3N0YXRlUmNkYXRhRW5kVGFnTmFtZSIsIlJBV1RFWFRfTEVTU19USEFOX1NJR04iLCJfc3RhdGVSYXd0ZXh0TGVzc1RoYW5TaWduIiwiUkFXVEVYVF9FTkRfVEFHX09QRU4iLCJfc3RhdGVSYXd0ZXh0RW5kVGFnT3BlbiIsIlJBV1RFWFRfRU5EX1RBR19OQU1FIiwiX3N0YXRlUmF3dGV4dEVuZFRhZ05hbWUiLCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTiIsIl9zdGF0ZVNjcmlwdERhdGFMZXNzVGhhblNpZ24iLCJTQ1JJUFRfREFUQV9FTkRfVEFHX09QRU4iLCJfc3RhdGVTY3JpcHREYXRhRW5kVGFnT3BlbiIsIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRSIsIl9zdGF0ZVNjcmlwdERhdGFFbmRUYWdOYW1lIiwiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUIiwiX3N0YXRlU2NyaXB0RGF0YUVzY2FwZVN0YXJ0IiwiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0giLCJfc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoIiwiU0NSSVBUX0RBVEFfRVNDQVBFRCIsIl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIIiwiX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWREYXNoIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0giLCJfc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTiIsIl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduIiwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU4iLCJfc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW4iLCJTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRSIsIl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZSIsIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlQiLCJfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnQiLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRCIsIl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSCIsIl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaCIsIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSCIsIl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2giLCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTiIsIl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduIiwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkQiLCJfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kIiwiQkVGT1JFX0FUVFJJQlVURV9OQU1FIiwiX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZSIsIkFUVFJJQlVURV9OQU1FIiwiX3N0YXRlQXR0cmlidXRlTmFtZSIsIkFGVEVSX0FUVFJJQlVURV9OQU1FIiwiX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lIiwiQkVGT1JFX0FUVFJJQlVURV9WQUxVRSIsIl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZVZhbHVlIiwiX3N0YXRlQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQiLCJfc3RhdGVBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZCIsIl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQiLCJBRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEIiwiX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZCIsIlNFTEZfQ0xPU0lOR19TVEFSVF9UQUciLCJfc3RhdGVTZWxmQ2xvc2luZ1N0YXJ0VGFnIiwiQk9HVVNfQ09NTUVOVCIsIl9zdGF0ZUJvZ3VzQ29tbWVudCIsIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOIiwiX3N0YXRlTWFya3VwRGVjbGFyYXRpb25PcGVuIiwiQ09NTUVOVF9TVEFSVCIsIl9zdGF0ZUNvbW1lbnRTdGFydCIsIkNPTU1FTlRfU1RBUlRfREFTSCIsIl9zdGF0ZUNvbW1lbnRTdGFydERhc2giLCJfc3RhdGVDb21tZW50IiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTiIsIl9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ24iLCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkciLCJfc3RhdGVDb21tZW50TGVzc1RoYW5TaWduQmFuZyIsIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIIiwiX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoIiwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSCIsIl9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaERhc2giLCJDT01NRU5UX0VORF9EQVNIIiwiX3N0YXRlQ29tbWVudEVuZERhc2giLCJDT01NRU5UX0VORCIsIl9zdGF0ZUNvbW1lbnRFbmQiLCJDT01NRU5UX0VORF9CQU5HIiwiX3N0YXRlQ29tbWVudEVuZEJhbmciLCJfc3RhdGVEb2N0eXBlIiwiQkVGT1JFX0RPQ1RZUEVfTkFNRSIsIl9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lIiwiRE9DVFlQRV9OQU1FIiwiX3N0YXRlRG9jdHlwZU5hbWUiLCJBRlRFUl9ET0NUWVBFX05BTUUiLCJfc3RhdGVBZnRlckRvY3R5cGVOYW1lIiwiQUZURVJfRE9DVFlQRV9QVUJMSUNfS0VZV09SRCIsIl9zdGF0ZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQiLCJCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUiIsIl9zdGF0ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEIiwiX3N0YXRlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWQiLCJET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URUQiLCJfc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZCIsIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVIiLCJfc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwiQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTIiwiX3N0YXRlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyIsIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkQiLCJfc3RhdGVBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkIiwiQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVIiLCJfc3RhdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRCIsIl9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkIiwiRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEIiwiX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWQiLCJBRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSIiwiX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsIkJPR1VTX0RPQ1RZUEUiLCJfc3RhdGVCb2d1c0RvY3R5cGUiLCJfc3RhdGVDZGF0YVNlY3Rpb24iLCJDREFUQV9TRUNUSU9OX0JSQUNLRVQiLCJfc3RhdGVDZGF0YVNlY3Rpb25CcmFja2V0IiwiQ0RBVEFfU0VDVElPTl9FTkQiLCJfc3RhdGVDZGF0YVNlY3Rpb25FbmQiLCJDSEFSQUNURVJfUkVGRVJFTkNFIiwiX3N0YXRlQ2hhcmFjdGVyUmVmZXJlbmNlIiwiTkFNRURfQ0hBUkFDVEVSX1JFRkVSRU5DRSIsIl9zdGF0ZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlIiwiQU1CSUdVT1VTX0FNUEVSU0FORCIsIl9zdGF0ZUFtYmlndW91c0FtcGVyc2FuZCIsIk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRSIsIl9zdGF0ZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UiLCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUIiwiX3N0YXRlSGV4YWRlbWljYWxDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydCIsIkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0UiLCJfc3RhdGVIZXhhZGVtaWNhbENoYXJhY3RlclJlZmVyZW5jZSIsIkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRSIsIl9zdGF0ZURlY2ltYWxDaGFyYWN0ZXJSZWZlcmVuY2UiLCJOVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EIiwiX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZUVuZCIsIkxFU1NfVEhBTl9TSUdOIiwidW5leHBlY3RlZE51bGxDaGFyYWN0ZXIiLCJFWENMQU1BVElPTl9NQVJLIiwiUVVFU1RJT05fTUFSSyIsInVuZXhwZWN0ZWRRdWVzdGlvbk1hcmtJbnN0ZWFkT2ZUYWdOYW1lIiwiZW9mQmVmb3JlVGFnTmFtZSIsImludmFsaWRGaXJzdENoYXJhY3Rlck9mVGFnTmFtZSIsIm1pc3NpbmdFbmRUYWdOYW1lIiwiZW9mSW5UYWciLCJoYW5kbGVTcGVjaWFsRW5kVGFnIiwiX2NwIiwiSFlQSEVOX01JTlVTIiwiZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0IiwiU0NSSVBUIiwidW5leHBlY3RlZEVxdWFsc1NpZ25CZWZvcmVBdHRyaWJ1dGVOYW1lIiwiUVVPVEFUSU9OX01BUksiLCJBUE9TVFJPUEhFIiwidW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSIsIm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSIsIkdSQVZFX0FDQ0VOVCIsInVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWUiLCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzIiwidW5leHBlY3RlZFNvbGlkdXNJblRhZyIsIkRBU0hfREFTSCIsIkNEQVRBX1NUQVJUIiwiY2RhdGFJbkh0bWxDb250ZW50IiwiaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50IiwiYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50IiwiZW9mSW5Db21tZW50IiwibmVzdGVkQ29tbWVudCIsImluY29ycmVjdGx5Q2xvc2VkQ29tbWVudCIsImVvZkluRG9jdHlwZSIsIm1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWUiLCJmcm9tQ2hhckNvZGUiLCJtaXNzaW5nRG9jdHlwZU5hbWUiLCJQVUJMSUMiLCJTWVNURU0iLCJpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lIiwibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkIiwibWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyIiwibWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIiLCJhYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllciIsIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyIsIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkIiwibWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyIiwiYWJydXB0RG9jdHlwZVN5c3RlbUlkZW50aWZpZXIiLCJ1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllciIsIlJJR0hUX1NRVUFSRV9CUkFDS0VUIiwiZW9mSW5DZGF0YSIsIk5VTUJFUl9TSUdOIiwibWF0Y2hSZXN1bHQiLCJ1bmtub3duTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UiLCJMQVRJTl9TTUFMTF9YIiwiTEFUSU5fQ0FQSVRBTF9YIiwiYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlIiwibnVsbENoYXJhY3RlclJlZmVyZW5jZSIsImNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2UiLCJzdXJyb2dhdGVDaGFyYWN0ZXJSZWZlcmVuY2UiLCJub25jaGFyYWN0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UiLCJDQVJSSUFHRV9SRVRVUk4iLCJjb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlIiwicmVwbGFjZW1lbnQiLCJnZXQiLCJ1bmRlZmluZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/tokenizer/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/tokenizer/preprocessor.js":
/*!************************************************************!*\
!*** ./node_modules/parse5/dist/tokenizer/preprocessor.js ***!
\************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Preprocessor: () => (/* binding */ Preprocessor)\n/* harmony export */ });\n/* harmony import */ var _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/unicode.js */ \"(ssr)/./node_modules/parse5/dist/common/unicode.js\");\n/* harmony import */ var _common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/error-codes.js */ \"(ssr)/./node_modules/parse5/dist/common/error-codes.js\");\n\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor(handler){\n this.handler = handler;\n this.html = \"\";\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code) {\n const { line, col, offset } = this;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol: col,\n endCol: col,\n startOffset: offset,\n endOffset: offset\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isSurrogatePair)(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return (0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.getSurrogatePairCodePoint)(cp, nextCp);\n }\n } else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.EOF;\n }\n //NOTE: isolated surrogate\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__.ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for(let i = 0; i < pattern.length; i++){\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.CARRIAGE_RETURN ? _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isSurrogate)(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null || cp > 0x1f && cp < 0x7f || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.LINE_FEED || cp === _common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.CODE_POINTS.CARRIAGE_RETURN || cp > 0x9f && cp < 64976;\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isControlCodePoint)(cp)) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__.ERR.controlCharacterInInputStream);\n } else if ((0,_common_unicode_js__WEBPACK_IMPORTED_MODULE_0__.isUndefinedCodePoint)(cp)) {\n this._err(_common_error_codes_js__WEBPACK_IMPORTED_MODULE_1__.ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while(this.pos < this.lastGapPos){\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n} //# sourceMappingURL=preprocessor.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdG9rZW5pemVyL3ByZXByb2Nlc3Nvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEo7QUFDN0c7QUFDL0MsT0FBTztBQUNQLE1BQU1RLDJCQUEyQixLQUFLO0FBQ3RDLGNBQWM7QUFDZCxnQ0FBZ0M7QUFDaEMsZ0hBQWdIO0FBQ3pHLE1BQU1DO0lBQ1RDLFlBQVlDLE9BQU8sQ0FBRTtRQUNqQixJQUFJLENBQUNBLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLElBQUksR0FBRztRQUNaLElBQUksQ0FBQ0MsR0FBRyxHQUFHLENBQUM7UUFDWiwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDQyxVQUFVLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUNDLFFBQVEsR0FBRyxFQUFFO1FBQ2xCLElBQUksQ0FBQ0MsZUFBZSxHQUFHO1FBQ3ZCLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUc7UUFDeEIsSUFBSSxDQUFDQyxhQUFhLEdBQUc7UUFDckIsSUFBSSxDQUFDQyxlQUFlLEdBQUdYO1FBQ3ZCLElBQUksQ0FBQ1ksS0FBSyxHQUFHO1FBQ2IsSUFBSSxDQUFDQyxZQUFZLEdBQUc7UUFDcEIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBRztRQUN6QixJQUFJLENBQUNDLElBQUksR0FBRztRQUNaLHVEQUF1RDtRQUN2RCxJQUFJLENBQUNDLGFBQWEsR0FBRyxDQUFDO0lBQzFCO0lBQ0EsMEdBQTBHLEdBQzFHLElBQUlDLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQ1osR0FBRyxHQUFHLElBQUksQ0FBQ1EsWUFBWSxHQUFHSyxPQUFPLElBQUksQ0FBQ1osVUFBVSxLQUFLLElBQUksQ0FBQ0QsR0FBRztJQUM3RTtJQUNBLElBQUljLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQ0wsaUJBQWlCLEdBQUcsSUFBSSxDQUFDVCxHQUFHO0lBQzVDO0lBQ0FlLFNBQVNDLElBQUksRUFBRTtRQUNYLE1BQU0sRUFBRU4sSUFBSSxFQUFFRSxHQUFH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LENBQUNuRCxPQUFPLENBQUMwQixZQUFZLEtBQUssUUFDcERJLEtBQUssUUFBUUEsS0FBSyxRQUNuQkEsT0FBT3hDLDJEQUFDQSxDQUFDMkQsU0FBUyxJQUNsQm5CLE9BQU94QywyREFBQ0EsQ0FBQzBELGVBQWUsSUFDdkJsQixLQUFLLFFBQVFBLEtBQUs7UUFDdkIsSUFBSSxDQUFDcUIsb0JBQW9CO1lBQ3JCLElBQUksQ0FBQ0MsOEJBQThCLENBQUN0QjtRQUN4QztRQUNBLE9BQU9BO0lBQ1g7SUFDQXNCLCtCQUErQnRCLEVBQUUsRUFBRTtRQUMvQixJQUFJdEMsc0VBQWtCQSxDQUFDc0MsS0FBSztZQUN4QixJQUFJLENBQUNMLElBQUksQ0FBQzdCLHVEQUFHQSxDQUFDeUQsNkJBQTZCO1FBQy9DLE9BQ0ssSUFBSTFELHdFQUFvQkEsQ0FBQ21DLEtBQUs7WUFDL0IsSUFBSSxDQUFDTCxJQUFJLENBQUM3Qix1REFBR0EsQ0FBQzBELHlCQUF5QjtRQUMzQztJQUNKO0lBQ0FDLFFBQVFDLEtBQUssRUFBRTtRQUNYLElBQUksQ0FBQ3RELEdBQUcsSUFBSXNEO1FBQ1osTUFBTyxJQUFJLENBQUN0RCxHQUFHLEdBQUcsSUFBSSxDQUFDQyxVQUFVLENBQUU7WUFDL0IsSUFBSSxDQUFDQSxVQUFVLEdBQUcsSUFBSSxDQUFDQyxRQUFRLENBQUNxRCxHQUFHO1lBQ25DLElBQUksQ0FBQ3ZELEdBQUc7UUFDWjtRQUNBLElBQUksQ0FBQ08sS0FBSyxHQUFHO0lBQ2pCO0FBQ0osRUFDQSx3Q0FBd0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzPzdlM2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09ERV9QT0lOVFMgYXMgJCwgZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCwgaXNDb250cm9sQ29kZVBvaW50LCBpc1N1cnJvZ2F0ZSwgaXNTdXJyb2dhdGVQYWlyLCBpc1VuZGVmaW5lZENvZGVQb2ludCwgfSBmcm9tICcuLi9jb21tb24vdW5pY29kZS5qcyc7XG5pbXBvcnQgeyBFUlIgfSBmcm9tICcuLi9jb21tb24vZXJyb3ItY29kZXMuanMnO1xuLy9Db25zdFxuY29uc3QgREVGQVVMVF9CVUZGRVJfV0FURVJMSU5FID0gMSA8PCAxNjtcbi8vUHJlcHJvY2Vzc29yXG4vL05PVEU6IEhUTUwgaW5wdXQgcHJlcHJvY2Vzc2luZ1xuLy8oc2VlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtKVxuZXhwb3J0IGNsYXNzIFByZXByb2Nlc3NvciB7XG4gICAgY29uc3RydWN0b3IoaGFuZGxlcikge1xuICAgICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB0aGlzLmh0bWwgPSAnJztcbiAgICAgICAgdGhpcy5wb3MgPSAtMTtcbiAgICAgICAgLy8gTk9URTogSW5pdGlhbCBgbGFzdEdhcFBvc2AgaXMgLTIsIHRvIGVuc3VyZSBgY29sYCBvbiBpbml0aWFsaXNhdGlvbiBpcyAwXG4gICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0yO1xuICAgICAgICB0aGlzLmdhcFN0YWNrID0gW107XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idWZmZXJXYXRlcmxpbmUgPSBERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkU7XG4gICAgICAgIHRoaXMuaXNFb2wgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saW5lU3RhcnRQb3MgPSAwO1xuICAgICAgICB0aGlzLmRyb3BwZWRCdWZmZXJTaXplID0gMDtcbiAgICAgICAgdGhpcy5saW5lID0gMTtcbiAgICAgICAgLy9OT1RFOiBhdm9pZCByZXBvcnRpbmcgZXJyb3JzIHR3aWNlIG9uIGFkdmFuY2UvcmV0cmVhdFxuICAgICAgICB0aGlzLmxhc3RFcnJPZmZzZXQgPSAtMTtcbiAgICB9XG4gICAgLyoqIFRoZSBjb2x1bW4gb24gdGhlIGN1cnJlbnQgbGluZS4gSWYgd2UganVzdCBzYXcgYSBnYXAgKGVnLiBhIHN1cnJvZ2F0ZSBwYWlyKSwgcmV0dXJuIHRoZSBpbmRleCBiZWZvcmUuICovXG4gICAgZ2V0IGNvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zIC0gdGhpcy5saW5lU3RhcnRQb3MgKyBOdW1iZXIodGhpcy5sYXN0R2FwUG9zICE9PSB0aGlzLnBvcyk7XG4gICAgfVxuICAgIGdldCBvZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3BwZWRCdWZmZXJTaXplICsgdGhpcy5wb3M7XG4gICAgfVxuICAgIGdldEVycm9yKGNvZGUpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjb2wsIG9mZnNldCB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICBzdGFydExpbmU6IGxpbmUsXG4gICAgICAgICAgICBlbmRMaW5lOiBsaW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IGNvbCxcbiAgICAgICAgICAgIGVuZENvbDogY29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIGVuZE9mZnNldDogb2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfZXJyKGNvZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlci5vblBhcnNlRXJyb3IgJiYgdGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0RXJyT2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25QYXJzZUVycm9yKHRoaXMuZ2V0RXJyb3IoY29kZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9hZGRHYXAoKSB7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sucHVzaCh0aGlzLmxhc3RHYXBQb3MpO1xuICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLnBvcztcbiAgICB9XG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5odG1sLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoaXNTdXJyb2dhdGVQYWlyKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAgICAgICAgIC8vTk9URTogYWRkIGEgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcCwgbmV4dENwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciB0aGUgc3Vycm9nYXRlIHBhaXIgeWV0LlxuICAgICAgICBlbHNlIGlmICghdGhpcy5sYXN0Q2h1bmtXcml0dGVuKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuICQuRU9GO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogaXNvbGF0ZWQgc3Vycm9nYXRlXG4gICAgICAgIHRoaXMuX2VycihFUlIuc3Vycm9nYXRlSW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG4gICAgd2lsbERyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zID4gdGhpcy5idWZmZXJXYXRlcmxpbmU7XG4gICAgfVxuICAgIGRyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgaWYgKHRoaXMud2lsbERyb3BQYXJzZWRDaHVuaygpKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0UG9zIC09IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSArPSB0aGlzLnBvcztcbiAgICAgICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0yO1xuICAgICAgICAgICAgdGhpcy5nYXBTdGFjay5sZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICBpZiAodGhpcy5odG1sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCArPSBjaHVuaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCA9IGNodW5rO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhc3RDaHVua1dyaXR0ZW4gPSBpc0xhc3RDaHVuaztcbiAgICB9XG4gICAgaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuaykge1xuICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKDAsIHRoaXMucG9zICsgMSkgKyBjaHVuayArIHRoaXMuaHRtbC5zdWJzdHJpbmcodGhpcy5wb3MgKyAxKTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgfVxuICAgIHN0YXJ0c1dpdGgocGF0dGVybiwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICAvLyBDaGVjayBpZiBvdXIgYnVmZmVyIGhhcyBlbm91Z2ggY2hhcmFjdGVyc1xuICAgICAgICBpZiAodGhpcy5wb3MgKyBwYXR0ZXJuLmxlbmd0aCA+IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0bWwuc3RhcnRzV2l0aChwYXR0ZXJuLCB0aGlzLnBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgaSkgfCAweDIwO1xuICAgICAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHBlZWsob2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zICsgb2Zmc2V0O1xuICAgICAgICBpZiAocG9zID49IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29kZSA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIHJldHVybiBjb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTiA/ICQuTElORV9GRUVEIDogY29kZTtcbiAgICB9XG4gICAgYWR2YW5jZSgpIHtcbiAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgLy9OT1RFOiBMRiBzaG91bGQgYmUgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBsaW5lXG4gICAgICAgIGlmICh0aGlzLmlzRW9sKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxpbmUrKztcbiAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0UG9zID0gdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW9sID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiAkLkxJTkVfRkVFRDtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IGFueSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVycyB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvdyBhIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSBjaGFyYWN0ZXJcbiAgICAgICAgLy9tdXN0IGJlIGlnbm9yZWQuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MSU5FX0ZFRUQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFb2wgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gYGxpbmVgIHdpbGwgYmUgYnVtcGVkIGFnYWluIGluIHRoZSByZWN1cnNpdmUgY2FsbC5cbiAgICAgICAgICAgICAgICB0aGlzLmxpbmUtLTtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNTdXJyb2dhdGUoY3ApKSB7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX3Byb2Nlc3NTdXJyb2dhdGUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID0gdGhpcy5oYW5kbGVyLm9uUGFyc2VFcnJvciA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgKGNwID4gMHgxZiAmJiBjcCA8IDB4N2YpIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5MSU5FX0ZFRUQgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkNBUlJJQUdFX1JFVFVSTiB8fFxuICAgICAgICAgICAgKGNwID4gMHg5ZiAmJiBjcCA8IDY0OTc2KTtcbiAgICAgICAgaWYgKCFpc0NvbW1vblZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuICAgIF9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCkge1xuICAgICAgICBpZiAoaXNDb250cm9sQ29kZVBvaW50KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWRDb2RlUG9pbnQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHJlYXQoY291bnQpIHtcbiAgICAgICAgdGhpcy5wb3MgLT0gY291bnQ7XG4gICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMubGFzdEdhcFBvcykge1xuICAgICAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5nYXBTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMucG9zLS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZXByb2Nlc3Nvci5qcy5tYXAiXSwibmFtZXMiOlsiQ09ERV9QT0lOVFMiLCIkIiwiZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCIsImlzQ29udHJvbENvZGVQb2ludCIsImlzU3Vycm9nYXRlIiwiaXNTdXJyb2dhdGVQYWlyIiwiaXNVbmRlZmluZWRDb2RlUG9pbnQiLCJFUlIiLCJERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkUiLCJQcmVwcm9jZXNzb3IiLCJjb25zdHJ1Y3RvciIsImhhbmRsZXIiLCJodG1sIiwicG9zIiwibGFzdEdhcFBvcyIsImdhcFN0YWNrIiwic2tpcE5leHROZXdMaW5lIiwibGFzdENodW5rV3JpdHRlbiIsImVuZE9mQ2h1bmtIaXQiLCJidWZmZXJXYXRlcmxpbmUiLCJpc0VvbCIsImxpbmVTdGFydFBvcyIsImRyb3BwZWRCdWZmZXJTaXplIiwibGluZSIsImxhc3RFcnJPZmZzZXQiLCJjb2wiLCJOdW1iZXIiLCJvZmZzZXQiLCJnZXRFcnJvciIsImNvZGUiLCJzdGFydExpbmUiLCJlbmRMaW5lIiwic3RhcnRDb2wiLCJlbmRDb2wiLCJzdGFydE9mZnNldCIsImVuZE9mZnNldCIsIl9lcnIiLCJvblBhcnNlRXJyb3IiLCJfYWRkR2FwIiwicHVzaCIsIl9wcm9jZXNzU3Vycm9nYXRlIiwiY3AiLCJsZW5ndGgiLCJuZXh0Q3AiLCJjaGFyQ29kZUF0IiwiRU9GIiwic3Vycm9nYXRlSW5JbnB1dFN0cmVhbSIsIndpbGxEcm9wUGFyc2VkQ2h1bmsiLCJkcm9wUGFyc2VkQ2h1bmsiLCJzdWJzdHJpbmciLCJ3cml0ZSIsImNodW5rIiwiaXNMYXN0Q2h1bmsiLCJpbnNlcnRIdG1sQXRDdXJyZW50UG9zIiwic3RhcnRzV2l0aCIsInBhdHRlcm4iLCJjYXNlU2Vuc2l0aXZlIiwiaSIsInBlZWsiLCJDQVJSSUFHRV9SRVRVUk4iLCJMSU5FX0ZFRUQiLCJhZHZhbmNlIiwiaXNDb21tb25WYWxpZFJhbmdlIiwiX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzIiwiY29udHJvbENoYXJhY3RlckluSW5wdXRTdHJlYW0iLCJub25jaGFyYWN0ZXJJbklucHV0U3RyZWFtIiwicmV0cmVhdCIsImNvdW50IiwicG9wIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/tokenizer/preprocessor.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/parse5/dist/tree-adapters/default.js":
/*!***********************************************************!*\
!*** ./node_modules/parse5/dist/tree-adapters/default.js ***!
\***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultTreeAdapter: () => (/* binding */ defaultTreeAdapter)\n/* harmony export */ });\n/* harmony import */ var _common_html_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/html.js */ \"(ssr)/./node_modules/parse5/dist/common/html.js\");\n\nfunction createTextNode(value) {\n return {\n nodeName: \"#text\",\n value,\n parentNode: null\n };\n}\nconst defaultTreeAdapter = {\n //Node construction\n createDocument () {\n return {\n nodeName: \"#document\",\n mode: _common_html_js__WEBPACK_IMPORTED_MODULE_0__.DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n },\n createDocumentFragment () {\n return {\n nodeName: \"#document-fragment\",\n childNodes: []\n };\n },\n createElement (tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null\n };\n },\n createCommentNode (data) {\n return {\n nodeName: \"#comment\",\n data,\n parentNode: null\n };\n },\n //Tree mutation\n appendChild (parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore (parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent (templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent (templateElement) {\n return templateElement.content;\n },\n setDocumentType (document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node)=>node.nodeName === \"#documentType\");\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n const node = {\n nodeName: \"#documentType\",\n name,\n publicId,\n systemId,\n parentNode: null\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode (document, mode) {\n document.mode = mode;\n },\n getDocumentMode (document) {\n return document.mode;\n },\n detachNode (node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText (parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n },\n insertTextBefore (parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n } else {\n defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n },\n adoptAttributes (recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr)=>attr.name));\n for(let j = 0; j < attrs.length; j++){\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild (node) {\n return node.childNodes[0];\n },\n getChildNodes (node) {\n return node.childNodes;\n },\n getParentNode (node) {\n return node.parentNode;\n },\n getAttrList (element) {\n return element.attrs;\n },\n //Node data\n getTagName (element) {\n return element.tagName;\n },\n getNamespaceURI (element) {\n return element.namespaceURI;\n },\n getTextNodeContent (textNode) {\n return textNode.value;\n },\n getCommentNodeContent (commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName (doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId (doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId (doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode (node) {\n return node.nodeName === \"#text\";\n },\n isCommentNode (node) {\n return node.nodeName === \"#comment\";\n },\n isDocumentTypeNode (node) {\n return node.nodeName === \"#documentType\";\n },\n isElementNode (node) {\n return Object.prototype.hasOwnProperty.call(node, \"tagName\");\n },\n // Source code location\n setNodeSourceCodeLocation (node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation (node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation (node, endLocation) {\n node.sourceCodeLocation = {\n ...node.sourceCodeLocation,\n ...endLocation\n };\n }\n}; //# sourceMappingURL=default.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtEO0FBQ2xELFNBQVNDLGVBQWVDLEtBQUs7SUFDekIsT0FBTztRQUNIQyxVQUFVO1FBQ1ZEO1FBQ0FFLFlBQVk7SUFDaEI7QUFDSjtBQUNPLE1BQU1DLHFCQUFxQjtJQUM5QixtQkFBbUI7SUFDbkJDO1FBQ0ksT0FBTztZQUNISCxVQUFVO1lBQ1ZJLE1BQU1QLDBEQUFhQSxDQUFDUSxTQUFTO1lBQzdCQyxZQUFZLEVBQUU7UUFDbEI7SUFDSjtJQUNBQztRQUNJLE9BQU87WUFDSFAsVUFBVTtZQUNWTSxZQUFZLEVBQUU7UUFDbEI7SUFDSjtJQUNBRSxlQUFjQyxPQUFPLEVBQUVDLFlBQVksRUFBRUMsS0FBSztRQUN0QyxPQUFPO1lBQ0hYLFVBQVVTO1lBQ1ZBO1lBQ0FFO1lBQ0FEO1lBQ0FKLFlBQVksRUFBRTtZQUNkTCxZQUFZO1FBQ2hCO0lBQ0o7SUFDQVcsbUJBQWtCQyxJQUFJO1FBQ2xCLE9BQU87WUFDSGIsVUFBVTtZQUNWYTtZQUNBWixZQUFZO1FBQ2hCO0lBQ0o7SUFDQSxlQUFlO0lBQ2ZhLGFBQVliLFVBQVUsRUFBRWMsT0FBTztRQUMzQmQsV0FBV0ssVUFBVSxDQUFDVSxJQUFJLENBQUNEO1FBQzNCQSxRQUFRZCxVQUFVLEdBQUdBO0lBQ3pCO0lBQ0FnQixjQUFhaEIsVUFBVSxFQUFFYyxPQUFPLEVBQUVHLGFBQWE7UUFDM0MsTUFBTUMsZUFBZWxCLFdBQVdLLFVBQVUsQ0FBQ2MsT0FBTyxDQUFDRjtRQUNuRGpCLFdBQVdLLFVBQVUsQ0FBQ2UsTUFBTSxDQUFDRixjQUFjLEdBQUdKO1FBQzlDQSxRQUFRZCxVQUFVLEdBQUdBO0lBQ3pCO0lBQ0FxQixvQkFBbUJDLGVBQWUsRUFBRUMsY0FBYztRQUM5Q0QsZ0JBQWdCRSxPQUFPLEdBQUdEO0lBQzlCO0lBQ0FFLG9CQUFtQkgsZUFBZTtRQUM5QixPQUFPQSxnQkFB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QU87UUFDbkIsT0FBT0EsUUFBUS9DLFlBQVk7SUFDL0I7SUFDQWtELG9CQUFtQkMsUUFBUTtRQUN2QixPQUFPQSxTQUFTOUQsS0FBSztJQUN6QjtJQUNBK0QsdUJBQXNCQyxXQUFXO1FBQzdCLE9BQU9BLFlBQVlsRCxJQUFJO0lBQzNCO0lBQ0FtRCx5QkFBd0JoQyxXQUFXO1FBQy9CLE9BQU9BLFlBQVlILElBQUk7SUFDM0I7SUFDQW9DLDZCQUE0QmpDLFdBQVc7UUFDbkMsT0FBT0EsWUFBWUYsUUFBUTtJQUMvQjtJQUNBb0MsNkJBQTRCbEMsV0FBVztRQUNuQyxPQUFPQSxZQUFZRCxRQUFRO0lBQy9CO0lBQ0EsWUFBWTtJQUNaWSxZQUFXVCxJQUFJO1FBQ1gsT0FBT0EsS0FBS2xDLFFBQVEsS0FBSztJQUM3QjtJQUNBbUUsZUFBY2pDLElBQUk7UUFDZCxPQUFPQSxLQUFLbEMsUUFBUSxLQUFLO0lBQzdCO0lBQ0FvRSxvQkFBbUJsQyxJQUFJO1FBQ25CLE9BQU9BLEtBQUtsQyxRQUFRLEtBQUs7SUFDN0I7SUFDQXFFLGVBQWNuQyxJQUFJO1FBQ2QsT0FBT29DLE9BQU9DLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUN2QyxNQUFNO0lBQ3REO0lBQ0EsdUJBQXVCO0lBQ3ZCd0MsMkJBQTBCeEMsSUFBSSxFQUFFeUMsUUFBUTtRQUNwQ3pDLEtBQUswQyxrQkFBa0IsR0FBR0Q7SUFDOUI7SUFDQUUsMkJBQTBCM0MsSUFBSTtRQUMxQixPQUFPQSxLQUFLMEMsa0JBQWtCO0lBQ2xDO0lBQ0FFLDhCQUE2QjVDLElBQUksRUFBRTZDLFdBQVc7UUFDMUM3QyxLQUFLMEMsa0JBQWtCLEdBQUc7WUFBRSxHQUFHMUMsS0FBSzBDLGtCQUFrQjtZQUFFLEdBQUdHLFdBQVc7UUFBQztJQUMzRTtBQUNKLEVBQUUsQ0FDRixtQ0FBbUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanM/NGZiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVF9NT0RFIH0gZnJvbSAnLi4vY29tbW9uL2h0bWwuanMnO1xuZnVuY3Rpb24gY3JlYXRlVGV4dE5vZGUodmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBub2RlTmFtZTogJyN0ZXh0JyxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgfTtcbn1cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJlZUFkYXB0ZXIgPSB7XG4gICAgLy9Ob2RlIGNvbnN0cnVjdGlvblxuICAgIGNyZWF0ZURvY3VtZW50KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQnLFxuICAgICAgICAgICAgbW9kZTogRE9DVU1FTlRfTU9ERS5OT19RVUlSS1MsXG4gICAgICAgICAgICBjaGlsZE5vZGVzOiBbXSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudC1mcmFnbWVudCcsXG4gICAgICAgICAgICBjaGlsZE5vZGVzOiBbXSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgbmFtZXNwYWNlVVJJLCBhdHRycykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6IHRhZ05hbWUsXG4gICAgICAgICAgICB0YWdOYW1lLFxuICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICBuYW1lc3BhY2VVUkksXG4gICAgICAgICAgICBjaGlsZE5vZGVzOiBbXSxcbiAgICAgICAgICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVDb21tZW50Tm9kZShkYXRhKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyNjb21tZW50JyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLy9UcmVlIG11dGF0aW9uXG4gICAgYXBwZW5kQ2hpbGQocGFyZW50Tm9kZSwgbmV3Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMucHVzaChuZXdOb2RlKTtcbiAgICAgICAgbmV3Tm9kZS5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB9LFxuICAgIGluc2VydEJlZm9yZShwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgIGNvbnN0IGluc2VydGlvbklkeCA9IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpO1xuICAgICAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3Tm9kZSk7XG4gICAgICAgIG5ld05vZGUucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgfSxcbiAgICBzZXRUZW1wbGF0ZUNvbnRlbnQodGVtcGxhdGVFbGVtZW50LCBjb250ZW50RWxlbWVudCkge1xuICAgICAgICB0ZW1wbGF0ZUVsZW1lbnQuY29udGVudCA9IGNvbnRlbnRFbGVtZW50O1xuICAgIH0sXG4gICAgZ2V0VGVtcGxhdGVDb250ZW50KHRlbXBsYXRlRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQ7XG4gICAgfSxcbiAgICBzZXREb2N1bWVudFR5cGUoZG9jdW1lbnQsIG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkge1xuICAgICAgICBjb25zdCBkb2N0eXBlTm9kZSA9IGRvY3VtZW50LmNoaWxkTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5ub2RlTmFtZSA9PT0gJyNkb2N1bWVudFR5cGUnKTtcbiAgICAgICAgaWYgKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgICAgICBkb2N0eXBlTm9kZS5uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlLnB1YmxpY0lkID0gcHVibGljSWQ7XG4gICAgICAgICAgICBkb2N0eXBlTm9kZS5zeXN0ZW1JZCA9IHN5c3RlbUlkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHtcbiAgICAgICAgICAgICAgICBub2RlTmFtZTogJyNkb2N1bWVudFR5cGUnLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgcHVibGljSWQsXG4gICAgICAgICAgICAgICAgc3lzdGVtSWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkZWZhdWx0VHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBzZXREb2N1bWVudE1vZGUoZG9jdW1lbnQsIG1vZGUpIHtcbiAgICAgICAgZG9jdW1lbnQubW9kZSA9IG1vZGU7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudE1vZGUoZG9jdW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50Lm1vZGU7XG4gICAgfSxcbiAgICBkZXRhY2hOb2RlKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaW5zZXJ0VGV4dChwYXJlbnROb2RlLCB0ZXh0KSB7XG4gICAgICAgIGlmIChwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRUcmVlQWRhcHRlci5pc1RleHROb2RlKHByZXZOb2RlKSkge1xuICAgICAgICAgICAgICAgIHByZXZOb2RlLnZhbHVlICs9IHRleHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHRUcmVlQWRhcHRlci5hcHBlbmRDaGlsZChwYXJlbnROb2RlLCBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG4gICAgfSxcbiAgICBpbnNlcnRUZXh0QmVmb3JlKHBhcmVudE5vZGUsIHRleHQsIHJlZmVyZW5jZU5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSkgLSAxXTtcbiAgICAgICAgaWYgKHByZXZOb2RlICYmIGRlZmF1bHRUcmVlQWRhcHRlci5pc1RleHROb2RlKHByZXZOb2RlKSkge1xuICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlZmF1bHRUcmVlQWRhcHRlci5pbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZG9wdEF0dHJpYnV0ZXMocmVjaXBpZW50LCBhdHRycykge1xuICAgICAgICBjb25zdCByZWNpcGllbnRBdHRyc01hcCA9IG5ldyBTZXQocmVjaXBpZW50LmF0dHJzLm1hcCgoYXR0cikgPT4gYXR0ci5uYW1lKSk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGlmICghcmVjaXBpZW50QXR0cnNNYXAuaGFzKGF0dHJzW2pdLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmVjaXBpZW50LmF0dHJzLnB1c2goYXR0cnNbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICAvL1RyZWUgdHJhdmVyc2luZ1xuICAgIGdldEZpcnN0Q2hpbGQobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgIH0sXG4gICAgZ2V0Q2hpbGROb2Rlcyhub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXM7XG4gICAgfSxcbiAgICBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZTtcbiAgICB9LFxuICAgIGdldEF0dHJMaXN0KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuYXR0cnM7XG4gICAgfSxcbiAgICAvL05vZGUgZGF0YVxuICAgIGdldFRhZ05hbWUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC50YWdOYW1lO1xuICAgIH0sXG4gICAgZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQubmFtZXNwYWNlVVJJO1xuICAgIH0sXG4gICAgZ2V0VGV4dE5vZGVDb250ZW50KHRleHROb2RlKSB7XG4gICAgICAgIHJldHVybiB0ZXh0Tm9kZS52YWx1ZTtcbiAgICB9LFxuICAgIGdldENvbW1lbnROb2RlQ29udGVudChjb21tZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gY29tbWVudE5vZGUuZGF0YTtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVOYW1lKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHJldHVybiBkb2N0eXBlTm9kZS5uYW1lO1xuICAgIH0sXG4gICAgZ2V0RG9jdW1lbnRUeXBlTm9kZVB1YmxpY0lkKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHJldHVybiBkb2N0eXBlTm9kZS5wdWJsaWNJZDtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVTeXN0ZW1JZChkb2N0eXBlTm9kZSkge1xuICAgICAgICByZXR1cm4gZG9jdHlwZU5vZGUuc3lzdGVtSWQ7XG4gICAgfSxcbiAgICAvL05vZGUgdHlwZXNcbiAgICBpc1RleHROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCc7XG4gICAgfSxcbiAgICBpc0NvbW1lbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjY29tbWVudCc7XG4gICAgfSxcbiAgICBpc0RvY3VtZW50VHlwZU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSA9PT0gJyNkb2N1bWVudFR5cGUnO1xuICAgIH0sXG4gICAgaXNFbGVtZW50Tm9kZShub2RlKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZSwgJ3RhZ05hbWUnKTtcbiAgICB9LFxuICAgIC8vIFNvdXJjZSBjb2RlIGxvY2F0aW9uXG4gICAgc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlLCBsb2NhdGlvbikge1xuICAgICAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgIH0sXG4gICAgZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbjtcbiAgICB9LFxuICAgIHVwZGF0ZU5vZGVTb3VyY2VDb2RlTG9jYXRpb24obm9kZSwgZW5kTG9jYXRpb24pIHtcbiAgICAgICAgbm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gPSB7IC4uLm5vZGUuc291cmNlQ29kZUxvY2F0aW9uLCAuLi5lbmRMb2NhdGlvbiB9O1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVmYXVsdC5qcy5tYXAiXSwibmFtZXMiOlsiRE9DVU1FTlRfTU9ERSIsImNyZWF0ZVRleHROb2RlIiwidmFsdWUiLCJub2RlTmFtZSIsInBhcmVudE5vZGUiLCJkZWZhdWx0VHJlZUFkYXB0ZXIiLCJjcmVhdGVEb2N1bWVudCIsIm1vZGUiLCJOT19RVUlSS1MiLCJjaGlsZE5vZGVzIiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0YWdOYW1lIiwibmFtZXNwYWNlVVJJIiwiYXR0cnMiLCJjcmVhdGVDb21tZW50Tm9kZSIsImRhdGEiLCJhcHBlbmRDaGlsZCIsIm5ld05vZGUiLCJwdXNoIiwiaW5zZXJ0QmVmb3JlIiwicmVmZXJlbmNlTm9kZSIsImluc2VydGlvbklkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJzZXRUZW1wbGF0ZUNvbnRlbnQiLCJ0ZW1wbGF0ZUVsZW1lbnQiLCJjb250ZW50RWxlbWVudCIsImNvbnRlbnQiLCJnZXRUZW1wbGF0ZUNvbnRlbnQiLCJzZXREb2N1bWVudFR5cGUiLCJkb2N1bWVudCIsIm5hbWUiLCJwdWJsaWNJZCIsInN5c3RlbUlkIiwiZG9jdHlwZU5vZGUiLCJmaW5kIiwibm9kZSIsInNldERvY3VtZW50TW9kZSIsImdldERvY3VtZW50TW9kZSIsImRldGFjaE5vZGUiLCJpZHgiLCJpbnNlcnRUZXh0IiwidGV4dCIsImxlbmd0aCIsInByZXZOb2RlIiwiaXNUZXh0Tm9kZSIsImluc2VydFRleHRCZWZvcmUiLCJhZG9wdEF0dHJpYnV0ZXMiLCJyZWNpcGllbnQiLCJyZWNpcGllbnRBdHRyc01hcCIsIlNldCIsIm1hcCIsImF0dHIiLCJqIiwiaGFzIiwiZ2V0Rmlyc3RDaGlsZCIsImdldENoaWxkTm9kZXMiLCJnZXRQYXJlbnROb2RlIiwiZ2V0QXR0ckxpc3QiLCJlbGVtZW50IiwiZ2V0VGFnTmFtZSIsImdldE5hbWVzcGFjZVVSSSIsImdldFRleHROb2RlQ29udGVudCIsInRleHROb2RlIiwiZ2V0Q29tbWVudE5vZGVDb250ZW50IiwiY29tbWVudE5vZGUiLCJnZXREb2N1bWVudFR5cGVOb2RlTmFtZSIsImdldERvY3VtZW50VHlwZU5vZGVQdWJsaWNJZCIsImdldERvY3VtZW50VHlwZU5vZGVTeXN0ZW1JZCIsImlzQ29tbWVudE5vZGUiLCJpc0RvY3VtZW50VHlwZU5vZGUiLCJpc0VsZW1lbnROb2RlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsImxvY2F0aW9uIiwic291cmNlQ29kZUxvY2F0aW9uIiwiZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbiIsInVwZGF0ZU5vZGVTb3VyY2VDb2RlTG9jYXRpb24iLCJlbmRMb2NhdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/parse5/dist/tree-adapters/default.js\n");
/***/ })
};
;