react-email 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +42 -0
- package/dist/utils/check-directory-exist.d.ts +1 -0
- package/dist/utils/check-directory-exist.js +9 -0
- package/dist/utils/check-empty-directory.d.ts +1 -0
- package/dist/utils/check-empty-directory.js +12 -0
- package/dist/utils/contants.d.ts +10 -0
- package/dist/utils/contants.js +18 -0
- package/dist/utils/copy-files.d.ts +1 -0
- package/dist/utils/copy-files.js +30 -0
- package/dist/utils/watcher.d.ts +2 -0
- package/dist/utils/watcher.js +22 -0
- package/package.json +30 -9
- package/{base → preview}/next-env.d.ts +0 -0
- package/preview/package.json +52 -0
- package/preview/postcss.config.js +6 -0
- package/preview/src/components/button.tsx +85 -0
- package/{base/src/components/code → preview/src/components}/code.tsx +5 -38
- package/preview/src/components/heading.tsx +114 -0
- package/preview/src/components/index.ts +7 -0
- package/preview/src/components/layout.tsx +76 -0
- package/preview/src/components/logo.tsx +71 -0
- package/preview/src/components/sidebar.tsx +137 -0
- package/preview/src/components/text.tsx +100 -0
- package/preview/src/components/topbar.tsx +55 -0
- package/preview/src/pages/_app.tsx +29 -0
- package/preview/src/pages/_document.tsx +13 -0
- package/preview/src/pages/index.tsx +36 -0
- package/preview/src/pages/preview/[slug].tsx +68 -0
- package/preview/src/styles/globals.css +3 -0
- package/preview/src/utils/as.ts +26 -0
- package/preview/src/utils/index.ts +2 -0
- package/preview/src/utils/unreachable.ts +6 -0
- package/preview/tailwind.config.js +90 -0
- package/preview/tsconfig.json +31 -0
- package/readme.md +0 -0
- package/tsconfig.json +32 -4
- package/.babelrc +0 -3
- package/base/.eslintrc.js +0 -4
- package/base/.next/build-manifest.json +0 -35
- package/base/.next/cache/webpack/client-development/0.pack +0 -0
- package/base/.next/cache/webpack/client-development/1.pack +0 -0
- package/base/.next/cache/webpack/client-development/index.pack +0 -0
- package/base/.next/cache/webpack/client-development/index.pack.old +0 -0
- package/base/.next/cache/webpack/server-development/0.pack +0 -0
- package/base/.next/cache/webpack/server-development/1.pack +0 -0
- package/base/.next/cache/webpack/server-development/index.pack +0 -0
- package/base/.next/cache/webpack/server-development/index.pack.old +0 -0
- package/base/.next/package.json +0 -1
- package/base/.next/react-loadable-manifest.json +0 -1
- package/base/.next/server/emails_notion-magic-link_tsx.js +0 -25
- package/base/.next/server/emails_stripe-welcome_tsx.js +0 -25
- package/base/.next/server/emails_vercel-invite-user_tsx.js +0 -25
- package/base/.next/server/middleware-build-manifest.js +0 -1
- package/base/.next/server/middleware-manifest.json +0 -6
- package/base/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/base/.next/server/pages/[...path].js +0 -386
- package/base/.next/server/pages/_app.js +0 -145
- package/base/.next/server/pages/_document.js +0 -211
- package/base/.next/server/pages/_error.js +0 -56
- package/base/.next/server/pages/api/[...path].js +0 -253
- package/base/.next/server/pages-manifest.json +0 -7
- package/base/.next/server/webpack-api-runtime.js +0 -168
- package/base/.next/server/webpack-runtime.js +0 -168
- package/base/.next/static/chunks/amp.js +0 -872
- package/base/.next/static/chunks/main.js +0 -1166
- package/base/.next/static/chunks/pages/[...path].js +0 -904
- package/base/.next/static/chunks/pages/_app.js +0 -467
- package/base/.next/static/chunks/pages/_error.js +0 -28
- package/base/.next/static/chunks/polyfills.js +0 -1
- package/base/.next/static/chunks/react-refresh.js +0 -62
- package/base/.next/static/chunks/webpack.js +0 -1242
- package/base/.next/static/development/_buildManifest.js +0 -1
- package/base/.next/static/development/_ssgManifest.js +0 -1
- package/base/.next/static/webpack/94b31eaefc86ea7b.webpack.hot-update.json +0 -1
- package/base/.next/static/webpack/webpack.94b31eaefc86ea7b.hot-update.js +0 -36
- package/base/.next/trace +0 -5
- package/base/next.config.js +0 -11
- package/base/package.json +0 -53
- package/base/postcss.config.js +0 -20
- package/base/public/static/fonts/Biotif-Bold.woff +0 -0
- package/base/public/static/fonts/Biotif-Bold.woff2 +0 -0
- package/base/public/static/fonts/Biotif-Book.woff +0 -0
- package/base/public/static/fonts/Biotif-Book.woff2 +0 -0
- package/base/public/static/fonts/Biotif-Regular.woff +0 -0
- package/base/public/static/fonts/Biotif-Regular.woff2 +0 -0
- package/base/public/static/fonts/Biotif-SemiBold.woff +0 -0
- package/base/public/static/fonts/Biotif-SemiBold.woff2 +0 -0
- package/base/public/static/fonts/FiraCode-Regular.woff +0 -0
- package/base/public/static/fonts/FiraCode-Regular.woff2 +0 -0
- package/base/public/static/images/favicon.ico +0 -0
- package/base/public/static/images/notion-logo.png +0 -0
- package/base/public/static/images/stripe-logo.png +0 -0
- package/base/public/static/images/vercel-arrow.png +0 -0
- package/base/public/static/images/vercel-logo.png +0 -0
- package/base/readme.md +0 -19
- package/base/src/components/code/index.ts +0 -1
- package/base/src/components/icon-button/icon-button.tsx +0 -23
- package/base/src/components/icon-button/index.ts +0 -1
- package/base/src/components/icons/icon-base.tsx +0 -26
- package/base/src/components/icons/icon-check.tsx +0 -18
- package/base/src/components/icons/icon-clipboard.tsx +0 -39
- package/base/src/components/icons/icon-download.tsx +0 -18
- package/base/src/components/icons/icon-loading.tsx +0 -33
- package/base/src/components/icons/index.ts +0 -4
- package/base/src/components/layout.tsx +0 -53
- package/base/src/components/tooltip/index.ts +0 -1
- package/base/src/components/tooltip/tooltip-arrow.tsx +0 -1
- package/base/src/components/tooltip/tooltip-content.tsx +0 -26
- package/base/src/components/tooltip/tooltip-provider.tsx +0 -1
- package/base/src/components/tooltip/tooltip-trigger.tsx +0 -1
- package/base/src/components/tooltip/tooltip.tsx +0 -22
- package/base/src/components/topbar/external.tsx +0 -30
- package/base/src/components/topbar/feedback.tsx +0 -89
- package/base/src/components/topbar/logo.tsx +0 -27
- package/base/src/components/topbar/send-test.tsx +0 -95
- package/base/src/components/topbar/toggle-view.tsx +0 -66
- package/base/src/helpers/bulb-icon.json +0 -1
- package/base/src/helpers/chat-icon.json +0 -1
- package/base/src/helpers/check-icon.json +0 -1
- package/base/src/helpers/code-icon.json +0 -1
- package/base/src/helpers/copy-icon.json +0 -1
- package/base/src/helpers/desktop-icon.json +0 -1
- package/base/src/helpers/download-icon.json +0 -1
- package/base/src/helpers/eye-icon.json +0 -1
- package/base/src/helpers/file-icon.json +0 -1
- package/base/src/helpers/folder-icon.json +0 -1
- package/base/src/helpers/inbox-icon.json +0 -1
- package/base/src/helpers/launch-icon.json +0 -1
- package/base/src/helpers/mail-icon.json +0 -1
- package/base/src/helpers/mobile-icon.json +0 -1
- package/base/src/helpers/note-icon.json +0 -1
- package/base/src/helpers/reply-icon.json +0 -1
- package/base/src/pages/[...path].tsx +0 -40
- package/base/src/pages/_app.tsx +0 -11
- package/base/src/pages/_document.tsx +0 -37
- package/base/src/pages/api/[...path].js +0 -20
- package/base/src/styles/globals.css +0 -48
- package/base/src/utils/copy-text-to-clipboard.ts +0 -7
- package/base/tsconfig.json +0 -5
- package/src/index.js +0 -30
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
3
|
-
* This devtool is neither made for production nor for readable output files.
|
|
4
|
-
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
5
|
-
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
6
|
-
* or disable the default devtool with "devtool: false".
|
|
7
|
-
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
8
|
-
*/
|
|
9
|
-
(() => {
|
|
10
|
-
var exports = {};
|
|
11
|
-
exports.id = "pages/_document";
|
|
12
|
-
exports.ids = ["pages/_document"];
|
|
13
|
-
exports.modules = {
|
|
14
|
-
|
|
15
|
-
/***/ "./node_modules/next/dist/client/head-manager.js":
|
|
16
|
-
/*!*******************************************************!*\
|
|
17
|
-
!*** ./node_modules/next/dist/client/head-manager.js ***!
|
|
18
|
-
\*******************************************************/
|
|
19
|
-
/***/ ((module, exports) => {
|
|
20
|
-
|
|
21
|
-
"use strict";
|
|
22
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = initHeadManager;\nexports.isEqualNode = isEqualNode;\nexports.DOMAttributeNames = void 0;\nfunction initHeadManager() {\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector(`style[data-href=\"${h.props[\"data-href\"]}\"]`)) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nexports.DOMAttributeNames = DOMAttributeNames;\nfunction reactElementToDOM({ type , props }) {\n const el = document.createElement(type);\n for(const p in props){\n if (!props.hasOwnProperty(p)) continue;\n if (p === \"children\" || p === \"dangerouslySetInnerHTML\") continue;\n // we don't render undefined props to the DOM\n if (props[p] === undefined) continue;\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (type === \"script\" && (attr === \"async\" || attr === \"defer\" || attr === \"noModule\")) {\n el[attr] = !!props[p];\n } else {\n el.setAttribute(attr, props[p]);\n }\n }\n const { children , dangerouslySetInnerHTML } = props;\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return el;\n}\nfunction isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(\"nonce\");\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(\"nonce\")) {\n const cloneTag = newTag.cloneNode(true);\n cloneTag.setAttribute(\"nonce\", \"\");\n cloneTag.nonce = nonce;\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag);\n }\n }\n return oldTag.isEqualNode(newTag);\n}\nfunction updateElements(type, components) {\n const headEl = document.getElementsByTagName(\"head\")[0];\n const headCountEl = headEl.querySelector(\"meta[name=next-head-count]\");\n if (true) {\n if (!headCountEl) {\n console.error(\"Warning: next-head-count is missing. https://nextjs.org/docs/messages/next-head-count-missing\");\n return;\n }\n }\n const headCount = Number(headCountEl.content);\n const oldTags = [];\n for(let i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = (j == null ? void 0 : j.previousElementSibling) || null){\n var ref;\n if ((j == null ? void 0 : (ref = j.tagName) == null ? void 0 : ref.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var ref;\n return (ref = t.parentNode) == null ? void 0 : ref.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCxrQkFBZSxHQUFHRyxlQUFlLENBQUM7QUFDbENILG1CQUFtQixHQUFHSSxXQUFXLENBQUM7QUFDbENKLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ25DLFNBQVNHLGVBQWUsR0FBRztJQUN2QixPQUFPO1FBQ0hHLGdCQUFnQixFQUFFLElBQUlDLEdBQUcsRUFBRTtRQUMzQkMsVUFBVSxFQUFFLENBQUNDLElBQUksR0FBRztZQUNoQixNQUFNQyxJQUFJLEdBQUcsRUFBRTtZQUNmRCxJQUFJLENBQUNFLE9BQU8sQ0FBQyxDQUFDQyxDQUFDLEdBQUc7Z0JBQ2QsSUFDQSxvRUFBb0U7Z0JBQ3BFQSxDQUFDLENBQUNDLElBQUksS0FBSyxNQUFNLElBQUlELENBQUMsQ0FBQ0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7b0JBQ2xELElBQUlDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLENBQUMsaUJBQWlCLEVBQUVKLENBQUMsQ0FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ3RFLE9BQU87cUJBQ1YsTUFBTTt3QkFDSEYsQ0FBQyxDQUFDRSxLQUFLLENBQUNHLElBQUksR0FBR0wsQ0FBQyxDQUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3BDRixDQUFDLENBQUNFLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBR0ksU0FBUyxDQUFDO3FCQUNwQztpQkFDSjtnQkFDRCxNQUFNQyxVQUFVLEdBQUdULElBQUksQ0FBQ0UsQ0FBQyxDQUFDQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNyQ00sVUFBVSxDQUFDQyxJQUFJLENBQUNSLENBQUMsQ0FBQyxDQUFDO2dCQUNuQkYsSUFBSSxDQUFDRSxDQUFDLENBQUNDLElBQUksQ0FBQyxHQUFHTSxVQUFVLENBQUM7YUFDN0IsQ0FBQyxDQUFDO1lBQ0gsTUFBTUUsY0FBYyxHQUFHWCxJQUFJLENBQUNZLEtBQUssR0FBR1osSUFBSSxDQUFDWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtZQUN4RCxJQUFJQSxLQUFLLEdBQUcsRUFBRTtZQUNkLElBQUlELGNBQWMsRUFBRTtnQkFDaEIsTUFBTSxFQUFFRSxRQUFRLEdBQUcsR0FBR0YsY0FBYyxDQUFDUCxLQUFLO2dCQUMxQ1EsS0FBSyxHQUFHLE9BQU9DLFFBQVEsS0FBSyxRQUFRLEdBQUdBLFFBQVEsR0FBR0MsS0FBSyxDQUFDQyxPQUFPLENBQUNGLFFBQVEsQ0FBQyxHQUFHQSxRQUFRLENBQUNHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDdEc7WUFDRCxJQUFJSixLQUFLLEtBQUtQLFFBQVEsQ0FBQ08sS0FBSyxFQUFFUCxRQUFRLENBQUNPLEtBQUssR0FBR0EsS0FBSyxDQUFDO1lBQ3JEO2dCQUNJLE1BQU07Z0JBQ04sTUFBTTtnQkFDTixNQUFNO2dCQUNOLE9BQU87Z0JBQ1AsUUFBUTthQUNYLENBQUNYLE9BQU8sQ0FBQyxDQUFDRSxJQUFJLEdBQUc7Z0JBQ2RjLGNBQWMsQ0FBQ2QsSUFBSSxFQUFFSCxJQUFJLENBQUNHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzFDLENBQUMsQ0FBQztTQUNOO0tBQ0osQ0FBQztDQUNMO0FBQ0QsTUFBTVIsaUJBQWlCLEdBQUc7SUFDdEJ1QixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CQyxTQUFTLEVBQUUsT0FBTztJQUNsQkMsT0FBTyxFQUFFLEtBQUs7SUFDZEMsU0FBUyxFQUFFLFlBQVk7SUFDdkJDLFFBQVEsRUFBRSxVQUFVO0NBQ3ZCO0FBQ0RoQyx5QkFBeUIsR0FBR0ssaUJBQWlCLENBQUM7QUFDOUMsU0FBUzRCLGlCQUFpQixDQUFDLEVBQUVwQixJQUFJLEdBQUdDLEtBQUssR0FBRyxFQUFFO0lBQzFDLE1BQU1vQixFQUFFLEdBQUduQixRQUFRLENBQUNvQixhQUFhLENBQUN0QixJQUFJLENBQUM7SUFDdkMsSUFBSSxNQUFNdUIsQ0FBQyxJQUFJdEIsS0FBSyxDQUFDO1FBQ2pCLElBQUksQ0FBQ0EsS0FBSyxDQUFDdUIsY0FBYyxDQUFDRCxDQUFDLENBQUMsRUFBRSxTQUFTO1FBQ3ZDLElBQUlBLENBQUMsS0FBSyxVQUFVLElBQUlBLENBQUMsS0FBSyx5QkFBeUIsRUFBRSxTQUFTO1FBQ2xFLDZDQUE2QztRQUM3QyxJQUFJdEIsS0FBSyxDQUFDc0IsQ0FBQyxDQUFDLEtBQUtsQixTQUFTLEVBQUUsU0FBUztRQUNyQyxNQUFNb0IsSUFBSSxHQUFHakMsaUJBQWlCLENBQUMrQixDQUFDLENBQUMsSUFBSUEsQ0FBQyxDQUFDRyxXQUFXLEVBQUU7UUFDcEQsSUFBSTFCLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQ3lCLElBQUksS0FBSyxPQUFPLElBQUlBLElBQUksS0FBSyxPQUFPLElBQUlBLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRTtZQUNwRkosRUFBRSxDQUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUN4QixLQUFLLENBQUNzQixDQUFDLENBQUMsQ0FBQztTQUN6QixNQUFNO1lBQ0hGLEVBQUUsQ0FBQ00sWUFBWSxDQUFDRixJQUFJLEVBQUV4QixLQUFLLENBQUNzQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25DO0tBQ0o7SUFDRCxNQUFNLEVBQUViLFFBQVEsR0FBR2tCLHVCQUF1QixHQUFHLEdBQUczQixLQUFLO0lBQ3JELElBQUkyQix1QkFBdUIsRUFBRTtRQUN6QlAsRUFBRSxDQUFDUSxTQUFTLEdBQUdELHVCQUF1QixDQUFDRSxNQUFNLElBQUksRUFBRSxDQUFDO0tBQ3ZELE1BQU0sSUFBSXBCLFFBQVEsRUFBRTtRQUNqQlcsRUFBRSxDQUFDVSxXQUFXLEdBQUcsT0FBT3JCLFFBQVEsS0FBSyxRQUFRLEdBQUdBLFFBQVEsR0FBR0MsS0FBSyxDQUFDQyxPQUFPLENBQUNGLFFBQVEsQ0FBQyxHQUFHQSxRQUFRLENBQUNHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDL0c7SUFDRCxPQUFPUSxFQUFFLENBQUM7Q0FDYjtBQUNELFNBQVM5QixXQUFXLENBQUN5QyxNQUFNLEVBQUVDLE1BQU0sRUFBRTtJQUNqQyxJQUFJRCxNQUFNLFlBQVlFLFdBQVcsSUFBSUQsTUFBTSxZQUFZQyxXQUFXLEVBQUU7UUFDaEUsTUFBTUMsS0FBSyxHQUFHRixNQUFNLENBQUNHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDMUMsOEZBQThGO1FBQzlGLDRGQUE0RjtRQUM1RixJQUFJRCxLQUFLLElBQUksQ0FBQ0gsTUFBTSxDQUFDSSxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDeEMsTUFBTUMsUUFBUSxHQUFHSixNQUFNLENBQUNLLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDdkNELFFBQVEsQ0FBQ1YsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuQ1UsUUFBUSxDQUFDRixLQUFLLEdBQUdBLEtBQUssQ0FBQztZQUN2QixPQUFPQSxLQUFLLEtBQUtILE1BQU0sQ0FBQ0csS0FBSyxJQUFJSCxNQUFNLENBQUN6QyxXQUFXLENBQUM4QyxRQUFRLENBQUMsQ0FBQztTQUNqRTtLQUNKO0lBQ0QsT0FBT0wsTUFBTSxDQUFDekMsV0FBVyxDQUFDMEMsTUFBTSxDQUFDLENBQUM7Q0FDckM7QUFDRCxTQUFTbkIsY0FBYyxDQUFDZCxJQUFJLEVBQUVNLFVBQVUsRUFBRTtJQUN0QyxNQUFNaUMsTUFBTSxHQUFHckMsUUFBUSxDQUFDc0Msb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDcEMsYUFBYSxDQUFDLDRCQUE0QixDQUFDO0lBQ3RFLElBQUl1QyxJQUFxQyxFQUFFO1FBQ3ZDLElBQUksQ0FBQ0QsV0FBVyxFQUFFO1lBQ2RFLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUM7WUFDL0csT0FBTztTQUNWO0tBQ0o7SUFDRCxNQUFNQyxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0wsV0FBVyxDQUFDTSxPQUFPLENBQUM7SUFDN0MsTUFBTUMsT0FBTyxHQUFHLEVBQUU7SUFDbEIsSUFBSSxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQyxDQUFDLEdBQUdULFdBQVcsQ0FBQ1Usc0JBQXNCLEVBQUVGLENBQUMsR0FBR0osU0FBUyxFQUFFSSxDQUFDLEVBQUUsRUFBRUMsQ0FBQyxHQUFHLENBQUNBLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUdBLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDbkksSUFBSUMsR0FBRztRQUNQLElBQUksQ0FBQ0YsQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDRSxHQUFHLEdBQUdGLENBQUMsQ0FBQ0csT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHRCxHQUFHLENBQUMxQixXQUFXLEVBQUUsQ0FBQyxLQUFLMUIsSUFBSSxFQUFFO1lBQ3hGZ0QsT0FBTyxDQUFDekMsSUFBSSxDQUFDMkMsQ0FBQyxDQUFDLENBQUM7U0FDbkI7S0FDSjtJQUNELE1BQU1JLE9BQU8sR0FBR2hELFVBQVUsQ0FBQ2lELEdBQUcsQ0FBQ25DLGlCQUFpQixDQUFDLENBQUNvQyxNQUFNLENBQUMsQ0FBQ3ZCLE1BQU0sR0FBRztRQUMvRCxJQUFJLElBQUl3QixDQUFDLEdBQUcsQ0FBQyxFQUFFQyxHQUFHLEdBQUdWLE9BQU8sQ0FBQ1csTUFBTSxFQUFFRixDQUFDLEdBQUdDLEdBQUcsRUFBRUQsQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTXpCLE1BQU0sR0FBR2dCLE9BQU8sQ0FBQ1MsQ0FBQyxDQUFDO1lBQ3pCLElBQUlsRSxXQUFXLENBQUN5QyxNQUFNLEVBQUVDLE1BQU0sQ0FBQyxFQUFFO2dCQUM3QmUsT0FBTyxDQUFDWSxNQUFNLENBQUNILENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckIsT0FBTyxLQUFLLENBQUM7YUFDaEI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0tBQ2YsQ0FBQztJQUNGVCxPQUFPLENBQUNsRCxPQUFPLENBQUMsQ0FBQytELENBQUMsR0FBRztRQUNqQixJQUFJVCxHQUFHO1FBQ1AsT0FBTyxDQUFDQSxHQUFHLEdBQUdTLENBQUMsQ0FBQ0MsVUFBVSxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHVixHQUFHLENBQUNXLFdBQVcsQ0FBQ0YsQ0FBQyxDQUFDLENBQUM7S0FDckUsQ0FBQyxDQUFDO0lBQ0hQLE9BQU8sQ0FBQ3hELE9BQU8sQ0FBQyxDQUFDK0QsQ0FBQyxHQUFHdEIsTUFBTSxDQUFDeUIsWUFBWSxDQUFDSCxDQUFDLEVBQUVwQixXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFEQSxXQUFXLENBQUNNLE9BQU8sR0FBRyxDQUFDRixTQUFTLEdBQUdHLE9BQU8sQ0FBQ1csTUFBTSxHQUFHTCxPQUFPLENBQUNLLE1BQU0sQ0FBQyxDQUFDTSxRQUFRLEVBQUUsQ0FBQztDQUNsRjtBQUVELElBQUksQ0FBQyxPQUFPOUUsT0FBTyxDQUFDRSxPQUFPLEtBQUssVUFBVSxJQUFLLE9BQU9GLE9BQU8sQ0FBQ0UsT0FBTyxLQUFLLFFBQVEsSUFBSUYsT0FBTyxDQUFDRSxPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT0YsT0FBTyxDQUFDRSxPQUFPLENBQUM2RSxVQUFVLEtBQUssV0FBVyxFQUFFO0lBQ3JLakYsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQ0UsT0FBTyxFQUFFLFlBQVksRUFBRTtRQUFFRCxLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDa0YsTUFBTSxDQUFDaEYsT0FBTyxDQUFDRSxPQUFPLEVBQUVGLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDaUYsTUFBTSxDQUFDakYsT0FBTyxHQUFHQSxPQUFPLENBQUNFLE9BQU8sQ0FBQztDQUNsQyxDQUVELHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanM/Y2E0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGluaXRIZWFkTWFuYWdlcjtcbmV4cG9ydHMuaXNFcXVhbE5vZGUgPSBpc0VxdWFsTm9kZTtcbmV4cG9ydHMuRE9NQXR0cmlidXRlTmFtZXMgPSB2b2lkIDA7XG5mdW5jdGlvbiBpbml0SGVhZE1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW91bnRlZEluc3RhbmNlczogbmV3IFNldCgpLFxuICAgICAgICB1cGRhdGVIZWFkOiAoaGVhZCk9PntcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgICAgICAgIGhlYWQuZm9yRWFjaCgoaCk9PntcbiAgICAgICAgICAgICAgICBpZiAoLy8gSWYgdGhlIGZvbnQgdGFnIGlzIGxvYWRlZCBvbmx5IG9uIGNsaWVudCBuYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgLy8gaXQgd29uJ3QgYmUgaW5saW5lZC4gSW4gdGhpcyBjYXNlIHJldmVydCB0byB0aGUgb3JpZ2luYWwgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBoLnR5cGUgPT09ICdsaW5rJyAmJiBoLnByb3BzWydkYXRhLW9wdGltaXplZC1mb250cyddKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBzdHlsZVtkYXRhLWhyZWY9XCIke2gucHJvcHNbJ2RhdGEtaHJlZiddfVwiXWApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzLmhyZWYgPSBoLnByb3BzWydkYXRhLWhyZWYnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHNbJ2RhdGEtaHJlZiddID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0YWdzW2gudHlwZV0gfHwgW107XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGgpO1xuICAgICAgICAgICAgICAgIHRhZ3NbaC50eXBlXSA9IGNvbXBvbmVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlQ29tcG9uZW50ID0gdGFncy50aXRsZSA/IHRhZ3MudGl0bGVbMF0gOiBudWxsO1xuICAgICAgICAgICAgbGV0IHRpdGxlID0gJyc7XG4gICAgICAgICAgICBpZiAodGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNoaWxkcmVuICB9ID0gdGl0bGVDb21wb25lbnQucHJvcHM7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGl0bGUgIT09IGRvY3VtZW50LnRpdGxlKSBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICdtZXRhJyxcbiAgICAgICAgICAgICAgICAnYmFzZScsXG4gICAgICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgICAgICdzdHlsZScsXG4gICAgICAgICAgICAgICAgJ3NjcmlwdCdcbiAgICAgICAgICAgIF0uZm9yRWFjaCgodHlwZSk9PntcbiAgICAgICAgICAgICAgICB1cGRhdGVFbGVtZW50cyh0eXBlLCB0YWdzW3R5cGVdIHx8IFtdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmNvbnN0IERPTUF0dHJpYnV0ZU5hbWVzID0ge1xuICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnLFxuICAgIG5vTW9kdWxlOiAnbm9Nb2R1bGUnXG59O1xuZXhwb3J0cy5ET01BdHRyaWJ1dGVOYW1lcyA9IERPTUF0dHJpYnV0ZU5hbWVzO1xuZnVuY3Rpb24gcmVhY3RFbGVtZW50VG9ET00oeyB0eXBlICwgcHJvcHMgIH0pIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7XG4gICAgZm9yKGNvbnN0IHAgaW4gcHJvcHMpe1xuICAgICAgICBpZiAoIXByb3BzLmhhc093blByb3BlcnR5KHApKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHAgPT09ICdjaGlsZHJlbicgfHwgcCA9PT0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJykgY29udGludWU7XG4gICAgICAgIC8vIHdlIGRvbid0IHJlbmRlciB1bmRlZmluZWQgcHJvcHMgdG8gdGhlIERPTVxuICAgICAgICBpZiAocHJvcHNbcF0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBET01BdHRyaWJ1dGVOYW1lc1twXSB8fCBwLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0eXBlID09PSAnc2NyaXB0JyAmJiAoYXR0ciA9PT0gJ2FzeW5jJyB8fCBhdHRyID09PSAnZGVmZXInIHx8IGF0dHIgPT09ICdub01vZHVsZScpKSB7XG4gICAgICAgICAgICBlbFthdHRyXSA9ICEhcHJvcHNbcF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoYXR0ciwgcHJvcHNbcF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgY2hpbGRyZW4gLCBkYW5nZXJvdXNseVNldElubmVySFRNTCAgfSA9IHByb3BzO1xuICAgIGlmIChkYW5nZXJvdXNseVNldElubmVySFRNTCkge1xuICAgICAgICBlbC5pbm5lckhUTUwgPSBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwgfHwgJyc7XG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgICAgICBlbC50ZXh0Q29udGVudCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbignJykgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGVsO1xufVxuZnVuY3Rpb24gaXNFcXVhbE5vZGUob2xkVGFnLCBuZXdUYWcpIHtcbiAgICBpZiAob2xkVGFnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgbmV3VGFnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBuZXdUYWcuZ2V0QXR0cmlidXRlKCdub25jZScpO1xuICAgICAgICAvLyBPbmx5IHN0cmlwIHRoZSBub25jZSBpZiBgb2xkVGFnYCBoYXMgaGFkIGl0IHN0cmlwcGVkLiBBbiBlbGVtZW50J3Mgbm9uY2UgYXR0cmlidXRlIHdpbGwgbm90XG4gICAgICAgIC8vIGJlIHN0cmlwcGVkIGlmIHRoZXJlIGlzIG5vIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IHJlc3BvbnNlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGEgbm9uY2UuXG4gICAgICAgIGlmIChub25jZSAmJiAhb2xkVGFnLmdldEF0dHJpYnV0ZSgnbm9uY2UnKSkge1xuICAgICAgICAgICAgY29uc3QgY2xvbmVUYWcgPSBuZXdUYWcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgY2xvbmVUYWcuc2V0QXR0cmlidXRlKCdub25jZScsICcnKTtcbiAgICAgICAgICAgIGNsb25lVGFnLm5vbmNlID0gbm9uY2U7XG4gICAgICAgICAgICByZXR1cm4gbm9uY2UgPT09IG9sZFRhZy5ub25jZSAmJiBvbGRUYWcuaXNFcXVhbE5vZGUoY2xvbmVUYWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbGRUYWcuaXNFcXVhbE5vZGUobmV3VGFnKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIGNvbXBvbmVudHMpIHtcbiAgICBjb25zdCBoZWFkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgIGNvbnN0IGhlYWRDb3VudEVsID0gaGVhZEVsLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1uZXh0LWhlYWQtY291bnRdJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFoZWFkQ291bnRFbCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2FybmluZzogbmV4dC1oZWFkLWNvdW50IGlzIG1pc3NpbmcuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtaGVhZC1jb3VudC1taXNzaW5nJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaGVhZENvdW50ID0gTnVtYmVyKGhlYWRDb3VudEVsLmNvbnRlbnQpO1xuICAgIGNvbnN0IG9sZFRhZ3MgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gaGVhZENvdW50RWwucHJldmlvdXNFbGVtZW50U2libGluZzsgaSA8IGhlYWRDb3VudDsgaSsrLCBqID0gKGogPT0gbnVsbCA/IHZvaWQgMCA6IGoucHJldmlvdXNFbGVtZW50U2libGluZykgfHwgbnVsbCl7XG4gICAgICAgIHZhciByZWY7XG4gICAgICAgIGlmICgoaiA9PSBudWxsID8gdm9pZCAwIDogKHJlZiA9IGoudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi50b0xvd2VyQ2FzZSgpKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgb2xkVGFncy5wdXNoKGopO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgY29uc3Qgb2xkVGFnID0gb2xkVGFnc1trXTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICB2YXIgcmVmO1xuICAgICAgICByZXR1cm4gKHJlZiA9IHQucGFyZW50Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZi5yZW1vdmVDaGlsZCh0KTtcbiAgICB9KTtcbiAgICBuZXdUYWdzLmZvckVhY2goKHQpPT5oZWFkRWwuaW5zZXJ0QmVmb3JlKHQsIGhlYWRDb3VudEVsKSk7XG4gICAgaGVhZENvdW50RWwuY29udGVudCA9IChoZWFkQ291bnQgLSBvbGRUYWdzLmxlbmd0aCArIG5ld1RhZ3MubGVuZ3RoKS50b1N0cmluZygpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkLW1hbmFnZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZGVmYXVsdCIsImluaXRIZWFkTWFuYWdlciIsImlzRXF1YWxOb2RlIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJtb3VudGVkSW5zdGFuY2VzIiwiU2V0IiwidXBkYXRlSGVhZCIsImhlYWQiLCJ0YWdzIiwiZm9yRWFjaCIsImgiLCJ0eXBlIiwicHJvcHMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJocmVmIiwidW5kZWZpbmVkIiwiY29tcG9uZW50cyIsInB1c2giLCJ0aXRsZUNvbXBvbmVudCIsInRpdGxlIiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwidXBkYXRlRWxlbWVudHMiLCJhY2NlcHRDaGFyc2V0IiwiY2xhc3NOYW1lIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsIm5vTW9kdWxlIiwicmVhY3RFbGVtZW50VG9ET00iLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50Iiwib2xkVGFnIiwibmV3VGFnIiwiSFRNTEVsZW1lbnQiLCJub25jZSIsImdldEF0dHJpYnV0ZSIsImNsb25lVGFnIiwiY2xvbmVOb2RlIiwiaGVhZEVsIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJoZWFkQ291bnRFbCIsInByb2Nlc3MiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJjb250ZW50Iiwib2xkVGFncyIsImkiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInJlZiIsInRhZ05hbWUiLCJuZXdUYWdzIiwibWFwIiwiZmlsdGVyIiwiayIsImxlbiIsImxlbmd0aCIsInNwbGljZSIsInQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJ0b1N0cmluZyIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n");
|
|
23
|
-
|
|
24
|
-
/***/ }),
|
|
25
|
-
|
|
26
|
-
/***/ "./node_modules/next/dist/client/request-idle-callback.js":
|
|
27
|
-
/*!****************************************************************!*\
|
|
28
|
-
!*** ./node_modules/next/dist/client/request-idle-callback.js ***!
|
|
29
|
-
\****************************************************************/
|
|
30
|
-
/***/ ((module, exports) => {
|
|
31
|
-
|
|
32
|
-
"use strict";
|
|
33
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.cancelIdleCallback = exports.requestIdleCallback = void 0;\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nexports.requestIdleCallback = requestIdleCallback;\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nexports.cancelIdleCallback = cancelIdleCallback;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCwwQkFBMEIsR0FBR0EsMkJBQTJCLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDbEUsTUFBTUcsbUJBQW1CLEdBQUcsT0FBT0MsSUFBSSxLQUFLLFdBQVcsSUFBSUEsSUFBSSxDQUFDRCxtQkFBbUIsSUFBSUMsSUFBSSxDQUFDRCxtQkFBbUIsQ0FBQ0UsSUFBSSxDQUFDQyxNQUFNLENBQUMsSUFBSSxTQUFTQyxFQUFFLEVBQUU7SUFDekksSUFBSUMsS0FBSyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsRUFBRTtJQUN0QixPQUFPQyxVQUFVLENBQUMsV0FBVztRQUN6QkosRUFBRSxDQUFDO1lBQ0NLLFVBQVUsRUFBRSxLQUFLO1lBQ2pCQyxhQUFhLEVBQUUsV0FBVztnQkFDdEIsT0FBT0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDTixJQUFJLENBQUNDLEdBQUcsRUFBRSxHQUFHRixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0osQ0FBQyxDQUFDO0tBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNUO0FBQ0RSLDJCQUEyQixHQUFHRyxtQkFBbUIsQ0FBQztBQUNsRCxNQUFNRCxrQkFBa0IsR0FBRyxPQUFPRSxJQUFJLEtBQUssV0FBVyxJQUFJQSxJQUFJLENBQUNGLGtCQUFrQixJQUFJRSxJQUFJLENBQUNGLGtCQUFrQixDQUFDRyxJQUFJLENBQUNDLE1BQU0sQ0FBQyxJQUFJLFNBQVNVLEVBQUUsRUFBRTtJQUN0SSxPQUFPQyxZQUFZLENBQUNELEVBQUUsQ0FBQyxDQUFDO0NBQzNCO0FBQ0RoQiwwQkFBMEIsR0FBR0Usa0JBQWtCLENBQUM7QUFFaEQsSUFBSSxDQUFDLE9BQU9GLE9BQU8sQ0FBQ2tCLE9BQU8sS0FBSyxVQUFVLElBQUssT0FBT2xCLE9BQU8sQ0FBQ2tCLE9BQU8sS0FBSyxRQUFRLElBQUlsQixPQUFPLENBQUNrQixPQUFPLEtBQUssSUFBSSxDQUFFLElBQUksT0FBT2xCLE9BQU8sQ0FBQ2tCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLFdBQVcsRUFBRTtJQUNyS3JCLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUNrQixPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVqQixLQUFLLEVBQUUsSUFBSTtLQUFFLENBQUMsQ0FBQztJQUN0RUgsTUFBTSxDQUFDc0IsTUFBTSxDQUFDcEIsT0FBTyxDQUFDa0IsT0FBTyxFQUFFbEIsT0FBTyxDQUFDLENBQUM7SUFDeENxQixNQUFNLENBQUNyQixPQUFPLEdBQUdBLE9BQU8sQ0FBQ2tCLE9BQU8sQ0FBQztDQUNsQyxDQUVELGlEQUFpRCIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanM/MWUyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuY2FuY2VsSWRsZUNhbGxiYWNrID0gZXhwb3J0cy5yZXF1ZXN0SWRsZUNhbGxiYWNrID0gdm9pZCAwO1xuY29uc3QgcmVxdWVzdElkbGVDYWxsYmFjayA9IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrLmJpbmQod2luZG93KSB8fCBmdW5jdGlvbihjYikge1xuICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNiKHtcbiAgICAgICAgICAgIGRpZFRpbWVvdXQ6IGZhbHNlLFxuICAgICAgICAgICAgdGltZVJlbWFpbmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIDUwIC0gKERhdGUubm93KCkgLSBzdGFydCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCAxKTtcbn07XG5leHBvcnRzLnJlcXVlc3RJZGxlQ2FsbGJhY2sgPSByZXF1ZXN0SWRsZUNhbGxiYWNrO1xuY29uc3QgY2FuY2VsSWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYuY2FuY2VsSWRsZUNhbGxiYWNrICYmIHNlbGYuY2FuY2VsSWRsZUNhbGxiYWNrLmJpbmQod2luZG93KSB8fCBmdW5jdGlvbihpZCkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQoaWQpO1xufTtcbmV4cG9ydHMuY2FuY2VsSWRsZUNhbGxiYWNrID0gY2FuY2VsSWRsZUNhbGxiYWNrO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwicmVxdWVzdElkbGVDYWxsYmFjayIsInNlbGYiLCJiaW5kIiwid2luZG93IiwiY2IiLCJzdGFydCIsIkRhdGUiLCJub3ciLCJzZXRUaW1lb3V0IiwiZGlkVGltZW91dCIsInRpbWVSZW1haW5pbmciLCJNYXRoIiwibWF4IiwiaWQiLCJjbGVhclRpbWVvdXQiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/request-idle-callback.js\n");
|
|
34
|
-
|
|
35
|
-
/***/ }),
|
|
36
|
-
|
|
37
|
-
/***/ "./node_modules/next/dist/client/script.js":
|
|
38
|
-
/*!*************************************************!*\
|
|
39
|
-
!*** ./node_modules/next/dist/client/script.js ***!
|
|
40
|
-
\*************************************************/
|
|
41
|
-
/***/ ((module, exports, __webpack_require__) => {
|
|
42
|
-
|
|
43
|
-
"use strict";
|
|
44
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.handleClientScriptLoad = handleClientScriptLoad;\nexports.initScriptLoader = initScriptLoader;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _headManagerContext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"../shared/lib/head-manager-context\");\nvar _headManager = __webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\");\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\", \n];\nconst loadScript = (props)=>{\n const { src , id , onLoad =()=>{} , dangerouslySetInnerHTML , children =\"\" , strategy =\"afterInteractive\" , onError , } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // Execute onLoad since the script loading has begun\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n const el = document.createElement(\"script\");\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener(\"load\", function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (src) {\n ScriptCache.set(src, loadPromise);\n }\n LoadCache.add(cacheKey);\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n } else if (src) {\n el.src = src;\n }\n for (const [k, value] of Object.entries(props)){\n if (value === undefined || ignoreProps.includes(k)) {\n continue;\n }\n const attr = _headManager.DOMAttributeNames[k] || k.toLowerCase();\n el.setAttribute(attr, value);\n }\n if (strategy === \"worker\") {\n el.setAttribute(\"type\", \"text/partytown\");\n }\n el.setAttribute(\"data-nscript\", strategy);\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy =\"afterInteractive\" } = props;\n if (strategy === \"lazyOnload\") {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestIdleCallback).requestIdleCallback(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'), \n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n const { src =\"\" , onLoad =()=>{} , strategy =\"afterInteractive\" , onError } = props, restProps = _objectWithoutPropertiesLoose(props, [\n \"src\",\n \"onLoad\",\n \"strategy\",\n \"onError\"\n ]);\n // Context is available only during SSR\n const { updateScripts , scripts , getIsSsr } = (0, _react).useContext(_headManagerContext.HeadManagerContext);\n (0, _react).useEffect(()=>{\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n _extends({\n src,\n onLoad,\n onError\n }, restProps), \n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(restProps.id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n return null;\n}\nvar _default = Script;\nexports[\"default\"] = _default;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=script.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxLQUFLLEVBQUUsSUFBSTtDQUNkLEVBQUMsQ0FBQztBQUNIRCw4QkFBOEIsR0FBR0Usc0JBQXNCLENBQUM7QUFDeERGLHdCQUF3QixHQUFHRyxnQkFBZ0IsQ0FBQztBQUM1Q0gsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJSyxNQUFNLEdBQUdDLHVCQUF1QixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPLENBQUMsQ0FBQztBQUN0RCxJQUFJQyxtQkFBbUIsR0FBR0QsbUJBQU8sQ0FBQyw4RUFBb0MsQ0FBQztBQUN2RSxJQUFJRSxZQUFZLEdBQUdGLG1CQUFPLENBQUMsdUVBQWdCLENBQUM7QUFDNUMsSUFBSUcsb0JBQW9CLEdBQUdILG1CQUFPLENBQUMseUZBQXlCLENBQUM7QUFDN0QsU0FBU0ksUUFBUSxHQUFHO0lBQ2hCQSxRQUFRLEdBQUdiLE1BQU0sQ0FBQ2MsTUFBTSxJQUFJLFNBQVNDLE1BQU0sRUFBRTtRQUN6QyxJQUFJLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0MsU0FBUyxDQUFDQyxNQUFNLEVBQUVGLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUlHLE1BQU0sR0FBR0YsU0FBUyxDQUFDRCxDQUFDLENBQUM7WUFDekIsSUFBSSxJQUFJSSxHQUFHLElBQUlELE1BQU0sQ0FBQztnQkFDbEIsSUFBSW5CLE1BQU0sQ0FBQ3FCLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLE1BQU0sRUFBRUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25ETCxNQUFNLENBQUNLLEdBQUcsQ0FBQyxHQUFHRCxNQUFNLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjthQUNKO1NBQ0o7UUFDRCxPQUFPTCxNQUFNLENBQUM7S0FDakIsQ0FBQztJQUNGLE9BQU9GLFFBQVEsQ0FBQ1csS0FBSyxDQUFDLElBQUksRUFBRVAsU0FBUyxDQUFDLENBQUM7Q0FDMUM7QUFDRCxTQUFTUSx3QkFBd0IsR0FBRztJQUNoQyxJQUFJLE9BQU9DLE9BQU8sS0FBSyxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUM7SUFDL0MsSUFBSUMsS0FBSyxHQUFHLElBQUlELE9BQU8sRUFBRTtJQUN6QkQsd0JBQXdCLEdBQUcsV0FBVztRQUNsQyxPQUFPRSxLQUFLLENBQUM7S0FDaEIsQ0FBQztJQUNGLE9BQU9BLEtBQUssQ0FBQztDQUNoQjtBQUNELFNBQVNuQix1QkFBdUIsQ0FBQ29CLEdBQUcsRUFBRTtJQUNsQyxJQUFJQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsVUFBVSxFQUFFO1FBQ3ZCLE9BQU9ELEdBQUcsQ0FBQztLQUNkO0lBQ0QsSUFBSUEsR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU9BLEdBQUcsS0FBSyxVQUFVLEVBQUU7UUFDdEUsT0FBTztZQUNIdEIsT0FBTyxFQUFFc0IsR0FBRztTQUNmLENBQUM7S0FDTDtJQUNELElBQUlELEtBQUssR0FBR0Ysd0JBQXdCLEVBQUU7SUFDdEMsSUFBSUUsS0FBSyxJQUFJQSxLQUFLLENBQUNHLEdBQUcsQ0FBQ0YsR0FBRyxDQUFDLEVBQUU7UUFDekIsT0FBT0QsS0FBSyxDQUFDSSxHQUFHLENBQUNILEdBQUcsQ0FBQyxDQUFDO0tBQ3pCO0lBQ0QsSUFBSUksTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJQyxxQkFBcUIsR0FBR2pDLE1BQU0sQ0FBQ0MsY0FBYyxJQUFJRCxNQUFNLENBQUNrQyx3QkFBd0I7SUFDcEYsSUFBSSxJQUFJZCxHQUFHLElBQUlRLEdBQUcsQ0FBQztRQUNmLElBQUk1QixNQUFNLENBQUNxQixTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSyxHQUFHLEVBQUVSLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELElBQUllLElBQUksR0FBR0YscUJBQXFCLEdBQUdqQyxNQUFNLENBQUNrQyx3QkFBd0IsQ0FBQ04sR0FBRyxFQUFFUixHQUFHLENBQUMsR0FBRyxJQUFJO1lBQ25GLElBQUllLElBQUksSUFBSSxDQUFDQSxJQUFJLENBQUNKLEdBQUcsSUFBSUksSUFBSSxDQUFDQyxHQUFHLENBQUMsRUFBRTtnQkFDaENwQyxNQUFNLENBQUNDLGNBQWMsQ0FBQytCLE1BQU0sRUFBRVosR0FBRyxFQUFFZSxJQUFJLENBQUMsQ0FBQzthQUM1QyxNQUFNO2dCQUNISCxNQUFNLENBQUNaLEdBQUcsQ0FBQyxHQUFHUSxHQUFHLENBQUNSLEdBQUcsQ0FBQyxDQUFDO2FBQzFCO1NBQ0o7S0FDSjtJQUNEWSxNQUFNLENBQUMxQixPQUFPLEdBQUdzQixHQUFHLENBQUM7SUFDckIsSUFBSUQsS0FBSyxFQUFFO1FBQ1BBLEtBQUssQ0FBQ1MsR0FBRyxDQUFDUixHQUFHLEVBQUVJLE1BQU0sQ0FBQyxDQUFDO0tBQzFCO0lBQ0QsT0FBT0EsTUFBTSxDQUFDO0NBQ2pCO0FBQ0QsU0FBU0ssNkJBQTZCLENBQUNsQixNQUFNLEVBQUVtQixRQUFRLEVBQUU7SUFDckQsSUFBSW5CLE1BQU0sSUFBSSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUIsSUFBSUosTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJd0IsVUFBVSxHQUFHdkMsTUFBTSxDQUFDd0MsSUFBSSxDQUFDckIsTUFBTSxDQUFDO0lBQ3BDLElBQUlDLEdBQUcsRUFBRUosQ0FBQztJQUNWLElBQUlBLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR3VCLFVBQVUsQ0FBQ3JCLE1BQU0sRUFBRUYsQ0FBQyxFQUFFLENBQUM7UUFDbENJLEdBQUcsR0FBR21CLFVBQVUsQ0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUlzQixRQUFRLENBQUNHLE9BQU8sQ0FBQ3JCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTO1FBQ3pDTCxNQUFNLENBQUNLLEdBQUcsQ0FBQyxHQUFHRCxNQUFNLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0tBQzdCO0lBQ0QsT0FBT0wsTUFBTSxDQUFDO0NBQ2pCO0FBQ0QsTUFBTTJCLFdBQVcsR0FBRyxJQUFJQyxHQUFHLEVBQUU7QUFDN0IsTUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsRUFBRTtBQUMzQixNQUFNQyxXQUFXLEdBQUc7SUFDaEIsUUFBUTtJQUNSLHlCQUF5QjtJQUN6QixVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7Q0FDYjtBQUNELE1BQU1DLFVBQVUsR0FBRyxDQUFDQyxLQUFLLEdBQUc7SUFDeEIsTUFBTSxFQUFFQyxHQUFHLEdBQUdDLEVBQUUsR0FBR0MsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHQyx1QkFBdUIsR0FBR0MsUUFBUSxFQUFFLEVBQUUsR0FBR0MsUUFBUSxFQUFFLGtCQUFrQixHQUFHQyxPQUFPLEtBQUssR0FBR1AsS0FBSztJQUNoSSxNQUFNUSxRQUFRLEdBQUdOLEVBQUUsSUFBSUQsR0FBRztJQUMxQiw0QkFBNEI7SUFDNUIsSUFBSU8sUUFBUSxJQUFJWixTQUFTLENBQUNkLEdBQUcsQ0FBQzBCLFFBQVEsQ0FBQyxFQUFFO1FBQ3JDLE9BQU87S0FDVjtJQUNELHFEQUFxRDtJQUNyRCxJQUFJZCxXQUFXLENBQUNaLEdBQUcsQ0FBQ21CLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCTCxTQUFTLENBQUNhLEdBQUcsQ0FBQ0QsUUFBUSxDQUFDLENBQUM7UUFDeEIsb0RBQW9EO1FBQ3BEZCxXQUFXLENBQUNYLEdBQUcsQ0FBQ2tCLEdBQUcsQ0FBQyxDQUFDUyxJQUFJLENBQUNQLE1BQU0sRUFBRUksT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTztLQUNWO0lBQ0QsTUFBTUksRUFBRSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDM0MsTUFBTUMsV0FBVyxHQUFHLElBQUlDLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sR0FBRztRQUMvQ04sRUFBRSxDQUFDTyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsU0FBU0MsQ0FBQyxFQUFFO1lBQ3BDSCxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUliLE1BQU0sRUFBRTtnQkFDUkEsTUFBTSxDQUFDNUIsSUFBSSxDQUFDLElBQUksRUFBRTRDLENBQUMsQ0FBQyxDQUFDO2FBQ3hCO1NBQ0osQ0FBQyxDQUFDO1FBQ0hSLEVBQUUsQ0FBQ08sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVNDLENBQUMsRUFBRTtZQUNyQ0YsTUFBTSxDQUFDRSxDQUFDLENBQUMsQ0FBQztTQUNiLENBQUMsQ0FBQztLQUNOLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLFNBQVNELENBQUMsRUFBRTtRQUNqQixJQUFJWixPQUFPLEVBQUU7WUFDVEEsT0FBTyxDQUFDWSxDQUFDLENBQUMsQ0FBQztTQUNkO0tBQ0osQ0FBQztJQUNGLElBQUlsQixHQUFHLEVBQUU7UUFDTFAsV0FBVyxDQUFDTixHQUFHLENBQUNhLEdBQUcsRUFBRWEsV0FBVyxDQUFDLENBQUM7S0FDckM7SUFDRGxCLFNBQVMsQ0FBQ2EsR0FBRyxDQUFDRCxRQUFRLENBQUMsQ0FBQztJQUN4QixJQUFJSix1QkFBdUIsRUFBRTtRQUN6Qk8sRUFBRSxDQUFDVSxTQUFTLEdBQUdqQix1QkFBdUIsQ0FBQ2tCLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDdkQsTUFBTSxJQUFJakIsUUFBUSxFQUFFO1FBQ2pCTSxFQUFFLENBQUNZLFdBQVcsR0FBRyxPQUFPbEIsUUFBUSxLQUFLLFFBQVEsR0FBR0EsUUFBUSxHQUFHbUIsS0FBSyxDQUFDQyxPQUFPLENBQUNwQixRQUFRLENBQUMsR0FBR0EsUUFBUSxDQUFDcUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUMvRyxNQUFNLElBQUl6QixHQUFHLEVBQUU7UUFDWlUsRUFBRSxDQUFDVixHQUFHLEdBQUdBLEdBQUcsQ0FBQztLQUNoQjtJQUNELEtBQUssTUFBTSxDQUFDMEIsQ0FBQyxFQUFFeEUsS0FBSyxDQUFDLElBQUlILE1BQU0sQ0FBQzRFLE9BQU8sQ0FBQzVCLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUk3QyxLQUFLLEtBQUswRSxTQUFTLElBQUkvQixXQUFXLENBQUNnQyxRQUFRLENBQUNILENBQUMsQ0FBQyxFQUFFO1lBQ2hELFNBQVM7U0FDWjtRQUNELE1BQU1JLElBQUksR0FBR3BFLFlBQVksQ0FBQ3FFLGlCQUFpQixDQUFDTCxDQUFDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTSxXQUFXLEVBQUU7UUFDakV0QixFQUFFLENBQUN1QixZQUFZLENBQUNILElBQUksRUFBRTVFLEtBQUssQ0FBQyxDQUFDO0tBQ2hDO0lBQ0QsSUFBSW1ELFFBQVEsS0FBSyxRQUFRLEVBQUU7UUFDdkJLLEVBQUUsQ0FBQ3VCLFlBQVksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztLQUM3QztJQUNEdkIsRUFBRSxDQUFDdUIsWUFBWSxDQUFDLGNBQWMsRUFBRTVCLFFBQVEsQ0FBQyxDQUFDO0lBQzFDTSxRQUFRLENBQUN1QixJQUFJLENBQUNDLFdBQVcsQ0FBQ3pCLEVBQUUsQ0FBQyxDQUFDO0NBQ2pDO0FBQ0QsU0FBU3ZELHNCQUFzQixDQUFDNEMsS0FBSyxFQUFFO0lBQ25DLE1BQU0sRUFBRU0sUUFBUSxFQUFFLGtCQUFrQixHQUFHLEdBQUdOLEtBQUs7SUFDL0MsSUFBSU0sUUFBUSxLQUFLLFlBQVksRUFBRTtRQUMzQitCLE1BQU0sQ0FBQ25CLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJO1lBQ2hDLENBQUMsQ0FBQyxFQUFFdEQsb0JBQW9CLENBQUMsQ0FBQzBFLG1CQUFtQixDQUFDLElBQUl2QyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0tBQ04sTUFBTTtRQUNIRCxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDO0tBQ3JCO0NBQ0o7QUFDRCxTQUFTdUMsY0FBYyxDQUFDdkMsS0FBSyxFQUFFO0lBQzNCLElBQUlZLFFBQVEsQ0FBQzRCLFVBQVUsS0FBSyxVQUFVLEVBQUU7UUFDcEMsQ0FBQyxDQUFDLEVBQUU1RSxvQkFBb0IsQ0FBQyxDQUFDMEUsbUJBQW1CLENBQUMsSUFBSXZDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN4RSxNQUFNO1FBQ0hxQyxNQUFNLENBQUNuQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSTtZQUNoQyxDQUFDLENBQUMsRUFBRXRELG9CQUFvQixDQUFDLENBQUMwRSxtQkFBbUIsQ0FBQyxJQUFJdkMsVUFBVSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3hFLENBQUMsQ0FBQztLQUNOO0NBQ0o7QUFDRCxTQUFTeUMsMkJBQTJCLEdBQUc7SUFDbkMsTUFBTUMsT0FBTyxHQUFHO1dBQ1Q5QixRQUFRLENBQUMrQixnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQztXQUMvRC9CLFFBQVEsQ0FBQytCLGdCQUFnQixDQUFDLG1DQUFtQyxDQUFDO0tBQ3BFO0lBQ0RELE9BQU8sQ0FBQ0UsT0FBTyxDQUFDLENBQUNDLE1BQU0sR0FBRztRQUN0QixNQUFNckMsUUFBUSxHQUFHcUMsTUFBTSxDQUFDM0MsRUFBRSxJQUFJMkMsTUFBTSxDQUFDQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3hEbEQsU0FBUyxDQUFDYSxHQUFHLENBQUNELFFBQVEsQ0FBQyxDQUFDO0tBQzNCLENBQUMsQ0FBQztDQUNOO0FBQ0QsU0FBU25ELGdCQUFnQixDQUFDMEYsaUJBQWlCLEVBQUU7SUFDekNBLGlCQUFpQixDQUFDSCxPQUFPLENBQUN4RixzQkFBc0IsQ0FBQyxDQUFDO0lBQ2xEcUYsMkJBQTJCLEVBQUUsQ0FBQztDQUNqQztBQUNELFNBQVNPLE1BQU0sQ0FBQ2hELEtBQUssRUFBRTtJQUNuQixNQUFNLEVBQUVDLEdBQUcsRUFBRSxFQUFFLEdBQUdFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBR0csUUFBUSxFQUFFLGtCQUFrQixHQUFHQyxPQUFPLEdBQUcsR0FBR1AsS0FBSyxFQUFFaUQsU0FBUyxHQUFHNUQsNkJBQTZCLENBQUNXLEtBQUssRUFBRTtRQUNuSSxLQUFLO1FBQ0wsUUFBUTtRQUNSLFVBQVU7UUFDVixTQUFTO0tBQ1osQ0FBQztJQUNGLHVDQUF1QztJQUN2QyxNQUFNLEVBQUVrRCxhQUFhLEdBQUdSLE9BQU8sR0FBR1MsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUU1RixNQUFNLENBQUMsQ0FBQzZGLFVBQVUsQ0FBQzFGLG1CQUFtQixDQUFDMkYsa0JBQWtCLENBQUM7SUFDOUcsQ0FBQyxDQUFDLEVBQUU5RixNQUFNLENBQUMsQ0FBQytGLFNBQVMsQ0FBQyxJQUFJO1FBQ3RCLElBQUloRCxRQUFRLEtBQUssa0JBQWtCLEVBQUU7WUFDakNQLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUM7U0FDckIsTUFBTSxJQUFJTSxRQUFRLEtBQUssWUFBWSxFQUFFO1lBQ2xDaUMsY0FBYyxDQUFDdkMsS0FBSyxDQUFDLENBQUM7U0FDekI7S0FDSixFQUFFO1FBQ0NBLEtBQUs7UUFDTE0sUUFBUTtLQUNYLENBQUMsQ0FBQztJQUNILElBQUlBLFFBQVEsS0FBSyxtQkFBbUIsSUFBSUEsUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUMzRCxJQUFJNEMsYUFBYSxFQUFFO1lBQ2ZSLE9BQU8sQ0FBQ3BDLFFBQVEsQ0FBQyxHQUFHLENBQUNvQyxPQUFPLENBQUNwQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQ2lELE1BQU0sQ0FBQztnQkFDakQxRixRQUFRLENBQUM7b0JBQ0xvQyxHQUFHO29CQUNIRSxNQUFNO29CQUNOSSxPQUFPO2lCQUNWLEVBQUUwQyxTQUFTLENBQUM7YUFDaEIsQ0FBQyxDQUFDO1lBQ0hDLGFBQWEsQ0FBQ1IsT0FBTyxDQUFDLENBQUM7U0FDMUIsTUFBTSxJQUFJUyxRQUFRLElBQUlBLFFBQVEsRUFBRSxFQUFFO1lBQy9CLHVDQUF1QztZQUN2Q3ZELFNBQVMsQ0FBQ2EsR0FBRyxDQUFDd0MsU0FBUyxDQUFDL0MsRUFBRSxJQUFJRCxHQUFHLENBQUMsQ0FBQztTQUN0QyxNQUFNLElBQUlrRCxRQUFRLElBQUksQ0FBQ0EsUUFBUSxFQUFFLEVBQUU7WUFDaENwRCxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDO1NBQ3JCO0tBQ0o7SUFDRCxPQUFPLElBQUksQ0FBQztDQUNmO0FBQ0QsSUFBSXdELFFBQVEsR0FBR1IsTUFBTTtBQUNyQjlGLGtCQUFlLEdBQUdzRyxRQUFRLENBQUM7QUFFM0IsSUFBSSxDQUFDLE9BQU90RyxPQUFPLENBQUNJLE9BQU8sS0FBSyxVQUFVLElBQUssT0FBT0osT0FBTyxDQUFDSSxPQUFPLEtBQUssUUFBUSxJQUFJSixPQUFPLENBQUNJLE9BQU8sS0FBSyxJQUFJLENBQUUsSUFBSSxPQUFPSixPQUFPLENBQUNJLE9BQU8sQ0FBQ3VCLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDcks3QixNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDSSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQUVILEtBQUssRUFBRSxJQUFJO0tBQUUsQ0FBQyxDQUFDO0lBQ3RFSCxNQUFNLENBQUNjLE1BQU0sQ0FBQ1osT0FBTyxDQUFDSSxPQUFPLEVBQUVKLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDdUcsTUFBTSxDQUFDdkcsT0FBTyxHQUFHQSxPQUFPLENBQUNJLE9BQU8sQ0FBQztDQUNsQyxDQUVELGtDQUFrQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9zY3JpcHQuanM/YmQ2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaGFuZGxlQ2xpZW50U2NyaXB0TG9hZCA9IGhhbmRsZUNsaWVudFNjcmlwdExvYWQ7XG5leHBvcnRzLmluaXRTY3JpcHRMb2FkZXIgPSBpbml0U2NyaXB0TG9hZGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX2hlYWRNYW5hZ2VyQ29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0XCIpO1xudmFyIF9oZWFkTWFuYWdlciA9IHJlcXVpcmUoXCIuL2hlYWQtbWFuYWdlclwiKTtcbnZhciBfcmVxdWVzdElkbGVDYWxsYmFjayA9IHJlcXVpcmUoXCIuL3JlcXVlc3QtaWRsZS1jYWxsYmFja1wiKTtcbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICAgIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICAgICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gc291cmNlKXtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH07XG4gICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuICAgIHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYWNoZTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikge1xuICAgIGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmYXVsdDogb2JqXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpO1xuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG4gICAgfVxuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICAgZm9yKHZhciBrZXkgaW4gb2JqKXtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmV3T2JqLmRlZmF1bHQgPSBvYmo7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLnNldChvYmosIG5ld09iaik7XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmo7XG59XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gICAgdmFyIHRhcmdldCA9IHt9O1xuICAgIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICB2YXIga2V5LCBpO1xuICAgIGZvcihpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspe1xuICAgICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuY29uc3QgU2NyaXB0Q2FjaGUgPSBuZXcgTWFwKCk7XG5jb25zdCBMb2FkQ2FjaGUgPSBuZXcgU2V0KCk7XG5jb25zdCBpZ25vcmVQcm9wcyA9IFtcbiAgICAnb25Mb2FkJyxcbiAgICAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnLFxuICAgICdjaGlsZHJlbicsXG4gICAgJ29uRXJyb3InLFxuICAgICdzdHJhdGVneScsIFxuXTtcbmNvbnN0IGxvYWRTY3JpcHQgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBzcmMgLCBpZCAsIG9uTG9hZCA9KCk9Pnt9ICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgLCBjaGlsZHJlbiA9JycgLCBzdHJhdGVneSA9J2FmdGVySW50ZXJhY3RpdmUnICwgb25FcnJvciAsICB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBpZCB8fCBzcmM7XG4gICAgLy8gU2NyaXB0IGhhcyBhbHJlYWR5IGxvYWRlZFxuICAgIGlmIChjYWNoZUtleSAmJiBMb2FkQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIENvbnRlbnRzIG9mIHRoaXMgc2NyaXB0IGFyZSBhbHJlYWR5IGxvYWRpbmcvbG9hZGVkXG4gICAgaWYgKFNjcmlwdENhY2hlLmhhcyhzcmMpKSB7XG4gICAgICAgIExvYWRDYWNoZS5hZGQoY2FjaGVLZXkpO1xuICAgICAgICAvLyBFeGVjdXRlIG9uTG9hZCBzaW5jZSB0aGUgc2NyaXB0IGxvYWRpbmcgaGFzIGJlZ3VuXG4gICAgICAgIFNjcmlwdENhY2hlLmdldChzcmMpLnRoZW4ob25Mb2FkLCBvbkVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIGNvbnN0IGxvYWRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIGlmIChvbkxvYWQpIHtcbiAgICAgICAgICAgICAgICBvbkxvYWQuY2FsbCh0aGlzLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgICBvbkVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHNyYykge1xuICAgICAgICBTY3JpcHRDYWNoZS5zZXQoc3JjLCBsb2FkUHJvbWlzZSk7XG4gICAgfVxuICAgIExvYWRDYWNoZS5hZGQoY2FjaGVLZXkpO1xuICAgIGlmIChkYW5nZXJvdXNseVNldElubmVySFRNTCkge1xuICAgICAgICBlbC5pbm5lckhUTUwgPSBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwgfHwgJyc7XG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgICAgICBlbC50ZXh0Q29udGVudCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbignJykgOiAnJztcbiAgICB9IGVsc2UgaWYgKHNyYykge1xuICAgICAgICBlbC5zcmMgPSBzcmM7XG4gICAgfVxuICAgIGZvciAoY29uc3QgW2ssIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcykpe1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBpZ25vcmVQcm9wcy5pbmNsdWRlcyhrKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXR0ciA9IF9oZWFkTWFuYWdlci5ET01BdHRyaWJ1dGVOYW1lc1trXSB8fCBrLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChzdHJhdGVneSA9PT0gJ3dvcmtlcicpIHtcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvcGFydHl0b3duJyk7XG4gICAgfVxuICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS1uc2NyaXB0Jywgc3RyYXRlZ3kpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpO1xufTtcbmZ1bmN0aW9uIGhhbmRsZUNsaWVudFNjcmlwdExvYWQocHJvcHMpIHtcbiAgICBjb25zdCB7IHN0cmF0ZWd5ID0nYWZ0ZXJJbnRlcmFjdGl2ZScgIH0gPSBwcm9wcztcbiAgICBpZiAoc3RyYXRlZ3kgPT09ICdsYXp5T25sb2FkJykge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpPT57XG4gICAgICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbG9hZFNjcmlwdChwcm9wcyk7XG4gICAgfVxufVxuZnVuY3Rpb24gbG9hZExhenlTY3JpcHQocHJvcHMpIHtcbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpPT57XG4gICAgICAgICAgICAoMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLnJlcXVlc3RJZGxlQ2FsbGJhY2soKCk9PmxvYWRTY3JpcHQocHJvcHMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkQmVmb3JlSW50ZXJhY3RpdmVUb0NhY2hlKCkge1xuICAgIGNvbnN0IHNjcmlwdHMgPSBbXG4gICAgICAgIC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5zY3JpcHQ9XCJiZWZvcmVJbnRlcmFjdGl2ZVwiXScpLFxuICAgICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1uc2NyaXB0PVwiYmVmb3JlUGFnZVJlbmRlclwiXScpLCBcbiAgICBdO1xuICAgIHNjcmlwdHMuZm9yRWFjaCgoc2NyaXB0KT0+e1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9IHNjcmlwdC5pZCB8fCBzY3JpcHQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgTG9hZENhY2hlLmFkZChjYWNoZUtleSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBpbml0U2NyaXB0TG9hZGVyKHNjcmlwdExvYWRlckl0ZW1zKSB7XG4gICAgc2NyaXB0TG9hZGVySXRlbXMuZm9yRWFjaChoYW5kbGVDbGllbnRTY3JpcHRMb2FkKTtcbiAgICBhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUoKTtcbn1cbmZ1bmN0aW9uIFNjcmlwdChwcm9wcykge1xuICAgIGNvbnN0IHsgc3JjID0nJyAsIG9uTG9hZCA9KCk9Pnt9ICwgc3RyYXRlZ3kgPSdhZnRlckludGVyYWN0aXZlJyAsIG9uRXJyb3IgIH0gPSBwcm9wcywgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIFtcbiAgICAgICAgXCJzcmNcIixcbiAgICAgICAgXCJvbkxvYWRcIixcbiAgICAgICAgXCJzdHJhdGVneVwiLFxuICAgICAgICBcIm9uRXJyb3JcIlxuICAgIF0pO1xuICAgIC8vIENvbnRleHQgaXMgYXZhaWxhYmxlIG9ubHkgZHVyaW5nIFNTUlxuICAgIGNvbnN0IHsgdXBkYXRlU2NyaXB0cyAsIHNjcmlwdHMgLCBnZXRJc1NzciAgfSA9ICgwLCBfcmVhY3QpLnVzZUNvbnRleHQoX2hlYWRNYW5hZ2VyQ29udGV4dC5IZWFkTWFuYWdlckNvbnRleHQpO1xuICAgICgwLCBfcmVhY3QpLnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoc3RyYXRlZ3kgPT09ICdhZnRlckludGVyYWN0aXZlJykge1xuICAgICAgICAgICAgbG9hZFNjcmlwdChwcm9wcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RyYXRlZ3kgPT09ICdsYXp5T25sb2FkJykge1xuICAgICAgICAgICAgbG9hZExhenlTY3JpcHQocHJvcHMpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcm9wcyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICBdKTtcbiAgICBpZiAoc3RyYXRlZ3kgPT09ICdiZWZvcmVJbnRlcmFjdGl2ZScgfHwgc3RyYXRlZ3kgPT09ICd3b3JrZXInKSB7XG4gICAgICAgIGlmICh1cGRhdGVTY3JpcHRzKSB7XG4gICAgICAgICAgICBzY3JpcHRzW3N0cmF0ZWd5XSA9IChzY3JpcHRzW3N0cmF0ZWd5XSB8fCBbXSkuY29uY2F0KFtcbiAgICAgICAgICAgICAgICBfZXh0ZW5kcyh7XG4gICAgICAgICAgICAgICAgICAgIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgb25Mb2FkLFxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yXG4gICAgICAgICAgICAgICAgfSwgcmVzdFByb3BzKSwgXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHVwZGF0ZVNjcmlwdHMoc2NyaXB0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0SXNTc3IgJiYgZ2V0SXNTc3IoKSkge1xuICAgICAgICAgICAgLy8gU2NyaXB0IGhhcyBhbHJlYWR5IGxvYWRlZCBkdXJpbmcgU1NSXG4gICAgICAgICAgICBMb2FkQ2FjaGUuYWRkKHJlc3RQcm9wcy5pZCB8fCBzcmMpO1xuICAgICAgICB9IGVsc2UgaWYgKGdldElzU3NyICYmICFnZXRJc1NzcigpKSB7XG4gICAgICAgICAgICBsb2FkU2NyaXB0KHByb3BzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbnZhciBfZGVmYXVsdCA9IFNjcmlwdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1zY3JpcHQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiaGFuZGxlQ2xpZW50U2NyaXB0TG9hZCIsImluaXRTY3JpcHRMb2FkZXIiLCJkZWZhdWx0IiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2hlYWRNYW5hZ2VyQ29udGV4dCIsIl9oZWFkTWFuYWdlciIsIl9yZXF1ZXN0SWRsZUNhbGxiYWNrIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiY2FjaGUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzYyIsInNldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwia2V5cyIsImluZGV4T2YiLCJTY3JpcHRDYWNoZSIsIk1hcCIsIkxvYWRDYWNoZSIsIlNldCIsImlnbm9yZVByb3BzIiwibG9hZFNjcmlwdCIsInByb3BzIiwic3JjIiwiaWQiLCJvbkxvYWQiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImNoaWxkcmVuIiwic3RyYXRlZ3kiLCJvbkVycm9yIiwiY2FjaGVLZXkiLCJhZGQiLCJ0aGVuIiwiZWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJsb2FkUHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJjYXRjaCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50IiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsImsiLCJlbnRyaWVzIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJhdHRyIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJ0b0xvd2VyQ2FzZSIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIndpbmRvdyIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJsb2FkTGF6eVNjcmlwdCIsInJlYWR5U3RhdGUiLCJhZGRCZWZvcmVJbnRlcmFjdGl2ZVRvQ2FjaGUiLCJzY3JpcHRzIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzY3JpcHQiLCJnZXRBdHRyaWJ1dGUiLCJzY3JpcHRMb2FkZXJJdGVtcyIsIlNjcmlwdCIsInJlc3RQcm9wcyIsInVwZGF0ZVNjcmlwdHMiLCJnZXRJc1NzciIsInVzZUNvbnRleHQiLCJIZWFkTWFuYWdlckNvbnRleHQiLCJ1c2VFZmZlY3QiLCJjb25jYXQiLCJfZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/script.js\n");
|
|
45
|
-
|
|
46
|
-
/***/ }),
|
|
47
|
-
|
|
48
|
-
/***/ "./node_modules/next/dist/pages/_document.js":
|
|
49
|
-
/*!***************************************************!*\
|
|
50
|
-
!*** ./node_modules/next/dist/pages/_document.js ***!
|
|
51
|
-
\***************************************************/
|
|
52
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
53
|
-
|
|
54
|
-
"use strict";
|
|
55
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Html = Html;\nexports.Main = Main;\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _constants = __webpack_require__(/*! ../shared/lib/constants */ \"../shared/lib/constants\");\nvar _getPageFiles = __webpack_require__(/*! ../server/get-page-files */ \"../server/get-page-files\");\nvar _utils = __webpack_require__(/*! ../server/utils */ \"../server/utils\");\nvar _htmlescape = __webpack_require__(/*! ../server/htmlescape */ \"../server/htmlescape\");\nvar _script = _interopRequireDefault(__webpack_require__(/*! ../client/script */ \"./node_modules/next/dist/client/script.js\"));\nvar _isError = _interopRequireDefault(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nvar _htmlContext = __webpack_require__(/*! ../shared/lib/html-context */ \"../shared/lib/html-context\");\nclass Document extends _react.Component {\n /**\n * `getInitialProps` hook returns the context object with the addition of `renderPage`.\n * `renderPage` callback executes `React` rendering logic synchronously to support server-rendering wrappers\n */ static getInitialProps(ctx) {\n return ctx.defaultGetInitialProps(ctx);\n }\n render() {\n return /*#__PURE__*/ _react.default.createElement(Html, null, /*#__PURE__*/ _react.default.createElement(Head, null), /*#__PURE__*/ _react.default.createElement(\"body\", null, /*#__PURE__*/ _react.default.createElement(Main, null), /*#__PURE__*/ _react.default.createElement(NextScript, null)));\n }\n}\nexports[\"default\"] = Document;\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction getDocumentFiles(buildManifest, pathname, inAmpMode) {\n const sharedFiles = (0, _getPageFiles).getPageFiles(buildManifest, \"/_app\");\n const pageFiles = inAmpMode ? [] : (0, _getPageFiles).getPageFiles(buildManifest, pathname);\n return {\n sharedFiles,\n pageFiles,\n allFiles: [\n ...new Set([\n ...sharedFiles,\n ...pageFiles\n ])\n ]\n };\n}\nfunction getPolyfillScripts(context, props) {\n // polyfills.js has to be rendered as nomodule without async\n // It also has to be the first script to load\n const { assetPrefix , buildManifest , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n return buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith(\".js\") && !polyfill.endsWith(\".module.js\")).map((polyfill)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: polyfill,\n defer: !disableOptimizedLoading,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin,\n noModule: true,\n src: `${assetPrefix}/_next/${polyfill}${devOnlyCacheBusterQueryString}`\n }));\n}\nfunction hasComponentProps(child) {\n return !!child && !!child.props;\n}\nfunction handleDocumentScriptLoaderItems(scriptLoader, __NEXT_DATA__, props) {\n var ref, ref1, ref2, ref3;\n if (!props.children) return;\n const scriptLoaderItems = [];\n const children = Array.isArray(props.children) ? props.children : [\n props.children\n ];\n const headChildren = (ref = children.find((child)=>child.type === Head)) == null ? void 0 : (ref1 = ref.props) == null ? void 0 : ref1.children;\n const bodyChildren = (ref2 = children.find((child)=>child.type === \"body\")) == null ? void 0 : (ref3 = ref2.props) == null ? void 0 : ref3.children;\n // Scripts with beforeInteractive can be placed inside Head or <body> so children of both needs to be traversed\n const combinedChildren = [\n ...Array.isArray(headChildren) ? headChildren : [\n headChildren\n ],\n ...Array.isArray(bodyChildren) ? bodyChildren : [\n bodyChildren\n ], \n ];\n _react.default.Children.forEach(combinedChildren, (child)=>{\n if (!child) return;\n if (child.type === _script.default) {\n if (child.props.strategy === \"beforeInteractive\") {\n scriptLoader.beforeInteractive = (scriptLoader.beforeInteractive || []).concat([\n {\n ...child.props\n }, \n ]);\n return;\n } else if ([\n \"lazyOnload\",\n \"afterInteractive\",\n \"worker\"\n ].includes(child.props.strategy)) {\n scriptLoaderItems.push(child.props);\n return;\n }\n }\n });\n __NEXT_DATA__.scriptLoader = scriptLoaderItems;\n}\nfunction getPreNextWorkerScripts(context, props) {\n const { assetPrefix , scriptLoader , crossOrigin , nextScriptWorkers } = context;\n // disable `nextScriptWorkers` in edge runtime\n if (!nextScriptWorkers || \"nodejs\" === \"edge\") return null;\n try {\n let { partytownSnippet } = require(\"@builder.io/partytown/integration\");\n const children = Array.isArray(props.children) ? props.children : [\n props.children\n ];\n // Check to see if the user has defined their own Partytown configuration\n const userDefinedConfig = children.find((child)=>{\n var ref, ref4;\n return hasComponentProps(child) && (child == null ? void 0 : (ref = child.props) == null ? void 0 : (ref4 = ref.dangerouslySetInnerHTML) == null ? void 0 : ref4.__html.length) && \"data-partytown-config\" in child.props;\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !userDefinedConfig && /*#__PURE__*/ _react.default.createElement(\"script\", {\n \"data-partytown-config\": \"\",\n dangerouslySetInnerHTML: {\n __html: `\n partytown = {\n lib: \"${assetPrefix}/_next/static/~partytown/\"\n };\n `\n }\n }), /*#__PURE__*/ _react.default.createElement(\"script\", {\n \"data-partytown\": \"\",\n dangerouslySetInnerHTML: {\n __html: partytownSnippet()\n }\n }), (scriptLoader.worker || []).map((file, index)=>{\n const { strategy , src , children: scriptChildren , dangerouslySetInnerHTML , ...scriptProps } = file;\n let srcProps = {};\n if (src) {\n // Use external src if provided\n srcProps.src = src;\n } else if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n // Embed inline script if provided with dangerouslySetInnerHTML\n srcProps.dangerouslySetInnerHTML = {\n __html: dangerouslySetInnerHTML.__html\n };\n } else if (scriptChildren) {\n // Embed inline script if provided with children\n srcProps.dangerouslySetInnerHTML = {\n __html: typeof scriptChildren === \"string\" ? scriptChildren : Array.isArray(scriptChildren) ? scriptChildren.join(\"\") : \"\"\n };\n } else {\n throw new Error(\"Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script\");\n }\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, srcProps, scriptProps, {\n type: \"text/partytown\",\n key: src || index,\n nonce: props.nonce,\n \"data-nscript\": \"worker\",\n crossOrigin: props.crossOrigin || crossOrigin\n }));\n }));\n } catch (err) {\n if ((0, _isError).default(err) && err.code !== \"MODULE_NOT_FOUND\") {\n console.warn(`Warning: ${err.message}`);\n }\n return null;\n }\n}\nfunction getPreNextScripts(context, props) {\n const { scriptLoader , disableOptimizedLoading , crossOrigin } = context;\n const webWorkerScripts = getPreNextWorkerScripts(context, props);\n const beforeInteractiveScripts = (scriptLoader.beforeInteractive || []).filter((script)=>script.src).map((file, index)=>{\n const { strategy , ...scriptProps } = file;\n var _defer;\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, scriptProps, {\n key: scriptProps.src || index,\n defer: (_defer = scriptProps.defer) != null ? _defer : !disableOptimizedLoading,\n nonce: props.nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: props.crossOrigin || crossOrigin\n }));\n });\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, webWorkerScripts, beforeInteractiveScripts);\n}\nfunction getDynamicChunks(context, props, files) {\n const { dynamicImports , assetPrefix , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\") || files.allFiles.includes(file)) return null;\n return /*#__PURE__*/ _react.default.createElement(\"script\", {\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n}\nfunction getScripts(context, props, files) {\n var ref;\n const { assetPrefix , buildManifest , isDevelopment , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = context;\n const normalScripts = files.allFiles.filter((file)=>file.endsWith(\".js\"));\n const lowPriorityScripts = (ref = buildManifest.lowPriorityFiles) == null ? void 0 : ref.filter((file)=>file.endsWith(\".js\"));\n return [\n ...normalScripts,\n ...lowPriorityScripts\n ].map((file)=>{\n return /*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: props.nonce,\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n}\n// Add a special property to the built-in `Document` component so later we can\n// identify if a user customized `Document` is used or not.\nconst InternalFunctionDocument = function InternalFunctionDocument() {\n return /*#__PURE__*/ _react.default.createElement(Html, null, /*#__PURE__*/ _react.default.createElement(Head, null), /*#__PURE__*/ _react.default.createElement(\"body\", null, /*#__PURE__*/ _react.default.createElement(Main, null), /*#__PURE__*/ _react.default.createElement(NextScript, null)));\n};\nDocument[_constants.NEXT_BUILTIN_DOCUMENT] = InternalFunctionDocument;\nfunction Html(props) {\n const { inAmpMode , docComponentsRendered , locale , scriptLoader , __NEXT_DATA__ , } = (0, _react).useContext(_htmlContext.HtmlContext);\n docComponentsRendered.Html = true;\n handleDocumentScriptLoaderItems(scriptLoader, __NEXT_DATA__, props);\n return /*#__PURE__*/ _react.default.createElement(\"html\", Object.assign({}, props, {\n lang: props.lang || locale || undefined,\n amp: inAmpMode ? \"\" : undefined,\n \"data-ampdevmode\": inAmpMode && \"development\" !== \"production\" ? \"\" : undefined\n }));\n}\nfunction AmpStyles({ styles }) {\n if (!styles) return null;\n // try to parse styles from fragment for backwards compat\n const curStyles = Array.isArray(styles) ? styles : [];\n if (styles.props && Array.isArray(styles.props.children)) {\n const hasStyles = (el)=>{\n var ref, ref5;\n return el == null ? void 0 : (ref = el.props) == null ? void 0 : (ref5 = ref.dangerouslySetInnerHTML) == null ? void 0 : ref5.__html;\n };\n // @ts-ignore Property 'props' does not exist on type ReactElement\n styles.props.children.forEach((child)=>{\n if (Array.isArray(child)) {\n child.forEach((el)=>hasStyles(el) && curStyles.push(el));\n } else if (hasStyles(child)) {\n curStyles.push(child);\n }\n });\n }\n /* Add custom styles before AMP styles to prevent accidental overrides */ return /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-custom\": \"\",\n dangerouslySetInnerHTML: {\n __html: curStyles.map((style)=>style.props.dangerouslySetInnerHTML.__html).join(\"\").replace(/\\/\\*# sourceMappingURL=.*\\*\\//g, \"\").replace(/\\/\\*@ sourceURL=.*?\\*\\//g, \"\")\n }\n });\n}\nclass Head extends _react.Component {\n static contextType = _htmlContext.HtmlContext;\n getCssLinks(files) {\n const { assetPrefix , devOnlyCacheBusterQueryString , dynamicImports , crossOrigin , optimizeCss , optimizeFonts , } = this.context;\n const cssFiles = files.allFiles.filter((f)=>f.endsWith(\".css\"));\n const sharedFiles = new Set(files.sharedFiles);\n // Unmanaged files are CSS files that will be handled directly by the\n // webpack runtime (`mini-css-extract-plugin`).\n let unmangedFiles = new Set([]);\n let dynamicCssFiles = Array.from(new Set(dynamicImports.filter((file)=>file.endsWith(\".css\"))));\n if (dynamicCssFiles.length) {\n const existing = new Set(cssFiles);\n dynamicCssFiles = dynamicCssFiles.filter((f)=>!(existing.has(f) || sharedFiles.has(f)));\n unmangedFiles = new Set(dynamicCssFiles);\n cssFiles.push(...dynamicCssFiles);\n }\n let cssLinkElements = [];\n cssFiles.forEach((file)=>{\n const isSharedFile = sharedFiles.has(file);\n if (!optimizeCss) {\n cssLinkElements.push(/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: `${file}-preload`,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"style\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n }));\n }\n const isUnmanagedFile = unmangedFiles.has(file);\n cssLinkElements.push(/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file,\n nonce: this.props.nonce,\n rel: \"stylesheet\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n \"data-n-g\": isUnmanagedFile ? undefined : isSharedFile ? \"\" : undefined,\n \"data-n-p\": isUnmanagedFile ? undefined : isSharedFile ? undefined : \"\"\n }));\n });\n if (false) {}\n return cssLinkElements.length === 0 ? null : cssLinkElements;\n }\n getPreloadDynamicChunks() {\n const { dynamicImports , assetPrefix , devOnlyCacheBusterQueryString , crossOrigin , } = this.context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\")) {\n return null;\n }\n return /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"preload\",\n key: file,\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"script\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin\n });\n }) // Filter out nulled scripts\n .filter(Boolean);\n }\n getPreloadMainLinks(files) {\n const { assetPrefix , devOnlyCacheBusterQueryString , scriptLoader , crossOrigin , } = this.context;\n const preloadFiles = files.allFiles.filter((file)=>{\n return file.endsWith(\".js\");\n });\n return [\n ...(scriptLoader.beforeInteractive || []).map((file)=>/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file.src,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: file.src,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n })),\n ...preloadFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"link\", {\n key: file,\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n })), \n ];\n }\n getBeforeInteractiveInlineScripts() {\n const { scriptLoader } = this.context;\n const { nonce , crossOrigin } = this.props;\n return (scriptLoader.beforeInteractive || []).filter((script)=>!script.src && (script.dangerouslySetInnerHTML || script.children)).map((file, index)=>{\n const { strategy , children , dangerouslySetInnerHTML , src , ...scriptProps } = file;\n let html = \"\";\n if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n html = dangerouslySetInnerHTML.__html;\n } else if (children) {\n html = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return /*#__PURE__*/ _react.default.createElement(\"script\", Object.assign({}, scriptProps, {\n dangerouslySetInnerHTML: {\n __html: html\n },\n key: scriptProps.id || index,\n nonce: nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: crossOrigin || undefined\n }));\n });\n }\n getDynamicChunks(files) {\n return getDynamicChunks(this.context, this.props, files);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files) {\n return getScripts(this.context, this.props, files);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n makeStylesheetInert(node) {\n return _react.default.Children.map(node, (c)=>{\n var ref8, ref6;\n if ((c == null ? void 0 : c.type) === \"link\" && (c == null ? void 0 : (ref8 = c.props) == null ? void 0 : ref8.href) && _constants.OPTIMIZED_FONT_PROVIDERS.some(({ url })=>{\n var ref, ref7;\n return c == null ? void 0 : (ref = c.props) == null ? void 0 : (ref7 = ref.href) == null ? void 0 : ref7.startsWith(url);\n })) {\n const newProps = {\n ...c.props || {},\n \"data-href\": c.props.href,\n href: undefined\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n } else if (c == null ? void 0 : (ref6 = c.props) == null ? void 0 : ref6.children) {\n const newProps1 = {\n ...c.props || {},\n children: this.makeStylesheetInert(c.props.children)\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps1);\n }\n return c;\n }).filter(Boolean);\n }\n render() {\n const { styles , ampPath , inAmpMode , hybridAmp , canonicalBase , __NEXT_DATA__ , dangerousAsPath , headTags , unstable_runtimeJS , unstable_JsPreload , disableOptimizedLoading , optimizeCss , optimizeFonts , } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n const disableJsPreload = unstable_JsPreload === false || !disableOptimizedLoading;\n this.context.docComponentsRendered.Head = true;\n let { head } = this.context;\n let cssPreloads = [];\n let otherHeadElements = [];\n if (head) {\n head.forEach((c)=>{\n if (c && c.type === \"link\" && c.props[\"rel\"] === \"preload\" && c.props[\"as\"] === \"style\") {\n cssPreloads.push(c);\n } else {\n c && otherHeadElements.push(c);\n }\n });\n head = cssPreloads.concat(otherHeadElements);\n }\n let children = _react.default.Children.toArray(this.props.children).filter(Boolean);\n // show a warning if Head contains <title> (only in development)\n if (true) {\n children = _react.default.Children.map(children, (child)=>{\n var ref;\n const isReactHelmet = child == null ? void 0 : (ref = child.props) == null ? void 0 : ref[\"data-react-helmet\"];\n if (!isReactHelmet) {\n var ref9;\n if ((child == null ? void 0 : child.type) === \"title\") {\n console.warn(\"Warning: <title> should not be used in _document.js's <Head>. https://nextjs.org/docs/messages/no-document-title\");\n } else if ((child == null ? void 0 : child.type) === \"meta\" && (child == null ? void 0 : (ref9 = child.props) == null ? void 0 : ref9.name) === \"viewport\") {\n console.warn(\"Warning: viewport meta tags should not be used in _document.js's <Head>. https://nextjs.org/docs/messages/no-document-viewport-meta\");\n }\n }\n return child;\n });\n if (this.props.crossOrigin) console.warn(\"Warning: `Head` attribute `crossOrigin` is deprecated. https://nextjs.org/docs/messages/doc-crossorigin-deprecated\");\n }\n if (false) {}\n let hasAmphtmlRel = false;\n let hasCanonicalRel = false;\n // show warning and remove conflicting amp head tags\n head = _react.default.Children.map(head || [], (child)=>{\n if (!child) return child;\n const { type , props } = child;\n if (inAmpMode) {\n let badProp = \"\";\n if (type === \"meta\" && props.name === \"viewport\") {\n badProp = 'name=\"viewport\"';\n } else if (type === \"link\" && props.rel === \"canonical\") {\n hasCanonicalRel = true;\n } else if (type === \"script\") {\n // only block if\n // 1. it has a src and isn't pointing to ampproject's CDN\n // 2. it is using dangerouslySetInnerHTML without a type or\n // a type of text/javascript\n if (props.src && props.src.indexOf(\"ampproject\") < -1 || props.dangerouslySetInnerHTML && (!props.type || props.type === \"text/javascript\")) {\n badProp = \"<script\";\n Object.keys(props).forEach((prop)=>{\n badProp += ` ${prop}=\"${props[prop]}\"`;\n });\n badProp += \"/>\";\n }\n }\n if (badProp) {\n console.warn(`Found conflicting amp tag \"${child.type}\" with conflicting prop ${badProp} in ${__NEXT_DATA__.page}. https://nextjs.org/docs/messages/conflicting-amp-tag`);\n return null;\n }\n } else {\n // non-amp mode\n if (type === \"link\" && props.rel === \"amphtml\") {\n hasAmphtmlRel = true;\n }\n }\n return child;\n });\n const files = getDocumentFiles(this.context.buildManifest, this.context.__NEXT_DATA__.page, inAmpMode);\n var _nonce, _nonce1;\n return /*#__PURE__*/ _react.default.createElement(\"head\", Object.assign({}, getHeadHTMLProps(this.props)), this.context.isDevelopment && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"data-next-hide-fouc\": true,\n \"data-ampdevmode\": inAmpMode ? \"true\" : undefined,\n dangerouslySetInnerHTML: {\n __html: `body{display:none}`\n }\n }), /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-next-hide-fouc\": true,\n \"data-ampdevmode\": inAmpMode ? \"true\" : undefined\n }, /*#__PURE__*/ _react.default.createElement(\"style\", {\n dangerouslySetInnerHTML: {\n __html: `body{display:block}`\n }\n }))), head, /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"next-head-count\",\n content: _react.default.Children.count(head || []).toString()\n }), children, optimizeFonts && /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"next-font-preconnect\"\n }), inAmpMode && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width,minimum-scale=1,initial-scale=1\"\n }), !hasCanonicalRel && /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"canonical\",\n href: canonicalBase + (0, _utils).cleanAmpPath(dangerousAsPath)\n }), /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"preload\",\n as: \"script\",\n href: \"https://cdn.ampproject.org/v0.js\"\n }), /*#__PURE__*/ _react.default.createElement(AmpStyles, {\n styles: styles\n }), /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-boilerplate\": \"\",\n dangerouslySetInnerHTML: {\n __html: `body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}`\n }\n }), /*#__PURE__*/ _react.default.createElement(\"noscript\", null, /*#__PURE__*/ _react.default.createElement(\"style\", {\n \"amp-boilerplate\": \"\",\n dangerouslySetInnerHTML: {\n __html: `body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}`\n }\n })), /*#__PURE__*/ _react.default.createElement(\"script\", {\n async: true,\n src: \"https://cdn.ampproject.org/v0.js\"\n })), !inAmpMode && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !hasAmphtmlRel && hybridAmp && /*#__PURE__*/ _react.default.createElement(\"link\", {\n rel: \"amphtml\",\n href: canonicalBase + getAmpPath(ampPath, dangerousAsPath)\n }), this.getBeforeInteractiveInlineScripts(), !optimizeCss && this.getCssLinks(files), !optimizeCss && /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-n-css\": (_nonce = this.props.nonce) != null ? _nonce : \"\"\n }), !disableRuntimeJS && !disableJsPreload && this.getPreloadDynamicChunks(), !disableRuntimeJS && !disableJsPreload && this.getPreloadMainLinks(files), !disableOptimizedLoading && !disableRuntimeJS && this.getPolyfillScripts(), !disableOptimizedLoading && !disableRuntimeJS && this.getPreNextScripts(), !disableOptimizedLoading && !disableRuntimeJS && this.getDynamicChunks(files), !disableOptimizedLoading && !disableRuntimeJS && this.getScripts(files), optimizeCss && this.getCssLinks(files), optimizeCss && /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n \"data-n-css\": (_nonce1 = this.props.nonce) != null ? _nonce1 : \"\"\n }), this.context.isDevelopment && // ordering matches production\n // (by default, style-loader injects at the bottom of <head />)\n /*#__PURE__*/ _react.default.createElement(\"noscript\", {\n id: \"__next_css__DO_NOT_USE__\"\n }), styles || null), /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, {}, ...headTags || []));\n }\n}\nexports.Head = Head;\nfunction Main() {\n const { docComponentsRendered } = (0, _react).useContext(_htmlContext.HtmlContext);\n docComponentsRendered.Main = true;\n // @ts-ignore\n return /*#__PURE__*/ _react.default.createElement(\"next-js-internal-body-render-target\", null);\n}\nclass NextScript extends _react.Component {\n static contextType = _htmlContext.HtmlContext;\n getDynamicChunks(files) {\n return getDynamicChunks(this.context, this.props, files);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files) {\n return getScripts(this.context, this.props, files);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n static getInlineScriptSource(context) {\n const { __NEXT_DATA__ , largePageDataBytes } = context;\n try {\n const data = JSON.stringify(__NEXT_DATA__);\n const bytes = false ? 0 : Buffer.from(data).byteLength;\n const prettyBytes = (__webpack_require__(/*! ../lib/pretty-bytes */ \"./node_modules/next/dist/lib/pretty-bytes.js\")[\"default\"]);\n if (largePageDataBytes && bytes > largePageDataBytes) {\n console.warn(`Warning: data for page \"${__NEXT_DATA__.page}\" is ${prettyBytes(bytes)} which exceeds the threshold of ${prettyBytes(largePageDataBytes)}, this amount of data can reduce performance.\\nSee more info here: https://nextjs.org/docs/messages/large-page-data`);\n }\n return (0, _htmlescape).htmlEscapeJsonString(data);\n } catch (err) {\n if ((0, _isError).default(err) && err.message.indexOf(\"circular structure\") !== -1) {\n throw new Error(`Circular structure in \"getInitialProps\" result of page \"${__NEXT_DATA__.page}\". https://nextjs.org/docs/messages/circular-structure`);\n }\n throw err;\n }\n }\n render() {\n const { assetPrefix , inAmpMode , buildManifest , unstable_runtimeJS , docComponentsRendered , devOnlyCacheBusterQueryString , disableOptimizedLoading , crossOrigin , } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n docComponentsRendered.NextScript = true;\n if (inAmpMode) {\n if (false) {}\n const ampDevFiles = [\n ...buildManifest.devFiles,\n ...buildManifest.polyfillFiles,\n ...buildManifest.ampDevFiles, \n ];\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, disableRuntimeJS ? null : /*#__PURE__*/ _react.default.createElement(\"script\", {\n id: \"__NEXT_DATA__\",\n type: \"application/json\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n dangerouslySetInnerHTML: {\n __html: NextScript.getInlineScriptSource(this.context)\n },\n \"data-ampdevmode\": true\n }), ampDevFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${file}${devOnlyCacheBusterQueryString}`,\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n \"data-ampdevmode\": true\n })));\n }\n if (true) {\n if (this.props.crossOrigin) console.warn(\"Warning: `NextScript` attribute `crossOrigin` is deprecated. https://nextjs.org/docs/messages/doc-crossorigin-deprecated\");\n }\n const files = getDocumentFiles(this.context.buildManifest, this.context.__NEXT_DATA__.page, inAmpMode);\n return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, !disableRuntimeJS && buildManifest.devFiles ? buildManifest.devFiles.map((file)=>/*#__PURE__*/ _react.default.createElement(\"script\", {\n key: file,\n src: `${assetPrefix}/_next/${encodeURI(file)}${devOnlyCacheBusterQueryString}`,\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin\n })) : null, disableRuntimeJS ? null : /*#__PURE__*/ _react.default.createElement(\"script\", {\n id: \"__NEXT_DATA__\",\n type: \"application/json\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n dangerouslySetInnerHTML: {\n __html: NextScript.getInlineScriptSource(this.context)\n }\n }), disableOptimizedLoading && !disableRuntimeJS && this.getPolyfillScripts(), disableOptimizedLoading && !disableRuntimeJS && this.getPreNextScripts(), disableOptimizedLoading && !disableRuntimeJS && this.getDynamicChunks(files), disableOptimizedLoading && !disableRuntimeJS && this.getScripts(files));\n }\n}\nexports.NextScript = NextScript;\nfunction getAmpPath(ampPath, asPath) {\n return ampPath || `${asPath}${asPath.includes(\"?\") ? \"&\" : \"?\"}amp=1`;\n}\nfunction getHeadHTMLProps(props) {\n const { crossOrigin , nonce , ...restProps } = props;\n // This assignment is necessary for additional type checking to avoid unsupported attributes in <head>\n const headProps = restProps;\n return headProps;\n} //# sourceMappingURL=_document.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3BhZ2VzL19kb2N1bWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLEtBQUssRUFBRSxJQUFJO0NBQ2QsRUFBQyxDQUFDO0FBQ0hELFlBQVksR0FBR0UsSUFBSSxDQUFDO0FBQ3BCRixZQUFZLEdBQUdHLElBQUksQ0FBQztBQUNwQkgsa0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJSyxNQUFNLEdBQUdDLHVCQUF1QixDQUFDQyxtQkFBTyxDQUFDLG9CQUFPLENBQUMsQ0FBQztBQUN0RCxJQUFJQyxVQUFVLEdBQUdELG1CQUFPLENBQUMsd0RBQXlCLENBQUM7QUFDbkQsSUFBSUUsYUFBYSxHQUFHRixtQkFBTyxDQUFDLDBEQUEwQixDQUFDO0FBQ3ZELElBQUlHLE1BQU0sR0FBR0gsbUJBQU8sQ0FBQyx3Q0FBaUIsQ0FBQztBQUN2QyxJQUFJSSxXQUFXLEdBQUdKLG1CQUFPLENBQUMsa0RBQXNCLENBQUM7QUFDakQsSUFBSUssT0FBTyxHQUFHQyxzQkFBc0IsQ0FBQ04sbUJBQU8sQ0FBQyxtRUFBa0IsQ0FBQyxDQUFDO0FBQ2pFLElBQUlPLFFBQVEsR0FBR0Qsc0JBQXNCLENBQUNOLG1CQUFPLENBQUMsaUVBQWlCLENBQUMsQ0FBQztBQUNqRSxJQUFJUSxZQUFZLEdBQUdSLG1CQUFPLENBQUMsOERBQTRCLENBQUM7QUFDeEQsTUFBTVMsUUFBUSxTQUFTWCxNQUFNLENBQUNZLFNBQVM7SUFDbkM7OztLQUdDLENBQUMsT0FBT0MsZUFBZSxDQUFDQyxHQUFHLEVBQUU7UUFDMUIsT0FBT0EsR0FBRyxDQUFDQyxzQkFBc0IsQ0FBQ0QsR0FBRyxDQUFDLENBQUM7S0FDMUM7SUFDREUsTUFBTSxHQUFHO1FBQ0wsT0FBTyxhQUFhLENBQUNoQixNQUFNLENBQUNELE9BQU8sQ0FBQ2tCLGFBQWEsQ0FBQ3BCLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDRyxNQUFNLENBQUNE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QUssR0FBRyxHQUFHMEssU0FBUyxFQUFFLEdBQUdyTCxLQUFLO0lBQ3BELHNHQUFzRztJQUN0RyxNQUFNc0wsU0FBUyxHQUFHRCxTQUFTO0lBQzNCLE9BQU9DLFNBQVMsQ0FBQztDQUNwQixDQUVELHFDQUFxQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3BhZ2VzL19kb2N1bWVudC5qcz8zYjhjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5IdG1sID0gSHRtbDtcbmV4cG9ydHMuTWFpbiA9IE1haW47XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcbnZhciBfY29uc3RhbnRzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvY29uc3RhbnRzXCIpO1xudmFyIF9nZXRQYWdlRmlsZXMgPSByZXF1aXJlKFwiLi4vc2VydmVyL2dldC1wYWdlLWZpbGVzXCIpO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXIvdXRpbHNcIik7XG52YXIgX2h0bWxlc2NhcGUgPSByZXF1aXJlKFwiLi4vc2VydmVyL2h0bWxlc2NhcGVcIik7XG52YXIgX3NjcmlwdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2NsaWVudC9zY3JpcHRcIikpO1xudmFyIF9pc0Vycm9yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbGliL2lzLWVycm9yXCIpKTtcbnZhciBfaHRtbENvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9odG1sLWNvbnRleHRcIik7XG5jbGFzcyBEb2N1bWVudCBleHRlbmRzIF9yZWFjdC5Db21wb25lbnQge1xuICAgIC8qKlxuICAgKiBgZ2V0SW5pdGlhbFByb3BzYCBob29rIHJldHVybnMgdGhlIGNvbnRleHQgb2JqZWN0IHdpdGggdGhlIGFkZGl0aW9uIG9mIGByZW5kZXJQYWdlYC5cbiAgICogYHJlbmRlclBhZ2VgIGNhbGxiYWNrIGV4ZWN1dGVzIGBSZWFjdGAgcmVuZGVyaW5nIGxvZ2ljIHN5bmNocm9ub3VzbHkgdG8gc3VwcG9ydCBzZXJ2ZXItcmVuZGVyaW5nIHdyYXBwZXJzXG4gICAqLyBzdGF0aWMgZ2V0SW5pdGlhbFByb3BzKGN0eCkge1xuICAgICAgICByZXR1cm4gY3R4LmRlZmF1bHRHZXRJbml0aWFsUHJvcHMoY3R4KTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEh0bWwsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChIZWFkLCBudWxsKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYm9keVwiLCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTWFpbiwgbnVsbCksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChOZXh0U2NyaXB0LCBudWxsKSkpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IERvY3VtZW50O1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuICAgIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY2FjaGU7XG4gICAgfTtcbiAgICByZXR1cm4gY2FjaGU7XG59XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHtcbiAgICBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IG9ialxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTtcbiAgICBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuICAgIH1cbiAgICB2YXIgbmV3T2JqID0ge307XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGZvcih2YXIga2V5IGluIG9iail7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqO1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRGaWxlcyhidWlsZE1hbmlmZXN0LCBwYXRobmFtZSwgaW5BbXBNb2RlKSB7XG4gICAgY29uc3Qgc2hhcmVkRmlsZXMgPSAoMCwgX2dldFBhZ2VGaWxlcykuZ2V0UGFnZUZpbGVzKGJ1aWxkTWFuaWZlc3QsIFwiL19hcHBcIik7XG4gICAgY29uc3QgcGFnZUZpbGVzID0gaW5BbXBNb2RlID8gW10gOiAoMCwgX2dldFBhZ2VGaWxlcykuZ2V0UGFnZUZpbGVzKGJ1aWxkTWFuaWZlc3QsIHBhdGhuYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzaGFyZWRGaWxlcyxcbiAgICAgICAgcGFnZUZpbGVzLFxuICAgICAgICBhbGxGaWxlczogW1xuICAgICAgICAgICAgLi4ubmV3IFNldChbXG4gICAgICAgICAgICAgICAgLi4uc2hhcmVkRmlsZXMsXG4gICAgICAgICAgICAgICAgLi4ucGFnZUZpbGVzXG4gICAgICAgICAgICBdKVxuICAgICAgICBdXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldFBvbHlmaWxsU2NyaXB0cyhjb250ZXh0LCBwcm9wcykge1xuICAgIC8vIHBvbHlmaWxscy5qcyBoYXMgdG8gYmUgcmVuZGVyZWQgYXMgbm9tb2R1bGUgd2l0aG91dCBhc3luY1xuICAgIC8vIEl0IGFsc28gaGFzIHRvIGJlIHRoZSBmaXJzdCBzY3JpcHQgdG8gbG9hZFxuICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBidWlsZE1hbmlmZXN0ICwgZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmcgLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAsIGNyb3NzT3JpZ2luICwgIH0gPSBjb250ZXh0O1xuICAgIHJldHVybiBidWlsZE1hbmlmZXN0LnBvbHlmaWxsRmlsZXMuZmlsdGVyKChwb2x5ZmlsbCk9PnBvbHlmaWxsLmVuZHNXaXRoKFwiLmpzXCIpICYmICFwb2x5ZmlsbC5lbmRzV2l0aChcIi5tb2R1bGUuanNcIikpLm1hcCgocG9seWZpbGwpPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAga2V5OiBwb2x5ZmlsbCxcbiAgICAgICAgICAgIGRlZmVyOiAhZGlzYWJsZU9wdGltaXplZExvYWRpbmcsXG4gICAgICAgICAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgICAgICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW4gfHwgY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICBub01vZHVsZTogdHJ1ZSxcbiAgICAgICAgICAgIHNyYzogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7cG9seWZpbGx9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gXG4gICAgICAgIH0pKTtcbn1cbmZ1bmN0aW9uIGhhc0NvbXBvbmVudFByb3BzKGNoaWxkKSB7XG4gICAgcmV0dXJuICEhY2hpbGQgJiYgISFjaGlsZC5wcm9wcztcbn1cbmZ1bmN0aW9uIGhhbmRsZURvY3VtZW50U2NyaXB0TG9hZGVySXRlbXMoc2NyaXB0TG9hZGVyLCBfX05FWFRfREFUQV9fLCBwcm9wcykge1xuICAgIHZhciByZWYsIHJlZjEsIHJlZjIsIHJlZjM7XG4gICAgaWYgKCFwcm9wcy5jaGlsZHJlbikgcmV0dXJuO1xuICAgIGNvbnN0IHNjcmlwdExvYWRlckl0ZW1zID0gW107XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KHByb3BzLmNoaWxkcmVuKSA/IHByb3BzLmNoaWxkcmVuIDogW1xuICAgICAgICBwcm9wcy5jaGlsZHJlblxuICAgIF07XG4gICAgY29uc3QgaGVhZENoaWxkcmVuID0gKHJlZiA9IGNoaWxkcmVuLmZpbmQoKGNoaWxkKT0+Y2hpbGQudHlwZSA9PT0gSGVhZCkpID09IG51bGwgPyB2b2lkIDAgOiAocmVmMSA9IHJlZi5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjEuY2hpbGRyZW47XG4gICAgY29uc3QgYm9keUNoaWxkcmVuID0gKHJlZjIgPSBjaGlsZHJlbi5maW5kKChjaGlsZCk9PmNoaWxkLnR5cGUgPT09IFwiYm9keVwiKSkgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYzID0gcmVmMi5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjMuY2hpbGRyZW47XG4gICAgLy8gU2NyaXB0cyB3aXRoIGJlZm9yZUludGVyYWN0aXZlIGNhbiBiZSBwbGFjZWQgaW5zaWRlIEhlYWQgb3IgPGJvZHk+IHNvIGNoaWxkcmVuIG9mIGJvdGggbmVlZHMgdG8gYmUgdHJhdmVyc2VkXG4gICAgY29uc3QgY29tYmluZWRDaGlsZHJlbiA9IFtcbiAgICAgICAgLi4uQXJyYXkuaXNBcnJheShoZWFkQ2hpbGRyZW4pID8gaGVhZENoaWxkcmVuIDogW1xuICAgICAgICAgICAgaGVhZENoaWxkcmVuXG4gICAgICAgIF0sXG4gICAgICAgIC4uLkFycmF5LmlzQXJyYXkoYm9keUNoaWxkcmVuKSA/IGJvZHlDaGlsZHJlbiA6IFtcbiAgICAgICAgICAgIGJvZHlDaGlsZHJlblxuICAgICAgICBdLCBcbiAgICBdO1xuICAgIF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLmZvckVhY2goY29tYmluZWRDaGlsZHJlbiwgKGNoaWxkKT0+e1xuICAgICAgICBpZiAoIWNoaWxkKSByZXR1cm47XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSBfc2NyaXB0LmRlZmF1bHQpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5wcm9wcy5zdHJhdGVneSA9PT0gXCJiZWZvcmVJbnRlcmFjdGl2ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVyLmJlZm9yZUludGVyYWN0aXZlID0gKHNjcmlwdExvYWRlci5iZWZvcmVJbnRlcmFjdGl2ZSB8fCBbXSkuY29uY2F0KFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgfSwgXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChbXG4gICAgICAgICAgICAgICAgXCJsYXp5T25sb2FkXCIsXG4gICAgICAgICAgICAgICAgXCJhZnRlckludGVyYWN0aXZlXCIsXG4gICAgICAgICAgICAgICAgXCJ3b3JrZXJcIlxuICAgICAgICAgICAgXS5pbmNsdWRlcyhjaGlsZC5wcm9wcy5zdHJhdGVneSkpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHRMb2FkZXJJdGVtcy5wdXNoKGNoaWxkLnByb3BzKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBfX05FWFRfREFUQV9fLnNjcmlwdExvYWRlciA9IHNjcmlwdExvYWRlckl0ZW1zO1xufVxuZnVuY3Rpb24gZ2V0UHJlTmV4dFdvcmtlclNjcmlwdHMoY29udGV4dCwgcHJvcHMpIHtcbiAgICBjb25zdCB7IGFzc2V0UHJlZml4ICwgc2NyaXB0TG9hZGVyICwgY3Jvc3NPcmlnaW4gLCBuZXh0U2NyaXB0V29ya2VycyAgfSA9IGNvbnRleHQ7XG4gICAgLy8gZGlzYWJsZSBgbmV4dFNjcmlwdFdvcmtlcnNgIGluIGVkZ2UgcnVudGltZVxuICAgIGlmICghbmV4dFNjcmlwdFdvcmtlcnMgfHwgcHJvY2Vzcy5lbnYuTkVYVF9SVU5USU1FID09PSBcImVkZ2VcIikgcmV0dXJuIG51bGw7XG4gICAgdHJ5IHtcbiAgICAgICAgbGV0IHsgcGFydHl0b3duU25pcHBldCAgfSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKFwiQGJ1aWxkZXIuaW8vcGFydHl0b3duL2ludGVncmF0aW9uXCIpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkocHJvcHMuY2hpbGRyZW4pID8gcHJvcHMuY2hpbGRyZW4gOiBbXG4gICAgICAgICAgICBwcm9wcy5jaGlsZHJlblxuICAgICAgICBdO1xuICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIHVzZXIgaGFzIGRlZmluZWQgdGhlaXIgb3duIFBhcnR5dG93biBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IHVzZXJEZWZpbmVkQ29uZmlnID0gY2hpbGRyZW4uZmluZCgoY2hpbGQpPT57XG4gICAgICAgICAgICB2YXIgcmVmLCByZWY0O1xuICAgICAgICAgICAgcmV0dXJuIGhhc0NvbXBvbmVudFByb3BzKGNoaWxkKSAmJiAoY2hpbGQgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBjaGlsZC5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY0ID0gcmVmLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA9PSBudWxsID8gdm9pZCAwIDogcmVmNC5fX2h0bWwubGVuZ3RoKSAmJiBcImRhdGEtcGFydHl0b3duLWNvbmZpZ1wiIGluIGNoaWxkLnByb3BzO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgIXVzZXJEZWZpbmVkQ29uZmlnICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBcImRhdGEtcGFydHl0b3duLWNvbmZpZ1wiOiBcIlwiLFxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgIHBhcnR5dG93biA9IHtcbiAgICAgICAgICAgICAgbGliOiBcIiR7YXNzZXRQcmVmaXh9L19uZXh0L3N0YXRpYy9+cGFydHl0b3duL1wiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICBcImRhdGEtcGFydHl0b3duXCI6IFwiXCIsXG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgIF9faHRtbDogcGFydHl0b3duU25pcHBldCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCAoc2NyaXB0TG9hZGVyLndvcmtlciB8fCBbXSkubWFwKChmaWxlLCBpbmRleCk9PntcbiAgICAgICAgICAgIGNvbnN0IHsgc3RyYXRlZ3kgLCBzcmMgLCBjaGlsZHJlbjogc2NyaXB0Q2hpbGRyZW4gLCBkYW5nZXJvdXNseVNldElubmVySFRNTCAsIC4uLnNjcmlwdFByb3BzIH0gPSBmaWxlO1xuICAgICAgICAgICAgbGV0IHNyY1Byb3BzID0ge307XG4gICAgICAgICAgICBpZiAoc3JjKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIGV4dGVybmFsIHNyYyBpZiBwcm92aWRlZFxuICAgICAgICAgICAgICAgIHNyY1Byb3BzLnNyYyA9IHNyYztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sKSB7XG4gICAgICAgICAgICAgICAgLy8gRW1iZWQgaW5saW5lIHNjcmlwdCBpZiBwcm92aWRlZCB3aXRoIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXG4gICAgICAgICAgICAgICAgc3JjUHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB7XG4gICAgICAgICAgICAgICAgICAgIF9faHRtbDogZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NyaXB0Q2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAvLyBFbWJlZCBpbmxpbmUgc2NyaXB0IGlmIHByb3ZpZGVkIHdpdGggY2hpbGRyZW5cbiAgICAgICAgICAgICAgICBzcmNQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgICAgICAgICAgICAgICAgX19odG1sOiB0eXBlb2Ygc2NyaXB0Q2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBzY3JpcHRDaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoc2NyaXB0Q2hpbGRyZW4pID8gc2NyaXB0Q2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHVzYWdlIG9mIG5leHQvc2NyaXB0LiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGEgc3JjIGF0dHJpYnV0ZSBvciBhbiBpbmxpbmUgc2NyaXB0PyBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9pbnZhbGlkLXNjcmlwdFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwgT2JqZWN0LmFzc2lnbih7fSwgc3JjUHJvcHMsIHNjcmlwdFByb3BzLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0L3BhcnR5dG93blwiLFxuICAgICAgICAgICAgICAgIGtleTogc3JjIHx8IGluZGV4LFxuICAgICAgICAgICAgICAgIG5vbmNlOiBwcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICBcImRhdGEtbnNjcmlwdFwiOiBcIndvcmtlclwiLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmICgoMCwgX2lzRXJyb3IpLmRlZmF1bHQoZXJyKSAmJiBlcnIuY29kZSAhPT0gXCJNT0RVTEVfTk9UX0ZPVU5EXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgV2FybmluZzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRQcmVOZXh0U2NyaXB0cyhjb250ZXh0LCBwcm9wcykge1xuICAgIGNvbnN0IHsgc2NyaXB0TG9hZGVyICwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgLCBjcm9zc09yaWdpbiAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3Qgd2ViV29ya2VyU2NyaXB0cyA9IGdldFByZU5leHRXb3JrZXJTY3JpcHRzKGNvbnRleHQsIHByb3BzKTtcbiAgICBjb25zdCBiZWZvcmVJbnRlcmFjdGl2ZVNjcmlwdHMgPSAoc2NyaXB0TG9hZGVyLmJlZm9yZUludGVyYWN0aXZlIHx8IFtdKS5maWx0ZXIoKHNjcmlwdCk9PnNjcmlwdC5zcmMpLm1hcCgoZmlsZSwgaW5kZXgpPT57XG4gICAgICAgIGNvbnN0IHsgc3RyYXRlZ3kgLCAuLi5zY3JpcHRQcm9wcyB9ID0gZmlsZTtcbiAgICAgICAgdmFyIF9kZWZlcjtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCBPYmplY3QuYXNzaWduKHt9LCBzY3JpcHRQcm9wcywge1xuICAgICAgICAgICAga2V5OiBzY3JpcHRQcm9wcy5zcmMgfHwgaW5kZXgsXG4gICAgICAgICAgICBkZWZlcjogKF9kZWZlciA9IHNjcmlwdFByb3BzLmRlZmVyKSAhPSBudWxsID8gX2RlZmVyIDogIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgXCJkYXRhLW5zY3JpcHRcIjogXCJiZWZvcmVJbnRlcmFjdGl2ZVwiLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgIH0pKTtcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCB3ZWJXb3JrZXJTY3JpcHRzLCBiZWZvcmVJbnRlcmFjdGl2ZVNjcmlwdHMpO1xufVxuZnVuY3Rpb24gZ2V0RHluYW1pY0NodW5rcyhjb250ZXh0LCBwcm9wcywgZmlsZXMpIHtcbiAgICBjb25zdCB7IGR5bmFtaWNJbXBvcnRzICwgYXNzZXRQcmVmaXggLCBpc0RldmVsb3BtZW50ICwgZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmcgLCBkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAsIGNyb3NzT3JpZ2luICwgIH0gPSBjb250ZXh0O1xuICAgIHJldHVybiBkeW5hbWljSW1wb3J0cy5tYXAoKGZpbGUpPT57XG4gICAgICAgIGlmICghZmlsZS5lbmRzV2l0aChcIi5qc1wiKSB8fCBmaWxlcy5hbGxGaWxlcy5pbmNsdWRlcyhmaWxlKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgYXN5bmM6ICFpc0RldmVsb3BtZW50ICYmIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAgZGVmZXI6ICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyxcbiAgICAgICAgICAgIGtleTogZmlsZSxcbiAgICAgICAgICAgIHNyYzogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZW5jb2RlVVJJKGZpbGUpfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgIG5vbmNlOiBwcm9wcy5ub25jZSxcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFNjcmlwdHMoY29udGV4dCwgcHJvcHMsIGZpbGVzKSB7XG4gICAgdmFyIHJlZjtcbiAgICBjb25zdCB7IGFzc2V0UHJlZml4ICwgYnVpbGRNYW5pZmVzdCAsIGlzRGV2ZWxvcG1lbnQgLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgY3Jvc3NPcmlnaW4gLCAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3Qgbm9ybWFsU2NyaXB0cyA9IGZpbGVzLmFsbEZpbGVzLmZpbHRlcigoZmlsZSk9PmZpbGUuZW5kc1dpdGgoXCIuanNcIikpO1xuICAgIGNvbnN0IGxvd1ByaW9yaXR5U2NyaXB0cyA9IChyZWYgPSBidWlsZE1hbmlmZXN0Lmxvd1ByaW9yaXR5RmlsZXMpID09IG51bGwgPyB2b2lkIDAgOiByZWYuZmlsdGVyKChmaWxlKT0+ZmlsZS5lbmRzV2l0aChcIi5qc1wiKSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgLi4ubm9ybWFsU2NyaXB0cyxcbiAgICAgICAgLi4ubG93UHJpb3JpdHlTY3JpcHRzXG4gICAgXS5tYXAoKGZpbGUpPT57XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgc3JjOiBgJHthc3NldFByZWZpeH0vX25leHQvJHtlbmNvZGVVUkkoZmlsZSl9JHtkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZ31gLFxuICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgYXN5bmM6ICFpc0RldmVsb3BtZW50ICYmIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nLFxuICAgICAgICAgICAgZGVmZXI6ICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyxcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8vIEFkZCBhIHNwZWNpYWwgcHJvcGVydHkgdG8gdGhlIGJ1aWx0LWluIGBEb2N1bWVudGAgY29tcG9uZW50IHNvIGxhdGVyIHdlIGNhblxuLy8gaWRlbnRpZnkgaWYgYSB1c2VyIGN1c3RvbWl6ZWQgYERvY3VtZW50YCBpcyB1c2VkIG9yIG5vdC5cbmNvbnN0IEludGVybmFsRnVuY3Rpb25Eb2N1bWVudCA9IGZ1bmN0aW9uIEludGVybmFsRnVuY3Rpb25Eb2N1bWVudCgpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEh0bWwsIG51bGwsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChIZWFkLCBudWxsKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYm9keVwiLCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTWFpbiwgbnVsbCksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChOZXh0U2NyaXB0LCBudWxsKSkpO1xufTtcbkRvY3VtZW50W19jb25zdGFudHMuTkVYVF9CVUlMVElOX0RPQ1VNRU5UXSA9IEludGVybmFsRnVuY3Rpb25Eb2N1bWVudDtcbmZ1bmN0aW9uIEh0bWwocHJvcHMpIHtcbiAgICBjb25zdCB7IGluQW1wTW9kZSAsIGRvY0NvbXBvbmVudHNSZW5kZXJlZCAsIGxvY2FsZSAsIHNjcmlwdExvYWRlciAsIF9fTkVYVF9EQVRBX18gLCAgfSA9ICgwLCBfcmVhY3QpLnVzZUNvbnRleHQoX2h0bWxDb250ZXh0Lkh0bWxDb250ZXh0KTtcbiAgICBkb2NDb21wb25lbnRzUmVuZGVyZWQuSHRtbCA9IHRydWU7XG4gICAgaGFuZGxlRG9jdW1lbnRTY3JpcHRMb2FkZXJJdGVtcyhzY3JpcHRMb2FkZXIsIF9fTkVYVF9EQVRBX18sIHByb3BzKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaHRtbFwiLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICBsYW5nOiBwcm9wcy5sYW5nIHx8IGxvY2FsZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGFtcDogaW5BbXBNb2RlID8gXCJcIiA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLWFtcGRldm1vZGVcIjogaW5BbXBNb2RlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiB1bmRlZmluZWRcbiAgICB9KSk7XG59XG5mdW5jdGlvbiBBbXBTdHlsZXMoeyBzdHlsZXMgIH0pIHtcbiAgICBpZiAoIXN0eWxlcykgcmV0dXJuIG51bGw7XG4gICAgLy8gdHJ5IHRvIHBhcnNlIHN0eWxlcyBmcm9tIGZyYWdtZW50IGZvciBiYWNrd2FyZHMgY29tcGF0XG4gICAgY29uc3QgY3VyU3R5bGVzID0gQXJyYXkuaXNBcnJheShzdHlsZXMpID8gc3R5bGVzIDogW107XG4gICAgaWYgKC8vIEB0cy1pZ25vcmUgUHJvcGVydHkgJ3Byb3BzJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlIFJlYWN0RWxlbWVudFxuICAgIHN0eWxlcy5wcm9wcyAmJiAvLyBAdHMtaWdub3JlIFByb3BlcnR5ICdwcm9wcycgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSBSZWFjdEVsZW1lbnRcbiAgICBBcnJheS5pc0FycmF5KHN0eWxlcy5wcm9wcy5jaGlsZHJlbikpIHtcbiAgICAgICAgY29uc3QgaGFzU3R5bGVzID0gKGVsKT0+e1xuICAgICAgICAgICAgdmFyIHJlZiwgcmVmNTtcbiAgICAgICAgICAgIHJldHVybiBlbCA9PSBudWxsID8gdm9pZCAwIDogKHJlZiA9IGVsLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjUgPSByZWYuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpID09IG51bGwgPyB2b2lkIDAgOiByZWY1Ll9faHRtbDtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBQcm9wZXJ0eSAncHJvcHMnIGRvZXMgbm90IGV4aXN0IG9uIHR5cGUgUmVhY3RFbGVtZW50XG4gICAgICAgIHN0eWxlcy5wcm9wcy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCk9PntcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIGNoaWxkLmZvckVhY2goKGVsKT0+aGFzU3R5bGVzKGVsKSAmJiBjdXJTdHlsZXMucHVzaChlbCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNTdHlsZXMoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgY3VyU3R5bGVzLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyogQWRkIGN1c3RvbSBzdHlsZXMgYmVmb3JlIEFNUCBzdHlsZXMgdG8gcHJldmVudCBhY2NpZGVudGFsIG92ZXJyaWRlcyAqLyByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge1xuICAgICAgICBcImFtcC1jdXN0b21cIjogXCJcIixcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgIF9faHRtbDogY3VyU3R5bGVzLm1hcCgoc3R5bGUpPT5zdHlsZS5wcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwpLmpvaW4oXCJcIikucmVwbGFjZSgvXFwvXFwqIyBzb3VyY2VNYXBwaW5nVVJMPS4qXFwqXFwvL2csIFwiXCIpLnJlcGxhY2UoL1xcL1xcKkAgc291cmNlVVJMPS4qP1xcKlxcLy9nLCBcIlwiKVxuICAgICAgICB9XG4gICAgfSk7XG59XG5jbGFzcyBIZWFkIGV4dGVuZHMgX3JlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gX2h0bWxDb250ZXh0Lkh0bWxDb250ZXh0O1xuICAgIGdldENzc0xpbmtzKGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGR5bmFtaWNJbXBvcnRzICwgY3Jvc3NPcmlnaW4gLCBvcHRpbWl6ZUNzcyAsIG9wdGltaXplRm9udHMgLCAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgY3NzRmlsZXMgPSBmaWxlcy5hbGxGaWxlcy5maWx0ZXIoKGYpPT5mLmVuZHNXaXRoKFwiLmNzc1wiKSk7XG4gICAgICAgIGNvbnN0IHNoYXJlZEZpbGVzID0gbmV3IFNldChmaWxlcy5zaGFyZWRGaWxlcyk7XG4gICAgICAgIC8vIFVubWFuYWdlZCBmaWxlcyBhcmUgQ1NTIGZpbGVzIHRoYXQgd2lsbCBiZSBoYW5kbGVkIGRpcmVjdGx5IGJ5IHRoZVxuICAgICAgICAvLyB3ZWJwYWNrIHJ1bnRpbWUgKGBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbmApLlxuICAgICAgICBsZXQgdW5tYW5nZWRGaWxlcyA9IG5ldyBTZXQoW10pO1xuICAgICAgICBsZXQgZHluYW1pY0Nzc0ZpbGVzID0gQXJyYXkuZnJvbShuZXcgU2V0KGR5bmFtaWNJbXBvcnRzLmZpbHRlcigoZmlsZSk9PmZpbGUuZW5kc1dpdGgoXCIuY3NzXCIpKSkpO1xuICAgICAgICBpZiAoZHluYW1pY0Nzc0ZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBuZXcgU2V0KGNzc0ZpbGVzKTtcbiAgICAgICAgICAgIGR5bmFtaWNDc3NGaWxlcyA9IGR5bmFtaWNDc3NGaWxlcy5maWx0ZXIoKGYpPT4hKGV4aXN0aW5nLmhhcyhmKSB8fCBzaGFyZWRGaWxlcy5oYXMoZikpKTtcbiAgICAgICAgICAgIHVubWFuZ2VkRmlsZXMgPSBuZXcgU2V0KGR5bmFtaWNDc3NGaWxlcyk7XG4gICAgICAgICAgICBjc3NGaWxlcy5wdXNoKC4uLmR5bmFtaWNDc3NGaWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNzc0xpbmtFbGVtZW50cyA9IFtdO1xuICAgICAgICBjc3NGaWxlcy5mb3JFYWNoKChmaWxlKT0+e1xuICAgICAgICAgICAgY29uc3QgaXNTaGFyZWRGaWxlID0gc2hhcmVkRmlsZXMuaGFzKGZpbGUpO1xuICAgICAgICAgICAgaWYgKCFvcHRpbWl6ZUNzcykge1xuICAgICAgICAgICAgICAgIGNzc0xpbmtFbGVtZW50cy5wdXNoKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGAke2ZpbGV9LXByZWxvYWRgLFxuICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZW5jb2RlVVJJKGZpbGUpfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgICAgICAgICAgYXM6IFwic3R5bGVcIixcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgY3Jvc3NPcmlnaW5cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc1VubWFuYWdlZEZpbGUgPSB1bm1hbmdlZEZpbGVzLmhhcyhmaWxlKTtcbiAgICAgICAgICAgIGNzc0xpbmtFbGVtZW50cy5wdXNoKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgIGtleTogZmlsZSxcbiAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICByZWw6IFwic3R5bGVzaGVldFwiLFxuICAgICAgICAgICAgICAgIGhyZWY6IGAke2Fzc2V0UHJlZml4fS9fbmV4dC8ke2VuY29kZVVSSShmaWxlKX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4gfHwgY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgICAgXCJkYXRhLW4tZ1wiOiBpc1VubWFuYWdlZEZpbGUgPyB1bmRlZmluZWQgOiBpc1NoYXJlZEZpbGUgPyBcIlwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIFwiZGF0YS1uLXBcIjogaXNVbm1hbmFnZWRGaWxlID8gdW5kZWZpbmVkIDogaXNTaGFyZWRGaWxlID8gdW5kZWZpbmVkIDogXCJcIlxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcImRldmVsb3BtZW50XCIgJiYgb3B0aW1pemVGb250cykge1xuICAgICAgICAgICAgY3NzTGlua0VsZW1lbnRzID0gdGhpcy5tYWtlU3R5bGVzaGVldEluZXJ0KGNzc0xpbmtFbGVtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNzc0xpbmtFbGVtZW50cy5sZW5ndGggPT09IDAgPyBudWxsIDogY3NzTGlua0VsZW1lbnRzO1xuICAgIH1cbiAgICBnZXRQcmVsb2FkRHluYW1pY0NodW5rcygpIHtcbiAgICAgICAgY29uc3QgeyBkeW5hbWljSW1wb3J0cyAsIGFzc2V0UHJlZml4ICwgZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmcgLCBjcm9zc09yaWdpbiAsICB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICByZXR1cm4gZHluYW1pY0ltcG9ydHMubWFwKChmaWxlKT0+e1xuICAgICAgICAgICAgaWYgKCFmaWxlLmVuZHNXaXRoKFwiLmpzXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICAgICAgaHJlZjogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZW5jb2RlVVJJKGZpbGUpfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgICAgICBhczogXCJzY3JpcHRcIixcbiAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLy8gRmlsdGVyIG91dCBudWxsZWQgc2NyaXB0c1xuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cbiAgICBnZXRQcmVsb2FkTWFpbkxpbmtzKGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHsgYXNzZXRQcmVmaXggLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIHNjcmlwdExvYWRlciAsIGNyb3NzT3JpZ2luICwgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IHByZWxvYWRGaWxlcyA9IGZpbGVzLmFsbEZpbGVzLmZpbHRlcigoZmlsZSk9PntcbiAgICAgICAgICAgIHJldHVybiBmaWxlLmVuZHNXaXRoKFwiLmpzXCIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLihzY3JpcHRMb2FkZXIuYmVmb3JlSW50ZXJhY3RpdmUgfHwgW10pLm1hcCgoZmlsZSk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGZpbGUuc3JjLFxuICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogZmlsZS5zcmMsXG4gICAgICAgICAgICAgICAgICAgIGFzOiBcInNjcmlwdFwiLFxuICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIC4uLnByZWxvYWRGaWxlcy5tYXAoKGZpbGUpPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZW5jb2RlVVJJKGZpbGUpfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgICAgICAgICAgYXM6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgfSkpLCBcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0QmVmb3JlSW50ZXJhY3RpdmVJbmxpbmVTY3JpcHRzKCkge1xuICAgICAgICBjb25zdCB7IHNjcmlwdExvYWRlciAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgeyBub25jZSAsIGNyb3NzT3JpZ2luICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIChzY3JpcHRMb2FkZXIuYmVmb3JlSW50ZXJhY3RpdmUgfHwgW10pLmZpbHRlcigoc2NyaXB0KT0+IXNjcmlwdC5zcmMgJiYgKHNjcmlwdC5kYW5nZXJvdXNseVNldElubmVySFRNTCB8fCBzY3JpcHQuY2hpbGRyZW4pKS5tYXAoKGZpbGUsIGluZGV4KT0+e1xuICAgICAgICAgICAgY29uc3QgeyBzdHJhdGVneSAsIGNoaWxkcmVuICwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgLCBzcmMgLCAuLi5zY3JpcHRQcm9wcyB9ID0gZmlsZTtcbiAgICAgICAgICAgIGxldCBodG1sID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChkYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwpIHtcbiAgICAgICAgICAgICAgICBodG1sID0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGh0bWwgPSB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIsIE9iamVjdC5hc3NpZ24oe30sIHNjcmlwdFByb3BzLCB7XG4gICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICAgICAgX19odG1sOiBodG1sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBrZXk6IHNjcmlwdFByb3BzLmlkIHx8IGluZGV4LFxuICAgICAgICAgICAgICAgIG5vbmNlOiBub25jZSxcbiAgICAgICAgICAgICAgICBcImRhdGEtbnNjcmlwdFwiOiBcImJlZm9yZUludGVyYWN0aXZlXCIsXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU5cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldER5bmFtaWNDaHVua3MoZmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIGdldER5bmFtaWNDaHVua3ModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzLCBmaWxlcyk7XG4gICAgfVxuICAgIGdldFByZU5leHRTY3JpcHRzKCkge1xuICAgICAgICByZXR1cm4gZ2V0UHJlTmV4dFNjcmlwdHModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzKTtcbiAgICB9XG4gICAgZ2V0U2NyaXB0cyhmaWxlcykge1xuICAgICAgICByZXR1cm4gZ2V0U2NyaXB0cyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMsIGZpbGVzKTtcbiAgICB9XG4gICAgZ2V0UG9seWZpbGxTY3JpcHRzKCkge1xuICAgICAgICByZXR1cm4gZ2V0UG9seWZpbGxTY3JpcHRzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcyk7XG4gICAgfVxuICAgIG1ha2VTdHlsZXNoZWV0SW5lcnQobm9kZSkge1xuICAgICAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4ubWFwKG5vZGUsIChjKT0+e1xuICAgICAgICAgICAgdmFyIHJlZjgsIHJlZjY7XG4gICAgICAgICAgICBpZiAoKGMgPT0gbnVsbCA/IHZvaWQgMCA6IGMudHlwZSkgPT09IFwibGlua1wiICYmIChjID09IG51bGwgPyB2b2lkIDAgOiAocmVmOCA9IGMucHJvcHMpID09IG51bGwgPyB2b2lkIDAgOiByZWY4LmhyZWYpICYmIF9jb25zdGFudHMuT1BUSU1JWkVEX0ZPTlRfUFJPVklERVJTLnNvbWUoKHsgdXJsICB9KT0+e1xuICAgICAgICAgICAgICAgIHZhciByZWYsIHJlZjc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWYgPSBjLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogKHJlZjcgPSByZWYuaHJlZikgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjcuc3RhcnRzV2l0aCh1cmwpO1xuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5wcm9wcyB8fCB7fSxcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWhyZWZcIjogYy5wcm9wcy5ocmVmLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudChjLCBuZXdQcm9wcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gbnVsbCA/IHZvaWQgMCA6IChyZWY2ID0gYy5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjYuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5wcm9wcyB8fCB7fSxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMubWFrZVN0eWxlc2hlZXRJbmVydChjLnByb3BzLmNoaWxkcmVuKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGMsIG5ld1Byb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBzdHlsZXMgLCBhbXBQYXRoICwgaW5BbXBNb2RlICwgaHlicmlkQW1wICwgY2Fub25pY2FsQmFzZSAsIF9fTkVYVF9EQVRBX18gLCBkYW5nZXJvdXNBc1BhdGggLCBoZWFkVGFncyAsIHVuc3RhYmxlX3J1bnRpbWVKUyAsIHVuc3RhYmxlX0pzUHJlbG9hZCAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgb3B0aW1pemVDc3MgLCBvcHRpbWl6ZUZvbnRzICwgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGRpc2FibGVSdW50aW1lSlMgPSB1bnN0YWJsZV9ydW50aW1lSlMgPT09IGZhbHNlO1xuICAgICAgICBjb25zdCBkaXNhYmxlSnNQcmVsb2FkID0gdW5zdGFibGVfSnNQcmVsb2FkID09PSBmYWxzZSB8fCAhZGlzYWJsZU9wdGltaXplZExvYWRpbmc7XG4gICAgICAgIHRoaXMuY29udGV4dC5kb2NDb21wb25lbnRzUmVuZGVyZWQuSGVhZCA9IHRydWU7XG4gICAgICAgIGxldCB7IGhlYWQgIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxldCBjc3NQcmVsb2FkcyA9IFtdO1xuICAgICAgICBsZXQgb3RoZXJIZWFkRWxlbWVudHMgPSBbXTtcbiAgICAgICAgaWYgKGhlYWQpIHtcbiAgICAgICAgICAgIGhlYWQuZm9yRWFjaCgoYyk9PntcbiAgICAgICAgICAgICAgICBpZiAoYyAmJiBjLnR5cGUgPT09IFwibGlua1wiICYmIGMucHJvcHNbXCJyZWxcIl0gPT09IFwicHJlbG9hZFwiICYmIGMucHJvcHNbXCJhc1wiXSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNzc1ByZWxvYWRzLnB1c2goYyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYyAmJiBvdGhlckhlYWRFbGVtZW50cy5wdXNoKGMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaGVhZCA9IGNzc1ByZWxvYWRzLmNvbmNhdChvdGhlckhlYWRFbGVtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNoaWxkcmVuID0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIC8vIHNob3cgYSB3YXJuaW5nIGlmIEhlYWQgY29udGFpbnMgPHRpdGxlPiAob25seSBpbiBkZXZlbG9wbWVudClcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCk9PntcbiAgICAgICAgICAgICAgICB2YXIgcmVmO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmVhY3RIZWxtZXQgPSBjaGlsZCA9PSBudWxsID8gdm9pZCAwIDogKHJlZiA9IGNoaWxkLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogcmVmW1wiZGF0YS1yZWFjdC1oZWxtZXRcIl07XG4gICAgICAgICAgICAgICAgaWYgKCFpc1JlYWN0SGVsbWV0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWY5O1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGNoaWxkID09IG51bGwgPyB2b2lkIDAgOiBjaGlsZC50eXBlKSA9PT0gXCJ0aXRsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJXYXJuaW5nOiA8dGl0bGU+IHNob3VsZCBub3QgYmUgdXNlZCBpbiBfZG9jdW1lbnQuanMncyA8SGVhZD4uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25vLWRvY3VtZW50LXRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChjaGlsZCA9PSBudWxsID8gdm9pZCAwIDogY2hpbGQudHlwZSkgPT09IFwibWV0YVwiICYmIChjaGlsZCA9PSBudWxsID8gdm9pZCAwIDogKHJlZjkgPSBjaGlsZC5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IHJlZjkubmFtZSkgPT09IFwidmlld3BvcnRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiV2FybmluZzogdmlld3BvcnQgbWV0YSB0YWdzIHNob3VsZCBub3QgYmUgdXNlZCBpbiBfZG9jdW1lbnQuanMncyA8SGVhZD4uIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25vLWRvY3VtZW50LXZpZXdwb3J0LW1ldGFcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5jcm9zc09yaWdpbikgY29uc29sZS53YXJuKFwiV2FybmluZzogYEhlYWRgIGF0dHJpYnV0ZSBgY3Jvc3NPcmlnaW5gIGlzIGRlcHJlY2F0ZWQuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2RvYy1jcm9zc29yaWdpbi1kZXByZWNhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiICYmIG9wdGltaXplRm9udHMgJiYgIWluQW1wTW9kZSkge1xuICAgICAgICAgICAgY2hpbGRyZW4gPSB0aGlzLm1ha2VTdHlsZXNoZWV0SW5lcnQoY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoYXNBbXBodG1sUmVsID0gZmFsc2U7XG4gICAgICAgIGxldCBoYXNDYW5vbmljYWxSZWwgPSBmYWxzZTtcbiAgICAgICAgLy8gc2hvdyB3YXJuaW5nIGFuZCByZW1vdmUgY29uZmxpY3RpbmcgYW1wIGhlYWQgdGFnc1xuICAgICAgICBoZWFkID0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4ubWFwKGhlYWQgfHwgW10sIChjaGlsZCk9PntcbiAgICAgICAgICAgIGlmICghY2hpbGQpIHJldHVybiBjaGlsZDtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSAsIHByb3BzICB9ID0gY2hpbGQ7XG4gICAgICAgICAgICBpZiAoaW5BbXBNb2RlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGJhZFByb3AgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcIm1ldGFcIiAmJiBwcm9wcy5uYW1lID09PSBcInZpZXdwb3J0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFkUHJvcCA9ICduYW1lPVwidmlld3BvcnRcIic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImxpbmtcIiAmJiBwcm9wcy5yZWwgPT09IFwiY2Fub25pY2FsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzQ2Fub25pY2FsUmVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwic2NyaXB0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb25seSBibG9jayBpZlxuICAgICAgICAgICAgICAgICAgICAvLyAxLiBpdCBoYXMgYSBzcmMgYW5kIGlzbid0IHBvaW50aW5nIHRvIGFtcHByb2plY3QncyBDRE5cbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gaXQgaXMgdXNpbmcgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgd2l0aG91dCBhIHR5cGUgb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gYSB0eXBlIG9mIHRleHQvamF2YXNjcmlwdFxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMuc3JjICYmIHByb3BzLnNyYy5pbmRleE9mKFwiYW1wcHJvamVjdFwiKSA8IC0xIHx8IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmICghcHJvcHMudHlwZSB8fCBwcm9wcy50eXBlID09PSBcInRleHQvamF2YXNjcmlwdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFkUHJvcCA9IFwiPHNjcmlwdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2goKHByb3ApPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkUHJvcCArPSBgICR7cHJvcH09XCIke3Byb3BzW3Byb3BdfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFkUHJvcCArPSBcIi8+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGJhZFByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBGb3VuZCBjb25mbGljdGluZyBhbXAgdGFnIFwiJHtjaGlsZC50eXBlfVwiIHdpdGggY29uZmxpY3RpbmcgcHJvcCAke2JhZFByb3B9IGluICR7X19ORVhUX0RBVEFfXy5wYWdlfS4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvY29uZmxpY3RpbmctYW1wLXRhZ2ApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIG5vbi1hbXAgbW9kZVxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcImxpbmtcIiAmJiBwcm9wcy5yZWwgPT09IFwiYW1waHRtbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc0FtcGh0bWxSZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gZ2V0RG9jdW1lbnRGaWxlcyh0aGlzLmNvbnRleHQuYnVpbGRNYW5pZmVzdCwgdGhpcy5jb250ZXh0Ll9fTkVYVF9EQVRBX18ucGFnZSwgaW5BbXBNb2RlKTtcbiAgICAgICAgdmFyIF9ub25jZSwgX25vbmNlMTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImhlYWRcIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SGVhZEhUTUxQcm9wcyh0aGlzLnByb3BzKSksIHRoaXMuY29udGV4dC5pc0RldmVsb3BtZW50ICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge1xuICAgICAgICAgICAgXCJkYXRhLW5leHQtaGlkZS1mb3VjXCI6IHRydWUsXG4gICAgICAgICAgICBcImRhdGEtYW1wZGV2bW9kZVwiOiBpbkFtcE1vZGUgPyBcInRydWVcIiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgX19odG1sOiBgYm9keXtkaXNwbGF5Om5vbmV9YFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwge1xuICAgICAgICAgICAgXCJkYXRhLW5leHQtaGlkZS1mb3VjXCI6IHRydWUsXG4gICAgICAgICAgICBcImRhdGEtYW1wZGV2bW9kZVwiOiBpbkFtcE1vZGUgPyBcInRydWVcIiA6IHVuZGVmaW5lZFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgIF9faHRtbDogYGJvZHl7ZGlzcGxheTpibG9ja31gXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKSksIGhlYWQsIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJuZXh0LWhlYWQtY291bnRcIixcbiAgICAgICAgICAgIGNvbnRlbnQ6IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLmNvdW50KGhlYWQgfHwgW10pLnRvU3RyaW5nKClcbiAgICAgICAgfSksIGNoaWxkcmVuLCBvcHRpbWl6ZUZvbnRzICYmIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcIm1ldGFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJuZXh0LWZvbnQtcHJlY29ubmVjdFwiXG4gICAgICAgIH0pLCBpbkFtcE1vZGUgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwidmlld3BvcnRcIixcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwid2lkdGg9ZGV2aWNlLXdpZHRoLG1pbmltdW0tc2NhbGU9MSxpbml0aWFsLXNjYWxlPTFcIlxuICAgICAgICB9KSwgIWhhc0Nhbm9uaWNhbFJlbCAmJiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtcbiAgICAgICAgICAgIHJlbDogXCJjYW5vbmljYWxcIixcbiAgICAgICAgICAgIGhyZWY6IGNhbm9uaWNhbEJhc2UgKyAoMCwgX3V0aWxzKS5jbGVhbkFtcFBhdGgoZGFuZ2Vyb3VzQXNQYXRoKVxuICAgICAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgYXM6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICBocmVmOiBcImh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnL3YwLmpzXCJcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChBbXBTdHlsZXMsIHtcbiAgICAgICAgICAgIHN0eWxlczogc3R5bGVzXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgICAgICBcImFtcC1ib2lsZXJwbGF0ZVwiOiBcIlwiLFxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICBfX2h0bWw6IGBib2R5ey13ZWJraXQtYW5pbWF0aW9uOi1hbXAtc3RhcnQgOHMgc3RlcHMoMSxlbmQpIDBzIDEgbm9ybWFsIGJvdGg7LW1vei1hbmltYXRpb246LWFtcC1zdGFydCA4cyBzdGVwcygxLGVuZCkgMHMgMSBub3JtYWwgYm90aDstbXMtYW5pbWF0aW9uOi1hbXAtc3RhcnQgOHMgc3RlcHMoMSxlbmQpIDBzIDEgbm9ybWFsIGJvdGg7YW5pbWF0aW9uOi1hbXAtc3RhcnQgOHMgc3RlcHMoMSxlbmQpIDBzIDEgbm9ybWFsIGJvdGh9QC13ZWJraXQta2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fUAtbW96LWtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1ALW1zLWtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1ALW8ta2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fUBrZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19YFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge1xuICAgICAgICAgICAgXCJhbXAtYm9pbGVycGxhdGVcIjogXCJcIixcbiAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICAgICAgX19odG1sOiBgYm9keXstd2Via2l0LWFuaW1hdGlvbjpub25lOy1tb3otYW5pbWF0aW9uOm5vbmU7LW1zLWFuaW1hdGlvbjpub25lO2FuaW1hdGlvbjpub25lfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICAgICAgICBzcmM6IFwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvdjAuanNcIlxuICAgICAgICB9KSksICFpbkFtcE1vZGUgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAhaGFzQW1waHRtbFJlbCAmJiBoeWJyaWRBbXAgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGlua1wiLCB7XG4gICAgICAgICAgICByZWw6IFwiYW1waHRtbFwiLFxuICAgICAgICAgICAgaHJlZjogY2Fub25pY2FsQmFzZSArIGdldEFtcFBhdGgoYW1wUGF0aCwgZGFuZ2Vyb3VzQXNQYXRoKVxuICAgICAgICB9KSwgdGhpcy5nZXRCZWZvcmVJbnRlcmFjdGl2ZUlubGluZVNjcmlwdHMoKSwgIW9wdGltaXplQ3NzICYmIHRoaXMuZ2V0Q3NzTGlua3MoZmlsZXMpLCAhb3B0aW1pemVDc3MgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwge1xuICAgICAgICAgICAgXCJkYXRhLW4tY3NzXCI6IChfbm9uY2UgPSB0aGlzLnByb3BzLm5vbmNlKSAhPSBudWxsID8gX25vbmNlIDogXCJcIlxuICAgICAgICB9KSwgIWRpc2FibGVSdW50aW1lSlMgJiYgIWRpc2FibGVKc1ByZWxvYWQgJiYgdGhpcy5nZXRQcmVsb2FkRHluYW1pY0NodW5rcygpLCAhZGlzYWJsZVJ1bnRpbWVKUyAmJiAhZGlzYWJsZUpzUHJlbG9hZCAmJiB0aGlzLmdldFByZWxvYWRNYWluTGlua3MoZmlsZXMpLCAhZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXRQb2x5ZmlsbFNjcmlwdHMoKSwgIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UHJlTmV4dFNjcmlwdHMoKSwgIWRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0RHluYW1pY0NodW5rcyhmaWxlcyksICFkaXNhYmxlT3B0aW1pemVkTG9hZGluZyAmJiAhZGlzYWJsZVJ1bnRpbWVKUyAmJiB0aGlzLmdldFNjcmlwdHMoZmlsZXMpLCBvcHRpbWl6ZUNzcyAmJiB0aGlzLmdldENzc0xpbmtzKGZpbGVzKSwgb3B0aW1pemVDc3MgJiYgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwge1xuICAgICAgICAgICAgXCJkYXRhLW4tY3NzXCI6IChfbm9uY2UxID0gdGhpcy5wcm9wcy5ub25jZSkgIT0gbnVsbCA/IF9ub25jZTEgOiBcIlwiXG4gICAgICAgIH0pLCB0aGlzLmNvbnRleHQuaXNEZXZlbG9wbWVudCAmJiAvLyB0aGlzIGVsZW1lbnQgaXMgdXNlZCB0byBtb3VudCBkZXZlbG9wbWVudCBzdHlsZXMgc28gdGhlXG4gICAgICAgIC8vIG9yZGVyaW5nIG1hdGNoZXMgcHJvZHVjdGlvblxuICAgICAgICAvLyAoYnkgZGVmYXVsdCwgc3R5bGUtbG9hZGVyIGluamVjdHMgYXQgdGhlIGJvdHRvbSBvZiA8aGVhZCAvPilcbiAgICAgICAgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibm9zY3JpcHRcIiwge1xuICAgICAgICAgICAgaWQ6IFwiX19uZXh0X2Nzc19fRE9fTk9UX1VTRV9fXCJcbiAgICAgICAgfSksIHN0eWxlcyB8fCBudWxsKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCB7fSwgLi4uaGVhZFRhZ3MgfHwgW10pKTtcbiAgICB9XG59XG5leHBvcnRzLkhlYWQgPSBIZWFkO1xuZnVuY3Rpb24gTWFpbigpIHtcbiAgICBjb25zdCB7IGRvY0NvbXBvbmVudHNSZW5kZXJlZCAgfSA9ICgwLCBfcmVhY3QpLnVzZUNvbnRleHQoX2h0bWxDb250ZXh0Lkh0bWxDb250ZXh0KTtcbiAgICBkb2NDb21wb25lbnRzUmVuZGVyZWQuTWFpbiA9IHRydWU7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJuZXh0LWpzLWludGVybmFsLWJvZHktcmVuZGVyLXRhcmdldFwiLCBudWxsKTtcbn1cbmNsYXNzIE5leHRTY3JpcHQgZXh0ZW5kcyBfcmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBfaHRtbENvbnRleHQuSHRtbENvbnRleHQ7XG4gICAgZ2V0RHluYW1pY0NodW5rcyhmaWxlcykge1xuICAgICAgICByZXR1cm4gZ2V0RHluYW1pY0NodW5rcyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMsIGZpbGVzKTtcbiAgICB9XG4gICAgZ2V0UHJlTmV4dFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQcmVOZXh0U2NyaXB0cyh0aGlzLmNvbnRleHQsIHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICBnZXRTY3JpcHRzKGZpbGVzKSB7XG4gICAgICAgIHJldHVybiBnZXRTY3JpcHRzKHRoaXMuY29udGV4dCwgdGhpcy5wcm9wcywgZmlsZXMpO1xuICAgIH1cbiAgICBnZXRQb2x5ZmlsbFNjcmlwdHMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQb2x5ZmlsbFNjcmlwdHModGhpcy5jb250ZXh0LCB0aGlzLnByb3BzKTtcbiAgICB9XG4gICAgc3RhdGljIGdldElubGluZVNjcmlwdFNvdXJjZShjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgX19ORVhUX0RBVEFfXyAsIGxhcmdlUGFnZURhdGFCeXRlcyAgfSA9IGNvbnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkoX19ORVhUX0RBVEFfXyk7XG4gICAgICAgICAgICBjb25zdCBieXRlcyA9IHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gXCJlZGdlXCIgPyBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZGF0YSkuYnVmZmVyLmJ5dGVMZW5ndGggOiBCdWZmZXIuZnJvbShkYXRhKS5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcHJldHR5Qnl0ZXMgPSByZXF1aXJlKFwiLi4vbGliL3ByZXR0eS1ieXRlc1wiKS5kZWZhdWx0O1xuICAgICAgICAgICAgaWYgKGxhcmdlUGFnZURhdGFCeXRlcyAmJiBieXRlcyA+IGxhcmdlUGFnZURhdGFCeXRlcykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgV2FybmluZzogZGF0YSBmb3IgcGFnZSBcIiR7X19ORVhUX0RBVEFfXy5wYWdlfVwiIGlzICR7cHJldHR5Qnl0ZXMoYnl0ZXMpfSB3aGljaCBleGNlZWRzIHRoZSB0aHJlc2hvbGQgb2YgJHtwcmV0dHlCeXRlcyhsYXJnZVBhZ2VEYXRhQnl0ZXMpfSwgdGhpcyBhbW91bnQgb2YgZGF0YSBjYW4gcmVkdWNlIHBlcmZvcm1hbmNlLlxcblNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbGFyZ2UtcGFnZS1kYXRhYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9odG1sZXNjYXBlKS5odG1sRXNjYXBlSnNvblN0cmluZyhkYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoKDAsIF9pc0Vycm9yKS5kZWZhdWx0KGVycikgJiYgZXJyLm1lc3NhZ2UuaW5kZXhPZihcImNpcmN1bGFyIHN0cnVjdHVyZVwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENpcmN1bGFyIHN0cnVjdHVyZSBpbiBcImdldEluaXRpYWxQcm9wc1wiIHJlc3VsdCBvZiBwYWdlIFwiJHtfX05FWFRfREFUQV9fLnBhZ2V9XCIuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2NpcmN1bGFyLXN0cnVjdHVyZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBhc3NldFByZWZpeCAsIGluQW1wTW9kZSAsIGJ1aWxkTWFuaWZlc3QgLCB1bnN0YWJsZV9ydW50aW1lSlMgLCBkb2NDb21wb25lbnRzUmVuZGVyZWQgLCBkZXZPbmx5Q2FjaGVCdXN0ZXJRdWVyeVN0cmluZyAsIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICwgY3Jvc3NPcmlnaW4gLCAgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgY29uc3QgZGlzYWJsZVJ1bnRpbWVKUyA9IHVuc3RhYmxlX3J1bnRpbWVKUyA9PT0gZmFsc2U7XG4gICAgICAgIGRvY0NvbXBvbmVudHNSZW5kZXJlZC5OZXh0U2NyaXB0ID0gdHJ1ZTtcbiAgICAgICAgaWYgKGluQW1wTW9kZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1wRGV2RmlsZXMgPSBbXG4gICAgICAgICAgICAgICAgLi4uYnVpbGRNYW5pZmVzdC5kZXZGaWxlcyxcbiAgICAgICAgICAgICAgICAuLi5idWlsZE1hbmlmZXN0LnBvbHlmaWxsRmlsZXMsXG4gICAgICAgICAgICAgICAgLi4uYnVpbGRNYW5pZmVzdC5hbXBEZXZGaWxlcywgXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgZGlzYWJsZVJ1bnRpbWVKUyA/IG51bGwgOiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgIGlkOiBcIl9fTkVYVF9EQVRBX19cIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgICAgICAgICBfX2h0bWw6IE5leHRTY3JpcHQuZ2V0SW5saW5lU2NyaXB0U291cmNlKHRoaXMuY29udGV4dClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiZGF0YS1hbXBkZXZtb2RlXCI6IHRydWVcbiAgICAgICAgICAgIH0pLCBhbXBEZXZGaWxlcy5tYXAoKGZpbGUpPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGZpbGUsXG4gICAgICAgICAgICAgICAgICAgIHNyYzogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZmlsZX0ke2Rldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nfWAsXG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLnByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWFtcGRldm1vZGVcIjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuY3Jvc3NPcmlnaW4pIGNvbnNvbGUud2FybihcIldhcm5pbmc6IGBOZXh0U2NyaXB0YCBhdHRyaWJ1dGUgYGNyb3NzT3JpZ2luYCBpcyBkZXByZWNhdGVkLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9kb2MtY3Jvc3NvcmlnaW4tZGVwcmVjYXRlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlcyA9IGdldERvY3VtZW50RmlsZXModGhpcy5jb250ZXh0LmJ1aWxkTWFuaWZlc3QsIHRoaXMuY29udGV4dC5fX05FWFRfREFUQV9fLnBhZ2UsIGluQW1wTW9kZSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuRnJhZ21lbnQsIG51bGwsICFkaXNhYmxlUnVudGltZUpTICYmIGJ1aWxkTWFuaWZlc3QuZGV2RmlsZXMgPyBidWlsZE1hbmlmZXN0LmRldkZpbGVzLm1hcCgoZmlsZSk9Pi8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7XG4gICAgICAgICAgICAgICAga2V5OiBmaWxlLFxuICAgICAgICAgICAgICAgIHNyYzogYCR7YXNzZXRQcmVmaXh9L19uZXh0LyR7ZW5jb2RlVVJJKGZpbGUpfSR7ZGV2T25seUNhY2hlQnVzdGVyUXVlcnlTdHJpbmd9YCxcbiAgICAgICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogdGhpcy5wcm9wcy5jcm9zc09yaWdpbiB8fCBjcm9zc09yaWdpblxuICAgICAgICAgICAgfSkpIDogbnVsbCwgZGlzYWJsZVJ1bnRpbWVKUyA/IG51bGwgOiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge1xuICAgICAgICAgICAgaWQ6IFwiX19ORVhUX0RBVEFfX1wiLFxuICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICBub25jZTogdGhpcy5wcm9wcy5ub25jZSxcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiB0aGlzLnByb3BzLmNyb3NzT3JpZ2luIHx8IGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgICAgICBfX2h0bWw6IE5leHRTY3JpcHQuZ2V0SW5saW5lU2NyaXB0U291cmNlKHRoaXMuY29udGV4dClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UG9seWZpbGxTY3JpcHRzKCksIGRpc2FibGVPcHRpbWl6ZWRMb2FkaW5nICYmICFkaXNhYmxlUnVudGltZUpTICYmIHRoaXMuZ2V0UHJlTmV4dFNjcmlwdHMoKSwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXREeW5hbWljQ2h1bmtzKGZpbGVzKSwgZGlzYWJsZU9wdGltaXplZExvYWRpbmcgJiYgIWRpc2FibGVSdW50aW1lSlMgJiYgdGhpcy5nZXRTY3JpcHRzKGZpbGVzKSk7XG4gICAgfVxufVxuZXhwb3J0cy5OZXh0U2NyaXB0ID0gTmV4dFNjcmlwdDtcbmZ1bmN0aW9uIGdldEFtcFBhdGgoYW1wUGF0aCwgYXNQYXRoKSB7XG4gICAgcmV0dXJuIGFtcFBhdGggfHwgYCR7YXNQYXRofSR7YXNQYXRoLmluY2x1ZGVzKFwiP1wiKSA/IFwiJlwiIDogXCI/XCJ9YW1wPTFgO1xufVxuZnVuY3Rpb24gZ2V0SGVhZEhUTUxQcm9wcyhwcm9wcykge1xuICAgIGNvbnN0IHsgY3Jvc3NPcmlnaW4gLCBub25jZSAsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgLy8gVGhpcyBhc3NpZ25tZW50IGlzIG5lY2Vzc2FyeSBmb3IgYWRkaXRpb25hbCB0eXBlIGNoZWNraW5nIHRvIGF2b2lkIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZXMgaW4gPGhlYWQ+XG4gICAgY29uc3QgaGVhZFByb3BzID0gcmVzdFByb3BzO1xuICAgIHJldHVybiBoZWFkUHJvcHM7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9kb2N1bWVudC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJIdG1sIiwiTWFpbiIsImRlZmF1bHQiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2dldFBhZ2VGaWxlcyIsIl91dGlscyIsIl9odG1sZXNjYXBlIiwiX3NjcmlwdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaXNFcnJvciIsIl9odG1sQ29udGV4dCIsIkRvY3VtZW50IiwiQ29tcG9uZW50IiwiZ2V0SW5pdGlhbFByb3BzIiwiY3R4IiwiZGVmYXVsdEdldEluaXRpYWxQcm9wcyIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJIZWFkIiwiTmV4dFNjcmlwdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiZ2V0RG9jdW1lbnRGaWxlcyIsImJ1aWxkTWFuaWZlc3QiLCJwYXRobmFtZSIsImluQW1wTW9kZSIsInNoYXJlZEZpbGVzIiwiZ2V0UGFnZUZpbGVzIiwicGFnZUZpbGVzIiwiYWxsRmlsZXMiLCJTZXQiLCJnZXRQb2x5ZmlsbFNjcmlwdHMiLCJjb250ZXh0IiwicHJvcHMiLCJhc3NldFByZWZpeCIsImRldk9ubHlDYWNoZUJ1c3RlclF1ZXJ5U3RyaW5nIiwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciLCJjcm9zc09yaWdpbiIsInBvbHlmaWxsRmlsZXMiLCJmaWx0ZXIiLCJwb2x5ZmlsbCIsImVuZHNXaXRoIiwibWFwIiwiZGVmZXIiLCJub25jZSIsIm5vTW9kdWxlIiwic3JjIiwiaGFzQ29tcG9uZW50UHJvcHMiLCJjaGlsZCIsImhhbmRsZURvY3VtZW50U2NyaXB0TG9hZGVySXRlbXMiLCJzY3JpcHRMb2FkZXIiLCJfX05FWFRfREFUQV9fIiwicmVmIiwicmVmMSIsInJlZjIiLCJyZWYzIiwiY2hpbGRyZW4iLCJzY3JpcHRMb2FkZXJJdGVtcyIsIkFycmF5IiwiaXNBcnJheSIsImhlYWRDaGlsZHJlbiIsImZpbmQiLCJ0eXBlIiwiYm9keUNoaWxkcmVuIiwiY29tYmluZWRDaGlsZHJlbiIsIkNoaWxkcmVuIiwiZm9yRWFjaCIsInN0cmF0ZWd5IiwiYmVmb3JlSW50ZXJhY3RpdmUiLCJjb25jYXQiLCJpbmNsdWRlcyIsInB1c2giLCJnZXRQcmVOZXh0V29ya2VyU2NyaXB0cyIsIm5leHRTY3JpcHRXb3JrZXJzIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUlVOVElNRSIsInBhcnR5dG93blNuaXBwZXQiLCJfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyIsInVzZXJEZWZpbmVkQ29uZmlnIiwicmVmNCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibGVuZ3RoIiwiRnJhZ21lbnQiLCJ3b3JrZXIiLCJmaWxlIiwiaW5kZXgiLCJzY3JpcHRDaGlsZHJlbiIsInNjcmlwdFByb3BzIiwic3JjUHJvcHMiLCJqb2luIiwiRXJyb3IiLCJhc3NpZ24iLCJlcnIiLCJjb2RlIiwiY29uc29sZSIsIndhcm4iLCJtZXNzYWdlIiwiZ2V0UHJlTmV4dFNjcmlwdHMiLCJ3ZWJXb3JrZXJTY3JpcHRzIiwiYmVmb3JlSW50ZXJhY3RpdmVTY3JpcHRzIiwic2NyaXB0IiwiX2RlZmVyIiwiZ2V0RHluYW1pY0NodW5rcyIsImZpbGVzIiwiZHluYW1pY0ltcG9ydHMiLCJpc0RldmVsb3BtZW50IiwiYXN5bmMiLCJlbmNvZGVVUkkiLCJnZXRTY3JpcHRzIiwibm9ybWFsU2NyaXB0cyIsImxvd1ByaW9yaXR5U2NyaXB0cyIsImxvd1ByaW9yaXR5RmlsZXMiLCJJbnRlcm5hbEZ1bmN0aW9uRG9jdW1lbnQiLCJORVhUX0JVSUxUSU5fRE9DVU1FTlQiLCJkb2NDb21wb25lbnRzUmVuZGVyZWQiLCJsb2NhbGUiLCJ1c2VDb250ZXh0IiwiSHRtbENvbnRleHQiLCJsYW5nIiwidW5kZWZpbmVkIiwiYW1wIiwiQW1wU3R5bGVzIiwic3R5bGVzIiwiY3VyU3R5bGVzIiwiaGFzU3R5bGVzIiwiZWwiLCJyZWY1Iiwic3R5bGUiLCJyZXBsYWNlIiwiY29udGV4dFR5cGUiLCJnZXRDc3NMaW5rcyIsIm9wdGltaXplQ3NzIiwib3B0aW1pemVGb250cyIsImNzc0ZpbGVzIiwiZiIsInVubWFuZ2VkRmlsZXMiLCJkeW5hbWljQ3NzRmlsZXMiLCJmcm9tIiwiZXhpc3RpbmciLCJjc3NMaW5rRWxlbWVudHMiLCJpc1NoYXJlZEZpbGUiLCJyZWwiLCJocmVmIiwiYXMiLCJpc1VubWFuYWdlZEZpbGUiLCJtYWtlU3R5bGVzaGVldEluZXJ0IiwiZ2V0UHJlbG9hZER5bmFtaWNDaHVua3MiLCJCb29sZWFuIiwiZ2V0UHJlbG9hZE1haW5MaW5rcyIsInByZWxvYWRGaWxlcyIsImdldEJlZm9yZUludGVyYWN0aXZlSW5saW5lU2NyaXB0cyIsImh0bWwiLCJpZCIsIl9fTkVYVF9DUk9TU19PUklHSU4iLCJub2RlIiwiYyIsInJlZjgiLCJyZWY2IiwiT1BUSU1JWkVEX0ZPTlRfUFJPVklERVJTIiwic29tZSIsInVybCIsInJlZjciLCJzdGFydHNXaXRoIiwibmV3UHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJhbXBQYXRoIiwiaHlicmlkQW1wIiwiY2Fub25pY2FsQmFzZSIsImRhbmdlcm91c0FzUGF0aCIsImhlYWRUYWdzIiwidW5zdGFibGVfcnVudGltZUpTIiwidW5zdGFibGVfSnNQcmVsb2FkIiwiZGlzYWJsZVJ1bnRpbWVKUyIsImRpc2FibGVKc1ByZWxvYWQiLCJoZWFkIiwiY3NzUHJlbG9hZHMiLCJvdGhlckhlYWRFbGVtZW50cyIsInRvQXJyYXkiLCJpc1JlYWN0SGVsbWV0IiwicmVmOSIsIm5hbWUiLCJoYXNBbXBodG1sUmVsIiwiaGFzQ2Fub25pY2FsUmVsIiwiYmFkUHJvcCIsImluZGV4T2YiLCJrZXlzIiwicHJvcCIsInBhZ2UiLCJfbm9uY2UiLCJfbm9uY2UxIiwiZ2V0SGVhZEhUTUxQcm9wcyIsImNvbnRlbnQiLCJjb3VudCIsInRvU3RyaW5nIiwiY2xlYW5BbXBQYXRoIiwiZ2V0QW1wUGF0aCIsImdldElubGluZVNjcmlwdFNvdXJjZSIsImxhcmdlUGFnZURhdGFCeXRlcyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiYnl0ZXMiLCJUZXh0RW5jb2RlciIsImVuY29kZSIsImJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJCdWZmZXIiLCJwcmV0dHlCeXRlcyIsImh0bWxFc2NhcGVKc29uU3RyaW5nIiwiYW1wRGV2RmlsZXMiLCJkZXZGaWxlcyIsImFzUGF0aCIsInJlc3RQcm9wcyIsImhlYWRQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/pages/_document.js\n");
|
|
56
|
-
|
|
57
|
-
/***/ }),
|
|
58
|
-
|
|
59
|
-
/***/ "./src/pages/_document.tsx":
|
|
60
|
-
/*!*********************************!*\
|
|
61
|
-
!*** ./src/pages/_document.tsx ***!
|
|
62
|
-
\*********************************/
|
|
63
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
64
|
-
|
|
65
|
-
"use strict";
|
|
66
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/document */ \"./node_modules/next/document.js\");\n/* harmony import */ var next_document__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_document__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass MyDocument extends (next_document__WEBPACK_IMPORTED_MODULE_1___default()) {\n static async getInitialProps(ctx) {\n const initialProps = await next_document__WEBPACK_IMPORTED_MODULE_1___default().getInitialProps(ctx);\n return initialProps;\n }\n render() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Html, {\n className: \"bg-gray-1 text-gray-12 font-sans\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Head, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"icon\",\n type: \"image/x-icon\",\n href: \"/static/images/favicon.ico\"\n }, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.Main, {}, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 29,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_document__WEBPACK_IMPORTED_MODULE_1__.NextScript, {}, void 0, false, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/zeno/Projects/react-email/packages/react-email/base/src/pages/_document.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this);\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyDocument);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvcGFnZXMvX2RvY3VtZW50LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBT3VCO0FBRXZCLE1BQU1LLFVBQVUsU0FBU0wsc0RBQVE7SUFDL0IsYUFBYU0sZUFBZSxDQUMxQkMsR0FBb0IsRUFDVztRQUMvQixNQUFNQyxZQUFZLEdBQUcsTUFBTVIsb0VBQXdCLENBQUNPLEdBQUcsQ0FBQztRQUN4RCxPQUFPQyxZQUFZLENBQUM7S0FDckI7SUFFREMsTUFBTSxHQUFHO1FBQ1AscUJBQ0UsOERBQUNQLCtDQUFJO1lBQUNRLFNBQVMsRUFBQyxrQ0FBa0M7OzhCQUNoRCw4REFBQ1QsK0NBQUk7OEJBQ0gsNEVBQUNVLE1BQUk7d0JBQ0hDLEdBQUcsRUFBQyxNQUFNO3dCQUNWQyxJQUFJLEVBQUMsY0FBYzt3QkFDbkJDLElBQUksRUFBQyw0QkFBNEI7Ozs7OzRCQUNqQzs7Ozs7d0JBQ0c7OEJBQ1AsOERBQUNDLE1BQUk7O3NDQUNILDhEQUFDWiwrQ0FBSTs7OztnQ0FBRztzQ0FDUiw4REFBQ0MscURBQVU7Ozs7Z0NBQUc7Ozs7Ozt3QkFDVDs7Ozs7O2dCQUNGLENBQ1A7S0FDSDtDQUNGO0FBRUQsaUVBQWVDLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9zcmMvcGFnZXMvX2RvY3VtZW50LnRzeD8xODhlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEb2N1bWVudCwge1xuICBEb2N1bWVudENvbnRleHQsXG4gIERvY3VtZW50SW5pdGlhbFByb3BzLFxuICBIZWFkLFxuICBIdG1sLFxuICBNYWluLFxuICBOZXh0U2NyaXB0LFxufSBmcm9tICduZXh0L2RvY3VtZW50JztcblxuY2xhc3MgTXlEb2N1bWVudCBleHRlbmRzIERvY3VtZW50IHtcbiAgc3RhdGljIGFzeW5jIGdldEluaXRpYWxQcm9wcyhcbiAgICBjdHg6IERvY3VtZW50Q29udGV4dCxcbiAgKTogUHJvbWlzZTxEb2N1bWVudEluaXRpYWxQcm9wcz4ge1xuICAgIGNvbnN0IGluaXRpYWxQcm9wcyA9IGF3YWl0IERvY3VtZW50LmdldEluaXRpYWxQcm9wcyhjdHgpO1xuICAgIHJldHVybiBpbml0aWFsUHJvcHM7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxIdG1sIGNsYXNzTmFtZT1cImJnLWdyYXktMSB0ZXh0LWdyYXktMTIgZm9udC1zYW5zXCI+XG4gICAgICAgIDxIZWFkPlxuICAgICAgICAgIDxsaW5rXG4gICAgICAgICAgICByZWw9XCJpY29uXCJcbiAgICAgICAgICAgIHR5cGU9XCJpbWFnZS94LWljb25cIlxuICAgICAgICAgICAgaHJlZj1cIi9zdGF0aWMvaW1hZ2VzL2Zhdmljb24uaWNvXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L0hlYWQ+XG4gICAgICAgIDxib2R5PlxuICAgICAgICAgIDxNYWluIC8+XG4gICAgICAgICAgPE5leHRTY3JpcHQgLz5cbiAgICAgICAgPC9ib2R5PlxuICAgICAgPC9IdG1sPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlEb2N1bWVudDtcbiJdLCJuYW1lcyI6WyJEb2N1bWVudCIsIkhlYWQiLCJIdG1sIiwiTWFpbiIsIk5leHRTY3JpcHQiLCJNeURvY3VtZW50IiwiZ2V0SW5pdGlhbFByb3BzIiwiY3R4IiwiaW5pdGlhbFByb3BzIiwicmVuZGVyIiwiY2xhc3NOYW1lIiwibGluayIsInJlbCIsInR5cGUiLCJocmVmIiwiYm9keSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/pages/_document.tsx\n");
|
|
67
|
-
|
|
68
|
-
/***/ }),
|
|
69
|
-
|
|
70
|
-
/***/ "./node_modules/next/dist/lib/is-error.js":
|
|
71
|
-
/*!************************************************!*\
|
|
72
|
-
!*** ./node_modules/next/dist/lib/is-error.js ***!
|
|
73
|
-
\************************************************/
|
|
74
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
75
|
-
|
|
76
|
-
"use strict";
|
|
77
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = isError;\nexports.getProperError = getProperError;\nvar _isPlainObject = __webpack_require__(/*! ../shared/lib/is-plain-object */ \"../shared/lib/is-plain-object\");\nfunction isError(err) {\n return typeof err === \"object\" && err !== null && \"name\" in err && \"message\" in err;\n}\nfunction getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (true) {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === \"undefined\") {\n return new Error(\"An undefined error was thrown, \" + \"see here for more info: https://nextjs.org/docs/messages/threw-undefined\");\n }\n if (err === null) {\n return new Error(\"A null error was thrown, \" + \"see here for more info: https://nextjs.org/docs/messages/threw-undefined\");\n }\n }\n return new Error((0, _isPlainObject).isPlainObject(err) ? JSON.stringify(err) : err + \"\");\n}\n\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLGtCQUFlO0FBQ2Ysc0JBQXNCO0FBQ3RCLHFCQUFxQixtQkFBTyxDQUFDLG9FQUErQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBc0M7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL3ByZXZpZXcvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9pcy1lcnJvci5qcz8xNzhlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNFcnJvcjtcbmV4cG9ydHMuZ2V0UHJvcGVyRXJyb3IgPSBnZXRQcm9wZXJFcnJvcjtcbnZhciBfaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2lzLXBsYWluLW9iamVjdFwiKTtcbmZ1bmN0aW9uIGlzRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnIgPT09IFwib2JqZWN0XCIgJiYgZXJyICE9PSBudWxsICYmIFwibmFtZVwiIGluIGVyciAmJiBcIm1lc3NhZ2VcIiBpbiBlcnI7XG59XG5mdW5jdGlvbiBnZXRQcm9wZXJFcnJvcihlcnIpIHtcbiAgICBpZiAoaXNFcnJvcihlcnIpKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgIC8vIHByb3ZpZGUgYmV0dGVyIGVycm9yIGZvciBjYXNlIHdoZXJlIGB0aHJvdyB1bmRlZmluZWRgXG4gICAgICAgIC8vIGlzIGNhbGxlZCBpbiBkZXZlbG9wbWVudFxuICAgICAgICBpZiAodHlwZW9mIGVyciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIkFuIHVuZGVmaW5lZCBlcnJvciB3YXMgdGhyb3duLCBcIiArIFwic2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdGhyZXctdW5kZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXCJBIG51bGwgZXJyb3Igd2FzIHRocm93biwgXCIgKyBcInNlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3RocmV3LXVuZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEVycm9yKCgwLCBfaXNQbGFpbk9iamVjdCkuaXNQbGFpbk9iamVjdChlcnIpID8gSlNPTi5zdHJpbmdpZnkoZXJyKSA6IGVyciArIFwiXCIpO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1lcnJvci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/lib/is-error.js\n");
|
|
78
|
-
|
|
79
|
-
/***/ }),
|
|
80
|
-
|
|
81
|
-
/***/ "./node_modules/next/dist/lib/pretty-bytes.js":
|
|
82
|
-
/*!****************************************************!*\
|
|
83
|
-
!*** ./node_modules/next/dist/lib/pretty-bytes.js ***!
|
|
84
|
-
\****************************************************/
|
|
85
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
86
|
-
|
|
87
|
-
"use strict";
|
|
88
|
-
eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports[\"default\"] = prettyBytes;\nfunction prettyBytes(number, options) {\n if (!Number.isFinite(number)) {\n throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n }\n options = Object.assign({}, options);\n if (options.signed && number === 0) {\n return \" 0 B\";\n }\n const isNegative = number < 0;\n const prefix = isNegative ? \"-\" : options.signed ? \"+\" : \"\";\n if (isNegative) {\n number = -number;\n }\n if (number < 1) {\n const numberString = toLocaleString(number, options.locale);\n return prefix + numberString + \" B\";\n }\n const exponent = Math.min(Math.floor(Math.log10(number) / 3), UNITS.length - 1);\n number = Number((number / Math.pow(1000, exponent)).toPrecision(3));\n const numberString = toLocaleString(number, options.locale);\n const unit = UNITS[exponent];\n return prefix + numberString + \" \" + unit;\n}\n/*\nMIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/ const UNITS = [\n \"B\",\n \"kB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"PB\",\n \"EB\",\n \"ZB\",\n \"YB\"\n];\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/ const toLocaleString = (number, locale)=>{\n let result = number;\n if (typeof locale === \"string\") {\n result = number.toLocaleString(locale);\n } else if (locale === true) {\n result = number.toLocaleString();\n }\n return result;\n};\n\n//# sourceMappingURL=pretty-bytes.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2xpYi9wcmV0dHktYnl0ZXMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixrQkFBZTtBQUNmO0FBQ0E7QUFDQSw2REFBNkQsY0FBYyxJQUFJLE9BQU87QUFDdEY7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmV2aWV3Ly4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvcHJldHR5LWJ5dGVzLmpzP2ZmMzAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBwcmV0dHlCeXRlcztcbmZ1bmN0aW9uIHByZXR0eUJ5dGVzKG51bWJlciwgb3B0aW9ucykge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG51bWJlcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBmaW5pdGUgbnVtYmVyLCBnb3QgJHt0eXBlb2YgbnVtYmVyfTogJHtudW1iZXJ9YCk7XG4gICAgfVxuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5zaWduZWQgJiYgbnVtYmVyID09PSAwKSB7XG4gICAgICAgIHJldHVybiBcIiAwIEJcIjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IG51bWJlciA8IDA7XG4gICAgY29uc3QgcHJlZml4ID0gaXNOZWdhdGl2ZSA/IFwiLVwiIDogb3B0aW9ucy5zaWduZWQgPyBcIitcIiA6IFwiXCI7XG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDEpIHtcbiAgICAgICAgY29uc3QgbnVtYmVyU3RyaW5nID0gdG9Mb2NhbGVTdHJpbmcobnVtYmVyLCBvcHRpb25zLmxvY2FsZSk7XG4gICAgICAgIHJldHVybiBwcmVmaXggKyBudW1iZXJTdHJpbmcgKyBcIiBCXCI7XG4gICAgfVxuICAgIGNvbnN0IGV4cG9uZW50ID0gTWF0aC5taW4oTWF0aC5mbG9vcihNYXRoLmxvZzEwKG51bWJlcikgLyAzKSwgVU5JVFMubGVuZ3RoIC0gMSk7XG4gICAgbnVtYmVyID0gTnVtYmVyKChudW1iZXIgLyBNYXRoLnBvdygxMDAwLCBleHBvbmVudCkpLnRvUHJlY2lzaW9uKDMpKTtcbiAgICBjb25zdCBudW1iZXJTdHJpbmcgPSB0b0xvY2FsZVN0cmluZyhudW1iZXIsIG9wdGlvbnMubG9jYWxlKTtcbiAgICBjb25zdCB1bml0ID0gVU5JVFNbZXhwb25lbnRdO1xuICAgIHJldHVybiBwcmVmaXggKyBudW1iZXJTdHJpbmcgKyBcIiBcIiArIHVuaXQ7XG59XG4vKlxuTUlUIExpY2Vuc2VcblxuQ29weXJpZ2h0IChjKSBTaW5kcmUgU29yaHVzIDxzaW5kcmVzb3JodXNAZ21haWwuY29tPiAoc2luZHJlc29yaHVzLmNvbSlcblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuKi8gY29uc3QgVU5JVFMgPSBbXG4gICAgXCJCXCIsXG4gICAgXCJrQlwiLFxuICAgIFwiTUJcIixcbiAgICBcIkdCXCIsXG4gICAgXCJUQlwiLFxuICAgIFwiUEJcIixcbiAgICBcIkVCXCIsXG4gICAgXCJaQlwiLFxuICAgIFwiWUJcIlxuXTtcbi8qXG5Gb3JtYXRzIHRoZSBnaXZlbiBudW1iZXIgdXNpbmcgYE51bWJlciN0b0xvY2FsZVN0cmluZ2AuXG4tIElmIGxvY2FsZSBpcyBhIHN0cmluZywgdGhlIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIGEgbG9jYWxlLWtleSAoZm9yIGV4YW1wbGU6IGBkZWApLlxuLSBJZiBsb2NhbGUgaXMgdHJ1ZSwgdGhlIHN5c3RlbSBkZWZhdWx0IGxvY2FsZSBpcyB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbi0gSWYgbm8gdmFsdWUgZm9yIGxvY2FsZSBpcyBzcGVjaWZpZWQsIHRoZSBudW1iZXIgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC5cbiovIGNvbnN0IHRvTG9jYWxlU3RyaW5nID0gKG51bWJlciwgbG9jYWxlKT0+e1xuICAgIGxldCByZXN1bHQgPSBudW1iZXI7XG4gICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmVzdWx0ID0gbnVtYmVyLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSk7XG4gICAgfSBlbHNlIGlmIChsb2NhbGUgPT09IHRydWUpIHtcbiAgICAgICAgcmVzdWx0ID0gbnVtYmVyLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmV0dHktYnl0ZXMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/lib/pretty-bytes.js\n");
|
|
89
|
-
|
|
90
|
-
/***/ }),
|
|
91
|
-
|
|
92
|
-
/***/ "./node_modules/next/document.js":
|
|
93
|
-
/*!***************************************!*\
|
|
94
|
-
!*** ./node_modules/next/document.js ***!
|
|
95
|
-
\***************************************/
|
|
96
|
-
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
97
|
-
|
|
98
|
-
eval("module.exports = __webpack_require__(/*! ./dist/pages/_document */ \"./node_modules/next/dist/pages/_document.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kb2N1bWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxpSEFBa0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmV2aWV3Ly4vbm9kZV9tb2R1bGVzL25leHQvZG9jdW1lbnQuanM/OWExNCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGlzdC9wYWdlcy9fZG9jdW1lbnQnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/document.js\n");
|
|
99
|
-
|
|
100
|
-
/***/ }),
|
|
101
|
-
|
|
102
|
-
/***/ "../server/get-page-files":
|
|
103
|
-
/*!*****************************************************!*\
|
|
104
|
-
!*** external "next/dist/server/get-page-files.js" ***!
|
|
105
|
-
\*****************************************************/
|
|
106
|
-
/***/ ((module) => {
|
|
107
|
-
|
|
108
|
-
"use strict";
|
|
109
|
-
module.exports = require("next/dist/server/get-page-files.js");
|
|
110
|
-
|
|
111
|
-
/***/ }),
|
|
112
|
-
|
|
113
|
-
/***/ "../server/htmlescape":
|
|
114
|
-
/*!*************************************************!*\
|
|
115
|
-
!*** external "next/dist/server/htmlescape.js" ***!
|
|
116
|
-
\*************************************************/
|
|
117
|
-
/***/ ((module) => {
|
|
118
|
-
|
|
119
|
-
"use strict";
|
|
120
|
-
module.exports = require("next/dist/server/htmlescape.js");
|
|
121
|
-
|
|
122
|
-
/***/ }),
|
|
123
|
-
|
|
124
|
-
/***/ "../server/utils":
|
|
125
|
-
/*!********************************************!*\
|
|
126
|
-
!*** external "next/dist/server/utils.js" ***!
|
|
127
|
-
\********************************************/
|
|
128
|
-
/***/ ((module) => {
|
|
129
|
-
|
|
130
|
-
"use strict";
|
|
131
|
-
module.exports = require("next/dist/server/utils.js");
|
|
132
|
-
|
|
133
|
-
/***/ }),
|
|
134
|
-
|
|
135
|
-
/***/ "../shared/lib/constants":
|
|
136
|
-
/*!****************************************************!*\
|
|
137
|
-
!*** external "next/dist/shared/lib/constants.js" ***!
|
|
138
|
-
\****************************************************/
|
|
139
|
-
/***/ ((module) => {
|
|
140
|
-
|
|
141
|
-
"use strict";
|
|
142
|
-
module.exports = require("next/dist/shared/lib/constants.js");
|
|
143
|
-
|
|
144
|
-
/***/ }),
|
|
145
|
-
|
|
146
|
-
/***/ "../shared/lib/head-manager-context":
|
|
147
|
-
/*!***************************************************************!*\
|
|
148
|
-
!*** external "next/dist/shared/lib/head-manager-context.js" ***!
|
|
149
|
-
\***************************************************************/
|
|
150
|
-
/***/ ((module) => {
|
|
151
|
-
|
|
152
|
-
"use strict";
|
|
153
|
-
module.exports = require("next/dist/shared/lib/head-manager-context.js");
|
|
154
|
-
|
|
155
|
-
/***/ }),
|
|
156
|
-
|
|
157
|
-
/***/ "../shared/lib/html-context":
|
|
158
|
-
/*!*******************************************************!*\
|
|
159
|
-
!*** external "next/dist/shared/lib/html-context.js" ***!
|
|
160
|
-
\*******************************************************/
|
|
161
|
-
/***/ ((module) => {
|
|
162
|
-
|
|
163
|
-
"use strict";
|
|
164
|
-
module.exports = require("next/dist/shared/lib/html-context.js");
|
|
165
|
-
|
|
166
|
-
/***/ }),
|
|
167
|
-
|
|
168
|
-
/***/ "../shared/lib/is-plain-object":
|
|
169
|
-
/*!**********************************************************!*\
|
|
170
|
-
!*** external "next/dist/shared/lib/is-plain-object.js" ***!
|
|
171
|
-
\**********************************************************/
|
|
172
|
-
/***/ ((module) => {
|
|
173
|
-
|
|
174
|
-
"use strict";
|
|
175
|
-
module.exports = require("next/dist/shared/lib/is-plain-object.js");
|
|
176
|
-
|
|
177
|
-
/***/ }),
|
|
178
|
-
|
|
179
|
-
/***/ "react":
|
|
180
|
-
/*!************************!*\
|
|
181
|
-
!*** external "react" ***!
|
|
182
|
-
\************************/
|
|
183
|
-
/***/ ((module) => {
|
|
184
|
-
|
|
185
|
-
"use strict";
|
|
186
|
-
module.exports = require("react");
|
|
187
|
-
|
|
188
|
-
/***/ }),
|
|
189
|
-
|
|
190
|
-
/***/ "react/jsx-dev-runtime":
|
|
191
|
-
/*!****************************************!*\
|
|
192
|
-
!*** external "react/jsx-dev-runtime" ***!
|
|
193
|
-
\****************************************/
|
|
194
|
-
/***/ ((module) => {
|
|
195
|
-
|
|
196
|
-
"use strict";
|
|
197
|
-
module.exports = require("react/jsx-dev-runtime");
|
|
198
|
-
|
|
199
|
-
/***/ })
|
|
200
|
-
|
|
201
|
-
};
|
|
202
|
-
;
|
|
203
|
-
|
|
204
|
-
// load runtime
|
|
205
|
-
var __webpack_require__ = require("../webpack-runtime.js");
|
|
206
|
-
__webpack_require__.C(exports);
|
|
207
|
-
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
|
208
|
-
var __webpack_exports__ = (__webpack_exec__("./src/pages/_document.tsx"));
|
|
209
|
-
module.exports = __webpack_exports__;
|
|
210
|
-
|
|
211
|
-
})();
|