Files
Webklar.com/.next/static/webpack/app/layout.fffcce59473a5867.hot-update.js
ANDJ 76791391d8 Prototyp fur die Navigationsleiste
Kleine anpassuungen Handy Ansicht
2025-12-14 17:27:12 +01:00

32 lines
47 KiB
JavaScript

"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/).
*/
self["webpackHotUpdate_N_E"]("app/layout",{
/***/ "(app-pages-browser)/./app/globals.css":
/*!*************************!*\
!*** ./app/globals.css ***!
\*************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"2c1379243a41\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzP2E3YzgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIyYzEzNzkyNDNhNDFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n"));
/***/ }),
/***/ "(app-pages-browser)/./components/HandyAnsicht.tsx":
/*!*************************************!*\
!*** ./components/HandyAnsicht.tsx ***!
\*************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _HandyAnsicht_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HandyAnsicht.css */ \"(app-pages-browser)/./components/HandyAnsicht.css\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\nconst GooeyNav = (param)=>{\n let { items, animationTime = 600, particleCount = 15, particleDistances = [\n 90,\n 10\n ], particleR = 100, timeVariance = 300, colors = [\n 1,\n 2,\n 3,\n 1,\n 2,\n 3,\n 1,\n 4\n ], initialActiveIndex = 0 } = param;\n _s();\n const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const navRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const filterRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const textRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [activeIndex, setActiveIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(initialActiveIndex);\n const noise = function() {\n let n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1;\n return n / 2 - Math.random() * n;\n };\n const getXY = (distance, pointIndex, totalPoints)=>{\n const angle = (360 + noise(8)) / totalPoints * pointIndex * (Math.PI / 180);\n return [\n distance * Math.cos(angle),\n distance * Math.sin(angle)\n ];\n };\n const createParticle = (i, t, d, r)=>{\n const rotate = noise(r / 10);\n return {\n start: getXY(d[0], particleCount - i, particleCount),\n end: getXY(d[1] + noise(7), particleCount - i, particleCount),\n time: t,\n scale: 1 + noise(0.2),\n color: colors[Math.floor(Math.random() * colors.length)],\n rotate: rotate > 0 ? (rotate + r / 20) * 10 : (rotate - r / 20) * 10\n };\n };\n const makeParticles = (element)=>{\n const d = particleDistances;\n const r = particleR;\n const bubbleTime = animationTime * 2 + timeVariance;\n element.style.setProperty(\"--time\", \"\".concat(bubbleTime, \"ms\"));\n for(let i = 0; i < particleCount; i += 1){\n const t = animationTime * 2 + noise(timeVariance * 2);\n const p = createParticle(i, t, d, r);\n element.classList.remove(\"active\");\n setTimeout(()=>{\n const particle = document.createElement(\"span\");\n const point = document.createElement(\"span\");\n particle.classList.add(\"particle\");\n particle.style.setProperty(\"--start-x\", \"\".concat(p.start[0], \"px\"));\n particle.style.setProperty(\"--start-y\", \"\".concat(p.start[1], \"px\"));\n particle.style.setProperty(\"--end-x\", \"\".concat(p.end[0], \"px\"));\n particle.style.setProperty(\"--end-y\", \"\".concat(p.end[1], \"px\"));\n particle.style.setProperty(\"--time\", \"\".concat(p.time, \"ms\"));\n particle.style.setProperty(\"--scale\", \"\".concat(p.scale));\n particle.style.setProperty(\"--color\", \"var(--color-\".concat(p.color, \", white)\"));\n particle.style.setProperty(\"--rotate\", \"\".concat(p.rotate, \"deg\"));\n point.classList.add(\"point\");\n particle.appendChild(point);\n element.appendChild(particle);\n requestAnimationFrame(()=>element.classList.add(\"active\"));\n setTimeout(()=>{\n try {\n element.removeChild(particle);\n } catch (e) {\n /* ignore removal errors */ }\n }, t);\n }, 30);\n }\n };\n const updateEffectPosition = (element)=>{\n if (!containerRef.current || !filterRef.current || !textRef.current) return;\n const containerRect = containerRef.current.getBoundingClientRect();\n const pos = element.getBoundingClientRect();\n const styles = {\n left: \"\".concat(pos.x - containerRect.x, \"px\"),\n top: \"\".concat(pos.y - containerRect.y, \"px\"),\n width: \"\".concat(pos.width, \"px\"),\n height: \"\".concat(pos.height, \"px\")\n };\n Object.assign(filterRef.current.style, styles);\n Object.assign(textRef.current.style, styles);\n // Nur Text kopieren wenn es kein Logo ist\n if (!element.classList.contains(\"nav-item-logo\")) {\n textRef.current.innerText = element.innerText;\n } else {\n textRef.current.innerText = \"\";\n }\n };\n const handleClick = (e, index, item)=>{\n e.preventDefault();\n if (item.type === \"logo\") {\n window.scrollTo({\n top: 0,\n behavior: \"smooth\"\n });\n // Logo wird nicht als \"active\" markiert im Sinne von Gooey Effect\n return;\n }\n const liEl = e.currentTarget.parentElement;\n if (!liEl || activeIndex === index) return;\n // Normal navigation\n window.location.href = item.href;\n setActiveIndex(index);\n updateEffectPosition(liEl);\n if (filterRef.current) {\n const particles = filterRef.current.querySelectorAll(\".particle\");\n particles.forEach((p)=>{\n var _filterRef_current;\n return (_filterRef_current = filterRef.current) === null || _filterRef_current === void 0 ? void 0 : _filterRef_current.removeChild(p);\n });\n }\n if (textRef.current) {\n textRef.current.classList.remove(\"active\");\n void textRef.current.offsetWidth; // force reflow\n textRef.current.classList.add(\"active\");\n }\n if (filterRef.current) {\n makeParticles(filterRef.current);\n }\n };\n const handleKeyDown = (e, index, item)=>{\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n const liEl = e.currentTarget.parentElement;\n if (liEl) {\n handleClick({\n currentTarget: e.currentTarget,\n preventDefault: ()=>{}\n }, index, item);\n }\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!navRef.current || !containerRef.current) return;\n const activeLi = navRef.current.querySelectorAll(\"li\")[activeIndex];\n if (activeLi && !activeLi.classList.contains(\"nav-item-logo\")) {\n var _textRef_current;\n updateEffectPosition(activeLi);\n (_textRef_current = textRef.current) === null || _textRef_current === void 0 ? void 0 : _textRef_current.classList.add(\"active\");\n }\n const resizeObserver = new ResizeObserver(()=>{\n var _navRef_current;\n const currentActiveLi = (_navRef_current = navRef.current) === null || _navRef_current === void 0 ? void 0 : _navRef_current.querySelectorAll(\"li\")[activeIndex];\n if (currentActiveLi && !currentActiveLi.classList.contains(\"nav-item-logo\")) {\n updateEffectPosition(currentActiveLi);\n }\n });\n resizeObserver.observe(containerRef.current);\n return ()=>resizeObserver.disconnect();\n }, [\n activeIndex\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"gooey-nav-container \".concat(items.length > 4 ? \"has-contact\" : \"\"),\n ref: containerRef,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n ref: navRef,\n children: items.map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"\".concat(activeIndex === index ? \"active\" : \"\", \" \").concat(item.type === \"logo\" ? \"nav-item-logo\" : \"\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: item.href,\n onClick: (e)=>handleClick(e, index, item),\n onKeyDown: (e)=>handleKeyDown(e, index, item),\n \"aria-label\": item.label,\n children: item.type === \"logo\" ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: item.icon,\n alt: item.label,\n className: \"nav-logo-img\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 201,\n columnNumber: 19\n }, undefined) : item.label\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 194,\n columnNumber: 15\n }, undefined)\n }, item.href, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, undefined))\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 188,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 187,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"effect filter\",\n ref: filterRef\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 210,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"effect text\",\n ref: textRef\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 211,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 186,\n columnNumber: 5\n }, undefined);\n};\n_s(GooeyNav, \"q8egYqNxX0HAskGPquyzqhCBCuo=\");\n_c = GooeyNav;\nconst allGooeyItems = [\n {\n label: \"Home\",\n href: \"#\",\n type: \"logo\",\n icon: \"/WebKlarLogo.png\"\n },\n {\n label: \"\\xdcber uns\",\n href: \"#about\"\n },\n {\n label: \"Leistungen\",\n href: \"#services\"\n },\n {\n label: \"Abl\\xe4ufe\",\n href: \"#process\"\n },\n {\n label: \"Kontakt\",\n href: \"#contact\"\n }\n];\nconst HandyAnsicht = (param)=>{\n let { children } = param;\n _s1();\n const [isMobile, setIsMobile] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isClient, setIsClient] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [showContact, setShowContact] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n setIsClient(true);\n const checkMobile = ()=>{\n setIsMobile(window.innerWidth < 768);\n };\n const handleScroll = ()=>{\n // Show contact after scrolling down 100px\n setShowContact(window.scrollY > 100);\n };\n checkMobile();\n window.addEventListener(\"resize\", checkMobile);\n window.addEventListener(\"scroll\", handleScroll);\n const mediaQuery = window.matchMedia(\"(max-width: 767px)\");\n const handleMediaChange = (e)=>{\n setIsMobile(e.matches);\n };\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener(\"change\", handleMediaChange);\n } else {\n mediaQuery.addListener(handleMediaChange);\n }\n handleMediaChange(mediaQuery);\n return ()=>{\n window.removeEventListener(\"resize\", checkMobile);\n window.removeEventListener(\"scroll\", handleScroll);\n if (mediaQuery.removeEventListener) {\n mediaQuery.removeEventListener(\"change\", handleMediaChange);\n } else {\n mediaQuery.removeListener(handleMediaChange);\n }\n };\n }, []);\n // Wenn showContact true ist, zeigen wir alle Items (5).\n // Wenn false, zeigen wir nur die ersten 4 (Logo + 3 Links).\n const currentItems = showContact ? allGooeyItems : allGooeyItems.slice(0, 4);\n if (!isClient || !isMobile) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: children\n }, void 0, false);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht__container\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht__nav-wrapper\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(GooeyNav, {\n items: currentItems\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 282,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 281,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht__content\",\n children: children\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 284,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 280,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 279,\n columnNumber: 5\n }, undefined);\n};\n_s1(HandyAnsicht, \"cGokQRhyj6pMiodS4NKsSRjHR4E=\");\n_c1 = HandyAnsicht;\n/* harmony default export */ __webpack_exports__[\"default\"] = (HandyAnsicht);\nvar _c, _c1;\n$RefreshReg$(_c, \"GooeyNav\");\n$RefreshReg$(_c1, \"HandyAnsicht\");\n\n\n;\r\n // Wrapped in an IIFE to avoid polluting the global scope\r\n ;\r\n (function () {\r\n var _a, _b;\r\n // Legacy CSS implementations will `eval` browser code in a Node.js context\r\n // to extract CSS. For backwards compatibility, we need to check we're in a\r\n // browser context before continuing.\r\n if (typeof self !== 'undefined' &&\r\n // AMP / No-JS mode does not inject these helpers:\r\n '$RefreshHelpers$' in self) {\r\n // @ts-ignore __webpack_module__ is global\r\n var currentExports = module.exports;\r\n // @ts-ignore __webpack_module__ is global\r\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\r\n // This cannot happen in MainTemplate because the exports mismatch between\r\n // templating and execution.\r\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\r\n // A module can be accepted automatically based on its exports, e.g. when\r\n // it is a Refresh Boundary.\r\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\r\n // Save the previous exports on update so we can compare the boundary\r\n // signatures.\r\n module.hot.dispose(function (data) {\r\n data.prevExports = currentExports;\r\n });\r\n // Unconditionally accept an update to this module, we'll check if it's\r\n // still a Refresh Boundary later.\r\n // @ts-ignore importMeta is replaced in the loader\r\n module.hot.accept();\r\n // This field is set when the previous version of this module was a\r\n // Refresh Boundary, letting us know we need to check for invalidation or\r\n // enqueue an update.\r\n if (prevExports !== null) {\r\n // A boundary can become ineligible if its exports are incompatible\r\n // with the previous exports.\r\n //\r\n // For example, if you add/remove/change exports, we'll want to\r\n // re-execute the importing modules, and force those components to\r\n // re-render. Similarly, if you convert a class component to a\r\n // function, we want to invalidate the boundary.\r\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\r\n module.hot.invalidate();\r\n }\r\n else {\r\n self.$RefreshHelpers$.scheduleUpdate();\r\n }\r\n }\r\n }\r\n else {\r\n // Since we just executed the code for the module, it's possible that the\r\n // new exports made it ineligible for being a boundary.\r\n // We only care about the case when we were _previously_ a boundary,\r\n // because we already accepted this update (accidental side effect).\r\n var isNoLongerABoundary = prevExports !== null;\r\n if (isNoLongerABoundary) {\r\n module.hot.invalidate();\r\n }\r\n }\r\n }\r\n })();\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvSGFuZHlBbnNpY2h0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRTJEO0FBQy9CO0FBd0I1QixNQUFNSSxXQUFvQztRQUFDLEVBQ3pDQyxLQUFLLEVBQ0xDLGdCQUFnQixHQUFHLEVBQ25CQyxnQkFBZ0IsRUFBRSxFQUNsQkMsb0JBQW9CO1FBQUM7UUFBSTtLQUFHLEVBQzVCQyxZQUFZLEdBQUcsRUFDZkMsZUFBZSxHQUFHLEVBQ2xCQyxTQUFTO1FBQUM7UUFBRztRQUFHO1FBQUc7UUFBRztRQUFHO1FBQUc7UUFBRztLQUFFLEVBQ2pDQyxxQkFBcUIsQ0FBQyxFQUN2Qjs7SUFDQyxNQUFNQyxlQUFlViw2Q0FBTUEsQ0FBd0I7SUFDbkQsTUFBTVcsU0FBU1gsNkNBQU1BLENBQTBCO0lBQy9DLE1BQU1ZLFlBQVlaLDZDQUFNQSxDQUF5QjtJQUNqRCxNQUFNYSxVQUFVYiw2Q0FBTUEsQ0FBeUI7SUFDL0MsTUFBTSxDQUFDYyxhQUFhQyxlQUFlLEdBQUdqQiwrQ0FBUUEsQ0FBQ1c7SUFFL0MsTUFBTU8sUUFBUTtZQUFDQyxxRUFBSTtlQUFNQSxJQUFJLElBQUlDLEtBQUtDLE1BQU0sS0FBS0Y7SUFBQUE7SUFFakQsTUFBTUcsUUFBUSxDQUFDQyxVQUFrQkMsWUFBb0JDO1FBQ25ELE1BQU1DLFFBQVEsQ0FBRSxNQUFNUixNQUFNLEVBQUMsSUFBS08sY0FBZUQsYUFBY0osQ0FBQUEsS0FBS08sRUFBRSxHQUFHLEdBQUU7UUFDM0UsT0FBTztZQUFDSixXQUFXSCxLQUFLUSxHQUFHLENBQUNGO1lBQVFILFdBQVdILEtBQUtTLEdBQUcsQ0FBQ0g7U0FBTztJQUNqRTtJQUVBLE1BQU1JLGlCQUFpQixDQUFDQyxHQUFXQyxHQUFXQyxHQUFxQkM7UUFDakUsTUFBTUMsU0FBU2pCLE1BQU1nQixJQUFJO1FBQ3pCLE9BQU87WUFDTEUsT0FBT2QsTUFBTVcsQ0FBQyxDQUFDLEVBQUUsRUFBRTNCLGdCQUFnQnlCLEdBQUd6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QVcsQ0FBQ0Y7UUFDekI7UUFFQUEsa0JBQWtCRjtRQUVsQixPQUFPO1lBQ0xuRCxPQUFPd0QsbUJBQW1CLENBQUMsVUFBVVY7WUFDckM5QyxPQUFPd0QsbUJBQW1CLENBQUMsVUFBVVI7WUFDckMsSUFBSUcsV0FBV0ssbUJBQW1CLEVBQUU7Z0JBQ2xDTCxXQUFXSyxtQkFBbUIsQ0FBQyxVQUFVSDtZQUMzQyxPQUFPO2dCQUNMRixXQUFXTSxjQUFjLENBQUNKO1lBQzVCO1FBQ0Y7SUFDRixHQUFHLEVBQUU7SUFFTCx3REFBd0Q7SUFDeEQsNERBQTREO0lBQzVELE1BQU1LLGVBQWVkLGNBQWNQLGdCQUFnQkEsY0FBY3NCLEtBQUssQ0FBQyxHQUFHO0lBRTFFLElBQUksQ0FBQ2pCLFlBQVksQ0FBQ0YsVUFBVTtRQUMxQixxQkFBTztzQkFBR0Q7O0lBQ1o7SUFFQSxxQkFDRSw4REFBQ25CO1FBQUlDLFdBQVU7a0JBQ2IsNEVBQUNEO1lBQUlDLFdBQVU7OzhCQUNiLDhEQUFDRDtvQkFBSUMsV0FBVTs4QkFDYiw0RUFBQ3BHO3dCQUFTQyxPQUFPd0k7Ozs7Ozs7Ozs7OzhCQUVuQiw4REFBQ3RDO29CQUFJQyxXQUFVOzhCQUNaa0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS1g7SUFsRU1EO01BQUFBO0FBb0VOLCtEQUFlQSxZQUFZQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2NvbXBvbmVudHMvSGFuZHlBbnNpY2h0LnRzeD8xZmRkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xyXG5cclxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0ICcuL0hhbmR5QW5zaWNodC5jc3MnO1xyXG5cclxuaW50ZXJmYWNlIEhhbmR5QW5zaWNodFByb3BzIHtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxufVxyXG5cclxudHlwZSBHb29leU5hdkl0ZW0gPSB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBocmVmOiBzdHJpbmc7XHJcbiAgdHlwZT86ICdsaW5rJyB8ICdsb2dvJztcclxuICBpY29uPzogc3RyaW5nO1xyXG59O1xyXG5cclxuaW50ZXJmYWNlIEdvb2V5TmF2UHJvcHMge1xyXG4gIGl0ZW1zOiBHb29leU5hdkl0ZW1bXTtcclxuICBhbmltYXRpb25UaW1lPzogbnVtYmVyO1xyXG4gIHBhcnRpY2xlQ291bnQ/OiBudW1iZXI7XHJcbiAgcGFydGljbGVEaXN0YW5jZXM/OiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIHBhcnRpY2xlUj86IG51bWJlcjtcclxuICB0aW1lVmFyaWFuY2U/OiBudW1iZXI7XHJcbiAgY29sb3JzPzogbnVtYmVyW107XHJcbiAgaW5pdGlhbEFjdGl2ZUluZGV4PzogbnVtYmVyO1xyXG59XHJcblxyXG5jb25zdCBHb29leU5hdjogUmVhY3QuRkM8R29vZXlOYXZQcm9wcz4gPSAoe1xyXG4gIGl0ZW1zLFxyXG4gIGFuaW1hdGlvblRpbWUgPSA2MDAsXHJcbiAgcGFydGljbGVDb3VudCA9IDE1LFxyXG4gIHBhcnRpY2xlRGlzdGFuY2VzID0gWzkwLCAxMF0sXHJcbiAgcGFydGljbGVSID0gMTAwLFxyXG4gIHRpbWVWYXJpYW5jZSA9IDMwMCxcclxuICBjb2xvcnMgPSBbMSwgMiwgMywgMSwgMiwgMywgMSwgNF0sXHJcbiAgaW5pdGlhbEFjdGl2ZUluZGV4ID0gMCxcclxufSkgPT4ge1xyXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IG5hdlJlZiA9IHVzZVJlZjxIVE1MVUxpc3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XHJcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50IHwgbnVsbD4obnVsbCk7XHJcbiAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShpbml0aWFsQWN0aXZlSW5kZXgpO1xyXG5cclxuICBjb25zdCBub2lzZSA9IChuID0gMSkgPT4gbiAvIDIgLSBNYXRoLnJhbmRvbSgpICogbjtcclxuXHJcbiAgY29uc3QgZ2V0WFkgPSAoZGlzdGFuY2U6IG51bWJlciwgcG9pbnRJbmRleDogbnVtYmVyLCB0b3RhbFBvaW50czogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCBhbmdsZSA9ICgoMzYwICsgbm9pc2UoOCkpIC8gdG90YWxQb2ludHMpICogcG9pbnRJbmRleCAqIChNYXRoLlBJIC8gMTgwKTtcclxuICAgIHJldHVybiBbZGlzdGFuY2UgKiBNYXRoLmNvcyhhbmdsZSksIGRpc3RhbmNlICogTWF0aC5zaW4oYW5nbGUpXTtcclxuICB9O1xyXG5cclxuICBjb25zdCBjcmVhdGVQYXJ0aWNsZSA9IChpOiBudW1iZXIsIHQ6IG51bWJlciwgZDogW251bWJlciwgbnVtYmVyXSwgcjogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCByb3RhdGUgPSBub2lzZShyIC8gMTApO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3RhcnQ6IGdldFhZKGRbMF0sIHBhcnRpY2xlQ291bnQgLSBpLCBwYXJ0aWNsZUNvdW50KSxcclxuICAgICAgZW5kOiBnZXRYWShkWzFdICsgbm9pc2UoNyksIHBhcnRpY2xlQ291bnQgLSBpLCBwYXJ0aWNsZUNvdW50KSxcclxuICAgICAgdGltZTogdCxcclxuICAgICAgc2NhbGU6IDEgKyBub2lzZSgwLjIpLFxyXG4gICAgICBjb2xvcjogY29sb3JzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNvbG9ycy5sZW5ndGgpXSxcclxuICAgICAgcm90YXRlOiByb3RhdGUgPiAwID8gKHJvdGF0ZSArIHIgLyAyMCkgKiAxMCA6IChyb3RhdGUgLSByIC8gMjApICogMTAsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IG1ha2VQYXJ0aWNsZXMgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGQgPSBwYXJ0aWNsZURpc3RhbmNlcztcclxuICAgIGNvbnN0IHIgPSBwYXJ0aWNsZVI7XHJcbiAgICBjb25zdCBidWJibGVUaW1lID0gYW5pbWF0aW9uVGltZSAqIDIgKyB0aW1lVmFyaWFuY2U7XHJcbiAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXRpbWUnLCBgJHtidWJibGVUaW1lfW1zYCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0aWNsZUNvdW50OyBpICs9IDEpIHtcclxuICAgICAgY29uc3QgdCA9IGFuaW1hdGlvblRpbWUgKiAyICsgbm9pc2UodGltZVZhcmlhbmNlICogMik7XHJcbiAgICAgIGNvbnN0IHAgPSBjcmVhdGVQYXJ0aWNsZShpLCB0LCBkLCByKTtcclxuICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcnRpY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIGNvbnN0IHBvaW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIHBhcnRpY2xlLmNsYXNzTGlzdC5hZGQoJ3BhcnRpY2xlJyk7XHJcbiAgICAgICAgcGFydGljbGUuc3R5bGUuc2V0UHJvcGVydHkoJy0tc3RhcnQteCcsIGAke3Auc3RhcnRbMF19cHhgKTtcclxuICAgICAgICBwYXJ0aWNsZS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zdGFydC15JywgYCR7cC5zdGFydFsxXX1weGApO1xyXG4gICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLWVuZC14JywgYCR7cC5lbmRbMF19cHhgKTtcclxuICAgICAgICBwYXJ0aWNsZS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1lbmQteScsIGAke3AuZW5kWzFdfXB4YCk7XHJcbiAgICAgICAgcGFydGljbGUuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGltZScsIGAke3AudGltZX1tc2ApO1xyXG4gICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLXNjYWxlJywgYCR7cC5zY2FsZX1gKTtcclxuICAgICAgICBwYXJ0aWNsZS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb2xvcicsIGB2YXIoLS1jb2xvci0ke3AuY29sb3J9LCB3aGl0ZSlgKTtcclxuICAgICAgICBwYXJ0aWNsZS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yb3RhdGUnLCBgJHtwLnJvdGF0ZX1kZWdgKTtcclxuXHJcbiAgICAgICAgcG9pbnQuY2xhc3NMaXN0LmFkZCgncG9pbnQnKTtcclxuICAgICAgICBwYXJ0aWNsZS5hcHBlbmRDaGlsZChwb2ludCk7XHJcbiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChwYXJ0aWNsZSk7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJykpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZSk7XHJcbiAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgLyogaWdub3JlIHJlbW92YWwgZXJyb3JzICovXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdCk7XHJcbiAgICAgIH0sIDMwKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCB1cGRhdGVFZmZlY3RQb3NpdGlvbiA9IChlbGVtZW50OiBIVE1MTElFbGVtZW50KSA9PiB7XHJcbiAgICBpZiAoIWNvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFmaWx0ZXJSZWYuY3VycmVudCB8fCAhdGV4dFJlZi5jdXJyZW50KSByZXR1cm47XHJcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBwb3MgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3Qgc3R5bGVzOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge1xyXG4gICAgICBsZWZ0OiBgJHtwb3MueCAtIGNvbnRhaW5lclJlY3QueH1weGAsXHJcbiAgICAgIHRvcDogYCR7cG9zLnkgLSBjb250YWluZXJSZWN0Lnl9cHhgLFxyXG4gICAgICB3aWR0aDogYCR7cG9zLndpZHRofXB4YCxcclxuICAgICAgaGVpZ2h0OiBgJHtwb3MuaGVpZ2h0fXB4YCxcclxuICAgIH07XHJcbiAgICBPYmplY3QuYXNzaWduKGZpbHRlclJlZi5jdXJyZW50LnN0eWxlLCBzdHlsZXMpO1xyXG4gICAgT2JqZWN0LmFzc2lnbih0ZXh0UmVmLmN1cnJlbnQuc3R5bGUsIHN0eWxlcyk7XHJcbiAgICAvLyBOdXIgVGV4dCBrb3BpZXJlbiB3ZW5uIGVzIGtlaW4gTG9nbyBpc3RcclxuICAgIGlmICghZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25hdi1pdGVtLWxvZ28nKSkge1xyXG4gICAgICB0ZXh0UmVmLmN1cnJlbnQuaW5uZXJUZXh0ID0gZWxlbWVudC5pbm5lclRleHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0ZXh0UmVmLmN1cnJlbnQuaW5uZXJUZXh0ID0gJyc7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sIGluZGV4OiBudW1iZXIsIGl0ZW06IEdvb2V5TmF2SXRlbSkgPT4ge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgXHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAnbG9nbycpIHtcclxuICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICAgLy8gTG9nbyB3aXJkIG5pY2h0IGFscyBcImFjdGl2ZVwiIG1hcmtpZXJ0IGltIFNpbm5lIHZvbiBHb29leSBFZmZlY3RcclxuICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsaUVsID0gZS5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQgYXMgSFRNTExJRWxlbWVudCB8IG51bGw7XHJcbiAgICBpZiAoIWxpRWwgfHwgYWN0aXZlSW5kZXggPT09IGluZGV4KSByZXR1cm47XHJcbiAgICBcclxuICAgIC8vIE5vcm1hbCBuYXZpZ2F0aW9uXHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGl0ZW0uaHJlZjtcclxuXHJcbiAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XHJcbiAgICB1cGRhdGVFZmZlY3RQb3NpdGlvbihsaUVsKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgcGFydGljbGVzID0gZmlsdGVyUmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhcnRpY2xlJyk7XHJcbiAgICAgIHBhcnRpY2xlcy5mb3JFYWNoKChwKSA9PiBmaWx0ZXJSZWYuY3VycmVudD8ucmVtb3ZlQ2hpbGQocCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0ZXh0UmVmLmN1cnJlbnQpIHtcclxuICAgICAgdGV4dFJlZi5jdXJyZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xyXG4gICAgICB2b2lkIHRleHRSZWYuY3VycmVudC5vZmZzZXRXaWR0aDsgLy8gZm9yY2UgcmVmbG93XHJcbiAgICAgIHRleHRSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQpIHtcclxuICAgICAgbWFrZVBhcnRpY2xlcyhmaWx0ZXJSZWYuY3VycmVudCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxBbmNob3JFbGVtZW50PiwgaW5kZXg6IG51bWJlciwgaXRlbTogR29vZXlOYXZJdGVtKSA9PiB7XHJcbiAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGNvbnN0IGxpRWwgPSBlLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MTElFbGVtZW50IHwgbnVsbDtcclxuICAgICAgaWYgKGxpRWwpIHtcclxuICAgICAgICBoYW5kbGVDbGljayh7IGN1cnJlbnRUYXJnZXQ6IGUuY3VycmVudFRhcmdldCwgcHJldmVudERlZmF1bHQ6ICgpID0+IHt9IH0gYXMgUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sIGluZGV4LCBpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAoIW5hdlJlZi5jdXJyZW50IHx8ICFjb250YWluZXJSZWYuY3VycmVudCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYWN0aXZlTGkgPSBuYXZSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaScpW2FjdGl2ZUluZGV4XSBhcyBIVE1MTElFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gICAgaWYgKGFjdGl2ZUxpICYmICFhY3RpdmVMaS5jbGFzc0xpc3QuY29udGFpbnMoJ25hdi1pdGVtLWxvZ28nKSkge1xyXG4gICAgICB1cGRhdGVFZmZlY3RQb3NpdGlvbihhY3RpdmVMaSk7XHJcbiAgICAgIHRleHRSZWYuY3VycmVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50QWN0aXZlTGkgPSBuYXZSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvckFsbCgnbGknKVthY3RpdmVJbmRleF0gYXMgSFRNTExJRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKGN1cnJlbnRBY3RpdmVMaSAmJiAhY3VycmVudEFjdGl2ZUxpLmNsYXNzTGlzdC5jb250YWlucygnbmF2LWl0ZW0tbG9nbycpKSB7XHJcbiAgICAgICAgdXBkYXRlRWZmZWN0UG9zaXRpb24oY3VycmVudEFjdGl2ZUxpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXJSZWYuY3VycmVudCk7XHJcbiAgICByZXR1cm4gKCkgPT4gcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gIH0sIFthY3RpdmVJbmRleF0pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9e2Bnb29leS1uYXYtY29udGFpbmVyICR7aXRlbXMubGVuZ3RoID4gNCA/ICdoYXMtY29udGFjdCcgOiAnJ31gfSByZWY9e2NvbnRhaW5lclJlZn0+XHJcbiAgICAgIDxuYXY+XHJcbiAgICAgICAgPHVsIHJlZj17bmF2UmVmfT5cclxuICAgICAgICAgIHtpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXHJcbiAgICAgICAgICAgIDxsaSBcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0uaHJlZn0gXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHthY3RpdmVJbmRleCA9PT0gaW5kZXggPyAnYWN0aXZlJyA6ICcnfSAke2l0ZW0udHlwZSA9PT0gJ2xvZ28nID8gJ25hdi1pdGVtLWxvZ28nIDogJyd9YH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBocmVmPXtpdGVtLmhyZWZ9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gaGFuZGxlQ2xpY2soZSwgaW5kZXgsIGl0ZW0pfVxyXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4gaGFuZGxlS2V5RG93bihlLCBpbmRleCwgaXRlbSl9XHJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtLnR5cGUgPT09ICdsb2dvJyA/IChcclxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2l0ZW0uaWNvbn0gYWx0PXtpdGVtLmxhYmVsfSBjbGFzc05hbWU9XCJuYXYtbG9nby1pbWdcIiAvPlxyXG4gICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgaXRlbS5sYWJlbFxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICApKX1cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L25hdj5cclxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZWZmZWN0IGZpbHRlclwiIHJlZj17ZmlsdGVyUmVmfSAvPlxyXG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJlZmZlY3QgdGV4dFwiIHJlZj17dGV4dFJlZn0gLz5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhbGxHb29leUl0ZW1zOiBHb29leU5hdkl0ZW1bXSA9IFtcclxuICB7IGxhYmVsOiAnSG9tZScsIGhyZWY6ICcjJywgdHlwZTogJ2xvZ28nLCBpY29uOiAnL1dlYktsYXJMb2dvLnBuZycgfSxcclxuICB7IGxhYmVsOiAnw5xiZXIgdW5zJywgaHJlZjogJyNhYm91dCcgfSxcclxuICB7IGxhYmVsOiAnTGVpc3R1bmdlbicsIGhyZWY6ICcjc2VydmljZXMnIH0sXHJcbiAgeyBsYWJlbDogJ0FibMOkdWZlJywgaHJlZjogJyNwcm9jZXNzJyB9LFxyXG4gIHsgbGFiZWw6ICdLb250YWt0JywgaHJlZjogJyNjb250YWN0JyB9LFxyXG5dO1xyXG5cclxuY29uc3QgSGFuZHlBbnNpY2h0OiBSZWFjdC5GQzxIYW5keUFuc2ljaHRQcm9wcz4gPSAoeyBjaGlsZHJlbiB9KSA9PiB7XHJcbiAgY29uc3QgW2lzTW9iaWxlLCBzZXRJc01vYmlsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgW2lzQ2xpZW50LCBzZXRJc0NsaWVudF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgW3Nob3dDb250YWN0LCBzZXRTaG93Q29udGFjdF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBzZXRJc0NsaWVudCh0cnVlKTtcclxuXHJcbiAgICBjb25zdCBjaGVja01vYmlsZSA9ICgpID0+IHtcclxuICAgICAgc2V0SXNNb2JpbGUod2luZG93LmlubmVyV2lkdGggPCA3NjgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XHJcbiAgICAgIC8vIFNob3cgY29udGFjdCBhZnRlciBzY3JvbGxpbmcgZG93biAxMDBweFxyXG4gICAgICBzZXRTaG93Q29udGFjdCh3aW5kb3cuc2Nyb2xsWSA+IDEwMCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNoZWNrTW9iaWxlKCk7XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNoZWNrTW9iaWxlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xyXG5cclxuICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogNzY3cHgpJyk7XHJcbiAgICBjb25zdCBoYW5kbGVNZWRpYUNoYW5nZSA9IChlOiBNZWRpYVF1ZXJ5TGlzdEV2ZW50IHwgTWVkaWFRdWVyeUxpc3QpID0+IHtcclxuICAgICAgc2V0SXNNb2JpbGUoZS5tYXRjaGVzKTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKG1lZGlhUXVlcnkuYWRkRXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICBtZWRpYVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZU1lZGlhQ2hhbmdlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1lZGlhUXVlcnkuYWRkTGlzdGVuZXIoaGFuZGxlTWVkaWFDaGFuZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZU1lZGlhQ2hhbmdlKG1lZGlhUXVlcnkpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjaGVja01vYmlsZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xyXG4gICAgICBpZiAobWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKSB7XHJcbiAgICAgICAgbWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVNZWRpYUNoYW5nZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWVkaWFRdWVyeS5yZW1vdmVMaXN0ZW5lcihoYW5kbGVNZWRpYUNoYW5nZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICAvLyBXZW5uIHNob3dDb250YWN0IHRydWUgaXN0LCB6ZWlnZW4gd2lyIGFsbGUgSXRlbXMgKDUpLlxyXG4gIC8vIFdlbm4gZmFsc2UsIHplaWdlbiB3aXIgbnVyIGRpZSBlcnN0ZW4gNCAoTG9nbyArIDMgTGlua3MpLlxyXG4gIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHNob3dDb250YWN0ID8gYWxsR29vZXlJdGVtcyA6IGFsbEdvb2V5SXRlbXMuc2xpY2UoMCwgNCk7XHJcblxyXG4gIGlmICghaXNDbGllbnQgfHwgIWlzTW9iaWxlKSB7XHJcbiAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGFuZHktYW5zaWNodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhhbmR5LWFuc2ljaHRfX2NvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGFuZHktYW5zaWNodF9fbmF2LXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxHb29leU5hdiBpdGVtcz17Y3VycmVudEl0ZW1zfSAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGFuZHktYW5zaWNodF9fY29udGVudFwiPlxyXG4gICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBIYW5keUFuc2ljaHQ7XHJcblxyXG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsIkdvb2V5TmF2IiwiaXRlbXMiLCJhbmltYXRpb25UaW1lIiwicGFydGljbGVDb3VudCIsInBhcnRpY2xlRGlzdGFuY2VzIiwicGFydGljbGVSIiwidGltZVZhcmlhbmNlIiwiY29sb3JzIiwiaW5pdGlhbEFjdGl2ZUluZGV4IiwiY29udGFpbmVyUmVmIiwibmF2UmVmIiwiZmlsdGVyUmVmIiwidGV4dFJlZiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJub2lzZSIsIm4iLCJNYXRoIiwicmFuZG9tIiwiZ2V0WFkiLCJkaXN0YW5jZSIsInBvaW50SW5kZXgiLCJ0b3RhbFBvaW50cyIsImFuZ2xlIiwiUEkiLCJjb3MiLCJzaW4iLCJjcmVhdGVQYXJ0aWNsZSIsImkiLCJ0IiwiZCIsInIiLCJyb3RhdGUiLCJzdGFydCIsImVuZCIsInRpbWUiLCJzY2FsZSIsImNvbG9yIiwiZmxvb3IiLCJsZW5ndGgiLCJtYWtlUGFydGljbGVzIiwiZWxlbWVudCIsImJ1YmJsZVRpbWUiLCJzdHlsZSIsInNldFByb3BlcnR5IiwicCIsImNsYXNzTGlzdCIsInJlbW92ZSIsInNldFRpbWVvdXQiLCJwYXJ0aWNsZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInBvaW50IiwiYWRkIiwiYXBwZW5kQ2hpbGQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJyZW1vdmVDaGlsZCIsInVwZGF0ZUVmZmVjdFBvc2l0aW9uIiwiY3VycmVudCIsImNvbnRhaW5lclJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwb3MiLCJzdHlsZXMiLCJsZWZ0IiwieCIsInRvcCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRhaW5zIiwiaW5uZXJUZXh0IiwiaGFuZGxlQ2xpY2siLCJlIiwiaW5kZXgiLCJpdGVtIiwicHJldmVudERlZmF1bHQiLCJ0eXBlIiwid2luZG93Iiwic2Nyb2xsVG8iLCJiZWhhdmlvciIsImxpRWwiLCJjdXJyZW50VGFyZ2V0IiwicGFyZW50RWxlbWVudCIsImxvY2F0aW9uIiwiaHJlZiIsInBhcnRpY2xlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwib2Zmc2V0V2lkdGgiLCJoYW5kbGVLZXlEb3duIiwia2V5IiwiYWN0aXZlTGkiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiY3VycmVudEFjdGl2ZUxpIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJkaXYiLCJjbGFzc05hbWUiLCJyZWYiLCJuYXYiLCJ1bCIsIm1hcCIsImxpIiwiYSIsIm9uQ2xpY2siLCJvbktleURvd24iLCJhcmlhLWxhYmVsIiwibGFiZWwiLCJpbWciLCJzcmMiLCJpY29uIiwiYWx0Iiwic3BhbiIsImFsbEdvb2V5SXRlbXMiLCJIYW5keUFuc2ljaHQiLCJjaGlsZHJlbiIsImlzTW9iaWxlIiwic2V0SXNNb2JpbGUiLCJpc0NsaWVudCIsInNldElzQ2xpZW50Iiwic2hvd0NvbnRhY3QiLCJzZXRTaG93Q29udGFjdCIsImNoZWNrTW9iaWxlIiwiaW5uZXJXaWR0aCIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFkiLCJhZGRFdmVudExpc3RlbmVyIiwibWVkaWFRdWVyeSIsIm1hdGNoTWVkaWEiLCJoYW5kbGVNZWRpYUNoYW5nZSIsIm1hdGNoZXMiLCJhZGRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsImN1cnJlbnRJdGVtcyIsInNsaWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/HandyAnsicht.tsx\n"));
/***/ })
});