/* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["main"],{ /***/ "./node_modules/next/dist/build/deployment-id.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/build/deployment-id.js ***! \*******************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getDeploymentIdQueryOrEmptyString\", ({\n enumerable: true,\n get: function() {\n return getDeploymentIdQueryOrEmptyString;\n }\n}));\nfunction getDeploymentIdQueryOrEmptyString() {\n if (false) {}\n return \"\";\n}\n\n//# sourceMappingURL=deployment-id.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL2RlcGxveW1lbnQtaWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixxRUFBb0U7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBLFFBQVEsS0FBOEIsRUFBRSxFQUVuQztBQUNMO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9kZXBsb3ltZW50LWlkLmpzP2FhZDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmdcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZztcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZygpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gICAgICAgIHJldHVybiBgP2RwbD0ke3Byb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRH1gO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVwbG95bWVudC1pZC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/deployment-id.js\n")); /***/ }), /***/ "./node_modules/next/dist/build/polyfills/polyfill-module.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/build/polyfills/polyfill-module.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { eval(__webpack_require__.ts("\"trimStart\"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),\"trimEnd\"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),\"description\"in Symbol.prototype||Object.defineProperty(Symbol.prototype,\"description\",{configurable:!0,get:function(){var t=/\\((.*)\\)/.exec(this.toString());return t?t[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(t,r){return r=this.concat.apply([],this),t>1&&r.some(Array.isArray)?r.flat(t-1):r},Array.prototype.flatMap=function(t,r){return this.map(t,r).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(t){if(\"function\"!=typeof t)return this.then(t,t);var r=this.constructor||Promise;return this.then(function(n){return r.resolve(t()).then(function(){return n})},function(n){return r.resolve(t()).then(function(){throw n})})}),Object.fromEntries||(Object.fromEntries=function(t){return Array.from(t).reduce(function(t,r){return t[r[0]]=r[1],t},{})}),Array.prototype.at||(Array.prototype.at=function(t){var r=Math.trunc(t)||0;if(r<0&&(r+=this.length),!(r<0||r>=this.length))return this[r]});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wb2x5ZmlsbC1tb2R1bGUuanMiLCJtYXBwaW5ncyI6IkFBQUEsbVFBQW1RLCtCQUErQix1Q0FBdUMsc0JBQXNCLDREQUE0RCw2RUFBNkUsdUNBQXVDLDRCQUE0QixvRUFBb0UsOENBQThDLGdDQUFnQyw2QkFBNkIsc0NBQXNDLFNBQVMsRUFBRSxhQUFhLHNDQUFzQyxRQUFRLEVBQUUsRUFBRSxzREFBc0QsMENBQTBDLHNCQUFzQixHQUFHLEVBQUUsc0RBQXNELHVCQUF1QiwrREFBK0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlLmpzPzY5YzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ0cmltU3RhcnRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1TdGFydD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0KSxcInRyaW1FbmRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1FbmQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpLFwiZGVzY3JpcHRpb25cImluIFN5bWJvbC5wcm90b3R5cGV8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTeW1ib2wucHJvdG90eXBlLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PS9cXCgoLiopXFwpLy5leGVjKHRoaXMudG9TdHJpbmcoKSk7cmV0dXJuIHQ/dFsxXTp2b2lkIDB9fSksQXJyYXkucHJvdG90eXBlLmZsYXR8fChBcnJheS5wcm90b3R5cGUuZmxhdD1mdW5jdGlvbih0LHIpe3JldHVybiByPXRoaXMuY29uY2F0LmFwcGx5KFtdLHRoaXMpLHQ+MSYmci5zb21lKEFycmF5LmlzQXJyYXkpP3IuZmxhdCh0LTEpOnJ9LEFycmF5LnByb3RvdHlwZS5mbGF0TWFwPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMubWFwKHQscikuZmxhdCgpfSksUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseXx8KFByb21pc2UucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdClyZXR1cm4gdGhpcy50aGVuKHQsdCk7dmFyIHI9dGhpcy5jb25zdHJ1Y3Rvcnx8UHJvbWlzZTtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiByLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sZnVuY3Rpb24obil7cmV0dXJuIHIucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBufSl9KX0pLE9iamVjdC5mcm9tRW50cmllc3x8KE9iamVjdC5mcm9tRW50cmllcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuZnJvbSh0KS5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyWzBdXT1yWzFdLHR9LHt9KX0pLEFycmF5LnByb3RvdHlwZS5hdHx8KEFycmF5LnByb3RvdHlwZS5hdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoLnRydW5jKHQpfHwwO2lmKHI8MCYmKHIrPXRoaXMubGVuZ3RoKSwhKHI8MHx8cj49dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzW3JdfSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/polyfills/polyfill-module.js\n")); /***/ }), /***/ "./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js": /*!********************************************************************************!*\ !*** ./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js ***! \********************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){\"use strict\";var e={3540:function(e){\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\nvar t=Object.getOwnPropertySymbols;var r=Object.prototype.hasOwnProperty;var n=Object.prototype.propertyIsEnumerable;function toObject(e){if(e===null||e===undefined){throw new TypeError(\"Object.assign cannot be called with null or undefined\")}return Object(e)}function shouldUseNative(){try{if(!Object.assign){return false}var e=new String(\"abc\");e[5]=\"de\";if(Object.getOwnPropertyNames(e)[0]===\"5\"){return false}var t={};for(var r=0;r<10;r++){t[\"_\"+String.fromCharCode(r)]=r}var n=Object.getOwnPropertyNames(t).map((function(e){return t[e]}));if(n.join(\"\")!==\"0123456789\"){return false}var o={};\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){o[e]=e}));if(Object.keys(Object.assign({},o)).join(\"\")!==\"abcdefghijklmnopqrst\"){return false}return true}catch(e){return false}}e.exports=shouldUseNative()?Object.assign:function(e,o){var a;var i=toObject(e);var s;for(var l=1;l1?t-1:0),n=1;n=1&&u>=0&&i[l]!==s[u]){u--}for(;l>=1&&u>=0;l--,u--){if(i[l]!==s[u]){if(l!==1||u!==1){do{l--;u--;if(u<0||i[l]!==s[u]){var c=\"\\n\"+i[l].replace(\" at new \",\" at \");{if(typeof e===\"function\"){B.set(e,c)}}return c}}while(l>=1&&u>=0)}break}}}}finally{L=false;{A.current=a;reenableLogs()}Error.prepareStackTrace=o}var d=e?e.displayName||e.name:\"\";var f=d?describeBuiltInComponentFrame(d):\"\";{if(typeof e===\"function\"){B.set(e,f)}}return f}function describeFunctionComponentFrame(e,t,r){{return describeNativeComponentFrame(e,false)}}function shouldConstruct(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function describeUnknownElementTypeFrameInDEV(e,t,r){if(e==null){return\"\"}if(typeof e===\"function\"){{return describeNativeComponentFrame(e,shouldConstruct(e))}}if(typeof e===\"string\"){return describeBuiltInComponentFrame(e)}switch(e){case d:return describeBuiltInComponentFrame(\"Suspense\");case f:return describeBuiltInComponentFrame(\"SuspenseList\")}if(typeof e===\"object\"){switch(e.$$typeof){case c:return describeFunctionComponentFrame(e.render);case p:return describeUnknownElementTypeFrameInDEV(e.type,t,r);case v:return describeFunctionComponentFrame(e._render);case m:{var n=e;var o=n._payload;var a=n._init;try{return describeUnknownElementTypeFrameInDEV(a(o),t,r)}catch(e){}}}}return\"\"}var z={};var W=k.ReactDebugCurrentFrame;function setCurrentlyValidatingElement(e){{if(e){var t=e._owner;var r=describeUnknownElementTypeFrameInDEV(e.type,e._source,t?t.type:null);W.setExtraStackFrame(r)}else{W.setExtraStackFrame(null)}}}function checkPropTypes(e,t,r,n,o){{var a=Function.call.bind(Object.prototype.hasOwnProperty);for(var i in e){if(a(e,i)){var s=void 0;try{if(typeof e[i]!==\"function\"){var l=Error((n||\"React class\")+\": \"+r+\" type `\"+i+\"` is invalid; \"+\"it must be a function, usually from the `prop-types` package, but received `\"+typeof e[i]+\"`.\"+\"This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");l.name=\"Invariant Violation\";throw l}s=e[i](t,i,n,r,null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(e){s=e}if(s&&!(s instanceof Error)){setCurrentlyValidatingElement(o);error(\"%s: type specification of %s\"+\" `%s` is invalid; the type checker \"+\"function must return `null` or an `Error` but returned a %s. \"+\"You may have forgotten to pass an argument to the type checker \"+\"creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and \"+\"shape all require an argument).\",n||\"React class\",r,i,typeof s);setCurrentlyValidatingElement(null)}if(s instanceof Error&&!(s.message in z)){z[s.message]=true;setCurrentlyValidatingElement(o);error(\"Failed %s type: %s\",r,s.message);setCurrentlyValidatingElement(null)}}}}}var V=k.ReactCurrentOwner;var $=Object.prototype.hasOwnProperty;var U={key:true,ref:true,__self:true,__source:true};var K;var G;var Z;{Z={}}function hasValidRef(e){{if($.call(e,\"ref\")){var t=Object.getOwnPropertyDescriptor(e,\"ref\").get;if(t&&t.isReactWarning){return false}}}return e.ref!==undefined}function hasValidKey(e){{if($.call(e,\"key\")){var t=Object.getOwnPropertyDescriptor(e,\"key\").get;if(t&&t.isReactWarning){return false}}}return e.key!==undefined}function warnIfStringRefCannotBeAutoConverted(e,t){{if(typeof e.ref===\"string\"&&V.current&&t&&V.current.stateNode!==t){var r=getComponentName(V.current.type);if(!Z[r]){error('Component \"%s\" contains the string ref \"%s\". '+\"Support for string refs will be removed in a future major release. \"+\"This case cannot be automatically converted to an arrow function. \"+\"We ask you to manually fix this case by using useRef() or createRef() instead. \"+\"Learn more about using refs safely here: \"+\"https://reactjs.org/link/strict-mode-string-ref\",getComponentName(V.current.type),e.ref);Z[r]=true}}}}function defineKeyPropWarningGetter(e,t){{var warnAboutAccessingKey=function(){if(!K){K=true;error(\"%s: `key` is not a prop. Trying to access it will result \"+\"in `undefined` being returned. If you need to access the same \"+\"value within the child component, you should pass it as a different \"+\"prop. (https://reactjs.org/link/special-props)\",t)}};warnAboutAccessingKey.isReactWarning=true;Object.defineProperty(e,\"key\",{get:warnAboutAccessingKey,configurable:true})}}function defineRefPropWarningGetter(e,t){{var warnAboutAccessingRef=function(){if(!G){G=true;error(\"%s: `ref` is not a prop. Trying to access it will result \"+\"in `undefined` being returned. If you need to access the same \"+\"value within the child component, you should pass it as a different \"+\"prop. (https://reactjs.org/link/special-props)\",t)}};warnAboutAccessingRef.isReactWarning=true;Object.defineProperty(e,\"ref\",{get:warnAboutAccessingRef,configurable:true})}}var ReactElement=function(e,t,r,n,a,i,s){var l={$$typeof:o,type:e,key:t,ref:r,props:s,_owner:i};{l._store={};Object.defineProperty(l._store,\"validated\",{configurable:false,enumerable:false,writable:true,value:false});Object.defineProperty(l,\"_self\",{configurable:false,enumerable:false,writable:false,value:n});Object.defineProperty(l,\"_source\",{configurable:false,enumerable:false,writable:false,value:a});if(Object.freeze){Object.freeze(l.props);Object.freeze(l)}}return l};function jsxDEV(e,t,r,n,o){{var a;var i={};var s=null;var l=null;if(r!==undefined){s=\"\"+r}if(hasValidKey(t)){s=\"\"+t.key}if(hasValidRef(t)){l=t.ref;warnIfStringRefCannotBeAutoConverted(t,o)}for(a in t){if($.call(t,a)&&!U.hasOwnProperty(a)){i[a]=t[a]}}if(e&&e.defaultProps){var u=e.defaultProps;for(a in u){if(i[a]===undefined){i[a]=u[a]}}}if(s||l){var c=typeof e===\"function\"?e.displayName||e.name||\"Unknown\":e;if(s){defineKeyPropWarningGetter(i,c)}if(l){defineRefPropWarningGetter(i,c)}}return ReactElement(e,s,l,o,n,V.current,i)}}var Y=k.ReactCurrentOwner;var J=k.ReactDebugCurrentFrame;function setCurrentlyValidatingElement$1(e){{if(e){var t=e._owner;var r=describeUnknownElementTypeFrameInDEV(e.type,e._source,t?t.type:null);J.setExtraStackFrame(r)}else{J.setExtraStackFrame(null)}}}var X;{X=false}function isValidElement(e){{return typeof e===\"object\"&&e!==null&&e.$$typeof===o}}function getDeclarationErrorAddendum(){{if(Y.current){var e=getComponentName(Y.current.type);if(e){return\"\\n\\nCheck the render method of `\"+e+\"`.\"}}return\"\"}}function getSourceInfoErrorAddendum(e){{if(e!==undefined){var t=e.fileName.replace(/^.*[\\\\\\/]/,\"\");var r=e.lineNumber;return\"\\n\\nCheck your code at \"+t+\":\"+r+\".\"}return\"\"}}var Q={};function getCurrentComponentErrorInfo(e){{var t=getDeclarationErrorAddendum();if(!t){var r=typeof e===\"string\"?e:e.displayName||e.name;if(r){t=\"\\n\\nCheck the top-level render call using <\"+r+\">.\"}}return t}}function validateExplicitKey(e,t){{if(!e._store||e._store.validated||e.key!=null){return}e._store.validated=true;var r=getCurrentComponentErrorInfo(t);if(Q[r]){return}Q[r]=true;var n=\"\";if(e&&e._owner&&e._owner!==Y.current){n=\" It was passed a child from \"+getComponentName(e._owner.type)+\".\"}setCurrentlyValidatingElement$1(e);error('Each child in a list should have a unique \"key\" prop.'+\"%s%s See https://reactjs.org/link/warning-keys for more information.\",r,n);setCurrentlyValidatingElement$1(null)}}function validateChildKeys(e,t){{if(typeof e!==\"object\"){return}if(Array.isArray(e)){for(var r=0;r\";u=\" Did you accidentally export a JSX literal instead of a component?\"}else{d=typeof e}error(\"React.jsx: type is invalid -- expected a string (for \"+\"built-in components) or a class/function (for composite \"+\"components) but got: %s.%s\",d,u)}var f=jsxDEV(e,r,n,i,s);if(f==null){return f}if(l){var p=r.children;if(p!==undefined){if(a){if(Array.isArray(p)){for(var m=0;m in <%s>.%s\",'Warning: Expected server HTML to contain a matching text node for \"%s\" in <%s>.%s',\"Warning: Did not expect server HTML to contain a <%s> in <%s>.%s\",'Warning: Did not expect server HTML to contain the text node \"%s\" in <%s>.%s']);function patchConsoleError(){const e=console.error;console.error=function(t,a,i,s){if(o.has(t)){r=t.replace(\"%s\",a).replace(\"%s\",i).replace(\"%s\",\"\");n=s}e.apply(console,arguments)}}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}},4659:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});Object.defineProperty(t,\"parseComponentStack\",{enumerable:true,get:function(){return parseComponentStack}});var r;(function(e){e[\"FILE\"]=\"file\";e[\"WEBPACK_INTERNAL\"]=\"webpack-internal\";e[\"HTTP\"]=\"http\";e[\"PROTOCOL_RELATIVE\"]=\"protocol-relative\";e[\"UNKNOWN\"]=\"unknown\"})(r||(r={}));function getLocationType(e){if(e.startsWith(\"file://\")){return\"file\"}if(e.startsWith(\"webpack-internal://\")){return\"webpack-internal\"}if(e.startsWith(\"http://\")||e.startsWith(\"https://\")){return\"http\"}if(e.startsWith(\"//\")){return\"protocol-relative\"}return\"unknown\"}function parseStackFrameLocation(e){const t=getLocationType(e);const r=e==null?void 0:e.replace(/^(webpack-internal:\\/\\/\\/|file:\\/\\/)(\\(.*\\)\\/)?/,\"\");var n;const[,o,a,i]=(n=r==null?void 0:r.match(/^(.+):(\\d+):(\\d+)/))!=null?n:[];switch(t){case\"file\":case\"webpack-internal\":return{canOpenInEditor:true,file:o,lineNumber:a?Number(a):undefined,column:i?Number(i):undefined};case\"http\":case\"protocol-relative\":case\"unknown\":default:{return{canOpenInEditor:false}}}}function parseComponentStack(e){const t=[];for(const r of e.trim().split(\"\\n\")){const e=/at ([^ ]+)( \\((.*)\\))?/.exec(r);if(e==null?void 0:e[1]){const r=e[1];const n=e[3];if(!n){t.push({canOpenInEditor:false,component:r});continue}if(n==null?void 0:n.includes(\"next/dist\")){break}const o=parseStackFrameLocation(n);t.push({component:r,...o})}}return t}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}},5204:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.onRefresh=t.onBeforeRefresh=t.unregister=t.register=t.onBuildError=t.onBuildOk=t.ReactDevOverlay=t.getServerError=t.getErrorByType=void 0;const s=a(r(5851));const l=r(636);const u=r(4659);const c=r(3876);(0,c.patchConsoleError)();let d=false;let f=undefined;function onUnhandledError(e){const t=e?.error;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}if(t.message.match(/(hydration|content does not match|did not match)/i)){if(c.hydrationErrorWarning){t.message+=\"\\n\\n\"+c.hydrationErrorWarning}t.message+=`\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error`}const r=t;const n=typeof c.hydrationErrorComponentStack===\"string\"?(0,u.parseComponentStack)(c.hydrationErrorComponentStack).map((e=>e.component)):undefined;s.emit({type:s.TYPE_UNHANDLED_ERROR,reason:t,frames:(0,l.parseStack)(r.stack),componentStack:n})}function onUnhandledRejection(e){const t=e?.reason;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}const r=t;s.emit({type:s.TYPE_UNHANDLED_REJECTION,reason:t,frames:(0,l.parseStack)(r.stack)})}function register(){if(d){return}d=true;try{const e=Error.stackTraceLimit;Error.stackTraceLimit=50;f=e}catch{}window.addEventListener(\"error\",onUnhandledError);window.addEventListener(\"unhandledrejection\",onUnhandledRejection)}t.register=register;function unregister(){if(!d){return}d=false;if(f!==undefined){try{Error.stackTraceLimit=f}catch{}f=undefined}window.removeEventListener(\"error\",onUnhandledError);window.removeEventListener(\"unhandledrejection\",onUnhandledRejection)}t.unregister=unregister;function onBuildOk(){s.emit({type:s.TYPE_BUILD_OK})}t.onBuildOk=onBuildOk;function onBuildError(e){s.emit({type:s.TYPE_BUILD_ERROR,message:e})}t.onBuildError=onBuildError;function onRefresh(){s.emit({type:s.TYPE_REFRESH})}t.onRefresh=onRefresh;function onBeforeRefresh(){s.emit({type:s.TYPE_BEFORE_REFRESH})}t.onBeforeRefresh=onBeforeRefresh;var p=r(403);Object.defineProperty(t,\"getErrorByType\",{enumerable:true,get:function(){return p.getErrorByType}});var m=r(5233);Object.defineProperty(t,\"getServerError\",{enumerable:true,get:function(){return m.getServerError}});var v=r(5222);Object.defineProperty(t,\"ReactDevOverlay\",{enumerable:true,get:function(){return i(v).default}})},7790:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.ErrorBoundary=void 0;const o=r(505);const a=n(r(7522));class ErrorBoundary extends a.default.PureComponent{constructor(){super(...arguments);this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.onError(e,t?.componentStack||null);if(!this.props.globalOverlay){this.setState({error:e})}}render(){return this.state.error||this.props.globalOverlay&&this.props.isMounted?this.props.globalOverlay?(0,o.jsxs)(\"html\",{children:[(0,o.jsx)(\"head\",{}),(0,o.jsx)(\"body\",{})]}):null:this.props.children}}t.ErrorBoundary=ErrorBoundary},5222:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});const i=r(505);const s=a(r(7522));const l=a(r(5851));const u=r(6338);const c=r(5936);const d=r(4355);const f=r(7790);const p=r(884);const m=r(4464);const v=r(9495);function pushErrorFilterDuplicates(e,t){return[...e.filter((e=>e.event.reason!==t.event.reason)),t]}function reducer(e,t){switch(t.type){case l.TYPE_BUILD_OK:{return{...e,buildError:null}}case l.TYPE_BUILD_ERROR:{return{...e,buildError:t.message}}case l.TYPE_BEFORE_REFRESH:{return{...e,refreshState:{type:\"pending\",errors:[]}}}case l.TYPE_REFRESH:{return{...e,buildError:null,errors:e.refreshState.type===\"pending\"?e.refreshState.errors:[],refreshState:{type:\"idle\"}}}case l.TYPE_UNHANDLED_ERROR:case l.TYPE_UNHANDLED_REJECTION:{switch(e.refreshState.type){case\"idle\":{return{...e,nextId:e.nextId+1,errors:pushErrorFilterDuplicates(e.errors,{id:e.nextId,event:t})}}case\"pending\":{return{...e,nextId:e.nextId+1,refreshState:{...e.refreshState,errors:pushErrorFilterDuplicates(e.refreshState.errors,{id:e.nextId,event:t})}}}default:const r=e.refreshState;return e}}default:{const r=t;return e}}}const shouldPreventDisplay=(e,t)=>{if(!t||!e){return false}return t.includes(e)};const b=function ReactDevOverlay({children:e,preventDisplay:t,globalOverlay:r}){const[n,o]=s.useReducer(reducer,{nextId:1,buildError:null,errors:[],refreshState:{type:\"idle\"}});s.useEffect((()=>{l.on(o);return function(){l.off(o)}}),[o]);const a=s.useCallback(((e,t)=>{}),[]);const b=n.buildError!=null;const g=Boolean(n.errors.length);const h=b?\"build\":g?\"runtime\":null;const y=h!==null;return(0,i.jsxs)(s.Fragment,{children:[(0,i.jsx)(f.ErrorBoundary,{globalOverlay:r,isMounted:y,onError:a,children:e??null}),y?(0,i.jsxs)(u.ShadowPortal,{globalOverlay:r,children:[(0,i.jsx)(v.CssReset,{}),(0,i.jsx)(p.Base,{}),(0,i.jsx)(m.ComponentStyles,{}),shouldPreventDisplay(h,t)?null:b?(0,i.jsx)(c.BuildError,{message:n.buildError}):g?(0,i.jsx)(d.Errors,{errors:n.errors}):undefined]}):undefined]})};t[\"default\"]=b},5851:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.off=t.on=t.emit=t.TYPE_UNHANDLED_REJECTION=t.TYPE_UNHANDLED_ERROR=t.TYPE_BEFORE_REFRESH=t.TYPE_REFRESH=t.TYPE_BUILD_ERROR=t.TYPE_BUILD_OK=void 0;t.TYPE_BUILD_OK=\"build-ok\";t.TYPE_BUILD_ERROR=\"build-error\";t.TYPE_REFRESH=\"fast-refresh\";t.TYPE_BEFORE_REFRESH=\"before-fast-refresh\";t.TYPE_UNHANDLED_ERROR=\"unhandled-error\";t.TYPE_UNHANDLED_REJECTION=\"unhandled-rejection\";let r=new Set;let n=[];function drain(){setTimeout((function(){while(Boolean(n.length)&&Boolean(r.size)){const e=n.shift();r.forEach((t=>t(e)))}}),1)}function emit(e){n.push(Object.freeze({...e}));drain()}t.emit=emit;function on(e){if(r.has(e)){return false}r.add(e);drain();return true}t.on=on;function off(e){if(r.has(e)){r.delete(e);return true}return false}t.off=off},1987:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.CodeFrame=void 0;const s=r(505);const l=i(r(7997));const u=a(r(7522));const c=i(r(7518));const d=r(7504);const f=function CodeFrame({stackFrame:e,codeFrame:t}){const r=u.useMemo((()=>{const e=t.split(/\\r?\\n/g);const r=e.map((e=>/^>? +\\d+ +\\| [ ]+/.exec((0,c.default)(e))===null?null:/^>? +\\d+ +\\| ( *)/.exec((0,c.default)(e)))).filter(Boolean).map((e=>e.pop())).reduce(((e,t)=>isNaN(e)?t.length:Math.min(e,t.length)),NaN);if(r>1){const t=\" \".repeat(r);return e.map(((e,r)=>~(r=e.indexOf(\"|\"))?e.substring(0,r)+e.substring(r).replace(t,\"\"):e)).join(\"\\n\")}return e.join(\"\\n\")}),[t]);const n=u.useMemo((()=>l.default.ansiToJson(r,{json:true,use_classes:true,remove_empty:true})),[r]);const o=u.useCallback((()=>{const t=new URLSearchParams;for(const r in e){t.append(r,(e[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${t.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[e]);return(0,s.jsxs)(\"div\",{\"data-nextjs-codeframe\":true,children:[(0,s.jsx)(\"div\",{children:(0,s.jsxs)(\"p\",{role:\"link\",onClick:o,tabIndex:1,title:\"Click to open in your editor\",children:[(0,s.jsxs)(\"span\",{children:[(0,d.getFrameSource)(e),\" @ \",e.methodName]}),(0,s.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[(0,s.jsx)(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),(0,s.jsx)(\"polyline\",{points:\"15 3 21 3 21 9\"}),(0,s.jsx)(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})]})]})}),(0,s.jsx)(\"pre\",{children:n.map(((e,t)=>(0,s.jsx)(\"span\",{style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined},children:e.content},`frame-${t}`)))})]})};t.CodeFrame=f},1413:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.CodeFrame=void 0;var n=r(1987);Object.defineProperty(t,\"CodeFrame\",{enumerable:true,get:function(){return n.CodeFrame}})},399:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(8910);const o=(0,n.noop)`\n [data-nextjs-codeframe] {\n overflow: auto;\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-codeframe]::selection,\n [data-nextjs-codeframe] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-codeframe] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n\n [data-nextjs-codeframe] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n [data-nextjs-codeframe] > div {\n display: inline-block;\n width: auto;\n min-width: 100%;\n border-bottom: 1px solid var(--color-ansi-bright-black);\n }\n [data-nextjs-codeframe] > div > p {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin: 0;\n }\n [data-nextjs-codeframe] > div > p:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-codeframe] div > p > svg {\n width: auto;\n height: 1em;\n margin-left: 8px;\n }\n [data-nextjs-codeframe] div > pre {\n overflow: hidden;\n display: inline-block;\n }\n`;t.styles=o},1616:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.Dialog=void 0;const i=r(505);const s=a(r(7522));const l=r(7169);const u=function Dialog({children:e,type:t,onClose:r,...n}){const[o,a]=s.useState(null);const[u,c]=s.useState(typeof document!==\"undefined\"&&document.hasFocus()?\"dialog\":undefined);const d=s.useCallback((e=>{a(e)}),[]);(0,l.useOnClickOutside)(o,r);s.useEffect((()=>{if(o==null){return}const e=o.getRootNode();if(!(e instanceof ShadowRoot)){return}const t=e;function handler(e){const r=t.activeElement;if(e.key===\"Enter\"&&r instanceof HTMLElement&&r.getAttribute(\"role\")===\"link\"){e.preventDefault();e.stopPropagation();r.click()}}function handleFocus(){c(document.hasFocus()?\"dialog\":undefined)}t.addEventListener(\"keydown\",handler);window.addEventListener(\"focus\",handleFocus);window.addEventListener(\"blur\",handleFocus);return()=>{t.removeEventListener(\"keydown\",handler);window.removeEventListener(\"focus\",handleFocus);window.removeEventListener(\"blur\",handleFocus)}}),[o]);return(0,i.jsxs)(\"div\",{ref:d,\"data-nextjs-dialog\":true,tabIndex:-1,role:u,\"aria-labelledby\":n[\"aria-labelledby\"],\"aria-describedby\":n[\"aria-describedby\"],\"aria-modal\":\"true\",children:[(0,i.jsx)(\"div\",{\"data-nextjs-dialog-banner\":true,className:`banner-${t}`}),e]})};t.Dialog=u},2011:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.DialogBody=void 0;const n=r(505);const o=function DialogBody({children:e,className:t}){return(0,n.jsx)(\"div\",{\"data-nextjs-dialog-body\":true,className:t,children:e})};t.DialogBody=o},8991:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.DialogContent=void 0;const n=r(505);const o=function DialogContent({children:e,className:t}){return(0,n.jsx)(\"div\",{\"data-nextjs-dialog-content\":true,className:t,children:e})};t.DialogContent=o},342:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.DialogHeader=void 0;const n=r(505);const o=function DialogHeader({children:e,className:t}){return(0,n.jsx)(\"div\",{\"data-nextjs-dialog-header\":true,className:t,children:e})};t.DialogHeader=o},5651:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.DialogHeader=t.DialogContent=t.DialogBody=t.Dialog=void 0;var n=r(1616);Object.defineProperty(t,\"Dialog\",{enumerable:true,get:function(){return n.Dialog}});var o=r(2011);Object.defineProperty(t,\"DialogBody\",{enumerable:true,get:function(){return o.DialogBody}});var a=r(8991);Object.defineProperty(t,\"DialogContent\",{enumerable:true,get:function(){return a.DialogContent}});var i=r(342);Object.defineProperty(t,\"DialogHeader\",{enumerable:true,get:function(){return i.DialogHeader}});var s=r(5213);Object.defineProperty(t,\"styles\",{enumerable:true,get:function(){return s.styles}})},5213:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(8910);const o=(0,n.noop)`\n [data-nextjs-dialog] {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n outline: none;\n background: var(--color-background);\n border-radius: var(--size-gap);\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\n rgba(0, 0, 0, 0.25);\n max-height: calc(100% - 56px);\n overflow-y: hidden;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog] {\n max-width: 540px;\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog] {\n max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog] {\n max-width: 960px;\n }\n }\n\n [data-nextjs-dialog-banner] {\n position: relative;\n }\n [data-nextjs-dialog-banner].banner-warning {\n border-color: var(--color-ansi-yellow);\n }\n [data-nextjs-dialog-banner].banner-error {\n border-color: var(--color-ansi-red);\n }\n\n [data-nextjs-dialog-banner]::after {\n z-index: 2;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n /* banner width: */\n border-top-width: var(--size-gap-half);\n border-bottom-width: 0;\n border-top-style: solid;\n border-bottom-style: solid;\n border-top-color: inherit;\n border-bottom-color: transparent;\n }\n\n [data-nextjs-dialog-content] {\n overflow-y: auto;\n border: none;\n margin: 0;\n /* calc(padding + banner width offset) */\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\n var(--size-gap-double);\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n margin-bottom: var(--size-gap-double);\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n`;t.styles=o},9831:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.LeftRightDialogHeader=void 0;const i=r(505);const s=a(r(7522));const l=r(865);const u=function LeftRightDialogHeader({children:e,className:t,previous:r,next:n,close:o}){const a=s.useRef(null);const u=s.useRef(null);const c=s.useRef(null);const[d,f]=s.useState(null);const p=s.useCallback((e=>{f(e)}),[]);s.useEffect((()=>{if(d==null){return}const e=d.getRootNode();const t=self.document;function handler(t){if(t.key===\"ArrowLeft\"){t.stopPropagation();if(a.current){a.current.focus()}r&&r()}else if(t.key===\"ArrowRight\"){t.stopPropagation();if(u.current){u.current.focus()}n&&n()}else if(t.key===\"Escape\"){t.stopPropagation();if(e instanceof ShadowRoot){const t=e.activeElement;if(t&&t!==c.current&&t instanceof HTMLElement){t.blur();return}}if(o){o()}}}e.addEventListener(\"keydown\",handler);if(e!==t){t.addEventListener(\"keydown\",handler)}return function(){e.removeEventListener(\"keydown\",handler);if(e!==t){t.removeEventListener(\"keydown\",handler)}}}),[o,d,n,r]);s.useEffect((()=>{if(d==null){return}const e=d.getRootNode();if(e instanceof ShadowRoot){const t=e.activeElement;if(r==null){if(a.current&&t===a.current){a.current.blur()}}else if(n==null){if(u.current&&t===u.current){u.current.blur()}}}}),[d,n,r]);return(0,i.jsxs)(\"div\",{\"data-nextjs-dialog-left-right\":true,className:t,children:[(0,i.jsxs)(\"nav\",{ref:p,children:[(0,i.jsx)(\"button\",{ref:a,type:\"button\",disabled:r==null?true:undefined,\"aria-disabled\":r==null?true:undefined,onClick:r??undefined,children:(0,i.jsxs)(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[(0,i.jsx)(\"title\",{children:\"previous\"}),(0,i.jsx)(\"path\",{d:\"M6.99996 1.16666L1.16663 6.99999L6.99996 12.8333M12.8333 6.99999H1.99996H12.8333Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})]})}),(0,i.jsx)(\"button\",{ref:u,type:\"button\",disabled:n==null?true:undefined,\"aria-disabled\":n==null?true:undefined,onClick:n??undefined,children:(0,i.jsxs)(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[(0,i.jsx)(\"title\",{children:\"next\"}),(0,i.jsx)(\"path\",{d:\"M6.99996 1.16666L12.8333 6.99999L6.99996 12.8333M1.16663 6.99999H12H1.16663Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})]})}),\" \",e]}),o?(0,i.jsx)(\"button\",{\"data-nextjs-errors-dialog-left-right-close-button\":true,ref:c,type:\"button\",onClick:o,\"aria-label\":\"Close\",children:(0,i.jsx)(\"span\",{\"aria-hidden\":\"true\",children:(0,i.jsx)(l.CloseIcon,{})})}):null]})};t.LeftRightDialogHeader=u},2732:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.LeftRightDialogHeader=void 0;var n=r(9831);Object.defineProperty(t,\"LeftRightDialogHeader\",{enumerable:true,get:function(){return n.LeftRightDialogHeader}});var o=r(6543);Object.defineProperty(t,\"styles\",{enumerable:true,get:function(){return o.styles}})},6543:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(8910);const o=(0,n.noop)`\n [data-nextjs-dialog-left-right] {\n display: flex;\n flex-direction: row;\n align-content: center;\n align-items: center;\n justify-content: space-between;\n }\n [data-nextjs-dialog-left-right] > nav > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n width: calc(var(--size-gap-double) + var(--size-gap));\n height: calc(var(--size-gap-double) + var(--size-gap));\n font-size: 0;\n border: none;\n background-color: rgba(255, 85, 85, 0.1);\n color: var(--color-ansi-red);\n cursor: pointer;\n transition: background-color 0.25s ease;\n }\n [data-nextjs-dialog-left-right] > nav > button > svg {\n width: auto;\n height: calc(var(--size-gap) + var(--size-gap-half));\n }\n [data-nextjs-dialog-left-right] > nav > button:hover {\n background-color: rgba(255, 85, 85, 0.2);\n }\n [data-nextjs-dialog-left-right] > nav > button:disabled {\n background-color: rgba(255, 85, 85, 0.1);\n color: rgba(255, 85, 85, 0.4);\n cursor: not-allowed;\n }\n\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\n margin-right: 1px;\n }\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\n }\n\n [data-nextjs-dialog-left-right] > button:last-of-type {\n border: 0;\n padding: 0;\n\n background-color: transparent;\n appearance: none;\n\n opacity: 0.4;\n transition: opacity 0.25s ease;\n\n color: var(--color-font);\n }\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\n opacity: 0.7;\n }\n`;t.styles=o},8017:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.Overlay=void 0;const s=r(505);const l=i(r(8975));const u=a(r(7522));const c=r(7800);const d=function Overlay({className:e,children:t,fixed:r}){u.useEffect((()=>{(0,c.lock)();return()=>{(0,c.unlock)()}}),[]);const[n,o]=u.useState(null);const a=u.useCallback((e=>{o(e)}),[]);u.useEffect((()=>{if(n==null){return}const e=(0,l.default)({context:n});return()=>{e.disengage()}}),[n]);return(0,s.jsxs)(\"div\",{\"data-nextjs-dialog-overlay\":true,className:e,ref:a,children:[(0,s.jsx)(\"div\",{\"data-nextjs-dialog-backdrop\":true,\"data-nextjs-dialog-backdrop-fixed\":r?true:undefined}),t]})};t.Overlay=d},7800:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.unlock=t.lock=void 0;let r;let n;let o=0;function lock(){setTimeout((()=>{if(o++>0){return}const e=window.innerWidth-document.documentElement.clientWidth;if(e>0){r=document.body.style.paddingRight;document.body.style.paddingRight=`${e}px`}n=document.body.style.overflow;document.body.style.overflow=\"hidden\"}))}t.lock=lock;function unlock(){setTimeout((()=>{if(o===0||--o!==0){return}if(r!==undefined){document.body.style.paddingRight=r;r=undefined}if(n!==undefined){document.body.style.overflow=n;n=undefined}}))}t.unlock=unlock},8278:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Overlay=void 0;var n=r(8017);Object.defineProperty(t,\"Overlay\",{enumerable:true,get:function(){return n.Overlay}})},8975:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});const o=n(r(7709));const a=n(r(7292));function nodeArray(e){if(!e){return[]}if(Array.isArray(e)){return e}if(e.nodeType!==undefined){return[e]}if(typeof e===\"string\"){e=document.querySelectorAll(e)}if(e.length!==undefined){return[].slice.call(e,0)}throw new TypeError(\"unexpected input \"+String(e))}function contextToElement(e){var t=e.context,r=e.label,n=r===undefined?\"context-to-element\":r,o=e.resolveDocument,a=e.defaultToDocument;var i=nodeArray(t)[0];if(o&&i&&i.nodeType===Node.DOCUMENT_NODE){i=i.documentElement}if(!i&&a){return document.documentElement}if(!i){throw new TypeError(n+\" requires valid options.context\")}if(i.nodeType!==Node.ELEMENT_NODE&&i.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){throw new TypeError(n+\" requires options.context to be an Element\")}return i}function getShadowHost(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=contextToElement({label:\"get/shadow-host\",context:t});var n=null;while(r){n=r;r=r.parentNode}if(n.nodeType===n.DOCUMENT_FRAGMENT_NODE&&n.host){return n.host}return null}function getDocument(e){if(!e){return document}if(e.nodeType===Node.DOCUMENT_NODE){return e}return e.ownerDocument||document}function isActiveElement(e){var t=contextToElement({label:\"is/active-element\",resolveDocument:true,context:e});var r=getDocument(t);if(r.activeElement===t){return true}var n=getShadowHost({context:t});if(n&&n.shadowRoot.activeElement===t){return true}return false}function getParents(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=[];var n=contextToElement({label:\"get/parents\",context:t});while(n){r.push(n);n=n.parentNode;if(n&&n.nodeType!==Node.ELEMENT_NODE){n=null}}return r}var i=[\"matches\",\"webkitMatchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\"];var s=null;function findMethodName(e){i.some((function(t){if(!e[t]){return false}s=t;return true}))}function elementMatches(e,t){if(!s){findMethodName(e)}return e[s](t)}var l=JSON.parse(JSON.stringify(o.default));var u=l.os.family||\"\";var c=u===\"Android\";var d=u.slice(0,7)===\"Windows\";var f=u===\"OS X\";var p=u===\"iOS\";var m=l.layout===\"Blink\";var v=l.layout===\"Gecko\";var b=l.layout===\"Trident\";var g=l.layout===\"EdgeHTML\";var h=l.layout===\"WebKit\";var y=parseFloat(l.version);var x=Math.floor(y);l.majorVersion=x;l.is={ANDROID:c,WINDOWS:d,OSX:f,IOS:p,BLINK:m,GECKO:v,TRIDENT:b,EDGE:g,WEBKIT:h,IE9:b&&x===9,IE10:b&&x===10,IE11:b&&x===11};function before(){var e={activeElement:document.activeElement,windowScrollTop:window.scrollTop,windowScrollLeft:window.scrollLeft,bodyScrollTop:document.body.scrollTop,bodyScrollLeft:document.body.scrollLeft};var t=document.createElement(\"iframe\");t.setAttribute(\"style\",\"position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;\");t.setAttribute(\"aria-live\",\"off\");t.setAttribute(\"aria-busy\",\"true\");t.setAttribute(\"aria-hidden\",\"true\");document.body.appendChild(t);var r=t.contentWindow;var n=r.document;n.open();n.close();var o=n.createElement(\"div\");n.body.appendChild(o);e.iframe=t;e.wrapper=o;e.window=r;e.document=n;return e}function test(e,t){e.wrapper.innerHTML=\"\";var r=typeof t.element===\"string\"?e.document.createElement(t.element):t.element(e.wrapper,e.document);var n=t.mutate&&t.mutate(r,e.wrapper,e.document);if(!n&&n!==false){n=r}!r.parentNode&&e.wrapper.appendChild(r);n&&n.focus&&n.focus();return t.validate?t.validate(r,n,e.document):e.document.activeElement===n}function after(e){if(e.activeElement===document.body){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();if(l.is.IE10){document.body.focus()}}else{e.activeElement&&e.activeElement.focus&&e.activeElement.focus()}document.body.removeChild(e.iframe);window.scrollTop=e.windowScrollTop;window.scrollLeft=e.windowScrollLeft;document.body.scrollTop=e.bodyScrollTop;document.body.scrollLeft=e.bodyScrollLeft}function detectFocus(e){var t=before();var r={};Object.keys(e).map((function(n){r[n]=test(t,e[n])}));after(t);return r}var _=\"1.4.1\";function readLocalStorage(e){var t=void 0;try{t=window.localStorage&&window.localStorage.getItem(e);t=t?JSON.parse(t):{}}catch(e){t={}}return t}function writeLocalStorage(e,t){if(!document.hasFocus()){try{window.localStorage&&window.localStorage.removeItem(e)}catch(e){}return}try{window.localStorage&&window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}var w=typeof window!==\"undefined\"&&window.navigator.userAgent||\"\";var E=\"ally-supports-cache\";var j=readLocalStorage(E);if(j.userAgent!==w||j.version!==_){j={}}j.userAgent=w;j.version=_;var O={get:function get(){return j},set:function set(e){Object.keys(e).forEach((function(t){j[t]=e[t]}));j.time=(new Date).toISOString();writeLocalStorage(E,j)}};function cssShadowPiercingDeepCombinator(){var e=void 0;try{document.querySelector(\"html >>> :first-child\");e=\">>>\"}catch(t){try{document.querySelector(\"html /deep/ :first-child\");e=\"/deep/\"}catch(t){e=\"\"}}return e}var k=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";var S={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")}};var C={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return false},validate:function validate(e,t,r){if(l.is.GECKO){return true}var n=e.querySelector(\"area\");n.focus();return r.activeElement===n}};var T={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")},validate:function validate(e,t,r){if(l.is.GECKO){return true}return r.activeElement===t}};var D={name:\"can-focus-audio-without-controls\",element:\"audio\",mutate:function mutate(e){try{e.setAttribute(\"src\",k)}catch(e){}}};var P=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\";var N={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"area\")}};var R={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\");e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello';return e.querySelector(\"span\")}};var F={element:\"fieldset\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var I={element:\"fieldset\",mutate:function mutate(e){e.innerHTML=\"legend

content

\"}};var A={element:\"span\",mutate:function mutate(e){e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello'}};var M={element:\"form\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var L={element:\"a\",mutate:function mutate(e){e.href=\"#void\";e.innerHTML='\"\"';return e.querySelector(\"img\")}};var B={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")}};var H={element:function element(e,t){var r=t.createElement(\"iframe\");e.appendChild(r);var n=r.contentWindow.document;n.open();n.close();return r},mutate:function mutate(e){e.style.visibility=\"hidden\";var t=e.contentWindow.document;var r=t.createElement(\"input\");t.body.appendChild(r);return r},validate:function validate(e){var t=e.contentWindow.document;var r=t.querySelector(\"input\");return t.activeElement===r}};var z=!l.is.WEBKIT;function focusInZeroDimensionObject(){return z}var W={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"invalid-value\")}};var V={element:\"label\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\")},validate:function validate(e,t,r){var n=e.offsetHeight;e.focus();return r.activeElement===e}};var $=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb\"+\"G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ\"+\"zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==\";var U={element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",$);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\");e.style.visibility=\"hidden\"}};var K={name:\"can-focus-object-svg\",element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",$);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\")},validate:function validate(e,t,r){if(l.is.GECKO){return true}return r.activeElement===e}};var G=!l.is.IE9;function focusObjectSwf(){return G}var Z={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")},validate:function validate(e,t,r){var n=e.querySelector(\"area\");return r.activeElement===n}};var Y={element:\"fieldset\",mutate:function mutate(e){e.innerHTML='legend';return false},validate:function validate(e,t,r){var n=e.querySelector('input[tabindex=\"-1\"]');var o=e.querySelector('input[tabindex=\"0\"]');e.focus();e.querySelector(\"legend\").focus();return r.activeElement===n&&\"focusable\"||r.activeElement===o&&\"tabbable\"||\"\"}};var J={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
';return e.querySelector(\"div\")}};var X={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px;\");e.innerHTML='
scrollable content
'}};var Q={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
'}};var ee={element:\"details\",mutate:function mutate(e){e.innerHTML=\"foo

content

\";return e.firstElementChild}};function makeFocusableForeignObject(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\");e.width.baseVal.value=30;e.height.baseVal.value=30;e.appendChild(document.createElement(\"input\"));e.lastChild.type=\"text\";return e}function focusSvgForeignObjectHack(e){var t=e.ownerSVGElement||e.nodeName.toLowerCase()===\"svg\";if(!t){return false}var r=makeFocusableForeignObject();e.appendChild(r);var n=r.querySelector(\"input\");n.focus();n.disabled=true;e.removeChild(r);return true}function generate(e){return''+e+\"\"}function focus(e){if(e.focus){return}try{HTMLElement.prototype.focus.call(e)}catch(t){focusSvgForeignObjectHack(e)}}function validate(e,t,r){focus(t);return r.activeElement===t}var te={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var re={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var ne={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var oe={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(['link',''].join(\"\"));return e.querySelector(\"use\")},validate:validate};var ae={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('');return e.querySelector(\"foreignObject\")||e.getElementsByTagName(\"foreignObject\")[0]},validate:validate};var ie=Boolean(l.is.GECKO&&typeof SVGElement!==\"undefined\"&&SVGElement.prototype.focus);function focusSvgInIframe(){return ie}var se={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(\"\");return e.firstChild},validate:validate};var le={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"3x\")}};var ue={element:\"table\",mutate:function mutate(e,t,r){var n=r.createDocumentFragment();n.innerHTML=\"cell\";e.appendChild(n)}};var ce={element:\"video\",mutate:function mutate(e){try{e.setAttribute(\"src\",k)}catch(e){}}};var de=l.is.GECKO||l.is.TRIDENT||l.is.EDGE;function tabsequenceAreaAtImgPosition(){return de}var fe={cssShadowPiercingDeepCombinator:cssShadowPiercingDeepCombinator,focusInZeroDimensionObject:focusInZeroDimensionObject,focusObjectSwf:focusObjectSwf,focusSvgInIframe:focusSvgInIframe,tabsequenceAreaAtImgPosition:tabsequenceAreaAtImgPosition};var pe={focusAreaImgTabindex:S,focusAreaTabindex:C,focusAreaWithoutHref:T,focusAudioWithoutControls:D,focusBrokenImageMap:N,focusChildrenOfFocusableFlexbox:R,focusFieldsetDisabled:F,focusFieldset:I,focusFlexboxContainer:A,focusFormDisabled:M,focusImgIsmap:L,focusImgUsemapTabindex:B,focusInHiddenIframe:H,focusInvalidTabindex:W,focusLabelTabindex:V,focusObjectSvg:K,focusObjectSvgHidden:U,focusRedirectImgUsemap:Z,focusRedirectLegend:Y,focusScrollBody:J,focusScrollContainerWithoutOverflow:X,focusScrollContainer:Q,focusSummary:ee,focusSvgFocusableAttribute:te,focusSvgTabindexAttribute:re,focusSvgNegativeTabindexAttribute:ne,focusSvgUseTabindex:oe,focusSvgForeignobjectTabindex:ae,focusSvg:se,focusTabindexTrailingCharacters:le,focusTable:ue,focusVideoWithoutControls:ce};function executeTests(){var e=detectFocus(pe);Object.keys(fe).forEach((function(t){e[t]=fe[t]()}));return e}var me=null;function _supports(){if(me){return me}me=O.get();if(!me.time){O.set(executeTests());me=O.get()}return me}var ve=void 0;var be=/^\\s*(-|\\+)?[0-9]+\\s*$/;var ge=/^\\s*(-|\\+)?[0-9]+.*$/;function isValidTabindex(e){if(!ve){ve=_supports()}var t=ve.focusTabindexTrailingCharacters?ge:be;var r=contextToElement({label:\"is/valid-tabindex\",resolveDocument:true,context:e});var n=r.hasAttribute(\"tabindex\");var o=r.hasAttribute(\"tabIndex\");if(!n&&!o){return false}var a=r.ownerSVGElement||r.nodeName.toLowerCase()===\"svg\";if(a&&!ve.focusSvgTabindexAttribute){return false}if(ve.focusInvalidTabindex){return true}var i=r.getAttribute(n?\"tabindex\":\"tabIndex\");if(i===\"-32768\"){return false}return Boolean(i&&t.test(i))}function tabindexValue(e){if(!isValidTabindex(e)){return null}var t=e.hasAttribute(\"tabindex\");var r=t?\"tabindex\":\"tabIndex\";var n=parseInt(e.getAttribute(r),10);return isNaN(n)?-1:n}function isUserModifyWritable(e){var t=e.webkitUserModify||\"\";return Boolean(t&&t.indexOf(\"write\")!==-1)}function hasCssOverflowScroll(e){return[e.getPropertyValue(\"overflow\"),e.getPropertyValue(\"overflow-x\"),e.getPropertyValue(\"overflow-y\")].some((function(e){return e===\"auto\"||e===\"scroll\"}))}function hasCssDisplayFlex(e){return e.display.indexOf(\"flex\")>-1}function isScrollableContainer(e,t,r,n){if(t!==\"div\"&&t!==\"span\"){return false}if(r&&r!==\"div\"&&r!==\"span\"&&!hasCssOverflowScroll(n)){return false}return e.offsetHeight0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false}:r;if(!he){he=_supports()}var o=contextToElement({label:\"is/focus-relevant\",resolveDocument:true,context:t});if(!n.shadow&&o.shadowRoot){return true}var a=o.nodeName.toLowerCase();if(a===\"input\"&&o.type===\"hidden\"){return false}if(a===\"input\"||a===\"select\"||a===\"button\"||a===\"textarea\"){return true}if(a===\"legend\"&&he.focusRedirectLegend){return true}if(a===\"label\"){return true}if(a===\"area\"){return true}if(a===\"a\"&&o.hasAttribute(\"href\")){return true}if(a===\"object\"&&o.hasAttribute(\"usemap\")){return false}if(a===\"object\"){var i=o.getAttribute(\"type\");if(!he.focusObjectSvg&&i===\"image/svg+xml\"){return false}else if(!he.focusObjectSwf&&i===\"application/x-shockwave-flash\"){return false}}if(a===\"iframe\"||a===\"object\"){return true}if(a===\"embed\"||a===\"keygen\"){return true}if(o.hasAttribute(\"contenteditable\")){return true}if(a===\"audio\"&&(he.focusAudioWithoutControls||o.hasAttribute(\"controls\"))){return true}if(a===\"video\"&&(he.focusVideoWithoutControls||o.hasAttribute(\"controls\"))){return true}if(he.focusSummary&&a===\"summary\"){return true}var s=isValidTabindex(o);if(a===\"img\"&&o.hasAttribute(\"usemap\")){return s&&he.focusImgUsemapTabindex||he.focusRedirectImgUsemap}if(he.focusTable&&(a===\"table\"||a===\"td\")){return true}if(he.focusFieldset&&a===\"fieldset\"){return true}var l=a===\"svg\";var u=o.ownerSVGElement;var c=o.getAttribute(\"focusable\");var d=tabindexValue(o);if(a===\"use\"&&d!==null&&!he.focusSvgUseTabindex){return false}if(a===\"foreignobject\"){return d!==null&&he.focusSvgForeignobjectTabindex}if(elementMatches(o,\"svg a\")&&o.hasAttribute(\"xlink:href\")){return true}if((l||u)&&o.focus&&!he.focusSvgNegativeTabindexAttribute&&d<0){return false}if(l){return s||he.focusSvg||he.focusSvgInIframe||Boolean(he.focusSvgFocusableAttribute&&c&&c===\"true\")}if(u){if(he.focusSvgTabindexAttribute&&s){return true}if(he.focusSvgFocusableAttribute){return c===\"true\"}}if(s){return true}var f=window.getComputedStyle(o,null);if(isUserModifyWritable(f)){return true}if(he.focusImgIsmap&&a===\"img\"&&o.hasAttribute(\"ismap\")){var p=getParents({context:o}).some((function(e){return e.nodeName.toLowerCase()===\"a\"&&e.hasAttribute(\"href\")}));if(p){return true}}if(!n.scrollable&&he.focusScrollContainer){if(he.focusScrollContainerWithoutOverflow){if(isScrollableContainer(o,a)){return true}}else if(hasCssOverflowScroll(f)){return true}}if(!n.flexbox&&he.focusFlexboxContainer&&hasCssDisplayFlex(f)){return true}var m=o.parentElement;if(!n.scrollable&&m){var v=m.nodeName.toLowerCase();var b=window.getComputedStyle(m,null);if(he.focusScrollBody&&isScrollableContainer(m,a,v,b)){return true}if(he.focusChildrenOfFocusableFlexbox){if(hasCssDisplayFlex(b)){return true}}}return false}isFocusRelevantRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusRelevant(t){return isFocusRelevantRules({context:t,except:e})};t.rules=isFocusRelevantRules;return t};var ye=isFocusRelevantRules.except({});function findIndex(e,t){if(e.findIndex){return e.findIndex(t)}var r=e.length;if(r===0){return-1}for(var n=0;n0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{notRendered:false,cssDisplay:false,cssVisibility:false,detailsElement:false,browsingContext:false}:r;var o=contextToElement({label:\"is/visible\",resolveDocument:true,context:t});var a=o.nodeName.toLowerCase();if(!n.notRendered&&we.test(a)){return true}var i=getParents({context:o});var s=a===\"audio\"&&!o.hasAttribute(\"controls\");if(!n.cssDisplay&¬Displayed(s?i.slice(1):i)){return false}if(!n.cssVisibility&¬Visible(i)){return false}if(!n.detailsElement&&collapsedParent(i)){return false}if(!n.browsingContext){var l=getFrameElement(o);var u=isVisibleRules.except(n);if(l&&!u(l)){return false}}return true}isVisibleRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isVisible(t){return isVisibleRules({context:t,except:e})};t.rules=isVisibleRules;return t};var Ee=isVisibleRules.except({});function getMapByName(e,t){var r=t.querySelector('map[name=\"'+(0,a.default)(e)+'\"]');return r||null}function getImageOfArea(e){var t=e.parentElement;if(!t.name||t.nodeName.toLowerCase()!==\"map\"){return null}var r=getDocument(e);return r.querySelector('img[usemap=\"#'+(0,a.default)(t.name)+'\"]')||null}var je=void 0;function isValidArea(e){if(!je){je=_supports()}var t=contextToElement({label:\"is/valid-area\",context:e});var r=t.nodeName.toLowerCase();if(r!==\"area\"){return false}var n=t.hasAttribute(\"tabindex\");if(!je.focusAreaTabindex&&n){return false}var o=getImageOfArea(t);if(!o||!Ee(o)){return false}if(!je.focusBrokenImageMap&&(!o.complete||!o.naturalHeight||o.offsetWidth<=0||o.offsetHeight<=0)){return false}if(!je.focusAreaWithoutHref&&!t.href){return je.focusAreaTabindex&&n||je.focusAreaImgTabindex&&o.hasAttribute(\"tabindex\")}var a=getParents({context:o}).slice(1).some((function(e){var t=e.nodeName.toLowerCase();return t===\"button\"||t===\"a\"}));if(a){return false}return true}var Oe=void 0;var ke=void 0;var Se={input:true,select:true,textarea:true,button:true,fieldset:true,form:true};function isNativeDisabledSupported(e){if(!Oe){Oe=_supports();if(Oe.focusFieldsetDisabled){delete Se.fieldset}if(Oe.focusFormDisabled){delete Se.form}ke=new RegExp(\"^(\"+Object.keys(Se).join(\"|\")+\")$\")}var t=contextToElement({label:\"is/native-disabled-supported\",context:e});var r=t.nodeName.toLowerCase();return Boolean(ke.test(r))}var Ce=void 0;function isDisabledFieldset(e){var t=e.nodeName.toLowerCase();return t===\"fieldset\"&&e.disabled}function isDisabledForm(e){var t=e.nodeName.toLowerCase();return t===\"form\"&&e.disabled}function isDisabled(e){if(!Ce){Ce=_supports()}var t=contextToElement({label:\"is/disabled\",context:e});if(t.hasAttribute(\"data-ally-disabled\")){return true}if(!isNativeDisabledSupported(t)){return false}if(t.disabled){return true}var r=getParents({context:t});if(r.some(isDisabledFieldset)){return true}if(!Ce.focusFormDisabled&&r.some(isDisabledForm)){return true}return false}function isOnlyTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{onlyFocusableBrowsingContext:false,visible:false}:r;var o=contextToElement({label:\"is/only-tabbable\",resolveDocument:true,context:t});if(!n.visible&&!Ee(o)){return false}if(!n.onlyFocusableBrowsingContext&&(l.is.GECKO||l.is.TRIDENT||l.is.EDGE)){var a=getFrameElement(o);if(a){if(tabindexValue(a)<0){return false}}}var i=o.nodeName.toLowerCase();var s=tabindexValue(o);if(i===\"label\"&&l.is.GECKO){return s!==null&&s>=0}if(l.is.GECKO&&o.ownerSVGElement&&!o.focus){if(i===\"a\"&&o.hasAttribute(\"xlink:href\")){if(l.is.GECKO){return true}}}return false}isOnlyTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isOnlyTabbable(t){return isOnlyTabbableRules({context:t,except:e})};t.rules=isOnlyTabbableRules;return t};var Te=isOnlyTabbableRules.except({});var De=void 0;function isOnlyFocusRelevant(e){var t=e.nodeName.toLowerCase();if(t===\"embed\"||t===\"keygen\"){return true}var r=tabindexValue(e);if(e.shadowRoot&&r===null){return true}if(t===\"label\"){return!De.focusLabelTabindex||r===null}if(t===\"legend\"){return r===null}if(De.focusSvgFocusableAttribute&&(e.ownerSVGElement||t===\"svg\")){var n=e.getAttribute(\"focusable\");return n&&n===\"false\"}if(t===\"img\"&&e.hasAttribute(\"usemap\")){return r===null||!De.focusImgUsemapTabindex}if(t===\"area\"){return!isValidArea(e)}return false}function isFocusableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{disabled:false,visible:false,onlyTabbable:false}:r;if(!De){De=_supports()}var o=Te.rules.except({onlyFocusableBrowsingContext:true,visible:n.visible});var a=contextToElement({label:\"is/focusable\",resolveDocument:true,context:t});var i=ye.rules({context:a,except:n});if(!i||isOnlyFocusRelevant(a)){return false}if(!n.disabled&&isDisabled(a)){return false}if(!n.onlyTabbable&&o(a)){return false}if(!n.visible){var s={context:a,except:{}};if(De.focusInHiddenIframe){s.except.browsingContext=true}if(De.focusObjectSvgHidden){var l=a.nodeName.toLowerCase();if(l===\"object\"){s.except.cssVisibility=true}}if(!Ee.rules(s)){return false}}var u=getFrameElement(a);if(u){var c=u.nodeName.toLowerCase();if(c===\"object\"&&!De.focusInZeroDimensionObject){if(!u.offsetWidth||!u.offsetHeight){return false}}}var d=a.nodeName.toLowerCase();if(d===\"svg\"&&De.focusSvgInIframe&&!u&&a.getAttribute(\"tabindex\")===null){return false}return true}isFocusableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusable(t){return isFocusableRules({context:t,except:e})};t.rules=isFocusableRules;return t};var Pe=isFocusableRules.except({});function createFilter(e){var t=function filter(t){if(t.shadowRoot){return NodeFilter.FILTER_ACCEPT}if(e(t)){return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP};t.acceptNode=t;return t}var Ne=createFilter(ye);function queryFocusableStrict(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy;if(!t){t=document.documentElement}var a=Pe.rules.except({onlyTabbable:n});var i=getDocument(t);var s=i.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,o===\"all\"?Ne:createFilter(a),false);var l=[];while(s.nextNode()){if(s.currentNode.shadowRoot){if(a(s.currentNode)){l.push(s.currentNode)}l=l.concat(queryFocusableStrict({context:s.currentNode.shadowRoot,includeOnlyTabbable:n,strategy:o}))}else{l.push(s.currentNode)}}if(r){if(o===\"all\"){if(ye(t)){l.unshift(t)}}else if(a(t)){l.unshift(t)}}return l}var Re=void 0;var Fe=void 0;function selector$2(){if(!Re){Re=_supports()}if(typeof Fe===\"string\"){return Fe}Fe=\"\"+(Re.focusTable?\"table, td,\":\"\")+(Re.focusFieldset?\"fieldset,\":\"\")+\"svg a,\"+\"a[href],\"+\"area[href],\"+\"input, select, textarea, button,\"+\"iframe, object, embed,\"+\"keygen,\"+(Re.focusAudioWithoutControls?\"audio,\":\"audio[controls],\")+(Re.focusVideoWithoutControls?\"video,\":\"video[controls],\")+(Re.focusSummary?\"summary,\":\"\")+\"[tabindex],\"+\"[contenteditable]\";Fe=selectInShadows(Fe);return Fe}function queryFocusableQuick(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable;var o=selector$2();var a=t.querySelectorAll(o);var i=Pe.rules.except({onlyTabbable:n});var s=[].filter.call(a,i);if(r&&i(t)){s.unshift(t)}return s}function queryFocusable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy,a=o===undefined?\"quick\":o;var i=contextToElement({label:\"query/focusable\",resolveDocument:true,defaultToDocument:true,context:t});var s={context:i,includeContext:r,includeOnlyTabbable:n,strategy:a};if(a===\"quick\"){return queryFocusableQuick(s)}else if(a===\"strict\"||a===\"all\"){return queryFocusableStrict(s)}throw new TypeError('query/focusable requires option.strategy to be one of [\"quick\", \"strict\", \"all\"]')}var Ie=void 0;var Ae=/^(fieldset|table|td|body)$/;function isTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false,visible:false,onlyTabbable:false}:r;if(!Ie){Ie=_supports()}var o=contextToElement({label:\"is/tabbable\",resolveDocument:true,context:t});if(l.is.BLINK&&l.is.ANDROID&&l.majorVersion>42){return false}var a=getFrameElement(o);if(a){if(l.is.WEBKIT&&l.is.IOS){return false}if(tabindexValue(a)<0){return false}if(!n.visible&&(l.is.BLINK||l.is.WEBKIT)&&!Ee(a)){return false}var i=a.nodeName.toLowerCase();if(i===\"object\"){var s=l.name===\"Chrome\"&&l.majorVersion>=54||l.name===\"Opera\"&&l.majorVersion>=41;if(l.is.WEBKIT||l.is.BLINK&&!s){return false}}}var u=o.nodeName.toLowerCase();var c=tabindexValue(o);var d=c===null?null:c>=0;if(l.is.EDGE&&l.majorVersion>=14&&a&&o.ownerSVGElement&&c<0){return true}var f=d!==false;var p=c!==null&&c>=0;if(o.hasAttribute(\"contenteditable\")){return f}if(Ae.test(u)&&d!==true){return false}if(l.is.WEBKIT&&l.is.IOS){var m=u===\"input\"&&o.type===\"text\"||o.type===\"password\"||u===\"select\"||u===\"textarea\"||o.hasAttribute(\"contenteditable\");if(!m){var v=window.getComputedStyle(o,null);m=isUserModifyWritable(v)}if(!m){return false}}if(u===\"use\"&&c!==null){if(l.is.BLINK||l.is.WEBKIT&&l.majorVersion===9){return true}}if(elementMatches(o,\"svg a\")&&o.hasAttribute(\"xlink:href\")){if(f){return true}if(o.focus&&!Ie.focusSvgNegativeTabindexAttribute){return true}}if(u===\"svg\"&&Ie.focusSvgInIframe&&f){return true}if(l.is.TRIDENT||l.is.EDGE){if(u===\"svg\"){if(Ie.focusSvg){return true}return o.hasAttribute(\"focusable\")||p}if(o.ownerSVGElement){if(Ie.focusSvgTabindexAttribute&&p){return true}return o.hasAttribute(\"focusable\")}}if(o.tabIndex===undefined){return Boolean(n.onlyTabbable)}if(u===\"audio\"){if(!o.hasAttribute(\"controls\")){return false}else if(l.is.BLINK){return true}}if(u===\"video\"){if(!o.hasAttribute(\"controls\")){if(l.is.TRIDENT||l.is.EDGE){return false}}else if(l.is.BLINK||l.is.GECKO){return true}}if(u===\"object\"){if(l.is.BLINK||l.is.WEBKIT){return false}}if(u===\"iframe\"){return false}if(!n.scrollable&&l.is.GECKO){var b=window.getComputedStyle(o,null);if(hasCssOverflowScroll(b)){return f}}if(l.is.TRIDENT||l.is.EDGE){if(u===\"area\"){var g=getImageOfArea(o);if(g&&tabindexValue(g)<0){return false}}var h=window.getComputedStyle(o,null);if(isUserModifyWritable(h)){return o.tabIndex>=0}if(!n.flexbox&&hasCssDisplayFlex(h)){if(c!==null){return p}return Me(o)&&Le(o)}if(isScrollableContainer(o,u)){return false}var y=o.parentElement;if(y){var x=y.nodeName.toLowerCase();var _=window.getComputedStyle(y,null);if(isScrollableContainer(y,u,x,_)){return false}if(hasCssDisplayFlex(_)){return p}}}return o.tabIndex>=0}isTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isTabbable(t){return isTabbableRules({context:t,except:e})};t.rules=isTabbableRules;return t};var Me=ye.rules.except({flexbox:true});var Le=isTabbableRules.except({flexbox:true});var Be=isTabbableRules.except({});function queryTabbable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy;var a=Be.rules.except({onlyTabbable:n});return queryFocusable({context:t,includeContext:r,includeOnlyTabbable:n,strategy:o}).filter(a)}function compareDomPosition(e,t){return e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function sortDomOrder(e){return e.sort(compareDomPosition)}function getFirstSuccessorOffset(e,t){return findIndex(e,(function(e){return t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING}))}function findInsertionOffsets(e,t,r){var n=[];t.forEach((function(t){var o=true;var a=e.indexOf(t);if(a===-1){a=getFirstSuccessorOffset(e,t);o=false}if(a===-1){a=e.length}var i=nodeArray(r?r(t):t);if(!i.length){return}n.push({offset:a,replace:o,elements:i})}));return n}function insertElementsAtOffsets(e,t){var r=0;t.sort((function(e,t){return e.offset-t.offset}));t.forEach((function(t){var n=t.replace?1:0;var o=[t.offset+r,n].concat(t.elements);e.splice.apply(e,o);r+=t.elements.length-n}))}function mergeInDomOrder(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.list,r=e.elements,n=e.resolveElement;var o=t.slice(0);var a=nodeArray(r).slice(0);sortDomOrder(a);var i=findInsertionOffsets(o,a,n);insertElementsAtOffsets(o,i);return o}var He=function(){function defineProperties(e,t){for(var r=0;r-1){return[e].concat(t)}return t}},{key:\"_cleanup\",value:function _cleanup(){Object.keys(this.hosts).forEach((function(e){delete this.hosts[e]._sortingId}),this)}}]);return Shadows}();function sortShadowed(e,t,r){var n=new Ve(t,r);var o=n.extractElements(e);if(o.length===e.length){return r(e)}return n.sort(o)}function sortTabindex(e){var t={};var r=[];var n=e.filter((function(e){var n=e.tabIndex;if(n===undefined){n=tabindexValue(e)}if(n<=0||n===null||n===undefined){return true}if(!t[n]){t[n]=[];r.push(n)}t[n].push(e);return false}));var o=r.sort().map((function(e){return t[e]})).reduceRight((function(e,t){return t.concat(e)}),n);return o}var $e=void 0;function moveContextToBeginning(e,t){var r=e.indexOf(t);if(r>0){var n=e.splice(r,1);return n.concat(e)}return e}function sortElements(e,t){if($e.tabsequenceAreaAtImgPosition){e=sortArea(e,t)}e=sortTabindex(e);return e}function queryTabsequence(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy;if(!$e){$e=_supports()}var a=nodeArray(t)[0]||document.documentElement;var i=queryTabbable({context:a,includeContext:r,includeOnlyTabbable:n,strategy:o});if(document.body.createShadowRoot&&l.is.BLINK){i=sortShadowed(i,a,sortElements)}else{i=sortElements(i,a)}if(r){i=moveContextToBeginning(i,a)}return i}var qe={tab:9,left:37,up:38,right:39,down:40,pageUp:33,\"page-up\":33,pageDown:34,\"page-down\":34,end:35,home:36,enter:13,escape:27,space:32,shift:16,capsLock:20,\"caps-lock\":20,ctrl:17,alt:18,meta:91,pause:19,insert:45,delete:46,backspace:8,_alias:{91:[92,93,224]}};for(var Ue=1;Ue<26;Ue++){qe[\"f\"+Ue]=Ue+111}for(var Ke=0;Ke<10;Ke++){var Ge=Ke+48;var Ze=Ke+96;qe[Ke]=Ge;qe[\"num-\"+Ke]=Ze;qe._alias[Ge]=[Ze]}for(var Ye=0;Ye<26;Ye++){var Je=Ye+65;var Xe=String.fromCharCode(Je).toLowerCase();qe[Xe]=Je}var Qe={alt:\"altKey\",ctrl:\"ctrlKey\",meta:\"metaKey\",shift:\"shiftKey\"};var et=Object.keys(Qe).map((function(e){return Qe[e]}));function createExpectedModifiers(e){var t=e?null:false;return{altKey:t,ctrlKey:t,metaKey:t,shiftKey:t}}function resolveModifiers(e){var t=e.indexOf(\"*\")!==-1;var r=createExpectedModifiers(t);e.forEach((function(e){if(e===\"*\"){return}var t=true;var n=e.slice(0,1);if(n===\"?\"){t=null}else if(n===\"!\"){t=false}if(t!==true){e=e.slice(1)}var o=Qe[e];if(!o){throw new TypeError('Unknown modifier \"'+e+'\"')}r[o]=t}));return r}function resolveKey(e){var t=qe[e]||parseInt(e,10);if(!t||typeof t!==\"number\"||isNaN(t)){throw new TypeError('Unknown key \"'+e+'\"')}return[t].concat(qe._alias[t]||[])}function matchModifiers(e,t){return!et.some((function(r){return typeof e[r]===\"boolean\"&&Boolean(t[r])!==e[r]}))}function keyBinding(e){return e.split(/\\s+/).map((function(e){var t=e.split(\"+\");var r=resolveModifiers(t.slice(0,-1));var n=resolveKey(t.slice(-1));return{keyCodes:n,modifiers:r,matchModifiers:matchModifiers.bind(null,r)}}))}function getParentComparator(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.parent,r=e.element,n=e.includeSelf;if(t){return function isChildOf(e){return Boolean(n&&e===t||t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}else if(r){return function isParentOf(e){return Boolean(n&&r===e||e.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}throw new TypeError(\"util/compare-position#getParentComparator required either options.parent or options.element\")}function whenKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t={};var r=nodeArray(e.context)[0]||document.documentElement;delete e.context;var n=nodeArray(e.filter);delete e.filter;var o=Object.keys(e);if(!o.length){throw new TypeError(\"when/key requires at least one option key\")}var a=function registerBinding(e){e.keyCodes.forEach((function(r){if(!t[r]){t[r]=[]}t[r].push(e)}))};o.forEach((function(t){if(typeof e[t]!==\"function\"){throw new TypeError('when/key requires option[\"'+t+'\"] to be a function')}var r=function addCallback(r){r.callback=e[t];return r};keyBinding(t).map(r).forEach(a)}));var i=function handleKeyDown(e){if(e.defaultPrevented){return}if(n.length){var o=getParentComparator({element:e.target,includeSelf:true});if(n.some(o)){return}}var a=e.keyCode||e.which;if(!t[a]){return}t[a].forEach((function(t){if(!t.matchModifiers(e)){return}t.callback.call(r,e,s)}))};r.addEventListener(\"keydown\",i,false);var s=function disengage(){r.removeEventListener(\"keydown\",i,false)};return{disengage:s}}function default_1({context:e}={}){if(!e){e=document.documentElement}queryTabsequence();return whenKey({\"?alt+?shift+tab\":function altShiftTab(t){t.preventDefault();var r=queryTabsequence({context:e});var n=t.shiftKey;var o=r[0];var a=r[r.length-1];var i=n?o:a;var s=n?a:o;if(isActiveElement(i)){s.focus();return}var l=void 0;var u=r.some((function(e,t){if(!isActiveElement(e)){return false}l=t;return true}));if(!u){o.focus();return}var c=n?-1:1;r[l+c].focus()}})}t[\"default\"]=default_1},993:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(8910);const o=(0,n.noop)`\n [data-nextjs-dialog-overlay] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 9000;\n\n display: flex;\n align-content: center;\n align-items: center;\n flex-direction: column;\n padding: 10vh 15px 0;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n padding: 15px 15px 0;\n }\n }\n\n [data-nextjs-dialog-backdrop] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--color-backdrop);\n pointer-events: all;\n z-index: -1;\n }\n\n [data-nextjs-dialog-backdrop-fixed] {\n cursor: not-allowed;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n`;t.styles=o},6338:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.ShadowPortal=void 0;const i=r(505);const s=a(r(7522));const l=r(2255);const u=function Portal({children:e,globalOverlay:t}){let r=s.useRef(null);let n=s.useRef(null);let o=s.useRef(null);let[,a]=s.useState();s.useLayoutEffect((()=>{const e=t?document:r.current.ownerDocument;n.current=e.createElement(\"nextjs-portal\");o.current=n.current.attachShadow({mode:\"open\"});e.body.appendChild(n.current);a({});return()=>{if(n.current&&n.current.ownerDocument){n.current.ownerDocument.body.removeChild(n.current)}}}),[t]);return o.current?(0,l.createPortal)(e,o.current):t?null:(0,i.jsx)(\"span\",{ref:r})};t.ShadowPortal=u},7215:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.Terminal=void 0;const s=r(505);const l=i(r(7997));const u=a(r(7522));const c=function Terminal({content:e}){const t=u.useMemo((()=>l.default.ansiToJson(e,{json:true,use_classes:true,remove_empty:true})),[e]);return(0,s.jsx)(\"div\",{\"data-nextjs-terminal\":true,children:(0,s.jsx)(\"pre\",{children:t.map(((e,t)=>(0,s.jsx)(\"span\",{style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined},children:e.content},`terminal-entry-${t}`)))})})};t.Terminal=c},8236:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Terminal=void 0;var n=r(7215);Object.defineProperty(t,\"Terminal\",{enumerable:true,get:function(){return n.Terminal}})},5488:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(8910);const o=(0,n.noop)`\n [data-nextjs-terminal] {\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-terminal]::selection,\n [data-nextjs-terminal] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-terminal] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n [data-nextjs-terminal] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n\n [data-nextjs-terminal] pre {\n white-space: pre-wrap;\n word-break: break-word;\n }\n`;t.styles=o},9683:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Toast=void 0;const n=r(505);const o=function Toast({onClick:e,children:t,className:r}){return(0,n.jsx)(\"div\",{\"data-nextjs-toast\":true,onClick:e,className:r,children:(0,n.jsx)(\"div\",{\"data-nextjs-toast-wrapper\":true,children:t})})};t.Toast=o},1120:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Toast=t.styles=void 0;var n=r(2069);Object.defineProperty(t,\"styles\",{enumerable:true,get:function(){return n.styles}});var o=r(9683);Object.defineProperty(t,\"Toast\",{enumerable:true,get:function(){return o.Toast}})},2069:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(8910);const o=(0,n.noop)`\n [data-nextjs-toast] {\n position: fixed;\n bottom: var(--size-gap-double);\n left: var(--size-gap-double);\n max-width: 420px;\n z-index: 9000;\n }\n\n @media (max-width: 440px) {\n [data-nextjs-toast] {\n max-width: 90vw;\n left: 5vw;\n }\n }\n\n [data-nextjs-toast-wrapper] {\n padding: 16px;\n border-radius: var(--size-gap-half);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\n rgba(0, 0, 0, 0.25);\n }\n`;t.styles=o},5936:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.BuildError=void 0;const i=r(505);const s=a(r(7522));const l=r(5651);const u=r(8278);const c=r(8236);const d=r(8910);const f=function BuildError({message:e}){const t=s.useCallback((()=>{}),[]);return(0,i.jsx)(u.Overlay,{fixed:true,children:(0,i.jsx)(l.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_build_error_label\",\"aria-describedby\":\"nextjs__container_build_error_desc\",onClose:t,children:(0,i.jsxs)(l.DialogContent,{children:[(0,i.jsx)(l.DialogHeader,{className:\"nextjs-container-build-error-header\",children:(0,i.jsx)(\"h4\",{id:\"nextjs__container_build_error_label\",children:\"Failed to compile\"})}),(0,i.jsxs)(l.DialogBody,{className:\"nextjs-container-build-error-body\",children:[(0,i.jsx)(c.Terminal,{content:e}),(0,i.jsx)(\"footer\",{children:(0,i.jsx)(\"p\",{id:\"nextjs__container_build_error_desc\",children:(0,i.jsx)(\"small\",{children:\"This error occurred during the build process and can only be dismissed by fixing the error.\"})})})]})]})})})};t.BuildError=f;t.styles=(0,d.noop)`\n .nextjs-container-build-error-header > h4 {\n line-height: 1.5;\n margin: 0;\n padding: 0;\n }\n\n .nextjs-container-build-error-body footer {\n margin-top: var(--size-gap);\n }\n .nextjs-container-build-error-body footer p {\n margin: 0;\n }\n\n .nextjs-container-build-error-body small {\n color: var(--color-font);\n }\n`},4355:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.Errors=void 0;const i=r(505);const s=a(r(7522));const l=r(5851);const u=r(5651);const c=r(2732);const d=r(8278);const f=r(1120);const p=r(403);const m=r(5233);const v=r(8910);const b=r(865);const g=r(2484);function getErrorSignature(e){const{event:t}=e;switch(t.type){case l.TYPE_UNHANDLED_ERROR:case l.TYPE_UNHANDLED_REJECTION:{return`${t.reason.name}::${t.reason.message}::${t.reason.stack}`}default:{}}const r=t;return\"\"}const h=function HotlinkedText(e){const{text:t}=e;const r=/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/i;return(0,i.jsx)(i.Fragment,{children:r.test(t)?t.split(\" \").map(((e,t,n)=>{if(r.test(e)){const o=r.exec(e);return(0,i.jsxs)(s.Fragment,{children:[o&&(0,i.jsx)(\"a\",{href:o[0],target:\"_blank\",rel:\"noreferrer noopener\",children:e}),t===n.length-1?\"\":\" \"]},`link-${t}`)}return t===n.length-1?(0,i.jsx)(s.Fragment,{children:e},`text-${t}`):(0,i.jsxs)(s.Fragment,{children:[e,\" \"]},`text-${t}`)})):t})};const y=function Errors({errors:e}){const[t,r]=s.useState({});const[n,o]=s.useMemo((()=>{let r=[];let n=null;for(let o=0;o0){const t=e[o-1];if(getErrorSignature(t)===getErrorSignature(a)){continue}}n=a;break}return[r,n]}),[e,t]);const a=s.useMemo((()=>n.length<1&&Boolean(e.length)),[e.length,n.length]);s.useEffect((()=>{if(o==null){return}let e=true;(0,p.getErrorByType)(o).then((t=>{if(e){r((e=>({...e,[t.id]:t})))}}),(()=>{}));return()=>{e=false}}),[o]);const[l,v]=s.useState(\"fullscreen\");const[y,x]=s.useState(0);const _=s.useCallback((e=>{e?.preventDefault();x((e=>Math.max(0,e-1)))}),[]);const w=s.useCallback((e=>{e?.preventDefault();x((e=>Math.max(0,Math.min(n.length-1,e+1))))}),[n.length]);const E=s.useMemo((()=>n[y]??null),[y,n]);s.useEffect((()=>{if(e.length<1){r({});v(\"hidden\");x(0)}}),[e.length]);const j=s.useCallback((e=>{e?.preventDefault();v(\"minimized\")}),[]);const O=s.useCallback((e=>{e?.preventDefault();v(\"hidden\")}),[]);const k=s.useCallback((e=>{e?.preventDefault();v(\"fullscreen\")}),[]);if(e.length<1||E==null){return null}if(a){return(0,i.jsx)(d.Overlay,{})}if(l===\"hidden\"){return null}if(l===\"minimized\"){return(0,i.jsx)(f.Toast,{className:\"nextjs-toast-errors-parent\",onClick:k,children:(0,i.jsxs)(\"div\",{className:\"nextjs-toast-errors\",children:[(0,i.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[(0,i.jsx)(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),(0,i.jsx)(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\"}),(0,i.jsx)(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\"})]}),(0,i.jsxs)(\"span\",{children:[n.length,\" error\",n.length>1?\"s\":\"\"]}),(0,i.jsx)(\"button\",{\"data-nextjs-toast-errors-hide-button\":true,className:\"nextjs-toast-errors-hide-button\",type:\"button\",onClick:e=>{e.stopPropagation();O()},\"aria-label\":\"Hide Errors\",children:(0,i.jsx)(b.CloseIcon,{})})]})})}const S=[\"server\",\"edge-server\"].includes((0,m.getErrorSource)(E.error)||\"\");return(0,i.jsx)(d.Overlay,{children:(0,i.jsx)(u.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_errors_label\",\"aria-describedby\":\"nextjs__container_errors_desc\",onClose:S?undefined:j,children:(0,i.jsxs)(u.DialogContent,{children:[(0,i.jsxs)(u.DialogHeader,{className:\"nextjs-container-errors-header\",children:[(0,i.jsx)(c.LeftRightDialogHeader,{previous:y>0?_:null,next:y h1 {\n font-size: var(--size-font-big);\n line-height: var(--size-font-bigger);\n font-weight: bold;\n margin: 0;\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\n }\n .nextjs-container-errors-header small {\n font-size: var(--size-font-small);\n color: var(--color-accents-1);\n margin-left: var(--size-gap-double);\n }\n .nextjs-container-errors-header small > span {\n font-family: var(--font-stack-monospace);\n }\n .nextjs-container-errors-header > p {\n font-family: var(--font-stack-monospace);\n font-size: var(--size-font-small);\n line-height: var(--size-font-big);\n font-weight: bold;\n margin: 0;\n margin-top: var(--size-gap-half);\n color: var(--color-ansi-red);\n white-space: pre-wrap;\n }\n .nextjs-container-errors-header > div > small {\n margin: 0;\n margin-top: var(--size-gap-half);\n }\n .nextjs-container-errors-header > p > a {\n color: var(--color-ansi-red);\n }\n\n .nextjs-container-errors-body > h2:not(:first-child) {\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\n }\n .nextjs-container-errors-body > h2 {\n margin-bottom: var(--size-gap);\n font-size: var(--size-font-big);\n }\n\n .nextjs-toast-errors-parent {\n cursor: pointer;\n transition: transform 0.2s ease;\n }\n .nextjs-toast-errors-parent:hover {\n transform: scale(1.1);\n }\n .nextjs-toast-errors {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n }\n .nextjs-toast-errors > svg {\n margin-right: var(--size-gap);\n }\n .nextjs-toast-errors-hide-button {\n margin-left: var(--size-gap-triple);\n border: none;\n background: none;\n color: var(--color-ansi-bright-white);\n padding: 0;\n transition: opacity 0.25s ease;\n opacity: 0.7;\n }\n .nextjs-toast-errors-hide-button:hover {\n opacity: 1;\n }\n`},2484:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.RuntimeError=t.styles=void 0;const i=r(505);const s=a(r(7522));const l=r(1413);const u=r(8910);const c=r(7504);const d=function CallStackFrame({frame:e}){const t=e.originalStackFrame??e.sourceStackFrame;const r=Boolean(e.originalCodeFrame);const n=s.useCallback((()=>{if(!r)return;const e=new URLSearchParams;for(const r in t){e.append(r,(t[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${e.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[r,t]);return(0,i.jsxs)(\"div\",{\"data-nextjs-call-stack-frame\":true,children:[(0,i.jsx)(\"h3\",{\"data-nextjs-frame-expanded\":Boolean(e.expanded),children:t.methodName}),(0,i.jsxs)(\"div\",{\"data-has-source\":r?\"true\":undefined,tabIndex:r?10:undefined,role:r?\"link\":undefined,onClick:n,title:r?\"Click to open in your editor\":undefined,children:[(0,i.jsx)(\"span\",{children:(0,c.getFrameSource)(t)}),(0,i.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[(0,i.jsx)(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),(0,i.jsx)(\"polyline\",{points:\"15 3 21 3 21 9\"}),(0,i.jsx)(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})]})]})]})};const f=function RuntimeError({error:e}){const t=s.useMemo((()=>e.frames.findIndex((e=>e.expanded&&Boolean(e.originalCodeFrame)&&Boolean(e.originalStackFrame)))),[e.frames]);const r=s.useMemo((()=>e.frames[t]??null),[e.frames,t]);const n=s.useMemo((()=>t<0?[]:e.frames.slice(0,t)),[e.frames,t]);const[o,a]=s.useState(r==null);const u=s.useCallback((()=>{a((e=>!e))}),[]);const c=s.useMemo((()=>n.filter((e=>e.expanded||o))),[o,n]);const f=s.useMemo((()=>e.frames.slice(t+1)),[e.frames,t]);const p=s.useMemo((()=>f.filter((e=>e.expanded||o))),[o,f]);const m=s.useMemo((()=>f.length!==p.length||o&&r!=null),[o,f.length,r,p.length]);return(0,i.jsxs)(s.Fragment,{children:[r?(0,i.jsxs)(s.Fragment,{children:[(0,i.jsx)(\"h2\",{children:\"Source\"}),c.map(((e,t)=>(0,i.jsx)(d,{frame:e},`leading-frame-${t}-${o}`))),(0,i.jsx)(l.CodeFrame,{stackFrame:r.originalStackFrame,codeFrame:r.originalCodeFrame})]}):undefined,e.componentStack?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(\"h2\",{children:\"Component Stack\"}),e.componentStack.map(((e,t)=>(0,i.jsx)(\"div\",{\"data-nextjs-component-stack-frame\":true,children:(0,i.jsx)(\"h3\",{children:e})},t)))]}):null,p.length?(0,i.jsxs)(s.Fragment,{children:[(0,i.jsx)(\"h2\",{children:\"Call Stack\"}),p.map(((e,t)=>(0,i.jsx)(d,{frame:e},`call-stack-${t}-${o}`)))]}):undefined,m?(0,i.jsx)(s.Fragment,{children:(0,i.jsxs)(\"button\",{tabIndex:10,\"data-nextjs-data-runtime-error-collapsed-action\":true,type:\"button\",onClick:u,children:[o?\"Hide\":\"Show\",\" collapsed frames\"]})}):undefined]})};t.RuntimeError=f;t.styles=(0,u.noop)`\n button[data-nextjs-data-runtime-error-collapsed-action] {\n background: none;\n border: none;\n padding: 0;\n font-size: var(--size-font-small);\n line-height: var(--size-font-bigger);\n color: var(--color-accents-3);\n }\n\n [data-nextjs-call-stack-frame]:not(:last-child),\n [data-nextjs-component-stack-frame]:not(:last-child) {\n margin-bottom: var(--size-gap-double);\n }\n\n [data-nextjs-call-stack-frame] > h3,\n [data-nextjs-component-stack-frame] > h3 {\n margin-top: 0;\n margin-bottom: var(--size-gap);\n font-family: var(--font-stack-monospace);\n color: var(--color-stack-h6);\n }\n [data-nextjs-call-stack-frame] > h3[data-nextjs-frame-expanded='false'] {\n color: var(--color-stack-headline);\n }\n [data-nextjs-call-stack-frame] > div {\n display: flex;\n align-items: center;\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\n font-size: var(--size-font-small);\n color: var(--color-stack-subline);\n }\n [data-nextjs-call-stack-frame] > div > svg {\n width: auto;\n height: var(--size-font-small);\n margin-left: var(--size-gap);\n\n display: none;\n }\n\n [data-nextjs-call-stack-frame] > div[data-has-source] {\n cursor: pointer;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\n display: unset;\n }\n`},403:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.getErrorByType=void 0;const n=r(5851);const o=r(5233);const a=r(7504);async function getErrorByType(e){const{id:t,event:r}=e;switch(r.type){case n.TYPE_UNHANDLED_ERROR:case n.TYPE_UNHANDLED_REJECTION:{const e={id:t,runtime:true,error:r.reason,frames:await(0,a.getOriginalStackFrames)(r.frames,(0,o.getErrorSource)(r.reason),r.reason.toString())};if(r.type===n.TYPE_UNHANDLED_ERROR){e.componentStack=r.componentStack}return e}default:{break}}const i=r;throw new Error(\"type system invariant violation\")}t.getErrorByType=getErrorByType},5233:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.getServerError=t.decorateServerError=t.getErrorSource=t.getFilesystemFrame=void 0;const n=r(5974);function getFilesystemFrame(e){const t={...e};if(typeof t.file===\"string\"){if(t.file.startsWith(\"/\")||/^[a-z]:\\\\/i.test(t.file)||t.file.startsWith(\"\\\\\\\\\")){t.file=`file://${t.file}`}}return t}t.getFilesystemFrame=getFilesystemFrame;const o=Symbol(\"NextjsError\");function getErrorSource(e){return e[o]||null}t.getErrorSource=getErrorSource;function decorateServerError(e,t){Object.defineProperty(e,o,{writable:false,enumerable:false,configurable:false,value:t})}t.decorateServerError=decorateServerError;function getServerError(e,t){let r;try{throw new Error(e.message)}catch(e){r=e}r.name=e.name;try{r.stack=`${r.toString()}\\n${(0,n.parse)(e.stack).map(getFilesystemFrame).map((e=>{let t=` at ${e.methodName}`;if(e.file){let r=e.file;if(e.lineNumber){r+=`:${e.lineNumber}`;if(e.column){r+=`:${e.column}`}}t+=` (${r})`}return t})).join(\"\\n\")}`}catch{r.stack=e.stack}decorateServerError(r,t);return r}t.getServerError=getServerError},8910:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.noop=void 0;function noop(e,...t){const r=e.length-1;return e.slice(0,r).reduce(((e,r,n)=>e+r+t[n]),\"\")+e[r]}t.noop=noop},636:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.parseStack=void 0;const n=r(5974);const o=/\\/_next(\\/static\\/.+)/;function parseStack(e){const t=(0,n.parse)(e);return t.map((e=>{try{const t=new URL(e.file);const r=o.exec(t.pathname);if(r){const t=\"/app/.next\"?.replace(/\\\\/g,\"/\")?.replace(/\\/$/,\"\");if(t){e.file=\"file://\"+t.concat(r.pop())}}}catch{}return e}))}t.parseStack=parseStack},7504:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.getFrameSource=t.getOriginalStackFrames=t.getOriginalStackFrame=void 0;function getOriginalStackFrame(e,t,r){async function _getOriginalStackFrame(){const n=new URLSearchParams;n.append(\"isServer\",String(t===\"server\"));n.append(\"isEdgeServer\",String(t===\"edge-server\"));n.append(\"errorMessage\",r);for(const t in e){n.append(t,(e[t]??\"\").toString())}const o=new AbortController;const a=setTimeout((()=>o.abort()),3e3);const i=await self.fetch(`${ false||\"\"}/__nextjs_original-stack-frame?${n.toString()}`,{signal:o.signal}).finally((()=>{clearTimeout(a)}));if(!i.ok||i.status===204){return Promise.reject(new Error(await i.text()))}const s=await i.json();return{error:false,reason:null,external:false,expanded:!Boolean((e.file?.includes(\"node_modules\")||s.originalStackFrame?.file?.includes(\"node_modules\"))??true),sourceStackFrame:e,originalStackFrame:s.originalStackFrame,originalCodeFrame:s.originalCodeFrame||null}}if(!(e.file?.startsWith(\"webpack-internal:\")||e.file?.startsWith(\"file:\"))){return Promise.resolve({error:false,reason:null,external:true,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})}return _getOriginalStackFrame().catch((t=>({error:true,reason:t?.message??t?.toString()??\"Unknown Error\",external:false,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})))}t.getOriginalStackFrame=getOriginalStackFrame;function getOriginalStackFrames(e,t,r){return Promise.all(e.map((e=>getOriginalStackFrame(e,t,r))))}t.getOriginalStackFrames=getOriginalStackFrames;function getFrameSource(e){let t=\"\";try{const r=new URL(e.file);if(typeof globalThis!==\"undefined\"&&globalThis.location?.origin!==r.origin){if(r.origin===\"null\"){t+=r.protocol}else{t+=r.origin}}t+=r.pathname;t+=\" \"}catch{t+=(e.file||\"(unknown)\")+\" \"}if(e.lineNumber!=null){if(e.column!=null){t+=`(${e.lineNumber}:${e.column}) `}else{t+=`(${e.lineNumber}) `}}return t.slice(0,-1)}t.getFrameSource=getFrameSource},7169:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.useOnClickOutside=void 0;const i=a(r(7522));function useOnClickOutside(e,t){i.useEffect((()=>{if(e==null||t==null){return}const listener=r=>{if(!e||e.contains(r.target)){return}t(r)};const r=e.getRootNode();r.addEventListener(\"mousedown\",listener);r.addEventListener(\"touchstart\",listener);return function(){r.removeEventListener(\"mousedown\",listener);r.removeEventListener(\"touchstart\",listener)}}),[t,e])}t.useOnClickOutside=useOnClickOutside},865:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.CloseIcon=void 0;const n=r(505);const CloseIcon=()=>(0,n.jsxs)(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[(0,n.jsx)(\"path\",{d:\"M18 6L6 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),(0,n.jsx)(\"path\",{d:\"M6 6L18 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})]});t.CloseIcon=CloseIcon},884:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Base=void 0;const n=r(505);const o=r(8910);function Base(){return(0,n.jsx)(\"style\",{children:(0,o.noop)`\n :host {\n --size-gap-half: 4px;\n --size-gap: 8px;\n --size-gap-double: 16px;\n --size-gap-triple: 24px;\n --size-gap-quad: 32px;\n\n --size-font-small: 14px;\n --size-font: 16px;\n --size-font-big: 20px;\n --size-font-bigger: 24px;\n\n --color-background: white;\n --color-font: #757575;\n --color-backdrop: rgba(17, 17, 17, 0.2);\n\n --color-stack-h6: #222;\n --color-stack-headline: #666;\n --color-stack-subline: #999;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono',\n Menlo, Courier, monospace;\n\n --color-ansi-selection: rgba(95, 126, 151, 0.48);\n --color-ansi-bg: #111111;\n --color-ansi-fg: #cccccc;\n\n --color-ansi-white: #777777;\n --color-ansi-black: #141414;\n --color-ansi-blue: #00aaff;\n --color-ansi-cyan: #88ddff;\n --color-ansi-green: #98ec65;\n --color-ansi-magenta: #aa88ff;\n --color-ansi-red: #ff5555;\n --color-ansi-yellow: #ffcc33;\n --color-ansi-bright-white: #ffffff;\n --color-ansi-bright-black: #777777;\n --color-ansi-bright-blue: #33bbff;\n --color-ansi-bright-cyan: #bbecff;\n --color-ansi-bright-green: #b6f292;\n --color-ansi-bright-magenta: #cebbff;\n --color-ansi-bright-red: #ff8888;\n --color-ansi-bright-yellow: #ffd966;\n }\n\n @media (prefers-color-scheme: dark) {\n :host {\n --color-background: rgb(28, 28, 30);\n --color-font: white;\n --color-backdrop: rgb(44, 44, 46);\n\n --color-stack-h6: rgb(200, 200, 204);\n --color-stack-headline: rgb(99, 99, 102);\n --color-stack-subline: rgba(142, 142, 147);\n\n --color-accents-3: rgb(118, 118, 118);\n }\n }\n\n .mono {\n font-family: var(--font-stack-monospace);\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-bottom: var(--size-gap);\n font-weight: 500;\n line-height: 1.5;\n }\n `})}t.Base=Base},4464:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.ComponentStyles=void 0;const n=r(505);const o=r(399);const a=r(5651);const i=r(6543);const s=r(993);const l=r(5488);const u=r(1120);const c=r(5936);const d=r(4355);const f=r(2484);const p=r(8910);function ComponentStyles(){return(0,n.jsx)(\"style\",{children:(0,p.noop)`\n ${s.styles}\n ${u.styles}\n ${a.styles}\n ${i.styles}\n ${o.styles}\n ${l.styles}\n \n ${c.styles}\n ${d.styles}\n ${f.styles}\n `})}t.ComponentStyles=ComponentStyles},9495:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.CssReset=void 0;const n=r(505);const o=r(8910);function CssReset(){return(0,n.jsx)(\"style\",{children:(0,o.noop)`\n :host {\n all: initial;\n\n /* the direction property is not reset by 'all' */\n direction: ltr;\n }\n\n /*!\n * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n\n article,\n aside,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n nav,\n section {\n display: block;\n }\n\n :host {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--color-font);\n text-align: left;\n background-color: #fff;\n }\n\n [tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n }\n\n hr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n margin-bottom: 8px;\n }\n\n p {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n abbr[title],\n abbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n }\n\n address {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n }\n\n ol,\n ul,\n dl {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-bottom: 0;\n }\n\n dt {\n font-weight: 700;\n }\n\n dd {\n margin-bottom: 8px;\n margin-left: 0;\n }\n\n blockquote {\n margin: 0 0 16px;\n }\n\n b,\n strong {\n font-weight: bolder;\n }\n\n small {\n font-size: 80%;\n }\n\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n sup {\n top: -0.5em;\n }\n\n a {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n }\n\n a:hover {\n color: #0056b3;\n text-decoration: underline;\n }\n\n a:not([href]) {\n color: inherit;\n text-decoration: none;\n }\n\n a:not([href]):hover {\n color: inherit;\n text-decoration: none;\n }\n\n pre,\n code,\n kbd,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas,\n 'Liberation Mono', 'Courier New', monospace;\n font-size: 1em;\n }\n\n pre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n }\n\n figure {\n margin: 0 0 16px;\n }\n\n img {\n vertical-align: middle;\n border-style: none;\n }\n\n svg {\n overflow: hidden;\n vertical-align: middle;\n }\n\n table {\n border-collapse: collapse;\n }\n\n caption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n }\n\n th {\n text-align: inherit;\n }\n\n label {\n display: inline-block;\n margin-bottom: 8px;\n }\n\n button {\n border-radius: 0;\n }\n\n button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n\n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n button,\n input {\n overflow: visible;\n }\n\n button,\n select {\n text-transform: none;\n }\n\n select {\n word-wrap: normal;\n }\n\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n -webkit-appearance: button;\n }\n\n button:not(:disabled),\n [type='button']:not(:disabled),\n [type='reset']:not(:disabled),\n [type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n button::-moz-focus-inner,\n [type='button']::-moz-focus-inner,\n [type='reset']::-moz-focus-inner,\n [type='submit']::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n\n input[type='radio'],\n input[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n }\n\n input[type='date'],\n input[type='time'],\n input[type='datetime-local'],\n input[type='month'] {\n -webkit-appearance: listbox;\n }\n\n textarea {\n overflow: auto;\n resize: vertical;\n }\n\n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n\n legend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 8px;\n font-size: 24px;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n height: auto;\n }\n\n [type='search'] {\n outline-offset: -2px;\n -webkit-appearance: none;\n }\n\n [type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n }\n\n output {\n display: inline-block;\n }\n\n summary {\n display: list-item;\n cursor: pointer;\n }\n\n template {\n display: none;\n }\n\n [hidden] {\n display: none !important;\n }\n `})}t.CssReset=CssReset},7997:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/anser */ \"./node_modules/next/dist/compiled/anser/index.js\")},7292:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/css.escape */ \"./node_modules/next/dist/compiled/css.escape/css.escape.js\")},7709:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/platform */ \"./node_modules/next/dist/compiled/platform/platform.js\")},5974:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/stacktrace-parser */ \"./node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\")},7518:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\")},7522:function(e){e.exports=__webpack_require__(/*! react */ \"./node_modules/react/index.js\")},2255:function(e){e.exports=__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var o=t[r]={exports:{}};var a=true;try{e[r].call(o.exports,o,o.exports,__nccwpck_require__);a=false}finally{if(a)delete t[r]}return o.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r=__nccwpck_require__(5204);module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50LmpzIiwibWFwcGluZ3MiOiI7QUFBQSxZQUFZLGFBQWEsT0FBTztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHNDQUFzQyw0Q0FBNEMscUJBQXFCLDRCQUE0Qiw2RUFBNkUsaUJBQWlCLDJCQUEyQixJQUFJLG1CQUFtQixhQUFhLHdCQUF3QixVQUFVLDJDQUEyQyxhQUFhLFNBQVMsWUFBWSxLQUFLLEtBQUssZ0NBQWdDLHFEQUFxRCxZQUFZLEdBQUcsOEJBQThCLGFBQWEsU0FBUyxzREFBc0QsT0FBTyxHQUFHLCtCQUErQix3Q0FBd0MsYUFBYSxZQUFZLFNBQVMsY0FBYyx3REFBd0QsTUFBTSxrQkFBa0IsTUFBTSxZQUFZLG1CQUFtQixLQUFLLHVCQUF1QixnQkFBZ0IsZ0JBQWdCLFdBQVcsTUFBTSxPQUFPLFlBQVksV0FBVyxLQUFLLG1CQUFtQixtQkFBbUIsVUFBVTtBQUNoaUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBbUMsRUFBRSxZQUFZLGFBQWEsY0FBYyxjQUFjLFlBQVksWUFBWSxpQkFBaUIsWUFBWSxZQUFZLFlBQVksWUFBWSxZQUFZLFlBQVksWUFBWSxZQUFZLFlBQVksWUFBWSxZQUFZLFlBQVksWUFBWSxZQUFZLFlBQVksWUFBWSxZQUFZLDJDQUEyQyxpQkFBaUIscUJBQXFCLG9CQUFvQiwrQkFBK0IseUJBQXlCLHNCQUFzQixzQkFBc0IscUJBQXFCLHlCQUF5QixzQkFBc0IsMkJBQTJCLGtCQUFrQixrQkFBa0IsbUJBQW1CLDBCQUEwQix5QkFBeUIsbUJBQW1CLHVCQUF1Qiw4QkFBOEIsdUJBQXVCLDJCQUEyQixrREFBa0QsbUJBQW1CLDBCQUEwQixrQ0FBa0MsWUFBWSxvQkFBb0IsMEJBQTBCLFNBQVMsWUFBWSwyREFBMkQsbUJBQW1CLHNEQUFzRCxJQUFJ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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsRUFBRSxvQkFBb0Isa0JBQWtCLFVBQVUsbUJBQU8sQ0FBQyxrRkFBMEIsRUFBRSxrQkFBa0IsVUFBVSxtQkFBTyxDQUFDLGlHQUErQixFQUFFLGtCQUFrQixVQUFVLG1CQUFPLENBQUMsMkZBQTZCLEVBQUUsa0JBQWtCLFVBQVUsbUJBQU8sQ0FBQywySEFBc0MsRUFBRSxrQkFBa0IsVUFBVSxtQkFBTyxDQUFDLDRGQUErQixFQUFFLGtCQUFrQixVQUFVLG1CQUFPLENBQUMsNENBQU8sRUFBRSxrQkFBa0IsVUFBVSxtQkFBTyxDQUFDLG9EQUFXLElBQUksU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUkscURBQXFELFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLG1FQUFtRSxTQUFTLEtBQUssZ0NBQWdDLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50LmpzPzRkMzAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezM1NDA6ZnVuY3Rpb24oZSl7XG4vKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9cbnZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2Z1bmN0aW9uIHRvT2JqZWN0KGUpe2lmKGU9PT1udWxsfHxlPT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWRcIil9cmV0dXJuIE9iamVjdChlKX1mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pe3JldHVybiBmYWxzZX12YXIgZT1uZXcgU3RyaW5nKFwiYWJjXCIpO2VbNV09XCJkZVwiO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdPT09XCI1XCIpe3JldHVybiBmYWxzZX12YXIgdD17fTtmb3IodmFyIHI9MDtyPDEwO3IrKyl7dFtcIl9cIitTdHJpbmcuZnJvbUNoYXJDb2RlKHIpXT1yfXZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSk7aWYobi5qb2luKFwiXCIpIT09XCIwMTIzNDU2Nzg5XCIpe3JldHVybiBmYWxzZX12YXIgbz17fTtcImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7b1tlXT1lfSkpO2lmKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sbykpLmpvaW4oXCJcIikhPT1cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIpe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1jYXRjaChlKXtyZXR1cm4gZmFsc2V9fWUuZXhwb3J0cz1zaG91bGRVc2VOYXRpdmUoKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGUsbyl7dmFyIGE7dmFyIGk9dG9PYmplY3QoZSk7dmFyIHM7Zm9yKHZhciBsPTE7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyl7YT1PYmplY3QoYXJndW1lbnRzW2xdKTtmb3IodmFyIHUgaW4gYSl7aWYoci5jYWxsKGEsdSkpe2lbdV09YVt1XX19aWYodCl7cz10KGEpO2Zvcih2YXIgYz0wO2M8cy5sZW5ndGg7YysrKXtpZihuLmNhbGwoYSxzW2NdKSl7aVtzW2NdXT1hW3NbY11dfX19fXJldHVybiBpfX0sMzAzNzpmdW5jdGlvbihlLHQscil7XG4vKiogQGxpY2Vuc2UgUmVhY3QgdjE3LjAuMlxuICogcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaWYocHJvY2Vzcy5lbnYuTk9ERV9FTlYhPT1cInByb2R1Y3Rpb25cIil7KGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig3NTIyKTt2YXIgbj1yKDM1NDApO3ZhciBvPTYwMTAzO3ZhciBhPTYwMTA2O3QuRnJhZ21lbnQ9NjAxMDc7dmFyIGk9NjAxMDg7dmFyIHM9NjAxMTQ7dmFyIGw9NjAxMDk7dmFyIHU9NjAxMTA7dmFyIGM9NjAxMTI7dmFyIGQ9NjAxMTM7dmFyIGY9NjAxMjA7dmFyIHA9NjAxMTU7dmFyIG09NjAxMTY7dmFyIHY9NjAxMjE7dmFyIGI9NjAxMjI7dmFyIGc9NjAxMTc7dmFyIGg9NjAxMTk7dmFyIHk9NjAxMjg7dmFyIHg9NjAxMjk7dmFyIF89NjAxMzA7dmFyIHc9NjAxMzE7aWYodHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIiYmU3ltYm9sLmZvcil7dmFyIEU9U3ltYm9sLmZvcjtvPUUoXCJyZWFjdC5lbGVtZW50XCIpO2E9RShcInJlYWN0LnBvcnRhbFwiKTt0LkZyYWdtZW50PUUoXCJyZWFjdC5mcmFnbWVudFwiKTtpPUUoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTtzPUUoXCJyZWFjdC5wcm9maWxlclwiKTtsPUUoXCJyZWFjdC5wcm92aWRlclwiKTt1PUUoXCJyZWFjdC5jb250ZXh0XCIpO2M9RShcInJlYWN0LmZvcndhcmRfcmVmXCIpO2Q9RShcInJlYWN0LnN1c3BlbnNlXCIpO2Y9RShcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik7cD1FKFwicmVhY3QubWVtb1wiKTttPUUoXCJyZWFjdC5sYXp5XCIpO3Y9RShcInJlYWN0LmJsb2NrXCIpO2I9RShcInJlYWN0LnNlcnZlci5ibG9ja1wiKTtnPUUoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTtoPUUoXCJyZWFjdC5zY29wZVwiKTt5PUUoXCJyZWFjdC5vcGFxdWUuaWRcIik7eD1FKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKTtfPUUoXCJyZWFjdC5vZmZzY3JlZW5cIik7dz1FKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKX12YXIgaj10eXBlb2YgU3ltYm9sPT09XCJmdW5jdGlvblwiJiZTeW1ib2wuaXRlcmF0b3I7dmFyIE89XCJAQGl0ZXJhdG9yXCI7ZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihlKXtpZihlPT09bnVsbHx8dHlwZW9mIGUhPT1cIm9iamVjdFwiKXtyZXR1cm4gbnVsbH12YXIgdD1qJiZlW2pdfHxlW09dO2lmKHR5cGVvZiB0PT09XCJmdW5jdGlvblwiKXtyZXR1cm4gdH1yZXR1cm4gbnVsbH12YXIgaz1lLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO2Z1bmN0aW9uIGVycm9yKGUpe3tmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheSh0PjE/dC0xOjApLG49MTtuPHQ7bisrKXtyW24tMV09YXJndW1lbnRzW25dfXByaW50V2FybmluZyhcImVycm9yXCIsZSxyKX19ZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGUsdCxyKXt7dmFyIG49ay5SZWFjdERlYnVnQ3VycmVudEZyYW1lO3ZhciBvPW4uZ2V0U3RhY2tBZGRlbmR1bSgpO2lmKG8hPT1cIlwiKXt0Kz1cIiVzXCI7cj1yLmNvbmNhdChbb10pfXZhciBhPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm5cIlwiK2V9KSk7YS51bnNoaWZ0KFwiV2FybmluZzogXCIrdCk7RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtlXSxjb25zb2xlLGEpfX12YXIgUz1mYWxzZTtmdW5jdGlvbiBpc1ZhbGlkRWxlbWVudFR5cGUoZSl7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wifHx0eXBlb2YgZT09PVwiZnVuY3Rpb25cIil7cmV0dXJuIHRydWV9aWYoZT09PXQuRnJhZ21lbnR8fGU9PT1zfHxlPT09eHx8ZT09PWl8fGU9PT1kfHxlPT09Znx8ZT09PXd8fFMpe3JldHVybiB0cnVlfWlmKHR5cGVvZiBlPT09XCJvYmplY3RcIiYmZSE9PW51bGwpe2lmKGUuJCR0eXBlb2Y9PT1tfHxlLiQkdHlwZW9mPT09cHx8ZS4kJHR5cGVvZj09PWx8fGUuJCR0eXBlb2Y9PT11fHxlLiQkdHlwZW9mPT09Y3x8ZS4kJHR5cGVvZj09PWd8fGUuJCR0eXBlb2Y9PT12fHxlWzBdPT09Yil7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1mdW5jdGlvbiBnZXRXcmFwcGVkTmFtZShlLHQscil7dmFyIG49dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHxcIlwiO3JldHVybiBlLmRpc3BsYXlOYW1lfHwobiE9PVwiXCI/citcIihcIituK1wiKVwiOnIpfWZ1bmN0aW9uIGdldENvbnRleHROYW1lKGUpe3JldHVybiBlLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIn1mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKGUpe2lmKGU9PW51bGwpe3JldHVybiBudWxsfXtpZih0eXBlb2YgZS50YWc9PT1cIm51bWJlclwiKXtlcnJvcihcIlJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWUoKS4gXCIrXCJUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCIpfX1pZih0eXBlb2YgZT09PVwiZnVuY3Rpb25cIil7cmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbH1pZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe3JldHVybiBlfXN3aXRjaChlKXtjYXNlIHQuRnJhZ21lbnQ6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgYTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgczpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSBpOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgZDpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBmOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYodHlwZW9mIGU9PT1cIm9iamVjdFwiKXtzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSB1OnZhciByPWU7cmV0dXJuIGdldENvbnRleHROYW1lKHIpK1wiLkNvbnN1bWVyXCI7Y2FzZSBsOnZhciBuPWU7cmV0dXJuIGdldENvbnRleHROYW1lKG4uX2NvbnRleHQpK1wiLlByb3ZpZGVyXCI7Y2FzZSBjOnJldHVybiBnZXRXcmFwcGVkTmFtZShlLGUucmVuZGVyLFwiRm9yd2FyZFJlZlwiKTtjYXNlIHA6cmV0dXJuIGdldENvbXBvbmVudE5hbWUoZS50eXBlKTtjYXNlIHY6cmV0dXJuIGdldENvbXBvbmVudE5hbWUoZS5fcmVuZGVyKTtjYXNlIG06e3ZhciBvPWU7dmFyIGI9by5fcGF5bG9hZDt2YXIgZz1vLl9pbml0O3RyeXtyZXR1cm4gZ2V0Q29tcG9uZW50TmFtZShnKGIpKX1jYXRjaChlKXtyZXR1cm4gbnVsbH19fX1yZXR1cm4gbnVsbH12YXIgQz0wO3ZhciBUO3ZhciBEO3ZhciBQO3ZhciBOO3ZhciBSO3ZhciBGO3ZhciBJO2Z1bmN0aW9uIGRpc2FibGVkTG9nKCl7fWRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZz10cnVlO2Z1bmN0aW9uIGRpc2FibGVMb2dzKCl7e2lmKEM9PT0wKXtUPWNvbnNvbGUubG9nO0Q9Y29uc29sZS5pbmZvO1A9Y29uc29sZS53YXJuO049Y29uc29sZS5lcnJvcjtSPWNvbnNvbGUuZ3JvdXA7Rj1jb25zb2xlLmdyb3VwQ29sbGFwc2VkO0k9Y29uc29sZS5ncm91cEVuZDt2YXIgZT17Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTp0cnVlLHZhbHVlOmRpc2FibGVkTG9nLHdyaXRhYmxlOnRydWV9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUse2luZm86ZSxsb2c6ZSx3YXJuOmUsZXJyb3I6ZSxncm91cDplLGdyb3VwQ29sbGFwc2VkOmUsZ3JvdXBFbmQ6ZX0pfUMrK319ZnVuY3Rpb24gcmVlbmFibGVMb2dzKCl7e0MtLTtpZihDPT09MCl7dmFyIGU9e2NvbmZpZ3VyYWJsZTp0cnVlLGVudW1lcmFibGU6dHJ1ZSx3cml0YWJsZTp0cnVlfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLHtsb2c6bih7fSxlLHt2YWx1ZTpUfSksaW5mbzpuKHt9LGUse3ZhbHVlOkR9KSx3YXJuOm4oe30sZSx7dmFsdWU6UH0pLGVycm9yOm4oe30sZSx7dmFsdWU6Tn0pLGdyb3VwOm4oe30sZSx7dmFsdWU6Un0pLGdyb3VwQ29sbGFwc2VkOm4oe30sZSx7dmFsdWU6Rn0pLGdyb3VwRW5kOm4oe30sZSx7dmFsdWU6SX0pfSl9aWYoQzwwKXtlcnJvcihcImRpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiBcIitcIlRoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiKX19fXZhciBBPWsuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcjt2YXIgTTtmdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShlLHQscil7e2lmKE09PT11bmRlZmluZWQpe3RyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3ZhciBuPWUuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7TT1uJiZuWzFdfHxcIlwifX1yZXR1cm5cIlxcblwiK00rZX19dmFyIEw9ZmFsc2U7dmFyIEI7e3ZhciBIPXR5cGVvZiBXZWFrTWFwPT09XCJmdW5jdGlvblwiP1dlYWtNYXA6TWFwO0I9bmV3IEh9ZnVuY3Rpb24gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShlLHQpe2lmKCFlfHxMKXtyZXR1cm5cIlwifXt2YXIgcj1CLmdldChlKTtpZihyIT09dW5kZWZpbmVkKXtyZXR1cm4gcn19dmFyIG47TD10cnVlO3ZhciBvPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXVuZGVmaW5lZDt2YXIgYTt7YT1BLmN1cnJlbnQ7QS5jdXJyZW50PW51bGw7ZGlzYWJsZUxvZ3MoKX10cnl7aWYodCl7dmFyIEZha2U9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRmFrZS5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpfX0pO2lmKHR5cGVvZiBSZWZsZWN0PT09XCJvYmplY3RcIiYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChGYWtlLFtdKX1jYXRjaChlKXtuPWV9UmVmbGVjdC5jb25zdHJ1Y3QoZSxbXSxGYWtlKX1lbHNle3RyeXtGYWtlLmNhbGwoKX1jYXRjaChlKXtuPWV9ZS5jYWxsKEZha2UucHJvdG90eXBlKX19ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChlKXtuPWV9ZSgpfX1jYXRjaCh0KXtpZih0JiZuJiZ0eXBlb2YgdC5zdGFjaz09PVwic3RyaW5nXCIpe3ZhciBpPXQuc3RhY2suc3BsaXQoXCJcXG5cIik7dmFyIHM9bi5zdGFjay5zcGxpdChcIlxcblwiKTt2YXIgbD1pLmxlbmd0aC0xO3ZhciB1PXMubGVuZ3RoLTE7d2hpbGUobD49MSYmdT49MCYmaVtsXSE9PXNbdV0pe3UtLX1mb3IoO2w+PTEmJnU+PTA7bC0tLHUtLSl7aWYoaVtsXSE9PXNbdV0pe2lmKGwhPT0xfHx1IT09MSl7ZG97bC0tO3UtLTtpZih1PDB8fGlbbF0hPT1zW3VdKXt2YXIgYz1cIlxcblwiK2lbbF0ucmVwbGFjZShcIiBhdCBuZXcgXCIsXCIgYXQgXCIpO3tpZih0eXBlb2YgZT09PVwiZnVuY3Rpb25cIil7Qi5zZXQoZSxjKX19cmV0dXJuIGN9fXdoaWxlKGw+PTEmJnU+PTApfWJyZWFrfX19fWZpbmFsbHl7TD1mYWxzZTt7QS5jdXJyZW50PWE7cmVlbmFibGVMb2dzKCl9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9b312YXIgZD1lP2UuZGlzcGxheU5hbWV8fGUubmFtZTpcIlwiO3ZhciBmPWQ/ZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoZCk6XCJcIjt7aWYodHlwZW9mIGU9PT1cImZ1bmN0aW9uXCIpe0Iuc2V0KGUsZil9fXJldHVybiBmfWZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShlLHQscil7e3JldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGUsZmFsc2UpfX1mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoZSl7dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuISEodCYmdC5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZSx0LHIpe2lmKGU9PW51bGwpe3JldHVyblwiXCJ9aWYodHlwZW9mIGU9PT1cImZ1bmN0aW9uXCIpe3tyZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShlLHNob3VsZENvbnN0cnVjdChlKSl9fWlmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7cmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKGUpfXN3aXRjaChlKXtjYXNlIGQ6cmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKFwiU3VzcGVuc2VcIik7Y2FzZSBmOnJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShcIlN1c3BlbnNlTGlzdFwiKX1pZih0eXBlb2YgZT09PVwib2JqZWN0XCIpe3N3aXRjaChlLiQkdHlwZW9mKXtjYXNlIGM6cmV0dXJuIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShlLnJlbmRlcik7Y2FzZSBwOnJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZS50eXBlLHQscik7Y2FzZSB2OnJldHVybiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUoZS5fcmVuZGVyKTtjYXNlIG06e3ZhciBuPWU7dmFyIG89bi5fcGF5bG9hZDt2YXIgYT1uLl9pbml0O3RyeXtyZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGEobyksdCxyKX1jYXRjaChlKXt9fX19cmV0dXJuXCJcIn12YXIgej17fTt2YXIgVz1rLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7ZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZSl7e2lmKGUpe3ZhciB0PWUuX293bmVyO3ZhciByPWRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlLnR5cGUsZS5fc291cmNlLHQ/dC50eXBlOm51bGwpO1cuc2V0RXh0cmFTdGFja0ZyYW1lKHIpfWVsc2V7Vy5zZXRFeHRyYVN0YWNrRnJhbWUobnVsbCl9fX1mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyhlLHQscixuLG8pe3t2YXIgYT1GdW5jdGlvbi5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7Zm9yKHZhciBpIGluIGUpe2lmKGEoZSxpKSl7dmFyIHM9dm9pZCAwO3RyeXtpZih0eXBlb2YgZVtpXSE9PVwiZnVuY3Rpb25cIil7dmFyIGw9RXJyb3IoKG58fFwiUmVhY3QgY2xhc3NcIikrXCI6IFwiK3IrXCIgdHlwZSBgXCIraStcImAgaXMgaW52YWxpZDsgXCIrXCJpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgXCIrdHlwZW9mIGVbaV0rXCJgLlwiK1wiVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuXCIpO2wubmFtZT1cIkludmFyaWFudCBWaW9sYXRpb25cIjt0aHJvdyBsfXM9ZVtpXSh0LGksbixyLG51bGwsXCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwiKX1jYXRjaChlKXtzPWV9aWYocyYmIShzIGluc3RhbmNlb2YgRXJyb3IpKXtzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChvKTtlcnJvcihcIiVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXNcIitcIiBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgXCIrXCJmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gXCIrXCJZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciBcIitcImNyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgXCIrXCJzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuXCIsbnx8XCJSZWFjdCBjbGFzc1wiLHIsaSx0eXBlb2Ygcyk7c2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCl9aWYocyBpbnN0YW5jZW9mIEVycm9yJiYhKHMubWVzc2FnZSBpbiB6KSl7eltzLm1lc3NhZ2VdPXRydWU7c2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobyk7ZXJyb3IoXCJGYWlsZWQgJXMgdHlwZTogJXNcIixyLHMubWVzc2FnZSk7c2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCl9fX19fXZhciBWPWsuUmVhY3RDdXJyZW50T3duZXI7dmFyICQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgVT17a2V5OnRydWUscmVmOnRydWUsX19zZWxmOnRydWUsX19zb3VyY2U6dHJ1ZX07dmFyIEs7dmFyIEc7dmFyIFo7e1o9e319ZnVuY3Rpb24gaGFzVmFsaWRSZWYoZSl7e2lmKCQuY2FsbChlLFwicmVmXCIpKXt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsXCJyZWZcIikuZ2V0O2lmKHQmJnQuaXNSZWFjdFdhcm5pbmcpe3JldHVybiBmYWxzZX19fXJldHVybiBlLnJlZiE9PXVuZGVmaW5lZH1mdW5jdGlvbiBoYXNWYWxpZEtleShlKXt7aWYoJC5jYWxsKGUsXCJrZXlcIikpe3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxcImtleVwiKS5nZXQ7aWYodCYmdC5pc1JlYWN0V2FybmluZyl7cmV0dXJuIGZhbHNlfX19cmV0dXJuIGUua2V5IT09dW5kZWZpbmVkfWZ1bmN0aW9uIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChlLHQpe3tpZih0eXBlb2YgZS5yZWY9PT1cInN0cmluZ1wiJiZWLmN1cnJlbnQmJnQmJlYuY3VycmVudC5zdGF0ZU5vZGUhPT10KXt2YXIgcj1nZXRDb21wb25lbnROYW1lKFYuY3VycmVudC50eXBlKTtpZighWltyXSl7ZXJyb3IoJ0NvbXBvbmVudCBcIiVzXCIgY29udGFpbnMgdGhlIHN0cmluZyByZWYgXCIlc1wiLiAnK1wiU3VwcG9ydCBmb3Igc3RyaW5nIHJlZnMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuIFwiK1wiVGhpcyBjYXNlIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBhbiBhcnJvdyBmdW5jdGlvbi4gXCIrXCJXZSBhc2sgeW91IHRvIG1hbnVhbGx5IGZpeCB0aGlzIGNhc2UgYnkgdXNpbmcgdXNlUmVmKCkgb3IgY3JlYXRlUmVmKCkgaW5zdGVhZC4gXCIrXCJMZWFybiBtb3JlIGFib3V0IHVzaW5nIHJlZnMgc2FmZWx5IGhlcmU6IFwiK1wiaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3N0cmljdC1tb2RlLXN0cmluZy1yZWZcIixnZXRDb21wb25lbnROYW1lKFYuY3VycmVudC50eXBlKSxlLnJlZik7WltyXT10cnVlfX19fWZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKGUsdCl7e3ZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXk9ZnVuY3Rpb24oKXtpZighSyl7Sz10cnVlO2Vycm9yKFwiJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgXCIrXCJpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lIFwiK1widmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCBcIitcInByb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcylcIix0KX19O3dhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZz10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwia2V5XCIse2dldDp3YXJuQWJvdXRBY2Nlc3NpbmdLZXksY29uZmlndXJhYmxlOnRydWV9KX19ZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIoZSx0KXt7dmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZj1mdW5jdGlvbigpe2lmKCFHKXtHPXRydWU7ZXJyb3IoXCIlczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCBcIitcImluIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgXCIrXCJ2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50IFwiK1wicHJvcC4gKGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zcGVjaWFsLXByb3BzKVwiLHQpfX07d2FybkFib3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJyZWZcIix7Z2V0Ondhcm5BYm91dEFjY2Vzc2luZ1JlZixjb25maWd1cmFibGU6dHJ1ZX0pfX12YXIgUmVhY3RFbGVtZW50PWZ1bmN0aW9uKGUsdCxyLG4sYSxpLHMpe3ZhciBsPXskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6dCxyZWY6cixwcm9wczpzLF9vd25lcjppfTt7bC5fc3RvcmU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGwuX3N0b3JlLFwidmFsaWRhdGVkXCIse2NvbmZpZ3VyYWJsZTpmYWxzZSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsdmFsdWU6ZmFsc2V9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcIl9zZWxmXCIse2NvbmZpZ3VyYWJsZTpmYWxzZSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOmZhbHNlLHZhbHVlOm59KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobCxcIl9zb3VyY2VcIix7Y29uZmlndXJhYmxlOmZhbHNlLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6ZmFsc2UsdmFsdWU6YX0pO2lmKE9iamVjdC5mcmVlemUpe09iamVjdC5mcmVlemUobC5wcm9wcyk7T2JqZWN0LmZyZWV6ZShsKX19cmV0dXJuIGx9O2Z1bmN0aW9uIGpzeERFVihlLHQscixuLG8pe3t2YXIgYTt2YXIgaT17fTt2YXIgcz1udWxsO3ZhciBsPW51bGw7aWYociE9PXVuZGVmaW5lZCl7cz1cIlwiK3J9aWYoaGFzVmFsaWRLZXkodCkpe3M9XCJcIit0LmtleX1pZihoYXNWYWxpZFJlZih0KSl7bD10LnJlZjt3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQodCxvKX1mb3IoYSBpbiB0KXtpZigkLmNhbGwodCxhKSYmIVUuaGFzT3duUHJvcGVydHkoYSkpe2lbYV09dFthXX19aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciB1PWUuZGVmYXVsdFByb3BzO2ZvcihhIGluIHUpe2lmKGlbYV09PT11bmRlZmluZWQpe2lbYV09dVthXX19fWlmKHN8fGwpe3ZhciBjPXR5cGVvZiBlPT09XCJmdW5jdGlvblwiP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJVbmtub3duXCI6ZTtpZihzKXtkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihpLGMpfWlmKGwpe2RlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKGksYyl9fXJldHVybiBSZWFjdEVsZW1lbnQoZSxzLGwsbyxuLFYuY3VycmVudCxpKX19dmFyIFk9ay5SZWFjdEN1cnJlbnRPd25lcjt2YXIgSj1rLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7ZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlKXt7aWYoZSl7dmFyIHQ9ZS5fb3duZXI7dmFyIHI9ZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGUudHlwZSxlLl9zb3VyY2UsdD90LnR5cGU6bnVsbCk7Si5zZXRFeHRyYVN0YWNrRnJhbWUocil9ZWxzZXtKLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKX19fXZhciBYO3tYPWZhbHNlfWZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KGUpe3tyZXR1cm4gdHlwZW9mIGU9PT1cIm9iamVjdFwiJiZlIT09bnVsbCYmZS4kJHR5cGVvZj09PW99fWZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpe3tpZihZLmN1cnJlbnQpe3ZhciBlPWdldENvbXBvbmVudE5hbWUoWS5jdXJyZW50LnR5cGUpO2lmKGUpe3JldHVyblwiXFxuXFxuQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYFwiK2UrXCJgLlwifX1yZXR1cm5cIlwifX1mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShlKXt7aWYoZSE9PXVuZGVmaW5lZCl7dmFyIHQ9ZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLFwiXCIpO3ZhciByPWUubGluZU51bWJlcjtyZXR1cm5cIlxcblxcbkNoZWNrIHlvdXIgY29kZSBhdCBcIit0K1wiOlwiK3IrXCIuXCJ9cmV0dXJuXCJcIn19dmFyIFE9e307ZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhlKXt7dmFyIHQ9Z2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7aWYoIXQpe3ZhciByPXR5cGVvZiBlPT09XCJzdHJpbmdcIj9lOmUuZGlzcGxheU5hbWV8fGUubmFtZTtpZihyKXt0PVwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIrcitcIj4uXCJ9fXJldHVybiB0fX1mdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGUsdCl7e2lmKCFlLl9zdG9yZXx8ZS5fc3RvcmUudmFsaWRhdGVkfHxlLmtleSE9bnVsbCl7cmV0dXJufWUuX3N0b3JlLnZhbGlkYXRlZD10cnVlO3ZhciByPWdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8odCk7aWYoUVtyXSl7cmV0dXJufVFbcl09dHJ1ZTt2YXIgbj1cIlwiO2lmKGUmJmUuX293bmVyJiZlLl9vd25lciE9PVkuY3VycmVudCl7bj1cIiBJdCB3YXMgcGFzc2VkIGEgY2hpbGQgZnJvbSBcIitnZXRDb21wb25lbnROYW1lKGUuX293bmVyLnR5cGUpK1wiLlwifXNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZSk7ZXJyb3IoJ0VhY2ggY2hpbGQgaW4gYSBsaXN0IHNob3VsZCBoYXZlIGEgdW5pcXVlIFwia2V5XCIgcHJvcC4nK1wiJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3dhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIixyLG4pO3NldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCl9fWZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKGUsdCl7e2lmKHR5cGVvZiBlIT09XCJvYmplY3RcIil7cmV0dXJufWlmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO2lmKGlzVmFsaWRFbGVtZW50KG4pKXt2YWxpZGF0ZUV4cGxpY2l0S2V5KG4sdCl9fX1lbHNlIGlmKGlzVmFsaWRFbGVtZW50KGUpKXtpZihlLl9zdG9yZSl7ZS5fc3RvcmUudmFsaWRhdGVkPXRydWV9fWVsc2UgaWYoZSl7dmFyIG89Z2V0SXRlcmF0b3JGbihlKTtpZih0eXBlb2Ygbz09PVwiZnVuY3Rpb25cIil7aWYobyE9PWUuZW50cmllcyl7dmFyIGE9by5jYWxsKGUpO3ZhciBpO3doaWxlKCEoaT1hLm5leHQoKSkuZG9uZSl7aWYoaXNWYWxpZEVsZW1lbnQoaS52YWx1ZSkpe3ZhbGlkYXRlRXhwbGljaXRLZXkoaS52YWx1ZSx0KX19fX19fX1mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlKXt7dmFyIHQ9ZS50eXBlO2lmKHQ9PT1udWxsfHx0PT09dW5kZWZpbmVkfHx0eXBlb2YgdD09PVwic3RyaW5nXCIpe3JldHVybn12YXIgcjtpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIil7cj10LnByb3BUeXBlc31lbHNlIGlmKHR5cGVvZiB0PT09XCJvYmplY3RcIiYmKHQuJCR0eXBlb2Y9PT1jfHx0LiQkdHlwZW9mPT09cCkpe3I9dC5wcm9wVHlwZXN9ZWxzZXtyZXR1cm59aWYocil7dmFyIG49Z2V0Q29tcG9uZW50TmFtZSh0KTtjaGVja1Byb3BUeXBlcyhyLGUucHJvcHMsXCJwcm9wXCIsbixlKX1lbHNlIGlmKHQuUHJvcFR5cGVzIT09dW5kZWZpbmVkJiYhWCl7WD10cnVlO3ZhciBvPWdldENvbXBvbmVudE5hbWUodCk7ZXJyb3IoXCJDb21wb25lbnQgJXMgZGVjbGFyZWQgYFByb3BUeXBlc2AgaW5zdGVhZCBvZiBgcHJvcFR5cGVzYC4gRGlkIHlvdSBtaXNzcGVsbCB0aGUgcHJvcGVydHkgYXNzaWdubWVudD9cIixvfHxcIlVua25vd25cIil9aWYodHlwZW9mIHQuZ2V0RGVmYXVsdFByb3BzPT09XCJmdW5jdGlvblwiJiYhdC5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQpe2Vycm9yKFwiZ2V0RGVmYXVsdFByb3BzIGlzIG9ubHkgdXNlZCBvbiBjbGFzc2ljIFJlYWN0LmNyZWF0ZUNsYXNzIFwiK1wiZGVmaW5pdGlvbnMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSBuYW1lZCBgZGVmYXVsdFByb3BzYCBpbnN0ZWFkLlwiKX19fWZ1bmN0aW9uIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlKXt7dmFyIHQ9T2JqZWN0LmtleXMoZS5wcm9wcyk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07aWYobiE9PVwiY2hpbGRyZW5cIiYmbiE9PVwia2V5XCIpe3NldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZSk7ZXJyb3IoXCJJbnZhbGlkIHByb3AgYCVzYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLiBcIitcIlJlYWN0LkZyYWdtZW50IGNhbiBvbmx5IGhhdmUgYGtleWAgYW5kIGBjaGlsZHJlbmAgcHJvcHMuXCIsbik7c2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTticmVha319aWYoZS5yZWYhPT1udWxsKXtzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGUpO2Vycm9yKFwiSW52YWxpZCBhdHRyaWJ1dGUgYHJlZmAgc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC5cIik7c2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKX19fWZ1bmN0aW9uIGpzeFdpdGhWYWxpZGF0aW9uKGUscixuLGEsaSxzKXt7dmFyIGw9aXNWYWxpZEVsZW1lbnRUeXBlKGUpO2lmKCFsKXt2YXIgdT1cIlwiO2lmKGU9PT11bmRlZmluZWR8fHR5cGVvZiBlPT09XCJvYmplY3RcIiYmZSE9PW51bGwmJk9iamVjdC5rZXlzKGUpLmxlbmd0aD09PTApe3UrPVwiIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlIFwiK1wiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwifXZhciBjPWdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKGkpO2lmKGMpe3UrPWN9ZWxzZXt1Kz1nZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKX12YXIgZDtpZihlPT09bnVsbCl7ZD1cIm51bGxcIn1lbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpe2Q9XCJhcnJheVwifWVsc2UgaWYoZSE9PXVuZGVmaW5lZCYmZS4kJHR5cGVvZj09PW8pe2Q9XCI8XCIrKGdldENvbXBvbmVudE5hbWUoZS50eXBlKXx8XCJVbmtub3duXCIpK1wiIC8+XCI7dT1cIiBEaWQgeW91IGFjY2lkZW50YWxseSBleHBvcnQgYSBKU1ggbGl0ZXJhbCBpbnN0ZWFkIG9mIGEgY29tcG9uZW50P1wifWVsc2V7ZD10eXBlb2YgZX1lcnJvcihcIlJlYWN0LmpzeDogdHlwZSBpcyBpbnZhbGlkIC0tIGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgXCIrXCJidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlIFwiK1wiY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXNcIixkLHUpfXZhciBmPWpzeERFVihlLHIsbixpLHMpO2lmKGY9PW51bGwpe3JldHVybiBmfWlmKGwpe3ZhciBwPXIuY2hpbGRyZW47aWYocCE9PXVuZGVmaW5lZCl7aWYoYSl7aWYoQXJyYXkuaXNBcnJheShwKSl7Zm9yKHZhciBtPTA7bTxwLmxlbmd0aDttKyspe3ZhbGlkYXRlQ2hpbGRLZXlzKHBbbV0sZSl9aWYoT2JqZWN0LmZyZWV6ZSl7T2JqZWN0LmZyZWV6ZShwKX19ZWxzZXtlcnJvcihcIlJlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuIFwiK1wiWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiBcIitcIlVzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuXCIpfX1lbHNle3ZhbGlkYXRlQ2hpbGRLZXlzKHAsZSl9fX1pZihlPT09dC5GcmFnbWVudCl7dmFsaWRhdGVGcmFnbWVudFByb3BzKGYpfWVsc2V7dmFsaWRhdGVQcm9wVHlwZXMoZil9cmV0dXJuIGZ9fWZ1bmN0aW9uIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljKGUsdCxyKXt7cmV0dXJuIGpzeFdpdGhWYWxpZGF0aW9uKGUsdCxyLHRydWUpfX1mdW5jdGlvbiBqc3hXaXRoVmFsaWRhdGlvbkR5bmFtaWMoZSx0LHIpe3tyZXR1cm4ganN4V2l0aFZhbGlkYXRpb24oZSx0LHIsZmFsc2UpfX12YXIgZWU9anN4V2l0aFZhbGlkYXRpb25EeW5hbWljO3ZhciB0ZT1qc3hXaXRoVmFsaWRhdGlvblN0YXRpYzt0LmpzeD1lZTt0LmpzeHM9dGV9KSgpfX0sMTA4MDpmdW5jdGlvbihlLHQscil7XG4vKiogQGxpY2Vuc2UgUmVhY3QgdjE3LjAuMlxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xucigzNTQwKTt2YXIgbj1yKDc1MjIpLG89NjAxMDM7dC5GcmFnbWVudD02MDEwNztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgYT1TeW1ib2wuZm9yO289YShcInJlYWN0LmVsZW1lbnRcIik7dC5GcmFnbWVudD1hKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIGk9bi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIHEoZSx0LHIpe3ZhciBuLGE9e30sdT1udWxsLGM9bnVsbDt2b2lkIDAhPT1yJiYodT1cIlwiK3IpO3ZvaWQgMCE9PXQua2V5JiYodT1cIlwiK3Qua2V5KTt2b2lkIDAhPT10LnJlZiYmKGM9dC5yZWYpO2ZvcihuIGluIHQpcy5jYWxsKHQsbikmJiFsLmhhc093blByb3BlcnR5KG4pJiYoYVtuXT10W25dKTtpZihlJiZlLmRlZmF1bHRQcm9wcylmb3IobiBpbiB0PWUuZGVmYXVsdFByb3BzLHQpdm9pZCAwPT09YVtuXSYmKGFbbl09dFtuXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTp1LHJlZjpjLHByb3BzOmEsX293bmVyOmkuY3VycmVudH19dC5qc3g9cTt0LmpzeHM9cX0sNTA1OmZ1bmN0aW9uKGUsdCxyKXtpZihwcm9jZXNzLmVudi5OT0RFX0VOVj09PVwicHJvZHVjdGlvblwiKXtlLmV4cG9ydHM9cigxMDgwKX1lbHNle2UuZXhwb3J0cz1yKDMwMzcpfX0sMzg3NjpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7MCYmMDtmdW5jdGlvbiBfZXhwb3J0KGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTp0cnVlLGdldDp0W3JdfSl9X2V4cG9ydCh0LHtoeWRyYXRpb25FcnJvcldhcm5pbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcn0saHlkcmF0aW9uRXJyb3JDb21wb25lbnRTdGFjazpmdW5jdGlvbigpe3JldHVybiBufSxwYXRjaENvbnNvbGVFcnJvcjpmdW5jdGlvbigpe3JldHVybiBwYXRjaENvbnNvbGVFcnJvcn19KTtsZXQgcjtsZXQgbjtjb25zdCBvPW5ldyBTZXQoWydXYXJuaW5nOiBUZXh0IGNvbnRlbnQgZGlkIG5vdCBtYXRjaC4gU2VydmVyOiBcIiVzXCIgQ2xpZW50OiBcIiVzXCIlcycsXCJXYXJuaW5nOiBFeHBlY3RlZCBzZXJ2ZXIgSFRNTCB0byBjb250YWluIGEgbWF0Y2hpbmcgPCVzPiBpbiA8JXM+LiVzXCIsJ1dhcm5pbmc6IEV4cGVjdGVkIHNlcnZlciBIVE1MIHRvIGNvbnRhaW4gYSBtYXRjaGluZyB0ZXh0IG5vZGUgZm9yIFwiJXNcIiBpbiA8JXM+LiVzJyxcIldhcm5pbmc6IERpZCBub3QgZXhwZWN0IHNlcnZlciBIVE1MIHRvIGNvbnRhaW4gYSA8JXM+IGluIDwlcz4uJXNcIiwnV2FybmluZzogRGlkIG5vdCBleHBlY3Qgc2VydmVyIEhUTUwgdG8gY29udGFpbiB0aGUgdGV4dCBub2RlIFwiJXNcIiBpbiA8JXM+LiVzJ10pO2Z1bmN0aW9uIHBhdGNoQ29uc29sZUVycm9yKCl7Y29uc3QgZT1jb25zb2xlLmVycm9yO2NvbnNvbGUuZXJyb3I9ZnVuY3Rpb24odCxhLGkscyl7aWYoby5oYXModCkpe3I9dC5yZXBsYWNlKFwiJXNcIixhKS5yZXBsYWNlKFwiJXNcIixpKS5yZXBsYWNlKFwiJXNcIixcIlwiKTtuPXN9ZS5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9fWlmKCh0eXBlb2YgdC5kZWZhdWx0PT09XCJmdW5jdGlvblwifHx0eXBlb2YgdC5kZWZhdWx0PT09XCJvYmplY3RcIiYmdC5kZWZhdWx0IT09bnVsbCkmJnR5cGVvZiB0LmRlZmF1bHQuX19lc01vZHVsZT09PVwidW5kZWZpbmVkXCIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KTtlLmV4cG9ydHM9dC5kZWZhdWx0fX0sNDY1OTpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwYXJzZUNvbXBvbmVudFN0YWNrXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcGFyc2VDb21wb25lbnRTdGFja319KTt2YXIgcjsoZnVuY3Rpb24oZSl7ZVtcIkZJTEVcIl09XCJmaWxlXCI7ZVtcIldFQlBBQ0tfSU5URVJOQUxcIl09XCJ3ZWJwYWNrLWludGVybmFsXCI7ZVtcIkhUVFBcIl09XCJodHRwXCI7ZVtcIlBST1RPQ09MX1JFTEFUSVZFXCJdPVwicHJvdG9jb2wtcmVsYXRpdmVcIjtlW1wiVU5LTk9XTlwiXT1cInVua25vd25cIn0pKHJ8fChyPXt9KSk7ZnVuY3Rpb24gZ2V0TG9jYXRpb25UeXBlKGUpe2lmKGUuc3RhcnRzV2l0aChcImZpbGU6Ly9cIikpe3JldHVyblwiZmlsZVwifWlmKGUuc3RhcnRzV2l0aChcIndlYnBhY2staW50ZXJuYWw6Ly9cIikpe3JldHVyblwid2VicGFjay1pbnRlcm5hbFwifWlmKGUuc3RhcnRzV2l0aChcImh0dHA6Ly9cIil8fGUuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKXtyZXR1cm5cImh0dHBcIn1pZihlLnN0YXJ0c1dpdGgoXCIvL1wiKSl7cmV0dXJuXCJwcm90b2NvbC1yZWxhdGl2ZVwifXJldHVyblwidW5rbm93blwifWZ1bmN0aW9uIHBhcnNlU3RhY2tGcmFtZUxvY2F0aW9uKGUpe2NvbnN0IHQ9Z2V0TG9jYXRpb25UeXBlKGUpO2NvbnN0IHI9ZT09bnVsbD92b2lkIDA6ZS5yZXBsYWNlKC9eKHdlYnBhY2staW50ZXJuYWw6XFwvXFwvXFwvfGZpbGU6XFwvXFwvKShcXCguKlxcKVxcLyk/LyxcIlwiKTt2YXIgbjtjb25zdFssbyxhLGldPShuPXI9PW51bGw/dm9pZCAwOnIubWF0Y2goL14oLispOihcXGQrKTooXFxkKykvKSkhPW51bGw/bjpbXTtzd2l0Y2godCl7Y2FzZVwiZmlsZVwiOmNhc2VcIndlYnBhY2staW50ZXJuYWxcIjpyZXR1cm57Y2FuT3BlbkluRWRpdG9yOnRydWUsZmlsZTpvLGxpbmVOdW1iZXI6YT9OdW1iZXIoYSk6dW5kZWZpbmVkLGNvbHVtbjppP051bWJlcihpKTp1bmRlZmluZWR9O2Nhc2VcImh0dHBcIjpjYXNlXCJwcm90b2NvbC1yZWxhdGl2ZVwiOmNhc2VcInVua25vd25cIjpkZWZhdWx0OntyZXR1cm57Y2FuT3BlbkluRWRpdG9yOmZhbHNlfX19fWZ1bmN0aW9uIHBhcnNlQ29tcG9uZW50U3RhY2soZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgciBvZiBlLnRyaW0oKS5zcGxpdChcIlxcblwiKSl7Y29uc3QgZT0vYXQgKFteIF0rKSggXFwoKC4qKVxcKSk/Ly5leGVjKHIpO2lmKGU9PW51bGw/dm9pZCAwOmVbMV0pe2NvbnN0IHI9ZVsxXTtjb25zdCBuPWVbM107aWYoIW4pe3QucHVzaCh7Y2FuT3BlbkluRWRpdG9yOmZhbHNlLGNvbXBvbmVudDpyfSk7Y29udGludWV9aWYobj09bnVsbD92b2lkIDA6bi5pbmNsdWRlcyhcIm5leHQvZGlzdFwiKSl7YnJlYWt9Y29uc3Qgbz1wYXJzZVN0YWNrRnJhbWVMb2NhdGlvbihuKTt0LnB1c2goe2NvbXBvbmVudDpyLC4uLm99KX19cmV0dXJuIHR9aWYoKHR5cGVvZiB0LmRlZmF1bHQ9PT1cImZ1bmN0aW9uXCJ8fHR5cGVvZiB0LmRlZmF1bHQ9PT1cIm9iamVjdFwiJiZ0LmRlZmF1bHQhPT1udWxsKSYmdHlwZW9mIHQuZGVmYXVsdC5fX2VzTW9kdWxlPT09XCJ1bmRlZmluZWRcIil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO09iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpO2UuZXhwb3J0cz10LmRlZmF1bHR9fSw1MjA0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O3ZhciBpPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5vblJlZnJlc2g9dC5vbkJlZm9yZVJlZnJlc2g9dC51bnJlZ2lzdGVyPXQucmVnaXN0ZXI9dC5vbkJ1aWxkRXJyb3I9dC5vbkJ1aWxkT2s9dC5SZWFjdERldk92ZXJsYXk9dC5nZXRTZXJ2ZXJFcnJvcj10LmdldEVycm9yQnlUeXBlPXZvaWQgMDtjb25zdCBzPWEocig1ODUxKSk7Y29uc3QgbD1yKDYzNik7Y29uc3QgdT1yKDQ2NTkpO2NvbnN0IGM9cigzODc2KTsoMCxjLnBhdGNoQ29uc29sZUVycm9yKSgpO2xldCBkPWZhbHNlO2xldCBmPXVuZGVmaW5lZDtmdW5jdGlvbiBvblVuaGFuZGxlZEVycm9yKGUpe2NvbnN0IHQ9ZT8uZXJyb3I7aWYoIXR8fCEodCBpbnN0YW5jZW9mIEVycm9yKXx8dHlwZW9mIHQuc3RhY2shPT1cInN0cmluZ1wiKXtyZXR1cm59aWYodC5tZXNzYWdlLm1hdGNoKC8oaHlkcmF0aW9ufGNvbnRlbnQgZG9lcyBub3QgbWF0Y2h8ZGlkIG5vdCBtYXRjaCkvaSkpe2lmKGMuaHlkcmF0aW9uRXJyb3JXYXJuaW5nKXt0Lm1lc3NhZ2UrPVwiXFxuXFxuXCIrYy5oeWRyYXRpb25FcnJvcldhcm5pbmd9dC5tZXNzYWdlKz1gXFxuXFxuU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9yZWFjdC1oeWRyYXRpb24tZXJyb3JgfWNvbnN0IHI9dDtjb25zdCBuPXR5cGVvZiBjLmh5ZHJhdGlvbkVycm9yQ29tcG9uZW50U3RhY2s9PT1cInN0cmluZ1wiPygwLHUucGFyc2VDb21wb25lbnRTdGFjaykoYy5oeWRyYXRpb25FcnJvckNvbXBvbmVudFN0YWNrKS5tYXAoKGU9PmUuY29tcG9uZW50KSk6dW5kZWZpbmVkO3MuZW1pdCh7dHlwZTpzLlRZUEVfVU5IQU5ETEVEX0VSUk9SLHJlYXNvbjp0LGZyYW1lczooMCxsLnBhcnNlU3RhY2spKHIuc3RhY2spLGNvbXBvbmVudFN0YWNrOm59KX1mdW5jdGlvbiBvblVuaGFuZGxlZFJlamVjdGlvbihlKXtjb25zdCB0PWU/LnJlYXNvbjtpZighdHx8ISh0IGluc3RhbmNlb2YgRXJyb3IpfHx0eXBlb2YgdC5zdGFjayE9PVwic3RyaW5nXCIpe3JldHVybn1jb25zdCByPXQ7cy5lbWl0KHt0eXBlOnMuVFlQRV9VTkhBTkRMRURfUkVKRUNUSU9OLHJlYXNvbjp0LGZyYW1lczooMCxsLnBhcnNlU3RhY2spKHIuc3RhY2spfSl9ZnVuY3Rpb24gcmVnaXN0ZXIoKXtpZihkKXtyZXR1cm59ZD10cnVlO3RyeXtjb25zdCBlPUVycm9yLnN0YWNrVHJhY2VMaW1pdDtFcnJvci5zdGFja1RyYWNlTGltaXQ9NTA7Zj1lfWNhdGNoe313aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsb25VbmhhbmRsZWRFcnJvcik7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIixvblVuaGFuZGxlZFJlamVjdGlvbil9dC5yZWdpc3Rlcj1yZWdpc3RlcjtmdW5jdGlvbiB1bnJlZ2lzdGVyKCl7aWYoIWQpe3JldHVybn1kPWZhbHNlO2lmKGYhPT11bmRlZmluZWQpe3RyeXtFcnJvci5zdGFja1RyYWNlTGltaXQ9Zn1jYXRjaHt9Zj11bmRlZmluZWR9d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLG9uVW5oYW5kbGVkRXJyb3IpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsb25VbmhhbmRsZWRSZWplY3Rpb24pfXQudW5yZWdpc3Rlcj11bnJlZ2lzdGVyO2Z1bmN0aW9uIG9uQnVpbGRPaygpe3MuZW1pdCh7dHlwZTpzLlRZUEVfQlVJTERfT0t9KX10Lm9uQnVpbGRPaz1vbkJ1aWxkT2s7ZnVuY3Rpb24gb25CdWlsZEVycm9yKGUpe3MuZW1pdCh7dHlwZTpzLlRZUEVfQlVJTERfRVJST1IsbWVzc2FnZTplfSl9dC5vbkJ1aWxkRXJyb3I9b25CdWlsZEVycm9yO2Z1bmN0aW9uIG9uUmVmcmVzaCgpe3MuZW1pdCh7dHlwZTpzLlRZUEVfUkVGUkVTSH0pfXQub25SZWZyZXNoPW9uUmVmcmVzaDtmdW5jdGlvbiBvbkJlZm9yZVJlZnJlc2goKXtzLmVtaXQoe3R5cGU6cy5UWVBFX0JFRk9SRV9SRUZSRVNIfSl9dC5vbkJlZm9yZVJlZnJlc2g9b25CZWZvcmVSZWZyZXNoO3ZhciBwPXIoNDAzKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdldEVycm9yQnlUeXBlXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5nZXRFcnJvckJ5VHlwZX19KTt2YXIgbT1yKDUyMzMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZ2V0U2VydmVyRXJyb3JcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtLmdldFNlcnZlckVycm9yfX0pO3ZhciB2PXIoNTIyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJSZWFjdERldk92ZXJsYXlcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpKHYpLmRlZmF1bHR9fSl9LDc3OTA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5FcnJvckJvdW5kYXJ5PXZvaWQgMDtjb25zdCBvPXIoNTA1KTtjb25zdCBhPW4ocig3NTIyKSk7Y2xhc3MgRXJyb3JCb3VuZGFyeSBleHRlbmRzIGEuZGVmYXVsdC5QdXJlQ29tcG9uZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLnN0YXRlPXtlcnJvcjpudWxsfX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGUpe3JldHVybntlcnJvcjplfX1jb21wb25lbnREaWRDYXRjaChlLHQpe3RoaXMucHJvcHMub25FcnJvcihlLHQ/LmNvbXBvbmVudFN0YWNrfHxudWxsKTtpZighdGhpcy5wcm9wcy5nbG9iYWxPdmVybGF5KXt0aGlzLnNldFN0YXRlKHtlcnJvcjplfSl9fXJlbmRlcigpe3JldHVybiB0aGlzLnN0YXRlLmVycm9yfHx0aGlzLnByb3BzLmdsb2JhbE92ZXJsYXkmJnRoaXMucHJvcHMuaXNNb3VudGVkP3RoaXMucHJvcHMuZ2xvYmFsT3ZlcmxheT8oMCxvLmpzeHMpKFwiaHRtbFwiLHtjaGlsZHJlbjpbKDAsby5qc3gpKFwiaGVhZFwiLHt9KSwoMCxvLmpzeCkoXCJib2R5XCIse30pXX0pOm51bGw6dGhpcy5wcm9wcy5jaGlsZHJlbn19dC5FcnJvckJvdW5kYXJ5PUVycm9yQm91bmRhcnl9LDUyMjI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtjb25zdCBpPXIoNTA1KTtjb25zdCBzPWEocig3NTIyKSk7Y29uc3QgbD1hKHIoNTg1MSkpO2NvbnN0IHU9cig2MzM4KTtjb25zdCBjPXIoNTkzNik7Y29uc3QgZD1yKDQzNTUpO2NvbnN0IGY9cig3NzkwKTtjb25zdCBwPXIoODg0KTtjb25zdCBtPXIoNDQ2NCk7Y29uc3Qgdj1yKDk0OTUpO2Z1bmN0aW9uIHB1c2hFcnJvckZpbHRlckR1cGxpY2F0ZXMoZSx0KXtyZXR1cm5bLi4uZS5maWx0ZXIoKGU9PmUuZXZlbnQucmVhc29uIT09dC5ldmVudC5yZWFzb24pKSx0XX1mdW5jdGlvbiByZWR1Y2VyKGUsdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSBsLlRZUEVfQlVJTERfT0s6e3JldHVybnsuLi5lLGJ1aWxkRXJyb3I6bnVsbH19Y2FzZSBsLlRZUEVfQlVJTERfRVJST1I6e3JldHVybnsuLi5lLGJ1aWxkRXJyb3I6dC5tZXNzYWdlfX1jYXNlIGwuVFlQRV9CRUZPUkVfUkVGUkVTSDp7cmV0dXJuey4uLmUscmVmcmVzaFN0YXRlOnt0eXBlOlwicGVuZGluZ1wiLGVycm9yczpbXX19fWNhc2UgbC5UWVBFX1JFRlJFU0g6e3JldHVybnsuLi5lLGJ1aWxkRXJyb3I6bnVsbCxlcnJvcnM6ZS5yZWZyZXNoU3RhdGUudHlwZT09PVwicGVuZGluZ1wiP2UucmVmcmVzaFN0YXRlLmVycm9yczpbXSxyZWZyZXNoU3RhdGU6e3R5cGU6XCJpZGxlXCJ9fX1jYXNlIGwuVFlQRV9VTkhBTkRMRURfRVJST1I6Y2FzZSBsLlRZUEVfVU5IQU5ETEVEX1JFSkVDVElPTjp7c3dpdGNoKGUucmVmcmVzaFN0YXRlLnR5cGUpe2Nhc2VcImlkbGVcIjp7cmV0dXJuey4uLmUsbmV4dElkOmUubmV4dElkKzEsZXJyb3JzOnB1c2hFcnJvckZpbHRlckR1cGxpY2F0ZXMoZS5lcnJvcnMse2lkOmUubmV4dElkLGV2ZW50OnR9KX19Y2FzZVwicGVuZGluZ1wiOntyZXR1cm57Li4uZSxuZXh0SWQ6ZS5uZXh0SWQrMSxyZWZyZXNoU3RhdGU6ey4uLmUucmVmcmVzaFN0YXRlLGVycm9yczpwdXNoRXJyb3JGaWx0ZXJEdXBsaWNhdGVzKGUucmVmcmVzaFN0YXRlLmVycm9ycyx7aWQ6ZS5uZXh0SWQsZXZlbnQ6dH0pfX19ZGVmYXVsdDpjb25zdCByPWUucmVmcmVzaFN0YXRlO3JldHVybiBlfX1kZWZhdWx0Ontjb25zdCByPXQ7cmV0dXJuIGV9fX1jb25zdCBzaG91bGRQcmV2ZW50RGlzcGxheT0oZSx0KT0+e2lmKCF0fHwhZSl7cmV0dXJuIGZhbHNlfXJldHVybiB0LmluY2x1ZGVzKGUpfTtjb25zdCBiPWZ1bmN0aW9uIFJlYWN0RGV2T3ZlcmxheSh7Y2hpbGRyZW46ZSxwcmV2ZW50RGlzcGxheTp0LGdsb2JhbE92ZXJsYXk6cn0pe2NvbnN0W24sb109cy51c2VSZWR1Y2VyKHJlZHVjZXIse25leHRJZDoxLGJ1aWxkRXJyb3I6bnVsbCxlcnJvcnM6W10scmVmcmVzaFN0YXRlOnt0eXBlOlwiaWRsZVwifX0pO3MudXNlRWZmZWN0KCgoKT0+e2wub24obyk7cmV0dXJuIGZ1bmN0aW9uKCl7bC5vZmYobyl9fSksW29dKTtjb25zdCBhPXMudXNlQ2FsbGJhY2soKChlLHQpPT57fSksW10pO2NvbnN0IGI9bi5idWlsZEVycm9yIT1udWxsO2NvbnN0IGc9Qm9vbGVhbihuLmVycm9ycy5sZW5ndGgpO2NvbnN0IGg9Yj9cImJ1aWxkXCI6Zz9cInJ1bnRpbWVcIjpudWxsO2NvbnN0IHk9aCE9PW51bGw7cmV0dXJuKDAsaS5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsaS5qc3gpKGYuRXJyb3JCb3VuZGFyeSx7Z2xvYmFsT3ZlcmxheTpyLGlzTW91bnRlZDp5LG9uRXJyb3I6YSxjaGlsZHJlbjplPz9udWxsfSkseT8oMCxpLmpzeHMpKHUuU2hhZG93UG9ydGFsLHtnbG9iYWxPdmVybGF5OnIsY2hpbGRyZW46WygwLGkuanN4KSh2LkNzc1Jlc2V0LHt9KSwoMCxpLmpzeCkocC5CYXNlLHt9KSwoMCxpLmpzeCkobS5Db21wb25lbnRTdHlsZXMse30pLHNob3VsZFByZXZlbnREaXNwbGF5KGgsdCk/bnVsbDpiPygwLGkuanN4KShjLkJ1aWxkRXJyb3Ise21lc3NhZ2U6bi5idWlsZEVycm9yfSk6Zz8oMCxpLmpzeCkoZC5FcnJvcnMse2Vycm9yczpuLmVycm9yc30pOnVuZGVmaW5lZF19KTp1bmRlZmluZWRdfSl9O3RbXCJkZWZhdWx0XCJdPWJ9LDU4NTE6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Qub2ZmPXQub249dC5lbWl0PXQuVFlQRV9VTkhBTkRMRURfUkVKRUNUSU9OPXQuVFlQRV9VTkhBTkRMRURfRVJST1I9dC5UWVBFX0JFRk9SRV9SRUZSRVNIPXQuVFlQRV9SRUZSRVNIPXQuVFlQRV9CVUlMRF9FUlJPUj10LlRZUEVfQlVJTERfT0s9dm9pZCAwO3QuVFlQRV9CVUlMRF9PSz1cImJ1aWxkLW9rXCI7dC5UWVBFX0JVSUxEX0VSUk9SPVwiYnVpbGQtZXJyb3JcIjt0LlRZUEVfUkVGUkVTSD1cImZhc3QtcmVmcmVzaFwiO3QuVFlQRV9CRUZPUkVfUkVGUkVTSD1cImJlZm9yZS1mYXN0LXJlZnJlc2hcIjt0LlRZUEVfVU5IQU5ETEVEX0VSUk9SPVwidW5oYW5kbGVkLWVycm9yXCI7dC5UWVBFX1VOSEFORExFRF9SRUpFQ1RJT049XCJ1bmhhbmRsZWQtcmVqZWN0aW9uXCI7bGV0IHI9bmV3IFNldDtsZXQgbj1bXTtmdW5jdGlvbiBkcmFpbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7d2hpbGUoQm9vbGVhbihuLmxlbmd0aCkmJkJvb2xlYW4oci5zaXplKSl7Y29uc3QgZT1uLnNoaWZ0KCk7ci5mb3JFYWNoKCh0PT50KGUpKSl9fSksMSl9ZnVuY3Rpb24gZW1pdChlKXtuLnB1c2goT2JqZWN0LmZyZWV6ZSh7Li4uZX0pKTtkcmFpbigpfXQuZW1pdD1lbWl0O2Z1bmN0aW9uIG9uKGUpe2lmKHIuaGFzKGUpKXtyZXR1cm4gZmFsc2V9ci5hZGQoZSk7ZHJhaW4oKTtyZXR1cm4gdHJ1ZX10Lm9uPW9uO2Z1bmN0aW9uIG9mZihlKXtpZihyLmhhcyhlKSl7ci5kZWxldGUoZSk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfXQub2ZmPW9mZn0sMTk4NzpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTt2YXIgaT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ29kZUZyYW1lPXZvaWQgMDtjb25zdCBzPXIoNTA1KTtjb25zdCBsPWkocig3OTk3KSk7Y29uc3QgdT1hKHIoNzUyMikpO2NvbnN0IGM9aShyKDc1MTgpKTtjb25zdCBkPXIoNzUwNCk7Y29uc3QgZj1mdW5jdGlvbiBDb2RlRnJhbWUoe3N0YWNrRnJhbWU6ZSxjb2RlRnJhbWU6dH0pe2NvbnN0IHI9dS51c2VNZW1vKCgoKT0+e2NvbnN0IGU9dC5zcGxpdCgvXFxyP1xcbi9nKTtjb25zdCByPWUubWFwKChlPT4vXj4/ICtcXGQrICtcXHwgWyBdKy8uZXhlYygoMCxjLmRlZmF1bHQpKGUpKT09PW51bGw/bnVsbDovXj4/ICtcXGQrICtcXHwgKCAqKS8uZXhlYygoMCxjLmRlZmF1bHQpKGUpKSkpLmZpbHRlcihCb29sZWFuKS5tYXAoKGU9PmUucG9wKCkpKS5yZWR1Y2UoKChlLHQpPT5pc05hTihlKT90Lmxlbmd0aDpNYXRoLm1pbihlLHQubGVuZ3RoKSksTmFOKTtpZihyPjEpe2NvbnN0IHQ9XCIgXCIucmVwZWF0KHIpO3JldHVybiBlLm1hcCgoKGUscik9Pn4ocj1lLmluZGV4T2YoXCJ8XCIpKT9lLnN1YnN0cmluZygwLHIpK2Uuc3Vic3RyaW5nKHIpLnJlcGxhY2UodCxcIlwiKTplKSkuam9pbihcIlxcblwiKX1yZXR1cm4gZS5qb2luKFwiXFxuXCIpfSksW3RdKTtjb25zdCBuPXUudXNlTWVtbygoKCk9PmwuZGVmYXVsdC5hbnNpVG9Kc29uKHIse2pzb246dHJ1ZSx1c2VfY2xhc3Nlczp0cnVlLHJlbW92ZV9lbXB0eTp0cnVlfSkpLFtyXSk7Y29uc3Qgbz11LnVzZUNhbGxiYWNrKCgoKT0+e2NvbnN0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IoY29uc3QgciBpbiBlKXt0LmFwcGVuZChyLChlW3JdPz9cIlwiKS50b1N0cmluZygpKX1zZWxmLmZldGNoKGAke3Byb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCJ9L19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/JHt0LnRvU3RyaW5nKCl9YCkudGhlbigoKCk9Pnt9KSwoKCk9Pntjb25zb2xlLmVycm9yKFwiVGhlcmUgd2FzIGFuIGlzc3VlIG9wZW5pbmcgdGhpcyBjb2RlIGluIHlvdXIgZWRpdG9yLlwiKX0pKX0pLFtlXSk7cmV0dXJuKDAscy5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNvZGVmcmFtZVwiOnRydWUsY2hpbGRyZW46WygwLHMuanN4KShcImRpdlwiLHtjaGlsZHJlbjooMCxzLmpzeHMpKFwicFwiLHtyb2xlOlwibGlua1wiLG9uQ2xpY2s6byx0YWJJbmRleDoxLHRpdGxlOlwiQ2xpY2sgdG8gb3BlbiBpbiB5b3VyIGVkaXRvclwiLGNoaWxkcmVuOlsoMCxzLmpzeHMpKFwic3BhblwiLHtjaGlsZHJlbjpbKDAsZC5nZXRGcmFtZVNvdXJjZSkoZSksXCIgQCBcIixlLm1ldGhvZE5hbWVdfSksKDAscy5qc3hzKShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLGNoaWxkcmVuOlsoMCxzLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwifSksKDAscy5qc3gpKFwicG9seWxpbmVcIix7cG9pbnRzOlwiMTUgMyAyMSAzIDIxIDlcIn0pLCgwLHMuanN4KShcImxpbmVcIix7eDE6XCIxMFwiLHkxOlwiMTRcIix4MjpcIjIxXCIseTI6XCIzXCJ9KV19KV19KX0pLCgwLHMuanN4KShcInByZVwiLHtjaGlsZHJlbjpuLm1hcCgoKGUsdCk9PigwLHMuanN4KShcInNwYW5cIix7c3R5bGU6e2NvbG9yOmUuZmc/YHZhcigtLWNvbG9yLSR7ZS5mZ30pYDp1bmRlZmluZWQsLi4uZS5kZWNvcmF0aW9uPT09XCJib2xkXCI/e2ZvbnRXZWlnaHQ6ODAwfTplLmRlY29yYXRpb249PT1cIml0YWxpY1wiP3tmb250U3R5bGU6XCJpdGFsaWNcIn06dW5kZWZpbmVkfSxjaGlsZHJlbjplLmNvbnRlbnR9LGBmcmFtZS0ke3R9YCkpKX0pXX0pfTt0LkNvZGVGcmFtZT1mfSwxNDEzOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ29kZUZyYW1lPXZvaWQgMDt2YXIgbj1yKDE5ODcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiQ29kZUZyYW1lXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5Db2RlRnJhbWV9fSl9LDM5OTpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz12b2lkIDA7Y29uc3Qgbj1yKDg5MTApO2NvbnN0IG89KDAsbi5ub29wKWBcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0ge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYmcpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWZnKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXTo6c2VsZWN0aW9uLFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSAqOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktc2VsZWN0aW9uKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSAqIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gPiAqIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSlcbiAgICAgIGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSA+IGRpdiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtYmxhY2spO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gZGl2ID4gcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gZGl2ID4gcDpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIGRpdiA+IHAgPiBzdmcge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogMWVtO1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gZGl2ID4gcHJlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuYDt0LnN0eWxlcz1vfSwxNjE2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5EaWFsb2c9dm9pZCAwO2NvbnN0IGk9cig1MDUpO2NvbnN0IHM9YShyKDc1MjIpKTtjb25zdCBsPXIoNzE2OSk7Y29uc3QgdT1mdW5jdGlvbiBEaWFsb2coe2NoaWxkcmVuOmUsdHlwZTp0LG9uQ2xvc2U6ciwuLi5ufSl7Y29uc3RbbyxhXT1zLnVzZVN0YXRlKG51bGwpO2NvbnN0W3UsY109cy51c2VTdGF0ZSh0eXBlb2YgZG9jdW1lbnQhPT1cInVuZGVmaW5lZFwiJiZkb2N1bWVudC5oYXNGb2N1cygpP1wiZGlhbG9nXCI6dW5kZWZpbmVkKTtjb25zdCBkPXMudXNlQ2FsbGJhY2soKGU9PnthKGUpfSksW10pOygwLGwudXNlT25DbGlja091dHNpZGUpKG8scik7cy51c2VFZmZlY3QoKCgpPT57aWYobz09bnVsbCl7cmV0dXJufWNvbnN0IGU9by5nZXRSb290Tm9kZSgpO2lmKCEoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpKXtyZXR1cm59Y29uc3QgdD1lO2Z1bmN0aW9uIGhhbmRsZXIoZSl7Y29uc3Qgcj10LmFjdGl2ZUVsZW1lbnQ7aWYoZS5rZXk9PT1cIkVudGVyXCImJnIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmci5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpPT09XCJsaW5rXCIpe2UucHJldmVudERlZmF1bHQoKTtlLnN0b3BQcm9wYWdhdGlvbigpO3IuY2xpY2soKX19ZnVuY3Rpb24gaGFuZGxlRm9jdXMoKXtjKGRvY3VtZW50Lmhhc0ZvY3VzKCk/XCJkaWFsb2dcIjp1bmRlZmluZWQpfXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsaGFuZGxlRm9jdXMpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLGhhbmRsZUZvY3VzKTtyZXR1cm4oKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsaGFuZGxlRm9jdXMpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLGhhbmRsZUZvY3VzKX19KSxbb10pO3JldHVybigwLGkuanN4cykoXCJkaXZcIix7cmVmOmQsXCJkYXRhLW5leHRqcy1kaWFsb2dcIjp0cnVlLHRhYkluZGV4Oi0xLHJvbGU6dSxcImFyaWEtbGFiZWxsZWRieVwiOm5bXCJhcmlhLWxhYmVsbGVkYnlcIl0sXCJhcmlhLWRlc2NyaWJlZGJ5XCI6bltcImFyaWEtZGVzY3JpYmVkYnlcIl0sXCJhcmlhLW1vZGFsXCI6XCJ0cnVlXCIsY2hpbGRyZW46WygwLGkuanN4KShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJcIjp0cnVlLGNsYXNzTmFtZTpgYmFubmVyLSR7dH1gfSksZV19KX07dC5EaWFsb2c9dX0sMjAxMTpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWxvZ0JvZHk9dm9pZCAwO2NvbnN0IG49cig1MDUpO2NvbnN0IG89ZnVuY3Rpb24gRGlhbG9nQm9keSh7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dH0pe3JldHVybigwLG4uanN4KShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1ib2R5XCI6dHJ1ZSxjbGFzc05hbWU6dCxjaGlsZHJlbjplfSl9O3QuRGlhbG9nQm9keT1vfSw4OTkxOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhbG9nQ29udGVudD12b2lkIDA7Y29uc3Qgbj1yKDUwNSk7Y29uc3Qgbz1mdW5jdGlvbiBEaWFsb2dDb250ZW50KHtjaGlsZHJlbjplLGNsYXNzTmFtZTp0fSl7cmV0dXJuKDAsbi5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRcIjp0cnVlLGNsYXNzTmFtZTp0LGNoaWxkcmVuOmV9KX07dC5EaWFsb2dDb250ZW50PW99LDM0MjpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWxvZ0hlYWRlcj12b2lkIDA7Y29uc3Qgbj1yKDUwNSk7Y29uc3Qgbz1mdW5jdGlvbiBEaWFsb2dIZWFkZXIoe2NoaWxkcmVuOmUsY2xhc3NOYW1lOnR9KXtyZXR1cm4oMCxuLmpzeCkoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyXCI6dHJ1ZSxjbGFzc05hbWU6dCxjaGlsZHJlbjplfSl9O3QuRGlhbG9nSGVhZGVyPW99LDU2NTE6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5zdHlsZXM9dC5EaWFsb2dIZWFkZXI9dC5EaWFsb2dDb250ZW50PXQuRGlhbG9nQm9keT10LkRpYWxvZz12b2lkIDA7dmFyIG49cigxNjE2KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIkRpYWxvZ1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uRGlhbG9nfX0pO3ZhciBvPXIoMjAxMSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJEaWFsb2dCb2R5XCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5EaWFsb2dCb2R5fX0pO3ZhciBhPXIoODk5MSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJEaWFsb2dDb250ZW50XCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5EaWFsb2dDb250ZW50fX0pO3ZhciBpPXIoMzQyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIkRpYWxvZ0hlYWRlclwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuRGlhbG9nSGVhZGVyfX0pO3ZhciBzPXIoNTIxMyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJzdHlsZXNcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzLnN0eWxlc319KX0sNTIxMzpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz12b2lkIDA7Y29uc3Qgbj1yKDg5MTApO2NvbnN0IG89KDAsbi5ub29wKWBcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZ10ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXplLWdhcCk7XG4gICAgYm94LXNoYWRvdzogMCB2YXIoLS1zaXplLWdhcC1oYWxmKSB2YXIoLS1zaXplLWdhcC1kb3VibGUpXG4gICAgICByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDU2cHgpO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LWhlaWdodDogODEycHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcbiAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDE1cHgpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICAgIG1heC13aWR0aDogNTQwcHg7XG4gICAgICBib3gtc2hhZG93OiAwIHZhcigtLXNpemUtZ2FwKSB2YXIoLS1zaXplLWdhcC1xdWFkKSByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZ10ge1xuICAgICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgICB9XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lcl0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lcl0uYmFubmVyLXdhcm5pbmcge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS15ZWxsb3cpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFubmVyXS5iYW5uZXItZXJyb3Ige1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJdOjphZnRlciB7XG4gICAgei1pbmRleDogMjtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8qIGJhbm5lciB3aWR0aDogKi9cbiAgICBib3JkZXItdG9wLXdpZHRoOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci10b3AtY29sb3I6IGluaGVyaXQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgLyogY2FsYyhwYWRkaW5nICsgYmFubmVyIHdpZHRoIG9mZnNldCkgKi9cbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSlcbiAgICAgIHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdID4gW2RhdGEtbmV4dGpzLWRpYWxvZy1oZWFkZXJdIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudF0gPiBbZGF0YS1uZXh0anMtZGlhbG9nLWJvZHldIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbmA7dC5zdHlsZXM9b30sOTgzMTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTGVmdFJpZ2h0RGlhbG9nSGVhZGVyPXZvaWQgMDtjb25zdCBpPXIoNTA1KTtjb25zdCBzPWEocig3NTIyKSk7Y29uc3QgbD1yKDg2NSk7Y29uc3QgdT1mdW5jdGlvbiBMZWZ0UmlnaHREaWFsb2dIZWFkZXIoe2NoaWxkcmVuOmUsY2xhc3NOYW1lOnQscHJldmlvdXM6cixuZXh0Om4sY2xvc2U6b30pe2NvbnN0IGE9cy51c2VSZWYobnVsbCk7Y29uc3QgdT1zLnVzZVJlZihudWxsKTtjb25zdCBjPXMudXNlUmVmKG51bGwpO2NvbnN0W2QsZl09cy51c2VTdGF0ZShudWxsKTtjb25zdCBwPXMudXNlQ2FsbGJhY2soKGU9PntmKGUpfSksW10pO3MudXNlRWZmZWN0KCgoKT0+e2lmKGQ9PW51bGwpe3JldHVybn1jb25zdCBlPWQuZ2V0Um9vdE5vZGUoKTtjb25zdCB0PXNlbGYuZG9jdW1lbnQ7ZnVuY3Rpb24gaGFuZGxlcih0KXtpZih0LmtleT09PVwiQXJyb3dMZWZ0XCIpe3Quc3RvcFByb3BhZ2F0aW9uKCk7aWYoYS5jdXJyZW50KXthLmN1cnJlbnQuZm9jdXMoKX1yJiZyKCl9ZWxzZSBpZih0LmtleT09PVwiQXJyb3dSaWdodFwiKXt0LnN0b3BQcm9wYWdhdGlvbigpO2lmKHUuY3VycmVudCl7dS5jdXJyZW50LmZvY3VzKCl9biYmbigpfWVsc2UgaWYodC5rZXk9PT1cIkVzY2FwZVwiKXt0LnN0b3BQcm9wYWdhdGlvbigpO2lmKGUgaW5zdGFuY2VvZiBTaGFkb3dSb290KXtjb25zdCB0PWUuYWN0aXZlRWxlbWVudDtpZih0JiZ0IT09Yy5jdXJyZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe3QuYmx1cigpO3JldHVybn19aWYobyl7bygpfX19ZS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpO2lmKGUhPT10KXt0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcil9cmV0dXJuIGZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpO2lmKGUhPT10KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcil9fX0pLFtvLGQsbixyXSk7cy51c2VFZmZlY3QoKCgpPT57aWYoZD09bnVsbCl7cmV0dXJufWNvbnN0IGU9ZC5nZXRSb290Tm9kZSgpO2lmKGUgaW5zdGFuY2VvZiBTaGFkb3dSb290KXtjb25zdCB0PWUuYWN0aXZlRWxlbWVudDtpZihyPT1udWxsKXtpZihhLmN1cnJlbnQmJnQ9PT1hLmN1cnJlbnQpe2EuY3VycmVudC5ibHVyKCl9fWVsc2UgaWYobj09bnVsbCl7aWYodS5jdXJyZW50JiZ0PT09dS5jdXJyZW50KXt1LmN1cnJlbnQuYmx1cigpfX19fSksW2QsbixyXSk7cmV0dXJuKDAsaS5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XCI6dHJ1ZSxjbGFzc05hbWU6dCxjaGlsZHJlbjpbKDAsaS5qc3hzKShcIm5hdlwiLHtyZWY6cCxjaGlsZHJlbjpbKDAsaS5qc3gpKFwiYnV0dG9uXCIse3JlZjphLHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDpyPT1udWxsP3RydWU6dW5kZWZpbmVkLFwiYXJpYS1kaXNhYmxlZFwiOnI9PW51bGw/dHJ1ZTp1bmRlZmluZWQsb25DbGljazpyPz91bmRlZmluZWQsY2hpbGRyZW46KDAsaS5qc3hzKShcInN2Z1wiLHt2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46WygwLGkuanN4KShcInRpdGxlXCIse2NoaWxkcmVuOlwicHJldmlvdXNcIn0pLCgwLGkuanN4KShcInBhdGhcIix7ZDpcIk02Ljk5OTk2IDEuMTY2NjZMMS4xNjY2MyA2Ljk5OTk5TDYuOTk5OTYgMTIuODMzM00xMi44MzMzIDYuOTk5OTlIMS45OTk5NkgxMi44MzMzWlwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0pXX0pfSksKDAsaS5qc3gpKFwiYnV0dG9uXCIse3JlZjp1LHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDpuPT1udWxsP3RydWU6dW5kZWZpbmVkLFwiYXJpYS1kaXNhYmxlZFwiOm49PW51bGw/dHJ1ZTp1bmRlZmluZWQsb25DbGljazpuPz91bmRlZmluZWQsY2hpbGRyZW46KDAsaS5qc3hzKShcInN2Z1wiLHt2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46WygwLGkuanN4KShcInRpdGxlXCIse2NoaWxkcmVuOlwibmV4dFwifSksKDAsaS5qc3gpKFwicGF0aFwiLHtkOlwiTTYuOTk5OTYgMS4xNjY2NkwxMi44MzMzIDYuOTk5OTlMNi45OTk5NiAxMi44MzMzTTEuMTY2NjMgNi45OTk5OUgxMkgxLjE2NjYzWlwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0pXX0pfSksXCLCoFwiLGVdfSksbz8oMCxpLmpzeCkoXCJidXR0b25cIix7XCJkYXRhLW5leHRqcy1lcnJvcnMtZGlhbG9nLWxlZnQtcmlnaHQtY2xvc2UtYnV0dG9uXCI6dHJ1ZSxyZWY6Yyx0eXBlOlwiYnV0dG9uXCIsb25DbGljazpvLFwiYXJpYS1sYWJlbFwiOlwiQ2xvc2VcIixjaGlsZHJlbjooMCxpLmpzeCkoXCJzcGFuXCIse1wiYXJpYS1oaWRkZW5cIjpcInRydWVcIixjaGlsZHJlbjooMCxpLmpzeCkobC5DbG9zZUljb24se30pfSl9KTpudWxsXX0pfTt0LkxlZnRSaWdodERpYWxvZ0hlYWRlcj11fSwyNzMyOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Quc3R5bGVzPXQuTGVmdFJpZ2h0RGlhbG9nSGVhZGVyPXZvaWQgMDt2YXIgbj1yKDk4MzEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTGVmdFJpZ2h0RGlhbG9nSGVhZGVyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5MZWZ0UmlnaHREaWFsb2dIZWFkZXJ9fSk7dmFyIG89cig2NTQzKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInN0eWxlc1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uc3R5bGVzfX0pfSw2NTQzOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Quc3R5bGVzPXZvaWQgMDtjb25zdCBuPXIoODkxMCk7Y29uc3Qgbz0oMCxuLm5vb3ApYFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICB3aWR0aDogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXApKTtcbiAgICBoZWlnaHQ6IGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwKSk7XG4gICAgZm9udC1zaXplOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgODUsIDg1LCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uID4gc3ZnIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGNhbGModmFyKC0tc2l6ZS1nYXApICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA4NSwgODUsIDAuMik7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDg1LCA4NSwgMC4xKTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDg1LCA4NSwgMC40KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpmaXJzdC1vZi10eXBlIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXplLWdhcC1oYWxmKSAwIDAgdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcHg7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpsYXN0LW9mLXR5cGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tc2l6ZS1nYXAtaGFsZikgdmFyKC0tc2l6ZS1nYXAtaGFsZikgMDtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBidXR0b246bGFzdC1vZi10eXBlIHtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xuXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBidXR0b246bGFzdC1vZi10eXBlOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cbmA7dC5zdHlsZXM9b30sODAxNzpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTt2YXIgaT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuT3ZlcmxheT12b2lkIDA7Y29uc3Qgcz1yKDUwNSk7Y29uc3QgbD1pKHIoODk3NSkpO2NvbnN0IHU9YShyKDc1MjIpKTtjb25zdCBjPXIoNzgwMCk7Y29uc3QgZD1mdW5jdGlvbiBPdmVybGF5KHtjbGFzc05hbWU6ZSxjaGlsZHJlbjp0LGZpeGVkOnJ9KXt1LnVzZUVmZmVjdCgoKCk9PnsoMCxjLmxvY2spKCk7cmV0dXJuKCk9PnsoMCxjLnVubG9jaykoKX19KSxbXSk7Y29uc3RbbixvXT11LnVzZVN0YXRlKG51bGwpO2NvbnN0IGE9dS51c2VDYWxsYmFjaygoZT0+e28oZSl9KSxbXSk7dS51c2VFZmZlY3QoKCgpPT57aWYobj09bnVsbCl7cmV0dXJufWNvbnN0IGU9KDAsbC5kZWZhdWx0KSh7Y29udGV4dDpufSk7cmV0dXJuKCk9PntlLmRpc2VuZ2FnZSgpfX0pLFtuXSk7cmV0dXJuKDAscy5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XCI6dHJ1ZSxjbGFzc05hbWU6ZSxyZWY6YSxjaGlsZHJlbjpbKDAscy5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXCI6dHJ1ZSxcImRhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcC1maXhlZFwiOnI/dHJ1ZTp1bmRlZmluZWR9KSx0XX0pfTt0Lk92ZXJsYXk9ZH0sNzgwMDpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC51bmxvY2s9dC5sb2NrPXZvaWQgMDtsZXQgcjtsZXQgbjtsZXQgbz0wO2Z1bmN0aW9uIGxvY2soKXtzZXRUaW1lb3V0KCgoKT0+e2lmKG8rKz4wKXtyZXR1cm59Y29uc3QgZT13aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7aWYoZT4wKXtyPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O2RvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PWAke2V9cHhgfW49ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdztkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCJ9KSl9dC5sb2NrPWxvY2s7ZnVuY3Rpb24gdW5sb2NrKCl7c2V0VGltZW91dCgoKCk9PntpZihvPT09MHx8LS1vIT09MCl7cmV0dXJufWlmKHIhPT11bmRlZmluZWQpe2RvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PXI7cj11bmRlZmluZWR9aWYobiE9PXVuZGVmaW5lZCl7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1uO249dW5kZWZpbmVkfX0pKX10LnVubG9jaz11bmxvY2t9LDgyNzg6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5PdmVybGF5PXZvaWQgMDt2YXIgbj1yKDgwMTcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiT3ZlcmxheVwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uT3ZlcmxheX19KX0sODk3NTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtjb25zdCBvPW4ocig3NzA5KSk7Y29uc3QgYT1uKHIoNzI5MikpO2Z1bmN0aW9uIG5vZGVBcnJheShlKXtpZighZSl7cmV0dXJuW119aWYoQXJyYXkuaXNBcnJheShlKSl7cmV0dXJuIGV9aWYoZS5ub2RlVHlwZSE9PXVuZGVmaW5lZCl7cmV0dXJuW2VdfWlmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpfWlmKGUubGVuZ3RoIT09dW5kZWZpbmVkKXtyZXR1cm5bXS5zbGljZS5jYWxsKGUsMCl9dGhyb3cgbmV3IFR5cGVFcnJvcihcInVuZXhwZWN0ZWQgaW5wdXQgXCIrU3RyaW5nKGUpKX1mdW5jdGlvbiBjb250ZXh0VG9FbGVtZW50KGUpe3ZhciB0PWUuY29udGV4dCxyPWUubGFiZWwsbj1yPT09dW5kZWZpbmVkP1wiY29udGV4dC10by1lbGVtZW50XCI6cixvPWUucmVzb2x2ZURvY3VtZW50LGE9ZS5kZWZhdWx0VG9Eb2N1bWVudDt2YXIgaT1ub2RlQXJyYXkodClbMF07aWYobyYmaSYmaS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSl7aT1pLmRvY3VtZW50RWxlbWVudH1pZighaSYmYSl7cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1pZighaSl7dGhyb3cgbmV3IFR5cGVFcnJvcihuK1wiIHJlcXVpcmVzIHZhbGlkIG9wdGlvbnMuY29udGV4dFwiKX1pZihpLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUmJmkubm9kZVR5cGUhPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpe3Rocm93IG5ldyBUeXBlRXJyb3IobitcIiByZXF1aXJlcyBvcHRpb25zLmNvbnRleHQgdG8gYmUgYW4gRWxlbWVudFwiKX1yZXR1cm4gaX1mdW5jdGlvbiBnZXRTaGFkb3dIb3N0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0O3ZhciByPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiZ2V0L3NoYWRvdy1ob3N0XCIsY29udGV4dDp0fSk7dmFyIG49bnVsbDt3aGlsZShyKXtuPXI7cj1yLnBhcmVudE5vZGV9aWYobi5ub2RlVHlwZT09PW4uRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmbi5ob3N0KXtyZXR1cm4gbi5ob3N0fXJldHVybiBudWxsfWZ1bmN0aW9uIGdldERvY3VtZW50KGUpe2lmKCFlKXtyZXR1cm4gZG9jdW1lbnR9aWYoZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSl7cmV0dXJuIGV9cmV0dXJuIGUub3duZXJEb2N1bWVudHx8ZG9jdW1lbnR9ZnVuY3Rpb24gaXNBY3RpdmVFbGVtZW50KGUpe3ZhciB0PWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvYWN0aXZlLWVsZW1lbnRcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OmV9KTt2YXIgcj1nZXREb2N1bWVudCh0KTtpZihyLmFjdGl2ZUVsZW1lbnQ9PT10KXtyZXR1cm4gdHJ1ZX12YXIgbj1nZXRTaGFkb3dIb3N0KHtjb250ZXh0OnR9KTtpZihuJiZuLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudD09PXQpe3JldHVybiB0cnVlfXJldHVybiBmYWxzZX1mdW5jdGlvbiBnZXRQYXJlbnRzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0O3ZhciByPVtdO3ZhciBuPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiZ2V0L3BhcmVudHNcIixjb250ZXh0OnR9KTt3aGlsZShuKXtyLnB1c2gobik7bj1uLnBhcmVudE5vZGU7aWYobiYmbi5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXtuPW51bGx9fXJldHVybiByfXZhciBpPVtcIm1hdGNoZXNcIixcIndlYmtpdE1hdGNoZXNTZWxlY3RvclwiLFwibW96TWF0Y2hlc1NlbGVjdG9yXCIsXCJtc01hdGNoZXNTZWxlY3RvclwiXTt2YXIgcz1udWxsO2Z1bmN0aW9uIGZpbmRNZXRob2ROYW1lKGUpe2kuc29tZSgoZnVuY3Rpb24odCl7aWYoIWVbdF0pe3JldHVybiBmYWxzZX1zPXQ7cmV0dXJuIHRydWV9KSl9ZnVuY3Rpb24gZWxlbWVudE1hdGNoZXMoZSx0KXtpZighcyl7ZmluZE1ldGhvZE5hbWUoZSl9cmV0dXJuIGVbc10odCl9dmFyIGw9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvLmRlZmF1bHQpKTt2YXIgdT1sLm9zLmZhbWlseXx8XCJcIjt2YXIgYz11PT09XCJBbmRyb2lkXCI7dmFyIGQ9dS5zbGljZSgwLDcpPT09XCJXaW5kb3dzXCI7dmFyIGY9dT09PVwiT1MgWFwiO3ZhciBwPXU9PT1cImlPU1wiO3ZhciBtPWwubGF5b3V0PT09XCJCbGlua1wiO3ZhciB2PWwubGF5b3V0PT09XCJHZWNrb1wiO3ZhciBiPWwubGF5b3V0PT09XCJUcmlkZW50XCI7dmFyIGc9bC5sYXlvdXQ9PT1cIkVkZ2VIVE1MXCI7dmFyIGg9bC5sYXlvdXQ9PT1cIldlYktpdFwiO3ZhciB5PXBhcnNlRmxvYXQobC52ZXJzaW9uKTt2YXIgeD1NYXRoLmZsb29yKHkpO2wubWFqb3JWZXJzaW9uPXg7bC5pcz17QU5EUk9JRDpjLFdJTkRPV1M6ZCxPU1g6ZixJT1M6cCxCTElOSzptLEdFQ0tPOnYsVFJJREVOVDpiLEVER0U6ZyxXRUJLSVQ6aCxJRTk6YiYmeD09PTksSUUxMDpiJiZ4PT09MTAsSUUxMTpiJiZ4PT09MTF9O2Z1bmN0aW9uIGJlZm9yZSgpe3ZhciBlPXthY3RpdmVFbGVtZW50OmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsd2luZG93U2Nyb2xsVG9wOndpbmRvdy5zY3JvbGxUb3Asd2luZG93U2Nyb2xsTGVmdDp3aW5kb3cuc2Nyb2xsTGVmdCxib2R5U2Nyb2xsVG9wOmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLGJvZHlTY3JvbGxMZWZ0OmRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdH07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTt0LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJwb3NpdGlvbjphYnNvbHV0ZTsgcG9zaXRpb246Zml4ZWQ7IHRvcDowOyBsZWZ0Oi0ycHg7IHdpZHRoOjFweDsgaGVpZ2h0OjFweDsgb3ZlcmZsb3c6aGlkZGVuO1wiKTt0LnNldEF0dHJpYnV0ZShcImFyaWEtbGl2ZVwiLFwib2ZmXCIpO3Quc2V0QXR0cmlidXRlKFwiYXJpYS1idXN5XCIsXCJ0cnVlXCIpO3Quc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIik7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTt2YXIgcj10LmNvbnRlbnRXaW5kb3c7dmFyIG49ci5kb2N1bWVudDtuLm9wZW4oKTtuLmNsb3NlKCk7dmFyIG89bi5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO24uYm9keS5hcHBlbmRDaGlsZChvKTtlLmlmcmFtZT10O2Uud3JhcHBlcj1vO2Uud2luZG93PXI7ZS5kb2N1bWVudD1uO3JldHVybiBlfWZ1bmN0aW9uIHRlc3QoZSx0KXtlLndyYXBwZXIuaW5uZXJIVE1MPVwiXCI7dmFyIHI9dHlwZW9mIHQuZWxlbWVudD09PVwic3RyaW5nXCI/ZS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQuZWxlbWVudCk6dC5lbGVtZW50KGUud3JhcHBlcixlLmRvY3VtZW50KTt2YXIgbj10Lm11dGF0ZSYmdC5tdXRhdGUocixlLndyYXBwZXIsZS5kb2N1bWVudCk7aWYoIW4mJm4hPT1mYWxzZSl7bj1yfSFyLnBhcmVudE5vZGUmJmUud3JhcHBlci5hcHBlbmRDaGlsZChyKTtuJiZuLmZvY3VzJiZuLmZvY3VzKCk7cmV0dXJuIHQudmFsaWRhdGU/dC52YWxpZGF0ZShyLG4sZS5kb2N1bWVudCk6ZS5kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09bn1mdW5jdGlvbiBhZnRlcihlKXtpZihlLmFjdGl2ZUVsZW1lbnQ9PT1kb2N1bWVudC5ib2R5KXtkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXImJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO2lmKGwuaXMuSUUxMCl7ZG9jdW1lbnQuYm9keS5mb2N1cygpfX1lbHNle2UuYWN0aXZlRWxlbWVudCYmZS5hY3RpdmVFbGVtZW50LmZvY3VzJiZlLmFjdGl2ZUVsZW1lbnQuZm9jdXMoKX1kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUuaWZyYW1lKTt3aW5kb3cuc2Nyb2xsVG9wPWUud2luZG93U2Nyb2xsVG9wO3dpbmRvdy5zY3JvbGxMZWZ0PWUud2luZG93U2Nyb2xsTGVmdDtkb2N1bWVudC5ib2R5LnNjcm9sbFRvcD1lLmJvZHlTY3JvbGxUb3A7ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0PWUuYm9keVNjcm9sbExlZnR9ZnVuY3Rpb24gZGV0ZWN0Rm9jdXMoZSl7dmFyIHQ9YmVmb3JlKCk7dmFyIHI9e307T2JqZWN0LmtleXMoZSkubWFwKChmdW5jdGlvbihuKXtyW25dPXRlc3QodCxlW25dKX0pKTthZnRlcih0KTtyZXR1cm4gcn12YXIgXz1cIjEuNC4xXCI7ZnVuY3Rpb24gcmVhZExvY2FsU3RvcmFnZShlKXt2YXIgdD12b2lkIDA7dHJ5e3Q9d2luZG93LmxvY2FsU3RvcmFnZSYmd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpO3Q9dD9KU09OLnBhcnNlKHQpOnt9fWNhdGNoKGUpe3Q9e319cmV0dXJuIHR9ZnVuY3Rpb24gd3JpdGVMb2NhbFN0b3JhZ2UoZSx0KXtpZighZG9jdW1lbnQuaGFzRm9jdXMoKSl7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2UmJndpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShlKX1jYXRjaChlKXt9cmV0dXJufXRyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeSh0KSl9Y2F0Y2goZSl7fX12YXIgdz10eXBlb2Ygd2luZG93IT09XCJ1bmRlZmluZWRcIiYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnR8fFwiXCI7dmFyIEU9XCJhbGx5LXN1cHBvcnRzLWNhY2hlXCI7dmFyIGo9cmVhZExvY2FsU3RvcmFnZShFKTtpZihqLnVzZXJBZ2VudCE9PXd8fGoudmVyc2lvbiE9PV8pe2o9e319ai51c2VyQWdlbnQ9dztqLnZlcnNpb249Xzt2YXIgTz17Z2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiBqfSxzZXQ6ZnVuY3Rpb24gc2V0KGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2pbdF09ZVt0XX0pKTtqLnRpbWU9KG5ldyBEYXRlKS50b0lTT1N0cmluZygpO3dyaXRlTG9jYWxTdG9yYWdlKEUsail9fTtmdW5jdGlvbiBjc3NTaGFkb3dQaWVyY2luZ0RlZXBDb21iaW5hdG9yKCl7dmFyIGU9dm9pZCAwO3RyeXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaHRtbCA+Pj4gOmZpcnN0LWNoaWxkXCIpO2U9XCI+Pj5cIn1jYXRjaCh0KXt0cnl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImh0bWwgL2RlZXAvIDpmaXJzdC1jaGlsZFwiKTtlPVwiL2RlZXAvXCJ9Y2F0Y2godCl7ZT1cIlwifX1yZXR1cm4gZX12YXIgaz1cImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBN1wiO3ZhciBTPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIj4nKyc8YXJlYSBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiIHRhYmluZGV4PVwiLTFcIiBhbHQ9XCJcIiBzcmM9XCInK2srJ1wiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImFyZWFcIil9fTt2YXIgQz17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImltYWdlLW1hcC10YWJpbmRleC10ZXN0XCI+JysnPGFyZWEgaHJlZj1cIiN2b2lkXCIgdGFiaW5kZXg9XCItMVwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ltYWdlLW1hcC10YWJpbmRleC10ZXN0XCIgYWx0PVwiXCIgc3JjPVwiJytrKydcIj4nO3JldHVybiBmYWxzZX0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe2lmKGwuaXMuR0VDS08pe3JldHVybiB0cnVlfXZhciBuPWUucXVlcnlTZWxlY3RvcihcImFyZWFcIik7bi5mb2N1cygpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT1ufX07dmFyIFQ9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJpbWFnZS1tYXAtYXJlYS1ocmVmLXRlc3RcIj4nKyc8YXJlYSBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNpbWFnZS1tYXAtYXJlYS1ocmVmLXRlc3RcIiBhbHQ9XCJcIiBzcmM9XCInK2srJ1wiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImFyZWFcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXtpZihsLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gci5hY3RpdmVFbGVtZW50PT09dH19O3ZhciBEPXtuYW1lOlwiY2FuLWZvY3VzLWF1ZGlvLXdpdGhvdXQtY29udHJvbHNcIixlbGVtZW50OlwiYXVkaW9cIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe3RyeXtlLnNldEF0dHJpYnV0ZShcInNyY1wiLGspfWNhdGNoKGUpe319fTt2YXIgUD1cImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8vWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlwiO3ZhciBOPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiYnJva2VuLWltYWdlLW1hcC10ZXN0XCI+PGFyZWEgaHJlZj1cIiN2b2lkXCIgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjYnJva2VuLWltYWdlLW1hcC10ZXN0XCIgYWx0PVwiXCIgc3JjPVwiJytQKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpfX07dmFyIFI9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpO2Uuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcImRpc3BsYXk6IC13ZWJraXQtZmxleDsgZGlzcGxheTogLW1zLWZsZXhib3g7IGRpc3BsYXk6IGZsZXg7XCIpO2UuaW5uZXJIVE1MPSc8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPmhlbGxvPC9zcGFuPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcInNwYW5cIil9fTt2YXIgRj17ZWxlbWVudDpcImZpZWxkc2V0XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsMCk7ZS5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLFwiZGlzYWJsZWRcIil9fTt2YXIgST17ZWxlbWVudDpcImZpZWxkc2V0XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1cIjxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+PHA+Y29udGVudDwvcD5cIn19O3ZhciBBPXtlbGVtZW50Olwic3BhblwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiZGlzcGxheTogLXdlYmtpdC1mbGV4OyBkaXNwbGF5OiAtbXMtZmxleGJveDsgZGlzcGxheTogZmxleDtcIik7ZS5pbm5lckhUTUw9JzxzcGFuIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCI+aGVsbG88L3NwYW4+J319O3ZhciBNPXtlbGVtZW50OlwiZm9ybVwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLDApO2Uuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIixcImRpc2FibGVkXCIpfX07dmFyIEw9e2VsZW1lbnQ6XCJhXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmhyZWY9XCIjdm9pZFwiO2UuaW5uZXJIVE1MPSc8aW1nIGlzbWFwIHNyYz1cIicraysnXCIgYWx0PVwiXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiaW1nXCIpfX07dmFyIEI9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiPjxhcmVhIGhyZWY9XCIjdm9pZFwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ltYWdlLW1hcC10YWJpbmRleC10ZXN0XCIgdGFiaW5kZXg9XCItMVwiIGFsdD1cIlwiICcrJ3NyYz1cIicraysnXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiaW1nXCIpfX07dmFyIEg9e2VsZW1lbnQ6ZnVuY3Rpb24gZWxlbWVudChlLHQpe3ZhciByPXQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtlLmFwcGVuZENoaWxkKHIpO3ZhciBuPXIuY29udGVudFdpbmRvdy5kb2N1bWVudDtuLm9wZW4oKTtuLmNsb3NlKCk7cmV0dXJuIHJ9LG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCI7dmFyIHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50O3ZhciByPXQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO3QuYm9keS5hcHBlbmRDaGlsZChyKTtyZXR1cm4gcn0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSl7dmFyIHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50O3ZhciByPXQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO3JldHVybiB0LmFjdGl2ZUVsZW1lbnQ9PT1yfX07dmFyIHo9IWwuaXMuV0VCS0lUO2Z1bmN0aW9uIGZvY3VzSW5aZXJvRGltZW5zaW9uT2JqZWN0KCl7cmV0dXJuIHp9dmFyIFc9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcImludmFsaWQtdmFsdWVcIil9fTt2YXIgVj17ZWxlbWVudDpcImxhYmVsXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKX0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe3ZhciBuPWUub2Zmc2V0SGVpZ2h0O2UuZm9jdXMoKTtyZXR1cm4gci5hY3RpdmVFbGVtZW50PT09ZX19O3ZhciAkPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhodGJcIitcIkc1ek9uaHNhVzVyUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklpQnBaRDBpYzNabklqNDhkR1Y0ZENCNFBTSXhNQ0lnZVQwaU1qQWlJR2xrUFNKXCIrXCJ6ZG1jdGJHbHVheTEwWlhoMElqNTBaWGgwUEM5MFpYaDBQand2YzNablBnPT1cIjt2YXIgVT17ZWxlbWVudDpcIm9iamVjdFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJpbWFnZS9zdmcreG1sXCIpO2Uuc2V0QXR0cmlidXRlKFwiZGF0YVwiLCQpO2Uuc2V0QXR0cmlidXRlKFwid2lkdGhcIixcIjIwMFwiKTtlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLFwiNTBcIik7ZS5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCJ9fTt2YXIgSz17bmFtZTpcImNhbi1mb2N1cy1vYmplY3Qtc3ZnXCIsZWxlbWVudDpcIm9iamVjdFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJpbWFnZS9zdmcreG1sXCIpO2Uuc2V0QXR0cmlidXRlKFwiZGF0YVwiLCQpO2Uuc2V0QXR0cmlidXRlKFwid2lkdGhcIixcIjIwMFwiKTtlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLFwiNTBcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXtpZihsLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gci5hY3RpdmVFbGVtZW50PT09ZX19O3ZhciBHPSFsLmlzLklFOTtmdW5jdGlvbiBmb2N1c09iamVjdFN3Zigpe3JldHVybiBHfXZhciBaPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiZm9jdXMtcmVkaXJlY3QtaW1nLXVzZW1hcFwiPjxhcmVhIGhyZWY9XCIjdm9pZFwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ZvY3VzLXJlZGlyZWN0LWltZy11c2VtYXBcIiBhbHQ9XCJcIiAnKydzcmM9XCInK2srJ1wiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImltZ1wiKX0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe3ZhciBuPWUucXVlcnlTZWxlY3RvcihcImFyZWFcIik7cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PW59fTt2YXIgWT17ZWxlbWVudDpcImZpZWxkc2V0XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPGxlZ2VuZD5sZWdlbmQ8L2xlZ2VuZD48aW5wdXQgdGFiaW5kZXg9XCItMVwiPjxpbnB1dCB0YWJpbmRleD1cIjBcIj4nO3JldHVybiBmYWxzZX0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe3ZhciBuPWUucXVlcnlTZWxlY3RvcignaW5wdXRbdGFiaW5kZXg9XCItMVwiXScpO3ZhciBvPWUucXVlcnlTZWxlY3RvcignaW5wdXRbdGFiaW5kZXg9XCIwXCJdJyk7ZS5mb2N1cygpO2UucXVlcnlTZWxlY3RvcihcImxlZ2VuZFwiKS5mb2N1cygpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT1uJiZcImZvY3VzYWJsZVwifHxyLmFjdGl2ZUVsZW1lbnQ9PT1vJiZcInRhYmJhYmxlXCJ8fFwiXCJ9fTt2YXIgSj17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwid2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IG92ZXJmbG93OiBhdXRvO1wiKTtlLmlubmVySFRNTD0nPGRpdiBzdHlsZT1cIndpZHRoOiA1MDBweDsgaGVpZ2h0OiA0MHB4O1wiPnNjcm9sbGFibGUgY29udGVudDwvZGl2Pic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImRpdlwiKX19O3ZhciBYPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJ3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDtcIik7ZS5pbm5lckhUTUw9JzxkaXYgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGhlaWdodDogNDBweDtcIj5zY3JvbGxhYmxlIGNvbnRlbnQ8L2Rpdj4nfX07dmFyIFE9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIndpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4OyBvdmVyZmxvdzogYXV0bztcIik7ZS5pbm5lckhUTUw9JzxkaXYgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGhlaWdodDogNDBweDtcIj5zY3JvbGxhYmxlIGNvbnRlbnQ8L2Rpdj4nfX07dmFyIGVlPXtlbGVtZW50OlwiZGV0YWlsc1wiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9XCI8c3VtbWFyeT5mb288L3N1bW1hcnk+PHA+Y29udGVudDwvcD5cIjtyZXR1cm4gZS5maXJzdEVsZW1lbnRDaGlsZH19O2Z1bmN0aW9uIG1ha2VGb2N1c2FibGVGb3JlaWduT2JqZWN0KCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcImZvcmVpZ25PYmplY3RcIik7ZS53aWR0aC5iYXNlVmFsLnZhbHVlPTMwO2UuaGVpZ2h0LmJhc2VWYWwudmFsdWU9MzA7ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIikpO2UubGFzdENoaWxkLnR5cGU9XCJ0ZXh0XCI7cmV0dXJuIGV9ZnVuY3Rpb24gZm9jdXNTdmdGb3JlaWduT2JqZWN0SGFjayhlKXt2YXIgdD1lLm93bmVyU1ZHRWxlbWVudHx8ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJzdmdcIjtpZighdCl7cmV0dXJuIGZhbHNlfXZhciByPW1ha2VGb2N1c2FibGVGb3JlaWduT2JqZWN0KCk7ZS5hcHBlbmRDaGlsZChyKTt2YXIgbj1yLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtuLmZvY3VzKCk7bi5kaXNhYmxlZD10cnVlO2UucmVtb3ZlQ2hpbGQocik7cmV0dXJuIHRydWV9ZnVuY3Rpb24gZ2VuZXJhdGUoZSl7cmV0dXJuJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPicrZStcIjwvc3ZnPlwifWZ1bmN0aW9uIGZvY3VzKGUpe2lmKGUuZm9jdXMpe3JldHVybn10cnl7SFRNTEVsZW1lbnQucHJvdG90eXBlLmZvY3VzLmNhbGwoZSl9Y2F0Y2godCl7Zm9jdXNTdmdGb3JlaWduT2JqZWN0SGFjayhlKX19ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe2ZvY3VzKHQpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT10fXZhciB0ZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IGZvY3VzYWJsZT1cInRydWVcIj5hPC90ZXh0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0XCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIHJlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZSgnPHRleHQgdGFiaW5kZXg9XCIwXCI+YTwvdGV4dD4nKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidGV4dFwiKX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBuZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IHRhYmluZGV4PVwiLTFcIj5hPC90ZXh0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0XCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIG9lPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZShbJzxnIGlkPVwiYWxseS10ZXN0LXRhcmdldFwiPjxhIHhsaW5rOmhyZWY9XCIjdm9pZFwiPjx0ZXh0Pmxpbms8L3RleHQ+PC9hPjwvZz4nLCc8dXNlIHhsaW5rOmhyZWY9XCIjYWxseS10ZXN0LXRhcmdldFwiIHg9XCIwXCIgeT1cIjBcIiB0YWJpbmRleD1cIi0xXCIgLz4nXS5qb2luKFwiXCIpKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidXNlXCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIGFlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZSgnPGZvcmVpZ25PYmplY3QgdGFiaW5kZXg9XCItMVwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIC8+PC9mb3JlaWduT2JqZWN0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJmb3JlaWduT2JqZWN0XCIpfHxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZm9yZWlnbk9iamVjdFwiKVswXX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBpZT1Cb29sZWFuKGwuaXMuR0VDS08mJnR5cGVvZiBTVkdFbGVtZW50IT09XCJ1bmRlZmluZWRcIiYmU1ZHRWxlbWVudC5wcm90b3R5cGUuZm9jdXMpO2Z1bmN0aW9uIGZvY3VzU3ZnSW5JZnJhbWUoKXtyZXR1cm4gaWV9dmFyIHNlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZShcIlwiKTtyZXR1cm4gZS5maXJzdENoaWxkfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIGxlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIzeFwiKX19O3ZhciB1ZT17ZWxlbWVudDpcInRhYmxlXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlLHQscil7dmFyIG49ci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7bi5pbm5lckhUTUw9XCI8dHI+PHRkPmNlbGw8L3RkPjwvdHI+XCI7ZS5hcHBlbmRDaGlsZChuKX19O3ZhciBjZT17ZWxlbWVudDpcInZpZGVvXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXt0cnl7ZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIixrKX1jYXRjaChlKXt9fX07dmFyIGRlPWwuaXMuR0VDS098fGwuaXMuVFJJREVOVHx8bC5pcy5FREdFO2Z1bmN0aW9uIHRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb24oKXtyZXR1cm4gZGV9dmFyIGZlPXtjc3NTaGFkb3dQaWVyY2luZ0RlZXBDb21iaW5hdG9yOmNzc1NoYWRvd1BpZXJjaW5nRGVlcENvbWJpbmF0b3IsZm9jdXNJblplcm9EaW1lbnNpb25PYmplY3Q6Zm9jdXNJblplcm9EaW1lbnNpb25PYmplY3QsZm9jdXNPYmplY3RTd2Y6Zm9jdXNPYmplY3RTd2YsZm9jdXNTdmdJbklmcmFtZTpmb2N1c1N2Z0luSWZyYW1lLHRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb246dGFic2VxdWVuY2VBcmVhQXRJbWdQb3NpdGlvbn07dmFyIHBlPXtmb2N1c0FyZWFJbWdUYWJpbmRleDpTLGZvY3VzQXJlYVRhYmluZGV4OkMsZm9jdXNBcmVhV2l0aG91dEhyZWY6VCxmb2N1c0F1ZGlvV2l0aG91dENvbnRyb2xzOkQsZm9jdXNCcm9rZW5JbWFnZU1hcDpOLGZvY3VzQ2hpbGRyZW5PZkZvY3VzYWJsZUZsZXhib3g6Uixmb2N1c0ZpZWxkc2V0RGlzYWJsZWQ6Rixmb2N1c0ZpZWxkc2V0OkksZm9jdXNGbGV4Ym94Q29udGFpbmVyOkEsZm9jdXNGb3JtRGlzYWJsZWQ6TSxmb2N1c0ltZ0lzbWFwOkwsZm9jdXNJbWdVc2VtYXBUYWJpbmRleDpCLGZvY3VzSW5IaWRkZW5JZnJhbWU6SCxmb2N1c0ludmFsaWRUYWJpbmRleDpXLGZvY3VzTGFiZWxUYWJpbmRleDpWLGZvY3VzT2JqZWN0U3ZnOkssZm9jdXNPYmplY3RTdmdIaWRkZW46VSxmb2N1c1JlZGlyZWN0SW1nVXNlbWFwOlosZm9jdXNSZWRpcmVjdExlZ2VuZDpZLGZvY3VzU2Nyb2xsQm9keTpKLGZvY3VzU2Nyb2xsQ29udGFpbmVyV2l0aG91dE92ZXJmbG93OlgsZm9jdXNTY3JvbGxDb250YWluZXI6USxmb2N1c1N1bW1hcnk6ZWUsZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGU6dGUsZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZTpyZSxmb2N1c1N2Z05lZ2F0aXZlVGFiaW5kZXhBdHRyaWJ1dGU6bmUsZm9jdXNTdmdVc2VUYWJpbmRleDpvZSxmb2N1c1N2Z0ZvcmVpZ25vYmplY3RUYWJpbmRleDphZSxmb2N1c1N2ZzpzZSxmb2N1c1RhYmluZGV4VHJhaWxpbmdDaGFyYWN0ZXJzOmxlLGZvY3VzVGFibGU6dWUsZm9jdXNWaWRlb1dpdGhvdXRDb250cm9sczpjZX07ZnVuY3Rpb24gZXhlY3V0ZVRlc3RzKCl7dmFyIGU9ZGV0ZWN0Rm9jdXMocGUpO09iamVjdC5rZXlzKGZlKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPWZlW3RdKCl9KSk7cmV0dXJuIGV9dmFyIG1lPW51bGw7ZnVuY3Rpb24gX3N1cHBvcnRzKCl7aWYobWUpe3JldHVybiBtZX1tZT1PLmdldCgpO2lmKCFtZS50aW1lKXtPLnNldChleGVjdXRlVGVzdHMoKSk7bWU9Ty5nZXQoKX1yZXR1cm4gbWV9dmFyIHZlPXZvaWQgMDt2YXIgYmU9L15cXHMqKC18XFwrKT9bMC05XStcXHMqJC87dmFyIGdlPS9eXFxzKigtfFxcKyk/WzAtOV0rLiokLztmdW5jdGlvbiBpc1ZhbGlkVGFiaW5kZXgoZSl7aWYoIXZlKXt2ZT1fc3VwcG9ydHMoKX12YXIgdD12ZS5mb2N1c1RhYmluZGV4VHJhaWxpbmdDaGFyYWN0ZXJzP2dlOmJlO3ZhciByPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvdmFsaWQtdGFiaW5kZXhcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OmV9KTt2YXIgbj1yLmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpO3ZhciBvPXIuaGFzQXR0cmlidXRlKFwidGFiSW5kZXhcIik7aWYoIW4mJiFvKXtyZXR1cm4gZmFsc2V9dmFyIGE9ci5vd25lclNWR0VsZW1lbnR8fHIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwic3ZnXCI7aWYoYSYmIXZlLmZvY3VzU3ZnVGFiaW5kZXhBdHRyaWJ1dGUpe3JldHVybiBmYWxzZX1pZih2ZS5mb2N1c0ludmFsaWRUYWJpbmRleCl7cmV0dXJuIHRydWV9dmFyIGk9ci5nZXRBdHRyaWJ1dGUobj9cInRhYmluZGV4XCI6XCJ0YWJJbmRleFwiKTtpZihpPT09XCItMzI3NjhcIil7cmV0dXJuIGZhbHNlfXJldHVybiBCb29sZWFuKGkmJnQudGVzdChpKSl9ZnVuY3Rpb24gdGFiaW5kZXhWYWx1ZShlKXtpZighaXNWYWxpZFRhYmluZGV4KGUpKXtyZXR1cm4gbnVsbH12YXIgdD1lLmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpO3ZhciByPXQ/XCJ0YWJpbmRleFwiOlwidGFiSW5kZXhcIjt2YXIgbj1wYXJzZUludChlLmdldEF0dHJpYnV0ZShyKSwxMCk7cmV0dXJuIGlzTmFOKG4pPy0xOm59ZnVuY3Rpb24gaXNVc2VyTW9kaWZ5V3JpdGFibGUoZSl7dmFyIHQ9ZS53ZWJraXRVc2VyTW9kaWZ5fHxcIlwiO3JldHVybiBCb29sZWFuKHQmJnQuaW5kZXhPZihcIndyaXRlXCIpIT09LTEpfWZ1bmN0aW9uIGhhc0Nzc092ZXJmbG93U2Nyb2xsKGUpe3JldHVybltlLmdldFByb3BlcnR5VmFsdWUoXCJvdmVyZmxvd1wiKSxlLmdldFByb3BlcnR5VmFsdWUoXCJvdmVyZmxvdy14XCIpLGUuZ2V0UHJvcGVydHlWYWx1ZShcIm92ZXJmbG93LXlcIildLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09XCJhdXRvXCJ8fGU9PT1cInNjcm9sbFwifSkpfWZ1bmN0aW9uIGhhc0Nzc0Rpc3BsYXlGbGV4KGUpe3JldHVybiBlLmRpc3BsYXkuaW5kZXhPZihcImZsZXhcIik+LTF9ZnVuY3Rpb24gaXNTY3JvbGxhYmxlQ29udGFpbmVyKGUsdCxyLG4pe2lmKHQhPT1cImRpdlwiJiZ0IT09XCJzcGFuXCIpe3JldHVybiBmYWxzZX1pZihyJiZyIT09XCJkaXZcIiYmciE9PVwic3BhblwiJiYhaGFzQ3NzT3ZlcmZsb3dTY3JvbGwobikpe3JldHVybiBmYWxzZX1yZXR1cm4gZS5vZmZzZXRIZWlnaHQ8ZS5zY3JvbGxIZWlnaHR8fGUub2Zmc2V0V2lkdGg8ZS5zY3JvbGxXaWR0aH12YXIgaGU9dm9pZCAwO2Z1bmN0aW9uIGlzRm9jdXNSZWxldmFudFJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tmbGV4Ym94OmZhbHNlLHNjcm9sbGFibGU6ZmFsc2Usc2hhZG93OmZhbHNlfTpyO2lmKCFoZSl7aGU9X3N1cHBvcnRzKCl9dmFyIG89Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9mb2N1cy1yZWxldmFudFwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO2lmKCFuLnNoYWRvdyYmby5zaGFkb3dSb290KXtyZXR1cm4gdHJ1ZX12YXIgYT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoYT09PVwiaW5wdXRcIiYmby50eXBlPT09XCJoaWRkZW5cIil7cmV0dXJuIGZhbHNlfWlmKGE9PT1cImlucHV0XCJ8fGE9PT1cInNlbGVjdFwifHxhPT09XCJidXR0b25cInx8YT09PVwidGV4dGFyZWFcIil7cmV0dXJuIHRydWV9aWYoYT09PVwibGVnZW5kXCImJmhlLmZvY3VzUmVkaXJlY3RMZWdlbmQpe3JldHVybiB0cnVlfWlmKGE9PT1cImxhYmVsXCIpe3JldHVybiB0cnVlfWlmKGE9PT1cImFyZWFcIil7cmV0dXJuIHRydWV9aWYoYT09PVwiYVwiJiZvLmhhc0F0dHJpYnV0ZShcImhyZWZcIikpe3JldHVybiB0cnVlfWlmKGE9PT1cIm9iamVjdFwiJiZvLmhhc0F0dHJpYnV0ZShcInVzZW1hcFwiKSl7cmV0dXJuIGZhbHNlfWlmKGE9PT1cIm9iamVjdFwiKXt2YXIgaT1vLmdldEF0dHJpYnV0ZShcInR5cGVcIik7aWYoIWhlLmZvY3VzT2JqZWN0U3ZnJiZpPT09XCJpbWFnZS9zdmcreG1sXCIpe3JldHVybiBmYWxzZX1lbHNlIGlmKCFoZS5mb2N1c09iamVjdFN3ZiYmaT09PVwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIil7cmV0dXJuIGZhbHNlfX1pZihhPT09XCJpZnJhbWVcInx8YT09PVwib2JqZWN0XCIpe3JldHVybiB0cnVlfWlmKGE9PT1cImVtYmVkXCJ8fGE9PT1cImtleWdlblwiKXtyZXR1cm4gdHJ1ZX1pZihvLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSl7cmV0dXJuIHRydWV9aWYoYT09PVwiYXVkaW9cIiYmKGhlLmZvY3VzQXVkaW9XaXRob3V0Q29udHJvbHN8fG8uaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIikpKXtyZXR1cm4gdHJ1ZX1pZihhPT09XCJ2aWRlb1wiJiYoaGUuZm9jdXNWaWRlb1dpdGhvdXRDb250cm9sc3x8by5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKSkpe3JldHVybiB0cnVlfWlmKGhlLmZvY3VzU3VtbWFyeSYmYT09PVwic3VtbWFyeVwiKXtyZXR1cm4gdHJ1ZX12YXIgcz1pc1ZhbGlkVGFiaW5kZXgobyk7aWYoYT09PVwiaW1nXCImJm8uaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKXtyZXR1cm4gcyYmaGUuZm9jdXNJbWdVc2VtYXBUYWJpbmRleHx8aGUuZm9jdXNSZWRpcmVjdEltZ1VzZW1hcH1pZihoZS5mb2N1c1RhYmxlJiYoYT09PVwidGFibGVcInx8YT09PVwidGRcIikpe3JldHVybiB0cnVlfWlmKGhlLmZvY3VzRmllbGRzZXQmJmE9PT1cImZpZWxkc2V0XCIpe3JldHVybiB0cnVlfXZhciBsPWE9PT1cInN2Z1wiO3ZhciB1PW8ub3duZXJTVkdFbGVtZW50O3ZhciBjPW8uZ2V0QXR0cmlidXRlKFwiZm9jdXNhYmxlXCIpO3ZhciBkPXRhYmluZGV4VmFsdWUobyk7aWYoYT09PVwidXNlXCImJmQhPT1udWxsJiYhaGUuZm9jdXNTdmdVc2VUYWJpbmRleCl7cmV0dXJuIGZhbHNlfWlmKGE9PT1cImZvcmVpZ25vYmplY3RcIil7cmV0dXJuIGQhPT1udWxsJiZoZS5mb2N1c1N2Z0ZvcmVpZ25vYmplY3RUYWJpbmRleH1pZihlbGVtZW50TWF0Y2hlcyhvLFwic3ZnIGFcIikmJm8uaGFzQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKSl7cmV0dXJuIHRydWV9aWYoKGx8fHUpJiZvLmZvY3VzJiYhaGUuZm9jdXNTdmdOZWdhdGl2ZVRhYmluZGV4QXR0cmlidXRlJiZkPDApe3JldHVybiBmYWxzZX1pZihsKXtyZXR1cm4gc3x8aGUuZm9jdXNTdmd8fGhlLmZvY3VzU3ZnSW5JZnJhbWV8fEJvb2xlYW4oaGUuZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGUmJmMmJmM9PT1cInRydWVcIil9aWYodSl7aWYoaGUuZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZSYmcyl7cmV0dXJuIHRydWV9aWYoaGUuZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGUpe3JldHVybiBjPT09XCJ0cnVlXCJ9fWlmKHMpe3JldHVybiB0cnVlfXZhciBmPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG8sbnVsbCk7aWYoaXNVc2VyTW9kaWZ5V3JpdGFibGUoZikpe3JldHVybiB0cnVlfWlmKGhlLmZvY3VzSW1nSXNtYXAmJmE9PT1cImltZ1wiJiZvLmhhc0F0dHJpYnV0ZShcImlzbWFwXCIpKXt2YXIgcD1nZXRQYXJlbnRzKHtjb250ZXh0Om99KS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJhXCImJmUuaGFzQXR0cmlidXRlKFwiaHJlZlwiKX0pKTtpZihwKXtyZXR1cm4gdHJ1ZX19aWYoIW4uc2Nyb2xsYWJsZSYmaGUuZm9jdXNTY3JvbGxDb250YWluZXIpe2lmKGhlLmZvY3VzU2Nyb2xsQ29udGFpbmVyV2l0aG91dE92ZXJmbG93KXtpZihpc1Njcm9sbGFibGVDb250YWluZXIobyxhKSl7cmV0dXJuIHRydWV9fWVsc2UgaWYoaGFzQ3NzT3ZlcmZsb3dTY3JvbGwoZikpe3JldHVybiB0cnVlfX1pZighbi5mbGV4Ym94JiZoZS5mb2N1c0ZsZXhib3hDb250YWluZXImJmhhc0Nzc0Rpc3BsYXlGbGV4KGYpKXtyZXR1cm4gdHJ1ZX12YXIgbT1vLnBhcmVudEVsZW1lbnQ7aWYoIW4uc2Nyb2xsYWJsZSYmbSl7dmFyIHY9bS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3ZhciBiPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG0sbnVsbCk7aWYoaGUuZm9jdXNTY3JvbGxCb2R5JiZpc1Njcm9sbGFibGVDb250YWluZXIobSxhLHYsYikpe3JldHVybiB0cnVlfWlmKGhlLmZvY3VzQ2hpbGRyZW5PZkZvY3VzYWJsZUZsZXhib3gpe2lmKGhhc0Nzc0Rpc3BsYXlGbGV4KGIpKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBmYWxzZX1pc0ZvY3VzUmVsZXZhbnRSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNGb2N1c1JlbGV2YW50KHQpe3JldHVybiBpc0ZvY3VzUmVsZXZhbnRSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNGb2N1c1JlbGV2YW50UnVsZXM7cmV0dXJuIHR9O3ZhciB5ZT1pc0ZvY3VzUmVsZXZhbnRSdWxlcy5leGNlcHQoe30pO2Z1bmN0aW9uIGZpbmRJbmRleChlLHQpe2lmKGUuZmluZEluZGV4KXtyZXR1cm4gZS5maW5kSW5kZXgodCl9dmFyIHI9ZS5sZW5ndGg7aWYocj09PTApe3JldHVybi0xfWZvcih2YXIgbj0wO248cjtuKyspe2lmKHQoZVtuXSxuLGUpKXtyZXR1cm4gbn19cmV0dXJuLTF9ZnVuY3Rpb24gZ2V0Q29udGVudERvY3VtZW50KGUpe3RyeXtyZXR1cm4gZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdpbmRvdyYmZS5jb250ZW50V2luZG93LmRvY3VtZW50fHxlLmdldFNWR0RvY3VtZW50JiZlLmdldFNWR0RvY3VtZW50KCl8fG51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGdldFdpbmRvdyhlKXt2YXIgdD1nZXREb2N1bWVudChlKTtyZXR1cm4gdC5kZWZhdWx0Vmlld3x8d2luZG93fXZhciB4ZT12b2lkIDA7ZnVuY3Rpb24gc2VsZWN0SW5TaGFkb3dzKGUpe2lmKHR5cGVvZiB4ZSE9PVwic3RyaW5nXCIpe3ZhciB0PWNzc1NoYWRvd1BpZXJjaW5nRGVlcENvbWJpbmF0b3IoKTtpZih0KXt4ZT1cIiwgaHRtbCBcIit0K1wiIFwifX1pZigheGUpe3JldHVybiBlfXJldHVybiBlK3hlK2UucmVwbGFjZSgvXFxzKixcXHMqL2csXCIsXCIpLnNwbGl0KFwiLFwiKS5qb2luKHhlKX12YXIgX2U9dm9pZCAwO2Z1bmN0aW9uIGZpbmREb2N1bWVudEhvc3RFbGVtZW50KGUpe2lmKCFfZSl7X2U9c2VsZWN0SW5TaGFkb3dzKFwib2JqZWN0LCBpZnJhbWVcIil9aWYoZS5fZnJhbWVFbGVtZW50IT09dW5kZWZpbmVkKXtyZXR1cm4gZS5fZnJhbWVFbGVtZW50fWUuX2ZyYW1lRWxlbWVudD1udWxsO3ZhciB0PWUucGFyZW50LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoX2UpO1tdLnNvbWUuY2FsbCh0LChmdW5jdGlvbih0KXt2YXIgcj1nZXRDb250ZW50RG9jdW1lbnQodCk7aWYociE9PWUuZG9jdW1lbnQpe3JldHVybiBmYWxzZX1lLl9mcmFtZUVsZW1lbnQ9dDtyZXR1cm4gdHJ1ZX0pKTtyZXR1cm4gZS5fZnJhbWVFbGVtZW50fWZ1bmN0aW9uIGdldEZyYW1lRWxlbWVudChlKXt2YXIgdD1nZXRXaW5kb3coZSk7aWYoIXQucGFyZW50fHx0LnBhcmVudD09PXQpe3JldHVybiBudWxsfXRyeXtyZXR1cm4gdC5mcmFtZUVsZW1lbnR8fGZpbmREb2N1bWVudEhvc3RFbGVtZW50KHQpfWNhdGNoKGUpe3JldHVybiBudWxsfX12YXIgd2U9L14oYXJlYSkkLztmdW5jdGlvbiBjb21wdXRlZFN0eWxlKGUsdCl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1mdW5jdGlvbiBub3REaXNwbGF5ZWQoZSl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGNvbXB1dGVkU3R5bGUoZSxcImRpc3BsYXlcIik9PT1cIm5vbmVcIn0pKX1mdW5jdGlvbiBub3RWaXNpYmxlKGUpe3ZhciB0PWZpbmRJbmRleChlLChmdW5jdGlvbihlKXt2YXIgdD1jb21wdXRlZFN0eWxlKGUsXCJ2aXNpYmlsaXR5XCIpO3JldHVybiB0PT09XCJoaWRkZW5cInx8dD09PVwiY29sbGFwc2VcIn0pKTtpZih0PT09LTEpe3JldHVybiBmYWxzZX12YXIgcj1maW5kSW5kZXgoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGNvbXB1dGVkU3R5bGUoZSxcInZpc2liaWxpdHlcIik9PT1cInZpc2libGVcIn0pKTtpZihyPT09LTEpe3JldHVybiB0cnVlfWlmKHQ8cil7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGNvbGxhcHNlZFBhcmVudChlKXt2YXIgdD0xO2lmKGVbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwic3VtbWFyeVwiKXt0PTJ9cmV0dXJuIGUuc2xpY2UodCkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwiZGV0YWlsc1wiJiZlLm9wZW49PT1mYWxzZX0pKX1mdW5jdGlvbiBpc1Zpc2libGVSdWxlcygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuZXhjZXB0LG49cj09PXVuZGVmaW5lZD97bm90UmVuZGVyZWQ6ZmFsc2UsY3NzRGlzcGxheTpmYWxzZSxjc3NWaXNpYmlsaXR5OmZhbHNlLGRldGFpbHNFbGVtZW50OmZhbHNlLGJyb3dzaW5nQ29udGV4dDpmYWxzZX06cjt2YXIgbz1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL3Zpc2libGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTt2YXIgYT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIW4ubm90UmVuZGVyZWQmJndlLnRlc3QoYSkpe3JldHVybiB0cnVlfXZhciBpPWdldFBhcmVudHMoe2NvbnRleHQ6b30pO3ZhciBzPWE9PT1cImF1ZGlvXCImJiFvLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpO2lmKCFuLmNzc0Rpc3BsYXkmJm5vdERpc3BsYXllZChzP2kuc2xpY2UoMSk6aSkpe3JldHVybiBmYWxzZX1pZighbi5jc3NWaXNpYmlsaXR5JiZub3RWaXNpYmxlKGkpKXtyZXR1cm4gZmFsc2V9aWYoIW4uZGV0YWlsc0VsZW1lbnQmJmNvbGxhcHNlZFBhcmVudChpKSl7cmV0dXJuIGZhbHNlfWlmKCFuLmJyb3dzaW5nQ29udGV4dCl7dmFyIGw9Z2V0RnJhbWVFbGVtZW50KG8pO3ZhciB1PWlzVmlzaWJsZVJ1bGVzLmV4Y2VwdChuKTtpZihsJiYhdShsKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1pc1Zpc2libGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNWaXNpYmxlKHQpe3JldHVybiBpc1Zpc2libGVSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNWaXNpYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBFZT1pc1Zpc2libGVSdWxlcy5leGNlcHQoe30pO2Z1bmN0aW9uIGdldE1hcEJ5TmFtZShlLHQpe3ZhciByPXQucXVlcnlTZWxlY3RvcignbWFwW25hbWU9XCInKygwLGEuZGVmYXVsdCkoZSkrJ1wiXScpO3JldHVybiByfHxudWxsfWZ1bmN0aW9uIGdldEltYWdlT2ZBcmVhKGUpe3ZhciB0PWUucGFyZW50RWxlbWVudDtpZighdC5uYW1lfHx0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT1cIm1hcFwiKXtyZXR1cm4gbnVsbH12YXIgcj1nZXREb2N1bWVudChlKTtyZXR1cm4gci5xdWVyeVNlbGVjdG9yKCdpbWdbdXNlbWFwPVwiIycrKDAsYS5kZWZhdWx0KSh0Lm5hbWUpKydcIl0nKXx8bnVsbH12YXIgamU9dm9pZCAwO2Z1bmN0aW9uIGlzVmFsaWRBcmVhKGUpe2lmKCFqZSl7amU9X3N1cHBvcnRzKCl9dmFyIHQ9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy92YWxpZC1hcmVhXCIsY29udGV4dDplfSk7dmFyIHI9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHIhPT1cImFyZWFcIil7cmV0dXJuIGZhbHNlfXZhciBuPXQuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIik7aWYoIWplLmZvY3VzQXJlYVRhYmluZGV4JiZuKXtyZXR1cm4gZmFsc2V9dmFyIG89Z2V0SW1hZ2VPZkFyZWEodCk7aWYoIW98fCFFZShvKSl7cmV0dXJuIGZhbHNlfWlmKCFqZS5mb2N1c0Jyb2tlbkltYWdlTWFwJiYoIW8uY29tcGxldGV8fCFvLm5hdHVyYWxIZWlnaHR8fG8ub2Zmc2V0V2lkdGg8PTB8fG8ub2Zmc2V0SGVpZ2h0PD0wKSl7cmV0dXJuIGZhbHNlfWlmKCFqZS5mb2N1c0FyZWFXaXRob3V0SHJlZiYmIXQuaHJlZil7cmV0dXJuIGplLmZvY3VzQXJlYVRhYmluZGV4JiZufHxqZS5mb2N1c0FyZWFJbWdUYWJpbmRleCYmby5oYXNBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKX12YXIgYT1nZXRQYXJlbnRzKHtjb250ZXh0Om99KS5zbGljZSgxKS5zb21lKChmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT1cImJ1dHRvblwifHx0PT09XCJhXCJ9KSk7aWYoYSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfXZhciBPZT12b2lkIDA7dmFyIGtlPXZvaWQgMDt2YXIgU2U9e2lucHV0OnRydWUsc2VsZWN0OnRydWUsdGV4dGFyZWE6dHJ1ZSxidXR0b246dHJ1ZSxmaWVsZHNldDp0cnVlLGZvcm06dHJ1ZX07ZnVuY3Rpb24gaXNOYXRpdmVEaXNhYmxlZFN1cHBvcnRlZChlKXtpZighT2Upe09lPV9zdXBwb3J0cygpO2lmKE9lLmZvY3VzRmllbGRzZXREaXNhYmxlZCl7ZGVsZXRlIFNlLmZpZWxkc2V0fWlmKE9lLmZvY3VzRm9ybURpc2FibGVkKXtkZWxldGUgU2UuZm9ybX1rZT1uZXcgUmVnRXhwKFwiXihcIitPYmplY3Qua2V5cyhTZSkuam9pbihcInxcIikrXCIpJFwiKX12YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL25hdGl2ZS1kaXNhYmxlZC1zdXBwb3J0ZWRcIixjb250ZXh0OmV9KTt2YXIgcj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIEJvb2xlYW4oa2UudGVzdChyKSl9dmFyIENlPXZvaWQgMDtmdW5jdGlvbiBpc0Rpc2FibGVkRmllbGRzZXQoZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0PT09XCJmaWVsZHNldFwiJiZlLmRpc2FibGVkfWZ1bmN0aW9uIGlzRGlzYWJsZWRGb3JtKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD09PVwiZm9ybVwiJiZlLmRpc2FibGVkfWZ1bmN0aW9uIGlzRGlzYWJsZWQoZSl7aWYoIUNlKXtDZT1fc3VwcG9ydHMoKX12YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2Rpc2FibGVkXCIsY29udGV4dDplfSk7aWYodC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWFsbHktZGlzYWJsZWRcIikpe3JldHVybiB0cnVlfWlmKCFpc05hdGl2ZURpc2FibGVkU3VwcG9ydGVkKHQpKXtyZXR1cm4gZmFsc2V9aWYodC5kaXNhYmxlZCl7cmV0dXJuIHRydWV9dmFyIHI9Z2V0UGFyZW50cyh7Y29udGV4dDp0fSk7aWYoci5zb21lKGlzRGlzYWJsZWRGaWVsZHNldCkpe3JldHVybiB0cnVlfWlmKCFDZS5mb2N1c0Zvcm1EaXNhYmxlZCYmci5zb21lKGlzRGlzYWJsZWRGb3JtKSl7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGlzT25seVRhYmJhYmxlUnVsZXMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmV4Y2VwdCxuPXI9PT11bmRlZmluZWQ/e29ubHlGb2N1c2FibGVCcm93c2luZ0NvbnRleHQ6ZmFsc2UsdmlzaWJsZTpmYWxzZX06cjt2YXIgbz1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL29ubHktdGFiYmFibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTtpZighbi52aXNpYmxlJiYhRWUobykpe3JldHVybiBmYWxzZX1pZighbi5vbmx5Rm9jdXNhYmxlQnJvd3NpbmdDb250ZXh0JiYobC5pcy5HRUNLT3x8bC5pcy5UUklERU5UfHxsLmlzLkVER0UpKXt2YXIgYT1nZXRGcmFtZUVsZW1lbnQobyk7aWYoYSl7aWYodGFiaW5kZXhWYWx1ZShhKTwwKXtyZXR1cm4gZmFsc2V9fX12YXIgaT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIHM9dGFiaW5kZXhWYWx1ZShvKTtpZihpPT09XCJsYWJlbFwiJiZsLmlzLkdFQ0tPKXtyZXR1cm4gcyE9PW51bGwmJnM+PTB9aWYobC5pcy5HRUNLTyYmby5vd25lclNWR0VsZW1lbnQmJiFvLmZvY3VzKXtpZihpPT09XCJhXCImJm8uaGFzQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKSl7aWYobC5pcy5HRUNLTyl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9aXNPbmx5VGFiYmFibGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNPbmx5VGFiYmFibGUodCl7cmV0dXJuIGlzT25seVRhYmJhYmxlUnVsZXMoe2NvbnRleHQ6dCxleGNlcHQ6ZX0pfTt0LnJ1bGVzPWlzT25seVRhYmJhYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBUZT1pc09ubHlUYWJiYWJsZVJ1bGVzLmV4Y2VwdCh7fSk7dmFyIERlPXZvaWQgMDtmdW5jdGlvbiBpc09ubHlGb2N1c1JlbGV2YW50KGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZih0PT09XCJlbWJlZFwifHx0PT09XCJrZXlnZW5cIil7cmV0dXJuIHRydWV9dmFyIHI9dGFiaW5kZXhWYWx1ZShlKTtpZihlLnNoYWRvd1Jvb3QmJnI9PT1udWxsKXtyZXR1cm4gdHJ1ZX1pZih0PT09XCJsYWJlbFwiKXtyZXR1cm4hRGUuZm9jdXNMYWJlbFRhYmluZGV4fHxyPT09bnVsbH1pZih0PT09XCJsZWdlbmRcIil7cmV0dXJuIHI9PT1udWxsfWlmKERlLmZvY3VzU3ZnRm9jdXNhYmxlQXR0cmlidXRlJiYoZS5vd25lclNWR0VsZW1lbnR8fHQ9PT1cInN2Z1wiKSl7dmFyIG49ZS5nZXRBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIik7cmV0dXJuIG4mJm49PT1cImZhbHNlXCJ9aWYodD09PVwiaW1nXCImJmUuaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKXtyZXR1cm4gcj09PW51bGx8fCFEZS5mb2N1c0ltZ1VzZW1hcFRhYmluZGV4fWlmKHQ9PT1cImFyZWFcIil7cmV0dXJuIWlzVmFsaWRBcmVhKGUpfXJldHVybiBmYWxzZX1mdW5jdGlvbiBpc0ZvY3VzYWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tkaXNhYmxlZDpmYWxzZSx2aXNpYmxlOmZhbHNlLG9ubHlUYWJiYWJsZTpmYWxzZX06cjtpZighRGUpe0RlPV9zdXBwb3J0cygpfXZhciBvPVRlLnJ1bGVzLmV4Y2VwdCh7b25seUZvY3VzYWJsZUJyb3dzaW5nQ29udGV4dDp0cnVlLHZpc2libGU6bi52aXNpYmxlfSk7dmFyIGE9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9mb2N1c2FibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTt2YXIgaT15ZS5ydWxlcyh7Y29udGV4dDphLGV4Y2VwdDpufSk7aWYoIWl8fGlzT25seUZvY3VzUmVsZXZhbnQoYSkpe3JldHVybiBmYWxzZX1pZighbi5kaXNhYmxlZCYmaXNEaXNhYmxlZChhKSl7cmV0dXJuIGZhbHNlfWlmKCFuLm9ubHlUYWJiYWJsZSYmbyhhKSl7cmV0dXJuIGZhbHNlfWlmKCFuLnZpc2libGUpe3ZhciBzPXtjb250ZXh0OmEsZXhjZXB0Ont9fTtpZihEZS5mb2N1c0luSGlkZGVuSWZyYW1lKXtzLmV4Y2VwdC5icm93c2luZ0NvbnRleHQ9dHJ1ZX1pZihEZS5mb2N1c09iamVjdFN2Z0hpZGRlbil7dmFyIGw9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGw9PT1cIm9iamVjdFwiKXtzLmV4Y2VwdC5jc3NWaXNpYmlsaXR5PXRydWV9fWlmKCFFZS5ydWxlcyhzKSl7cmV0dXJuIGZhbHNlfX12YXIgdT1nZXRGcmFtZUVsZW1lbnQoYSk7aWYodSl7dmFyIGM9dS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGM9PT1cIm9iamVjdFwiJiYhRGUuZm9jdXNJblplcm9EaW1lbnNpb25PYmplY3Qpe2lmKCF1Lm9mZnNldFdpZHRofHwhdS5vZmZzZXRIZWlnaHQpe3JldHVybiBmYWxzZX19fXZhciBkPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihkPT09XCJzdmdcIiYmRGUuZm9jdXNTdmdJbklmcmFtZSYmIXUmJmEuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIik9PT1udWxsKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9aXNGb2N1c2FibGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNGb2N1c2FibGUodCl7cmV0dXJuIGlzRm9jdXNhYmxlUnVsZXMoe2NvbnRleHQ6dCxleGNlcHQ6ZX0pfTt0LnJ1bGVzPWlzRm9jdXNhYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBQZT1pc0ZvY3VzYWJsZVJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gY3JlYXRlRmlsdGVyKGUpe3ZhciB0PWZ1bmN0aW9uIGZpbHRlcih0KXtpZih0LnNoYWRvd1Jvb3Qpe3JldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFR9aWYoZSh0KSl7cmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVH1yZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUH07dC5hY2NlcHROb2RlPXQ7cmV0dXJuIHR9dmFyIE5lPWNyZWF0ZUZpbHRlcih5ZSk7ZnVuY3Rpb24gcXVlcnlGb2N1c2FibGVTdHJpY3QoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlLG89ZS5zdHJhdGVneTtpZighdCl7dD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9dmFyIGE9UGUucnVsZXMuZXhjZXB0KHtvbmx5VGFiYmFibGU6bn0pO3ZhciBpPWdldERvY3VtZW50KHQpO3ZhciBzPWkuY3JlYXRlVHJlZVdhbGtlcih0LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULG89PT1cImFsbFwiP05lOmNyZWF0ZUZpbHRlcihhKSxmYWxzZSk7dmFyIGw9W107d2hpbGUocy5uZXh0Tm9kZSgpKXtpZihzLmN1cnJlbnROb2RlLnNoYWRvd1Jvb3Qpe2lmKGEocy5jdXJyZW50Tm9kZSkpe2wucHVzaChzLmN1cnJlbnROb2RlKX1sPWwuY29uY2F0KHF1ZXJ5Rm9jdXNhYmxlU3RyaWN0KHtjb250ZXh0OnMuY3VycmVudE5vZGUuc2hhZG93Um9vdCxpbmNsdWRlT25seVRhYmJhYmxlOm4sc3RyYXRlZ3k6b30pKX1lbHNle2wucHVzaChzLmN1cnJlbnROb2RlKX19aWYocil7aWYobz09PVwiYWxsXCIpe2lmKHllKHQpKXtsLnVuc2hpZnQodCl9fWVsc2UgaWYoYSh0KSl7bC51bnNoaWZ0KHQpfX1yZXR1cm4gbH12YXIgUmU9dm9pZCAwO3ZhciBGZT12b2lkIDA7ZnVuY3Rpb24gc2VsZWN0b3IkMigpe2lmKCFSZSl7UmU9X3N1cHBvcnRzKCl9aWYodHlwZW9mIEZlPT09XCJzdHJpbmdcIil7cmV0dXJuIEZlfUZlPVwiXCIrKFJlLmZvY3VzVGFibGU/XCJ0YWJsZSwgdGQsXCI6XCJcIikrKFJlLmZvY3VzRmllbGRzZXQ/XCJmaWVsZHNldCxcIjpcIlwiKStcInN2ZyBhLFwiK1wiYVtocmVmXSxcIitcImFyZWFbaHJlZl0sXCIrXCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYnV0dG9uLFwiK1wiaWZyYW1lLCBvYmplY3QsIGVtYmVkLFwiK1wia2V5Z2VuLFwiKyhSZS5mb2N1c0F1ZGlvV2l0aG91dENvbnRyb2xzP1wiYXVkaW8sXCI6XCJhdWRpb1tjb250cm9sc10sXCIpKyhSZS5mb2N1c1ZpZGVvV2l0aG91dENvbnRyb2xzP1widmlkZW8sXCI6XCJ2aWRlb1tjb250cm9sc10sXCIpKyhSZS5mb2N1c1N1bW1hcnk/XCJzdW1tYXJ5LFwiOlwiXCIpK1wiW3RhYmluZGV4XSxcIitcIltjb250ZW50ZWRpdGFibGVdXCI7RmU9c2VsZWN0SW5TaGFkb3dzKEZlKTtyZXR1cm4gRmV9ZnVuY3Rpb24gcXVlcnlGb2N1c2FibGVRdWljaygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGU7dmFyIG89c2VsZWN0b3IkMigpO3ZhciBhPXQucXVlcnlTZWxlY3RvckFsbChvKTt2YXIgaT1QZS5ydWxlcy5leGNlcHQoe29ubHlUYWJiYWJsZTpufSk7dmFyIHM9W10uZmlsdGVyLmNhbGwoYSxpKTtpZihyJiZpKHQpKXtzLnVuc2hpZnQodCl9cmV0dXJuIHN9ZnVuY3Rpb24gcXVlcnlGb2N1c2FibGUoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlLG89ZS5zdHJhdGVneSxhPW89PT11bmRlZmluZWQ/XCJxdWlja1wiOm87dmFyIGk9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJxdWVyeS9mb2N1c2FibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxkZWZhdWx0VG9Eb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO3ZhciBzPXtjb250ZXh0OmksaW5jbHVkZUNvbnRleHQ6cixpbmNsdWRlT25seVRhYmJhYmxlOm4sc3RyYXRlZ3k6YX07aWYoYT09PVwicXVpY2tcIil7cmV0dXJuIHF1ZXJ5Rm9jdXNhYmxlUXVpY2socyl9ZWxzZSBpZihhPT09XCJzdHJpY3RcInx8YT09PVwiYWxsXCIpe3JldHVybiBxdWVyeUZvY3VzYWJsZVN0cmljdChzKX10aHJvdyBuZXcgVHlwZUVycm9yKCdxdWVyeS9mb2N1c2FibGUgcmVxdWlyZXMgb3B0aW9uLnN0cmF0ZWd5IHRvIGJlIG9uZSBvZiBbXCJxdWlja1wiLCBcInN0cmljdFwiLCBcImFsbFwiXScpfXZhciBJZT12b2lkIDA7dmFyIEFlPS9eKGZpZWxkc2V0fHRhYmxlfHRkfGJvZHkpJC87ZnVuY3Rpb24gaXNUYWJiYWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tmbGV4Ym94OmZhbHNlLHNjcm9sbGFibGU6ZmFsc2Usc2hhZG93OmZhbHNlLHZpc2libGU6ZmFsc2Usb25seVRhYmJhYmxlOmZhbHNlfTpyO2lmKCFJZSl7SWU9X3N1cHBvcnRzKCl9dmFyIG89Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy90YWJiYWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO2lmKGwuaXMuQkxJTksmJmwuaXMuQU5EUk9JRCYmbC5tYWpvclZlcnNpb24+NDIpe3JldHVybiBmYWxzZX12YXIgYT1nZXRGcmFtZUVsZW1lbnQobyk7aWYoYSl7aWYobC5pcy5XRUJLSVQmJmwuaXMuSU9TKXtyZXR1cm4gZmFsc2V9aWYodGFiaW5kZXhWYWx1ZShhKTwwKXtyZXR1cm4gZmFsc2V9aWYoIW4udmlzaWJsZSYmKGwuaXMuQkxJTkt8fGwuaXMuV0VCS0lUKSYmIUVlKGEpKXtyZXR1cm4gZmFsc2V9dmFyIGk9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGk9PT1cIm9iamVjdFwiKXt2YXIgcz1sLm5hbWU9PT1cIkNocm9tZVwiJiZsLm1ham9yVmVyc2lvbj49NTR8fGwubmFtZT09PVwiT3BlcmFcIiYmbC5tYWpvclZlcnNpb24+PTQxO2lmKGwuaXMuV0VCS0lUfHxsLmlzLkJMSU5LJiYhcyl7cmV0dXJuIGZhbHNlfX19dmFyIHU9by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3ZhciBjPXRhYmluZGV4VmFsdWUobyk7dmFyIGQ9Yz09PW51bGw/bnVsbDpjPj0wO2lmKGwuaXMuRURHRSYmbC5tYWpvclZlcnNpb24+PTE0JiZhJiZvLm93bmVyU1ZHRWxlbWVudCYmYzwwKXtyZXR1cm4gdHJ1ZX12YXIgZj1kIT09ZmFsc2U7dmFyIHA9YyE9PW51bGwmJmM+PTA7aWYoby5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpe3JldHVybiBmfWlmKEFlLnRlc3QodSkmJmQhPT10cnVlKXtyZXR1cm4gZmFsc2V9aWYobC5pcy5XRUJLSVQmJmwuaXMuSU9TKXt2YXIgbT11PT09XCJpbnB1dFwiJiZvLnR5cGU9PT1cInRleHRcInx8by50eXBlPT09XCJwYXNzd29yZFwifHx1PT09XCJzZWxlY3RcInx8dT09PVwidGV4dGFyZWFcInx8by5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIik7aWYoIW0pe3ZhciB2PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG8sbnVsbCk7bT1pc1VzZXJNb2RpZnlXcml0YWJsZSh2KX1pZighbSl7cmV0dXJuIGZhbHNlfX1pZih1PT09XCJ1c2VcIiYmYyE9PW51bGwpe2lmKGwuaXMuQkxJTkt8fGwuaXMuV0VCS0lUJiZsLm1ham9yVmVyc2lvbj09PTkpe3JldHVybiB0cnVlfX1pZihlbGVtZW50TWF0Y2hlcyhvLFwic3ZnIGFcIikmJm8uaGFzQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKSl7aWYoZil7cmV0dXJuIHRydWV9aWYoby5mb2N1cyYmIUllLmZvY3VzU3ZnTmVnYXRpdmVUYWJpbmRleEF0dHJpYnV0ZSl7cmV0dXJuIHRydWV9fWlmKHU9PT1cInN2Z1wiJiZJZS5mb2N1c1N2Z0luSWZyYW1lJiZmKXtyZXR1cm4gdHJ1ZX1pZihsLmlzLlRSSURFTlR8fGwuaXMuRURHRSl7aWYodT09PVwic3ZnXCIpe2lmKEllLmZvY3VzU3ZnKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gby5oYXNBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIil8fHB9aWYoby5vd25lclNWR0VsZW1lbnQpe2lmKEllLmZvY3VzU3ZnVGFiaW5kZXhBdHRyaWJ1dGUmJnApe3JldHVybiB0cnVlfXJldHVybiBvLmhhc0F0dHJpYnV0ZShcImZvY3VzYWJsZVwiKX19aWYoby50YWJJbmRleD09PXVuZGVmaW5lZCl7cmV0dXJuIEJvb2xlYW4obi5vbmx5VGFiYmFibGUpfWlmKHU9PT1cImF1ZGlvXCIpe2lmKCFvLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpKXtyZXR1cm4gZmFsc2V9ZWxzZSBpZihsLmlzLkJMSU5LKXtyZXR1cm4gdHJ1ZX19aWYodT09PVwidmlkZW9cIil7aWYoIW8uaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIikpe2lmKGwuaXMuVFJJREVOVHx8bC5pcy5FREdFKXtyZXR1cm4gZmFsc2V9fWVsc2UgaWYobC5pcy5CTElOS3x8bC5pcy5HRUNLTyl7cmV0dXJuIHRydWV9fWlmKHU9PT1cIm9iamVjdFwiKXtpZihsLmlzLkJMSU5LfHxsLmlzLldFQktJVCl7cmV0dXJuIGZhbHNlfX1pZih1PT09XCJpZnJhbWVcIil7cmV0dXJuIGZhbHNlfWlmKCFuLnNjcm9sbGFibGUmJmwuaXMuR0VDS08pe3ZhciBiPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG8sbnVsbCk7aWYoaGFzQ3NzT3ZlcmZsb3dTY3JvbGwoYikpe3JldHVybiBmfX1pZihsLmlzLlRSSURFTlR8fGwuaXMuRURHRSl7aWYodT09PVwiYXJlYVwiKXt2YXIgZz1nZXRJbWFnZU9mQXJlYShvKTtpZihnJiZ0YWJpbmRleFZhbHVlKGcpPDApe3JldHVybiBmYWxzZX19dmFyIGg9d2luZG93LmdldENvbXB1dGVkU3R5bGUobyxudWxsKTtpZihpc1VzZXJNb2RpZnlXcml0YWJsZShoKSl7cmV0dXJuIG8udGFiSW5kZXg+PTB9aWYoIW4uZmxleGJveCYmaGFzQ3NzRGlzcGxheUZsZXgoaCkpe2lmKGMhPT1udWxsKXtyZXR1cm4gcH1yZXR1cm4gTWUobykmJkxlKG8pfWlmKGlzU2Nyb2xsYWJsZUNvbnRhaW5lcihvLHUpKXtyZXR1cm4gZmFsc2V9dmFyIHk9by5wYXJlbnRFbGVtZW50O2lmKHkpe3ZhciB4PXkubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt2YXIgXz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh5LG51bGwpO2lmKGlzU2Nyb2xsYWJsZUNvbnRhaW5lcih5LHUseCxfKSl7cmV0dXJuIGZhbHNlfWlmKGhhc0Nzc0Rpc3BsYXlGbGV4KF8pKXtyZXR1cm4gcH19fXJldHVybiBvLnRhYkluZGV4Pj0wfWlzVGFiYmFibGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNUYWJiYWJsZSh0KXtyZXR1cm4gaXNUYWJiYWJsZVJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc1RhYmJhYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBNZT15ZS5ydWxlcy5leGNlcHQoe2ZsZXhib3g6dHJ1ZX0pO3ZhciBMZT1pc1RhYmJhYmxlUnVsZXMuZXhjZXB0KHtmbGV4Ym94OnRydWV9KTt2YXIgQmU9aXNUYWJiYWJsZVJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gcXVlcnlUYWJiYWJsZSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGUsbz1lLnN0cmF0ZWd5O3ZhciBhPUJlLnJ1bGVzLmV4Y2VwdCh7b25seVRhYmJhYmxlOm59KTtyZXR1cm4gcXVlcnlGb2N1c2FibGUoe2NvbnRleHQ6dCxpbmNsdWRlQ29udGV4dDpyLGluY2x1ZGVPbmx5VGFiYmFibGU6bixzdHJhdGVneTpvfSkuZmlsdGVyKGEpfWZ1bmN0aW9uIGNvbXBhcmVEb21Qb3NpdGlvbihlLHQpe3JldHVybiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HPy0xOjF9ZnVuY3Rpb24gc29ydERvbU9yZGVyKGUpe3JldHVybiBlLnNvcnQoY29tcGFyZURvbVBvc2l0aW9uKX1mdW5jdGlvbiBnZXRGaXJzdFN1Y2Nlc3Nvck9mZnNldChlLHQpe3JldHVybiBmaW5kSW5kZXgoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkd9KSl9ZnVuY3Rpb24gZmluZEluc2VydGlvbk9mZnNldHMoZSx0LHIpe3ZhciBuPVtdO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG89dHJ1ZTt2YXIgYT1lLmluZGV4T2YodCk7aWYoYT09PS0xKXthPWdldEZpcnN0U3VjY2Vzc29yT2Zmc2V0KGUsdCk7bz1mYWxzZX1pZihhPT09LTEpe2E9ZS5sZW5ndGh9dmFyIGk9bm9kZUFycmF5KHI/cih0KTp0KTtpZighaS5sZW5ndGgpe3JldHVybn1uLnB1c2goe29mZnNldDphLHJlcGxhY2U6byxlbGVtZW50czppfSl9KSk7cmV0dXJuIG59ZnVuY3Rpb24gaW5zZXJ0RWxlbWVudHNBdE9mZnNldHMoZSx0KXt2YXIgcj0wO3Quc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5vZmZzZXQtdC5vZmZzZXR9KSk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10LnJlcGxhY2U/MTowO3ZhciBvPVt0Lm9mZnNldCtyLG5dLmNvbmNhdCh0LmVsZW1lbnRzKTtlLnNwbGljZS5hcHBseShlLG8pO3IrPXQuZWxlbWVudHMubGVuZ3RoLW59KSl9ZnVuY3Rpb24gbWVyZ2VJbkRvbU9yZGVyKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5saXN0LHI9ZS5lbGVtZW50cyxuPWUucmVzb2x2ZUVsZW1lbnQ7dmFyIG89dC5zbGljZSgwKTt2YXIgYT1ub2RlQXJyYXkocikuc2xpY2UoMCk7c29ydERvbU9yZGVyKGEpO3ZhciBpPWZpbmRJbnNlcnRpb25PZmZzZXRzKG8sYSxuKTtpbnNlcnRFbGVtZW50c0F0T2Zmc2V0cyhvLGkpO3JldHVybiBvfXZhciBIZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHxmYWxzZTtuLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwidmFsdWVcImluIG4pbi53cml0YWJsZT10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSx0LHIpe2lmKHQpZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSx0KTtpZihyKWRlZmluZVByb3BlcnRpZXMoZSxyKTtyZXR1cm4gZX19KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9fXZhciB6ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIE1hcHMoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsTWFwcyk7dGhpcy5fZG9jdW1lbnQ9Z2V0RG9jdW1lbnQoZSk7dGhpcy5tYXBzPXt9fUhlKE1hcHMsW3trZXk6XCJnZXRBcmVhc0ZvclwiLHZhbHVlOmZ1bmN0aW9uIGdldEFyZWFzRm9yKGUpe2lmKCF0aGlzLm1hcHNbZV0pe3RoaXMuYWRkTWFwQnlOYW1lKGUpfXJldHVybiB0aGlzLm1hcHNbZV19fSx7a2V5OlwiYWRkTWFwQnlOYW1lXCIsdmFsdWU6ZnVuY3Rpb24gYWRkTWFwQnlOYW1lKGUpe3ZhciB0PWdldE1hcEJ5TmFtZShlLHRoaXMuX2RvY3VtZW50KTtpZighdCl7cmV0dXJufXRoaXMubWFwc1t0Lm5hbWVdPXF1ZXJ5VGFiYmFibGUoe2NvbnRleHQ6dH0pfX0se2tleTpcImV4dHJhY3RBcmVhc0Zyb21MaXN0XCIsdmFsdWU6ZnVuY3Rpb24gZXh0cmFjdEFyZWFzRnJvbUxpc3QoZSl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYodCE9PVwiYXJlYVwiKXtyZXR1cm4gdHJ1ZX12YXIgcj1lLnBhcmVudE5vZGU7aWYoIXRoaXMubWFwc1tyLm5hbWVdKXt0aGlzLm1hcHNbci5uYW1lXT1bXX10aGlzLm1hcHNbci5uYW1lXS5wdXNoKGUpO3JldHVybiBmYWxzZX0pLHRoaXMpfX1dKTtyZXR1cm4gTWFwc30oKTtmdW5jdGlvbiBzb3J0QXJlYShlLHQpe3ZhciByPXQucXVlcnlTZWxlY3RvckFsbChcImltZ1t1c2VtYXBdXCIpO3ZhciBuPW5ldyB6ZSh0KTt2YXIgbz1uLmV4dHJhY3RBcmVhc0Zyb21MaXN0KGUpO2lmKCFyLmxlbmd0aCl7cmV0dXJuIG99cmV0dXJuIG1lcmdlSW5Eb21PcmRlcih7bGlzdDpvLGVsZW1lbnRzOnIscmVzb2x2ZUVsZW1lbnQ6ZnVuY3Rpb24gcmVzb2x2ZUVsZW1lbnQoZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoXCJ1c2VtYXBcIikuc2xpY2UoMSk7cmV0dXJuIG4uZ2V0QXJlYXNGb3IodCl9fSl9dmFyIFdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fGZhbHNlO24uY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gbiluLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHQscil7aWYodClkZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpO2lmKHIpZGVmaW5lUHJvcGVydGllcyhlLHIpO3JldHVybiBlfX0oKTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2skMShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfX12YXIgVmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBTaGFkb3dzKGUsdCl7X2NsYXNzQ2FsbENoZWNrJDEodGhpcyxTaGFkb3dzKTt0aGlzLmNvbnRleHQ9ZTt0aGlzLnNvcnRFbGVtZW50cz10O3RoaXMuaG9zdENvdW50ZXI9MTt0aGlzLmluSG9zdD17fTt0aGlzLmluRG9jdW1lbnQ9W107dGhpcy5ob3N0cz17fTt0aGlzLmVsZW1lbnRzPXt9fVdlKFNoYWRvd3MsW3trZXk6XCJfcmVnaXN0ZXJIb3N0XCIsdmFsdWU6ZnVuY3Rpb24gX3JlZ2lzdGVySG9zdChlKXtpZihlLl9zb3J0aW5nSWQpe3JldHVybn1lLl9zb3J0aW5nSWQ9XCJzaGFkb3ctXCIrdGhpcy5ob3N0Q291bnRlcisrO3RoaXMuaG9zdHNbZS5fc29ydGluZ0lkXT1lO3ZhciB0PWdldFNoYWRvd0hvc3Qoe2NvbnRleHQ6ZX0pO2lmKHQpe3RoaXMuX3JlZ2lzdGVySG9zdCh0KTt0aGlzLl9yZWdpc3Rlckhvc3RQYXJlbnQoZSx0KX1lbHNle3RoaXMuaW5Eb2N1bWVudC5wdXNoKGUpfX19LHtrZXk6XCJfcmVnaXN0ZXJIb3N0UGFyZW50XCIsdmFsdWU6ZnVuY3Rpb24gX3JlZ2lzdGVySG9zdFBhcmVudChlLHQpe2lmKCF0aGlzLmluSG9zdFt0Ll9zb3J0aW5nSWRdKXt0aGlzLmluSG9zdFt0Ll9zb3J0aW5nSWRdPVtdfXRoaXMuaW5Ib3N0W3QuX3NvcnRpbmdJZF0ucHVzaChlKX19LHtrZXk6XCJfcmVnaXN0ZXJFbGVtZW50XCIsdmFsdWU6ZnVuY3Rpb24gX3JlZ2lzdGVyRWxlbWVudChlLHQpe2lmKCF0aGlzLmVsZW1lbnRzW3QuX3NvcnRpbmdJZF0pe3RoaXMuZWxlbWVudHNbdC5fc29ydGluZ0lkXT1bXX10aGlzLmVsZW1lbnRzW3QuX3NvcnRpbmdJZF0ucHVzaChlKX19LHtrZXk6XCJleHRyYWN0RWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbiBleHRyYWN0RWxlbWVudHMoZSl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1nZXRTaGFkb3dIb3N0KHtjb250ZXh0OmV9KTtpZighdCl7cmV0dXJuIHRydWV9dGhpcy5fcmVnaXN0ZXJIb3N0KHQpO3RoaXMuX3JlZ2lzdGVyRWxlbWVudChlLHQpO3JldHVybiBmYWxzZX0pLHRoaXMpfX0se2tleTpcInNvcnRcIix2YWx1ZTpmdW5jdGlvbiBzb3J0KGUpe3ZhciB0PXRoaXMuX2luamVjdEhvc3RzKGUpO3Q9dGhpcy5fcmVwbGFjZUhvc3RzKHQpO3RoaXMuX2NsZWFudXAoKTtyZXR1cm4gdH19LHtrZXk6XCJfaW5qZWN0SG9zdHNcIix2YWx1ZTpmdW5jdGlvbiBfaW5qZWN0SG9zdHMoZSl7T2JqZWN0LmtleXModGhpcy5ob3N0cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbGVtZW50c1tlXTt2YXIgcj10aGlzLmluSG9zdFtlXTt2YXIgbj10aGlzLmhvc3RzW2VdLnNoYWRvd1Jvb3Q7dGhpcy5lbGVtZW50c1tlXT10aGlzLl9tZXJnZSh0LHIsbil9KSx0aGlzKTtyZXR1cm4gdGhpcy5fbWVyZ2UoZSx0aGlzLmluRG9jdW1lbnQsdGhpcy5jb250ZXh0KX19LHtrZXk6XCJfbWVyZ2VcIix2YWx1ZTpmdW5jdGlvbiBfbWVyZ2UoZSx0LHIpe3ZhciBuPW1lcmdlSW5Eb21PcmRlcih7bGlzdDplLGVsZW1lbnRzOnR9KTtyZXR1cm4gdGhpcy5zb3J0RWxlbWVudHMobixyKX19LHtrZXk6XCJfcmVwbGFjZUhvc3RzXCIsdmFsdWU6ZnVuY3Rpb24gX3JlcGxhY2VIb3N0cyhlKXtyZXR1cm4gbWVyZ2VJbkRvbU9yZGVyKHtsaXN0OmUsZWxlbWVudHM6dGhpcy5pbkRvY3VtZW50LHJlc29sdmVFbGVtZW50OnRoaXMuX3Jlc29sdmVIb3N0RWxlbWVudC5iaW5kKHRoaXMpfSl9fSx7a2V5OlwiX3Jlc29sdmVIb3N0RWxlbWVudFwiLHZhbHVlOmZ1bmN0aW9uIF9yZXNvbHZlSG9zdEVsZW1lbnQoZSl7dmFyIHQ9bWVyZ2VJbkRvbU9yZGVyKHtsaXN0OnRoaXMuZWxlbWVudHNbZS5fc29ydGluZ0lkXSxlbGVtZW50czp0aGlzLmluSG9zdFtlLl9zb3J0aW5nSWRdLHJlc29sdmVFbGVtZW50OnRoaXMuX3Jlc29sdmVIb3N0RWxlbWVudC5iaW5kKHRoaXMpfSk7dmFyIHI9dGFiaW5kZXhWYWx1ZShlKTtpZihyIT09bnVsbCYmcj4tMSl7cmV0dXJuW2VdLmNvbmNhdCh0KX1yZXR1cm4gdH19LHtrZXk6XCJfY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uIF9jbGVhbnVwKCl7T2JqZWN0LmtleXModGhpcy5ob3N0cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuaG9zdHNbZV0uX3NvcnRpbmdJZH0pLHRoaXMpfX1dKTtyZXR1cm4gU2hhZG93c30oKTtmdW5jdGlvbiBzb3J0U2hhZG93ZWQoZSx0LHIpe3ZhciBuPW5ldyBWZSh0LHIpO3ZhciBvPW4uZXh0cmFjdEVsZW1lbnRzKGUpO2lmKG8ubGVuZ3RoPT09ZS5sZW5ndGgpe3JldHVybiByKGUpfXJldHVybiBuLnNvcnQobyl9ZnVuY3Rpb24gc29ydFRhYmluZGV4KGUpe3ZhciB0PXt9O3ZhciByPVtdO3ZhciBuPWUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLnRhYkluZGV4O2lmKG49PT11bmRlZmluZWQpe249dGFiaW5kZXhWYWx1ZShlKX1pZihuPD0wfHxuPT09bnVsbHx8bj09PXVuZGVmaW5lZCl7cmV0dXJuIHRydWV9aWYoIXRbbl0pe3Rbbl09W107ci5wdXNoKG4pfXRbbl0ucHVzaChlKTtyZXR1cm4gZmFsc2V9KSk7dmFyIG89ci5zb3J0KCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKS5yZWR1Y2VSaWdodCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5jb25jYXQoZSl9KSxuKTtyZXR1cm4gb312YXIgJGU9dm9pZCAwO2Z1bmN0aW9uIG1vdmVDb250ZXh0VG9CZWdpbm5pbmcoZSx0KXt2YXIgcj1lLmluZGV4T2YodCk7aWYocj4wKXt2YXIgbj1lLnNwbGljZShyLDEpO3JldHVybiBuLmNvbmNhdChlKX1yZXR1cm4gZX1mdW5jdGlvbiBzb3J0RWxlbWVudHMoZSx0KXtpZigkZS50YWJzZXF1ZW5jZUFyZWFBdEltZ1Bvc2l0aW9uKXtlPXNvcnRBcmVhKGUsdCl9ZT1zb3J0VGFiaW5kZXgoZSk7cmV0dXJuIGV9ZnVuY3Rpb24gcXVlcnlUYWJzZXF1ZW5jZSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGUsbz1lLnN0cmF0ZWd5O2lmKCEkZSl7JGU9X3N1cHBvcnRzKCl9dmFyIGE9bm9kZUFycmF5KHQpWzBdfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIGk9cXVlcnlUYWJiYWJsZSh7Y29udGV4dDphLGluY2x1ZGVDb250ZXh0OnIsaW5jbHVkZU9ubHlUYWJiYWJsZTpuLHN0cmF0ZWd5Om99KTtpZihkb2N1bWVudC5ib2R5LmNyZWF0ZVNoYWRvd1Jvb3QmJmwuaXMuQkxJTkspe2k9c29ydFNoYWRvd2VkKGksYSxzb3J0RWxlbWVudHMpfWVsc2V7aT1zb3J0RWxlbWVudHMoaSxhKX1pZihyKXtpPW1vdmVDb250ZXh0VG9CZWdpbm5pbmcoaSxhKX1yZXR1cm4gaX12YXIgcWU9e3RhYjo5LGxlZnQ6MzcsdXA6MzgscmlnaHQ6MzksZG93bjo0MCxwYWdlVXA6MzMsXCJwYWdlLXVwXCI6MzMscGFnZURvd246MzQsXCJwYWdlLWRvd25cIjozNCxlbmQ6MzUsaG9tZTozNixlbnRlcjoxMyxlc2NhcGU6Mjcsc3BhY2U6MzIsc2hpZnQ6MTYsY2Fwc0xvY2s6MjAsXCJjYXBzLWxvY2tcIjoyMCxjdHJsOjE3LGFsdDoxOCxtZXRhOjkxLHBhdXNlOjE5LGluc2VydDo0NSxkZWxldGU6NDYsYmFja3NwYWNlOjgsX2FsaWFzOns5MTpbOTIsOTMsMjI0XX19O2Zvcih2YXIgVWU9MTtVZTwyNjtVZSsrKXtxZVtcImZcIitVZV09VWUrMTExfWZvcih2YXIgS2U9MDtLZTwxMDtLZSsrKXt2YXIgR2U9S2UrNDg7dmFyIFplPUtlKzk2O3FlW0tlXT1HZTtxZVtcIm51bS1cIitLZV09WmU7cWUuX2FsaWFzW0dlXT1bWmVdfWZvcih2YXIgWWU9MDtZZTwyNjtZZSsrKXt2YXIgSmU9WWUrNjU7dmFyIFhlPVN0cmluZy5mcm9tQ2hhckNvZGUoSmUpLnRvTG93ZXJDYXNlKCk7cWVbWGVdPUplfXZhciBRZT17YWx0OlwiYWx0S2V5XCIsY3RybDpcImN0cmxLZXlcIixtZXRhOlwibWV0YUtleVwiLHNoaWZ0Olwic2hpZnRLZXlcIn07dmFyIGV0PU9iamVjdC5rZXlzKFFlKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBRZVtlXX0pKTtmdW5jdGlvbiBjcmVhdGVFeHBlY3RlZE1vZGlmaWVycyhlKXt2YXIgdD1lP251bGw6ZmFsc2U7cmV0dXJue2FsdEtleTp0LGN0cmxLZXk6dCxtZXRhS2V5OnQsc2hpZnRLZXk6dH19ZnVuY3Rpb24gcmVzb2x2ZU1vZGlmaWVycyhlKXt2YXIgdD1lLmluZGV4T2YoXCIqXCIpIT09LTE7dmFyIHI9Y3JlYXRlRXhwZWN0ZWRNb2RpZmllcnModCk7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlPT09XCIqXCIpe3JldHVybn12YXIgdD10cnVlO3ZhciBuPWUuc2xpY2UoMCwxKTtpZihuPT09XCI/XCIpe3Q9bnVsbH1lbHNlIGlmKG49PT1cIiFcIil7dD1mYWxzZX1pZih0IT09dHJ1ZSl7ZT1lLnNsaWNlKDEpfXZhciBvPVFlW2VdO2lmKCFvKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIG1vZGlmaWVyIFwiJytlKydcIicpfXJbb109dH0pKTtyZXR1cm4gcn1mdW5jdGlvbiByZXNvbHZlS2V5KGUpe3ZhciB0PXFlW2VdfHxwYXJzZUludChlLDEwKTtpZighdHx8dHlwZW9mIHQhPT1cIm51bWJlclwifHxpc05hTih0KSl7dGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBrZXkgXCInK2UrJ1wiJyl9cmV0dXJuW3RdLmNvbmNhdChxZS5fYWxpYXNbdF18fFtdKX1mdW5jdGlvbiBtYXRjaE1vZGlmaWVycyhlLHQpe3JldHVybiFldC5zb21lKChmdW5jdGlvbihyKXtyZXR1cm4gdHlwZW9mIGVbcl09PT1cImJvb2xlYW5cIiYmQm9vbGVhbih0W3JdKSE9PWVbcl19KSl9ZnVuY3Rpb24ga2V5QmluZGluZyhlKXtyZXR1cm4gZS5zcGxpdCgvXFxzKy8pLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdChcIitcIik7dmFyIHI9cmVzb2x2ZU1vZGlmaWVycyh0LnNsaWNlKDAsLTEpKTt2YXIgbj1yZXNvbHZlS2V5KHQuc2xpY2UoLTEpKTtyZXR1cm57a2V5Q29kZXM6bixtb2RpZmllcnM6cixtYXRjaE1vZGlmaWVyczptYXRjaE1vZGlmaWVycy5iaW5kKG51bGwscil9fSkpfWZ1bmN0aW9uIGdldFBhcmVudENvbXBhcmF0b3IoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLnBhcmVudCxyPWUuZWxlbWVudCxuPWUuaW5jbHVkZVNlbGY7aWYodCl7cmV0dXJuIGZ1bmN0aW9uIGlzQ2hpbGRPZihlKXtyZXR1cm4gQm9vbGVhbihuJiZlPT09dHx8dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSl9fWVsc2UgaWYocil7cmV0dXJuIGZ1bmN0aW9uIGlzUGFyZW50T2YoZSl7cmV0dXJuIEJvb2xlYW4obiYmcj09PWV8fGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpfX10aHJvdyBuZXcgVHlwZUVycm9yKFwidXRpbC9jb21wYXJlLXBvc2l0aW9uI2dldFBhcmVudENvbXBhcmF0b3IgcmVxdWlyZWQgZWl0aGVyIG9wdGlvbnMucGFyZW50IG9yIG9wdGlvbnMuZWxlbWVudFwiKX1mdW5jdGlvbiB3aGVuS2V5KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9O3ZhciB0PXt9O3ZhciByPW5vZGVBcnJheShlLmNvbnRleHQpWzBdfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZGVsZXRlIGUuY29udGV4dDt2YXIgbj1ub2RlQXJyYXkoZS5maWx0ZXIpO2RlbGV0ZSBlLmZpbHRlcjt2YXIgbz1PYmplY3Qua2V5cyhlKTtpZighby5sZW5ndGgpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJ3aGVuL2tleSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgb3B0aW9uIGtleVwiKX12YXIgYT1mdW5jdGlvbiByZWdpc3RlckJpbmRpbmcoZSl7ZS5rZXlDb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihyKXtpZighdFtyXSl7dFtyXT1bXX10W3JdLnB1c2goZSl9KSl9O28uZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodHlwZW9mIGVbdF0hPT1cImZ1bmN0aW9uXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ3doZW4va2V5IHJlcXVpcmVzIG9wdGlvbltcIicrdCsnXCJdIHRvIGJlIGEgZnVuY3Rpb24nKX12YXIgcj1mdW5jdGlvbiBhZGRDYWxsYmFjayhyKXtyLmNhbGxiYWNrPWVbdF07cmV0dXJuIHJ9O2tleUJpbmRpbmcodCkubWFwKHIpLmZvckVhY2goYSl9KSk7dmFyIGk9ZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKXtpZihlLmRlZmF1bHRQcmV2ZW50ZWQpe3JldHVybn1pZihuLmxlbmd0aCl7dmFyIG89Z2V0UGFyZW50Q29tcGFyYXRvcih7ZWxlbWVudDplLnRhcmdldCxpbmNsdWRlU2VsZjp0cnVlfSk7aWYobi5zb21lKG8pKXtyZXR1cm59fXZhciBhPWUua2V5Q29kZXx8ZS53aGljaDtpZighdFthXSl7cmV0dXJufXRbYV0uZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoIXQubWF0Y2hNb2RpZmllcnMoZSkpe3JldHVybn10LmNhbGxiYWNrLmNhbGwocixlLHMpfSkpfTtyLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaSxmYWxzZSk7dmFyIHM9ZnVuY3Rpb24gZGlzZW5nYWdlKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGksZmFsc2UpfTtyZXR1cm57ZGlzZW5nYWdlOnN9fWZ1bmN0aW9uIGRlZmF1bHRfMSh7Y29udGV4dDplfT17fSl7aWYoIWUpe2U9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fXF1ZXJ5VGFic2VxdWVuY2UoKTtyZXR1cm4gd2hlbktleSh7XCI/YWx0Kz9zaGlmdCt0YWJcIjpmdW5jdGlvbiBhbHRTaGlmdFRhYih0KXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIHI9cXVlcnlUYWJzZXF1ZW5jZSh7Y29udGV4dDplfSk7dmFyIG49dC5zaGlmdEtleTt2YXIgbz1yWzBdO3ZhciBhPXJbci5sZW5ndGgtMV07dmFyIGk9bj9vOmE7dmFyIHM9bj9hOm87aWYoaXNBY3RpdmVFbGVtZW50KGkpKXtzLmZvY3VzKCk7cmV0dXJufXZhciBsPXZvaWQgMDt2YXIgdT1yLnNvbWUoKGZ1bmN0aW9uKGUsdCl7aWYoIWlzQWN0aXZlRWxlbWVudChlKSl7cmV0dXJuIGZhbHNlfWw9dDtyZXR1cm4gdHJ1ZX0pKTtpZighdSl7by5mb2N1cygpO3JldHVybn12YXIgYz1uPy0xOjE7cltsK2NdLmZvY3VzKCl9fSl9dFtcImRlZmF1bHRcIl09ZGVmYXVsdF8xfSw5OTM6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5zdHlsZXM9dm9pZCAwO2NvbnN0IG49cig4OTEwKTtjb25zdCBvPSgwLG4ubm9vcClgXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV0ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgei1pbmRleDogOTAwMDtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAxMHZoIDE1cHggMDtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LWhlaWdodDogODEycHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcbiAgICAgIHBhZGRpbmc6IDE1cHggMTVweCAwO1xuICAgIH1cbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tkcm9wKTtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcC1maXhlZF0ge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgfVxuYDt0LnN0eWxlcz1vfSw2MzM4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5TaGFkb3dQb3J0YWw9dm9pZCAwO2NvbnN0IGk9cig1MDUpO2NvbnN0IHM9YShyKDc1MjIpKTtjb25zdCBsPXIoMjI1NSk7Y29uc3QgdT1mdW5jdGlvbiBQb3J0YWwoe2NoaWxkcmVuOmUsZ2xvYmFsT3ZlcmxheTp0fSl7bGV0IHI9cy51c2VSZWYobnVsbCk7bGV0IG49cy51c2VSZWYobnVsbCk7bGV0IG89cy51c2VSZWYobnVsbCk7bGV0WyxhXT1zLnVzZVN0YXRlKCk7cy51c2VMYXlvdXRFZmZlY3QoKCgpPT57Y29uc3QgZT10P2RvY3VtZW50OnIuY3VycmVudC5vd25lckRvY3VtZW50O24uY3VycmVudD1lLmNyZWF0ZUVsZW1lbnQoXCJuZXh0anMtcG9ydGFsXCIpO28uY3VycmVudD1uLmN1cnJlbnQuYXR0YWNoU2hhZG93KHttb2RlOlwib3BlblwifSk7ZS5ib2R5LmFwcGVuZENoaWxkKG4uY3VycmVudCk7YSh7fSk7cmV0dXJuKCk9PntpZihuLmN1cnJlbnQmJm4uY3VycmVudC5vd25lckRvY3VtZW50KXtuLmN1cnJlbnQub3duZXJEb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4uY3VycmVudCl9fX0pLFt0XSk7cmV0dXJuIG8uY3VycmVudD8oMCxsLmNyZWF0ZVBvcnRhbCkoZSxvLmN1cnJlbnQpOnQ/bnVsbDooMCxpLmpzeCkoXCJzcGFuXCIse3JlZjpyfSl9O3QuU2hhZG93UG9ydGFsPXV9LDcyMTU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07dmFyIGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlRlcm1pbmFsPXZvaWQgMDtjb25zdCBzPXIoNTA1KTtjb25zdCBsPWkocig3OTk3KSk7Y29uc3QgdT1hKHIoNzUyMikpO2NvbnN0IGM9ZnVuY3Rpb24gVGVybWluYWwoe2NvbnRlbnQ6ZX0pe2NvbnN0IHQ9dS51c2VNZW1vKCgoKT0+bC5kZWZhdWx0LmFuc2lUb0pzb24oZSx7anNvbjp0cnVlLHVzZV9jbGFzc2VzOnRydWUscmVtb3ZlX2VtcHR5OnRydWV9KSksW2VdKTtyZXR1cm4oMCxzLmpzeCkoXCJkaXZcIix7XCJkYXRhLW5leHRqcy10ZXJtaW5hbFwiOnRydWUsY2hpbGRyZW46KDAscy5qc3gpKFwicHJlXCIse2NoaWxkcmVuOnQubWFwKCgoZSx0KT0+KDAscy5qc3gpKFwic3BhblwiLHtzdHlsZTp7Y29sb3I6ZS5mZz9gdmFyKC0tY29sb3ItJHtlLmZnfSlgOnVuZGVmaW5lZCwuLi5lLmRlY29yYXRpb249PT1cImJvbGRcIj97Zm9udFdlaWdodDo4MDB9OmUuZGVjb3JhdGlvbj09PVwiaXRhbGljXCI/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp1bmRlZmluZWR9LGNoaWxkcmVuOmUuY29udGVudH0sYHRlcm1pbmFsLWVudHJ5LSR7dH1gKSkpfSl9KX07dC5UZXJtaW5hbD1jfSw4MjM2OmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVGVybWluYWw9dm9pZCAwO3ZhciBuPXIoNzIxNSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJUZXJtaW5hbFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uVGVybWluYWx9fSl9LDU0ODg6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5zdHlsZXM9dm9pZCAwO2NvbnN0IG49cig4OTEwKTtjb25zdCBvPSgwLG4ubm9vcClgXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0ge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYmcpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWZnKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdOjpzZWxlY3Rpb24sXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gKjo6c2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXNlbGVjdGlvbik7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSAqIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICB9XG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gPiAqIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSlcbiAgICAgIGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gcHJlIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgfVxuYDt0LnN0eWxlcz1vfSw5NjgzOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVG9hc3Q9dm9pZCAwO2NvbnN0IG49cig1MDUpO2NvbnN0IG89ZnVuY3Rpb24gVG9hc3Qoe29uQ2xpY2s6ZSxjaGlsZHJlbjp0LGNsYXNzTmFtZTpyfSl7cmV0dXJuKDAsbi5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtdG9hc3RcIjp0cnVlLG9uQ2xpY2s6ZSxjbGFzc05hbWU6cixjaGlsZHJlbjooMCxuLmpzeCkoXCJkaXZcIix7XCJkYXRhLW5leHRqcy10b2FzdC13cmFwcGVyXCI6dHJ1ZSxjaGlsZHJlbjp0fSl9KX07dC5Ub2FzdD1vfSwxMTIwOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVG9hc3Q9dC5zdHlsZXM9dm9pZCAwO3ZhciBuPXIoMjA2OSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJzdHlsZXNcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLnN0eWxlc319KTt2YXIgbz1yKDk2ODMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiVG9hc3RcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBvLlRvYXN0fX0pfSwyMDY5OmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Quc3R5bGVzPXZvaWQgMDtjb25zdCBuPXIoODkxMCk7Y29uc3Qgbz0oMCxuLm5vb3ApYFxuICBbZGF0YS1uZXh0anMtdG9hc3RdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICAgIGxlZnQ6IHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gICAgbWF4LXdpZHRoOiA0MjBweDtcbiAgICB6LWluZGV4OiA5MDAwO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLXRvYXN0XSB7XG4gICAgICBtYXgtd2lkdGg6IDkwdnc7XG4gICAgICBsZWZ0OiA1dnc7XG4gICAgfVxuICB9XG5cbiAgW2RhdGEtbmV4dGpzLXRvYXN0LXdyYXBwZXJdIHtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gICAgYm94LXNoYWRvdzogMHB4IHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgdmFyKC0tc2l6ZS1nYXAtcXVhZClcbiAgICAgIHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIH1cbmA7dC5zdHlsZXM9b30sNTkzNjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Quc3R5bGVzPXQuQnVpbGRFcnJvcj12b2lkIDA7Y29uc3QgaT1yKDUwNSk7Y29uc3Qgcz1hKHIoNzUyMikpO2NvbnN0IGw9cig1NjUxKTtjb25zdCB1PXIoODI3OCk7Y29uc3QgYz1yKDgyMzYpO2NvbnN0IGQ9cig4OTEwKTtjb25zdCBmPWZ1bmN0aW9uIEJ1aWxkRXJyb3Ioe21lc3NhZ2U6ZX0pe2NvbnN0IHQ9cy51c2VDYWxsYmFjaygoKCk9Pnt9KSxbXSk7cmV0dXJuKDAsaS5qc3gpKHUuT3ZlcmxheSx7Zml4ZWQ6dHJ1ZSxjaGlsZHJlbjooMCxpLmpzeCkobC5EaWFsb2cse3R5cGU6XCJlcnJvclwiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9idWlsZF9lcnJvcl9sYWJlbFwiLFwiYXJpYS1kZXNjcmliZWRieVwiOlwibmV4dGpzX19jb250YWluZXJfYnVpbGRfZXJyb3JfZGVzY1wiLG9uQ2xvc2U6dCxjaGlsZHJlbjooMCxpLmpzeHMpKGwuRGlhbG9nQ29udGVudCx7Y2hpbGRyZW46WygwLGkuanN4KShsLkRpYWxvZ0hlYWRlcix7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1oZWFkZXJcIixjaGlsZHJlbjooMCxpLmpzeCkoXCJoNFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2xhYmVsXCIsY2hpbGRyZW46XCJGYWlsZWQgdG8gY29tcGlsZVwifSl9KSwoMCxpLmpzeHMpKGwuRGlhbG9nQm9keSx7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1ib2R5XCIsY2hpbGRyZW46WygwLGkuanN4KShjLlRlcm1pbmFsLHtjb250ZW50OmV9KSwoMCxpLmpzeCkoXCJmb290ZXJcIix7Y2hpbGRyZW46KDAsaS5qc3gpKFwicFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2Rlc2NcIixjaGlsZHJlbjooMCxpLmpzeCkoXCJzbWFsbFwiLHtjaGlsZHJlbjpcIlRoaXMgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBjYW4gb25seSBiZSBkaXNtaXNzZWQgYnkgZml4aW5nIHRoZSBlcnJvci5cIn0pfSl9KV19KV19KX0pfSl9O3QuQnVpbGRFcnJvcj1mO3Quc3R5bGVzPSgwLGQubm9vcClgXG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWhlYWRlciA+IGg0IHtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItYm9keSBmb290ZXIge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNpemUtZ2FwKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1ib2R5IGZvb3RlciBwIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1ib2R5IHNtYWxsIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZm9udCk7XG4gIH1cbmB9LDQzNTU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz10LkVycm9ycz12b2lkIDA7Y29uc3QgaT1yKDUwNSk7Y29uc3Qgcz1hKHIoNzUyMikpO2NvbnN0IGw9cig1ODUxKTtjb25zdCB1PXIoNTY1MSk7Y29uc3QgYz1yKDI3MzIpO2NvbnN0IGQ9cig4Mjc4KTtjb25zdCBmPXIoMTEyMCk7Y29uc3QgcD1yKDQwMyk7Y29uc3QgbT1yKDUyMzMpO2NvbnN0IHY9cig4OTEwKTtjb25zdCBiPXIoODY1KTtjb25zdCBnPXIoMjQ4NCk7ZnVuY3Rpb24gZ2V0RXJyb3JTaWduYXR1cmUoZSl7Y29uc3R7ZXZlbnQ6dH09ZTtzd2l0Y2godC50eXBlKXtjYXNlIGwuVFlQRV9VTkhBTkRMRURfRVJST1I6Y2FzZSBsLlRZUEVfVU5IQU5ETEVEX1JFSkVDVElPTjp7cmV0dXJuYCR7dC5yZWFzb24ubmFtZX06OiR7dC5yZWFzb24ubWVzc2FnZX06OiR7dC5yZWFzb24uc3RhY2t9YH1kZWZhdWx0Ont9fWNvbnN0IHI9dDtyZXR1cm5cIlwifWNvbnN0IGg9ZnVuY3Rpb24gSG90bGlua2VkVGV4dChlKXtjb25zdHt0ZXh0OnR9PWU7Y29uc3Qgcj0vaHR0cHM/OlxcL1xcL1teXFxzLyQuPyNdLlteXFxzKSdcIl0qL2k7cmV0dXJuKDAsaS5qc3gpKGkuRnJhZ21lbnQse2NoaWxkcmVuOnIudGVzdCh0KT90LnNwbGl0KFwiIFwiKS5tYXAoKChlLHQsbik9PntpZihyLnRlc3QoZSkpe2NvbnN0IG89ci5leGVjKGUpO3JldHVybigwLGkuanN4cykocy5GcmFnbWVudCx7Y2hpbGRyZW46W28mJigwLGkuanN4KShcImFcIix7aHJlZjpvWzBdLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIixjaGlsZHJlbjplfSksdD09PW4ubGVuZ3RoLTE/XCJcIjpcIiBcIl19LGBsaW5rLSR7dH1gKX1yZXR1cm4gdD09PW4ubGVuZ3RoLTE/KDAsaS5qc3gpKHMuRnJhZ21lbnQse2NoaWxkcmVuOmV9LGB0ZXh0LSR7dH1gKTooMCxpLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOltlLFwiIFwiXX0sYHRleHQtJHt0fWApfSkpOnR9KX07Y29uc3QgeT1mdW5jdGlvbiBFcnJvcnMoe2Vycm9yczplfSl7Y29uc3RbdCxyXT1zLnVzZVN0YXRlKHt9KTtjb25zdFtuLG9dPXMudXNlTWVtbygoKCk9PntsZXQgcj1bXTtsZXQgbj1udWxsO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7KytvKXtjb25zdCBhPWVbb107Y29uc3R7aWQ6aX09YTtpZihpIGluIHQpe3IucHVzaCh0W2ldKTtjb250aW51ZX1pZihvPjApe2NvbnN0IHQ9ZVtvLTFdO2lmKGdldEVycm9yU2lnbmF0dXJlKHQpPT09Z2V0RXJyb3JTaWduYXR1cmUoYSkpe2NvbnRpbnVlfX1uPWE7YnJlYWt9cmV0dXJuW3Isbl19KSxbZSx0XSk7Y29uc3QgYT1zLnVzZU1lbW8oKCgpPT5uLmxlbmd0aDwxJiZCb29sZWFuKGUubGVuZ3RoKSksW2UubGVuZ3RoLG4ubGVuZ3RoXSk7cy51c2VFZmZlY3QoKCgpPT57aWYobz09bnVsbCl7cmV0dXJufWxldCBlPXRydWU7KDAscC5nZXRFcnJvckJ5VHlwZSkobykudGhlbigodD0+e2lmKGUpe3IoKGU9Pih7Li4uZSxbdC5pZF06dH0pKSl9fSksKCgpPT57fSkpO3JldHVybigpPT57ZT1mYWxzZX19KSxbb10pO2NvbnN0W2wsdl09cy51c2VTdGF0ZShcImZ1bGxzY3JlZW5cIik7Y29uc3RbeSx4XT1zLnVzZVN0YXRlKDApO2NvbnN0IF89cy51c2VDYWxsYmFjaygoZT0+e2U/LnByZXZlbnREZWZhdWx0KCk7eCgoZT0+TWF0aC5tYXgoMCxlLTEpKSl9KSxbXSk7Y29uc3Qgdz1zLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTt4KChlPT5NYXRoLm1heCgwLE1hdGgubWluKG4ubGVuZ3RoLTEsZSsxKSkpKX0pLFtuLmxlbmd0aF0pO2NvbnN0IEU9cy51c2VNZW1vKCgoKT0+blt5XT8/bnVsbCksW3ksbl0pO3MudXNlRWZmZWN0KCgoKT0+e2lmKGUubGVuZ3RoPDEpe3Ioe30pO3YoXCJoaWRkZW5cIik7eCgwKX19KSxbZS5sZW5ndGhdKTtjb25zdCBqPXMudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO3YoXCJtaW5pbWl6ZWRcIil9KSxbXSk7Y29uc3QgTz1zLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTt2KFwiaGlkZGVuXCIpfSksW10pO2NvbnN0IGs9cy51c2VDYWxsYmFjaygoZT0+e2U/LnByZXZlbnREZWZhdWx0KCk7dihcImZ1bGxzY3JlZW5cIil9KSxbXSk7aWYoZS5sZW5ndGg8MXx8RT09bnVsbCl7cmV0dXJuIG51bGx9aWYoYSl7cmV0dXJuKDAsaS5qc3gpKGQuT3ZlcmxheSx7fSl9aWYobD09PVwiaGlkZGVuXCIpe3JldHVybiBudWxsfWlmKGw9PT1cIm1pbmltaXplZFwiKXtyZXR1cm4oMCxpLmpzeCkoZi5Ub2FzdCx7Y2xhc3NOYW1lOlwibmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnRcIixvbkNsaWNrOmssY2hpbGRyZW46KDAsaS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzXCIsY2hpbGRyZW46WygwLGkuanN4cykoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHdpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixjaGlsZHJlbjpbKDAsaS5qc3gpKFwiY2lyY2xlXCIse2N4OlwiMTJcIixjeTpcIjEyXCIscjpcIjEwXCJ9KSwoMCxpLmpzeCkoXCJsaW5lXCIse3gxOlwiMTJcIix5MTpcIjhcIix4MjpcIjEyXCIseTI6XCIxMlwifSksKDAsaS5qc3gpKFwibGluZVwiLHt4MTpcIjEyXCIseTE6XCIxNlwiLHgyOlwiMTIuMDFcIix5MjpcIjE2XCJ9KV19KSwoMCxpLmpzeHMpKFwic3BhblwiLHtjaGlsZHJlbjpbbi5sZW5ndGgsXCIgZXJyb3JcIixuLmxlbmd0aD4xP1wic1wiOlwiXCJdfSksKDAsaS5qc3gpKFwiYnV0dG9uXCIse1wiZGF0YS1uZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uXCI6dHJ1ZSxjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uXCIsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6ZT0+e2Uuc3RvcFByb3BhZ2F0aW9uKCk7TygpfSxcImFyaWEtbGFiZWxcIjpcIkhpZGUgRXJyb3JzXCIsY2hpbGRyZW46KDAsaS5qc3gpKGIuQ2xvc2VJY29uLHt9KX0pXX0pfSl9Y29uc3QgUz1bXCJzZXJ2ZXJcIixcImVkZ2Utc2VydmVyXCJdLmluY2x1ZGVzKCgwLG0uZ2V0RXJyb3JTb3VyY2UpKEUuZXJyb3IpfHxcIlwiKTtyZXR1cm4oMCxpLmpzeCkoZC5PdmVybGF5LHtjaGlsZHJlbjooMCxpLmpzeCkodS5EaWFsb2cse3R5cGU6XCJlcnJvclwiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfbGFiZWxcIixcImFyaWEtZGVzY3JpYmVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjXCIsb25DbG9zZTpTP3VuZGVmaW5lZDpqLGNoaWxkcmVuOigwLGkuanN4cykodS5EaWFsb2dDb250ZW50LHtjaGlsZHJlbjpbKDAsaS5qc3hzKSh1LkRpYWxvZ0hlYWRlcix7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyXCIsY2hpbGRyZW46WygwLGkuanN4KShjLkxlZnRSaWdodERpYWxvZ0hlYWRlcix7cHJldmlvdXM6eT4wP186bnVsbCxuZXh0Onk8bi5sZW5ndGgtMT93Om51bGwsY2xvc2U6Uz91bmRlZmluZWQ6aixjaGlsZHJlbjooMCxpLmpzeHMpKFwic21hbGxcIix7Y2hpbGRyZW46WygwLGkuanN4KShcInNwYW5cIix7Y2hpbGRyZW46eSsxfSksXCIgb2ZcIixcIiBcIiwoMCxpLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOm4ubGVuZ3RofSksXCIgdW5oYW5kbGVkIGVycm9yXCIsbi5sZW5ndGg8Mj9cIlwiOlwic1wiXX0pfSksKDAsaS5qc3gpKFwiaDFcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfbGFiZWxcIixjaGlsZHJlbjpTP1wiU2VydmVyIEVycm9yXCI6XCJVbmhhbmRsZWQgUnVudGltZSBFcnJvclwifSksKDAsaS5qc3hzKShcInBcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wiLGNoaWxkcmVuOltFLmVycm9yLm5hbWUsXCI6XCIsXCIgXCIsKDAsaS5qc3gpKGgse3RleHQ6RS5lcnJvci5tZXNzYWdlfSldfSksUz8oMCxpLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46KDAsaS5qc3gpKFwic21hbGxcIix7Y2hpbGRyZW46XCJUaGlzIGVycm9yIGhhcHBlbmVkIHdoaWxlIGdlbmVyYXRpbmcgdGhlIHBhZ2UuIEFueSBjb25zb2xlIGxvZ3Mgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRlcm1pbmFsIHdpbmRvdy5cIn0pfSk6dW5kZWZpbmVkXX0pLCgwLGkuanN4KSh1LkRpYWxvZ0JvZHkse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItZXJyb3JzLWJvZHlcIixjaGlsZHJlbjooMCxpLmpzeCkoZy5SdW50aW1lRXJyb3Ise2Vycm9yOkV9LEUuaWQudG9TdHJpbmcoKSl9KV19KX0pfSl9O3QuRXJyb3JzPXk7dC5zdHlsZXM9KDAsdi5ub29wKWBcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IGgxIHtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1iaWcpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLWZvbnQtYmlnZ2VyKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LXNtYWxsKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50cy0xKTtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc2l6ZS1nYXAtZG91YmxlKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyIHNtYWxsID4gc3BhbiB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gcCB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtZm9udC1iaWcpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gZGl2ID4gc21hbGwge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gcCA+IGEge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gIH1cblxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keSA+IGgyOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcCkpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5ID4gaDIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNpemUtZ2FwKTtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1iaWcpO1xuICB9XG5cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcbiAgfVxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgfVxuICAubmV4dGpzLXRvYXN0LWVycm9ycyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgfVxuICAubmV4dGpzLXRvYXN0LWVycm9ycyA+IHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zaXplLWdhcCk7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtaGlkZS1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zaXplLWdhcC10cmlwbGUpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZSk7XG4gICAgcGFkZGluZzogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5gfSwyNDg0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5SdW50aW1lRXJyb3I9dC5zdHlsZXM9dm9pZCAwO2NvbnN0IGk9cig1MDUpO2NvbnN0IHM9YShyKDc1MjIpKTtjb25zdCBsPXIoMTQxMyk7Y29uc3QgdT1yKDg5MTApO2NvbnN0IGM9cig3NTA0KTtjb25zdCBkPWZ1bmN0aW9uIENhbGxTdGFja0ZyYW1lKHtmcmFtZTplfSl7Y29uc3QgdD1lLm9yaWdpbmFsU3RhY2tGcmFtZT8/ZS5zb3VyY2VTdGFja0ZyYW1lO2NvbnN0IHI9Qm9vbGVhbihlLm9yaWdpbmFsQ29kZUZyYW1lKTtjb25zdCBuPXMudXNlQ2FsbGJhY2soKCgpPT57aWYoIXIpcmV0dXJuO2NvbnN0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IoY29uc3QgciBpbiB0KXtlLmFwcGVuZChyLCh0W3JdPz9cIlwiKS50b1N0cmluZygpKX1zZWxmLmZldGNoKGAke3Byb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCJ9L19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/JHtlLnRvU3RyaW5nKCl9YCkudGhlbigoKCk9Pnt9KSwoKCk9Pntjb25zb2xlLmVycm9yKFwiVGhlcmUgd2FzIGFuIGlzc3VlIG9wZW5pbmcgdGhpcyBjb2RlIGluIHlvdXIgZWRpdG9yLlwiKX0pKX0pLFtyLHRdKTtyZXR1cm4oMCxpLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZVwiOnRydWUsY2hpbGRyZW46WygwLGkuanN4KShcImgzXCIse1wiZGF0YS1uZXh0anMtZnJhbWUtZXhwYW5kZWRcIjpCb29sZWFuKGUuZXhwYW5kZWQpLGNoaWxkcmVuOnQubWV0aG9kTmFtZX0pLCgwLGkuanN4cykoXCJkaXZcIix7XCJkYXRhLWhhcy1zb3VyY2VcIjpyP1widHJ1ZVwiOnVuZGVmaW5lZCx0YWJJbmRleDpyPzEwOnVuZGVmaW5lZCxyb2xlOnI/XCJsaW5rXCI6dW5kZWZpbmVkLG9uQ2xpY2s6bix0aXRsZTpyP1wiQ2xpY2sgdG8gb3BlbiBpbiB5b3VyIGVkaXRvclwiOnVuZGVmaW5lZCxjaGlsZHJlbjpbKDAsaS5qc3gpKFwic3BhblwiLHtjaGlsZHJlbjooMCxjLmdldEZyYW1lU291cmNlKSh0KX0pLCgwLGkuanN4cykoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIixjaGlsZHJlbjpbKDAsaS5qc3gpKFwicGF0aFwiLHtkOlwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcIn0pLCgwLGkuanN4KShcInBvbHlsaW5lXCIse3BvaW50czpcIjE1IDMgMjEgMyAyMSA5XCJ9KSwoMCxpLmpzeCkoXCJsaW5lXCIse3gxOlwiMTBcIix5MTpcIjE0XCIseDI6XCIyMVwiLHkyOlwiM1wifSldfSldfSldfSl9O2NvbnN0IGY9ZnVuY3Rpb24gUnVudGltZUVycm9yKHtlcnJvcjplfSl7Y29uc3QgdD1zLnVzZU1lbW8oKCgpPT5lLmZyYW1lcy5maW5kSW5kZXgoKGU9PmUuZXhwYW5kZWQmJkJvb2xlYW4oZS5vcmlnaW5hbENvZGVGcmFtZSkmJkJvb2xlYW4oZS5vcmlnaW5hbFN0YWNrRnJhbWUpKSkpLFtlLmZyYW1lc10pO2NvbnN0IHI9cy51c2VNZW1vKCgoKT0+ZS5mcmFtZXNbdF0/P251bGwpLFtlLmZyYW1lcyx0XSk7Y29uc3Qgbj1zLnVzZU1lbW8oKCgpPT50PDA/W106ZS5mcmFtZXMuc2xpY2UoMCx0KSksW2UuZnJhbWVzLHRdKTtjb25zdFtvLGFdPXMudXNlU3RhdGUocj09bnVsbCk7Y29uc3QgdT1zLnVzZUNhbGxiYWNrKCgoKT0+e2EoKGU9PiFlKSl9KSxbXSk7Y29uc3QgYz1zLnVzZU1lbW8oKCgpPT5uLmZpbHRlcigoZT0+ZS5leHBhbmRlZHx8bykpKSxbbyxuXSk7Y29uc3QgZj1zLnVzZU1lbW8oKCgpPT5lLmZyYW1lcy5zbGljZSh0KzEpKSxbZS5mcmFtZXMsdF0pO2NvbnN0IHA9cy51c2VNZW1vKCgoKT0+Zi5maWx0ZXIoKGU9PmUuZXhwYW5kZWR8fG8pKSksW28sZl0pO2NvbnN0IG09cy51c2VNZW1vKCgoKT0+Zi5sZW5ndGghPT1wLmxlbmd0aHx8byYmciE9bnVsbCksW28sZi5sZW5ndGgscixwLmxlbmd0aF0pO3JldHVybigwLGkuanN4cykocy5GcmFnbWVudCx7Y2hpbGRyZW46W3I/KDAsaS5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsaS5qc3gpKFwiaDJcIix7Y2hpbGRyZW46XCJTb3VyY2VcIn0pLGMubWFwKCgoZSx0KT0+KDAsaS5qc3gpKGQse2ZyYW1lOmV9LGBsZWFkaW5nLWZyYW1lLSR7dH0tJHtvfWApKSksKDAsaS5qc3gpKGwuQ29kZUZyYW1lLHtzdGFja0ZyYW1lOnIub3JpZ2luYWxTdGFja0ZyYW1lLGNvZGVGcmFtZTpyLm9yaWdpbmFsQ29kZUZyYW1lfSldfSk6dW5kZWZpbmVkLGUuY29tcG9uZW50U3RhY2s/KDAsaS5qc3hzKShpLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsaS5qc3gpKFwiaDJcIix7Y2hpbGRyZW46XCJDb21wb25lbnQgU3RhY2tcIn0pLGUuY29tcG9uZW50U3RhY2subWFwKCgoZSx0KT0+KDAsaS5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY29tcG9uZW50LXN0YWNrLWZyYW1lXCI6dHJ1ZSxjaGlsZHJlbjooMCxpLmpzeCkoXCJoM1wiLHtjaGlsZHJlbjplfSl9LHQpKSldfSk6bnVsbCxwLmxlbmd0aD8oMCxpLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxpLmpzeCkoXCJoMlwiLHtjaGlsZHJlbjpcIkNhbGwgU3RhY2tcIn0pLHAubWFwKCgoZSx0KT0+KDAsaS5qc3gpKGQse2ZyYW1lOmV9LGBjYWxsLXN0YWNrLSR7dH0tJHtvfWApKSldfSk6dW5kZWZpbmVkLG0/KDAsaS5qc3gpKHMuRnJhZ21lbnQse2NoaWxkcmVuOigwLGkuanN4cykoXCJidXR0b25cIix7dGFiSW5kZXg6MTAsXCJkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29sbGFwc2VkLWFjdGlvblwiOnRydWUsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6dSxjaGlsZHJlbjpbbz9cIkhpZGVcIjpcIlNob3dcIixcIiBjb2xsYXBzZWQgZnJhbWVzXCJdfSl9KTp1bmRlZmluZWRdfSl9O3QuUnVudGltZUVycm9yPWY7dC5zdHlsZXM9KDAsdS5ub29wKWBcbiAgYnV0dG9uW2RhdGEtbmV4dGpzLWRhdGEtcnVudGltZS1lcnJvci1jb2xsYXBzZWQtYWN0aW9uXSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtZm9udC1iaWdnZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnRzLTMpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdOm5vdCg6bGFzdC1jaGlsZCksXG4gIFtkYXRhLW5leHRqcy1jb21wb25lbnQtc3RhY2stZnJhbWVdOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBoMyxcbiAgW2RhdGEtbmV4dGpzLWNvbXBvbmVudC1zdGFjay1mcmFtZV0gPiBoMyB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcCk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3RhY2staDYpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGgzW2RhdGEtbmV4dGpzLWZyYW1lLWV4cGFuZGVkPSdmYWxzZSddIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3RhY2staGVhZGxpbmUpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zdGFjay1zdWJsaW5lKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBkaXYgPiBzdmcge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogdmFyKC0tc2l6ZS1mb250LXNtYWxsKTtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc2l6ZS1nYXApO1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdltkYXRhLWhhcy1zb3VyY2VdIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2W2RhdGEtaGFzLXNvdXJjZV06aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgfVxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBkaXZbZGF0YS1oYXMtc291cmNlXSA+IHN2ZyB7XG4gICAgZGlzcGxheTogdW5zZXQ7XG4gIH1cbmB9LDQwMzpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmdldEVycm9yQnlUeXBlPXZvaWQgMDtjb25zdCBuPXIoNTg1MSk7Y29uc3Qgbz1yKDUyMzMpO2NvbnN0IGE9cig3NTA0KTthc3luYyBmdW5jdGlvbiBnZXRFcnJvckJ5VHlwZShlKXtjb25zdHtpZDp0LGV2ZW50OnJ9PWU7c3dpdGNoKHIudHlwZSl7Y2FzZSBuLlRZUEVfVU5IQU5ETEVEX0VSUk9SOmNhc2Ugbi5UWVBFX1VOSEFORExFRF9SRUpFQ1RJT046e2NvbnN0IGU9e2lkOnQscnVudGltZTp0cnVlLGVycm9yOnIucmVhc29uLGZyYW1lczphd2FpdCgwLGEuZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcykoci5mcmFtZXMsKDAsby5nZXRFcnJvclNvdXJjZSkoci5yZWFzb24pLHIucmVhc29uLnRvU3RyaW5nKCkpfTtpZihyLnR5cGU9PT1uLlRZUEVfVU5IQU5ETEVEX0VSUk9SKXtlLmNvbXBvbmVudFN0YWNrPXIuY29tcG9uZW50U3RhY2t9cmV0dXJuIGV9ZGVmYXVsdDp7YnJlYWt9fWNvbnN0IGk9cjt0aHJvdyBuZXcgRXJyb3IoXCJ0eXBlIHN5c3RlbSBpbnZhcmlhbnQgdmlvbGF0aW9uXCIpfXQuZ2V0RXJyb3JCeVR5cGU9Z2V0RXJyb3JCeVR5cGV9LDUyMzM6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5nZXRTZXJ2ZXJFcnJvcj10LmRlY29yYXRlU2VydmVyRXJyb3I9dC5nZXRFcnJvclNvdXJjZT10LmdldEZpbGVzeXN0ZW1GcmFtZT12b2lkIDA7Y29uc3Qgbj1yKDU5NzQpO2Z1bmN0aW9uIGdldEZpbGVzeXN0ZW1GcmFtZShlKXtjb25zdCB0PXsuLi5lfTtpZih0eXBlb2YgdC5maWxlPT09XCJzdHJpbmdcIil7aWYodC5maWxlLnN0YXJ0c1dpdGgoXCIvXCIpfHwvXlthLXpdOlxcXFwvaS50ZXN0KHQuZmlsZSl8fHQuZmlsZS5zdGFydHNXaXRoKFwiXFxcXFxcXFxcIikpe3QuZmlsZT1gZmlsZTovLyR7dC5maWxlfWB9fXJldHVybiB0fXQuZ2V0RmlsZXN5c3RlbUZyYW1lPWdldEZpbGVzeXN0ZW1GcmFtZTtjb25zdCBvPVN5bWJvbChcIk5leHRqc0Vycm9yXCIpO2Z1bmN0aW9uIGdldEVycm9yU291cmNlKGUpe3JldHVybiBlW29dfHxudWxsfXQuZ2V0RXJyb3JTb3VyY2U9Z2V0RXJyb3JTb3VyY2U7ZnVuY3Rpb24gZGVjb3JhdGVTZXJ2ZXJFcnJvcihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8se3dyaXRhYmxlOmZhbHNlLGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOmZhbHNlLHZhbHVlOnR9KX10LmRlY29yYXRlU2VydmVyRXJyb3I9ZGVjb3JhdGVTZXJ2ZXJFcnJvcjtmdW5jdGlvbiBnZXRTZXJ2ZXJFcnJvcihlLHQpe2xldCByO3RyeXt0aHJvdyBuZXcgRXJyb3IoZS5tZXNzYWdlKX1jYXRjaChlKXtyPWV9ci5uYW1lPWUubmFtZTt0cnl7ci5zdGFjaz1gJHtyLnRvU3RyaW5nKCl9XFxuJHsoMCxuLnBhcnNlKShlLnN0YWNrKS5tYXAoZ2V0RmlsZXN5c3RlbUZyYW1lKS5tYXAoKGU9PntsZXQgdD1gICAgIGF0ICR7ZS5tZXRob2ROYW1lfWA7aWYoZS5maWxlKXtsZXQgcj1lLmZpbGU7aWYoZS5saW5lTnVtYmVyKXtyKz1gOiR7ZS5saW5lTnVtYmVyfWA7aWYoZS5jb2x1bW4pe3IrPWA6JHtlLmNvbHVtbn1gfX10Kz1gICgke3J9KWB9cmV0dXJuIHR9KSkuam9pbihcIlxcblwiKX1gfWNhdGNoe3Iuc3RhY2s9ZS5zdGFja31kZWNvcmF0ZVNlcnZlckVycm9yKHIsdCk7cmV0dXJuIHJ9dC5nZXRTZXJ2ZXJFcnJvcj1nZXRTZXJ2ZXJFcnJvcn0sODkxMDpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5ub29wPXZvaWQgMDtmdW5jdGlvbiBub29wKGUsLi4udCl7Y29uc3Qgcj1lLmxlbmd0aC0xO3JldHVybiBlLnNsaWNlKDAscikucmVkdWNlKCgoZSxyLG4pPT5lK3IrdFtuXSksXCJcIikrZVtyXX10Lm5vb3A9bm9vcH0sNjM2OmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QucGFyc2VTdGFjaz12b2lkIDA7Y29uc3Qgbj1yKDU5NzQpO2NvbnN0IG89L1xcL19uZXh0KFxcL3N0YXRpY1xcLy4rKS87ZnVuY3Rpb24gcGFyc2VTdGFjayhlKXtjb25zdCB0PSgwLG4ucGFyc2UpKGUpO3JldHVybiB0Lm1hcCgoZT0+e3RyeXtjb25zdCB0PW5ldyBVUkwoZS5maWxlKTtjb25zdCByPW8uZXhlYyh0LnBhdGhuYW1lKTtpZihyKXtjb25zdCB0PXByb2Nlc3MuZW52Ll9fTkVYVF9ESVNUX0RJUj8ucmVwbGFjZSgvXFxcXC9nLFwiL1wiKT8ucmVwbGFjZSgvXFwvJC8sXCJcIik7aWYodCl7ZS5maWxlPVwiZmlsZTovL1wiK3QuY29uY2F0KHIucG9wKCkpfX19Y2F0Y2h7fXJldHVybiBlfSkpfXQucGFyc2VTdGFjaz1wYXJzZVN0YWNrfSw3NTA0OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmdldEZyYW1lU291cmNlPXQuZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcz10LmdldE9yaWdpbmFsU3RhY2tGcmFtZT12b2lkIDA7ZnVuY3Rpb24gZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKGUsdCxyKXthc3luYyBmdW5jdGlvbiBfZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKCl7Y29uc3Qgbj1uZXcgVVJMU2VhcmNoUGFyYW1zO24uYXBwZW5kKFwiaXNTZXJ2ZXJcIixTdHJpbmcodD09PVwic2VydmVyXCIpKTtuLmFwcGVuZChcImlzRWRnZVNlcnZlclwiLFN0cmluZyh0PT09XCJlZGdlLXNlcnZlclwiKSk7bi5hcHBlbmQoXCJlcnJvck1lc3NhZ2VcIixyKTtmb3IoY29uc3QgdCBpbiBlKXtuLmFwcGVuZCh0LChlW3RdPz9cIlwiKS50b1N0cmluZygpKX1jb25zdCBvPW5ldyBBYm9ydENvbnRyb2xsZXI7Y29uc3QgYT1zZXRUaW1lb3V0KCgoKT0+by5hYm9ydCgpKSwzZTMpO2NvbnN0IGk9YXdhaXQgc2VsZi5mZXRjaChgJHtwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwifS9fX25leHRqc19vcmlnaW5hbC1zdGFjay1mcmFtZT8ke24udG9TdHJpbmcoKX1gLHtzaWduYWw6by5zaWduYWx9KS5maW5hbGx5KCgoKT0+e2NsZWFyVGltZW91dChhKX0pKTtpZighaS5va3x8aS5zdGF0dXM9PT0yMDQpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYXdhaXQgaS50ZXh0KCkpKX1jb25zdCBzPWF3YWl0IGkuanNvbigpO3JldHVybntlcnJvcjpmYWxzZSxyZWFzb246bnVsbCxleHRlcm5hbDpmYWxzZSxleHBhbmRlZDohQm9vbGVhbigoZS5maWxlPy5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlc1wiKXx8cy5vcmlnaW5hbFN0YWNrRnJhbWU/LmZpbGU/LmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpKT8/dHJ1ZSksc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpzLm9yaWdpbmFsU3RhY2tGcmFtZSxvcmlnaW5hbENvZGVGcmFtZTpzLm9yaWdpbmFsQ29kZUZyYW1lfHxudWxsfX1pZighKGUuZmlsZT8uc3RhcnRzV2l0aChcIndlYnBhY2staW50ZXJuYWw6XCIpfHxlLmZpbGU/LnN0YXJ0c1dpdGgoXCJmaWxlOlwiKSkpe3JldHVybiBQcm9taXNlLnJlc29sdmUoe2Vycm9yOmZhbHNlLHJlYXNvbjpudWxsLGV4dGVybmFsOnRydWUsZXhwYW5kZWQ6ZmFsc2Usc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGx9KX1yZXR1cm4gX2dldE9yaWdpbmFsU3RhY2tGcmFtZSgpLmNhdGNoKCh0PT4oe2Vycm9yOnRydWUscmVhc29uOnQ/Lm1lc3NhZ2U/P3Q/LnRvU3RyaW5nKCk/P1wiVW5rbm93biBFcnJvclwiLGV4dGVybmFsOmZhbHNlLGV4cGFuZGVkOmZhbHNlLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6bnVsbCxvcmlnaW5hbENvZGVGcmFtZTpudWxsfSkpKX10LmdldE9yaWdpbmFsU3RhY2tGcmFtZT1nZXRPcmlnaW5hbFN0YWNrRnJhbWU7ZnVuY3Rpb24gZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcyhlLHQscil7cmV0dXJuIFByb21pc2UuYWxsKGUubWFwKChlPT5nZXRPcmlnaW5hbFN0YWNrRnJhbWUoZSx0LHIpKSkpfXQuZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcz1nZXRPcmlnaW5hbFN0YWNrRnJhbWVzO2Z1bmN0aW9uIGdldEZyYW1lU291cmNlKGUpe2xldCB0PVwiXCI7dHJ5e2NvbnN0IHI9bmV3IFVSTChlLmZpbGUpO2lmKHR5cGVvZiBnbG9iYWxUaGlzIT09XCJ1bmRlZmluZWRcIiYmZ2xvYmFsVGhpcy5sb2NhdGlvbj8ub3JpZ2luIT09ci5vcmlnaW4pe2lmKHIub3JpZ2luPT09XCJudWxsXCIpe3QrPXIucHJvdG9jb2x9ZWxzZXt0Kz1yLm9yaWdpbn19dCs9ci5wYXRobmFtZTt0Kz1cIiBcIn1jYXRjaHt0Kz0oZS5maWxlfHxcIih1bmtub3duKVwiKStcIiBcIn1pZihlLmxpbmVOdW1iZXIhPW51bGwpe2lmKGUuY29sdW1uIT1udWxsKXt0Kz1gKCR7ZS5saW5lTnVtYmVyfToke2UuY29sdW1ufSkgYH1lbHNle3QrPWAoJHtlLmxpbmVOdW1iZXJ9KSBgfX1yZXR1cm4gdC5zbGljZSgwLC0xKX10LmdldEZyYW1lU291cmNlPWdldEZyYW1lU291cmNlfSw3MTY5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC51c2VPbkNsaWNrT3V0c2lkZT12b2lkIDA7Y29uc3QgaT1hKHIoNzUyMikpO2Z1bmN0aW9uIHVzZU9uQ2xpY2tPdXRzaWRlKGUsdCl7aS51c2VFZmZlY3QoKCgpPT57aWYoZT09bnVsbHx8dD09bnVsbCl7cmV0dXJufWNvbnN0IGxpc3RlbmVyPXI9PntpZighZXx8ZS5jb250YWlucyhyLnRhcmdldCkpe3JldHVybn10KHIpfTtjb25zdCByPWUuZ2V0Um9vdE5vZGUoKTtyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixsaXN0ZW5lcik7ci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGxpc3RlbmVyKTtyZXR1cm4gZnVuY3Rpb24oKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixsaXN0ZW5lcik7ci5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGxpc3RlbmVyKX19KSxbdCxlXSl9dC51c2VPbkNsaWNrT3V0c2lkZT11c2VPbkNsaWNrT3V0c2lkZX0sODY1OmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ2xvc2VJY29uPXZvaWQgMDtjb25zdCBuPXIoNTA1KTtjb25zdCBDbG9zZUljb249KCk9PigwLG4uanN4cykoXCJzdmdcIix7d2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOlsoMCxuLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTggNkw2IDE4XCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSksKDAsbi5qc3gpKFwicGF0aFwiLHtkOlwiTTYgNkwxOCAxOFwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0pXX0pO3QuQ2xvc2VJY29uPUNsb3NlSWNvbn0sODg0OmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQmFzZT12b2lkIDA7Y29uc3Qgbj1yKDUwNSk7Y29uc3Qgbz1yKDg5MTApO2Z1bmN0aW9uIEJhc2UoKXtyZXR1cm4oMCxuLmpzeCkoXCJzdHlsZVwiLHtjaGlsZHJlbjooMCxvLm5vb3ApYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgLS1zaXplLWdhcC1oYWxmOiA0cHg7XG4gICAgICAgICAgLS1zaXplLWdhcDogOHB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXAtZG91YmxlOiAxNnB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXAtdHJpcGxlOiAyNHB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXAtcXVhZDogMzJweDtcblxuICAgICAgICAgIC0tc2l6ZS1mb250LXNtYWxsOiAxNHB4O1xuICAgICAgICAgIC0tc2l6ZS1mb250OiAxNnB4O1xuICAgICAgICAgIC0tc2l6ZS1mb250LWJpZzogMjBweDtcbiAgICAgICAgICAtLXNpemUtZm9udC1iaWdnZXI6IDI0cHg7XG5cbiAgICAgICAgICAtLWNvbG9yLWJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgIC0tY29sb3ItZm9udDogIzc1NzU3NTtcbiAgICAgICAgICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDE3LCAxNywgMTcsIDAuMik7XG5cbiAgICAgICAgICAtLWNvbG9yLXN0YWNrLWg2OiAjMjIyO1xuICAgICAgICAgIC0tY29sb3Itc3RhY2staGVhZGxpbmU6ICM2NjY7XG4gICAgICAgICAgLS1jb2xvci1zdGFjay1zdWJsaW5lOiAjOTk5O1xuXG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTE6ICM4MDgwODA7XG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTI6ICMyMjIyMjI7XG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTM6ICM0MDQwNDA7XG5cbiAgICAgICAgICAtLWZvbnQtc3RhY2stbW9ub3NwYWNlOiAnU0ZNb25vLVJlZ3VsYXInLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsXG4gICAgICAgICAgICBNZW5sbywgQ291cmllciwgbW9ub3NwYWNlO1xuXG4gICAgICAgICAgLS1jb2xvci1hbnNpLXNlbGVjdGlvbjogcmdiYSg5NSwgMTI2LCAxNTEsIDAuNDgpO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1iZzogIzExMTExMTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktZmc6ICNjY2NjY2M7XG5cbiAgICAgICAgICAtLWNvbG9yLWFuc2ktd2hpdGU6ICM3Nzc3Nzc7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJsYWNrOiAjMTQxNDE0O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ibHVlOiAjMDBhYWZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1jeWFuOiAjODhkZGZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ncmVlbjogIzk4ZWM2NTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktbWFnZW50YTogI2FhODhmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktcmVkOiAjZmY1NTU1O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS15ZWxsb3c6ICNmZmNjMzM7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZTogI2ZmZmZmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsYWNrOiAjNzc3Nzc3O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQtYmx1ZTogIzMzYmJmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWN5YW46ICNiYmVjZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1ncmVlbjogI2I2ZjI5MjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LW1hZ2VudGE6ICNjZWJiZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1yZWQ6ICNmZjg4ODg7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC15ZWxsb3c6ICNmZmQ5NjY7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgLS1jb2xvci1iYWNrZ3JvdW5kOiByZ2IoMjgsIDI4LCAzMCk7XG4gICAgICAgICAgICAtLWNvbG9yLWZvbnQ6IHdoaXRlO1xuICAgICAgICAgICAgLS1jb2xvci1iYWNrZHJvcDogcmdiKDQ0LCA0NCwgNDYpO1xuXG4gICAgICAgICAgICAtLWNvbG9yLXN0YWNrLWg2OiByZ2IoMjAwLCAyMDAsIDIwNCk7XG4gICAgICAgICAgICAtLWNvbG9yLXN0YWNrLWhlYWRsaW5lOiByZ2IoOTksIDk5LCAxMDIpO1xuICAgICAgICAgICAgLS1jb2xvci1zdGFjay1zdWJsaW5lOiByZ2JhKDE0MiwgMTQyLCAxNDcpO1xuXG4gICAgICAgICAgICAtLWNvbG9yLWFjY2VudHMtMzogcmdiKDExOCwgMTE4LCAxMTgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5tb25vIHtcbiAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaDEsXG4gICAgICAgIGgyLFxuICAgICAgICBoMyxcbiAgICAgICAgaDQsXG4gICAgICAgIGg1LFxuICAgICAgICBoNiB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXApO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgfVxuICAgICAgYH0pfXQuQmFzZT1CYXNlfSw0NDY0OmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ29tcG9uZW50U3R5bGVzPXZvaWQgMDtjb25zdCBuPXIoNTA1KTtjb25zdCBvPXIoMzk5KTtjb25zdCBhPXIoNTY1MSk7Y29uc3QgaT1yKDY1NDMpO2NvbnN0IHM9cig5OTMpO2NvbnN0IGw9cig1NDg4KTtjb25zdCB1PXIoMTEyMCk7Y29uc3QgYz1yKDU5MzYpO2NvbnN0IGQ9cig0MzU1KTtjb25zdCBmPXIoMjQ4NCk7Y29uc3QgcD1yKDg5MTApO2Z1bmN0aW9uIENvbXBvbmVudFN0eWxlcygpe3JldHVybigwLG4uanN4KShcInN0eWxlXCIse2NoaWxkcmVuOigwLHAubm9vcClgXG4gICAgICAgICR7cy5zdHlsZXN9XG4gICAgICAgICR7dS5zdHlsZXN9XG4gICAgICAgICR7YS5zdHlsZXN9XG4gICAgICAgICR7aS5zdHlsZXN9XG4gICAgICAgICR7by5zdHlsZXN9XG4gICAgICAgICR7bC5zdHlsZXN9XG4gICAgICAgIFxuICAgICAgICAke2Muc3R5bGVzfVxuICAgICAgICAke2Quc3R5bGVzfVxuICAgICAgICAke2Yuc3R5bGVzfVxuICAgICAgYH0pfXQuQ29tcG9uZW50U3R5bGVzPUNvbXBvbmVudFN0eWxlc30sOTQ5NTpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkNzc1Jlc2V0PXZvaWQgMDtjb25zdCBuPXIoNTA1KTtjb25zdCBvPXIoODkxMCk7ZnVuY3Rpb24gQ3NzUmVzZXQoKXtyZXR1cm4oMCxuLmpzeCkoXCJzdHlsZVwiLHtjaGlsZHJlbjooMCxvLm5vb3ApYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYWxsOiBpbml0aWFsO1xuXG4gICAgICAgICAgLyogdGhlIGRpcmVjdGlvbiBwcm9wZXJ0eSBpcyBub3QgcmVzZXQgYnkgJ2FsbCcgKi9cbiAgICAgICAgICBkaXJlY3Rpb246IGx0cjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIVxuICAgICAgICAgKiBCb290c3RyYXAgUmVib290IHY0LjQuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgICAgICAgICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAgICAgICAgICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUd2l0dGVyLCBJbmMuXG4gICAgICAgICAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gICAgICAgICAqIEZvcmtlZCBmcm9tIE5vcm1hbGl6ZS5jc3MsIGxpY2Vuc2VkIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kKVxuICAgICAgICAgKi9cbiAgICAgICAgKixcbiAgICAgICAgKjo6YmVmb3JlLFxuICAgICAgICAqOjphZnRlciB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJ0aWNsZSxcbiAgICAgICAgYXNpZGUsXG4gICAgICAgIGZpZ2NhcHRpb24sXG4gICAgICAgIGZpZ3VyZSxcbiAgICAgICAgZm9vdGVyLFxuICAgICAgICBoZWFkZXIsXG4gICAgICAgIGhncm91cCxcbiAgICAgICAgbWFpbixcbiAgICAgICAgbmF2LFxuICAgICAgICBzZWN0aW9uIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLFxuICAgICAgICAgICAgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsICdOb3RvIFNhbnMnLCBzYW5zLXNlcmlmLFxuICAgICAgICAgICAgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsXG4gICAgICAgICAgICAnTm90byBDb2xvciBFbW9qaSc7XG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItZm9udCk7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgW3RhYmluZGV4PSctMSddOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGhyIHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBoMSxcbiAgICAgICAgaDIsXG4gICAgICAgIGgzLFxuICAgICAgICBoNCxcbiAgICAgICAgaDUsXG4gICAgICAgIGg2IHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFiYnJbdGl0bGVdLFxuICAgICAgICBhYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gICAgICAgICAgY3Vyc29yOiBoZWxwO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgYWRkcmVzcyB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICBvbCxcbiAgICAgICAgdWwsXG4gICAgICAgIGRsIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBvbCBvbCxcbiAgICAgICAgdWwgdWwsXG4gICAgICAgIG9sIHVsLFxuICAgICAgICB1bCBvbCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGR0IHtcbiAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZGQge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBiLFxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiA4MCU7XG4gICAgICAgIH1cblxuICAgICAgICBzdWIsXG4gICAgICAgIHN1cCB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YiB7XG4gICAgICAgICAgYm90dG9tOiAtMC4yNWVtO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwIHtcbiAgICAgICAgICB0b3A6IC0wLjVlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgIGNvbG9yOiAjMDA3YmZmO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAjMDA1NmIzO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG5cbiAgICAgICAgYTpub3QoW2hyZWZdKSB7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgYTpub3QoW2hyZWZdKTpob3ZlciB7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJlLFxuICAgICAgICBjb2RlLFxuICAgICAgICBrYmQsXG4gICAgICAgIHNhbXAge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsXG4gICAgICAgICAgICAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhcHRpb24ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICAgICAgICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgY2FwdGlvbi1zaWRlOiBib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICB0aCB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICAgICAgICAgIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0LFxuICAgICAgICBidXR0b24sXG4gICAgICAgIHNlbGVjdCxcbiAgICAgICAgb3B0Z3JvdXAsXG4gICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24sXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgIHdvcmQtd3JhcDogbm9ybWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBbdHlwZT0nYnV0dG9uJ10sXG4gICAgICAgIFt0eXBlPSdyZXNldCddLFxuICAgICAgICBbdHlwZT0nc3VibWl0J10ge1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuICAgICAgICBbdHlwZT0nYnV0dG9uJ106bm90KDpkaXNhYmxlZCksXG4gICAgICAgIFt0eXBlPSdyZXNldCddOm5vdCg6ZGlzYWJsZWQpLFxuICAgICAgICBbdHlwZT0nc3VibWl0J106bm90KDpkaXNhYmxlZCkge1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbiAgICAgICAgW3R5cGU9J2J1dHRvbiddOjotbW96LWZvY3VzLWlubmVyLFxuICAgICAgICBbdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgICAgICAgW3R5cGU9J3N1Ym1pdCddOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9J3JhZGlvJ10sXG4gICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9J2RhdGUnXSxcbiAgICAgICAgaW5wdXRbdHlwZT0ndGltZSddLFxuICAgICAgICBpbnB1dFt0eXBlPSdkYXRldGltZS1sb2NhbCddLFxuICAgICAgICBpbnB1dFt0eXBlPSdtb250aCddIHtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkc2V0IHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVnZW5kIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9ncmVzcyB7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICAgICAgICBbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIFt0eXBlPSdzZWFyY2gnXSB7XG4gICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBzdW1tYXJ5IHtcbiAgICAgICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGVtcGxhdGUge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBbaGlkZGVuXSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICBgfSl9dC5Dc3NSZXNldD1Dc3NSZXNldH0sNzk5NzpmdW5jdGlvbihlKXtlLmV4cG9ydHM9cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9hbnNlclwiKX0sNzI5MjpmdW5jdGlvbihlKXtlLmV4cG9ydHM9cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9jc3MuZXNjYXBlXCIpfSw3NzA5OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3BsYXRmb3JtXCIpfSw1OTc0OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0YWNrdHJhY2UtcGFyc2VyXCIpfSw3NTE4OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIil9LDc1MjI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXJlcXVpcmUoXCJyZWFjdFwiKX0sMjI1NTpmdW5jdGlvbihlKXtlLmV4cG9ydHM9cmVxdWlyZShcInJlYWN0LWRvbVwiKX19O3ZhciB0PXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18ocil7dmFyIG49dFtyXTtpZihuIT09dW5kZWZpbmVkKXtyZXR1cm4gbi5leHBvcnRzfXZhciBvPXRbcl09e2V4cG9ydHM6e319O3ZhciBhPXRydWU7dHJ5e2Vbcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7YT1mYWxzZX1maW5hbGx5e2lmKGEpZGVsZXRlIHRbcl19cmV0dXJuIG8uZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHI9X19uY2N3cGNrX3JlcXVpcmVfXyg1MjA0KTttb2R1bGUuZXhwb3J0cz1yfSkoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/add-base-path.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/add-base-path.js ***! \********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addBasePath\", ({\n enumerable: true,\n get: function() {\n return addBasePath;\n }\n}));\nconst _addpathprefix = __webpack_require__(/*! ../shared/lib/router/utils/add-path-prefix */ \"./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || \"\";\nfunction addBasePath(path, required) {\n return (0, _normalizetrailingslash.normalizePathTrailingSlash)( false ? 0 : (0, _addpathprefix.addPathPrefix)(path, basePath));\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=add-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwrQ0FBOEM7SUFDMUNJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxpQkFBaUJDLG1CQUFPQSxDQUFDLHVIQUE0QztBQUMzRSxNQUFNQywwQkFBMEJELG1CQUFPQSxDQUFDLCtGQUE0QjtBQUNwRSxNQUFNRSxXQUFXQyxNQUFrQyxJQUFJO0FBQ3ZELFNBQVNMLFlBQVlRLElBQUksRUFBRUMsUUFBUTtJQUMvQixPQUFPLENBQUMsR0FBR04sd0JBQXdCTywwQkFBMEIsRUFBRUwsTUFBdURJLEdBQUdELENBQUlBLEdBQUcsQ0FBQyxHQUFHUCxlQUFlVyxhQUFhLEVBQUVKLE1BQU1KO0FBQzVLO0FBRUEsSUFBSSxDQUFDLE9BQU9SLFFBQVFpQixPQUFPLEtBQUssY0FBZSxPQUFPakIsUUFBUWlCLE9BQU8sS0FBSyxZQUFZakIsUUFBUWlCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2pCLFFBQVFpQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLcEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRaUIsT0FBTyxFQUFFLGNBQWM7UUFBRWhCLE9BQU87SUFBSztJQUNuRUgsT0FBT3FCLE1BQU0sQ0FBQ25CLFFBQVFpQixPQUFPLEVBQUVqQjtJQUMvQm9CLE9BQU9wQixPQUFPLEdBQUdBLFFBQVFpQixPQUFPO0FBQ2xDLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1iYXNlLXBhdGguanM/NjEzMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImFkZEJhc2VQYXRoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhZGRCYXNlUGF0aDtcbiAgICB9XG59KTtcbmNvbnN0IF9hZGRwYXRocHJlZml4ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXByZWZpeFwiKTtcbmNvbnN0IF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8IFwiXCI7XG5mdW5jdGlvbiBhZGRCYXNlUGF0aChwYXRoLCByZXF1aXJlZCkge1xuICAgIHJldHVybiAoMCwgX25vcm1hbGl6ZXRyYWlsaW5nc2xhc2gubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2gpKHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCAmJiAhcmVxdWlyZWQgPyBwYXRoIDogKDAsIF9hZGRwYXRocHJlZml4LmFkZFBhdGhQcmVmaXgpKHBhdGgsIGJhc2VQYXRoKSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1iYXNlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImFkZEJhc2VQYXRoIiwiX2FkZHBhdGhwcmVmaXgiLCJyZXF1aXJlIiwiX25vcm1hbGl6ZXRyYWlsaW5nc2xhc2giLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInJlcXVpcmVkIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJhZGRQYXRoUHJlZml4IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/add-base-path.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/add-locale.js": /*!*****************************************************!*\ !*** ./node_modules/next/dist/client/add-locale.js ***! \*****************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addLocale\", ({\n enumerable: true,\n get: function() {\n return addLocale;\n }\n}));\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst addLocale = function(path) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (false) {}\n return path;\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=add-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCw2Q0FBNEM7SUFDeENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywwQkFBMEJDLG1CQUFPQSxDQUFDLCtGQUE0QjtBQUNwRSxNQUFNRixZQUFZLFNBQVNHLElBQUk7SUFDM0IsSUFBSSxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBTyxJQUFJQSxPQUFPLElBQUksSUFBSUssT0FBTyxHQUFHQSxPQUFPTCxNQUFNSyxPQUFPO1FBQ3RHRixJQUFJLENBQUNFLE9BQU8sRUFBRSxHQUFHSixTQUFTLENBQUNJLEtBQUs7SUFDcEM7SUFDQSxJQUFJQyxLQUErQixFQUFFLEVBRXBDO0lBQ0QsT0FBT1A7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPUCxRQUFRa0IsT0FBTyxLQUFLLGNBQWUsT0FBT2xCLFFBQVFrQixPQUFPLEtBQUssWUFBWWxCLFFBQVFrQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9sQixRQUFRa0IsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3JCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWtCLE9BQU8sRUFBRSxjQUFjO1FBQUVqQixPQUFPO0lBQUs7SUFDbkVILE9BQU9zQixNQUFNLENBQUNwQixRQUFRa0IsT0FBTyxFQUFFbEI7SUFDL0JxQixPQUFPckIsT0FBTyxHQUFHQSxRQUFRa0IsT0FBTztBQUNsQyxFQUVBLHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzP2UyZDkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhZGRMb2NhbGVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFkZExvY2FsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgYWRkTG9jYWxlID0gZnVuY3Rpb24ocGF0aCkge1xuICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICByZXR1cm4gKDAsIF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoLm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKShyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLWxvY2FsZVwiKS5hZGRMb2NhbGUocGF0aCwgLi4uYXJncykpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImFkZExvY2FsZSIsIl9ub3JtYWxpemV0cmFpbGluZ3NsYXNoIiwicmVxdWlyZSIsInBhdGgiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/add-locale.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/components/app-router-headers.js": /*!************************************************************************!*\ !*** ./node_modules/next/dist/client/components/app-router-headers.js ***! \************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RSC_HEADER: function() {\n return RSC_HEADER;\n },\n ACTION: function() {\n return ACTION;\n },\n NEXT_ROUTER_STATE_TREE: function() {\n return NEXT_ROUTER_STATE_TREE;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_VARY_HEADER: function() {\n return RSC_VARY_HEADER;\n },\n FLIGHT_PARAMETERS: function() {\n return FLIGHT_PARAMETERS;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n }\n});\nconst RSC_HEADER = \"RSC\";\nconst ACTION = \"Next-Action\";\nconst NEXT_ROUTER_STATE_TREE = \"Next-Router-State-Tree\";\nconst NEXT_ROUTER_PREFETCH_HEADER = \"Next-Router-Prefetch\";\nconst NEXT_URL = \"Next-Url\";\nconst RSC_CONTENT_TYPE_HEADER = \"text/x-component\";\nconst RSC_VARY_HEADER = RSC_HEADER + \", \" + NEXT_ROUTER_STATE_TREE + \", \" + NEXT_ROUTER_PREFETCH_HEADER + \", \" + NEXT_URL;\nconst FLIGHT_PARAMETERS = [\n [\n RSC_HEADER\n ],\n [\n NEXT_ROUTER_STATE_TREE\n ],\n [\n NEXT_ROUTER_PREFETCH_HEADER\n ]\n];\nconst NEXT_RSC_UNION_QUERY = \"_rsc\";\nconst NEXT_DID_POSTPONE_HEADER = \"x-nextjs-postponed\";\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=app-router-headers.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQVdOO0FBQ0EsU0FBU1csUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSWpCLE9BQU9DLGNBQWMsQ0FBQ2UsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRYixTQUFTO0lBQ2JHLFlBQVk7UUFDUixPQUFPQTtJQUNYO0lBQ0FDLFFBQVE7UUFDSixPQUFPQTtJQUNYO0lBQ0FDLHdCQUF3QjtRQUNwQixPQUFPQTtJQUNYO0lBQ0FDLDZCQUE2QjtRQUN6QixPQUFPQTtJQUNYO0lBQ0FDLFVBQVU7UUFDTixPQUFPQTtJQUNYO0lBQ0FDLHlCQUF5QjtRQUNyQixPQUFPQTtJQUNYO0lBQ0FDLGlCQUFpQjtRQUNiLE9BQU9BO0lBQ1g7SUFDQUMsbUJBQW1CO1FBQ2YsT0FBT0E7SUFDWDtJQUNBQyxzQkFBc0I7UUFDbEIsT0FBT0E7SUFDWDtJQUNBQywwQkFBMEI7UUFDdEIsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTVQsYUFBYTtBQUNuQixNQUFNQyxTQUFTO0FBQ2YsTUFBTUMseUJBQXlCO0FBQy9CLE1BQU1DLDhCQUE4QjtBQUNwQyxNQUFNQyxXQUFXO0FBQ2pCLE1BQU1DLDBCQUEwQjtBQUNoQyxNQUFNQyxrQkFBa0JOLGFBQWEsT0FBT0UseUJBQXlCLE9BQU9DLDhCQUE4QixPQUFPQztBQUNqSCxNQUFNRyxvQkFBb0I7SUFDdEI7UUFDSVA7S0FDSDtJQUNEO1FBQ0lFO0tBQ0g7SUFDRDtRQUNJQztLQUNIO0NBQ0o7QUFDRCxNQUFNSyx1QkFBdUI7QUFDN0IsTUFBTUMsMkJBQTJCO0FBRWpDLElBQUksQ0FBQyxPQUFPWixRQUFRbUIsT0FBTyxLQUFLLGNBQWUsT0FBT25CLFFBQVFtQixPQUFPLEtBQUssWUFBWW5CLFFBQVFtQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9uQixRQUFRbUIsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3RCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUW1CLE9BQU8sRUFBRSxjQUFjO1FBQUVsQixPQUFPO0lBQUs7SUFDbkVILE9BQU91QixNQUFNLENBQUNyQixRQUFRbUIsT0FBTyxFQUFFbkI7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUW1CLE9BQU87QUFDbEMsRUFFQSw4Q0FBOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnMuanM/MzU2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJTQ19IRUFERVI6IG51bGwsXG4gICAgQUNUSU9OOiBudWxsLFxuICAgIE5FWFRfUk9VVEVSX1NUQVRFX1RSRUU6IG51bGwsXG4gICAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSOiBudWxsLFxuICAgIE5FWFRfVVJMOiBudWxsLFxuICAgIFJTQ19DT05URU5UX1RZUEVfSEVBREVSOiBudWxsLFxuICAgIFJTQ19WQVJZX0hFQURFUjogbnVsbCxcbiAgICBGTElHSFRfUEFSQU1FVEVSUzogbnVsbCxcbiAgICBORVhUX1JTQ19VTklPTl9RVUVSWTogbnVsbCxcbiAgICBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUlNDX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfSEVBREVSO1xuICAgIH0sXG4gICAgQUNUSU9OOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFDVElPTjtcbiAgICB9LFxuICAgIE5FWFRfUk9VVEVSX1NUQVRFX1RSRUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9ST1VURVJfU1RBVEVfVFJFRTtcbiAgICB9LFxuICAgIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVI7XG4gICAgfSxcbiAgICBORVhUX1VSTDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBORVhUX1VSTDtcbiAgICB9LFxuICAgIFJTQ19DT05URU5UX1RZUEVfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19DT05URU5UX1RZUEVfSEVBREVSO1xuICAgIH0sXG4gICAgUlNDX1ZBUllfSEVBREVSOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJTQ19WQVJZX0hFQURFUjtcbiAgICB9LFxuICAgIEZMSUdIVF9QQVJBTUVURVJTOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZMSUdIVF9QQVJBTUVURVJTO1xuICAgIH0sXG4gICAgTkVYVF9SU0NfVU5JT05fUVVFUlk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9SU0NfVU5JT05fUVVFUlk7XG4gICAgfSxcbiAgICBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSO1xuICAgIH1cbn0pO1xuY29uc3QgUlNDX0hFQURFUiA9IFwiUlNDXCI7XG5jb25zdCBBQ1RJT04gPSBcIk5leHQtQWN0aW9uXCI7XG5jb25zdCBORVhUX1JPVVRFUl9TVEFURV9UUkVFID0gXCJOZXh0LVJvdXRlci1TdGF0ZS1UcmVlXCI7XG5jb25zdCBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIgPSBcIk5leHQtUm91dGVyLVByZWZldGNoXCI7XG5jb25zdCBORVhUX1VSTCA9IFwiTmV4dC1VcmxcIjtcbmNvbnN0IFJTQ19DT05URU5UX1RZUEVfSEVBREVSID0gXCJ0ZXh0L3gtY29tcG9uZW50XCI7XG5jb25zdCBSU0NfVkFSWV9IRUFERVIgPSBSU0NfSEVBREVSICsgXCIsIFwiICsgTkVYVF9ST1VURVJfU1RBVEVfVFJFRSArIFwiLCBcIiArIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiArIFwiLCBcIiArIE5FWFRfVVJMO1xuY29uc3QgRkxJR0hUX1BBUkFNRVRFUlMgPSBbXG4gICAgW1xuICAgICAgICBSU0NfSEVBREVSXG4gICAgXSxcbiAgICBbXG4gICAgICAgIE5FWFRfUk9VVEVSX1NUQVRFX1RSRUVcbiAgICBdLFxuICAgIFtcbiAgICAgICAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSXG4gICAgXVxuXTtcbmNvbnN0IE5FWFRfUlNDX1VOSU9OX1FVRVJZID0gXCJfcnNjXCI7XG5jb25zdCBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIgPSBcIngtbmV4dGpzLXBvc3Rwb25lZFwiO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcm91dGVyLWhlYWRlcnMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiUlNDX0hFQURFUiIsIkFDVElPTiIsIk5FWFRfUk9VVEVSX1NUQVRFX1RSRUUiLCJORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1VSTCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwiUlNDX1ZBUllfSEVBREVSIiwiRkxJR0hUX1BBUkFNRVRFUlMiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/components/app-router-headers.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/detect-domain-locale.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/detect-domain-locale.js ***! \***************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"detectDomainLocale\", ({\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n}));\nconst detectDomainLocale = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (false) {}\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=detect-domain-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsc0RBQXFEO0lBQ2pESSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUEscUJBQXFCO0lBQ3ZCLElBQUksSUFBSUMsT0FBT0MsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLE9BQU9LLE9BQU8sR0FBR0EsT0FBT0wsTUFBTUssT0FBTztRQUNuRkYsSUFBSSxDQUFDRSxLQUFLLEdBQUdKLFNBQVMsQ0FBQ0ksS0FBSztJQUNoQztJQUNBLElBQUlDLEtBQStCLEVBQUUsRUFFcEM7QUFDTDtBQUVBLElBQUksQ0FBQyxPQUFPWCxRQUFRZSxPQUFPLEtBQUssY0FBZSxPQUFPZixRQUFRZSxPQUFPLEtBQUssWUFBWWYsUUFBUWUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPZixRQUFRZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRZSxPQUFPLEVBQUUsY0FBYztRQUFFZCxPQUFPO0lBQUs7SUFDbkVILE9BQU9tQixNQUFNLENBQUNqQixRQUFRZSxPQUFPLEVBQUVmO0lBQy9Ca0IsT0FBT2xCLE9BQU8sR0FBR0EsUUFBUWUsT0FBTztBQUNsQyxFQUVBLGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcz8wM2I1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0RG9tYWluTG9jYWxlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZXRlY3REb21haW5Mb2NhbGU7XG4gICAgfVxufSk7XG5jb25zdCBkZXRlY3REb21haW5Mb2NhbGUgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlXCIpLmRldGVjdERvbWFpbkxvY2FsZSguLi5hcmdzKTtcbiAgICB9XG59O1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZXRlY3QtZG9tYWluLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsInJlcXVpcmUiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/detect-domain-locale.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/dev-build-watcher.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/dev/dev-build-watcher.js ***! \****************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* eslint-disable @typescript-eslint/no-use-before-define */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return initializeBuildWatcher;\n }\n}));\nconst _hotreloadertypes = __webpack_require__(/*! ../../server/dev/hot-reloader-types */ \"./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction initializeBuildWatcher(toggleCallback, position) {\n if (position === void 0) position = \"bottom-right\";\n const shadowHost = document.createElement(\"div\");\n const [verticalProperty, horizontalProperty] = position.split(\"-\", 2);\n shadowHost.id = \"__next-build-watcher\";\n // Make sure container is fixed and on a high zIndex so it shows\n shadowHost.style.position = \"fixed\";\n // Ensure container's position to be top or bottom (default)\n shadowHost.style[verticalProperty] = \"10px\";\n // Ensure container's position to be left or right (default)\n shadowHost.style[horizontalProperty] = \"20px\";\n shadowHost.style.width = \"0\";\n shadowHost.style.height = \"0\";\n shadowHost.style.zIndex = \"99999\";\n document.body.appendChild(shadowHost);\n let shadowRoot;\n let prefix = \"\";\n if (shadowHost.attachShadow) {\n shadowRoot = shadowHost.attachShadow({\n mode: \"open\"\n });\n } else {\n // If attachShadow is undefined then the browser does not support\n // the Shadow DOM, we need to prefix all the names so there\n // will be no conflicts\n shadowRoot = shadowHost;\n prefix = \"__next-build-watcher-\";\n }\n // Container\n const container = createContainer(prefix);\n shadowRoot.appendChild(container);\n // CSS\n const css = createCss(prefix, {\n horizontalProperty,\n verticalProperty\n });\n shadowRoot.appendChild(css);\n // State\n let isVisible = false;\n let isBuilding = false;\n let timeoutId = null;\n // Handle events\n (0, _websocket.addMessageListener)((obj)=>{\n try {\n handleMessage(obj);\n } catch (e) {}\n });\n function show() {\n timeoutId && clearTimeout(timeoutId);\n isVisible = true;\n isBuilding = true;\n updateContainer();\n }\n function hide() {\n isBuilding = false;\n // Wait for the fade out transition to complete\n timeoutId = setTimeout(()=>{\n isVisible = false;\n updateContainer();\n }, 100);\n updateContainer();\n }\n function handleMessage(obj) {\n if (!(\"action\" in obj)) {\n return;\n }\n // eslint-disable-next-line default-case\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n show();\n break;\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.FINISH_BUILDING:\n hide();\n break;\n }\n }\n toggleCallback({\n show,\n hide\n });\n function updateContainer() {\n if (isBuilding) {\n container.classList.add(\"\" + prefix + \"building\");\n } else {\n container.classList.remove(\"\" + prefix + \"building\");\n }\n if (isVisible) {\n container.classList.add(\"\" + prefix + \"visible\");\n } else {\n container.classList.remove(\"\" + prefix + \"visible\");\n }\n }\n}\nfunction createContainer(prefix) {\n const container = document.createElement(\"div\");\n container.id = \"\" + prefix + \"container\";\n container.innerHTML = '\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n ';\n return container;\n}\nfunction createCss(prefix, param) {\n let { horizontalProperty, verticalProperty } = param;\n const css = document.createElement(\"style\");\n css.textContent = \"\\n #\" + prefix + \"container {\\n position: absolute;\\n \" + verticalProperty + \": 10px;\\n \" + horizontalProperty + \": 30px;\\n\\n border-radius: 3px;\\n background: #000;\\n color: #fff;\\n font: initial;\\n cursor: initial;\\n letter-spacing: initial;\\n text-shadow: initial;\\n text-transform: initial;\\n visibility: initial;\\n\\n padding: 7px 10px 8px 10px;\\n align-items: center;\\n box-shadow: 0 11px 40px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\\n\\n display: none;\\n opacity: 0;\\n transition: opacity 0.1s ease, \" + verticalProperty + \" 0.1s ease;\\n animation: \" + prefix + \"fade-in 0.1s ease-in-out;\\n }\\n\\n #\" + prefix + \"container.\" + prefix + \"visible {\\n display: flex;\\n }\\n\\n #\" + prefix + \"container.\" + prefix + \"building {\\n \" + verticalProperty + \": 20px;\\n opacity: 1;\\n }\\n\\n #\" + prefix + \"icon-wrapper {\\n width: 16px;\\n height: 16px;\\n }\\n\\n #\" + prefix + \"icon-wrapper > svg {\\n width: 100%;\\n height: 100%;\\n }\\n\\n #\" + prefix + \"icon-group {\\n animation: \" + prefix + \"strokedash 1s ease-in-out both infinite;\\n }\\n\\n @keyframes \" + prefix + \"fade-in {\\n from {\\n \" + verticalProperty + \": 10px;\\n opacity: 0;\\n }\\n to {\\n \" + verticalProperty + \": 20px;\\n opacity: 1;\\n }\\n }\\n\\n @keyframes \" + prefix + \"strokedash {\\n 0% {\\n stroke-dasharray: 0 226;\\n }\\n 80%,\\n 100% {\\n stroke-dasharray: 659 226;\\n }\\n }\\n \";\n return css;\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=dev-build-watcher.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZGV2LWJ1aWxkLXdhdGNoZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBELEdBQWdCO0FBQzFFQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsb0JBQW9CQyxtQkFBT0EsQ0FBQyxzR0FBcUM7QUFDdkUsTUFBTUMsYUFBYUQsbUJBQU9BLENBQUMsaUdBQTJCO0FBQ3RELFNBQVNGLHVCQUF1QkksY0FBYyxFQUFFQyxRQUFRO0lBQ3BELElBQUlBLGFBQWEsS0FBSyxHQUFHQSxXQUFXO0lBQ3BDLE1BQU1DLGFBQWFDLFNBQVNDLGFBQWEsQ0FBQztJQUMxQyxNQUFNLENBQUNDLGtCQUFrQkMsbUJBQW1CLEdBQUdMLFNBQVNNLEtBQUssQ0FBQyxLQUFLO0lBQ25FTCxXQUFXTSxFQUFFLEdBQUc7SUFDaEIsZ0VBQWdFO0lBQ2hFTixXQUFXTyxLQUFLLENBQUNSLFFBQVEsR0FBRztJQUM1Qiw0REFBNEQ7SUFDNURDLFdBQVdPLEtBQUssQ0FBQ0osaUJBQWlCLEdBQUc7SUFDckMsNERBQTREO0lBQzVESCxXQUFXTyxLQUFLLENBQUNILG1CQUFtQixHQUFHO0lBQ3ZDSixXQUFXTyxLQUFLLENBQUNDLEtBQUssR0FBRztJQUN6QlIsV0FBV08sS0FBSyxDQUFDRSxNQUFNLEdBQUc7SUFDMUJULFdBQVdPLEtBQUssQ0FBQ0csTUFBTSxHQUFHO0lBQzFCVCxTQUFTVSxJQUFJLENBQUNDLFdBQVcsQ0FBQ1o7SUFDMUIsSUFBSWE7SUFDSixJQUFJQyxTQUFTO0lBQ2IsSUFBSWQsV0FBV2UsWUFBWSxFQUFFO1FBQ3pCRixhQUFhYixXQUFXZSxZQUFZLENBQUM7WUFDakNDLE1BQU07UUFDVjtJQUNKLE9BQU87UUFDSCxpRUFBaUU7UUFDakUsMkRBQTJEO1FBQzNE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RCxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLMUQsT0FBT0MsY0FBYyxDQUFDQyxRQUFRdUQsT0FBTyxFQUFFLGNBQWM7UUFBRXRELE9BQU87SUFBSztJQUNuRUgsT0FBTzJELE1BQU0sQ0FBQ3pELFFBQVF1RCxPQUFPLEVBQUV2RDtJQUMvQjBELE9BQU8xRCxPQUFPLEdBQUdBLFFBQVF1RCxPQUFPO0FBQ2xDLEVBRUEsNkNBQTZDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9kZXYtYnVpbGQtd2F0Y2hlci5qcz83YjM0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZSAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVCdWlsZFdhdGNoZXI7XG4gICAgfVxufSk7XG5jb25zdCBfaG90cmVsb2FkZXJ0eXBlcyA9IHJlcXVpcmUoXCIuLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlc1wiKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmZ1bmN0aW9uIGluaXRpYWxpemVCdWlsZFdhdGNoZXIodG9nZ2xlQ2FsbGJhY2ssIHBvc2l0aW9uKSB7XG4gICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApIHBvc2l0aW9uID0gXCJib3R0b20tcmlnaHRcIjtcbiAgICBjb25zdCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBjb25zdCBbdmVydGljYWxQcm9wZXJ0eSwgaG9yaXpvbnRhbFByb3BlcnR5XSA9IHBvc2l0aW9uLnNwbGl0KFwiLVwiLCAyKTtcbiAgICBzaGFkb3dIb3N0LmlkID0gXCJfX25leHQtYnVpbGQtd2F0Y2hlclwiO1xuICAgIC8vIE1ha2Ugc3VyZSBjb250YWluZXIgaXMgZml4ZWQgYW5kIG9uIGEgaGlnaCB6SW5kZXggc28gaXQgc2hvd3NcbiAgICBzaGFkb3dIb3N0LnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgIC8vIEVuc3VyZSBjb250YWluZXIncyBwb3NpdGlvbiB0byBiZSB0b3Agb3IgYm90dG9tIChkZWZhdWx0KVxuICAgIHNoYWRvd0hvc3Quc3R5bGVbdmVydGljYWxQcm9wZXJ0eV0gPSBcIjEwcHhcIjtcbiAgICAvLyBFbnN1cmUgY29udGFpbmVyJ3MgcG9zaXRpb24gdG8gYmUgbGVmdCBvciByaWdodCAoZGVmYXVsdClcbiAgICBzaGFkb3dIb3N0LnN0eWxlW2hvcml6b250YWxQcm9wZXJ0eV0gPSBcIjIwcHhcIjtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLndpZHRoID0gXCIwXCI7XG4gICAgc2hhZG93SG9zdC5zdHlsZS5oZWlnaHQgPSBcIjBcIjtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLnpJbmRleCA9IFwiOTk5OTlcIjtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvd0hvc3QpO1xuICAgIGxldCBzaGFkb3dSb290O1xuICAgIGxldCBwcmVmaXggPSBcIlwiO1xuICAgIGlmIChzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdykge1xuICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe1xuICAgICAgICAgICAgbW9kZTogXCJvcGVuXCJcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgYXR0YWNoU2hhZG93IGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnRcbiAgICAgICAgLy8gdGhlIFNoYWRvdyBET00sIHdlIG5lZWQgdG8gcHJlZml4IGFsbCB0aGUgbmFtZXMgc28gdGhlcmVcbiAgICAgICAgLy8gd2lsbCBiZSBubyBjb25mbGljdHNcbiAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3Q7XG4gICAgICAgIHByZWZpeCA9IFwiX19uZXh0LWJ1aWxkLXdhdGNoZXItXCI7XG4gICAgfVxuICAgIC8vIENvbnRhaW5lclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lcihwcmVmaXgpO1xuICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAvLyBDU1NcbiAgICBjb25zdCBjc3MgPSBjcmVhdGVDc3MocHJlZml4LCB7XG4gICAgICAgIGhvcml6b250YWxQcm9wZXJ0eSxcbiAgICAgICAgdmVydGljYWxQcm9wZXJ0eVxuICAgIH0pO1xuICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoY3NzKTtcbiAgICAvLyBTdGF0ZVxuICAgIGxldCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBsZXQgaXNCdWlsZGluZyA9IGZhbHNlO1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIC8vIEhhbmRsZSBldmVudHNcbiAgICAoMCwgX3dlYnNvY2tldC5hZGRNZXNzYWdlTGlzdGVuZXIpKChvYmopPT57XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBoYW5kbGVNZXNzYWdlKG9iaik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2hvdygpIHtcbiAgICAgICAgdGltZW91dElkICYmIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICBpc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICBpc0J1aWxkaW5nID0gdHJ1ZTtcbiAgICAgICAgdXBkYXRlQ29udGFpbmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgICAgIGlzQnVpbGRpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGZhZGUgb3V0IHRyYW5zaXRpb24gdG8gY29tcGxldGVcbiAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB1cGRhdGVDb250YWluZXIoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgdXBkYXRlQ29udGFpbmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2Uob2JqKSB7XG4gICAgICAgIGlmICghKFwiYWN0aW9uXCIgaW4gb2JqKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2VcbiAgICAgICAgc3dpdGNoKG9iai5hY3Rpb24pe1xuICAgICAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTERJTkc6XG4gICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTFQ6XG4gICAgICAgICAgICBjYXNlIF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TWU5DOlxuICAgICAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuRklOSVNIX0JVSUxESU5HOlxuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b2dnbGVDYWxsYmFjayh7XG4gICAgICAgIHNob3csXG4gICAgICAgIGhpZGVcbiAgICB9KTtcbiAgICBmdW5jdGlvbiB1cGRhdGVDb250YWluZXIoKSB7XG4gICAgICAgIGlmIChpc0J1aWxkaW5nKSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcIlwiICsgcHJlZml4ICsgXCJidWlsZGluZ1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiXCIgKyBwcmVmaXggKyBcImJ1aWxkaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiXCIgKyBwcmVmaXggKyBcInZpc2libGVcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIlwiICsgcHJlZml4ICsgXCJ2aXNpYmxlXCIpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlQ29udGFpbmVyKHByZWZpeCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgY29udGFpbmVyLmlkID0gXCJcIiArIHByZWZpeCArIFwiY29udGFpbmVyXCI7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9ICdcXG4gICAgPGRpdiBpZD1cIicgKyBwcmVmaXggKyAnaWNvbi13cmFwcGVyXCI+XFxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDIyNiAyMDBcIj5cXG4gICAgICAgIDxkZWZzPlxcbiAgICAgICAgICA8bGluZWFyR3JhZGllbnRcXG4gICAgICAgICAgICB4MT1cIjExNC43MjA3NzUlXCJcXG4gICAgICAgICAgICB5MT1cIjE4MS4yODMyNDUlXCJcXG4gICAgICAgICAgICB4Mj1cIjM5LjUzOTkzMDYlXCJcXG4gICAgICAgICAgICB5Mj1cIjEwMCVcIlxcbiAgICAgICAgICAgIGlkPVwiJyArIHByZWZpeCArICdsaW5lYXItZ3JhZGllbnRcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiMwMDAwMDBcIiBvZmZzZXQ9XCIwJVwiIC8+XFxuICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkZGRkZcIiBvZmZzZXQ9XCIxMDAlXCIgLz5cXG4gICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cXG4gICAgICAgIDwvZGVmcz5cXG4gICAgICAgIDxnIGlkPVwiJyArIHByZWZpeCArICdpY29uLWdyb3VwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ1cmwoIycgKyBwcmVmaXggKyAnbGluZWFyLWdyYWRpZW50KVwiIHN0cm9rZS13aWR0aD1cIjE4XCI+XFxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEzLDUuMDgyMTkxMTcgTDQuMjgzOTM4MDEsMTk3LjUgTDIyMS43MTYwNjIsMTk3LjUgTDExMyw1LjA4MjE5MTE3IFpcIiAvPlxcbiAgICAgICAgPC9nPlxcbiAgICAgIDwvc3ZnPlxcbiAgICA8L2Rpdj5cXG4gICc7XG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNzcyhwcmVmaXgsIHBhcmFtKSB7XG4gICAgbGV0IHsgaG9yaXpvbnRhbFByb3BlcnR5LCB2ZXJ0aWNhbFByb3BlcnR5IH0gPSBwYXJhbTtcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgY3NzLnRleHRDb250ZW50ID0gXCJcXG4gICAgI1wiICsgcHJlZml4ICsgXCJjb250YWluZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBcIiArIHZlcnRpY2FsUHJvcGVydHkgKyBcIjogMTBweDtcXG4gICAgICBcIiArIGhvcml6b250YWxQcm9wZXJ0eSArIFwiOiAzMHB4O1xcblxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xcbiAgICAgIGNvbG9yOiAjZmZmO1xcbiAgICAgIGZvbnQ6IGluaXRpYWw7XFxuICAgICAgY3Vyc29yOiBpbml0aWFsO1xcbiAgICAgIGxldHRlci1zcGFjaW5nOiBpbml0aWFsO1xcbiAgICAgIHRleHQtc2hhZG93OiBpbml0aWFsO1xcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsO1xcbiAgICAgIHZpc2liaWxpdHk6IGluaXRpYWw7XFxuXFxuICAgICAgcGFkZGluZzogN3B4IDEwcHggOHB4IDEwcHg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBib3gtc2hhZG93OiAwIDExcHggNDBweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcblxcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgZWFzZSwgXCIgKyB2ZXJ0aWNhbFByb3BlcnR5ICsgXCIgMC4xcyBlYXNlO1xcbiAgICAgIGFuaW1hdGlvbjogXCIgKyBwcmVmaXggKyBcImZhZGUtaW4gMC4xcyBlYXNlLWluLW91dDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lci5cIiArIHByZWZpeCArIFwidmlzaWJsZSB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lci5cIiArIHByZWZpeCArIFwiYnVpbGRpbmcge1xcbiAgICAgIFwiICsgdmVydGljYWxQcm9wZXJ0eSArIFwiOiAyMHB4O1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgIH1cXG5cXG4gICAgI1wiICsgcHJlZml4ICsgXCJpY29uLXdyYXBwZXIge1xcbiAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImljb24td3JhcHBlciA+IHN2ZyB7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB9XFxuXFxuICAgICNcIiArIHByZWZpeCArIFwiaWNvbi1ncm91cCB7XFxuICAgICAgYW5pbWF0aW9uOiBcIiArIHByZWZpeCArIFwic3Ryb2tlZGFzaCAxcyBlYXNlLWluLW91dCBib3RoIGluZmluaXRlO1xcbiAgICB9XFxuXFxuICAgIEBrZXlmcmFtZXMgXCIgKyBwcmVmaXggKyBcImZhZGUtaW4ge1xcbiAgICAgIGZyb20ge1xcbiAgICAgICAgXCIgKyB2ZXJ0aWNhbFByb3BlcnR5ICsgXCI6IDEwcHg7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgIH1cXG4gICAgICB0byB7XFxuICAgICAgICBcIiArIHZlcnRpY2FsUHJvcGVydHkgKyBcIjogMjBweDtcXG4gICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIEBrZXlmcmFtZXMgXCIgKyBwcmVmaXggKyBcInN0cm9rZWRhc2gge1xcbiAgICAgIDAlIHtcXG4gICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDAgMjI2O1xcbiAgICAgIH1cXG4gICAgICA4MCUsXFxuICAgICAgMTAwJSB7XFxuICAgICAgICBzdHJva2UtZGFzaGFycmF5OiA2NTkgMjI2O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgXCI7XG4gICAgcmV0dXJuIGNzcztcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV2LWJ1aWxkLXdhdGNoZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImluaXRpYWxpemVCdWlsZFdhdGNoZXIiLCJfaG90cmVsb2FkZXJ0eXBlcyIsInJlcXVpcmUiLCJfd2Vic29ja2V0IiwidG9nZ2xlQ2FsbGJhY2siLCJwb3NpdGlvbiIsInNoYWRvd0hvc3QiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ2ZXJ0aWNhbFByb3BlcnR5IiwiaG9yaXpvbnRhbFByb3BlcnR5Iiwic3BsaXQiLCJpZCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJ6SW5kZXgiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJzaGFkb3dSb290IiwicHJlZml4IiwiYXR0YWNoU2hhZG93IiwibW9kZSIsImNvbnRhaW5lciIsImNyZWF0ZUNvbnRhaW5lciIsImNzcyIsImNyZWF0ZUNzcyIsImlzVmlzaWJsZSIsImlzQnVpbGRpbmciLCJ0aW1lb3V0SWQiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJvYmoiLCJoYW5kbGVNZXNzYWdlIiwiZSIsInNob3ciLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVDb250YWluZXIiLCJoaWRlIiwic2V0VGltZW91dCIsImFjdGlvbiIsIkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUiIsIkJVSUxESU5HIiwiQlVJTFQiLCJTWU5DIiwiRklOSVNIX0JVSUxESU5HIiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5uZXJIVE1MIiwicGFyYW0iLCJ0ZXh0Q29udGVudCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/dev-build-watcher.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js": /*!************************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js ***! \************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/**\nMIT License\n\nCopyright (c) 2015-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return formatWebpackMessages;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\"));\n// This file is based on https://github.com/facebook/create-react-app/blob/7b1a32be6ec9f99a6c9a3c66813f3ac09c4736b9/packages/react-dev-utils/formatWebpackMessages.js\n// It's been edited to remove chalk and CRA-specific logic\nconst friendlySyntaxErrorLabel = \"Syntax error:\";\nconst WEBPACK_BREAKING_CHANGE_POLYFILLS = \"\\n\\nBREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.\";\nfunction isLikelyASyntaxError(message) {\n return (0, _stripansi.default)(message).includes(friendlySyntaxErrorLabel);\n}\nlet hadMissingSassError = false;\n// Cleans up webpack error messages.\nfunction formatMessage(message, verbose, importTraceNote) {\n // TODO: Replace this once webpack 5 is stable\n if (typeof message === \"object\" && message.message) {\n const filteredModuleTrace = message.moduleTrace && message.moduleTrace.filter((trace)=>!/next-(middleware|client-pages|route|edge-function)-loader\\.js/.test(trace.originName));\n let body = message.message;\n const breakingChangeIndex = body.indexOf(WEBPACK_BREAKING_CHANGE_POLYFILLS);\n if (breakingChangeIndex >= 0) {\n body = body.slice(0, breakingChangeIndex);\n }\n message = (message.moduleName ? (0, _stripansi.default)(message.moduleName) + \"\\n\" : \"\") + (message.file ? (0, _stripansi.default)(message.file) + \"\\n\" : \"\") + body + (message.details && verbose ? \"\\n\" + message.details : \"\") + (filteredModuleTrace && filteredModuleTrace.length ? (importTraceNote || \"\\n\\nImport trace for requested module:\") + filteredModuleTrace.map((trace)=>\"\\n\" + trace.moduleName).join(\"\") : \"\") + (message.stack && verbose ? \"\\n\" + message.stack : \"\");\n }\n let lines = message.split(\"\\n\");\n // Strip Webpack-added headers off errors/warnings\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n lines = lines.filter((line)=>!/Module [A-z ]+\\(from/.test(line));\n // Transform parsing error into syntax error\n // TODO: move this to our ESLint formatter?\n lines = lines.map((line)=>{\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return friendlySyntaxErrorLabel + \" \" + errorMessage + \" (\" + errorLine + \":\" + errorColumn + \")\";\n });\n message = lines.join(\"\\n\");\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, \"\" + friendlySyntaxErrorLabel + \" $3 ($1:$2)\\n\");\n // Clean up export errors\n message = message.replace(/^.*export '(.+?)' was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$2'.\");\n message = message.replace(/^.*export 'default' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$2' does not contain a default export (imported as '$1').\");\n message = message.replace(/^.*export '(.+?)' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$3' (imported as '$2').\");\n lines = message.split(\"\\n\");\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === \"\") {\n lines.splice(1, 1);\n }\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].indexOf(\"Module not found: \") === 0) {\n lines = [\n lines[0],\n lines[1].replace(\"Error: \", \"\").replace(\"Module not found: Cannot find file:\", \"Cannot find file:\"),\n ...lines.slice(2)\n ];\n }\n // Add helpful message for users trying to use Sass for the first time\n if (lines[1] && lines[1].match(/Cannot find module.+sass/)) {\n // ./file.module.scss (<>) => ./file.module.scss\n const firstLine = lines[0].split(\"!\");\n lines[0] = firstLine[firstLine.length - 1];\n lines[1] = \"To use Next.js' built-in Sass support, you first need to install `sass`.\\n\";\n lines[1] += \"Run `npm i sass` or `yarn add sass` inside your workspace.\\n\";\n lines[1] += \"\\nLearn more: https://nextjs.org/docs/messages/install-sass\";\n // dispose of unhelpful stack trace\n lines = lines.slice(0, 2);\n hadMissingSassError = true;\n } else if (hadMissingSassError && message.match(/(sass-loader|resolve-url-loader: CSS error)/)) {\n // dispose of unhelpful stack trace following missing sass module\n lines = [];\n }\n if (!verbose) {\n message = lines.join(\"\\n\");\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by Webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, \"\") // at ... ...:x:y\n ;\n message = message.replace(/^\\s*at\\s(\\n|$)/gm, \"\") // at \n ;\n message = message.replace(/File was processed with these loaders:\\n(.+[\\\\/](next[\\\\/]dist[\\\\/].+|@next[\\\\/]react-refresh-utils[\\\\/]loader)\\.js\\n)*You may need an additional loader to handle the result of these loaders.\\n/g, \"\");\n lines = message.split(\"\\n\");\n }\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr)=>index === 0 || line.trim() !== \"\" || line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join(\"\\n\");\n return message.trim();\n}\nfunction formatWebpackMessages(json, verbose) {\n const formattedErrors = json.errors.map((message)=>{\n const isUnknownNextFontError = message.message.includes(\"An error occured in `next/font`.\");\n return formatMessage(message, isUnknownNextFontError || verbose);\n });\n const formattedWarnings = json.warnings.map((message)=>{\n return formatMessage(message, verbose);\n });\n // Reorder errors to put the most relevant ones first.\n let reactServerComponentsError = -1;\n for(let i = 0; i < formattedErrors.length; i++){\n const error = formattedErrors[i];\n if (error.includes(\"ReactServerComponentsError\")) {\n reactServerComponentsError = i;\n break;\n }\n }\n // Move the reactServerComponentsError to the top if it exists\n if (reactServerComponentsError !== -1) {\n const error = formattedErrors.splice(reactServerComponentsError, 1);\n formattedErrors.unshift(error[0]);\n }\n const result = {\n ...json,\n errors: formattedErrors,\n warnings: formattedWarnings\n };\n if (!verbose && result.errors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n result.warnings = [];\n }\n return result;\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=format-webpack-messages.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9mb3JtYXQtd2VicGFjay1tZXNzYWdlcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxHQUFnQjtBQUNoQkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMsNEdBQXlDO0FBQ2xGLE1BQU1DLGFBQWEsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsNEZBQStCO0FBQ25HLHFLQUFxSztBQUNySywwREFBMEQ7QUFDMUQsTUFBTUcsMkJBQTJCO0FBQ2pDLE1BQU1DLG9DQUFvQztBQUMxQyxTQUFTQyxxQkFBcUJDLE9BQU87SUFDakMsT0FBTyxDQUFDLEdBQUdMLFdBQVdNLE9BQU8sRUFBRUQsU0FBU0UsUUFBUSxDQUFDTDtBQUNyRDtBQUNBLElBQUlNLHNCQUFzQjtBQUMxQixvQ0FBb0M7QUFDcEMsU0FBU0MsY0FBY0osT0FBTyxFQUFFSyxPQUFPLEVBQUVDLGVBQWU7SUFDcEQsOENBQThDO0lBQzlDLElBQUksT0FBT04sWUFBWSxZQUFZQSxRQUFRQSxPQUFPLEVBQUU7UUFDaEQsTUFBTU8sc0JBQXNCUCxRQUFRUSxXQUFXLElBQUlSLFFBQVFRLFdBQVcsQ0FBQ0MsTUFBTSxDQUFDLENBQUNDLFFBQVEsQ0FBQyxnRUFBZ0VDLElBQUksQ0FBQ0QsTUFBTUUsVUFBVTtRQUM3SyxJQUFJQyxPQUFPYixRQUFRQSxPQUFPO1FBQzFCLE1BQU1jLHNCQUFzQkQsS0FBS0UsT0FBTyxDQUFDakI7UUFDekMsSUFBSWdCLHVCQUF1QixHQUFHO1lBQzFCRCxPQUFPQSxLQUFLRyxLQUFLLENBQUMsR0FBR0Y7UUFDekI7UUFDQWQsVUFBVSxD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UVAsZUFBZSxDQUFDTSxFQUFFO1FBQ2hDLElBQUlDLE1BQU03QyxRQUFRLENBQUMsK0JBQStCO1lBQzlDMkMsNkJBQTZCQztZQUM3QjtRQUNKO0lBQ0o7SUFDQSw4REFBOEQ7SUFDOUQsSUFBSUQsK0JBQStCLENBQUMsR0FBRztRQUNuQyxNQUFNRSxRQUFRUCxnQkFBZ0JOLE1BQU0sQ0FBQ1csNEJBQTRCO1FBQ2pFTCxnQkFBZ0JRLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDLEVBQUU7SUFDcEM7SUFDQSxNQUFNRSxTQUFTO1FBQ1gsR0FBR1YsSUFBSTtRQUNQRSxRQUFRRDtRQUNSSSxVQUFVRDtJQUNkO0lBQ0EsSUFBSSxDQUFDdEMsV0FBVzRDLE9BQU9SLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDbkQsdUJBQXVCO1FBQ3RELGtEQUFrRDtRQUNsRGtELE9BQU9SLE1BQU0sR0FBR1EsT0FBT1IsTUFBTSxDQUFDaEMsTUFBTSxDQUFDVjtRQUNyQ2tELE9BQU9MLFFBQVEsR0FBRyxFQUFFO0lBQ3hCO0lBQ0EsT0FBT0s7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPN0QsUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDa0QsVUFBVSxLQUFLLGFBQWE7SUFDcktqRSxPQUFPQyxjQUFjLENBQUNDLFFBQVFhLE9BQU8sRUFBRSxjQUFjO1FBQUVaLE9BQU87SUFBSztJQUNuRUgsT0FBT2tFLE1BQU0sQ0FBQ2hFLFFBQVFhLE9BQU8sRUFBRWI7SUFDL0JpRSxPQUFPakUsT0FBTyxHQUFHQSxRQUFRYSxPQUFPO0FBQ2xDLEVBRUEsbURBQW1EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9lcnJvci1vdmVybGF5L2Zvcm1hdC13ZWJwYWNrLW1lc3NhZ2VzLmpzPzc1ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcblNPRlRXQVJFLlxuKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRXZWJwYWNrTWVzc2FnZXM7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX3N0cmlwYW5zaSA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9zdHJpcC1hbnNpXCIpKTtcbi8vIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcC9ibG9iLzdiMWEzMmJlNmVjOWY5OWE2YzlhM2M2NjgxM2YzYWMwOWM0NzM2YjkvcGFja2FnZXMvcmVhY3QtZGV2LXV0aWxzL2Zvcm1hdFdlYnBhY2tNZXNzYWdlcy5qc1xuLy8gSXQncyBiZWVuIGVkaXRlZCB0byByZW1vdmUgY2hhbGsgYW5kIENSQS1zcGVjaWZpYyBsb2dpY1xuY29uc3QgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsID0gXCJTeW50YXggZXJyb3I6XCI7XG5jb25zdCBXRUJQQUNLX0JSRUFLSU5HX0NIQU5HRV9QT0xZRklMTFMgPSBcIlxcblxcbkJSRUFLSU5HIENIQU5HRTogd2VicGFjayA8IDUgdXNlZCB0byBpbmNsdWRlIHBvbHlmaWxscyBmb3Igbm9kZS5qcyBjb3JlIG1vZHVsZXMgYnkgZGVmYXVsdC5cIjtcbmZ1bmN0aW9uIGlzTGlrZWx5QVN5bnRheEVycm9yKG1lc3NhZ2UpIHtcbiAgICByZXR1cm4gKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkobWVzc2FnZSkuaW5jbHVkZXMoZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsKTtcbn1cbmxldCBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gZmFsc2U7XG4vLyBDbGVhbnMgdXAgd2VicGFjayBlcnJvciBtZXNzYWdlcy5cbmZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgdmVyYm9zZSwgaW1wb3J0VHJhY2VOb3RlKSB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSB0aGlzIG9uY2Ugd2VicGFjayA1IGlzIHN0YWJsZVxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJvYmplY3RcIiAmJiBtZXNzYWdlLm1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRNb2R1bGVUcmFjZSA9IG1lc3NhZ2UubW9kdWxlVHJhY2UgJiYgbWVzc2FnZS5tb2R1bGVUcmFjZS5maWx0ZXIoKHRyYWNlKT0+IS9uZXh0LShtaWRkbGV3YXJlfGNsaWVudC1wYWdlc3xyb3V0ZXxlZGdlLWZ1bmN0aW9uKS1sb2FkZXJcXC5qcy8udGVzdCh0cmFjZS5vcmlnaW5OYW1lKSk7XG4gICAgICAgIGxldCBib2R5ID0gbWVzc2FnZS5tZXNzYWdlO1xuICAgICAgICBjb25zdCBicmVha2luZ0NoYW5nZUluZGV4ID0gYm9keS5pbmRleE9mKFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyk7XG4gICAgICAgIGlmIChicmVha2luZ0NoYW5nZUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGJvZHkgPSBib2R5LnNsaWNlKDAsIGJyZWFraW5nQ2hhbmdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2UgPSAobWVzc2FnZS5tb2R1bGVOYW1lID8gKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkobWVzc2FnZS5tb2R1bGVOYW1lKSArIFwiXFxuXCIgOiBcIlwiKSArIChtZXNzYWdlLmZpbGUgPyAoMCwgX3N0cmlwYW5zaS5kZWZhdWx0KShtZXNzYWdlLmZpbGUpICsgXCJcXG5cIiA6IFwiXCIpICsgYm9keSArIChtZXNzYWdlLmRldGFpbHMgJiYgdmVyYm9zZSA/IFwiXFxuXCIgKyBtZXNzYWdlLmRldGFpbHMgOiBcIlwiKSArIChmaWx0ZXJlZE1vZHVsZVRyYWNlICYmIGZpbHRlcmVkTW9kdWxlVHJhY2UubGVuZ3RoID8gKGltcG9ydFRyYWNlTm90ZSB8fCBcIlxcblxcbkltcG9ydCB0cmFjZSBmb3IgcmVxdWVzdGVkIG1vZHVsZTpcIikgKyBmaWx0ZXJlZE1vZHVsZVRyYWNlLm1hcCgodHJhY2UpPT5cIlxcblwiICsgdHJhY2UubW9kdWxlTmFtZSkuam9pbihcIlwiKSA6IFwiXCIpICsgKG1lc3NhZ2Uuc3RhY2sgJiYgdmVyYm9zZSA/IFwiXFxuXCIgKyBtZXNzYWdlLnN0YWNrIDogXCJcIik7XG4gICAgfVxuICAgIGxldCBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoXCJcXG5cIik7XG4gICAgLy8gU3RyaXAgV2VicGFjay1hZGRlZCBoZWFkZXJzIG9mZiBlcnJvcnMvd2FybmluZ3NcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2Jsb2IvbWFzdGVyL2xpYi9Nb2R1bGVFcnJvci5qc1xuICAgIGxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lKT0+IS9Nb2R1bGUgW0EteiBdK1xcKGZyb20vLnRlc3QobGluZSkpO1xuICAgIC8vIFRyYW5zZm9ybSBwYXJzaW5nIGVycm9yIGludG8gc3ludGF4IGVycm9yXG4gICAgLy8gVE9ETzogbW92ZSB0aGlzIHRvIG91ciBFU0xpbnQgZm9ybWF0dGVyP1xuICAgIGxpbmVzID0gbGluZXMubWFwKChsaW5lKT0+e1xuICAgICAgICBjb25zdCBwYXJzaW5nRXJyb3IgPSAvTGluZSAoXFxkKyk6KD86KFxcZCspOik/XFxzKlBhcnNpbmcgZXJyb3I6ICguKykkLy5leGVjKGxpbmUpO1xuICAgICAgICBpZiAoIXBhcnNpbmdFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgWywgZXJyb3JMaW5lLCBlcnJvckNvbHVtbiwgZXJyb3JNZXNzYWdlXSA9IHBhcnNpbmdFcnJvcjtcbiAgICAgICAgcmV0dXJuIGZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbCArIFwiIFwiICsgZXJyb3JNZXNzYWdlICsgXCIgKFwiICsgZXJyb3JMaW5lICsgXCI6XCIgKyBlcnJvckNvbHVtbiArIFwiKVwiO1xuICAgIH0pO1xuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIC8vIFNtb29zaCBzeW50YXggZXJyb3JzIChjb21tb25seSBmb3VuZCBpbiBDU1MpXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvU3ludGF4RXJyb3JcXHMrXFwoKFxcZCspOihcXGQrKVxcKVxccyooLis/KVxcbi9nLCBcIlwiICsgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsICsgXCIgJDMgKCQxOiQyKVxcblwiKTtcbiAgICAvLyBDbGVhbiB1cCBleHBvcnQgZXJyb3JzXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICcoLis/KScgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLCBcIkF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMScgaXMgbm90IGV4cG9ydGVkIGZyb20gJyQyJy5cIik7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICdkZWZhdWx0JyBcXChpbXBvcnRlZCBhcyAnKC4rPyknXFwpIHdhcyBub3QgZm91bmQgaW4gJyguKz8pJy4qJC9nbSwgXCJBdHRlbXB0ZWQgaW1wb3J0IGVycm9yOiAnJDInIGRvZXMgbm90IGNvbnRhaW4gYSBkZWZhdWx0IGV4cG9ydCAoaW1wb3J0ZWQgYXMgJyQxJykuXCIpO1xuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL14uKmV4cG9ydCAnKC4rPyknIFxcKGltcG9ydGVkIGFzICcoLis/KSdcXCkgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLCBcIkF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMScgaXMgbm90IGV4cG9ydGVkIGZyb20gJyQzJyAoaW1wb3J0ZWQgYXMgJyQyJykuXCIpO1xuICAgIGxpbmVzID0gbWVzc2FnZS5zcGxpdChcIlxcblwiKTtcbiAgICAvLyBSZW1vdmUgbGVhZGluZyBuZXdsaW5lXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDIgJiYgbGluZXNbMV0udHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSgxLCAxKTtcbiAgICB9XG4gICAgLy8gQ2xlYW5zIHVwIHZlcmJvc2UgXCJtb2R1bGUgbm90IGZvdW5kXCIgbWVzc2FnZXMgZm9yIGZpbGVzIGFuZCBwYWNrYWdlcy5cbiAgICBpZiAobGluZXNbMV0gJiYgbGluZXNbMV0uaW5kZXhPZihcIk1vZHVsZSBub3QgZm91bmQ6IFwiKSA9PT0gMCkge1xuICAgICAgICBsaW5lcyA9IFtcbiAgICAgICAgICAgIGxpbmVzWzBdLFxuICAgICAgICAgICAgbGluZXNbMV0ucmVwbGFjZShcIkVycm9yOiBcIiwgXCJcIikucmVwbGFjZShcIk1vZHVsZSBub3QgZm91bmQ6IENhbm5vdCBmaW5kIGZpbGU6XCIsIFwiQ2Fubm90IGZpbmQgZmlsZTpcIiksXG4gICAgICAgICAgICAuLi5saW5lcy5zbGljZSgyKVxuICAgICAgICBdO1xuICAgIH1cbiAgICAvLyBBZGQgaGVscGZ1bCBtZXNzYWdlIGZvciB1c2VycyB0cnlpbmcgdG8gdXNlIFNhc3MgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgaWYgKGxpbmVzWzFdICYmIGxpbmVzWzFdLm1hdGNoKC9DYW5ub3QgZmluZCBtb2R1bGUuK3Nhc3MvKSkge1xuICAgICAgICAvLyAuL2ZpbGUubW9kdWxlLnNjc3MgKDw8bG9hZGVyIGluZm8+PikgPT4gLi9maWxlLm1vZHVsZS5zY3NzXG4gICAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGxpbmVzWzBdLnNwbGl0KFwiIVwiKTtcbiAgICAgICAgbGluZXNbMF0gPSBmaXJzdExpbmVbZmlyc3RMaW5lLmxlbmd0aCAtIDFdO1xuICAgICAgICBsaW5lc1sxXSA9IFwiVG8gdXNlIE5leHQuanMnIGJ1aWx0LWluIFNhc3Mgc3VwcG9ydCwgeW91IGZpcnN0IG5lZWQgdG8gaW5zdGFsbCBgc2Fzc2AuXFxuXCI7XG4gICAgICAgIGxpbmVzWzFdICs9IFwiUnVuIGBucG0gaSBzYXNzYCBvciBgeWFybiBhZGQgc2Fzc2AgaW5zaWRlIHlvdXIgd29ya3NwYWNlLlxcblwiO1xuICAgICAgICBsaW5lc1sxXSArPSBcIlxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2luc3RhbGwtc2Fzc1wiO1xuICAgICAgICAvLyBkaXNwb3NlIG9mIHVuaGVscGZ1bCBzdGFjayB0cmFjZVxuICAgICAgICBsaW5lcyA9IGxpbmVzLnNsaWNlKDAsIDIpO1xuICAgICAgICBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhhZE1pc3NpbmdTYXNzRXJyb3IgJiYgbWVzc2FnZS5tYXRjaCgvKHNhc3MtbG9hZGVyfHJlc29sdmUtdXJsLWxvYWRlcjogQ1NTIGVycm9yKS8pKSB7XG4gICAgICAgIC8vIGRpc3Bvc2Ugb2YgdW5oZWxwZnVsIHN0YWNrIHRyYWNlIGZvbGxvd2luZyBtaXNzaW5nIHNhc3MgbW9kdWxlXG4gICAgICAgIGxpbmVzID0gW107XG4gICAgfVxuICAgIGlmICghdmVyYm9zZSkge1xuICAgICAgICBtZXNzYWdlID0gbGluZXMuam9pbihcIlxcblwiKTtcbiAgICAgICAgLy8gSW50ZXJuYWwgc3RhY2tzIGFyZSBnZW5lcmFsbHkgdXNlbGVzcyBzbyB3ZSBzdHJpcCB0aGVtLi4uIHdpdGggdGhlXG4gICAgICAgIC8vIGV4Y2VwdGlvbiBvZiBzdGFja3MgY29udGFpbmluZyBgd2VicGFjazpgIGJlY2F1c2UgdGhleSdyZSBub3JtYWxseVxuICAgICAgICAvLyBmcm9tIHVzZXIgY29kZSBnZW5lcmF0ZWQgYnkgV2VicGFjay4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwL3B1bGwvMTA1MFxuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eXFxzKmF0XFxzKCg/IXdlYnBhY2s6KS4pKjpcXGQrOlxcZCtbXFxzKV0qKFxcbnwkKS9nbSwgXCJcIikgLy8gYXQgLi4uIC4uLjp4OnlcbiAgICAgICAgO1xuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eXFxzKmF0XFxzPGFub255bW91cz4oXFxufCQpL2dtLCBcIlwiKSAvLyBhdCA8YW5vbnltb3VzPlxuICAgICAgICA7XG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL0ZpbGUgd2FzIHByb2Nlc3NlZCB3aXRoIHRoZXNlIGxvYWRlcnM6XFxuKC4rW1xcXFwvXShuZXh0W1xcXFwvXWRpc3RbXFxcXC9dLit8QG5leHRbXFxcXC9dcmVhY3QtcmVmcmVzaC11dGlsc1tcXFxcL11sb2FkZXIpXFwuanNcXG4pKllvdSBtYXkgbmVlZCBhbiBhZGRpdGlvbmFsIGxvYWRlciB0byBoYW5kbGUgdGhlIHJlc3VsdCBvZiB0aGVzZSBsb2FkZXJzLlxcbi9nLCBcIlwiKTtcbiAgICAgICAgbGluZXMgPSBtZXNzYWdlLnNwbGl0KFwiXFxuXCIpO1xuICAgIH1cbiAgICAvLyBSZW1vdmUgZHVwbGljYXRlZCBuZXdsaW5lc1xuICAgIGxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lLCBpbmRleCwgYXJyKT0+aW5kZXggPT09IDAgfHwgbGluZS50cmltKCkgIT09IFwiXCIgfHwgbGluZS50cmltKCkgIT09IGFycltpbmRleCAtIDFdLnRyaW0oKSk7XG4gICAgLy8gUmVhc3NlbWJsZSB0aGUgbWVzc2FnZVxuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiBtZXNzYWdlLnRyaW0oKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdFdlYnBhY2tNZXNzYWdlcyhqc29uLCB2ZXJib3NlKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRXJyb3JzID0ganNvbi5lcnJvcnMubWFwKChtZXNzYWdlKT0+e1xuICAgICAgICBjb25zdCBpc1Vua25vd25OZXh0Rm9udEVycm9yID0gbWVzc2FnZS5tZXNzYWdlLmluY2x1ZGVzKFwiQW4gZXJyb3Igb2NjdXJlZCBpbiBgbmV4dC9mb250YC5cIik7XG4gICAgICAgIHJldHVybiBmb3JtYXRNZXNzYWdlKG1lc3NhZ2UsIGlzVW5rbm93bk5leHRGb250RXJyb3IgfHwgdmVyYm9zZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0dGVkV2FybmluZ3MgPSBqc29uLndhcm5pbmdzLm1hcCgobWVzc2FnZSk9PntcbiAgICAgICAgcmV0dXJuIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgdmVyYm9zZSk7XG4gICAgfSk7XG4gICAgLy8gUmVvcmRlciBlcnJvcnMgdG8gcHV0IHRoZSBtb3N0IHJlbGV2YW50IG9uZXMgZmlyc3QuXG4gICAgbGV0IHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yID0gLTE7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZEVycm9ycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzW2ldO1xuICAgICAgICBpZiAoZXJyb3IuaW5jbHVkZXMoXCJSZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvclwiKSkge1xuICAgICAgICAgICAgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gTW92ZSB0aGUgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgdG8gdGhlIHRvcCBpZiBpdCBleGlzdHNcbiAgICBpZiAocmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzLnNwbGljZShyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciwgMSk7XG4gICAgICAgIGZvcm1hdHRlZEVycm9ycy51bnNoaWZ0KGVycm9yWzBdKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAuLi5qc29uLFxuICAgICAgICBlcnJvcnM6IGZvcm1hdHRlZEVycm9ycyxcbiAgICAgICAgd2FybmluZ3M6IGZvcm1hdHRlZFdhcm5pbmdzXG4gICAgfTtcbiAgICBpZiAoIXZlcmJvc2UgJiYgcmVzdWx0LmVycm9ycy5zb21lKGlzTGlrZWx5QVN5bnRheEVycm9yKSkge1xuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN5bnRheCBlcnJvcnMsIHNob3cganVzdCB0aGVtLlxuICAgICAgICByZXN1bHQuZXJyb3JzID0gcmVzdWx0LmVycm9ycy5maWx0ZXIoaXNMaWtlbHlBU3ludGF4RXJyb3IpO1xuICAgICAgICByZXN1bHQud2FybmluZ3MgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImZvcm1hdFdlYnBhY2tNZXNzYWdlcyIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfc3RyaXBhbnNpIiwiXyIsImZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbCIsIldFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyIsImlzTGlrZWx5QVN5bnRheEVycm9yIiwibWVzc2FnZSIsImRlZmF1bHQiLCJpbmNsdWRlcyIsImhhZE1pc3NpbmdTYXNzRXJyb3IiLCJmb3JtYXRNZXNzYWdlIiwidmVyYm9zZSIsImltcG9ydFRyYWNlTm90ZSIsImZpbHRlcmVkTW9kdWxlVHJhY2UiLCJtb2R1bGVUcmFjZSIsImZpbHRlciIsInRyYWNlIiwidGVzdCIsIm9yaWdpbk5hbWUiLCJib2R5IiwiYnJlYWtpbmdDaGFuZ2VJbmRleCIsImluZGV4T2YiLCJzbGljZSIsIm1vZHVsZU5hbWUiLCJmaWxlIiwiZGV0YWlscyIsImxlbmd0aCIsIm1hcCIsImpvaW4iLCJzdGFjayIsImxpbmVzIiwic3BsaXQiLCJsaW5lIiwicGFyc2luZ0Vycm9yIiwiZXhlYyIsImVycm9yTGluZSIsImVycm9yQ29sdW1uIiwiZXJyb3JNZXNzYWdlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpY2UiLCJtYXRjaCIsImZpcnN0TGluZSIsImluZGV4IiwiYXJyIiwianNvbiIsImZvcm1hdHRlZEVycm9ycyIsImVycm9ycyIsImlzVW5rbm93bk5leHRGb250RXJyb3IiLCJmb3JtYXR0ZWRXYXJuaW5ncyIsIndhcm5pbmdzIiwicmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IiLCJpIiwiZXJyb3IiLCJ1bnNoaWZ0IiwicmVzdWx0Iiwic29tZSIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js": /*!***************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js ***! \***************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("// TODO: Remove use of `any` type. Fix no-use-before-define violations.\n/* eslint-disable @typescript-eslint/no-use-before-define */ /**\n * MIT License\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */ // This file is a modified version of the Create React App HMR dev client that\n// can be found here:\n// https://github.com/facebook/create-react-app/blob/v3.4.1/packages/react-dev-utils/webpackHotDevClient.js\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _client = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _websocket = __webpack_require__(/*! ./websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./format-webpack-messages */ \"./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\"));\nconst _hotreloadertypes = __webpack_require__(/*! ../../../server/dev/hot-reloader-types */ \"./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nwindow.__nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet hadRuntimeError = false;\nlet customHmrEventHandler;\nlet MODE = \"webpack\";\nfunction connect(mode) {\n MODE = mode;\n (0, _client.register)();\n (0, _websocket.addMessageListener)((payload)=>{\n if (!(\"action\" in payload)) {\n return;\n }\n try {\n processMessage(payload);\n } catch (err) {\n var _err_stack;\n console.warn(\"[HMR] Invalid message: \" + payload + \"\\n\" + ((_err_stack = err == null ? void 0 : err.stack) != null ? _err_stack : \"\"));\n }\n });\n return {\n subscribeToHmrEvent (handler) {\n customHmrEventHandler = handler;\n },\n onUnrecoverableError () {\n hadRuntimeError = true;\n }\n };\n}\n// Remember some state related to hot module replacement.\nvar isFirstCompilation = true;\nvar mostRecentCompilationHash = null;\nvar hasCompileErrors = false;\nfunction clearOutdatedErrors() {\n // Clean up outdated compile errors, if any.\n if (typeof console !== \"undefined\" && typeof console.clear === \"function\") {\n if (hasCompileErrors) {\n console.clear();\n }\n }\n}\n// Successful compilation.\nfunction handleSuccess(updatedModules) {\n clearOutdatedErrors();\n if (MODE === \"webpack\") {\n const isHotUpdate = !isFirstCompilation || window.__NEXT_DATA__.page !== \"/_error\" && isUpdateAvailable();\n isFirstCompilation = false;\n hasCompileErrors = false;\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n } else {\n onFastRefresh(updatedModules);\n (0, _client.onBuildOk)();\n }\n}\n// Compilation with warnings (e.g. ESLint).\nfunction handleWarnings(warnings) {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation;\n isFirstCompilation = false;\n hasCompileErrors = false;\n function printWarnings() {\n // Print warnings to the console.\n const formatted = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n if (typeof console !== \"undefined\" && typeof console.warn === \"function\") {\n var _formatted_warnings;\n for(let i = 0; i < ((_formatted_warnings = formatted.warnings) == null ? void 0 : _formatted_warnings.length); i++){\n if (i === 5) {\n console.warn(\"There were more warnings in other files.\\n\" + \"You can find a complete log in the terminal.\");\n break;\n }\n console.warn((0, _stripansi.default)(formatted.warnings[i]));\n }\n }\n }\n printWarnings();\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n}\n// Compilation with errors (e.g. syntax error or missing modules).\nfunction handleErrors(errors) {\n clearOutdatedErrors();\n isFirstCompilation = false;\n hasCompileErrors = true;\n // \"Massage\" webpack messages.\n var formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n (0, _client.onBuildError)(formatted.errors[0]);\n // Also log them to the console.\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n for(var i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n}\nlet startLatency = undefined;\nfunction onBeforeFastRefresh(updatedModules) {\n if (updatedModules.length > 0) {\n // Only trigger a pending state if we have updates to apply\n // (cf. onFastRefresh)\n (0, _client.onBeforeRefresh)();\n }\n}\nfunction onFastRefresh(updatedModules) {\n if (updatedModules === void 0) updatedModules = [];\n (0, _client.onBuildOk)();\n if (updatedModules.length > 0) {\n // Only complete a pending state if we applied updates\n // (cf. onBeforeFastRefresh)\n (0, _client.onRefresh)();\n }\n if (startLatency) {\n const endLatency = Date.now();\n const latency = endLatency - startLatency;\n console.log(\"[Fast Refresh] done in \" + latency + \"ms\");\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-hmr-latency\",\n id: window.__nextDevClientId,\n startTime: startLatency,\n endTime: endLatency,\n page: window.location.pathname,\n updatedModules,\n // Whether the page (tab) was hidden at the time the event occurred.\n // This can impact the accuracy of the event's timing.\n isPageHidden: document.visibilityState === \"hidden\"\n }));\n if (self.__NEXT_HMR_LATENCY_CB) {\n self.__NEXT_HMR_LATENCY_CB(latency);\n }\n }\n}\n// There is a newer version of the code available.\nfunction handleAvailableHash(hash) {\n // Update last known compilation hash.\n mostRecentCompilationHash = hash;\n}\n// Handle messages from the server.\nfunction processMessage(obj) {\n if (!(\"action\" in obj)) {\n return;\n }\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n {\n startLatency = Date.now();\n console.log(\"[Fast Refresh] rebuilding\");\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n {\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors, warnings } = obj;\n const hasErrors = Boolean(errors && errors.length);\n if (hasErrors) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-error\",\n errorCount: errors.length,\n clientId: window.__nextDevClientId\n }));\n return handleErrors(errors);\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-warning\",\n warningCount: warnings.length,\n clientId: window.__nextDevClientId\n }));\n return handleWarnings(warnings);\n }\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-success\",\n clientId: window.__nextDevClientId\n }));\n return handleSuccess(obj.updatedModules);\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES:\n {\n window.location.reload();\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ERROR:\n {\n const { errorJSON } = obj;\n if (errorJSON) {\n const { message, stack } = JSON.parse(errorJSON);\n const error = new Error(message);\n error.stack = stack;\n handleErrors([\n error\n ]);\n }\n return;\n }\n default:\n {\n if (customHmrEventHandler) {\n customHmrEventHandler(obj);\n break;\n }\n break;\n }\n }\n}\n// Is there a newer version of this code available?\nfunction isUpdateAvailable() {\n /* globals __webpack_hash__ */ // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n return mostRecentCompilationHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.status() === \"idle\";\n}\nfunction afterApplyUpdates(fn) {\n if (canApplyUpdates()) {\n fn();\n } else {\n function handler(status) {\n if (status === \"idle\") {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.addStatusHandler(handler);\n }\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdates(onBeforeHotUpdate, onHotUpdateSuccess) {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n if (false) {}\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n (0, _client.onBuildOk)();\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || hadRuntimeError || !updatedModules) {\n if (err) {\n console.warn(\"[Fast Refresh] performing full reload\\n\\n\" + \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" + \"You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n\" + \"Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n\" + \"It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n\" + \"Fast Refresh requires at least one parent function component in your React tree.\");\n } else if (hadRuntimeError) {\n console.warn(\"[Fast Refresh] performing full reload because your application had an unrecoverable error\");\n }\n performFullReload(err);\n return;\n }\n if (typeof onHotUpdateSuccess === \"function\") {\n // Maybe we want to do something.\n onHotUpdateSuccess(updatedModules);\n }\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n // However, this time, don't trigger a pending refresh state.\n tryApplyUpdates(updatedModules.length > 0 ? undefined : onBeforeHotUpdate, updatedModules.length > 0 ? _client.onBuildOk : onHotUpdateSuccess);\n } else {\n (0, _client.onBuildOk)();\n if (false) {}\n }\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (!updatedModules) {\n return null;\n }\n if (typeof onBeforeHotUpdate === \"function\") {\n onBeforeHotUpdate(updatedModules);\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\nfunction performFullReload(err) {\n const stackTrace = err && (err.stack && err.stack.split(\"\\n\").slice(0, 5).join(\"\\n\") || err.message || err + \"\");\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-full-reload\",\n stackTrace,\n hadRuntimeError: !!hadRuntimeError\n }));\n window.location.reload();\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=hot-dev-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9ob3QtZGV2LWNsaWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx1RUFBdUU7QUFDdkUsMERBQTBELEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQjVELEdBQUcsOEVBQThFO0FBQ2xGLHFCQUFxQjtBQUNyQiwyR0FBMkc7QUFDOUY7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMsNEdBQXlDO0FBQ2xGLE1BQU1DLFVBQVVELG1CQUFPQSxDQUFDLHdJQUF3RDtBQUNoRixNQUFNRSxhQUFhLFdBQVcsR0FBR0gseUJBQXlCSSxDQUFDLENBQUNILG1CQUFPQSxDQUFDLDRGQUErQjtBQUNuRyxNQUFNSSxhQUFhSixtQkFBT0EsQ0FBQyxtRkFBYTtBQUN4QyxNQUFNSyx5QkFBeUIsV0FBVyxHQUFHTix5QkFBeUJJLENBQUMsQ0FBQ0gsbUJBQU9BLENBQUMsK0dBQTJCO0FBQzNHLE1BQU1NLG9CQUFvQk4sbUJBQU9BLENBQUMseUdBQXdDO0FBQzFFTyxPQUFPQyxpQkFBaUIsR0FBR0MsS0FBS0MsS0FBSyxDQUFDRCxLQUFLRSxNQUFNLEtBQUssTUFBTUMsS0FBS0MsR0FBRztBQUNwRSxJQUFJQyxrQkFBa0I7QUFDdEIsSUFBSUM7QUFDSixJQUFJQyxPQUFPO0FBQ1gsU0FBU2xCLFFBQVFtQixJQUFJO0lBQ2pCRCxPQUFPQztJQUNOLElBQUdoQixRQUFRaUIsUUFBUTtJQUNuQixJQUFHZCxXQUFXZSxrQkFBa0IsRUFBRSxDQUFDQztRQUNoQyxJQUFJLENBQUUsYUFBWUEsT0FBTSxHQUFJO1lBQ3hCO1FBQ0o7UUFDQSxJQUFJO1lBQ0FDLGVBQWVEO1FBQ25CLEVBQUUsT0FBT0UsS0FB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QUMxQixNQUFNaUcsYUFBYWpHLE9BQVFBLENBQUFBLElBQUlJLEtBQUssSUFBSUosSUFBSUksS0FBSyxDQUFDOEYsS0FBSyxDQUFDLE1BQU1DLEtBQUssQ0FBQyxHQUFHLEdBQUdDLElBQUksQ0FBQyxTQUFTcEcsSUFBSThFLE9BQU8sSUFBSTlFLE1BQU0sRUFBQztJQUM3RyxJQUFHbEIsV0FBV2lFLFdBQVcsRUFBRUMsS0FBS0MsU0FBUyxDQUFDO1FBQ3ZDQyxPQUFPO1FBQ1ArQztRQUNBekcsaUJBQWlCLENBQUMsQ0FBQ0E7SUFDdkI7SUFDQVAsT0FBT3FFLFFBQVEsQ0FBQ3FCLE1BQU07QUFDMUI7QUFFQSxJQUFJLENBQUMsT0FBT3ZHLFFBQVF1RCxPQUFPLEtBQUssY0FBZSxPQUFPdkQsUUFBUXVELE9BQU8sS0FBSyxZQUFZdkQsUUFBUXVELE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3ZELFFBQVF1RCxPQUFPLENBQUMwRSxVQUFVLEtBQUssYUFBYTtJQUNyS25JLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXVELE9BQU8sRUFBRSxjQUFjO1FBQUV0RCxPQUFPO0lBQUs7SUFDbkVILE9BQU9vSSxNQUFNLENBQUNsSSxRQUFRdUQsT0FBTyxFQUFFdkQ7SUFDL0IrRyxPQUFPL0csT0FBTyxHQUFHQSxRQUFRdUQsT0FBTztBQUNsQyxFQUVBLDBDQUEwQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9ob3QtZGV2LWNsaWVudC5qcz8xNjAwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFJlbW92ZSB1c2Ugb2YgYGFueWAgdHlwZS4gRml4IG5vLXVzZS1iZWZvcmUtZGVmaW5lIHZpb2xhdGlvbnMuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8gLyoqXG4gKiBNSVQgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi8gLy8gVGhpcyBmaWxlIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQ3JlYXRlIFJlYWN0IEFwcCBITVIgZGV2IGNsaWVudCB0aGF0XG4vLyBjYW4gYmUgZm91bmQgaGVyZTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwL2Jsb2IvdjMuNC4xL3BhY2thZ2VzL3JlYWN0LWRldi11dGlscy93ZWJwYWNrSG90RGV2Q2xpZW50LmpzXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbm5lY3Q7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX2NsaWVudCA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtZGV2LW92ZXJsYXkvZGlzdC9jbGllbnRcIik7XG5jb25zdCBfc3RyaXBhbnNpID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIikpO1xuY29uc3QgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL3dlYnNvY2tldFwiKTtcbmNvbnN0IF9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Zvcm1hdC13ZWJwYWNrLW1lc3NhZ2VzXCIpKTtcbmNvbnN0IF9ob3RyZWxvYWRlcnR5cGVzID0gcmVxdWlyZShcIi4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzXCIpO1xud2luZG93Ll9fbmV4dERldkNsaWVudElkID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwICsgRGF0ZS5ub3coKSk7XG5sZXQgaGFkUnVudGltZUVycm9yID0gZmFsc2U7XG5sZXQgY3VzdG9tSG1yRXZlbnRIYW5kbGVyO1xubGV0IE1PREUgPSBcIndlYnBhY2tcIjtcbmZ1bmN0aW9uIGNvbm5lY3QobW9kZSkge1xuICAgIE1PREUgPSBtb2RlO1xuICAgICgwLCBfY2xpZW50LnJlZ2lzdGVyKSgpO1xuICAgICgwLCBfd2Vic29ja2V0LmFkZE1lc3NhZ2VMaXN0ZW5lcikoKHBheWxvYWQpPT57XG4gICAgICAgIGlmICghKFwiYWN0aW9uXCIgaW4gcGF5bG9hZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzc01lc3NhZ2UocGF5bG9hZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdmFyIF9lcnJfc3RhY2s7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbSE1SXSBJbnZhbGlkIG1lc3NhZ2U6IFwiICsgcGF5bG9hZCArIFwiXFxuXCIgKyAoKF9lcnJfc3RhY2sgPSBlcnIgPT0gbnVsbCA/IHZvaWQgMCA6IGVyci5zdGFjaykgIT0gbnVsbCA/IF9lcnJfc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdWJzY3JpYmVUb0htckV2ZW50IChoYW5kbGVyKSB7XG4gICAgICAgICAgICBjdXN0b21IbXJFdmVudEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB9LFxuICAgICAgICBvblVucmVjb3ZlcmFibGVFcnJvciAoKSB7XG4gICAgICAgICAgICBoYWRSdW50aW1lRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbn1cbi8vIFJlbWVtYmVyIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBob3QgbW9kdWxlIHJlcGxhY2VtZW50LlxudmFyIGlzRmlyc3RDb21waWxhdGlvbiA9IHRydWU7XG52YXIgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IG51bGw7XG52YXIgaGFzQ29tcGlsZUVycm9ycyA9IGZhbHNlO1xuZnVuY3Rpb24gY2xlYXJPdXRkYXRlZEVycm9ycygpIHtcbiAgICAvLyBDbGVhbiB1cCBvdXRkYXRlZCBjb21waWxlIGVycm9ycywgaWYgYW55LlxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5jbGVhciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmIChoYXNDb21waWxlRXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBTdWNjZXNzZnVsIGNvbXBpbGF0aW9uLlxuZnVuY3Rpb24gaGFuZGxlU3VjY2Vzcyh1cGRhdGVkTW9kdWxlcykge1xuICAgIGNsZWFyT3V0ZGF0ZWRFcnJvcnMoKTtcbiAgICBpZiAoTU9ERSA9PT0gXCJ3ZWJwYWNrXCIpIHtcbiAgICAgICAgY29uc3QgaXNIb3RVcGRhdGUgPSAhaXNGaXJzdENvbXBpbGF0aW9uIHx8IHdpbmRvdy5fX05FWFRfREFUQV9fLnBhZ2UgIT09IFwiL19lcnJvclwiICYmIGlzVXBkYXRlQXZhaWxhYmxlKCk7XG4gICAgICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgICAgICBoYXNDb21waWxlRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIC8vIEF0dGVtcHQgdG8gYXBwbHkgaG90IHVwZGF0ZXMgb3IgcmVsb2FkLlxuICAgICAgICBpZiAoaXNIb3RVcGRhdGUpIHtcbiAgICAgICAgICAgIHRyeUFwcGx5VXBkYXRlcyhvbkJlZm9yZUZhc3RSZWZyZXNoLCBvbkZhc3RSZWZyZXNoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRmFzdFJlZnJlc2godXBkYXRlZE1vZHVsZXMpO1xuICAgICAgICAoMCwgX2NsaWVudC5vbkJ1aWxkT2spKCk7XG4gICAgfVxufVxuLy8gQ29tcGlsYXRpb24gd2l0aCB3YXJuaW5ncyAoZS5nLiBFU0xpbnQpLlxuZnVuY3Rpb24gaGFuZGxlV2FybmluZ3Mod2FybmluZ3MpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgY29uc3QgaXNIb3RVcGRhdGUgPSAhaXNGaXJzdENvbXBpbGF0aW9uO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSBmYWxzZTtcbiAgICBmdW5jdGlvbiBwcmludFdhcm5pbmdzKCkge1xuICAgICAgICAvLyBQcmludCB3YXJuaW5ncyB0byB0aGUgY29uc29sZS5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gKDAsIF9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMuZGVmYXVsdCkoe1xuICAgICAgICAgICAgd2FybmluZ3M6IHdhcm5pbmdzLFxuICAgICAgICAgICAgZXJyb3JzOiBbXVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdmFyIF9mb3JtYXR0ZWRfd2FybmluZ3M7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgKChfZm9ybWF0dGVkX3dhcm5pbmdzID0gZm9ybWF0dGVkLndhcm5pbmdzKSA9PSBudWxsID8gdm9pZCAwIDogX2Zvcm1hdHRlZF93YXJuaW5ncy5sZW5ndGgpOyBpKyspe1xuICAgICAgICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlRoZXJlIHdlcmUgbW9yZSB3YXJuaW5ncyBpbiBvdGhlciBmaWxlcy5cXG5cIiArIFwiWW91IGNhbiBmaW5kIGEgY29tcGxldGUgbG9nIGluIHRoZSB0ZXJtaW5hbC5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkoZm9ybWF0dGVkLndhcm5pbmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpbnRXYXJuaW5ncygpO1xuICAgIC8vIEF0dGVtcHQgdG8gYXBwbHkgaG90IHVwZGF0ZXMgb3IgcmVsb2FkLlxuICAgIGlmIChpc0hvdFVwZGF0ZSkge1xuICAgICAgICB0cnlBcHBseVVwZGF0ZXMob25CZWZvcmVGYXN0UmVmcmVzaCwgb25GYXN0UmVmcmVzaCk7XG4gICAgfVxufVxuLy8gQ29tcGlsYXRpb24gd2l0aCBlcnJvcnMgKGUuZy4gc3ludGF4IGVycm9yIG9yIG1pc3NpbmcgbW9kdWxlcykuXG5mdW5jdGlvbiBoYW5kbGVFcnJvcnMoZXJyb3JzKSB7XG4gICAgY2xlYXJPdXRkYXRlZEVycm9ycygpO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSB0cnVlO1xuICAgIC8vIFwiTWFzc2FnZVwiIHdlYnBhY2sgbWVzc2FnZXMuXG4gICAgdmFyIGZvcm1hdHRlZCA9ICgwLCBfZm9ybWF0d2VicGFja21lc3NhZ2VzLmRlZmF1bHQpKHtcbiAgICAgICAgZXJyb3JzOiBlcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzOiBbXVxuICAgIH0pO1xuICAgIC8vIE9ubHkgc2hvdyB0aGUgZmlyc3QgZXJyb3IuXG4gICAgKDAsIF9jbGllbnQub25CdWlsZEVycm9yKShmb3JtYXR0ZWQuZXJyb3JzWzBdKTtcbiAgICAvLyBBbHNvIGxvZyB0aGVtIHRvIHRoZSBjb25zb2xlLlxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JtYXR0ZWQuZXJyb3JzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkoZm9ybWF0dGVkLmVycm9yc1tpXSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHJlbG9hZCBub3cuXG4gICAgLy8gV2Ugd2lsbCByZWxvYWQgb24gbmV4dCBzdWNjZXNzIGluc3RlYWQuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKGZvcm1hdHRlZC5lcnJvcnNbMF0pO1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmxldCBzdGFydExhdGVuY3kgPSB1bmRlZmluZWQ7XG5mdW5jdGlvbiBvbkJlZm9yZUZhc3RSZWZyZXNoKHVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgaWYgKHVwZGF0ZWRNb2R1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gT25seSB0cmlnZ2VyIGEgcGVuZGluZyBzdGF0ZSBpZiB3ZSBoYXZlIHVwZGF0ZXMgdG8gYXBwbHlcbiAgICAgICAgLy8gKGNmLiBvbkZhc3RSZWZyZXNoKVxuICAgICAgICAoMCwgX2NsaWVudC5vbkJlZm9yZVJlZnJlc2gpKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gb25GYXN0UmVmcmVzaCh1cGRhdGVkTW9kdWxlcykge1xuICAgIGlmICh1cGRhdGVkTW9kdWxlcyA9PT0gdm9pZCAwKSB1cGRhdGVkTW9kdWxlcyA9IFtdO1xuICAgICgwLCBfY2xpZW50Lm9uQnVpbGRPaykoKTtcbiAgICBpZiAodXBkYXRlZE1vZHVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBPbmx5IGNvbXBsZXRlIGEgcGVuZGluZyBzdGF0ZSBpZiB3ZSBhcHBsaWVkIHVwZGF0ZXNcbiAgICAgICAgLy8gKGNmLiBvbkJlZm9yZUZhc3RSZWZyZXNoKVxuICAgICAgICAoMCwgX2NsaWVudC5vblJlZnJlc2gpKCk7XG4gICAgfVxuICAgIGlmIChzdGFydExhdGVuY3kpIHtcbiAgICAgICAgY29uc3QgZW5kTGF0ZW5jeSA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGxhdGVuY3kgPSBlbmRMYXRlbmN5IC0gc3RhcnRMYXRlbmN5O1xuICAgICAgICBjb25zb2xlLmxvZyhcIltGYXN0IFJlZnJlc2hdIGRvbmUgaW4gXCIgKyBsYXRlbmN5ICsgXCJtc1wiKTtcbiAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiBcImNsaWVudC1obXItbGF0ZW5jeVwiLFxuICAgICAgICAgICAgaWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRMYXRlbmN5LFxuICAgICAgICAgICAgZW5kVGltZTogZW5kTGF0ZW5jeSxcbiAgICAgICAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICAgIHVwZGF0ZWRNb2R1bGVzLFxuICAgICAgICAgICAgLy8gV2hldGhlciB0aGUgcGFnZSAodGFiKSB3YXMgaGlkZGVuIGF0IHRoZSB0aW1lIHRoZSBldmVudCBvY2N1cnJlZC5cbiAgICAgICAgICAgIC8vIFRoaXMgY2FuIGltcGFjdCB0aGUgYWNjdXJhY3kgb2YgdGhlIGV2ZW50J3MgdGltaW5nLlxuICAgICAgICAgICAgaXNQYWdlSGlkZGVuOiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwiaGlkZGVuXCJcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IpIHtcbiAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCKGxhdGVuY3kpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlcmUgaXMgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBjb2RlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIGhhbmRsZUF2YWlsYWJsZUhhc2goaGFzaCkge1xuICAgIC8vIFVwZGF0ZSBsYXN0IGtub3duIGNvbXBpbGF0aW9uIGhhc2guXG4gICAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IGhhc2g7XG59XG4vLyBIYW5kbGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyLlxuZnVuY3Rpb24gcHJvY2Vzc01lc3NhZ2Uob2JqKSB7XG4gICAgaWYgKCEoXCJhY3Rpb25cIiBpbiBvYmopKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoKG9iai5hY3Rpb24pe1xuICAgICAgICBjYXNlIF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5CVUlMRElORzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydExhdGVuY3kgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0Zhc3QgUmVmcmVzaF0gcmVidWlsZGluZ1wiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTFQ6XG4gICAgICAgIGNhc2UgX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNZTkM6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUF2YWlsYWJsZUhhc2gob2JqLmhhc2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgd2FybmluZ3MgfSA9IG9iajtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFcnJvcnMgPSBCb29sZWFuKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQ6IGVycm9ycy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNXYXJuaW5ncyA9IEJvb2xlYW4od2FybmluZ3MgJiYgd2FybmluZ3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzV2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBcImNsaWVudC13YXJuaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nQ291bnQ6IHdhcm5pbmdzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlV2FybmluZ3Mod2FybmluZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtc3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdWNjZXNzKG9iai51cGRhdGVkTW9kdWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFUzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfRVJST1I6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvckpTT04gfSA9IG9iajtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JKU09OKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgc3RhY2sgfSA9IEpTT04ucGFyc2UoZXJyb3JKU09OKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnN0YWNrID0gc3RhY2s7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUVycm9ycyhbXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b21IbXJFdmVudEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tSG1yRXZlbnRIYW5kbGVyKG9iaik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG59XG4vLyBJcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGF2YWlsYWJsZT9cbmZ1bmN0aW9uIGlzVXBkYXRlQXZhaWxhYmxlKCkge1xuICAgIC8qIGdsb2JhbHMgX193ZWJwYWNrX2hhc2hfXyAqLyAvLyBfX3dlYnBhY2tfaGFzaF9fIGlzIHRoZSBoYXNoIG9mIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uLlxuICAgIC8vIEl0J3MgYSBnbG9iYWwgdmFyaWFibGUgaW5qZWN0ZWQgYnkgV2VicGFjay5cbiAgICByZXR1cm4gbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCAhPT0gX193ZWJwYWNrX2hhc2hfXztcbn1cbi8vIFdlYnBhY2sgZGlzYWxsb3dzIHVwZGF0ZXMgaW4gb3RoZXIgc3RhdGVzLlxuZnVuY3Rpb24gY2FuQXBwbHlVcGRhdGVzKCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgcmV0dXJuIG1vZHVsZS5ob3Quc3RhdHVzKCkgPT09IFwiaWRsZVwiO1xufVxuZnVuY3Rpb24gYWZ0ZXJBcHBseVVwZGF0ZXMoZm4pIHtcbiAgICBpZiAoY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICAgICAgZm4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVyKHN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJpZGxlXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICAgICAgICAgIG1vZHVsZS5ob3QucmVtb3ZlU3RhdHVzSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgICAgIG1vZHVsZS5ob3QuYWRkU3RhdHVzSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG59XG4vLyBBdHRlbXB0IHRvIHVwZGF0ZSBjb2RlIG9uIHRoZSBmbHksIGZhbGwgYmFjayB0byBhIGhhcmQgcmVsb2FkLlxuZnVuY3Rpb24gdHJ5QXBwbHlVcGRhdGVzKG9uQmVmb3JlSG90VXBkYXRlLCBvbkhvdFVwZGF0ZVN1Y2Nlc3MpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgIGlmICghbW9kdWxlLmhvdCkge1xuICAgICAgICAvLyBIb3RNb2R1bGVSZXBsYWNlbWVudFBsdWdpbiBpcyBub3QgaW4gV2VicGFjayBjb25maWd1cmF0aW9uLlxuICAgICAgICBjb25zb2xlLmVycm9yKFwiSG90TW9kdWxlUmVwbGFjZW1lbnRQbHVnaW4gaXMgbm90IGluIFdlYnBhY2sgY29uZmlndXJhdGlvbi5cIik7XG4gICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzVXBkYXRlQXZhaWxhYmxlKCkgfHwgIWNhbkFwcGx5VXBkYXRlcygpKSB7XG4gICAgICAgICgwLCBfY2xpZW50Lm9uQnVpbGRPaykoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVBcHBseVVwZGF0ZXMoZXJyLCB1cGRhdGVkTW9kdWxlcykge1xuICAgICAgICBpZiAoZXJyIHx8IGhhZFJ1bnRpbWVFcnJvciB8fCAhdXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbRmFzdCBSZWZyZXNoXSBwZXJmb3JtaW5nIGZ1bGwgcmVsb2FkXFxuXFxuXCIgKyBcIkZhc3QgUmVmcmVzaCB3aWxsIHBlcmZvcm0gYSBmdWxsIHJlbG9hZCB3aGVuIHlvdSBlZGl0IGEgZmlsZSB0aGF0J3MgaW1wb3J0ZWQgYnkgbW9kdWxlcyBvdXRzaWRlIG9mIHRoZSBSZWFjdCByZW5kZXJpbmcgdHJlZS5cXG5cIiArIFwiWW91IG1pZ2h0IGhhdmUgYSBmaWxlIHdoaWNoIGV4cG9ydHMgYSBSZWFjdCBjb21wb25lbnQgYnV0IGFsc28gZXhwb3J0cyBhIHZhbHVlIHRoYXQgaXMgaW1wb3J0ZWQgYnkgYSBub24tUmVhY3QgY29tcG9uZW50IGZpbGUuXFxuXCIgKyBcIkNvbnNpZGVyIG1pZ3JhdGluZyB0aGUgbm9uLVJlYWN0IGNvbXBvbmVudCBleHBvcnQgdG8gYSBzZXBhcmF0ZSBmaWxlIGFuZCBpbXBvcnRpbmcgaXQgaW50byBib3RoIGZpbGVzLlxcblxcblwiICsgXCJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBwYXJlbnQgY29tcG9uZW50IG9mIHRoZSBjb21wb25lbnQgeW91IGVkaXRlZCBpcyBhIGNsYXNzIGNvbXBvbmVudCwgd2hpY2ggZGlzYWJsZXMgRmFzdCBSZWZyZXNoLlxcblwiICsgXCJGYXN0IFJlZnJlc2ggcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmVudCBmdW5jdGlvbiBjb21wb25lbnQgaW4geW91ciBSZWFjdCB0cmVlLlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFkUnVudGltZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZCBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gaGFkIGFuIHVucmVjb3ZlcmFibGUgZXJyb3JcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZXJmb3JtRnVsbFJlbG9hZChlcnIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygb25Ib3RVcGRhdGVTdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIC8vIE1heWJlIHdlIHdhbnQgdG8gZG8gc29tZXRoaW5nLlxuICAgICAgICAgICAgb25Ib3RVcGRhdGVTdWNjZXNzKHVwZGF0ZWRNb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNVcGRhdGVBdmFpbGFibGUoKSkge1xuICAgICAgICAgICAgLy8gV2hpbGUgd2Ugd2VyZSB1cGRhdGluZywgdGhlcmUgd2FzIGEgbmV3IHVwZGF0ZSEgRG8gaXQgYWdhaW4uXG4gICAgICAgICAgICAvLyBIb3dldmVyLCB0aGlzIHRpbWUsIGRvbid0IHRyaWdnZXIgYSBwZW5kaW5nIHJlZnJlc2ggc3RhdGUuXG4gICAgICAgICAgICB0cnlBcHBseVVwZGF0ZXModXBkYXRlZE1vZHVsZXMubGVuZ3RoID4gMCA/IHVuZGVmaW5lZCA6IG9uQmVmb3JlSG90VXBkYXRlLCB1cGRhdGVkTW9kdWxlcy5sZW5ndGggPiAwID8gX2NsaWVudC5vbkJ1aWxkT2sgOiBvbkhvdFVwZGF0ZVN1Y2Nlc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKDAsIF9jbGllbnQub25CdWlsZE9rKSgpO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgICAgICAgICBhZnRlckFwcGx5VXBkYXRlcygoKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0NCKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2FwaS9ob3QtbW9kdWxlLXJlcGxhY2VtZW50LyNjaGVja1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgbW9kdWxlLmhvdC5jaGVjaygvKiBhdXRvQXBwbHkgKi8gZmFsc2UpLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBpZiAoIXVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9uQmVmb3JlSG90VXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIG9uQmVmb3JlSG90VXBkYXRlKHVwZGF0ZWRNb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICByZXR1cm4gbW9kdWxlLmhvdC5hcHBseSgpO1xuICAgIH0pLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMobnVsbCwgdXBkYXRlZE1vZHVsZXMpO1xuICAgIH0sIChlcnIpPT57XG4gICAgICAgIGhhbmRsZUFwcGx5VXBkYXRlcyhlcnIsIG51bGwpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcGVyZm9ybUZ1bGxSZWxvYWQoZXJyKSB7XG4gICAgY29uc3Qgc3RhY2tUcmFjZSA9IGVyciAmJiAoZXJyLnN0YWNrICYmIGVyci5zdGFjay5zcGxpdChcIlxcblwiKS5zbGljZSgwLCA1KS5qb2luKFwiXFxuXCIpIHx8IGVyci5tZXNzYWdlIHx8IGVyciArIFwiXCIpO1xuICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50OiBcImNsaWVudC1mdWxsLXJlbG9hZFwiLFxuICAgICAgICBzdGFja1RyYWNlLFxuICAgICAgICBoYWRSdW50aW1lRXJyb3I6ICEhaGFkUnVudGltZUVycm9yXG4gICAgfSkpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG90LWRldi1jbGllbnQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImNvbm5lY3QiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2NsaWVudCIsIl9zdHJpcGFuc2kiLCJfIiwiX3dlYnNvY2tldCIsIl9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMiLCJfaG90cmVsb2FkZXJ0eXBlcyIsIndpbmRvdyIsIl9fbmV4dERldkNsaWVudElkIiwiTWF0aCIsInJvdW5kIiwicmFuZG9tIiwiRGF0ZSIsIm5vdyIsImhhZFJ1bnRpbWVFcnJvciIsImN1c3RvbUhtckV2ZW50SGFuZGxlciIsIk1PREUiLCJtb2RlIiwicmVnaXN0ZXIiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJwYXlsb2FkIiwicHJvY2Vzc01lc3NhZ2UiLCJlcnIiLCJfZXJyX3N0YWNrIiwiY29uc29sZSIsIndhcm4iLCJzdGFjayIsInN1YnNjcmliZVRvSG1yRXZlbnQiLCJoYW5kbGVyIiwib25VbnJlY292ZXJhYmxlRXJyb3IiLCJpc0ZpcnN0Q29tcGlsYXRpb24iLCJtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoIiwiaGFzQ29tcGlsZUVycm9ycyIsImNsZWFyT3V0ZGF0ZWRFcnJvcnMiLCJjbGVhciIsImhhbmRsZVN1Y2Nlc3MiLCJ1cGRhdGVkTW9kdWxlcyIsImlzSG90VXBkYXRlIiwiX19ORVhUX0RBVEFfXyIsInBhZ2UiLCJpc1VwZGF0ZUF2YWlsYWJsZSIsInRyeUFwcGx5VXBkYXRlcyIsIm9uQmVmb3JlRmFzdFJlZnJlc2giLCJvbkZhc3RSZWZyZXNoIiwib25CdWlsZE9rIiwiaGFuZGxlV2FybmluZ3MiLCJ3YXJuaW5ncyIsInByaW50V2FybmluZ3MiLCJmb3JtYXR0ZWQiLCJkZWZhdWx0IiwiZXJyb3JzIiwiX2Zvcm1hdHRlZF93YXJuaW5ncyIsImkiLCJsZW5ndGgiLCJoYW5kbGVFcnJvcnMiLCJvbkJ1aWxkRXJyb3IiLCJlcnJvciIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfVEVTVF9NT0RFIiwic2VsZiIsIl9fTkVYVF9ITVJfQ0IiLCJzdGFydExhdGVuY3kiLCJ1bmRlZmluZWQiLCJvbkJlZm9yZVJlZnJlc2giLCJvblJlZnJlc2giLCJlbmRMYXRlbmN5IiwibGF0ZW5jeSIsImxvZyIsInNlbmRNZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsImV2ZW50IiwiaWQiLCJzdGFydFRpbWUiLCJlbmRUaW1lIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImlzUGFnZUhpZGRlbiIsImRvY3VtZW50IiwidmlzaWJpbGl0eVN0YXRlIiwiX19ORVhUX0hNUl9MQVRFTkNZX0NCIiwiaGFuZGxlQXZhaWxhYmxlSGFzaCIsImhhc2giLCJvYmoiLCJhY3Rpb24iLCJITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIiLCJCVUlMRElORyIsIkJVSUxUIiwiU1lOQyIsImhhc0Vycm9ycyIsIkJvb2xlYW4iLCJlcnJvckNvdW50IiwiY2xpZW50SWQiLCJoYXNXYXJuaW5ncyIsIndhcm5pbmdDb3VudCIsIlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFUyIsInJlbG9hZCIsIlNFUlZFUl9FUlJPUiIsImVycm9ySlNPTiIsIm1lc3NhZ2UiLCJwYXJzZSIsIkVycm9yIiwiX193ZWJwYWNrX2hhc2hfXyIsImNhbkFwcGx5VXBkYXRlcyIsIm1vZHVsZSIsImhvdCIsInN0YXR1cyIsImFmdGVyQXBwbHlVcGRhdGVzIiwiZm4iLCJyZW1vdmVTdGF0dXNIYW5kbGVyIiwiYWRkU3RhdHVzSGFuZGxlciIsIm9uQmVmb3JlSG90VXBkYXRlIiwib25Ib3RVcGRhdGVTdWNjZXNzIiwiaGFuZGxlQXBwbHlVcGRhdGVzIiwicGVyZm9ybUZ1bGxSZWxvYWQiLCJjaGVjayIsInRoZW4iLCJhcHBseSIsInN0YWNrVHJhY2UiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/error-overlay/websocket.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/error-overlay/websocket.js ***! \**********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n addMessageListener: function() {\n return addMessageListener;\n },\n sendMessage: function() {\n return sendMessage;\n },\n connectHMR: function() {\n return connectHMR;\n }\n});\nlet source;\nconst eventCallbacks = [];\nfunction getSocketProtocol(assetPrefix) {\n let protocol = location.protocol;\n try {\n // assetPrefix is a url\n protocol = new URL(assetPrefix).protocol;\n } catch (e) {}\n return protocol === \"http:\" ? \"ws\" : \"wss\";\n}\nfunction addMessageListener(callback) {\n eventCallbacks.push(callback);\n}\nfunction sendMessage(data) {\n if (!source || source.readyState !== source.OPEN) return;\n return source.send(data);\n}\nlet reconnections = 0;\nfunction connectHMR(options) {\n function init() {\n if (source) source.close();\n function handleOnline() {\n reconnections = 0;\n window.console.log(\"[HMR] connected\");\n }\n function handleMessage(event) {\n // Coerce into HMR_ACTION_TYPES as that is the format.\n const msg = JSON.parse(event.data);\n for (const eventCallback of eventCallbacks){\n eventCallback(msg);\n }\n }\n let timer;\n function handleDisconnect() {\n source.onerror = null;\n source.onclose = null;\n source.close();\n reconnections++;\n // After 25 reconnects we'll want to reload the page as it indicates the dev server is no longer running.\n if (reconnections > 25) {\n window.location.reload();\n return;\n }\n clearTimeout(timer);\n // Try again after 5 seconds\n timer = setTimeout(init, reconnections > 5 ? 5000 : 1000);\n }\n const { hostname, port } = location;\n const protocol = getSocketProtocol(options.assetPrefix || \"\");\n const assetPrefix = options.assetPrefix.replace(/^\\/+/, \"\");\n let url = protocol + \"://\" + hostname + \":\" + port + (assetPrefix ? \"/\" + assetPrefix : \"\");\n if (assetPrefix.startsWith(\"http\")) {\n url = protocol + \"://\" + assetPrefix.split(\"://\", 2)[1];\n }\n source = new window.WebSocket(\"\" + url + options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onclose = handleDisconnect;\n source.onmessage = handleMessage;\n }\n init();\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=websocket.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FJTjtBQUNBLFNBQVNJLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlWLE9BQU9DLGNBQWMsQ0FBQ1EsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTixTQUFTO0lBQ2JHLG9CQUFvQjtRQUNoQixPQUFPQTtJQUNYO0lBQ0FDLGFBQWE7UUFDVCxPQUFPQTtJQUNYO0lBQ0FDLFlBQVk7UUFDUixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxJQUFJTztBQUNKLE1BQU1DLGlCQUFpQixFQUFFO0FBQ3pCLFNBQVNDLGtCQUFrQkMsV0FBVztJQUNsQyxJQUFJQyxXQUFXQyxTQUFTRCxRQUFRO0lBQ2hDLElBQUk7UUFDQSx1QkFBdUI7UUFDdkJBLFdBQVcsSUFBSUUsSUFBSUgsYUFBYUMsUUFBUTtJQUM1QyxFQUFFLE9BQU9HLEdBQUcsQ0FBQztJQUNiLE9BQU9ILGFBQWEsVUFBVSxPQUFPO0FBQ3pDO0FBQ0EsU0FBU2IsbUJBQW1CaUIsUUFBUTtJQUNoQ1AsZUFBZVEsSUFBSSxDQUFDRDtBQUN4QjtBQUNBLFNBQVNoQixZQUFZa0IsSUFBSTtJQUNyQixJQUFJLENBQUNWLFVBQVVBLE9BQU9XLFVBQVUsS0FBS1gsT0FBT1ksSUFBSSxFQUFFO0lBQ2xELE9BQU9aLE9BQU9hLElBQUksQ0FBQ0g7QUFDdkI7QUFDQSxJQUFJSSxnQkFBZ0I7QUFDcEIsU0FBU3JCLFdBQVdzQixPQUFPO0lBQ3ZCLFNBQVNDO1FBQ0wsSUFBSWhCLFFBQVFBLE9BQU9pQixLQUFLO1FBQ3hCLFNBQVNDO1lBQ0xKLGdCQUFnQjtZQUNoQkssT0FBT0MsT0FBTyxDQUFDQyxHQUFHLENBQUM7UUFDdkI7UUFDQSxTQUFTQyxjQUFjQyxLQUFLO1lBQ3hCLHNEQUFzRDtZQUN0RCxNQUFNQyxNQUFNQyxLQUFLQyxLQUFLLENBQUNILE1BQU1iLElBQUk7WUFDakMsS0FBSyxNQUFNaUIsaUJBQWlCMUIsZUFBZTtnQkFDdkMwQixjQUFjSDtZQUNsQjtRQUNKO1FBQ0EsSUFBSUk7UUFDSixTQUFTQztZQUNMN0IsT0FBTzhCLE9BQU8sR0FBRztZQUNqQjlCLE9BQU8rQixPQUFPLEdBQUc7WUFDakIvQixPQUFPaUIsS0FBSztZQUNaSDtZQUNBLHlHQUF5RztZQUN6RyxJQUFJQSxnQkFBZ0IsSUFBSTtnQkFDcEJLLE9BQU9kLFFBQVEsQ0FBQzJCLE1BQU07Z0JBQ3RCO1lBQ0o7WUFDQUMsYUFBYUw7WUFDYiw0QkFBNEI7WUFDNUJBLFFBQVFNLFdBQVdsQixNQUFNRixnQkFBZ0IsSUFBSSxPQUFPO1FBQ3hEO1FBQ0EsTUFBTSxFQUFFcUIsUUFBUSxFQUFFQyxJQUFJLEVBQUUsR0FBRy9CO1FBQzNCLE1BQU1ELFdBQVdGLGtCQUFrQmEsUUFBUVosV0FBVyxJQUFJO1FBQzFELE1BQU1BLGNBQWNZLFFBQVFaLFdBQVcsQ0FBQ2tDLE9BQU8sQ0FBQyxRQUFRO1FBQ3hELElBQUlDLE1BQU1sQyxXQUFXLFFBQVErQixXQUFXLE1BQU1DLE9BQVFqQyxDQUFBQSxjQUFjLE1BQU1BLGNBQWMsRUFBQztRQUN6RixJQUFJQSxZQUFZb0MsVUFBVSxDQUFDLFNBQVM7WUFDaENELE1BQU1sQyxXQUFXLFFBQVFELFlBQVlxQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUMzRDtRQUNBeEMsU0FBUyxJQUFJbUIsT0FBT3NCLFNBQVMsQ0FBQyxLQUFLSCxNQUFNdkIsUUFBUTJCLElBQUk7UUFDckQxQyxPQUFPMkMsTUFBTSxHQUFHekI7UUFDaEJsQixPQUFPOEIsT0FBTyxHQUFHRDtRQUNqQjdCLE9BQU8rQixPQUFPLEdBQUdGO1FBQ2pCN0IsT0FBTzRDLFNBQVMsR0FBR3RCO0lBQ3ZCO0lBQ0FOO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBTzVCLFFBQVF5RCxPQUFPLEtBQUssY0FBZSxPQUFPekQsUUFBUXlELE9BQU8sS0FBSyxZQUFZekQsUUFBUXlELE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3pELFFBQVF5RCxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLNUQsT0FBT0MsY0FBYyxDQUFDQyxRQUFReUQsT0FBTyxFQUFFLGNBQWM7UUFBRXhELE9BQU87SUFBSztJQUNuRUgsT0FBTzZELE1BQU0sQ0FBQzNELFFBQVF5RCxPQUFPLEVBQUV6RDtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFReUQsT0FBTztBQUNsQyxFQUVBLHFDQUFxQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXQuanM/YTliZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGFkZE1lc3NhZ2VMaXN0ZW5lcjogbnVsbCxcbiAgICBzZW5kTWVzc2FnZTogbnVsbCxcbiAgICBjb25uZWN0SE1SOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGFkZE1lc3NhZ2VMaXN0ZW5lcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhZGRNZXNzYWdlTGlzdGVuZXI7XG4gICAgfSxcbiAgICBzZW5kTWVzc2FnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZW5kTWVzc2FnZTtcbiAgICB9LFxuICAgIGNvbm5lY3RITVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29ubmVjdEhNUjtcbiAgICB9XG59KTtcbmxldCBzb3VyY2U7XG5jb25zdCBldmVudENhbGxiYWNrcyA9IFtdO1xuZnVuY3Rpb24gZ2V0U29ja2V0UHJvdG9jb2woYXNzZXRQcmVmaXgpIHtcbiAgICBsZXQgcHJvdG9jb2wgPSBsb2NhdGlvbi5wcm90b2NvbDtcbiAgICB0cnkge1xuICAgICAgICAvLyBhc3NldFByZWZpeCBpcyBhIHVybFxuICAgICAgICBwcm90b2NvbCA9IG5ldyBVUkwoYXNzZXRQcmVmaXgpLnByb3RvY29sO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIHByb3RvY29sID09PSBcImh0dHA6XCIgPyBcIndzXCIgOiBcIndzc1wiO1xufVxuZnVuY3Rpb24gYWRkTWVzc2FnZUxpc3RlbmVyKGNhbGxiYWNrKSB7XG4gICAgZXZlbnRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG59XG5mdW5jdGlvbiBzZW5kTWVzc2FnZShkYXRhKSB7XG4gICAgaWYgKCFzb3VyY2UgfHwgc291cmNlLnJlYWR5U3RhdGUgIT09IHNvdXJjZS5PUEVOKSByZXR1cm47XG4gICAgcmV0dXJuIHNvdXJjZS5zZW5kKGRhdGEpO1xufVxubGV0IHJlY29ubmVjdGlvbnMgPSAwO1xuZnVuY3Rpb24gY29ubmVjdEhNUihvcHRpb25zKSB7XG4gICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgaWYgKHNvdXJjZSkgc291cmNlLmNsb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU9ubGluZSgpIHtcbiAgICAgICAgICAgIHJlY29ubmVjdGlvbnMgPSAwO1xuICAgICAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKFwiW0hNUl0gY29ubmVjdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIENvZXJjZSBpbnRvIEhNUl9BQ1RJT05fVFlQRVMgYXMgdGhhdCBpcyB0aGUgZm9ybWF0LlxuICAgICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXZlbnRDYWxsYmFjayBvZiBldmVudENhbGxiYWNrcyl7XG4gICAgICAgICAgICAgICAgZXZlbnRDYWxsYmFjayhtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCB0aW1lcjtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlRGlzY29ubmVjdCgpIHtcbiAgICAgICAgICAgIHNvdXJjZS5vbmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHNvdXJjZS5vbmNsb3NlID0gbnVsbDtcbiAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpO1xuICAgICAgICAgICAgcmVjb25uZWN0aW9ucysrO1xuICAgICAgICAgICAgLy8gQWZ0ZXIgMjUgcmVjb25uZWN0cyB3ZSdsbCB3YW50IHRvIHJlbG9hZCB0aGUgcGFnZSBhcyBpdCBpbmRpY2F0ZXMgdGhlIGRldiBzZXJ2ZXIgaXMgbm8gbG9uZ2VyIHJ1bm5pbmcuXG4gICAgICAgICAgICBpZiAocmVjb25uZWN0aW9ucyA+IDI1KSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICAvLyBUcnkgYWdhaW4gYWZ0ZXIgNSBzZWNvbmRzXG4gICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoaW5pdCwgcmVjb25uZWN0aW9ucyA+IDUgPyA1MDAwIDogMTAwMCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBob3N0bmFtZSwgcG9ydCB9ID0gbG9jYXRpb247XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gZ2V0U29ja2V0UHJvdG9jb2wob3B0aW9ucy5hc3NldFByZWZpeCB8fCBcIlwiKTtcbiAgICAgICAgY29uc3QgYXNzZXRQcmVmaXggPSBvcHRpb25zLmFzc2V0UHJlZml4LnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gICAgICAgIGxldCB1cmwgPSBwcm90b2NvbCArIFwiOi8vXCIgKyBob3N0bmFtZSArIFwiOlwiICsgcG9ydCArIChhc3NldFByZWZpeCA/IFwiL1wiICsgYXNzZXRQcmVmaXggOiBcIlwiKTtcbiAgICAgICAgaWYgKGFzc2V0UHJlZml4LnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XG4gICAgICAgICAgICB1cmwgPSBwcm90b2NvbCArIFwiOi8vXCIgKyBhc3NldFByZWZpeC5zcGxpdChcIjovL1wiLCAyKVsxXTtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBuZXcgd2luZG93LldlYlNvY2tldChcIlwiICsgdXJsICsgb3B0aW9ucy5wYXRoKTtcbiAgICAgICAgc291cmNlLm9ub3BlbiA9IGhhbmRsZU9ubGluZTtcbiAgICAgICAgc291cmNlLm9uZXJyb3IgPSBoYW5kbGVEaXNjb25uZWN0O1xuICAgICAgICBzb3VyY2Uub25jbG9zZSA9IGhhbmRsZURpc2Nvbm5lY3Q7XG4gICAgICAgIHNvdXJjZS5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlO1xuICAgIH1cbiAgICBpbml0KCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYnNvY2tldC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJzZW5kTWVzc2FnZSIsImNvbm5lY3RITVIiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJzb3VyY2UiLCJldmVudENhbGxiYWNrcyIsImdldFNvY2tldFByb3RvY29sIiwiYXNzZXRQcmVmaXgiLCJwcm90b2NvbCIsImxvY2F0aW9uIiwiVVJMIiwiZSIsImNhbGxiYWNrIiwicHVzaCIsImRhdGEiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInNlbmQiLCJyZWNvbm5lY3Rpb25zIiwib3B0aW9ucyIsImluaXQiLCJjbG9zZSIsImhhbmRsZU9ubGluZSIsIndpbmRvdyIsImNvbnNvbGUiLCJsb2ciLCJoYW5kbGVNZXNzYWdlIiwiZXZlbnQiLCJtc2ciLCJKU09OIiwicGFyc2UiLCJldmVudENhbGxiYWNrIiwidGltZXIiLCJoYW5kbGVEaXNjb25uZWN0Iiwib25lcnJvciIsIm9uY2xvc2UiLCJyZWxvYWQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiaG9zdG5hbWUiLCJwb3J0IiwicmVwbGFjZSIsInVybCIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsIldlYlNvY2tldCIsInBhdGgiLCJvbm9wZW4iLCJvbm1lc3NhZ2UiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/websocket.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/fouc.js": /*!***************************************************!*\ !*** ./node_modules/next/dist/client/dev/fouc.js ***! \***************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("// This wrapper function is used to safely select the best available function\n// to schedule removal of the no-FOUC styles workaround. requestAnimationFrame\n// is the ideal choice, but when used in iframes, there are no guarantees that\n// the callback will actually be called, which could stall the promise returned\n// from displayContent.\n//\n// See: https://www.vector-logic.com/blog/posts/on-request-animation-frame-and-embedded-iframes\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"displayContent\", ({\n enumerable: true,\n get: function() {\n return displayContent;\n }\n}));\nconst safeCallbackQueue = (callback)=>{\n if (window.requestAnimationFrame && window.self === window.top) {\n window.requestAnimationFrame(callback);\n } else {\n window.setTimeout(callback);\n }\n};\nfunction displayContent() {\n return new Promise((resolve)=>{\n safeCallbackQueue(function() {\n for(var x = document.querySelectorAll(\"[data-next-hide-fouc]\"), i = x.length; i--;){\n x[i].parentNode.removeChild(x[i]);\n }\n resolve();\n });\n });\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=fouc.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZm91Yy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsdUJBQXVCO0FBQ3ZCLEVBQUU7QUFDRiwrRkFBK0Y7QUFDbEY7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILGtEQUFpRDtJQUM3Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLG9CQUFvQixDQUFDQztJQUN2QixJQUFJQyxPQUFPQyxxQkFBcUIsSUFBSUQsT0FBT0UsSUFBSSxLQUFLRixPQUFPRyxHQUFHLEVBQUU7UUFDNURILE9BQU9DLHFCQUFxQixDQUFDRjtJQUNqQyxPQUFPO1FBQ0hDLE9BQU9JLFVBQVUsQ0FBQ0w7SUFDdEI7QUFDSjtBQUNBLFNBQVNGO0lBQ0wsT0FBTyxJQUFJUSxRQUFRLENBQUNDO1FBQ2hCUixrQkFBa0I7WUFDZCxJQUFJLElBQUlTLElBQUlDLFNBQVNDLGdCQUFnQixDQUFDLDBCQUEwQkMsSUFBSUgsRUFBRUksTUFBTSxFQUFFRCxLQUFLO2dCQUMvRUgsQ0FBQyxDQUFDRyxFQUFFLENBQUNFLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDTixDQUFDLENBQUNHLEVBQUU7WUFDcEM7WUFDQUo7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT2IsUUFBUXFCLE9BQU8sS0FBSyxjQUFlLE9BQU9yQixRQUFRcUIsT0FBTyxLQUFLLFlBQVlyQixRQUFRcUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPckIsUUFBUXFCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt4QixPQUFPQyxjQUFjLENBQUNDLFFBQVFxQixPQUFPLEVBQUUsY0FBYztRQUFFcEIsT0FBTztJQUFLO0lBQ25FSCxPQUFPeUIsTUFBTSxDQUFDdkIsUUFBUXFCLE9BQU8sRUFBRXJCO0lBQy9Cd0IsT0FBT3hCLE9BQU8sR0FBR0EsUUFBUXFCLE9BQU87QUFDbEMsRUFFQSxnQ0FBZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2ZvdWMuanM/MDA4NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gaXMgdXNlZCB0byBzYWZlbHkgc2VsZWN0IHRoZSBiZXN0IGF2YWlsYWJsZSBmdW5jdGlvblxuLy8gdG8gc2NoZWR1bGUgcmVtb3ZhbCBvZiB0aGUgbm8tRk9VQyBzdHlsZXMgd29ya2Fyb3VuZC4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4vLyBpcyB0aGUgaWRlYWwgY2hvaWNlLCBidXQgd2hlbiB1c2VkIGluIGlmcmFtZXMsIHRoZXJlIGFyZSBubyBndWFyYW50ZWVzIHRoYXRcbi8vIHRoZSBjYWxsYmFjayB3aWxsIGFjdHVhbGx5IGJlIGNhbGxlZCwgd2hpY2ggY291bGQgc3RhbGwgdGhlIHByb21pc2UgcmV0dXJuZWRcbi8vIGZyb20gZGlzcGxheUNvbnRlbnQuXG4vL1xuLy8gU2VlOiBodHRwczovL3d3dy52ZWN0b3ItbG9naWMuY29tL2Jsb2cvcG9zdHMvb24tcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtYW5kLWVtYmVkZGVkLWlmcmFtZXNcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGlzcGxheUNvbnRlbnRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlDb250ZW50O1xuICAgIH1cbn0pO1xuY29uc3Qgc2FmZUNhbGxiYWNrUXVldWUgPSAoY2FsbGJhY2spPT57XG4gICAgaWYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgJiYgd2luZG93LnNlbGYgPT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2spO1xuICAgIH1cbn07XG5mdW5jdGlvbiBkaXNwbGF5Q29udGVudCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIHNhZmVDYWxsYmFja1F1ZXVlKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yKHZhciB4ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLW5leHQtaGlkZS1mb3VjXVwiKSwgaSA9IHgubGVuZ3RoOyBpLS07KXtcbiAgICAgICAgICAgICAgICB4W2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoeFtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3VjLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJkaXNwbGF5Q29udGVudCIsInNhZmVDYWxsYmFja1F1ZXVlIiwiY2FsbGJhY2siLCJ3aW5kb3ciLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZWxmIiwidG9wIiwic2V0VGltZW91dCIsIlByb21pc2UiLCJyZXNvbHZlIiwieCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImkiLCJsZW5ndGgiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/fouc.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/hot-middleware-client.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-middleware-client.js ***! \********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _hotdevclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./error-overlay/hot-dev-client */ \"./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\"));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nlet reloading = false;\nconst _default = (mode)=>{\n const devClient = (0, _hotdevclient.default)(mode);\n devClient.subscribeToHmrEvent((obj)=>{\n if (reloading) return;\n // if we're on an error/404 page, we can't reliably tell if the newly added/removed page\n // matches the current path. In that case, assume any added/removed entries should trigger a reload of the current page\n const isOnErrorPage = window.next.router.pathname === \"/404\" || window.next.router.pathname === \"/_error\";\n switch(obj.action){\n case \"reloadPage\":\n {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-reload-page\",\n clientId: window.__nextDevClientId\n }));\n reloading = true;\n return window.location.reload();\n }\n case \"removedPage\":\n {\n const [page] = obj.data;\n if (page === window.next.router.pathname || isOnErrorPage) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-removed-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n case \"addedPage\":\n {\n const [page] = obj.data;\n if (page === window.next.router.pathname && typeof window.next.router.components[page] === \"undefined\" || isOnErrorPage) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-added-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n case \"serverError\":\n case \"devPagesManifestUpdate\":\n case \"building\":\n case \"finishBuilding\":\n {\n return;\n }\n default:\n {\n throw new Error(\"Unexpected action \" + obj.action);\n }\n }\n });\n return devClient;\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=hot-middleware-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LW1pZGRsZXdhcmUtY2xpZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxnQkFBZ0IsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsMkdBQWdDO0FBQ3ZHLE1BQU1HLGFBQWFILG1CQUFPQSxDQUFDLGlHQUEyQjtBQUN0RCxJQUFJSSxZQUFZO0FBQ2hCLE1BQU1OLFdBQVcsQ0FBQ087SUFDZCxNQUFNQyxZQUFZLENBQUMsR0FBR0wsY0FBY00sT0FBTyxFQUFFRjtJQUM3Q0MsVUFBVUUsbUJBQW1CLENBQUMsQ0FBQ0M7UUFDM0IsSUFBSUwsV0FBVztRQUNmLHdGQUF3RjtRQUN4Rix1SEFBdUg7UUFDdkgsTUFBTU0sZ0JBQWdCQyxPQUFPQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxLQUFLLFVBQVVILE9BQU9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLEtBQUs7UUFDaEcsT0FBT0wsSUFBSU0sTUFBTTtZQUNiLEtBQUs7Z0JBQ0Q7b0JBQ0ssSUFBR1osV0FBV2EsV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUM7d0JBQ3ZDQyxPQUFPO3dCQUNQQyxVQUFVVCxPQUFPVSxpQkFBaUI7b0JBQ3RDO29CQUNBakIsWUFBWTtvQkFDWixPQUFPTyxPQUFPVyxRQUFRLENBQUNDLE1BQU07Z0JBQ2pDO1lBQ0osS0FBSztnQkFDRDtvQkFDSSxNQUFNLENBQUNDLEtBQUssR0FBR2YsSUFBSWdCLElBQUk7b0JBQ3ZCLElBQUlELFNBQVNiLE9BQU9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUlKLGVBQWU7d0JBQ3RELElBQUdQLFdBQVdhLFdBQVcsRUFBRUMsS0FBS0MsU0FBUyxDQUFDOzRCQUN2Q0MsT0FBTzs0QkFDUEMsVUFBVVQsT0FBT1UsaUJBQWlCOzRCQUNsQ0c7d0JBQ0o7d0JBQ0EsT0FBT2IsT0FBT1csUUFBUSxDQUFDQyxNQUFNO29CQUNqQztvQkFDQTtnQkFDSjtZQUNKLEtBQUs7Z0JBQ0Q7b0JBQ0ksTUFBTSxDQUFDQyxLQUFLLEdBQUdmLElBQUlnQixJQUFJO29CQUN2QixJQUFJRCxTQUFTYixPQUFPQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxJQUFJLE9BQU9ILE9BQU9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDYSxVQUFVLENBQUNGLEtBQUssS0FBSyxlQUFlZCxlQUFlO3dCQUNwSCxJQUFHUCxXQUFXYSxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQzs0QkFDdkNDLE9BQU87NEJBQ1BDLFVBQVVULE9BQU9VLGlCQUFpQjs0QkFDbENHO3dCQUNKO3dCQUNBLE9BQU9iLE9BQU9XLFFBQVEsQ0FBQ0MsTUFBTTtvQkFDakM7b0JBQ0E7Z0JBQ0o7WUFDSixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO2dCQUNEO29CQUNJO2dCQUNKO1lBQ0o7Z0JBQ0k7b0JBQ0ksTUFBTSxJQUFJSSxNQUFNLHVCQUF1QmxCLElBQUlNLE1BQU07Z0JBQ3JEO1FBQ1I7SUFDSjtJQUNBLE9BQU9UO0FBQ1g7QUFFQSxJQUFJLENBQUMsT0FBT1osUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDcUIsVUFBVSxLQUFLLGFBQWE7SUFDcktwQyxPQUFPQyxjQUFjLENBQUNDLFFBQVFhLE9BQU8sRUFBRSxjQUFjO1FBQUVaLE9BQU87SUFBSztJQUNuRUgsT0FBT3FDLE1BQU0sQ0FBQ25DLFFBQVFhLE9BQU8sRUFBRWI7SUFDL0JvQyxPQUFPcEMsT0FBTyxHQUFHQSxRQUFRYSxPQUFPO0FBQ2xDLEVBRUEsaURBQWlEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtbWlkZGxld2FyZS1jbGllbnQuanM/MzFkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0O1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbmNvbnN0IF9ob3RkZXZjbGllbnQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvaG90LWRldi1jbGllbnRcIikpO1xuY29uc3QgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xubGV0IHJlbG9hZGluZyA9IGZhbHNlO1xuY29uc3QgX2RlZmF1bHQgPSAobW9kZSk9PntcbiAgICBjb25zdCBkZXZDbGllbnQgPSAoMCwgX2hvdGRldmNsaWVudC5kZWZhdWx0KShtb2RlKTtcbiAgICBkZXZDbGllbnQuc3Vic2NyaWJlVG9IbXJFdmVudCgob2JqKT0+e1xuICAgICAgICBpZiAocmVsb2FkaW5nKSByZXR1cm47XG4gICAgICAgIC8vIGlmIHdlJ3JlIG9uIGFuIGVycm9yLzQwNCBwYWdlLCB3ZSBjYW4ndCByZWxpYWJseSB0ZWxsIGlmIHRoZSBuZXdseSBhZGRlZC9yZW1vdmVkIHBhZ2VcbiAgICAgICAgLy8gbWF0Y2hlcyB0aGUgY3VycmVudCBwYXRoLiBJbiB0aGF0IGNhc2UsIGFzc3VtZSBhbnkgYWRkZWQvcmVtb3ZlZCBlbnRyaWVzIHNob3VsZCB0cmlnZ2VyIGEgcmVsb2FkIG9mIHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgY29uc3QgaXNPbkVycm9yUGFnZSA9IHdpbmRvdy5uZXh0LnJvdXRlci5wYXRobmFtZSA9PT0gXCIvNDA0XCIgfHwgd2luZG93Lm5leHQucm91dGVyLnBhdGhuYW1lID09PSBcIi9fZXJyb3JcIjtcbiAgICAgICAgc3dpdGNoKG9iai5hY3Rpb24pe1xuICAgICAgICAgICAgY2FzZSBcInJlbG9hZFBhZ2VcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtcmVsb2FkLXBhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICByZWxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJyZW1vdmVkUGFnZVwiOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3BhZ2VdID0gb2JqLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYWdlID09PSB3aW5kb3cubmV4dC5yb3V0ZXIucGF0aG5hbWUgfHwgaXNPbkVycm9yUGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtcmVtb3ZlZC1wYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiYWRkZWRQYWdlXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbcGFnZV0gPSBvYmouZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2UgPT09IHdpbmRvdy5uZXh0LnJvdXRlci5wYXRobmFtZSAmJiB0eXBlb2Ygd2luZG93Lm5leHQucm91dGVyLmNvbXBvbmVudHNbcGFnZV0gPT09IFwidW5kZWZpbmVkXCIgfHwgaXNPbkVycm9yUGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtYWRkZWQtcGFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcInNlcnZlckVycm9yXCI6XG4gICAgICAgICAgICBjYXNlIFwiZGV2UGFnZXNNYW5pZmVzdFVwZGF0ZVwiOlxuICAgICAgICAgICAgY2FzZSBcImJ1aWxkaW5nXCI6XG4gICAgICAgICAgICBjYXNlIFwiZmluaXNoQnVpbGRpbmdcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhY3Rpb24gXCIgKyBvYmouYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGV2Q2xpZW50O1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG90LW1pZGRsZXdhcmUtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfZGVmYXVsdCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfaG90ZGV2Y2xpZW50IiwiXyIsIl93ZWJzb2NrZXQiLCJyZWxvYWRpbmciLCJtb2RlIiwiZGV2Q2xpZW50IiwiZGVmYXVsdCIsInN1YnNjcmliZVRvSG1yRXZlbnQiLCJvYmoiLCJpc09uRXJyb3JQYWdlIiwid2luZG93IiwibmV4dCIsInJvdXRlciIsInBhdGhuYW1lIiwiYWN0aW9uIiwic2VuZE1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJjbGllbnRJZCIsIl9fbmV4dERldkNsaWVudElkIiwibG9jYXRpb24iLCJyZWxvYWQiLCJwYWdlIiwiZGF0YSIsImNvbXBvbmVudHMiLCJFcnJvciIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/hot-middleware-client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/on-demand-entries-client.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/on-demand-entries-client.js ***! \***********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../router */ \"./node_modules/next/dist/client/router.js\"));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _default = async (page)=>{\n if (page) {\n // in AMP the router isn't initialized on the client and\n // client-transitions don't occur so ping initial page\n setInterval(()=>{\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"ping\",\n page\n }));\n }, 2500);\n } else {\n _router.default.ready(()=>{\n setInterval(()=>{\n // when notFound: true is returned we should use the notFoundPage\n // as the Router.pathname will point to the 404 page but we want\n // to ping the source page that returned notFound: true instead\n const notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;\n const pathname = (_router.default.pathname === \"/404\" || _router.default.pathname === \"/_error\") && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"ping\",\n page: pathname\n }));\n }, 2500);\n });\n }\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=on-demand-entries-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxVQUFVLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDREQUFXO0FBQzVFLE1BQU1HLGFBQWFILG1CQUFPQSxDQUFDLGlHQUEyQjtBQUN0RCxNQUFNRixXQUFXLE9BQU9NO0lBQ3BCLElBQUlBLE1BQU07UUFDTix3REFBd0Q7UUFDeEQsc0RBQXNEO1FBQ3REQyxZQUFZO1lBQ1AsSUFBR0YsV0FBV0csV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUM7Z0JBQ3ZDQyxPQUFPO2dCQUNQTDtZQUNKO1FBQ0osR0FBRztJQUNQLE9BQU87UUFDSEgsUUFBUVMsT0FBTyxDQUFDQyxLQUFLLENBQUM7WUFDbEJOLFlBQVk7Z0JBQ1IsaUVBQWlFO2dCQUNqRSxnRUFBZ0U7Z0JBQ2hFLCtEQUErRDtnQkFDL0QsTUFBTU8sa0JBQWtCQyxLQUFLQyxhQUFhLENBQUNGLGVBQWU7Z0JBQzFELE1BQU1HLFdBQVcsQ0FBQ2QsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLEtBQUssVUFBVWQsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLEtBQUssU0FBUSxLQUFNSCxrQkFBa0JBLGtCQUFrQlgsUUFBUVMsT0FBTyxDQUFDSyxRQUFRO2dCQUMvSixJQUFHWixXQUFXRyxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQztvQkFDdkNDLE9BQU87b0JBQ1BMLE1BQU1XO2dCQUNWO1lBQ0osR0FBRztRQUNQO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPckIsUUFBUWdCLE9BQU8sS0FBSyxjQUFlLE9BQU9oQixRQUFRZ0IsT0FBTyxLQUFLLFlBQVloQixRQUFRZ0IsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPaEIsUUFBUWdCLE9BQU8sQ0FBQ00sVUFBVSxLQUFLLGFBQWE7SUFDckt4QixPQUFPQyxjQUFjLENBQUNDLFFBQVFnQixPQUFPLEVBQUUsY0FBYztRQUFFZixPQUFPO0lBQUs7SUFDbkVILE9BQU95QixNQUFNLENBQUN2QixRQUFRZ0IsT0FBTyxFQUFFaEI7SUFDL0J3QixPQUFPeEIsT0FBTyxHQUFHQSxRQUFRZ0IsT0FBTztBQUNsQyxFQUVBLG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzPzg0NWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vcm91dGVyXCIpKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmNvbnN0IF9kZWZhdWx0ID0gYXN5bmMgKHBhZ2UpPT57XG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgLy8gaW4gQU1QIHRoZSByb3V0ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgb24gdGhlIGNsaWVudCBhbmRcbiAgICAgICAgLy8gY2xpZW50LXRyYW5zaXRpb25zIGRvbid0IG9jY3VyIHNvIHBpbmcgaW5pdGlhbCBwYWdlXG4gICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInBpbmdcIixcbiAgICAgICAgICAgICAgICBwYWdlXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0sIDI1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIF9yb3V0ZXIuZGVmYXVsdC5yZWFkeSgoKT0+e1xuICAgICAgICAgICAgc2V0SW50ZXJ2YWwoKCk9PntcbiAgICAgICAgICAgICAgICAvLyB3aGVuIG5vdEZvdW5kOiB0cnVlIGlzIHJldHVybmVkIHdlIHNob3VsZCB1c2UgdGhlIG5vdEZvdW5kUGFnZVxuICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBSb3V0ZXIucGF0aG5hbWUgd2lsbCBwb2ludCB0byB0aGUgNDA0IHBhZ2UgYnV0IHdlIHdhbnRcbiAgICAgICAgICAgICAgICAvLyB0byBwaW5nIHRoZSBzb3VyY2UgcGFnZSB0aGF0IHJldHVybmVkIG5vdEZvdW5kOiB0cnVlIGluc3RlYWRcbiAgICAgICAgICAgICAgICBjb25zdCBub3RGb3VuZFNyY1BhZ2UgPSBzZWxmLl9fTkVYVF9EQVRBX18ubm90Rm91bmRTcmNQYWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhuYW1lID0gKF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZSA9PT0gXCIvNDA0XCIgfHwgX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lID09PSBcIi9fZXJyb3JcIikgJiYgbm90Rm91bmRTcmNQYWdlID8gbm90Rm91bmRTcmNQYWdlIDogX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiBcInBpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9LCAyNTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfZGVmYXVsdCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfcm91dGVyIiwiXyIsIl93ZWJzb2NrZXQiLCJwYWdlIiwic2V0SW50ZXJ2YWwiLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsImRlZmF1bHQiLCJyZWFkeSIsIm5vdEZvdW5kU3JjUGFnZSIsInNlbGYiLCJfX05FWFRfREFUQV9fIiwicGF0aG5hbWUiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/on-demand-entries-client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/has-base-path.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/has-base-path.js ***! \********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasBasePath\", ({\n enumerable: true,\n get: function() {\n return hasBasePath;\n }\n}));\nconst _pathhasprefix = __webpack_require__(/*! ../shared/lib/router/utils/path-has-prefix */ \"./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst basePath = false || \"\";\nfunction hasBasePath(path) {\n return (0, _pathhasprefix.pathHasPrefix)(path, basePath);\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=has-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwrQ0FBOEM7SUFDMUNJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxpQkFBaUJDLG1CQUFPQSxDQUFDLHVIQUE0QztBQUMzRSxNQUFNQyxXQUFXQyxNQUFrQyxJQUFJO0FBQ3ZELFNBQVNKLFlBQVlPLElBQUk7SUFDckIsT0FBTyxDQUFDLEdBQUdOLGVBQWVPLGFBQWEsRUFBRUQsTUFBTUo7QUFDbkQ7QUFFQSxJQUFJLENBQUMsT0FBT1AsUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2hCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWEsT0FBTyxFQUFFLGNBQWM7UUFBRVosT0FBTztJQUFLO0lBQ25FSCxPQUFPaUIsTUFBTSxDQUFDZixRQUFRYSxPQUFPLEVBQUViO0lBQy9CZ0IsT0FBT2hCLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxFQUVBLHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzPzVhNDkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJoYXNCYXNlUGF0aFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFzQmFzZVBhdGg7XG4gICAgfVxufSk7XG5jb25zdCBfcGF0aGhhc3ByZWZpeCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXRoLWhhcy1wcmVmaXhcIik7XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgXCJcIjtcbmZ1bmN0aW9uIGhhc0Jhc2VQYXRoKHBhdGgpIHtcbiAgICByZXR1cm4gKDAsIF9wYXRoaGFzcHJlZml4LnBhdGhIYXNQcmVmaXgpKHBhdGgsIGJhc2VQYXRoKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGFzLWJhc2UtcGF0aC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiaGFzQmFzZVBhdGgiLCJfcGF0aGhhc3ByZWZpeCIsInJlcXVpcmUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInBhdGhIYXNQcmVmaXgiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/has-base-path.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/head-manager.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/head-manager.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DOMAttributeNames: function() {\n return DOMAttributeNames;\n },\n isEqualNode: function() {\n return isEqualNode;\n },\n default: function() {\n return initHeadManager;\n }\n});\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nfunction reactElementToDOM(param) {\n let { type, props } = param;\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}\nlet updateElements;\nif (false) {} else {\n 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 _j_tagName;\n if ((j == null ? void 0 : (_j_tagName = j.tagName) == null ? void 0 : _j_tagName.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 _t_parentNode;\n return (_t_parentNode = t.parentNode) == null ? void 0 : _t_parentNode.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n };\n}\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}\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\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FJTjtBQUNBLFNBQVNJLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlWLE9BQU9DLGNBQWMsQ0FBQ1EsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTixTQUFTO0lBQ2JHLG1CQUFtQjtRQUNmLE9BQU9BO0lBQ1g7SUFDQUMsYUFBYTtRQUNULE9BQU9BO0lBQ1g7SUFDQUMsU0FBUztRQUNMLE9BQU9PO0lBQ1g7QUFDSjtBQUNBLE1BQU1ULG9CQUFvQjtJQUN0QlUsZUFBZTtJQUNmQyxXQUFXO0lBQ1hDLFNBQVM7SUFDVEMsV0FBVztJQUNYQyxVQUFVO0FBQ2Q7QUFDQSxTQUFTQyxrQkFBa0JDLEtBQUs7SUFDNUIsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHRjtJQUN0QixNQUFNRyxLQUFLQyxTQUFTQyxhQUFhLENBQUNKO0lBQ2xDLElBQUksTUFBTUssS0FBS0osTUFBTTtRQUNqQixJQUFJLENBQUNBLE1BQU1LLGNBQWMsQ0FBQ0QsSUFBSTtRQUM5QixJQUFJQSxNQUFNLGNBQWNBLE1BQU0sMkJBQTJCO1FBQ3pELDZDQUE2QztRQUM3QyxJQUFJSixLQUFLLENBQUNJLEVBQUUsS0FBS0UsV0FBVztRQUM1QixNQUFNQyxPQUFPekIsaUJBQWlCLENBQUNzQixFQUFFLElBQUlBLEVBQUVJLFdBQVc7UUFDbEQsSUFBSVQsU0FBUyxZQUFhUSxDQUFBQSxTQUFTLFdBQVdBLFNBQVMsV0FBV0EsU0FBUyxVQUFTLEdBQUk7WUFDcEZOLEVBQUUsQ0FBQ00sS0FBSyxHQUFHLENBQUMsQ0FBQ1AsS0FBSyxDQUFD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LE1BQU02RSxJQUFJLENBQUM3RSxLQUFLLElBQUksRUFBRTtZQUN6QztRQUNKO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPcEIsUUFBUUssT0FBTyxLQUFLLGNBQWUsT0FBT0wsUUFBUUssT0FBTyxLQUFLLFlBQVlMLFFBQVFLLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0wsUUFBUUssT0FBTyxDQUFDaUcsVUFBVSxLQUFLLGFBQWE7SUFDckt4RyxPQUFPQyxjQUFjLENBQUNDLFFBQVFLLE9BQU8sRUFBRSxjQUFjO1FBQUVKLE9BQU87SUFBSztJQUNuRUgsT0FBT3lHLE1BQU0sQ0FBQ3ZHLFFBQVFLLE9BQU8sRUFBRUw7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUUssT0FBTztBQUNsQyxFQUVBLHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanM/Y2E0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIERPTUF0dHJpYnV0ZU5hbWVzOiBudWxsLFxuICAgIGlzRXF1YWxOb2RlOiBudWxsLFxuICAgIGRlZmF1bHQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgRE9NQXR0cmlidXRlTmFtZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRE9NQXR0cmlidXRlTmFtZXM7XG4gICAgfSxcbiAgICBpc0VxdWFsTm9kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0VxdWFsTm9kZTtcbiAgICB9LFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5pdEhlYWRNYW5hZ2VyO1xuICAgIH1cbn0pO1xuY29uc3QgRE9NQXR0cmlidXRlTmFtZXMgPSB7XG4gICAgYWNjZXB0Q2hhcnNldDogXCJhY2NlcHQtY2hhcnNldFwiLFxuICAgIGNsYXNzTmFtZTogXCJjbGFzc1wiLFxuICAgIGh0bWxGb3I6IFwiZm9yXCIsXG4gICAgaHR0cEVxdWl2OiBcImh0dHAtZXF1aXZcIixcbiAgICBub01vZHVsZTogXCJub01vZHVsZVwiXG59O1xuZnVuY3Rpb24gcmVhY3RFbGVtZW50VG9ET00ocGFyYW0pIHtcbiAgICBsZXQgeyB0eXBlLCBwcm9wcyB9ID0gcGFyYW07XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgIGZvcihjb25zdCBwIGluIHByb3BzKXtcbiAgICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7XG4gICAgICAgIGlmIChwID09PSBcImNoaWxkcmVuXCIgfHwgcCA9PT0gXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiKSBjb250aW51ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3QgcmVuZGVyIHVuZGVmaW5lZCBwcm9wcyB0byB0aGUgRE9NXG4gICAgICAgIGlmIChwcm9wc1twXSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgYXR0ciA9IERPTUF0dHJpYnV0ZU5hbWVzW3BdIHx8IHAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwic2NyaXB0XCIgJiYgKGF0dHIgPT09IFwiYXN5bmNcIiB8fCBhdHRyID09PSBcImRlZmVyXCIgfHwgYXR0ciA9PT0gXCJub01vZHVsZVwiKSkge1xuICAgICAgICAgICAgZWxbYXR0cl0gPSAhIXByb3BzW3BdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHByb3BzW3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuLCBkYW5nZXJvdXNseVNldElubmVySFRNTCB9ID0gcHJvcHM7XG4gICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGVsLmlubmVySFRNTCA9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCB8fCBcIlwiO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSB7XG4gICAgaWYgKG9sZFRhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG5ld1RhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbmV3VGFnLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpO1xuICAgICAgICAvLyBPbmx5IHN0cmlwIHRoZSBub25jZSBpZiBgb2xkVGFnYCBoYXMgaGFkIGl0IHN0cmlwcGVkLiBBbiBlbGVtZW50J3Mgbm9uY2UgYXR0cmlidXRlIHdpbGwgbm90XG4gICAgICAgIC8vIGJlIHN0cmlwcGVkIGlmIHRoZXJlIGlzIG5vIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IHJlc3BvbnNlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGEgbm9uY2UuXG4gICAgICAgIGlmIChub25jZSAmJiAhb2xkVGFnLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZVRhZyA9IG5ld1RhZy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICBjbG9uZVRhZy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBcIlwiKTtcbiAgICAgICAgICAgIGNsb25lVGFnLm5vbmNlID0gbm9uY2U7XG4gICAgICAgICAgICByZXR1cm4gbm9uY2UgPT09IG9sZFRhZy5ub25jZSAmJiBvbGRUYWcuaXNFcXVhbE5vZGUoY2xvbmVUYWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbGRUYWcuaXNFcXVhbE5vZGUobmV3VGFnKTtcbn1cbmxldCB1cGRhdGVFbGVtZW50cztcbmlmIChwcm9jZXNzLmVudi5fX05FWFRfU1RSSUNUX05FWFRfSEVBRCkge1xuICAgIHVwZGF0ZUVsZW1lbnRzID0gKHR5cGUsIGNvbXBvbmVudHMpPT57XG4gICAgICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJoZWFkXCIpO1xuICAgICAgICBpZiAoIWhlYWRFbCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBoZWFkTWV0YVRhZ3MgPSBoZWFkRWwucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPVwibmV4dC1oZWFkXCJdJykgfHwgW107XG4gICAgICAgIGNvbnN0IG9sZFRhZ3MgPSBbXTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwibWV0YVwiKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhQ2hhcnNldCA9IGhlYWRFbC5xdWVyeVNlbGVjdG9yKFwibWV0YVtjaGFyc2V0XVwiKTtcbiAgICAgICAgICAgIGlmIChtZXRhQ2hhcnNldCkge1xuICAgICAgICAgICAgICAgIG9sZFRhZ3MucHVzaChtZXRhQ2hhcnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGhlYWRNZXRhVGFncy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgX2hlYWRUYWdfdGFnTmFtZTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFUYWcgPSBoZWFkTWV0YVRhZ3NbaV07XG4gICAgICAgICAgICBjb25zdCBoZWFkVGFnID0gbWV0YVRhZy5uZXh0U2libGluZztcbiAgICAgICAgICAgIGlmICgoaGVhZFRhZyA9PSBudWxsID8gdm9pZCAwIDogKF9oZWFkVGFnX3RhZ05hbWUgPSBoZWFkVGFnLnRhZ05hbWUpID09IG51bGwgPyB2b2lkIDAgOiBfaGVhZFRhZ190YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgb2xkVGFncy5wdXNoKGhlYWRUYWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgICAgICBmb3IobGV0IGsgPSAwLCBsZW4gPSBvbGRUYWdzLmxlbmd0aDsgayA8IGxlbjsgaysrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRUYWcgPSBvbGRUYWdzW2tdO1xuICAgICAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgb2xkVGFncy5zcGxpY2UoaywgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9sZFRhZ3MuZm9yRWFjaCgodCk9PntcbiAgICAgICAgICAgIHZhciBfdF9wYXJlbnROb2RlO1xuICAgICAgICAgICAgY29uc3QgbWV0YVRhZyA9IHQucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgaWYgKG1ldGFUYWcgJiYgbWV0YVRhZy5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpID09PSBcIm5leHQtaGVhZFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIF90X3BhcmVudE5vZGUxO1xuICAgICAgICAgICAgICAgIChfdF9wYXJlbnROb2RlMSA9IHQucGFyZW50Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90X3BhcmVudE5vZGUxLnJlbW92ZUNoaWxkKG1ldGFUYWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF90X3BhcmVudE5vZGUgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICAgICAgdmFyIF90X3RhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIik7XG4gICAgICAgICAgICBtZXRhLm5hbWUgPSBcIm5leHQtaGVhZFwiO1xuICAgICAgICAgICAgbWV0YS5jb250ZW50ID0gXCIxXCI7XG4gICAgICAgICAgICAvLyBtZXRhW2NoYXJzZXRdIG11c3QgYmUgZmlyc3QgZWxlbWVudCBzbyBzcGVjaWFsIGNhc2VcbiAgICAgICAgICAgIGlmICghKCgoX3RfdGFnTmFtZSA9IHQudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90X3RhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IFwibWV0YVwiICYmIHQuZ2V0QXR0cmlidXRlKFwiY2hhcnNldFwiKSkpIHtcbiAgICAgICAgICAgICAgICBoZWFkRWwuYXBwZW5kQ2hpbGQobWV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkRWwuYXBwZW5kQ2hpbGQodCk7XG4gICAgICAgIH0pO1xuICAgIH07XG59IGVsc2Uge1xuICAgIHVwZGF0ZUVsZW1lbnRzID0gKHR5cGUsIGNvbXBvbmVudHMpPT57XG4gICAgICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcbiAgICAgICAgY29uc3QgaGVhZENvdW50RWwgPSBoZWFkRWwucXVlcnlTZWxlY3RvcihcIm1ldGFbbmFtZT1uZXh0LWhlYWQtY291bnRdXCIpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAoIWhlYWRDb3VudEVsKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIldhcm5pbmc6IG5leHQtaGVhZC1jb3VudCBpcyBtaXNzaW5nLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWhlYWQtY291bnQtbWlzc2luZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZENvdW50ID0gTnVtYmVyKGhlYWRDb3VudEVsLmNvbnRlbnQpO1xuICAgICAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDAsIGogPSBoZWFkQ291bnRFbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBpIDwgaGVhZENvdW50OyBpKyssIGogPSAoaiA9PSBudWxsID8gdm9pZCAwIDogai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB8fCBudWxsKXtcbiAgICAgICAgICAgIHZhciBfal90YWdOYW1lO1xuICAgICAgICAgICAgaWYgKChqID09IG51bGwgPyB2b2lkIDAgOiAoX2pfdGFnTmFtZSA9IGoudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9qX3RhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnB1c2goaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGFncyA9IGNvbXBvbmVudHMubWFwKHJlYWN0RWxlbWVudFRvRE9NKS5maWx0ZXIoKG5ld1RhZyk9PntcbiAgICAgICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFRhZyA9IG9sZFRhZ3Nba107XG4gICAgICAgICAgICAgICAgaWYgKGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSkge1xuICAgICAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICAgICAgdmFyIF90X3BhcmVudE5vZGU7XG4gICAgICAgICAgICByZXR1cm4gKF90X3BhcmVudE5vZGUgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbCkpO1xuICAgICAgICBoZWFkQ291bnRFbC5jb250ZW50ID0gKGhlYWRDb3VudCAtIG9sZFRhZ3MubGVuZ3RoICsgbmV3VGFncy5sZW5ndGgpLnRvU3RyaW5nKCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGluaXRIZWFkTWFuYWdlcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzOiBuZXcgU2V0KCksXG4gICAgICAgIHVwZGF0ZUhlYWQ6IChoZWFkKT0+e1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IHt9O1xuICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChoKT0+e1xuICAgICAgICAgICAgICAgIGlmICgvLyBJZiB0aGUgZm9udCB0YWcgaXMgbG9hZGVkIG9ubHkgb24gY2xpZW50IG5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAvLyBpdCB3b24ndCBiZSBpbmxpbmVkLiBJbiB0aGlzIGNhc2UgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIGgudHlwZSA9PT0gXCJsaW5rXCIgJiYgaC5wcm9wc1tcImRhdGEtb3B0aW1pemVkLWZvbnRzXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLWhyZWY9XCInICsgaC5wcm9wc1tcImRhdGEtaHJlZlwiXSArICdcIl0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wcy5ocmVmID0gaC5wcm9wc1tcImRhdGEtaHJlZlwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHNbXCJkYXRhLWhyZWZcIl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRhZ3NbaC50eXBlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaCk7XG4gICAgICAgICAgICAgICAgdGFnc1toLnR5cGVdID0gY29tcG9uZW50cztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGl0bGVDb21wb25lbnQgPSB0YWdzLnRpdGxlID8gdGFncy50aXRsZVswXSA6IG51bGw7XG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHRpdGxlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gdGl0bGVDb21wb25lbnQucHJvcHM7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGl0bGUgIT09IGRvY3VtZW50LnRpdGxlKSBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFwibWV0YVwiLFxuICAgICAgICAgICAgICAgIFwiYmFzZVwiLFxuICAgICAgICAgICAgICAgIFwibGlua1wiLFxuICAgICAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgICAgICBcInNjcmlwdFwiXG4gICAgICAgICAgICBdLmZvckVhY2goKHR5cGUpPT57XG4gICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudHModHlwZSwgdGFnc1t0eXBlXSB8fCBbXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlYWQtbWFuYWdlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJET01BdHRyaWJ1dGVOYW1lcyIsImlzRXF1YWxOb2RlIiwiZGVmYXVsdCIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsImluaXRIZWFkTWFuYWdlciIsImFjY2VwdENoYXJzZXQiLCJjbGFzc05hbWUiLCJodG1sRm9yIiwiaHR0cEVxdWl2Iiwibm9Nb2R1bGUiLCJyZWFjdEVsZW1lbnRUb0RPTSIsInBhcmFtIiwidHlwZSIsInByb3BzIiwiZWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJ1bmRlZmluZWQiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJjaGlsZHJlbiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwib2xkVGFnIiwibmV3VGFnIiwiSFRNTEVsZW1lbnQiLCJub25jZSIsImdldEF0dHJpYnV0ZSIsImNsb25lVGFnIiwiY2xvbmVOb2RlIiwidXBkYXRlRWxlbWVudHMiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NUUklDVF9ORVhUX0hFQUQiLCJjb21wb25lbnRzIiwiaGVhZEVsIiwicXVlcnlTZWxlY3RvciIsImhlYWRNZXRhVGFncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJvbGRUYWdzIiwibWV0YUNoYXJzZXQiLCJwdXNoIiwiaSIsImxlbmd0aCIsIl9oZWFkVGFnX3RhZ05hbWUiLCJtZXRhVGFnIiwiaGVhZFRhZyIsIm5leHRTaWJsaW5nIiwidGFnTmFtZSIsIm5ld1RhZ3MiLCJtYXAiLCJmaWx0ZXIiLCJrIiwibGVuIiwic3BsaWNlIiwiZm9yRWFjaCIsInQiLCJfdF9wYXJlbnROb2RlIiwicHJldmlvdXNTaWJsaW5nIiwiX3RfcGFyZW50Tm9kZTEiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJfdF90YWdOYW1lIiwibWV0YSIsImNvbnRlbnQiLCJhcHBlbmRDaGlsZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaGVhZENvdW50RWwiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIl9qX3RhZ05hbWUiLCJpbnNlcnRCZWZvcmUiLCJ0b1N0cmluZyIsIm1vdW50ZWRJbnN0YW5jZXMiLCJTZXQiLCJ1cGRhdGVIZWFkIiwiaGVhZCIsInRhZ3MiLCJoIiwiaHJlZiIsInRpdGxlQ29tcG9uZW50IiwidGl0bGUiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/index.js": /*!************************************************!*\ !*** ./node_modules/next/dist/client/index.js ***! \************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* global location */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$();\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n version: function() {\n return version;\n },\n router: function() {\n return router;\n },\n emitter: function() {\n return emitter;\n },\n initialize: function() {\n return initialize;\n },\n hydrate: function() {\n return hydrate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"./node_modules/next/dist/build/polyfills/polyfill-module.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _client = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom/client */ \"./node_modules/react-dom/client.js\"));\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js\");\nconst _mitt = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/mitt */ \"./node_modules/next/dist/shared/lib/mitt.js\"));\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\");\nconst _handlesmoothscroll = __webpack_require__(/*! ../shared/lib/router/utils/handle-smooth-scroll */ \"./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nconst _isdynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _runtimeconfigexternal = __webpack_require__(/*! ../shared/lib/runtime-config.external */ \"./node_modules/next/dist/shared/lib/runtime-config.external.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"./node_modules/next/dist/shared/lib/utils.js\");\nconst _portal = __webpack_require__(/*! ./portal */ \"./node_modules/next/dist/client/portal/index.js\");\nconst _headmanager = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\"));\nconst _pageloader = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./page-loader */ \"./node_modules/next/dist/client/page-loader.js\"));\nconst _performancerelayer = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./performance-relayer */ \"./node_modules/next/dist/client/performance-relayer.js\"));\nconst _routeannouncer = __webpack_require__(/*! ./route-announcer */ \"./node_modules/next/dist/client/route-announcer.js\");\nconst _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nconst _iserror = __webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\");\nconst _imageconfigcontextsharedruntime = __webpack_require__(/*! ../shared/lib/image-config-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js\");\nconst _removebasepath = __webpack_require__(/*! ./remove-base-path */ \"./node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../shared/lib/app-router-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _adapters = __webpack_require__(/*! ../shared/lib/router/adapters */ \"./node_modules/next/dist/shared/lib/router/adapters.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../shared/lib/hooks-client-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\nconst _onrecoverableerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./on-recoverable-error */ \"./node_modules/next/dist/client/on-recoverable-error.js\"));\nconst _tracer = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./tracing/tracer */ \"./node_modules/next/dist/client/tracing/tracer.js\"));\nconst _reporttosocket = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./tracing/report-to-socket */ \"./node_modules/next/dist/client/tracing/report-to-socket.js\"));\nconst version = \"14.1.0\";\nlet router;\nconst emitter = (0, _mitt.default)();\nconst looseToArray = (input)=>[].slice.call(input);\nlet initialData;\nlet defaultLocale = undefined;\nlet asPath;\nlet pageLoader;\nlet appElement;\nlet headManager;\nlet initialMatchesMiddleware = false;\nlet lastAppProps;\nlet lastRenderReject;\nlet devClient;\nlet CachedApp, onPerfEntry;\nlet CachedComponent;\nclass Container extends _react.default.Component {\n componentDidCatch(componentErr, info) {\n this.props.fn(componentErr, info);\n }\n componentDidMount() {\n this.scrollToHash();\n // We need to replace the router state if:\n // - the page was (auto) exported and has a query string or search (hash)\n // - it was auto exported and is a dynamic route (to provide params)\n // - if it is a client-side skeleton (fallback render)\n // - if middleware matches the current page (may have rewrite params)\n // - if rewrites in next.config.js match (may have rewrite params)\n if (router.isSsr && (initialData.isFallback || initialData.nextExport && ((0, _isdynamic.isDynamicRoute)(router.pathname) || location.search || true || 0) || initialData.props && initialData.props.__N_SSG && (location.search || true || 0))) {\n // update query on mount for exported pages\n router.replace(router.pathname + \"?\" + String((0, _querystring.assign)((0, _querystring.urlQueryToSearchParams)(router.query), new URLSearchParams(location.search))), asPath, {\n // @ts-ignore\n // WARNING: `_h` is an internal option for handing Next.js\n // client-side hydration. Your app should _never_ use this property.\n // It may change at any time without notice.\n _h: 1,\n // Fallback pages must trigger the data fetch, so the transition is\n // not shallow.\n // Other pages (strictly updating query) happens shallowly, as data\n // requirements would already be present.\n shallow: !initialData.isFallback && !initialMatchesMiddleware\n }).catch((err)=>{\n if (!err.cancelled) throw err;\n });\n }\n }\n componentDidUpdate() {\n this.scrollToHash();\n }\n scrollToHash() {\n let { hash } = location;\n hash = hash && hash.substring(1);\n if (!hash) return;\n const el = document.getElementById(hash);\n if (!el) return;\n // If we call scrollIntoView() in here without a setTimeout\n // it won't scroll properly.\n setTimeout(()=>el.scrollIntoView(), 0);\n }\n render() {\n if (false) {} else {\n const { ReactDevOverlay } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(ReactDevOverlay, {\n children: this.props.children\n });\n }\n }\n}\nasync function initialize(opts) {\n if (opts === void 0) opts = {};\n _tracer.default.onSpanEnd(_reporttosocket.default);\n // This makes sure this specific lines are removed in production\n if (true) {\n devClient = opts.devClient;\n }\n initialData = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\n window.__NEXT_DATA__ = initialData;\n defaultLocale = initialData.defaultLocale;\n const prefix = initialData.assetPrefix || \"\";\n self.__next_set_public_path__(\"\" + prefix + \"/_next/\") //eslint-disable-line\n ;\n // Initialize next/config with the environment configuration\n (0, _runtimeconfigexternal.setConfig)({\n serverRuntimeConfig: {},\n publicRuntimeConfig: initialData.runtimeConfig || {}\n });\n asPath = (0, _utils.getURL)();\n // make sure not to attempt stripping basePath for 404s\n if ((0, _hasbasepath.hasBasePath)(asPath)) {\n asPath = (0, _removebasepath.removeBasePath)(asPath);\n }\n if (false) {}\n if (initialData.scriptLoader) {\n const { initScriptLoader } = __webpack_require__(/*! ./script */ \"./node_modules/next/dist/client/script.js\");\n initScriptLoader(initialData.scriptLoader);\n }\n pageLoader = new _pageloader.default(initialData.buildId, prefix);\n const register = (param)=>{\n let [r, f] = param;\n return pageLoader.routeLoader.onEntrypoint(r, f);\n };\n if (window.__NEXT_P) {\n // Defer page registration for another tick. This will increase the overall\n // latency in hydrating the page, but reduce the total blocking time.\n window.__NEXT_P.map((p)=>setTimeout(()=>register(p), 0));\n }\n window.__NEXT_P = [];\n window.__NEXT_P.push = register;\n headManager = (0, _headmanager.default)();\n headManager.getIsSsr = ()=>{\n return router.isSsr;\n };\n appElement = document.getElementById(\"__next\");\n return {\n assetPrefix: prefix\n };\n}\nfunction renderApp(App, appProps) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(App, {\n ...appProps\n });\n}\nfunction AppContainer(param) {\n _s();\n let { children } = param;\n // Create a memoized value for next/navigation router context.\n const adaptedForAppRouter = _react.default.useMemo(()=>{\n return (0, _adapters.adaptForAppRouterInstance)(router);\n }, []);\n var _self___NEXT_DATA___autoExport;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Container, {\n fn: (error)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n renderError({\n App: CachedApp,\n err: error\n }).catch((err)=>console.error(\"Error rendering page: \", err)),\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.AppRouterContext.Provider, {\n value: adaptedForAppRouter,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.SearchParamsContext.Provider, {\n value: (0, _adapters.adaptForSearchParams)(router),\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_adapters.PathnameContextProviderAdapter, {\n router: router,\n isAutoExport: (_self___NEXT_DATA___autoExport = self.__NEXT_DATA__.autoExport) != null ? _self___NEXT_DATA___autoExport : false,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.PathParamsContext.Provider, {\n value: (0, _adapters.adaptForPathParams)(router),\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_routercontextsharedruntime.RouterContext.Provider, {\n value: (0, _router.makePublicRouterInstance)(router),\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_headmanagercontextsharedruntime.HeadManagerContext.Provider, {\n value: headManager,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_imageconfigcontextsharedruntime.ImageConfigContext.Provider, {\n value: {\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image/\",\"loader\":\"default\",\"dangerouslyAllowSVG\":false,\"unoptimized\":false,\"domains\":[\"lh3.googleusercontent.com\"],\"remotePatterns\":[]},\n children: children\n })\n })\n })\n })\n })\n })\n })\n });\n}\n_s(AppContainer, \"F6BSfrFQNeqenuPnUMVY/6gI8uE=\");\n_c = AppContainer;\nconst wrapApp = (App)=>(wrappedAppProps)=>{\n const appProps = {\n ...wrappedAppProps,\n Component: CachedComponent,\n err: initialData.err,\n router\n };\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(AppContainer, {\n children: renderApp(App, appProps)\n });\n };\n// This method handles all runtime and debug errors.\n// 404 and 500 errors are special kind of errors\n// and they are still handle via the main render method.\nfunction renderError(renderErrorProps) {\n let { App, err } = renderErrorProps;\n // In development runtime errors are caught by our overlay\n // In production we catch runtime errors using componentDidCatch which will trigger renderError\n if (true) {\n // A Next.js rendering runtime error is always unrecoverable\n // FIXME: let's make this recoverable (error in GIP client-transition)\n devClient.onUnrecoverableError();\n // We need to render an empty so that the `` can\n // render itself.\n // TODO: Fix disabled eslint rule\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return doRender({\n App: ()=>null,\n props: {},\n Component: ()=>null,\n styleSheets: []\n });\n }\n // Make sure we log the error to the console, otherwise users can't track down issues.\n console.error(err);\n console.error(\"A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred\");\n return pageLoader.loadPage(\"/_error\").then((param)=>{\n let { page: ErrorComponent, styleSheets } = param;\n return (lastAppProps == null ? void 0 : lastAppProps.Component) === ErrorComponent ? Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../pages/_error */ \"./node_modules/next/dist/pages/_error.js\"))).then((errorModule)=>{\n return Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../pages/_app */ \"./node_modules/next/dist/pages/_app.js\"))).then((appModule)=>{\n App = appModule.default;\n renderErrorProps.App = App;\n return errorModule;\n });\n }).then((m)=>({\n ErrorComponent: m.default,\n styleSheets: []\n })) : {\n ErrorComponent,\n styleSheets\n };\n }).then((param)=>{\n let { ErrorComponent, styleSheets } = param;\n var _renderErrorProps_props;\n // In production we do a normal render with the `ErrorComponent` as component.\n // If we've gotten here upon initial render, we can use the props from the server.\n // Otherwise, we need to call `getInitialProps` on `App` before mounting.\n const AppTree = wrapApp(App);\n const appCtx = {\n Component: ErrorComponent,\n AppTree,\n router,\n ctx: {\n err,\n pathname: initialData.page,\n query: initialData.query,\n asPath,\n AppTree\n }\n };\n return Promise.resolve(((_renderErrorProps_props = renderErrorProps.props) == null ? void 0 : _renderErrorProps_props.err) ? renderErrorProps.props : (0, _utils.loadGetInitialProps)(App, appCtx)).then((initProps)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n doRender({\n ...renderErrorProps,\n err,\n Component: ErrorComponent,\n styleSheets,\n props: initProps\n }));\n });\n}\n// Dummy component that we render as a child of Root so that we can\n// toggle the correct styles before the page is rendered.\nfunction Head(param) {\n _s1();\n let { callback } = param;\n // We use `useLayoutEffect` to guarantee the callback is executed\n // as soon as React flushes the update.\n _react.default.useLayoutEffect(()=>callback(), [\n callback\n ]);\n return null;\n}\n_s1(Head, \"n7/vCynhJvM+pLkyL2DMQUF0odM=\");\n_c1 = Head;\nconst performanceMarks = {\n navigationStart: \"navigationStart\",\n beforeRender: \"beforeRender\",\n afterRender: \"afterRender\",\n afterHydrate: \"afterHydrate\",\n routeChange: \"routeChange\"\n};\nconst performanceMeasures = {\n hydration: \"Next.js-hydration\",\n beforeHydration: \"Next.js-before-hydration\",\n routeChangeToRender: \"Next.js-route-change-to-render\",\n render: \"Next.js-render\"\n};\nlet reactRoot = null;\n// On initial render a hydrate should always happen\nlet shouldHydrate = true;\nfunction clearMarks() {\n [\n performanceMarks.beforeRender,\n performanceMarks.afterHydrate,\n performanceMarks.afterRender,\n performanceMarks.routeChange\n ].forEach((mark)=>performance.clearMarks(mark));\n}\nfunction markHydrateComplete() {\n if (!_utils.ST) return;\n performance.mark(performanceMarks.afterHydrate) // mark end of hydration\n ;\n const hasBeforeRenderMark = performance.getEntriesByName(performanceMarks.beforeRender, \"mark\").length;\n if (hasBeforeRenderMark) {\n const beforeHydrationMeasure = performance.measure(performanceMeasures.beforeHydration, performanceMarks.navigationStart, performanceMarks.beforeRender);\n const hydrationMeasure = performance.measure(performanceMeasures.hydration, performanceMarks.beforeRender, performanceMarks.afterHydrate);\n if ( true && // Old versions of Safari don't return `PerformanceMeasure`s from `performance.measure()`\n beforeHydrationMeasure !== undefined && hydrationMeasure !== undefined) {\n _tracer.default.startSpan(\"navigation-to-hydration\", {\n startTime: performance.timeOrigin + beforeHydrationMeasure.startTime,\n attributes: {\n pathname: location.pathname,\n query: location.search\n }\n }).end(performance.timeOrigin + hydrationMeasure.startTime + hydrationMeasure.duration);\n }\n }\n if (onPerfEntry) {\n performance.getEntriesByName(performanceMeasures.hydration).forEach(onPerfEntry);\n }\n clearMarks();\n}\nfunction markRenderComplete() {\n if (!_utils.ST) return;\n performance.mark(performanceMarks.afterRender) // mark end of render\n ;\n const navStartEntries = performance.getEntriesByName(performanceMarks.routeChange, \"mark\");\n if (!navStartEntries.length) return;\n const hasBeforeRenderMark = performance.getEntriesByName(performanceMarks.beforeRender, \"mark\").length;\n if (hasBeforeRenderMark) {\n performance.measure(performanceMeasures.routeChangeToRender, navStartEntries[0].name, performanceMarks.beforeRender);\n performance.measure(performanceMeasures.render, performanceMarks.beforeRender, performanceMarks.afterRender);\n if (onPerfEntry) {\n performance.getEntriesByName(performanceMeasures.render).forEach(onPerfEntry);\n performance.getEntriesByName(performanceMeasures.routeChangeToRender).forEach(onPerfEntry);\n }\n }\n clearMarks();\n [\n performanceMeasures.routeChangeToRender,\n performanceMeasures.render\n ].forEach((measure)=>performance.clearMeasures(measure));\n}\nfunction renderReactElement(domEl, fn) {\n // mark start of hydrate/render\n if (_utils.ST) {\n performance.mark(performanceMarks.beforeRender);\n }\n const reactEl = fn(shouldHydrate ? markHydrateComplete : markRenderComplete);\n if (!reactRoot) {\n // Unlike with createRoot, you don't need a separate root.render() call here\n reactRoot = _client.default.hydrateRoot(domEl, reactEl, {\n onRecoverableError: _onrecoverableerror.default\n });\n // TODO: Remove shouldHydrate variable when React 18 is stable as it can depend on `reactRoot` existing\n shouldHydrate = false;\n } else {\n const startTransition = _react.default.startTransition;\n startTransition(()=>{\n reactRoot.render(reactEl);\n });\n }\n}\nfunction Root(param) {\n _s2();\n let { callbacks, children } = param;\n // We use `useLayoutEffect` to guarantee the callbacks are executed\n // as soon as React flushes the update\n _react.default.useLayoutEffect(()=>callbacks.forEach((callback)=>callback()), [\n callbacks\n ]);\n // We should ask to measure the Web Vitals after rendering completes so we\n // don't cause any hydration delay:\n _react.default.useEffect(()=>{\n (0, _performancerelayer.default)(onPerfEntry);\n }, []);\n if (false) {}\n return children;\n}\n_s2(Root, \"Gjgl5rfcc2T4sFnfEMfRvL6K4Q4=\");\n_c2 = Root;\nfunction doRender(input) {\n let { App, Component, props, err } = input;\n let styleSheets = \"initial\" in input ? undefined : input.styleSheets;\n Component = Component || lastAppProps.Component;\n props = props || lastAppProps.props;\n const appProps = {\n ...props,\n Component,\n err,\n router\n };\n // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.\n lastAppProps = appProps;\n let canceled = false;\n let resolvePromise;\n const renderPromise = new Promise((resolve, reject)=>{\n if (lastRenderReject) {\n lastRenderReject();\n }\n resolvePromise = ()=>{\n lastRenderReject = null;\n resolve();\n };\n lastRenderReject = ()=>{\n canceled = true;\n lastRenderReject = null;\n const error = new Error(\"Cancel rendering route\");\n error.cancelled = true;\n reject(error);\n };\n });\n // This function has a return type to ensure it doesn't start returning a\n // Promise. It should remain synchronous.\n function onStart() {\n if (!styleSheets || // We use `style-loader` in development, so we don't need to do anything\n // unless we're in production:\n \"development\" !== \"production\") {\n return false;\n }\n const currentStyleTags = looseToArray(document.querySelectorAll(\"style[data-n-href]\"));\n const currentHrefs = new Set(currentStyleTags.map((tag)=>tag.getAttribute(\"data-n-href\")));\n const noscript = document.querySelector(\"noscript[data-n-css]\");\n const nonce = noscript == null ? void 0 : noscript.getAttribute(\"data-n-css\");\n styleSheets.forEach((param)=>{\n let { href, text } = param;\n if (!currentHrefs.has(href)) {\n const styleTag = document.createElement(\"style\");\n styleTag.setAttribute(\"data-n-href\", href);\n styleTag.setAttribute(\"media\", \"x\");\n if (nonce) {\n styleTag.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(styleTag);\n styleTag.appendChild(document.createTextNode(text));\n }\n });\n return true;\n }\n function onHeadCommit() {\n if (// unless we're in production:\n false) {}\n if (input.scroll) {\n const { x, y } = input.scroll;\n (0, _handlesmoothscroll.handleSmoothScroll)(()=>{\n window.scrollTo(x, y);\n });\n }\n }\n function onRootCommit() {\n resolvePromise();\n }\n onStart();\n const elem = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(Head, {\n callback: onHeadCommit\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(AppContainer, {\n children: [\n renderApp(App, appProps),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_portal.Portal, {\n type: \"next-route-announcer\",\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_routeannouncer.RouteAnnouncer, {})\n })\n ]\n })\n ]\n });\n // We catch runtime errors using componentDidCatch which will trigger renderError\n renderReactElement(appElement, (callback)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(Root, {\n callbacks: [\n callback,\n onRootCommit\n ],\n children: true ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.default.StrictMode, {\n children: elem\n }) : 0\n }));\n return renderPromise;\n}\nasync function render(renderingProps) {\n if (renderingProps.err) {\n await renderError(renderingProps);\n return;\n }\n try {\n await doRender(renderingProps);\n } catch (err) {\n const renderErr = (0, _iserror.getProperError)(err);\n // bubble up cancelation errors\n if (renderErr.cancelled) {\n throw renderErr;\n }\n if (true) {\n // Ensure this error is displayed in the overlay in development\n setTimeout(()=>{\n throw renderErr;\n });\n }\n await renderError({\n ...renderingProps,\n err: renderErr\n });\n }\n}\nasync function hydrate(opts) {\n let initialErr = initialData.err;\n try {\n const appEntrypoint = await pageLoader.routeLoader.whenEntrypoint(\"/_app\");\n if (\"error\" in appEntrypoint) {\n throw appEntrypoint.error;\n }\n const { component: app, exports: mod } = appEntrypoint;\n CachedApp = app;\n if (mod && mod.reportWebVitals) {\n onPerfEntry = (param)=>{\n let { id, name, startTime, value, duration, entryType, entries, attribution } = param;\n // Combines timestamp with random number for unique ID\n const uniqueID = Date.now() + \"-\" + (Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n let perfStartEntry;\n if (entries && entries.length) {\n perfStartEntry = entries[0].startTime;\n }\n const webVitals = {\n id: id || uniqueID,\n name,\n startTime: startTime || perfStartEntry,\n value: value == null ? duration : value,\n label: entryType === \"mark\" || entryType === \"measure\" ? \"custom\" : \"web-vital\"\n };\n if (attribution) {\n webVitals.attribution = attribution;\n }\n mod.reportWebVitals(webVitals);\n };\n }\n const pageEntrypoint = // error, so we need to skip waiting for the entrypoint.\n true && initialData.err ? {\n error: initialData.err\n } : await pageLoader.routeLoader.whenEntrypoint(initialData.page);\n if (\"error\" in pageEntrypoint) {\n throw pageEntrypoint.error;\n }\n CachedComponent = pageEntrypoint.component;\n if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"./node_modules/next/dist/compiled/react-is/index.js\");\n if (!isValidElementType(CachedComponent)) {\n throw new Error('The default export is not a React Component in page: \"' + initialData.page + '\"');\n }\n }\n } catch (error) {\n // This catches errors like throwing in the top level of a module\n initialErr = (0, _iserror.getProperError)(error);\n }\n if (true) {\n const { getServerError } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n // Server-side runtime errors need to be re-thrown on the client-side so\n // that the overlay is rendered.\n if (initialErr) {\n if (initialErr === initialData.err) {\n setTimeout(()=>{\n let error;\n try {\n // Generate a new error object. We `throw` it because some browsers\n // will set the `stack` when thrown, and we want to ensure ours is\n // not overridden when we re-throw it below.\n throw new Error(initialErr.message);\n } catch (e) {\n error = e;\n }\n error.name = initialErr.name;\n error.stack = initialErr.stack;\n throw getServerError(error, initialErr.source);\n });\n } else {\n setTimeout(()=>{\n throw initialErr;\n });\n }\n }\n }\n if (window.__NEXT_PRELOADREADY) {\n await window.__NEXT_PRELOADREADY(initialData.dynamicIds);\n }\n router = (0, _router.createRouter)(initialData.page, initialData.query, asPath, {\n initialProps: initialData.props,\n pageLoader,\n App: CachedApp,\n Component: CachedComponent,\n wrapApp,\n err: initialErr,\n isFallback: Boolean(initialData.isFallback),\n subscription: (info, App, scroll)=>render(Object.assign({}, info, {\n App,\n scroll\n })),\n locale: initialData.locale,\n locales: initialData.locales,\n defaultLocale,\n domainLocales: initialData.domainLocales,\n isPreview: initialData.isPreview\n });\n initialMatchesMiddleware = await router._initialMatchesMiddlewarePromise;\n const renderCtx = {\n App: CachedApp,\n initial: true,\n Component: CachedComponent,\n props: initialData.props,\n err: initialErr\n };\n if (opts == null ? void 0 : opts.beforeRender) {\n await opts.beforeRender();\n }\n render(renderCtx);\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=index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"AppContainer\");\n$RefreshReg$(_c1, \"Head\");\n$RefreshReg$(_c2, \"Root\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsR0FBZ0I7Ozs7OztBQUFiO0FBQ3RCQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQU1OO0FBQ0EsU0FBU00sUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSVosT0FBT0MsY0FBYyxDQUFDVSxRQUFRRSxNQUFNO1FBQ3BEQyxZQUFZO1FBQ1pDLEtBQUtILEdBQUcsQ0FBQ0MsS0FBSztJQUNsQjtBQUNKO0FBQ0FILFFBQVFSLFNBQVM7SUFDYkcsU0FBUztRQUNMLE9BQU9BO0lBQ1g7SUFDQUMsUUFBUTtRQUNKLE9BQU9BO0lBQ1g7SUFDQUMsU0FBUztRQUNMLE9BQU9BO0lBQ1g7SUFDQUMsWUFBWTtRQUNSLE9BQU9BO0lBQ1g7SUFDQUMsU0FBUztRQUNMLE9BQU9BO0lBQ1g7QUFDSjtBQUNBLE1BQU1PLDJCQUEyQkMsbUJBQU9BLENBQUMsNEdBQXlDO0FBQ2xGLE1BQU1DLGNBQWNELG1CQUFPQSxDQUFDLDhEQUFtQjtBQUMvQ0EsbUJBQU9BLENBQUMsdUdBQW9DO0FBQzVDLE1BQU1FLFNBQVMsV0FBVyxHQUFHSCx5QkFBeUJJLENBQUMsQ0FBQ0gsbUJBQU9BLENBQUMsNENBQU87QUFDdkUsTUFBTUksVUFBVSxXQUFXLEdBQUdMLHlCQUF5QkksQ0FBQyxDQUFDSCxtQkFBT0EsQ0FBQyw0REFBa0I7QUFDbkYsTUFBTUssbUNBQW1DTCxtQkFBT0EsQ0FBQyxxSUFBbUQ7QUFDcEcsTUFBTU0sUUFBUSxXQUFXLEdBQUdQLHlCQUF5QkksQ0FBQyxDQUFDSCxtQkFBT0EsQ0FBQyx1RUFBb0I7QUFDbkYsTUFBTU8sOEJBQThCUCxtQkFBT0EsQ0FBQyx5SEFBNkM7QUFDekYsTUFBTVEsc0JBQXNCUixtQkFBT0EsQ0FBQyxpSUFBaUQ7QUFDckYsTUFBTVMsYUFBYVQsbUJB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YWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2luZGV4LmpzPzQ2Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGxvY2F0aW9uICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdmVyc2lvbjogbnVsbCxcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgZW1pdHRlcjogbnVsbCxcbiAgICBpbml0aWFsaXplOiBudWxsLFxuICAgIGh5ZHJhdGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgdmVyc2lvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH0sXG4gICAgcm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlcjtcbiAgICB9LFxuICAgIGVtaXR0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZW1pdHRlcjtcbiAgICB9LFxuICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZTtcbiAgICB9LFxuICAgIGh5ZHJhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaHlkcmF0ZTtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfanN4cnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnJlcXVpcmUoXCIuLi9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlXCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX2NsaWVudCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcInJlYWN0LWRvbS9jbGllbnRcIikpO1xuY29uc3QgX2hlYWRtYW5hZ2VyY29udGV4dHNoYXJlZHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9oZWFkLW1hbmFnZXItY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmNvbnN0IF9taXR0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9taXR0XCIpKTtcbmNvbnN0IF9yb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCIpO1xuY29uc3QgX2hhbmRsZXNtb290aHNjcm9sbCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9oYW5kbGUtc21vb3RoLXNjcm9sbFwiKTtcbmNvbnN0IF9pc2R5bmFtaWMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pY1wiKTtcbmNvbnN0IF9xdWVyeXN0cmluZyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9xdWVyeXN0cmluZ1wiKTtcbmNvbnN0IF9ydW50aW1lY29uZmlnZXh0ZXJuYWwgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9ydW50aW1lLWNvbmZpZy5leHRlcm5hbFwiKTtcbmNvbnN0IF91dGlscyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3V0aWxzXCIpO1xuY29uc3QgX3BvcnRhbCA9IHJlcXVpcmUoXCIuL3BvcnRhbFwiKTtcbmNvbnN0IF9oZWFkbWFuYWdlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vaGVhZC1tYW5hZ2VyXCIpKTtcbmNvbnN0IF9wYWdlbG9hZGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9wYWdlLWxvYWRlclwiKSk7XG5jb25zdCBfcGVyZm9ybWFuY2VyZWxheWVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9wZXJmb3JtYW5jZS1yZWxheWVyXCIpKTtcbmNvbnN0IF9yb3V0ZWFubm91bmNlciA9IHJlcXVpcmUoXCIuL3JvdXRlLWFubm91bmNlclwiKTtcbmNvbnN0IF9yb3V0ZXIgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG5jb25zdCBfaXNlcnJvciA9IHJlcXVpcmUoXCIuLi9saWIvaXMtZXJyb3JcIik7XG5jb25zdCBfaW1hZ2Vjb25maWdjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2ltYWdlLWNvbmZpZy1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCIpO1xuY29uc3QgX3JlbW92ZWJhc2VwYXRoID0gcmVxdWlyZShcIi4vcmVtb3ZlLWJhc2UtcGF0aFwiKTtcbmNvbnN0IF9oYXNiYXNlcGF0aCA9IHJlcXVpcmUoXCIuL2hhcy1iYXNlLXBhdGhcIik7XG5jb25zdCBfYXBwcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWVcIik7XG5jb25zdCBfYWRhcHRlcnMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvYWRhcHRlcnNcIik7XG5jb25zdCBfaG9va3NjbGllbnRjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2hvb2tzLWNsaWVudC1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCIpO1xuY29uc3QgX29ucmVjb3ZlcmFibGVlcnJvciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vb24tcmVjb3ZlcmFibGUtZXJyb3JcIikpO1xuY29uc3QgX3RyYWNlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vdHJhY2luZy90cmFjZXJcIikpO1xuY29uc3QgX3JlcG9ydHRvc29ja2V0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi90cmFjaW5nL3JlcG9ydC10by1zb2NrZXRcIikpO1xuY29uc3QgdmVyc2lvbiA9IFwiMTQuMS4wXCI7XG5sZXQgcm91dGVyO1xuY29uc3QgZW1pdHRlciA9ICgwLCBfbWl0dC5kZWZhdWx0KSgpO1xuY29uc3QgbG9vc2VUb0FycmF5ID0gKGlucHV0KT0+W10uc2xpY2UuY2FsbChpbnB1dCk7XG5sZXQgaW5pdGlhbERhdGE7XG5sZXQgZGVmYXVsdExvY2FsZSA9IHVuZGVmaW5lZDtcbmxldCBhc1BhdGg7XG5sZXQgcGFnZUxvYWRlcjtcbmxldCBhcHBFbGVtZW50O1xubGV0IGhlYWRNYW5hZ2VyO1xubGV0IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSA9IGZhbHNlO1xubGV0IGxhc3RBcHBQcm9wcztcbmxldCBsYXN0UmVuZGVyUmVqZWN0O1xubGV0IGRldkNsaWVudDtcbmxldCBDYWNoZWRBcHAsIG9uUGVyZkVudHJ5O1xubGV0IENhY2hlZENvbXBvbmVudDtcbmNsYXNzIENvbnRhaW5lciBleHRlbmRzIF9yZWFjdC5kZWZhdWx0LkNvbXBvbmVudCB7XG4gICAgY29tcG9uZW50RGlkQ2F0Y2goY29tcG9uZW50RXJyLCBpbmZvKSB7XG4gICAgICAgIHRoaXMucHJvcHMuZm4oY29tcG9uZW50RXJyLCBpbmZvKTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9IYXNoKCk7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgcm91dGVyIHN0YXRlIGlmOlxuICAgICAgICAvLyAtIHRoZSBwYWdlIHdhcyAoYXV0bykgZXhwb3J0ZWQgYW5kIGhhcyBhIHF1ZXJ5IHN0cmluZyBvciBzZWFyY2ggKGhhc2gpXG4gICAgICAgIC8vIC0gaXQgd2FzIGF1dG8gZXhwb3J0ZWQgYW5kIGlzIGEgZHluYW1pYyByb3V0ZSAodG8gcHJvdmlkZSBwYXJhbXMpXG4gICAgICAgIC8vIC0gaWYgaXQgaXMgYSBjbGllbnQtc2lkZSBza2VsZXRvbiAoZmFsbGJhY2sgcmVuZGVyKVxuICAgICAgICAvLyAtIGlmIG1pZGRsZXdhcmUgbWF0Y2hlcyB0aGUgY3VycmVudCBwYWdlIChtYXkgaGF2ZSByZXdyaXRlIHBhcmFtcylcbiAgICAgICAgLy8gLSBpZiByZXdyaXRlcyBpbiBuZXh0LmNvbmZpZy5qcyBtYXRjaCAobWF5IGhhdmUgcmV3cml0ZSBwYXJhbXMpXG4gICAgICAgIGlmIChyb3V0ZXIuaXNTc3IgJiYgKGluaXRpYWxEYXRhLmlzRmFsbGJhY2sgfHwgaW5pdGlhbERhdGEubmV4dEV4cG9ydCAmJiAoKDAsIF9pc2R5bmFtaWMuaXNEeW5hbWljUm91dGUpKHJvdXRlci5wYXRobmFtZSkgfHwgbG9jYXRpb24uc2VhcmNoIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgfHwgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlKSB8fCBpbml0aWFsRGF0YS5wcm9wcyAmJiBpbml0aWFsRGF0YS5wcm9wcy5fX05fU1NHICYmIChsb2NhdGlvbi5zZWFyY2ggfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0hBU19SRVdSSVRFUyB8fCBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUpKSkge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHF1ZXJ5IG9uIG1vdW50IGZvciBleHBvcnRlZCBwYWdlc1xuICAgICAgICAgICAgcm91dGVyLnJlcGxhY2Uocm91dGVyLnBhdGhuYW1lICsgXCI/XCIgKyBTdHJpbmcoKDAsIF9xdWVyeXN0cmluZy5hc3NpZ24pKCgwLCBfcXVlcnlzdHJpbmcudXJsUXVlcnlUb1NlYXJjaFBhcmFtcykocm91dGVyLnF1ZXJ5KSwgbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpKSksIGFzUGF0aCwge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAvLyBXQVJOSU5HOiBgX2hgIGlzIGFuIGludGVybmFsIG9wdGlvbiBmb3IgaGFuZGluZyBOZXh0LmpzXG4gICAgICAgICAgICAgICAgLy8gY2xpZW50LXNpZGUgaHlkcmF0aW9uLiBZb3VyIGFwcCBzaG91bGQgX25ldmVyXyB1c2UgdGhpcyBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAgICAvLyBJdCBtYXkgY2hhbmdlIGF0IGFueSB0aW1lIHdpdGhvdXQgbm90aWNlLlxuICAgICAgICAgICAgICAgIF9oOiAxLFxuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHBhZ2VzIG11c3QgdHJpZ2dlciB0aGUgZGF0YSBmZXRjaCwgc28gdGhlIHRyYW5zaXRpb24gaXNcbiAgICAgICAgICAgICAgICAvLyBub3Qgc2hhbGxvdy5cbiAgICAgICAgICAgICAgICAvLyBPdGhlciBwYWdlcyAoc3RyaWN0bHkgdXBkYXRpbmcgcXVlcnkpIGhhcHBlbnMgc2hhbGxvd2x5LCBhcyBkYXRhXG4gICAgICAgICAgICAgICAgLy8gcmVxdWlyZW1lbnRzIHdvdWxkIGFscmVhZHkgYmUgcHJlc2VudC5cbiAgICAgICAgICAgICAgICBzaGFsbG93OiAhaW5pdGlhbERhdGEuaXNGYWxsYmFjayAmJiAhaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgIGlmICghZXJyLmNhbmNlbGxlZCkgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgIH1cbiAgICBzY3JvbGxUb0hhc2goKSB7XG4gICAgICAgIGxldCB7IGhhc2ggfSA9IGxvY2F0aW9uO1xuICAgICAgICBoYXNoID0gaGFzaCAmJiBoYXNoLnN1YnN0cmluZygxKTtcbiAgICAgICAgaWYgKCFoYXNoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGFzaCk7XG4gICAgICAgIGlmICghZWwpIHJldHVybjtcbiAgICAgICAgLy8gSWYgd2UgY2FsbCBzY3JvbGxJbnRvVmlldygpIGluIGhlcmUgd2l0aG91dCBhIHNldFRpbWVvdXRcbiAgICAgICAgLy8gaXQgd29uJ3Qgc2Nyb2xsIHByb3Blcmx5LlxuICAgICAgICBzZXRUaW1lb3V0KCgpPT5lbC5zY3JvbGxJbnRvVmlldygpLCAwKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHsgUmVhY3REZXZPdmVybGF5IH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50XCIpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoUmVhY3REZXZPdmVybGF5LCB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZShvcHRzKSB7XG4gICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgb3B0cyA9IHt9O1xuICAgIF90cmFjZXIuZGVmYXVsdC5vblNwYW5FbmQoX3JlcG9ydHRvc29ja2V0LmRlZmF1bHQpO1xuICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGlzIHNwZWNpZmljIGxpbmVzIGFyZSByZW1vdmVkIGluIHByb2R1Y3Rpb25cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICBkZXZDbGllbnQgPSBvcHRzLmRldkNsaWVudDtcbiAgICB9XG4gICAgaW5pdGlhbERhdGEgPSBKU09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiX19ORVhUX0RBVEFfX1wiKS50ZXh0Q29udGVudCk7XG4gICAgd2luZG93Ll9fTkVYVF9EQVRBX18gPSBpbml0aWFsRGF0YTtcbiAgICBkZWZhdWx0TG9jYWxlID0gaW5pdGlhbERhdGEuZGVmYXVsdExvY2FsZTtcbiAgICBjb25zdCBwcmVmaXggPSBpbml0aWFsRGF0YS5hc3NldFByZWZpeCB8fCBcIlwiO1xuICAgIHNlbGYuX19uZXh0X3NldF9wdWJsaWNfcGF0aF9fKFwiXCIgKyBwcmVmaXggKyBcIi9fbmV4dC9cIikgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgO1xuICAgIC8vIEluaXRpYWxpemUgbmV4dC9jb25maWcgd2l0aCB0aGUgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgICgwLCBfcnVudGltZWNvbmZpZ2V4dGVybmFsLnNldENvbmZpZykoe1xuICAgICAgICBzZXJ2ZXJSdW50aW1lQ29uZmlnOiB7fSxcbiAgICAgICAgcHVibGljUnVudGltZUNvbmZpZzogaW5pdGlhbERhdGEucnVudGltZUNvbmZpZyB8fCB7fVxuICAgIH0pO1xuICAgIGFzUGF0aCA9ICgwLCBfdXRpbHMuZ2V0VVJMKSgpO1xuICAgIC8vIG1ha2Ugc3VyZSBub3QgdG8gYXR0ZW1wdCBzdHJpcHBpbmcgYmFzZVBhdGggZm9yIDQwNHNcbiAgICBpZiAoKDAsIF9oYXNiYXNlcGF0aC5oYXNCYXNlUGF0aCkoYXNQYXRoKSkge1xuICAgICAgICBhc1BhdGggPSAoMCwgX3JlbW92ZWJhc2VwYXRoLnJlbW92ZUJhc2VQYXRoKShhc1BhdGgpO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICBjb25zdCB7IG5vcm1hbGl6ZUxvY2FsZVBhdGggfSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2kxOG4vbm9ybWFsaXplLWxvY2FsZS1wYXRoXCIpO1xuICAgICAgICBjb25zdCB7IGRldGVjdERvbWFpbkxvY2FsZSB9ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZVwiKTtcbiAgICAgICAgY29uc3QgeyBwYXJzZVJlbGF0aXZlVXJsIH0gPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcmVsYXRpdmUtdXJsXCIpO1xuICAgICAgICBjb25zdCB7IGZvcm1hdFVybCB9ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmxcIik7XG4gICAgICAgIGlmIChpbml0aWFsRGF0YS5sb2NhbGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRBcyA9IHBhcnNlUmVsYXRpdmVVcmwoYXNQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsZVBhdGhSZXN1bHQgPSBub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBpbml0aWFsRGF0YS5sb2NhbGVzKTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVQYXRoUmVzdWx0LmRldGVjdGVkTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGFzUGF0aCA9IGZvcm1hdFVybChwYXJzZWRBcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRlcml2ZSB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgaXQgd2Fzbid0IGRldGVjdGVkIGluIHRoZSBhc1BhdGhcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBkb24ndCBwcmVyZW5kZXIgc3RhdGljIHBhZ2VzIHdpdGggYWxsIHBvc3NpYmxlIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAvLyBsb2NhbGVzXG4gICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSA9IGluaXRpYWxEYXRhLmxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF0dGVtcHQgZGV0ZWN0aW5nIGRlZmF1bHQgbG9jYWxlIGJhc2VkIG9uIGhvc3RuYW1lXG4gICAgICAgICAgICBjb25zdCBkZXRlY3RlZERvbWFpbiA9IGRldGVjdERvbWFpbkxvY2FsZShwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9ET01BSU5TLCB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xuICAgICAgICAgICAgLy8gVE9ETzogaW52ZXN0aWdhdGUgaWYgZGVmYXVsdExvY2FsZSBuZWVkcyB0byBiZSBwb3B1bGF0ZWQgYWZ0ZXJcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbiB0byBwcmV2ZW50IG1pc21hdGNoZWQgcmVuZGVyc1xuICAgICAgICAgICAgaWYgKGRldGVjdGVkRG9tYWluKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSA9IGRldGVjdGVkRG9tYWluLmRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxEYXRhLnNjcmlwdExvYWRlcikge1xuICAgICAgICBjb25zdCB7IGluaXRTY3JpcHRMb2FkZXIgfSA9IHJlcXVpcmUoXCIuL3NjcmlwdFwiKTtcbiAgICAgICAgaW5pdFNjcmlwdExvYWRlcihpbml0aWFsRGF0YS5zY3JpcHRMb2FkZXIpO1xuICAgIH1cbiAgICBwYWdlTG9hZGVyID0gbmV3IF9wYWdlbG9hZGVyLmRlZmF1bHQoaW5pdGlhbERhdGEuYnVpbGRJZCwgcHJlZml4KTtcbiAgICBjb25zdCByZWdpc3RlciA9IChwYXJhbSk9PntcbiAgICAgICAgbGV0IFtyLCBmXSA9IHBhcmFtO1xuICAgICAgICByZXR1cm4gcGFnZUxvYWRlci5yb3V0ZUxvYWRlci5vbkVudHJ5cG9pbnQociwgZik7XG4gICAgfTtcbiAgICBpZiAod2luZG93Ll9fTkVYVF9QKSB7XG4gICAgICAgIC8vIERlZmVyIHBhZ2UgcmVnaXN0cmF0aW9uIGZvciBhbm90aGVyIHRpY2suIFRoaXMgd2lsbCBpbmNyZWFzZSB0aGUgb3ZlcmFsbFxuICAgICAgICAvLyBsYXRlbmN5IGluIGh5ZHJhdGluZyB0aGUgcGFnZSwgYnV0IHJlZHVjZSB0aGUgdG90YWwgYmxvY2tpbmcgdGltZS5cbiAgICAgICAgd2luZG93Ll9fTkVYVF9QLm1hcCgocCk9PnNldFRpbWVvdXQoKCk9PnJlZ2lzdGVyKHApLCAwKSk7XG4gICAgfVxuICAgIHdpbmRvdy5fX05FWFRfUCA9IFtdO1xuICAgIHdpbmRvdy5fX05FWFRfUC5wdXNoID0gcmVnaXN0ZXI7XG4gICAgaGVhZE1hbmFnZXIgPSAoMCwgX2hlYWRtYW5hZ2VyLmRlZmF1bHQpKCk7XG4gICAgaGVhZE1hbmFnZXIuZ2V0SXNTc3IgPSAoKT0+e1xuICAgICAgICByZXR1cm4gcm91dGVyLmlzU3NyO1xuICAgIH07XG4gICAgYXBwRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiX19uZXh0XCIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFzc2V0UHJlZml4OiBwcmVmaXhcbiAgICB9O1xufVxuZnVuY3Rpb24gcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShBcHAsIHtcbiAgICAgICAgLi4uYXBwUHJvcHNcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIEFwcENvbnRhaW5lcihwYXJhbSkge1xuICAgIGxldCB7IGNoaWxkcmVuIH0gPSBwYXJhbTtcbiAgICAvLyBDcmVhdGUgYSBtZW1vaXplZCB2YWx1ZSBmb3IgbmV4dC9uYXZpZ2F0aW9uIHJvdXRlciBjb250ZXh0LlxuICAgIGNvbnN0IGFkYXB0ZWRGb3JBcHBSb3V0ZXIgPSBfcmVhY3QuZGVmYXVsdC51c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiAoMCwgX2FkYXB0ZXJzLmFkYXB0Rm9yQXBwUm91dGVySW5zdGFuY2UpKHJvdXRlcik7XG4gICAgfSwgW10pO1xuICAgIHZhciBfc2VsZl9fX05FWFRfREFUQV9fX2F1dG9FeHBvcnQ7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoQ29udGFpbmVyLCB7XG4gICAgICAgIGZuOiAoZXJyb3IpPT4vLyBUT0RPOiBGaXggZGlzYWJsZWQgZXNsaW50IHJ1bGVcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgIHJlbmRlckVycm9yKHtcbiAgICAgICAgICAgICAgICBBcHA6IENhY2hlZEFwcCxcbiAgICAgICAgICAgICAgICBlcnI6IGVycm9yXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+Y29uc29sZS5lcnJvcihcIkVycm9yIHJlbmRlcmluZyBwYWdlOiBcIiwgZXJyKSksXG4gICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKF9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZS5BcHBSb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgICAgICB2YWx1ZTogYWRhcHRlZEZvckFwcFJvdXRlcixcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKF9ob29rc2NsaWVudGNvbnRleHRzaGFyZWRydW50aW1lLlNlYXJjaFBhcmFtc0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogKDAsIF9hZGFwdGVycy5hZGFwdEZvclNlYXJjaFBhcmFtcykocm91dGVyKSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfYWRhcHRlcnMuUGF0aG5hbWVDb250ZXh0UHJvdmlkZXJBZGFwdGVyLCB7XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcjogcm91dGVyLFxuICAgICAgICAgICAgICAgICAgICBpc0F1dG9FeHBvcnQ6IChfc2VsZl9fX05FWFRfREFUQV9fX2F1dG9FeHBvcnQgPSBzZWxmLl9fTkVYVF9EQVRBX18uYXV0b0V4cG9ydCkgIT0gbnVsbCA/IF9zZWxmX19fTkVYVF9EQVRBX19fYXV0b0V4cG9ydCA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfaG9va3NjbGllbnRjb250ZXh0c2hhcmVkcnVudGltZS5QYXRoUGFyYW1zQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgwLCBfYWRhcHRlcnMuYWRhcHRGb3JQYXRoUGFyYW1zKShyb3V0ZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX3JvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLlJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogKDAsIF9yb3V0ZXIubWFrZVB1YmxpY1JvdXRlckluc3RhbmNlKShyb3V0ZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKF9oZWFkbWFuYWdlcmNvbnRleHRzaGFyZWRydW50aW1lLkhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaGVhZE1hbmFnZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKF9pbWFnZWNvbmZpZ2NvbnRleHRzaGFyZWRydW50aW1lLkltYWdlQ29uZmlnQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByb2Nlc3MuZW52Ll9fTkVYVF9JTUFHRV9PUFRTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSk7XG59XG5jb25zdCB3cmFwQXBwID0gKEFwcCk9Pih3cmFwcGVkQXBwUHJvcHMpPT57XG4gICAgICAgIGNvbnN0IGFwcFByb3BzID0ge1xuICAgICAgICAgICAgLi4ud3JhcHBlZEFwcFByb3BzLFxuICAgICAgICAgICAgQ29tcG9uZW50OiBDYWNoZWRDb21wb25lbnQsXG4gICAgICAgICAgICBlcnI6IGluaXRpYWxEYXRhLmVycixcbiAgICAgICAgICAgIHJvdXRlclxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShBcHBDb250YWluZXIsIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiByZW5kZXJBcHAoQXBwLCBhcHBQcm9wcylcbiAgICAgICAgfSk7XG4gICAgfTtcbi8vIFRoaXMgbWV0aG9kIGhhbmRsZXMgYWxsIHJ1bnRpbWUgYW5kIGRlYnVnIGVycm9ycy5cbi8vIDQwNCBhbmQgNTAwIGVycm9ycyBhcmUgc3BlY2lhbCBraW5kIG9mIGVycm9yc1xuLy8gYW5kIHRoZXkgYXJlIHN0aWxsIGhhbmRsZSB2aWEgdGhlIG1haW4gcmVuZGVyIG1ldGhvZC5cbmZ1bmN0aW9uIHJlbmRlckVycm9yKHJlbmRlckVycm9yUHJvcHMpIHtcbiAgICBsZXQgeyBBcHAsIGVyciB9ID0gcmVuZGVyRXJyb3JQcm9wcztcbiAgICAvLyBJbiBkZXZlbG9wbWVudCBydW50aW1lIGVycm9ycyBhcmUgY2F1Z2h0IGJ5IG91ciBvdmVybGF5XG4gICAgLy8gSW4gcHJvZHVjdGlvbiB3ZSBjYXRjaCBydW50aW1lIGVycm9ycyB1c2luZyBjb21wb25lbnREaWRDYXRjaCB3aGljaCB3aWxsIHRyaWdnZXIgcmVuZGVyRXJyb3JcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIC8vIEEgTmV4dC5qcyByZW5kZXJpbmcgcnVudGltZSBlcnJvciBpcyBhbHdheXMgdW5yZWNvdmVyYWJsZVxuICAgICAgICAvLyBGSVhNRTogbGV0J3MgbWFrZSB0aGlzIHJlY292ZXJhYmxlIChlcnJvciBpbiBHSVAgY2xpZW50LXRyYW5zaXRpb24pXG4gICAgICAgIGRldkNsaWVudC5vblVucmVjb3ZlcmFibGVFcnJvcigpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbmRlciBhbiBlbXB0eSA8QXBwPiBzbyB0aGF0IHRoZSBgPFJlYWN0RGV2T3ZlcmxheT5gIGNhblxuICAgICAgICAvLyByZW5kZXIgaXRzZWxmLlxuICAgICAgICAvLyBUT0RPOiBGaXggZGlzYWJsZWQgZXNsaW50IHJ1bGVcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICByZXR1cm4gZG9SZW5kZXIoe1xuICAgICAgICAgICAgQXBwOiAoKT0+bnVsbCxcbiAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgIENvbXBvbmVudDogKCk9Pm51bGwsXG4gICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSB3ZSBsb2cgdGhlIGVycm9yIHRvIHRoZSBjb25zb2xlLCBvdGhlcndpc2UgdXNlcnMgY2FuJ3QgdHJhY2sgZG93biBpc3N1ZXMuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIGNvbnNvbGUuZXJyb3IoXCJBIGNsaWVudC1zaWRlIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQsIHNlZSBoZXJlIGZvciBtb3JlIGluZm86IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2NsaWVudC1zaWRlLWV4Y2VwdGlvbi1vY2N1cnJlZFwiKTtcbiAgICByZXR1cm4gcGFnZUxvYWRlci5sb2FkUGFnZShcIi9fZXJyb3JcIikudGhlbigocGFyYW0pPT57XG4gICAgICAgIGxldCB7IHBhZ2U6IEVycm9yQ29tcG9uZW50LCBzdHlsZVNoZWV0cyB9ID0gcGFyYW07XG4gICAgICAgIHJldHVybiAobGFzdEFwcFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBsYXN0QXBwUHJvcHMuQ29tcG9uZW50KSA9PT0gRXJyb3JDb21wb25lbnQgPyBpbXBvcnQoXCIuLi9wYWdlcy9fZXJyb3JcIikudGhlbigoZXJyb3JNb2R1bGUpPT57XG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiLi4vcGFnZXMvX2FwcFwiKS50aGVuKChhcHBNb2R1bGUpPT57XG4gICAgICAgICAgICAgICAgQXBwID0gYXBwTW9kdWxlLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgcmVuZGVyRXJyb3JQcm9wcy5BcHAgPSBBcHA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yTW9kdWxlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKG0pPT4oe1xuICAgICAgICAgICAgICAgIEVycm9yQ29tcG9uZW50OiBtLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IFtdXG4gICAgICAgICAgICB9KSkgOiB7XG4gICAgICAgICAgICBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgIHN0eWxlU2hlZXRzXG4gICAgICAgIH07XG4gICAgfSkudGhlbigocGFyYW0pPT57XG4gICAgICAgIGxldCB7IEVycm9yQ29tcG9uZW50LCBzdHlsZVNoZWV0cyB9ID0gcGFyYW07XG4gICAgICAgIHZhciBfcmVuZGVyRXJyb3JQcm9wc19wcm9wcztcbiAgICAgICAgLy8gSW4gcHJvZHVjdGlvbiB3ZSBkbyBhIG5vcm1hbCByZW5kZXIgd2l0aCB0aGUgYEVycm9yQ29tcG9uZW50YCBhcyBjb21wb25lbnQuXG4gICAgICAgIC8vIElmIHdlJ3ZlIGdvdHRlbiBoZXJlIHVwb24gaW5pdGlhbCByZW5kZXIsIHdlIGNhbiB1c2UgdGhlIHByb3BzIGZyb20gdGhlIHNlcnZlci5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBuZWVkIHRvIGNhbGwgYGdldEluaXRpYWxQcm9wc2Agb24gYEFwcGAgYmVmb3JlIG1vdW50aW5nLlxuICAgICAgICBjb25zdCBBcHBUcmVlID0gd3JhcEFwcChBcHApO1xuICAgICAgICBjb25zdCBhcHBDdHggPSB7XG4gICAgICAgICAgICBDb21wb25lbnQ6IEVycm9yQ29tcG9uZW50LFxuICAgICAgICAgICAgQXBwVHJlZSxcbiAgICAgICAgICAgIHJvdXRlcixcbiAgICAgICAgICAgIGN0eDoge1xuICAgICAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgICAgICBwYXRobmFtZTogaW5pdGlhbERhdGEucGFnZSxcbiAgICAgICAgICAgICAgICBxdWVyeTogaW5pdGlhbERhdGEucXVlcnksXG4gICAgICAgICAgICAgICAgYXNQYXRoLFxuICAgICAgICAgICAgICAgIEFwcFRyZWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgoKF9yZW5kZXJFcnJvclByb3BzX3Byb3BzID0gcmVuZGVyRXJyb3JQcm9wcy5wcm9wcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZW5kZXJFcnJvclByb3BzX3Byb3BzLmVycikgPyByZW5kZXJFcnJvclByb3BzLnByb3BzIDogKDAsIF91dGlscy5sb2FkR2V0SW5pdGlhbFByb3BzKShBcHAsIGFwcEN0eCkpLnRoZW4oKGluaXRQcm9wcyk9Pi8vIFRPRE86IEZpeCBkaXNhYmxlZCBlc2xpbnQgcnVsZVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgZG9SZW5kZXIoe1xuICAgICAgICAgICAgICAgIC4uLnJlbmRlckVycm9yUHJvcHMsXG4gICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgIENvbXBvbmVudDogRXJyb3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGluaXRQcm9wc1xuICAgICAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuLy8gRHVtbXkgY29tcG9uZW50IHRoYXQgd2UgcmVuZGVyIGFzIGEgY2hpbGQgb2YgUm9vdCBzbyB0aGF0IHdlIGNhblxuLy8gdG9nZ2xlIHRoZSBjb3JyZWN0IHN0eWxlcyBiZWZvcmUgdGhlIHBhZ2UgaXMgcmVuZGVyZWQuXG5mdW5jdGlvbiBIZWFkKHBhcmFtKSB7XG4gICAgbGV0IHsgY2FsbGJhY2sgfSA9IHBhcmFtO1xuICAgIC8vIFdlIHVzZSBgdXNlTGF5b3V0RWZmZWN0YCB0byBndWFyYW50ZWUgdGhlIGNhbGxiYWNrIGlzIGV4ZWN1dGVkXG4gICAgLy8gYXMgc29vbiBhcyBSZWFjdCBmbHVzaGVzIHRoZSB1cGRhdGUuXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFjaygpLCBbXG4gICAgICAgIGNhbGxiYWNrXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59XG5jb25zdCBwZXJmb3JtYW5jZU1hcmtzID0ge1xuICAgIG5hdmlnYXRpb25TdGFydDogXCJuYXZpZ2F0aW9uU3RhcnRcIixcbiAgICBiZWZvcmVSZW5kZXI6IFwiYmVmb3JlUmVuZGVyXCIsXG4gICAgYWZ0ZXJSZW5kZXI6IFwiYWZ0ZXJSZW5kZXJcIixcbiAgICBhZnRlckh5ZHJhdGU6IFwiYWZ0ZXJIeWRyYXRlXCIsXG4gICAgcm91dGVDaGFuZ2U6IFwicm91dGVDaGFuZ2VcIlxufTtcbmNvbnN0IHBlcmZvcm1hbmNlTWVhc3VyZXMgPSB7XG4gICAgaHlkcmF0aW9uOiBcIk5leHQuanMtaHlkcmF0aW9uXCIsXG4gICAgYmVmb3JlSHlkcmF0aW9uOiBcIk5leHQuanMtYmVmb3JlLWh5ZHJhdGlvblwiLFxuICAgIHJvdXRlQ2hhbmdlVG9SZW5kZXI6IFwiTmV4dC5qcy1yb3V0ZS1jaGFuZ2UtdG8tcmVuZGVyXCIsXG4gICAgcmVuZGVyOiBcIk5leHQuanMtcmVuZGVyXCJcbn07XG5sZXQgcmVhY3RSb290ID0gbnVsbDtcbi8vIE9uIGluaXRpYWwgcmVuZGVyIGEgaHlkcmF0ZSBzaG91bGQgYWx3YXlzIGhhcHBlblxubGV0IHNob3VsZEh5ZHJhdGUgPSB0cnVlO1xuZnVuY3Rpb24gY2xlYXJNYXJrcygpIHtcbiAgICBbXG4gICAgICAgIHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyLFxuICAgICAgICBwZXJmb3JtYW5jZU1hcmtzLmFmdGVySHlkcmF0ZSxcbiAgICAgICAgcGVyZm9ybWFuY2VNYXJrcy5hZnRlclJlbmRlcixcbiAgICAgICAgcGVyZm9ybWFuY2VNYXJrcy5yb3V0ZUNoYW5nZVxuICAgIF0uZm9yRWFjaCgobWFyayk9PnBlcmZvcm1hbmNlLmNsZWFyTWFya3MobWFyaykpO1xufVxuZnVuY3Rpb24gbWFya0h5ZHJhdGVDb21wbGV0ZSgpIHtcbiAgICBpZiAoIV91dGlscy5TVCkgcmV0dXJuO1xuICAgIHBlcmZvcm1hbmNlLm1hcmsocGVyZm9ybWFuY2VNYXJrcy5hZnRlckh5ZHJhdGUpIC8vIG1hcmsgZW5kIG9mIGh5ZHJhdGlvblxuICAgIDtcbiAgICBjb25zdCBoYXNCZWZvcmVSZW5kZXJNYXJrID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZShwZXJmb3JtYW5jZU1hcmtzLmJlZm9yZVJlbmRlciwgXCJtYXJrXCIpLmxlbmd0aDtcbiAgICBpZiAoaGFzQmVmb3JlUmVuZGVyTWFyaykge1xuICAgICAgICBjb25zdCBiZWZvcmVIeWRyYXRpb25NZWFzdXJlID0gcGVyZm9ybWFuY2UubWVhc3VyZShwZXJmb3JtYW5jZU1lYXN1cmVzLmJlZm9yZUh5ZHJhdGlvbiwgcGVyZm9ybWFuY2VNYXJrcy5uYXZpZ2F0aW9uU3RhcnQsIHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyKTtcbiAgICAgICAgY29uc3QgaHlkcmF0aW9uTWVhc3VyZSA9IHBlcmZvcm1hbmNlLm1lYXN1cmUocGVyZm9ybWFuY2VNZWFzdXJlcy5oeWRyYXRpb24sIHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyLCBwZXJmb3JtYW5jZU1hcmtzLmFmdGVySHlkcmF0ZSk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIC8vIE9sZCB2ZXJzaW9ucyBvZiBTYWZhcmkgZG9uJ3QgcmV0dXJuIGBQZXJmb3JtYW5jZU1lYXN1cmVgcyBmcm9tIGBwZXJmb3JtYW5jZS5tZWFzdXJlKClgXG4gICAgICAgIGJlZm9yZUh5ZHJhdGlvbk1lYXN1cmUgIT09IHVuZGVmaW5lZCAmJiBoeWRyYXRpb25NZWFzdXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF90cmFjZXIuZGVmYXVsdC5zdGFydFNwYW4oXCJuYXZpZ2F0aW9uLXRvLWh5ZHJhdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgYmVmb3JlSHlkcmF0aW9uTWVhc3VyZS5zdGFydFRpbWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBsb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5lbmQocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIGh5ZHJhdGlvbk1lYXN1cmUuc3RhcnRUaW1lICsgaHlkcmF0aW9uTWVhc3VyZS5kdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9uUGVyZkVudHJ5KSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUocGVyZm9ybWFuY2VNZWFzdXJlcy5oeWRyYXRpb24pLmZvckVhY2gob25QZXJmRW50cnkpO1xuICAgIH1cbiAgICBjbGVhck1hcmtzKCk7XG59XG5mdW5jdGlvbiBtYXJrUmVuZGVyQ29tcGxldGUoKSB7XG4gICAgaWYgKCFfdXRpbHMuU1QpIHJldHVybjtcbiAgICBwZXJmb3JtYW5jZS5tYXJrKHBlcmZvcm1hbmNlTWFya3MuYWZ0ZXJSZW5kZXIpIC8vIG1hcmsgZW5kIG9mIHJlbmRlclxuICAgIDtcbiAgICBjb25zdCBuYXZTdGFydEVudHJpZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKHBlcmZvcm1hbmNlTWFya3Mucm91dGVDaGFuZ2UsIFwibWFya1wiKTtcbiAgICBpZiAoIW5hdlN0YXJ0RW50cmllcy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBoYXNCZWZvcmVSZW5kZXJNYXJrID0gcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZShwZXJmb3JtYW5jZU1hcmtzLmJlZm9yZVJlbmRlciwgXCJtYXJrXCIpLmxlbmd0aDtcbiAgICBpZiAoaGFzQmVmb3JlUmVuZGVyTWFyaykge1xuICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKHBlcmZvcm1hbmNlTWVhc3VyZXMucm91dGVDaGFuZ2VUb1JlbmRlciwgbmF2U3RhcnRFbnRyaWVzWzBdLm5hbWUsIHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyKTtcbiAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZShwZXJmb3JtYW5jZU1lYXN1cmVzLnJlbmRlciwgcGVyZm9ybWFuY2VNYXJrcy5iZWZvcmVSZW5kZXIsIHBlcmZvcm1hbmNlTWFya3MuYWZ0ZXJSZW5kZXIpO1xuICAgICAgICBpZiAob25QZXJmRW50cnkpIHtcbiAgICAgICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUocGVyZm9ybWFuY2VNZWFzdXJlcy5yZW5kZXIpLmZvckVhY2gob25QZXJmRW50cnkpO1xuICAgICAgICAgICAgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZShwZXJmb3JtYW5jZU1lYXN1cmVzLnJvdXRlQ2hhbmdlVG9SZW5kZXIpLmZvckVhY2gob25QZXJmRW50cnkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNsZWFyTWFya3MoKTtcbiAgICBbXG4gICAgICAgIHBlcmZvcm1hbmNlTWVhc3VyZXMucm91dGVDaGFuZ2VUb1JlbmRlcixcbiAgICAgICAgcGVyZm9ybWFuY2VNZWFzdXJlcy5yZW5kZXJcbiAgICBdLmZvckVhY2goKG1lYXN1cmUpPT5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKG1lYXN1cmUpKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclJlYWN0RWxlbWVudChkb21FbCwgZm4pIHtcbiAgICAvLyBtYXJrIHN0YXJ0IG9mIGh5ZHJhdGUvcmVuZGVyXG4gICAgaWYgKF91dGlscy5TVCkge1xuICAgICAgICBwZXJmb3JtYW5jZS5tYXJrKHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyKTtcbiAgICB9XG4gICAgY29uc3QgcmVhY3RFbCA9IGZuKHNob3VsZEh5ZHJhdGUgPyBtYXJrSHlkcmF0ZUNvbXBsZXRlIDogbWFya1JlbmRlckNvbXBsZXRlKTtcbiAgICBpZiAoIXJlYWN0Um9vdCkge1xuICAgICAgICAvLyBVbmxpa2Ugd2l0aCBjcmVhdGVSb290LCB5b3UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHJvb3QucmVuZGVyKCkgY2FsbCBoZXJlXG4gICAgICAgIHJlYWN0Um9vdCA9IF9jbGllbnQuZGVmYXVsdC5oeWRyYXRlUm9vdChkb21FbCwgcmVhY3RFbCwge1xuICAgICAgICAgICAgb25SZWNvdmVyYWJsZUVycm9yOiBfb25yZWNvdmVyYWJsZWVycm9yLmRlZmF1bHRcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBzaG91bGRIeWRyYXRlIHZhcmlhYmxlIHdoZW4gUmVhY3QgMTggaXMgc3RhYmxlIGFzIGl0IGNhbiBkZXBlbmQgb24gYHJlYWN0Um9vdGAgZXhpc3RpbmdcbiAgICAgICAgc2hvdWxkSHlkcmF0ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0VHJhbnNpdGlvbiA9IF9yZWFjdC5kZWZhdWx0LnN0YXJ0VHJhbnNpdGlvbjtcbiAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpPT57XG4gICAgICAgICAgICByZWFjdFJvb3QucmVuZGVyKHJlYWN0RWwpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBSb290KHBhcmFtKSB7XG4gICAgbGV0IHsgY2FsbGJhY2tzLCBjaGlsZHJlbiB9ID0gcGFyYW07XG4gICAgLy8gV2UgdXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGd1YXJhbnRlZSB0aGUgY2FsbGJhY2tzIGFyZSBleGVjdXRlZFxuICAgIC8vIGFzIHNvb24gYXMgUmVhY3QgZmx1c2hlcyB0aGUgdXBkYXRlXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spPT5jYWxsYmFjaygpKSwgW1xuICAgICAgICBjYWxsYmFja3NcbiAgICBdKTtcbiAgICAvLyBXZSBzaG91bGQgYXNrIHRvIG1lYXN1cmUgdGhlIFdlYiBWaXRhbHMgYWZ0ZXIgcmVuZGVyaW5nIGNvbXBsZXRlcyBzbyB3ZVxuICAgIC8vIGRvbid0IGNhdXNlIGFueSBoeWRyYXRpb24gZGVsYXk6XG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICgwLCBfcGVyZm9ybWFuY2VyZWxheWVyLmRlZmF1bHQpKG9uUGVyZkVudHJ5KTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgIF9yZWFjdC5kZWZhdWx0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgd2luZG93Ll9fTkVYVF9IWURSQVRFRCA9IHRydWU7XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fTkVYVF9IWURSQVRFRF9DQikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURURfQ0IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG59XG5mdW5jdGlvbiBkb1JlbmRlcihpbnB1dCkge1xuICAgIGxldCB7IEFwcCwgQ29tcG9uZW50LCBwcm9wcywgZXJyIH0gPSBpbnB1dDtcbiAgICBsZXQgc3R5bGVTaGVldHMgPSBcImluaXRpYWxcIiBpbiBpbnB1dCA/IHVuZGVmaW5lZCA6IGlucHV0LnN0eWxlU2hlZXRzO1xuICAgIENvbXBvbmVudCA9IENvbXBvbmVudCB8fCBsYXN0QXBwUHJvcHMuQ29tcG9uZW50O1xuICAgIHByb3BzID0gcHJvcHMgfHwgbGFzdEFwcFByb3BzLnByb3BzO1xuICAgIGNvbnN0IGFwcFByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICBlcnIsXG4gICAgICAgIHJvdXRlclxuICAgIH07XG4gICAgLy8gbGFzdEFwcFByb3BzIGhhcyB0byBiZSBzZXQgYmVmb3JlIFJlYWN0RG9tLnJlbmRlciB0byBhY2NvdW50IGZvciBSZWFjdERvbSB0aHJvd2luZyBhbiBlcnJvci5cbiAgICBsYXN0QXBwUHJvcHMgPSBhcHBQcm9wcztcbiAgICBsZXQgY2FuY2VsZWQgPSBmYWxzZTtcbiAgICBsZXQgcmVzb2x2ZVByb21pc2U7XG4gICAgY29uc3QgcmVuZGVyUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGlmIChsYXN0UmVuZGVyUmVqZWN0KSB7XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZVByb21pc2UgPSAoKT0+e1xuICAgICAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH07XG4gICAgICAgIGxhc3RSZW5kZXJSZWplY3QgPSAoKT0+e1xuICAgICAgICAgICAgY2FuY2VsZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcIkNhbmNlbCByZW5kZXJpbmcgcm91dGVcIik7XG4gICAgICAgICAgICBlcnJvci5jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyBhIHJldHVybiB0eXBlIHRvIGVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHJldHVybmluZyBhXG4gICAgLy8gUHJvbWlzZS4gSXQgc2hvdWxkIHJlbWFpbiBzeW5jaHJvbm91cy5cbiAgICBmdW5jdGlvbiBvblN0YXJ0KCkge1xuICAgICAgICBpZiAoIXN0eWxlU2hlZXRzIHx8IC8vIFdlIHVzZSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgICAgICAvLyB1bmxlc3Mgd2UncmUgaW4gcHJvZHVjdGlvbjpcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFN0eWxlVGFncyA9IGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1uLWhyZWZdXCIpKTtcbiAgICAgICAgY29uc3QgY3VycmVudEhyZWZzID0gbmV3IFNldChjdXJyZW50U3R5bGVUYWdzLm1hcCgodGFnKT0+dGFnLmdldEF0dHJpYnV0ZShcImRhdGEtbi1ocmVmXCIpKSk7XG4gICAgICAgIGNvbnN0IG5vc2NyaXB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIm5vc2NyaXB0W2RhdGEtbi1jc3NdXCIpO1xuICAgICAgICBjb25zdCBub25jZSA9IG5vc2NyaXB0ID09IG51bGwgPyB2b2lkIDAgOiBub3NjcmlwdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLW4tY3NzXCIpO1xuICAgICAgICBzdHlsZVNoZWV0cy5mb3JFYWNoKChwYXJhbSk9PntcbiAgICAgICAgICAgIGxldCB7IGhyZWYsIHRleHQgfSA9IHBhcmFtO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50SHJlZnMuaGFzKGhyZWYpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKFwiZGF0YS1uLWhyZWZcIiwgaHJlZik7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKFwibWVkaWFcIiwgXCJ4XCIpO1xuICAgICAgICAgICAgICAgIGlmIChub25jZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICAgICAgICAgICAgICAgIHN0eWxlVGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvbkhlYWRDb21taXQoKSB7XG4gICAgICAgIGlmICgvLyBXZSB1c2UgYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmdcbiAgICAgICAgLy8gdW5sZXNzIHdlJ3JlIGluIHByb2R1Y3Rpb246XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiAmJiAvLyBXZSBjYW4gc2tpcCB0aGlzIGR1cmluZyBoeWRyYXRpb24uIFJ1bm5pbmcgaXQgd29udCBjYXVzZSBhbnkgaGFybSwgYnV0XG4gICAgICAgIC8vIHdlIG1heSBhcyB3ZWxsIHNhdmUgdGhlIENQVSBjeWNsZXM6XG4gICAgICAgIHN0eWxlU2hlZXRzICYmIC8vIEVuc3VyZSB0aGlzIHJlbmRlciB3YXMgbm90IGNhbmNlbGVkXG4gICAgICAgICFjYW5jZWxlZCkge1xuICAgICAgICAgICAgY29uc3QgZGVzaXJlZEhyZWZzID0gbmV3IFNldChzdHlsZVNoZWV0cy5tYXAoKHMpPT5zLmhyZWYpKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZVRhZ3MgPSBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtbi1ocmVmXVwiKSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBjdXJyZW50U3R5bGVUYWdzLm1hcCgodGFnKT0+dGFnLmdldEF0dHJpYnV0ZShcImRhdGEtbi1ocmVmXCIpKTtcbiAgICAgICAgICAgIC8vIFRvZ2dsZSBgPHN0eWxlPmAgdGFncyBvbiBvciBvZmYgZGVwZW5kaW5nIG9uIGlmIHRoZXkncmUgbmVlZGVkOlxuICAgICAgICAgICAgZm9yKGxldCBpZHggPSAwOyBpZHggPCBjdXJyZW50SHJlZnMubGVuZ3RoOyArK2lkeCl7XG4gICAgICAgICAgICAgICAgaWYgKGRlc2lyZWRIcmVmcy5oYXMoY3VycmVudEhyZWZzW2lkeF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHlsZVRhZ3NbaWR4XS5yZW1vdmVBdHRyaWJ1dGUoXCJtZWRpYVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3R5bGVUYWdzW2lkeF0uc2V0QXR0cmlidXRlKFwibWVkaWFcIiwgXCJ4XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlb3JkZXIgc3R5bGVzIGludG8gaW50ZW5kZWQgb3JkZXI6XG4gICAgICAgICAgICBsZXQgcmVmZXJlbmNlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJub3NjcmlwdFtkYXRhLW4tY3NzXVwiKTtcbiAgICAgICAgICAgIGlmICgvLyBUaGlzIHNob3VsZCBiZSBhbiBpbnZhcmlhbnQ6XG4gICAgICAgICAgICByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMuZm9yRWFjaCgocGFyYW0pPT57XG4gICAgICAgICAgICAgICAgICAgIGxldCB7IGhyZWYgfSA9IHBhcmFtO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLW4taHJlZj1cIicgKyBocmVmICsgJ1wiXScpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoLy8gVGhpcyBzaG91bGQgYmUgYW4gaW52YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRUYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGFyZ2V0VGFnLCByZWZlcmVuY2VOb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUgPSB0YXJnZXRUYWc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbmFsbHksIGNsZWFuIHVwIHNlcnZlciByZW5kZXJlZCBzdHlsZXNoZWV0czpcbiAgICAgICAgICAgIGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwibGlua1tkYXRhLW4tcF1cIikpLmZvckVhY2goKGVsKT0+e1xuICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0LnNjcm9sbCkge1xuICAgICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBpbnB1dC5zY3JvbGw7XG4gICAgICAgICAgICAoMCwgX2hhbmRsZXNtb290aHNjcm9sbC5oYW5kbGVTbW9vdGhTY3JvbGwpKCgpPT57XG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHgsIHkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gb25Sb290Q29tbWl0KCkge1xuICAgICAgICByZXNvbHZlUHJvbWlzZSgpO1xuICAgIH1cbiAgICBvblN0YXJ0KCk7XG4gICAgY29uc3QgZWxlbSA9IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeHMpKF9qc3hydW50aW1lLkZyYWdtZW50LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKEhlYWQsIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogb25IZWFkQ29tbWl0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeHMpKEFwcENvbnRhaW5lciwge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckFwcChBcHAsIGFwcFByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyAoMCwgX2pzeHJ1bnRpbWUuanN4KShfcG9ydGFsLlBvcnRhbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJuZXh0LXJvdXRlLWFubm91bmNlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX3JvdXRlYW5ub3VuY2VyLlJvdXRlQW5ub3VuY2VyLCB7fSlcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgfSk7XG4gICAgLy8gV2UgY2F0Y2ggcnVudGltZSBlcnJvcnMgdXNpbmcgY29tcG9uZW50RGlkQ2F0Y2ggd2hpY2ggd2lsbCB0cmlnZ2VyIHJlbmRlckVycm9yXG4gICAgcmVuZGVyUmVhY3RFbGVtZW50KGFwcEVsZW1lbnQsIChjYWxsYmFjayk9Pi8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoUm9vdCwge1xuICAgICAgICAgICAgY2FsbGJhY2tzOiBbXG4gICAgICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgb25Sb290Q29tbWl0XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgY2hpbGRyZW46IHByb2Nlc3MuZW52Ll9fTkVYVF9TVFJJQ1RfTU9ERSA/IC8qI19fUFVSRV9fKi8gKDAsIF9qc3hydW50aW1lLmpzeCkoX3JlYWN0LmRlZmF1bHQuU3RyaWN0TW9kZSwge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBlbGVtXG4gICAgICAgICAgICB9KSA6IGVsZW1cbiAgICAgICAgfSkpO1xuICAgIHJldHVybiByZW5kZXJQcm9taXNlO1xufVxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyKHJlbmRlcmluZ1Byb3BzKSB7XG4gICAgaWYgKHJlbmRlcmluZ1Byb3BzLmVycikge1xuICAgICAgICBhd2FpdCByZW5kZXJFcnJvcihyZW5kZXJpbmdQcm9wcyk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZG9SZW5kZXIocmVuZGVyaW5nUHJvcHMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCByZW5kZXJFcnIgPSAoMCwgX2lzZXJyb3IuZ2V0UHJvcGVyRXJyb3IpKGVycik7XG4gICAgICAgIC8vIGJ1YmJsZSB1cCBjYW5jZWxhdGlvbiBlcnJvcnNcbiAgICAgICAgaWYgKHJlbmRlckVyci5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHRocm93IHJlbmRlckVycjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgLy8gRW5zdXJlIHRoaXMgZXJyb3IgaXMgZGlzcGxheWVkIGluIHRoZSBvdmVybGF5IGluIGRldmVsb3BtZW50XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgdGhyb3cgcmVuZGVyRXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgcmVuZGVyRXJyb3Ioe1xuICAgICAgICAgICAgLi4ucmVuZGVyaW5nUHJvcHMsXG4gICAgICAgICAgICBlcnI6IHJlbmRlckVyclxuICAgICAgICB9KTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBoeWRyYXRlKG9wdHMpIHtcbiAgICBsZXQgaW5pdGlhbEVyciA9IGluaXRpYWxEYXRhLmVycjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhcHBFbnRyeXBvaW50ID0gYXdhaXQgcGFnZUxvYWRlci5yb3V0ZUxvYWRlci53aGVuRW50cnlwb2ludChcIi9fYXBwXCIpO1xuICAgICAgICBpZiAoXCJlcnJvclwiIGluIGFwcEVudHJ5cG9pbnQpIHtcbiAgICAgICAgICAgIHRocm93IGFwcEVudHJ5cG9pbnQuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBjb21wb25lbnQ6IGFwcCwgZXhwb3J0czogbW9kIH0gPSBhcHBFbnRyeXBvaW50O1xuICAgICAgICBDYWNoZWRBcHAgPSBhcHA7XG4gICAgICAgIGlmIChtb2QgJiYgbW9kLnJlcG9ydFdlYlZpdGFscykge1xuICAgICAgICAgICAgb25QZXJmRW50cnkgPSAocGFyYW0pPT57XG4gICAgICAgICAgICAgICAgbGV0IHsgaWQsIG5hbWUsIHN0YXJ0VGltZSwgdmFsdWUsIGR1cmF0aW9uLCBlbnRyeVR5cGUsIGVudHJpZXMsIGF0dHJpYnV0aW9uIH0gPSBwYXJhbTtcbiAgICAgICAgICAgICAgICAvLyBDb21iaW5lcyB0aW1lc3RhbXAgd2l0aCByYW5kb20gbnVtYmVyIGZvciB1bmlxdWUgSURcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJRCA9IERhdGUubm93KCkgKyBcIi1cIiArIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoOWUxMiAtIDEpKSArIDFlMTIpO1xuICAgICAgICAgICAgICAgIGxldCBwZXJmU3RhcnRFbnRyeTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cmllcyAmJiBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBwZXJmU3RhcnRFbnRyeSA9IGVudHJpZXNbMF0uc3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB3ZWJWaXRhbHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZCB8fCB1bmlxdWVJRCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBzdGFydFRpbWUgfHwgcGVyZlN0YXJ0RW50cnksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA9PSBudWxsID8gZHVyYXRpb24gOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudHJ5VHlwZSA9PT0gXCJtYXJrXCIgfHwgZW50cnlUeXBlID09PSBcIm1lYXN1cmVcIiA/IFwiY3VzdG9tXCIgOiBcIndlYi12aXRhbFwiXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgd2ViVml0YWxzLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vZC5yZXBvcnRXZWJWaXRhbHMod2ViVml0YWxzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFnZUVudHJ5cG9pbnQgPSAvLyBUaGUgZGV2IHNlcnZlciBmYWlscyB0byBzZXJ2ZSBzY3JpcHQgYXNzZXRzIHdoZW4gdGhlcmUncyBhIGh5ZHJhdGlvblxuICAgICAgICAvLyBlcnJvciwgc28gd2UgbmVlZCB0byBza2lwIHdhaXRpbmcgZm9yIHRoZSBlbnRyeXBvaW50LlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIGluaXRpYWxEYXRhLmVyciA/IHtcbiAgICAgICAgICAgIGVycm9yOiBpbml0aWFsRGF0YS5lcnJcbiAgICAgICAgfSA6IGF3YWl0IHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoaW5pdGlhbERhdGEucGFnZSk7XG4gICAgICAgIGlmIChcImVycm9yXCIgaW4gcGFnZUVudHJ5cG9pbnQpIHtcbiAgICAgICAgICAgIHRocm93IHBhZ2VFbnRyeXBvaW50LmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIENhY2hlZENvbXBvbmVudCA9IHBhZ2VFbnRyeXBvaW50LmNvbXBvbmVudDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc3QgeyBpc1ZhbGlkRWxlbWVudFR5cGUgfSA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QtaXNcIik7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZShDYWNoZWRDb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgUmVhY3QgQ29tcG9uZW50IGluIHBhZ2U6IFwiJyArIGluaXRpYWxEYXRhLnBhZ2UgKyAnXCInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIFRoaXMgY2F0Y2hlcyBlcnJvcnMgbGlrZSB0aHJvd2luZyBpbiB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlXG4gICAgICAgIGluaXRpYWxFcnIgPSAoMCwgX2lzZXJyb3IuZ2V0UHJvcGVyRXJyb3IpKGVycm9yKTtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgY29uc3QgeyBnZXRTZXJ2ZXJFcnJvciB9ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1kZXYtb3ZlcmxheS9kaXN0L2NsaWVudFwiKTtcbiAgICAgICAgLy8gU2VydmVyLXNpZGUgcnVudGltZSBlcnJvcnMgbmVlZCB0byBiZSByZS10aHJvd24gb24gdGhlIGNsaWVudC1zaWRlIHNvXG4gICAgICAgIC8vIHRoYXQgdGhlIG92ZXJsYXkgaXMgcmVuZGVyZWQuXG4gICAgICAgIGlmIChpbml0aWFsRXJyKSB7XG4gICAgICAgICAgICBpZiAoaW5pdGlhbEVyciA9PT0gaW5pdGlhbERhdGEuZXJyKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyBlcnJvciBvYmplY3QuIFdlIGB0aHJvd2AgaXQgYmVjYXVzZSBzb21lIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIHNldCB0aGUgYHN0YWNrYCB3aGVuIHRocm93biwgYW5kIHdlIHdhbnQgdG8gZW5zdXJlIG91cnMgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBvdmVycmlkZGVuIHdoZW4gd2UgcmUtdGhyb3cgaXQgYmVsb3cuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaW5pdGlhbEVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLm5hbWUgPSBpbml0aWFsRXJyLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnN0YWNrID0gaW5pdGlhbEVyci5zdGFjaztcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZ2V0U2VydmVyRXJyb3IoZXJyb3IsIGluaXRpYWxFcnIuc291cmNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBpbml0aWFsRXJyO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh3aW5kb3cuX19ORVhUX1BSRUxPQURSRUFEWSkge1xuICAgICAgICBhd2FpdCB3aW5kb3cuX19ORVhUX1BSRUxPQURSRUFEWShpbml0aWFsRGF0YS5keW5hbWljSWRzKTtcbiAgICB9XG4gICAgcm91dGVyID0gKDAsIF9yb3V0ZXIuY3JlYXRlUm91dGVyKShpbml0aWFsRGF0YS5wYWdlLCBpbml0aWFsRGF0YS5xdWVyeSwgYXNQYXRoLCB7XG4gICAgICAgIGluaXRpYWxQcm9wczogaW5pdGlhbERhdGEucHJvcHMsXG4gICAgICAgIHBhZ2VMb2FkZXIsXG4gICAgICAgIEFwcDogQ2FjaGVkQXBwLFxuICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgd3JhcEFwcCxcbiAgICAgICAgZXJyOiBpbml0aWFsRXJyLFxuICAgICAgICBpc0ZhbGxiYWNrOiBCb29sZWFuKGluaXRpYWxEYXRhLmlzRmFsbGJhY2spLFxuICAgICAgICBzdWJzY3JpcHRpb246IChpbmZvLCBBcHAsIHNjcm9sbCk9PnJlbmRlcihPYmplY3QuYXNzaWduKHt9LCBpbmZvLCB7XG4gICAgICAgICAgICAgICAgQXBwLFxuICAgICAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICBsb2NhbGU6IGluaXRpYWxEYXRhLmxvY2FsZSxcbiAgICAgICAgbG9jYWxlczogaW5pdGlhbERhdGEubG9jYWxlcyxcbiAgICAgICAgZGVmYXVsdExvY2FsZSxcbiAgICAgICAgZG9tYWluTG9jYWxlczogaW5pdGlhbERhdGEuZG9tYWluTG9jYWxlcyxcbiAgICAgICAgaXNQcmV2aWV3OiBpbml0aWFsRGF0YS5pc1ByZXZpZXdcbiAgICB9KTtcbiAgICBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUgPSBhd2FpdCByb3V0ZXIuX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2U7XG4gICAgY29uc3QgcmVuZGVyQ3R4ID0ge1xuICAgICAgICBBcHA6IENhY2hlZEFwcCxcbiAgICAgICAgaW5pdGlhbDogdHJ1ZSxcbiAgICAgICAgQ29tcG9uZW50OiBDYWNoZWRDb21wb25lbnQsXG4gICAgICAgIHByb3BzOiBpbml0aWFsRGF0YS5wcm9wcyxcbiAgICAgICAgZXJyOiBpbml0aWFsRXJyXG4gICAgfTtcbiAgICBpZiAob3B0cyA9PSBudWxsID8gdm9pZCAwIDogb3B0cy5iZWZvcmVSZW5kZXIpIHtcbiAgICAgICAgYXdhaXQgb3B0cy5iZWZvcmVSZW5kZXIoKTtcbiAgICB9XG4gICAgcmVuZGVyKHJlbmRlckN0eCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIm1vZHVsZSIsInZlcnNpb24iLCJyb3V0ZXIiLCJlbWl0dGVyIiwiaW5pdGlhbGl6ZSIsImh5ZHJhdGUiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2pzeHJ1bnRpbWUiLCJfcmVhY3QiLCJfIiwiX2NsaWVudCIsIl9oZWFkbWFuYWdlcmNvbnRleHRzaGFyZWRydW50aW1lIiwiX21pdHQiLCJfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUiLCJfaGFuZGxlc21vb3Roc2Nyb2xsIiwiX2lzZHluYW1pYyIsIl9xdWVyeXN0cmluZyIsIl9ydW50aW1lY29uZmlnZXh0ZXJuYWwiLCJfdXRpbHMiLCJfcG9ydGFsIiwiX2hlYWRtYW5hZ2VyIiwiX3BhZ2Vsb2FkZXIiLCJfcGVyZm9ybWFuY2VyZWxheWVyIiwiX3JvdXRlYW5ub3VuY2VyIiwiX3JvdXRlciIsIl9pc2Vycm9yIiwiX2ltYWdlY29uZmlnY29udGV4dHNoYXJlZHJ1bnRpbWUiLCJfcmVtb3ZlYmFzZXBhdGgiLCJfaGFzYmFzZXBhdGgiLCJfYXBwcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUiLCJfYWRhcHRlcnMiLCJfaG9va3NjbGllbnRjb250ZXh0c2hhcmVkcnVudGltZSIsIl9vbnJlY292ZXJhYmxlZXJyb3IiLCJfdHJhY2VyIiwiX3JlcG9ydHRvc29ja2V0IiwiZGVmYXVsdCIsImxvb3NlVG9BcnJheSIsImlucHV0Iiwic2xpY2UiLCJjYWxsIiwiaW5pdGlhbERhdGEiLCJkZWZhdWx0TG9jYWxlIiwidW5kZWZpbmVkIiwiYXNQYXRoIiwicGFnZUxvYWRlciIsImFwcEVsZW1lbnQiLCJoZWFkTWFuYWdlciIsImluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSIsImxhc3RBcHBQcm9wcyIsImxhc3RSZW5kZXJSZWplY3QiLCJkZXZDbGllbnQiLCJDYWNoZWRBcHAiLCJvblBlcmZFbnRyeSIsIkNhY2hlZENvbXBvbmVudCIsIkNvbnRhaW5lciIsIkNvbXBvbmVudCIsImNvbXBvbmVudERpZENhdGNoIiwiY29tcG9uZW50RXJyIiwiaW5mbyIsInByb3BzIiwiZm4iLCJjb21wb25lbnREaWRNb3VudCIsInNjcm9sbFRvSGFzaCIsImlzU3NyIiwiaXNGYWxsYmFjayIsIm5leHRFeHBvcnQiLCJpc0R5bmFtaWNSb3V0ZSIsInBhdGhuYW1lIiwibG9jYXRpb24iLCJzZWFyY2giLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0hBU19SRVdSSVRFUyIsIl9fTl9TU0ciLCJyZXBsYWNlIiwiU3RyaW5nIiwiYXNzaWduIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsInF1ZXJ5IiwiVVJMU2VhcmNoUGFyYW1zIiwiX2giLCJzaGFsbG93IiwiY2F0Y2giLCJlcnIiLCJjYW5jZWxsZWQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJoYXNoIiwic3Vic3RyaW5nIiwiZWwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2V0VGltZW91dCIsInNjcm9sbEludG9WaWV3IiwicmVuZGVyIiwiY2hpbGRyZW4iLCJSZWFjdERldk92ZXJsYXkiLCJqc3giLCJvcHRzIiwib25TcGFuRW5kIiwiSlNPTiIsInBhcnNlIiwidGV4dENvbnRlbnQiLCJ3aW5kb3ciLCJfX05FWFRfREFUQV9fIiwicHJlZml4IiwiYXNzZXRQcmVmaXgiLCJzZWxmIiwiX19uZXh0X3NldF9wdWJsaWNfcGF0aF9fIiwic2V0Q29uZmlnIiwic2VydmVyUnVudGltZUNvbmZpZyIsInB1YmxpY1J1bnRpbWVDb25maWciLCJydW50aW1lQ29uZmlnIiwiZ2V0VVJMIiwiaGFzQmFzZVBhdGgiLCJyZW1vdmVCYXNlUGF0aCIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJub3JtYWxpemVMb2NhbGVQYXRoIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwicGFyc2VSZWxhdGl2ZVVybCIsImZvcm1hdFVybCIsImxvY2FsZXMiLCJwYXJzZWRBcyIsImxvY2FsZVBhdGhSZXN1bHQiLCJkZXRlY3RlZExvY2FsZSIsImxvY2FsZSIsImRldGVjdGVkRG9tYWluIiwiX19ORVhUX0kxOE5fRE9NQUlOUyIsImhvc3RuYW1lIiwic2NyaXB0TG9hZGVyIiwiaW5pdFNjcmlwdExvYWRlciIsImJ1aWxkSWQiLCJyZWdpc3RlciIsInBhcmFtIiwiciIsImYiLCJyb3V0ZUxvYWRlciIsIm9uRW50cnlwb2ludCIsIl9fTkVYVF9QIiwibWFwIiwicCIsInB1c2giLCJnZXRJc1NzciIsInJlbmRlckFwcCIsIkFwcCIsImFwcFByb3BzIiwiQXBwQ29udGFpbmVyIiwiYWRhcHRlZEZvckFwcFJvdXRlciIsInVzZU1lbW8iLCJhZGFwdEZvckFwcFJvdXRlckluc3RhbmNlIiwiX3NlbGZfX19ORVhUX0RBVEFfX19hdXRvRXhwb3J0IiwiZXJyb3IiLCJyZW5kZXJFcnJvciIsImNvbnNvbGUiLCJBcHBSb3V0ZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJTZWFyY2hQYXJhbXNDb250ZXh0IiwiYWRhcHRGb3JTZWFyY2hQYXJhbXMiLCJQYXRobmFtZUNvbnRleHRQcm92aWRlckFkYXB0ZXIiLCJpc0F1dG9FeHBvcnQiLCJhdXRvRXhwb3J0IiwiUGF0aFBhcmFtc0NvbnRleHQiLCJhZGFwdEZvclBhdGhQYXJhbXMiLCJSb3V0ZXJDb250ZXh0IiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiSW1hZ2VDb25maWdDb250ZXh0IiwiX19ORVhUX0lNQUdFX09QVFMiLCJ3cmFwQXBwIiwid3JhcHBlZEFwcFByb3BzIiwicmVuZGVyRXJyb3JQcm9wcyIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwiZG9SZW5kZXIiLCJzdHlsZVNoZWV0cyIsImxvYWRQYWdlIiwidGhlbiIsInBhZ2UiLCJFcnJvckNvbXBvbmVudCIsImVycm9yTW9kdWxlIiwiYXBwTW9kdWxlIiwibSIsIl9yZW5kZXJFcnJvclByb3BzX3Byb3BzIiwiQXBwVHJlZSIsImFwcEN0eCIsImN0eCIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsImluaXRQcm9wcyIsIkhlYWQiLCJjYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsInBlcmZvcm1hbmNlTWFya3MiLCJuYXZpZ2F0aW9uU3RhcnQiLCJiZWZvcmVSZW5kZXIiLCJhZnRlclJlbmRlciIsImFmdGVySHlkcmF0ZSIsInJvdXRlQ2hhbmdlIiwicGVyZm9ybWFuY2VNZWFzdXJlcyIsImh5ZHJhdGlvbiIsImJlZm9yZUh5ZHJhdGlvbiIsInJvdXRlQ2hhbmdlVG9SZW5kZXIiLCJyZWFjdFJvb3QiLCJzaG91bGRIeWRyYXRlIiwiY2xlYXJNYXJrcyIsImZvckVhY2giLCJtYXJrIiwicGVyZm9ybWFuY2UiLCJtYXJrSHlkcmF0ZUNvbXBsZXRlIiwiU1QiLCJoYXNCZWZvcmVSZW5kZXJNYXJrIiwiZ2V0RW50cmllc0J5TmFtZSIsImxlbmd0aCIsImJlZm9yZUh5ZHJhdGlvbk1lYXN1cmUiLCJtZWFzdXJlIiwiaHlkcmF0aW9uTWVhc3VyZSIsInN0YXJ0U3BhbiIsInN0YXJ0VGltZSIsInRpbWVPcmlnaW4iLCJhdHRyaWJ1dGVzIiwiZW5kIiwiZHVyYXRpb24iLCJtYXJrUmVuZGVyQ29tcGxldGUiLCJuYXZTdGFydEVudHJpZXMiLCJjbGVhck1lYXN1cmVzIiwicmVuZGVyUmVhY3RFbGVtZW50IiwiZG9tRWwiLCJyZWFjdEVsIiwiaHlkcmF0ZVJvb3QiLCJvblJlY292ZXJhYmxlRXJyb3IiLCJzdGFydFRyYW5zaXRpb24iLCJSb290IiwiY2FsbGJhY2tzIiwidXNlRWZmZWN0IiwiX19ORVhUX1RFU1RfTU9ERSIsIl9fTkVYVF9IWURSQVRFRCIsIl9fTkVYVF9IWURSQVRFRF9DQiIsImNhbmNlbGVkIiwicmVzb2x2ZVByb21pc2UiLCJyZW5kZXJQcm9taXNlIiwicmVqZWN0IiwiRXJyb3IiLCJvblN0YXJ0IiwiY3VycmVudFN0eWxlVGFncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjdXJyZW50SHJlZnMiLCJTZXQiLCJ0YWciLCJnZXRBdHRyaWJ1dGUiLCJub3NjcmlwdCIsInF1ZXJ5U2VsZWN0b3IiLCJub25jZSIsImhyZWYiLCJ0ZXh0IiwiaGFzIiwic3R5bGVUYWciLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJvbkhlYWRDb21taXQiLCJkZXNpcmVkSHJlZnMiLCJzIiwiaWR4IiwicmVtb3ZlQXR0cmlidXRlIiwicmVmZXJlbmNlTm9kZSIsInRhcmdldFRhZyIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsInJlbW92ZUNoaWxkIiwic2Nyb2xsIiwieCIsInkiLCJoYW5kbGVTbW9vdGhTY3JvbGwiLCJzY3JvbGxUbyIsIm9uUm9vdENvbW1pdCIsImVsZW0iLCJqc3hzIiwiRnJhZ21lbnQiLCJQb3J0YWwiLCJ0eXBlIiwiUm91dGVBbm5vdW5jZXIiLCJfX05FWFRfU1RSSUNUX01PREUiLCJTdHJpY3RNb2RlIiwicmVuZGVyaW5nUHJvcHMiLCJyZW5kZXJFcnIiLCJnZXRQcm9wZXJFcnJvciIsImluaXRpYWxFcnIiLCJhcHBFbnRyeXBvaW50Iiwid2hlbkVudHJ5cG9pbnQiLCJjb21wb25lbnQiLCJhcHAiLCJtb2QiLCJyZXBvcnRXZWJWaXRhbHMiLCJpZCIsImVudHJ5VHlwZSIsImVudHJpZXMiLCJhdHRyaWJ1dGlvbiIsInVuaXF1ZUlEIiwiRGF0ZSIsIm5vdyIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsInBlcmZTdGFydEVudHJ5Iiwid2ViVml0YWxzIiwibGFiZWwiLCJwYWdlRW50cnlwb2ludCIsImlzVmFsaWRFbGVtZW50VHlwZSIsImdldFNlcnZlckVycm9yIiwibWVzc2FnZSIsImUiLCJzdGFjayIsInNvdXJjZSIsIl9fTkVYVF9QUkVMT0FEUkVBRFkiLCJkeW5hbWljSWRzIiwiY3JlYXRlUm91dGVyIiwiaW5pdGlhbFByb3BzIiwiQm9vbGVhbiIsInN1YnNjcmlwdGlvbiIsImRvbWFpbkxvY2FsZXMiLCJpc1ByZXZpZXciLCJfaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZSIsInJlbmRlckN0eCIsImluaXRpYWwiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/index.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/next-dev.js": /*!***************************************************!*\ !*** ./node_modules/next/dist/client/next-dev.js ***! \***************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("// TODO: Remove use of `any` type.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\n__webpack_require__(/*! ./webpack */ \"./node_modules/next/dist/client/webpack.js\");\nconst _ = __webpack_require__(/*! ./ */ \"./node_modules/next/dist/client/index.js\");\nconst _hotmiddlewareclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/hot-middleware-client */ \"./node_modules/next/dist/client/dev/hot-middleware-client.js\"));\nconst _pagebootstrap = __webpack_require__(/*! ./page-bootstrap */ \"./node_modules/next/dist/client/page-bootstrap.js\");\n__webpack_require__(/*! ./setup-hydration-warning */ \"./node_modules/next/dist/client/setup-hydration-warning.js\");\nwindow.next = {\n version: _.version,\n // router is initialized later so it has to be live-binded\n get router () {\n return _.router;\n },\n emitter: _.emitter\n};\nconst devClient = (0, _hotmiddlewareclient.default)(\"webpack\");\n(0, _.initialize)({\n devClient\n}).then((param)=>{\n let { assetPrefix } = param;\n return (0, _pagebootstrap.pageBootrap)(assetPrefix);\n}).catch((err)=>{\n console.error(\"Error was not caught\", err);\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=next-dev.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9uZXh0LWRldi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDckI7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEZBLG1CQUFPQSxDQUFDLDZEQUFXO0FBQ25CLE1BQU1DLElBQUlELG1CQUFPQSxDQUFDLG9EQUFJO0FBQ3RCLE1BQU1FLHVCQUF1QixXQUFXLEdBQUdILHlCQUF5QkUsQ0FBQyxDQUFDRCxtQkFBT0EsQ0FBQyxpR0FBNkI7QUFDM0csTUFBTUcsaUJBQWlCSCxtQkFBT0EsQ0FBQywyRUFBa0I7QUFDakRBLG1CQUFPQSxDQUFDLDZGQUEyQjtBQUNuQ0ksT0FBT0MsSUFBSSxHQUFHO0lBQ1ZDLFNBQVNMLEVBQUVLLE9BQU87SUFDbEIsMERBQTBEO0lBQzFELElBQUlDLFVBQVU7UUFDVixPQUFPTixFQUFFTSxNQUFNO0lBQ25CO0lBQ0FDLFNBQVNQLEVBQUVPLE9BQU87QUFDdEI7QUFDQSxNQUFNQyxZQUFZLENBQUMsR0FBR1AscUJBQXFCUSxPQUFPLEVBQUU7QUFDbkQsSUFBR1QsRUFBRVUsVUFBVSxFQUFFO0lBQ2RGO0FBQ0osR0FBR0csSUFBSSxDQUFDLENBQUNDO0lBQ0wsSUFBSSxFQUFFQyxXQUFXLEVBQUUsR0FBR0Q7SUFDdEIsT0FBTyxDQUFDLEdBQUdWLGVBQWVZLFdBQVcsRUFBRUQ7QUFDM0MsR0FBR0UsS0FBSyxDQUFDLENBQUNDO0lBQ05DLFFBQVFDLEtBQUssQ0FBQyx3QkFBd0JGO0FBQzFDO0FBRUEsSUFBSSxDQUFDLE9BQU9wQixRQUFRYSxPQUFPLEtBQUssY0FBZSxPQUFPYixRQUFRYSxPQUFPLEtBQUssWUFBWWIsUUFBUWEsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPYixRQUFRYSxPQUFPLENBQUNVLFVBQVUsS0FBSyxhQUFhO0lBQ3JLekIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRYSxPQUFPLEVBQUUsY0FBYztRQUFFWixPQUFPO0lBQUs7SUFDbkVILE9BQU8wQixNQUFNLENBQUN4QixRQUFRYSxPQUFPLEVBQUViO0lBQy9CeUIsT0FBT3pCLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxFQUVBLG9DQUFvQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9uZXh0LWRldi5qcz8zNTE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFJlbW92ZSB1c2Ugb2YgYGFueWAgdHlwZS5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbnJlcXVpcmUoXCIuL3dlYnBhY2tcIik7XG5jb25zdCBfID0gcmVxdWlyZShcIi4vXCIpO1xuY29uc3QgX2hvdG1pZGRsZXdhcmVjbGllbnQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Rldi9ob3QtbWlkZGxld2FyZS1jbGllbnRcIikpO1xuY29uc3QgX3BhZ2Vib290c3RyYXAgPSByZXF1aXJlKFwiLi9wYWdlLWJvb3RzdHJhcFwiKTtcbnJlcXVpcmUoXCIuL3NldHVwLWh5ZHJhdGlvbi13YXJuaW5nXCIpO1xud2luZG93Lm5leHQgPSB7XG4gICAgdmVyc2lvbjogXy52ZXJzaW9uLFxuICAgIC8vIHJvdXRlciBpcyBpbml0aWFsaXplZCBsYXRlciBzbyBpdCBoYXMgdG8gYmUgbGl2ZS1iaW5kZWRcbiAgICBnZXQgcm91dGVyICgpIHtcbiAgICAgICAgcmV0dXJuIF8ucm91dGVyO1xuICAgIH0sXG4gICAgZW1pdHRlcjogXy5lbWl0dGVyXG59O1xuY29uc3QgZGV2Q2xpZW50ID0gKDAsIF9ob3RtaWRkbGV3YXJlY2xpZW50LmRlZmF1bHQpKFwid2VicGFja1wiKTtcbigwLCBfLmluaXRpYWxpemUpKHtcbiAgICBkZXZDbGllbnRcbn0pLnRoZW4oKHBhcmFtKT0+e1xuICAgIGxldCB7IGFzc2V0UHJlZml4IH0gPSBwYXJhbTtcbiAgICByZXR1cm4gKDAsIF9wYWdlYm9vdHN0cmFwLnBhZ2VCb290cmFwKShhc3NldFByZWZpeCk7XG59KS5jYXRjaCgoZXJyKT0+e1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3YXMgbm90IGNhdWdodFwiLCBlcnIpO1xufSk7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5leHQtZGV2LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfIiwiX2hvdG1pZGRsZXdhcmVjbGllbnQiLCJfcGFnZWJvb3RzdHJhcCIsIndpbmRvdyIsIm5leHQiLCJ2ZXJzaW9uIiwicm91dGVyIiwiZW1pdHRlciIsImRldkNsaWVudCIsImRlZmF1bHQiLCJpbml0aWFsaXplIiwidGhlbiIsInBhcmFtIiwiYXNzZXRQcmVmaXgiLCJwYWdlQm9vdHJhcCIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/next-dev.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/normalize-trailing-slash.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/normalize-trailing-slash.js ***! \*******************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizePathTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return normalizePathTrailingSlash;\n }\n}));\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nconst normalizePathTrailingSlash = (path)=>{\n if (!path.startsWith(\"/\") || undefined) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n if (true) {\n if (/\\.[^/]+\\/?$/.test(pathname)) {\n return \"\" + (0, _removetrailingslash.removeTrailingSlash)(pathname) + query + hash;\n } else if (pathname.endsWith(\"/\")) {\n return \"\" + pathname + query + hash;\n } else {\n return pathname + \"/\" + query + hash;\n }\n }\n return \"\" + (0, _removetrailingslash.removeTrailingSlash)(pathname) + query + hash;\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=normalize-trailing-slash.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDhEQUE2RDtJQUN6REksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLHVCQUF1QkMsbUJBQU9BLENBQUMsbUlBQWtEO0FBQ3ZGLE1BQU1DLGFBQWFELG1CQUFPQSxDQUFDLDZHQUF1QztBQUNsRSxNQUFNRiw2QkFBNkIsQ0FBQ0k7SUFDaEMsSUFBSSxDQUFDQSxLQUFLQyxVQUFVLENBQUMsUUFBUUMsU0FBd0MsRUFBRTtRQUNuRSxPQUFPRjtJQUNYO0lBQ0EsTUFBTSxFQUFFSyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHUixXQUFXUyxTQUFTLEVBQUVSO0lBQzVELElBQUlFLElBQWlDLEVBQUU7UUFDbkMsSUFBSSxjQUFjUSxJQUFJLENBQUNMLFdBQVc7WUFDOUIsT0FBTyxLQUFLLENBQUMsR0FBR1IscUJBQXFCYyxtQkFBbUIsRUFBRU4sWUFBWUMsUUFBUUM7UUFDbEYsT0FBTyxJQUFJRixTQUFTTyxRQUFRLENBQUMsTUFBTTtZQUMvQixPQUFPLEtBQUtQLFdBQVdDLFFBQVFDO1FBQ25DLE9BQU87WUFDSCxPQUFPRixXQUFXLE1BQU1DLFFBQVFDO1FBQ3BDO0lBQ0o7SUFDQSxPQUFPLEtBQUssQ0FBQyxHQUFHVixxQkFBcUJjLG1CQUFtQixFQUFFTixZQUFZQyxRQUFRQztBQUNsRjtBQUVBLElBQUksQ0FBQyxPQUFPZixRQUFRcUIsT0FBTyxLQUFLLGNBQWUsT0FBT3JCLFFBQVFxQixPQUFPLEtBQUssWUFBWXJCLFFBQVFxQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9yQixRQUFRcUIsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3hCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXFCLE9BQU8sRUFBRSxjQUFjO1FBQUVwQixPQUFPO0lBQUs7SUFDbkVILE9BQU95QixNQUFNLENBQUN2QixRQUFRcUIsT0FBTyxFQUFFckI7SUFDL0J3QixPQUFPeEIsT0FBTyxHQUFHQSxRQUFRcUIsT0FBTztBQUNsQyxFQUVBLG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanM/NGMyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaDtcbiAgICB9XG59KTtcbmNvbnN0IF9yZW1vdmV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9wYXJzZXBhdGggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aFwiKTtcbmNvbnN0IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoID0gKHBhdGgpPT57XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSAoMCwgX3BhcnNlcGF0aC5wYXJzZVBhdGgpKHBhdGgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICAgICAgaWYgKC9cXC5bXi9dK1xcLz8kLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyAoMCwgX3JlbW92ZXRyYWlsaW5nc2xhc2gucmVtb3ZlVHJhaWxpbmdTbGFzaCkocGF0aG5hbWUpICsgcXVlcnkgKyBoYXNoO1xuICAgICAgICB9IGVsc2UgaWYgKHBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBwYXRobmFtZSArIHF1ZXJ5ICsgaGFzaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZSArIFwiL1wiICsgcXVlcnkgKyBoYXNoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBcIlwiICsgKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKHBhdGhuYW1lKSArIHF1ZXJ5ICsgaGFzaDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vcm1hbGl6ZS10cmFpbGluZy1zbGFzaC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfcmVtb3ZldHJhaWxpbmdzbGFzaCIsInJlcXVpcmUiLCJfcGFyc2VwYXRoIiwicGF0aCIsInN0YXJ0c1dpdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwidGVzdCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJlbmRzV2l0aCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/normalize-trailing-slash.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/on-recoverable-error.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/on-recoverable-error.js ***! \***************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return onRecoverableError;\n }\n}));\nconst _bailouttocsr = __webpack_require__(/*! ../shared/lib/lazy-dynamic/bailout-to-csr */ \"./node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nfunction onRecoverableError(err) {\n // Using default react onRecoverableError\n // x-ref: https://github.com/facebook/react/blob/d4bc16a7d69eb2ea38a88c8ac0b461d5f72cdcab/packages/react-dom/src/client/ReactDOMRoot.js#L83\n const defaultOnRecoverableError = typeof reportError === \"function\" ? reportError : (error)=>{\n window.console.error(error);\n };\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(err)) return;\n defaultOnRecoverableError(err);\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=on-recoverable-error.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9vbi1yZWNvdmVyYWJsZS1lcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsZ0JBQWdCQyxtQkFBT0EsQ0FBQyxxSEFBMkM7QUFDekUsU0FBU0YsbUJBQW1CRyxHQUFHO0lBQzNCLHlDQUF5QztJQUN6QywySUFBMkk7SUFDM0ksTUFBTUMsNEJBQTRCLE9BQU9DLGdCQUFnQixhQUN6REEsY0FBYyxDQUFDQztRQUNYQyxPQUFPQyxPQUFPLENBQUNGLEtBQUssQ0FBQ0E7SUFDekI7SUFDQSw2RUFBNkU7SUFDN0UsSUFBSSxDQUFDLEdBQUdMLGNBQWNRLG1CQUFtQixFQUFFTixNQUFNO0lBQ2pEQywwQkFBMEJEO0FBQzlCO0FBRUEsSUFBSSxDQUFDLE9BQU9QLFFBQVFjLE9BQU8sS0FBSyxjQUFlLE9BQU9kLFFBQVFjLE9BQU8sS0FBSyxZQUFZZCxRQUFRYyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9kLFFBQVFjLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktqQixPQUFPQyxjQUFjLENBQUNDLFFBQVFjLE9BQU8sRUFBRSxjQUFjO1FBQUViLE9BQU87SUFBSztJQUNuRUgsT0FBT2tCLE1BQU0sQ0FBQ2hCLFFBQVFjLE9BQU8sRUFBRWQ7SUFDL0JpQixPQUFPakIsT0FBTyxHQUFHQSxRQUFRYyxPQUFPO0FBQ2xDLEVBRUEsZ0RBQWdEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L29uLXJlY292ZXJhYmxlLWVycm9yLmpzP2ViOTIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBvblJlY292ZXJhYmxlRXJyb3I7XG4gICAgfVxufSk7XG5jb25zdCBfYmFpbG91dHRvY3NyID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyXCIpO1xuZnVuY3Rpb24gb25SZWNvdmVyYWJsZUVycm9yKGVycikge1xuICAgIC8vIFVzaW5nIGRlZmF1bHQgcmVhY3Qgb25SZWNvdmVyYWJsZUVycm9yXG4gICAgLy8geC1yZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2Q0YmMxNmE3ZDY5ZWIyZWEzOGE4OGM4YWMwYjQ2MWQ1ZjcyY2RjYWIvcGFja2FnZXMvcmVhY3QtZG9tL3NyYy9jbGllbnQvUmVhY3RET01Sb290LmpzI0w4M1xuICAgIGNvbnN0IGRlZmF1bHRPblJlY292ZXJhYmxlRXJyb3IgPSB0eXBlb2YgcmVwb3J0RXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IC8vIGVtdWxhdGluZyBhbiB1bmNhdWdodCBKYXZhU2NyaXB0IGVycm9yLlxuICAgIHJlcG9ydEVycm9yIDogKGVycm9yKT0+e1xuICAgICAgICB3aW5kb3cuY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfTtcbiAgICAvLyBTa2lwIGNlcnRhaW4gY3VzdG9tIGVycm9ycyB3aGljaCBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIHJlcG9ydGVkIG9uIGNsaWVudFxuICAgIGlmICgoMCwgX2JhaWxvdXR0b2Nzci5pc0JhaWxvdXRUb0NTUkVycm9yKShlcnIpKSByZXR1cm47XG4gICAgZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvcihlcnIpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1vbi1yZWNvdmVyYWJsZS1lcnJvci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib25SZWNvdmVyYWJsZUVycm9yIiwiX2JhaWxvdXR0b2NzciIsInJlcXVpcmUiLCJlcnIiLCJkZWZhdWx0T25SZWNvdmVyYWJsZUVycm9yIiwicmVwb3J0RXJyb3IiLCJlcnJvciIsIndpbmRvdyIsImNvbnNvbGUiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/on-recoverable-error.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/page-bootstrap.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/client/page-bootstrap.js ***! \*********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"pageBootrap\", ({\n enumerable: true,\n get: function() {\n return pageBootrap;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _ = __webpack_require__(/*! ./ */ \"./node_modules/next/dist/client/index.js\");\nconst _ondemandentriesclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/on-demand-entries-client */ \"./node_modules/next/dist/client/dev/on-demand-entries-client.js\"));\nconst _devbuildwatcher = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/dev-build-watcher */ \"./node_modules/next/dist/client/dev/dev-build-watcher.js\"));\nconst _fouc = __webpack_require__(/*! ./dev/fouc */ \"./node_modules/next/dist/client/dev/fouc.js\");\nconst _websocket = __webpack_require__(/*! ./dev/error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../server/dev/hot-reloader-types */ \"./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nfunction pageBootrap(assetPrefix) {\n (0, _websocket.connectHMR)({\n assetPrefix,\n path: \"/_next/webpack-hmr\"\n });\n return (0, _.hydrate)({\n beforeRender: _fouc.displayContent\n }).then(()=>{\n (0, _ondemandentriesclient.default)();\n let buildIndicatorHandler;\n if (true) {\n (0, _devbuildwatcher.default)((handler)=>{\n buildIndicatorHandler = handler;\n }, \"bottom-right\");\n }\n let reloading = false;\n (0, _websocket.addMessageListener)((payload)=>{\n if (reloading) return;\n if (\"action\" in payload) {\n if (payload.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ERROR) {\n const { stack, message } = JSON.parse(payload.errorJSON);\n const error = new Error(message);\n error.stack = stack;\n throw error;\n } else if (payload.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE) {\n reloading = true;\n window.location.reload();\n } else if (payload.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE) {\n fetch(\"\" + assetPrefix + \"/_next/static/development/_devPagesManifest.json\").then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest\", err);\n });\n }\n } else if (\"event\" in payload) {\n if (payload.event === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES) {\n return window.location.reload();\n } else if (payload.event === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.CLIENT_CHANGES) {\n const isOnErrorPage = window.next.router.pathname === \"/_error\";\n // On the error page we want to reload the page when a page was changed\n if (isOnErrorPage) {\n return window.location.reload();\n }\n } else if (payload.event === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ONLY_CHANGES) {\n const { pages } = payload;\n // Make sure to reload when the dev-overlay is showing for an\n // API route\n // TODO: Fix `__NEXT_PAGE` type\n if (pages.includes(_.router.query.__NEXT_PAGE)) {\n return window.location.reload();\n }\n if (!_.router.clc && pages.includes(_.router.pathname)) {\n console.log(\"Refreshing page data due to server-side change\");\n buildIndicatorHandler == null ? void 0 : buildIndicatorHandler.show();\n const clearIndicator = ()=>buildIndicatorHandler == null ? void 0 : buildIndicatorHandler.hide();\n _.router.replace(_.router.pathname + \"?\" + String((0, _querystring.assign)((0, _querystring.urlQueryToSearchParams)(_.router.query), new URLSearchParams(location.search))), _.router.asPath, {\n scroll: false\n }).catch(()=>{\n // trigger hard reload when failing to refresh data\n // to show error overlay properly\n location.reload();\n }).finally(clearIndicator);\n }\n }\n }\n });\n });\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=page-bootstrap.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWJvb3RzdHJhcC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsK0NBQThDO0lBQzFDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsSUFBSUQsbUJBQU9BLENBQUMsb0RBQUk7QUFDdEIsTUFBTUUseUJBQXlCLFdBQVcsR0FBR0gseUJBQXlCRSxDQUFDLENBQUNELG1CQUFPQSxDQUFDLHVHQUFnQztBQUNoSCxNQUFNRyxtQkFBbUIsV0FBVyxHQUFHSix5QkFBeUJFLENBQUMsQ0FBQ0QsbUJBQU9BLENBQUMseUZBQXlCO0FBQ25HLE1BQU1JLFFBQVFKLG1CQUFPQSxDQUFDLCtEQUFZO0FBQ2xDLE1BQU1LLGFBQWFMLG1CQUFPQSxDQUFDLHFHQUErQjtBQUMxRCxNQUFNTSxlQUFlTixtQkFBT0EsQ0FBQywrR0FBd0M7QUFDckUsTUFBTU8sb0JBQW9CUCxtQkFBT0EsQ0FBQyxtR0FBa0M7QUFDcEUsU0FBU0YsWUFBWVUsV0FBVztJQUMzQixJQUFHSCxXQUFXSSxVQUFVLEVBQUU7UUFDdkJEO1FBQ0FFLE1BQU07SUFDVjtJQUNBLE9BQU8sQ0FBQyxHQUFHVCxFQUFFVSxPQUFPLEVBQUU7UUFDbEJDLGNBQWNSLE1BQU1TLGNBQWM7SUFDdEMsR0FBR0MsSUFBSSxDQUFDO1FBQ0gsSUFBR1osdUJBQXVCYSxPQUFPO1FBQ2xDLElBQUlDO1FBQ0osSUFBSUMsSUFBa0MsRUFBRTtZQUNuQyxJQUFHZCxpQkFBaUJZLE9BQU8sRUFBRSxDQUFDSztnQkFDM0JKLHdCQUF3Qkk7WUFDNUIsR0FBR0gsY0FBMkM7UUFDbEQ7UUFDQSxJQUFJSyxZQUFZO1FBQ2YsSUFBR2pCLFdBQVdrQixrQkFBa0IsRUFBRSxDQUFDQztZ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QUVBLElBQUksQ0FBQyxPQUFPckUsUUFBUXFCLE9BQU8sS0FBSyxjQUFlLE9BQU9yQixRQUFRcUIsT0FBTyxLQUFLLFlBQVlyQixRQUFRcUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPckIsUUFBUXFCLE9BQU8sQ0FBQzJELFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEYsT0FBT0MsY0FBYyxDQUFDQyxRQUFRcUIsT0FBTyxFQUFFLGNBQWM7UUFBRXBCLE9BQU87SUFBSztJQUNuRUgsT0FBTzJFLE1BQU0sQ0FBQ3pFLFFBQVFxQixPQUFPLEVBQUVyQjtJQUMvQmlGLE9BQU9qRixPQUFPLEdBQUdBLFFBQVFxQixPQUFPO0FBQ2xDLEVBRUEsMENBQTBDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3BhZ2UtYm9vdHN0cmFwLmpzP2VlZDEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJwYWdlQm9vdHJhcFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGFnZUJvb3RyYXA7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgXyA9IHJlcXVpcmUoXCIuL1wiKTtcbmNvbnN0IF9vbmRlbWFuZGVudHJpZXNjbGllbnQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Rldi9vbi1kZW1hbmQtZW50cmllcy1jbGllbnRcIikpO1xuY29uc3QgX2RldmJ1aWxkd2F0Y2hlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vZGV2L2Rldi1idWlsZC13YXRjaGVyXCIpKTtcbmNvbnN0IF9mb3VjID0gcmVxdWlyZShcIi4vZGV2L2ZvdWNcIik7XG5jb25zdCBfd2Vic29ja2V0ID0gcmVxdWlyZShcIi4vZGV2L2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuY29uc3QgX3F1ZXJ5c3RyaW5nID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nXCIpO1xuY29uc3QgX2hvdHJlbG9hZGVydHlwZXMgPSByZXF1aXJlKFwiLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXNcIik7XG5mdW5jdGlvbiBwYWdlQm9vdHJhcChhc3NldFByZWZpeCkge1xuICAgICgwLCBfd2Vic29ja2V0LmNvbm5lY3RITVIpKHtcbiAgICAgICAgYXNzZXRQcmVmaXgsXG4gICAgICAgIHBhdGg6IFwiL19uZXh0L3dlYnBhY2staG1yXCJcbiAgICB9KTtcbiAgICByZXR1cm4gKDAsIF8uaHlkcmF0ZSkoe1xuICAgICAgICBiZWZvcmVSZW5kZXI6IF9mb3VjLmRpc3BsYXlDb250ZW50XG4gICAgfSkudGhlbigoKT0+e1xuICAgICAgICAoMCwgX29uZGVtYW5kZW50cmllc2NsaWVudC5kZWZhdWx0KSgpO1xuICAgICAgICBsZXQgYnVpbGRJbmRpY2F0b3JIYW5kbGVyO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0JVSUxEX0lORElDQVRPUikge1xuICAgICAgICAgICAgKDAsIF9kZXZidWlsZHdhdGNoZXIuZGVmYXVsdCkoKGhhbmRsZXIpPT57XG4gICAgICAgICAgICAgICAgYnVpbGRJbmRpY2F0b3JIYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgICAgICAgIH0sIHByb2Nlc3MuZW52Ll9fTkVYVF9CVUlMRF9JTkRJQ0FUT1JfUE9TSVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZWxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgKDAsIF93ZWJzb2NrZXQuYWRkTWVzc2FnZUxpc3RlbmVyKSgocGF5bG9hZCk9PntcbiAgICAgICAgICAgIGlmIChyZWxvYWRpbmcpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChcImFjdGlvblwiIGluIHBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5hY3Rpb24gPT09IF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfRVJST1IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzdGFjaywgbWVzc2FnZSB9ID0gSlNPTi5wYXJzZShwYXlsb2FkLmVycm9ySlNPTik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5zdGFjayA9IHN0YWNrO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWQuYWN0aW9uID09PSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuUkVMT0FEX1BBR0UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGF5bG9hZC5hY3Rpb24gPT09IF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5ERVZfUEFHRVNfTUFOSUZFU1RfVVBEQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoKFwiXCIgKyBhc3NldFByZWZpeCArIFwiL19uZXh0L3N0YXRpYy9kZXZlbG9wbWVudC9fZGV2UGFnZXNNYW5pZmVzdC5qc29uXCIpLnRoZW4oKHJlcyk9PnJlcy5qc29uKCkpLnRoZW4oKG1hbmlmZXN0KT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9fREVWX1BBR0VTX01BTklGRVNUID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZhaWxlZCB0byBmZXRjaCBkZXZQYWdlc01hbmlmZXN0XCIsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXCJldmVudFwiIGluIHBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5ldmVudCA9PT0gX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLk1JRERMRVdBUkVfQ0hBTkdFUykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGF5bG9hZC5ldmVudCA9PT0gX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkNMSUVOVF9DSEFOR0VTKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzT25FcnJvclBhZ2UgPSB3aW5kb3cubmV4dC5yb3V0ZXIucGF0aG5hbWUgPT09IFwiL19lcnJvclwiO1xuICAgICAgICAgICAgICAgICAgICAvLyBPbiB0aGUgZXJyb3IgcGFnZSB3ZSB3YW50IHRvIHJlbG9hZCB0aGUgcGFnZSB3aGVuIGEgcGFnZSB3YXMgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkVycm9yUGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGF5bG9hZC5ldmVudCA9PT0gX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNFUlZFUl9PTkxZX0NIQU5HRVMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYWdlcyB9ID0gcGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHJlbG9hZCB3aGVuIHRoZSBkZXYtb3ZlcmxheSBpcyBzaG93aW5nIGZvciBhblxuICAgICAgICAgICAgICAgICAgICAvLyBBUEkgcm91dGVcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogRml4IGBfX05FWFRfUEFHRWAgdHlwZVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZXMuaW5jbHVkZXMoXy5yb3V0ZXIucXVlcnkuX19ORVhUX1BBR0UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghXy5yb3V0ZXIuY2xjICYmIHBhZ2VzLmluY2x1ZGVzKF8ucm91dGVyLnBhdGhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSZWZyZXNoaW5nIHBhZ2UgZGF0YSBkdWUgdG8gc2VydmVyLXNpZGUgY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRJbmRpY2F0b3JIYW5kbGVyID09IG51bGwgPyB2b2lkIDAgOiBidWlsZEluZGljYXRvckhhbmRsZXIuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xlYXJJbmRpY2F0b3IgPSAoKT0+YnVpbGRJbmRpY2F0b3JIYW5kbGVyID09IG51bGwgPyB2b2lkIDAgOiBidWlsZEluZGljYXRvckhhbmRsZXIuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5yb3V0ZXIucmVwbGFjZShfLnJvdXRlci5wYXRobmFtZSArIFwiP1wiICsgU3RyaW5nKCgwLCBfcXVlcnlzdHJpbmcuYXNzaWduKSgoMCwgX3F1ZXJ5c3RyaW5nLnVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMpKF8ucm91dGVyLnF1ZXJ5KSwgbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpKSksIF8ucm91dGVyLmFzUGF0aCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBoYXJkIHJlbG9hZCB3aGVuIGZhaWxpbmcgdG8gcmVmcmVzaCBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gc2hvdyBlcnJvciBvdmVybGF5IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5maW5hbGx5KGNsZWFySW5kaWNhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZ2UtYm9vdHN0cmFwLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJwYWdlQm9vdHJhcCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfIiwiX29uZGVtYW5kZW50cmllc2NsaWVudCIsIl9kZXZidWlsZHdhdGNoZXIiLCJfZm91YyIsIl93ZWJzb2NrZXQiLCJfcXVlcnlzdHJpbmciLCJfaG90cmVsb2FkZXJ0eXBlcyIsImFzc2V0UHJlZml4IiwiY29ubmVjdEhNUiIsInBhdGgiLCJoeWRyYXRlIiwiYmVmb3JlUmVuZGVyIiwiZGlzcGxheUNvbnRlbnQiLCJ0aGVuIiwiZGVmYXVsdCIsImJ1aWxkSW5kaWNhdG9ySGFuZGxlciIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQlVJTERfSU5ESUNBVE9SIiwiaGFuZGxlciIsIl9fTkVYVF9CVUlMRF9JTkRJQ0FUT1JfUE9TSVRJT04iLCJyZWxvYWRpbmciLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJwYXlsb2FkIiwiYWN0aW9uIiwiSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSIiwiU0VSVkVSX0VSUk9SIiwic3RhY2siLCJtZXNzYWdlIiwiSlNPTiIsInBhcnNlIiwiZXJyb3JKU09OIiwiZXJyb3IiLCJFcnJvciIsIlJFTE9BRF9QQUdFIiwid2luZG93IiwibG9jYXRpb24iLCJyZWxvYWQiLCJERVZfUEFHRVNfTUFOSUZFU1RfVVBEQVRFIiwiZmV0Y2giLCJyZXMiLCJqc29uIiwibWFuaWZlc3QiLCJfX0RFVl9QQUdFU19NQU5JRkVTVCIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsImxvZyIsImV2ZW50IiwiTUlERExFV0FSRV9DSEFOR0VTIiwiQ0xJRU5UX0NIQU5HRVMiLCJpc09uRXJyb3JQYWdlIiwibmV4dCIsInJvdXRlciIsInBhdGhuYW1lIiwiU0VSVkVSX09OTFlfQ0hBTkdFUyIsInBhZ2VzIiwiaW5jbHVkZXMiLCJxdWVyeSIsIl9fTkVYVF9QQUdFIiwiY2xjIiwic2hvdyIsImNsZWFySW5kaWNhdG9yIiwiaGlkZSIsInJlcGxhY2UiLCJTdHJpbmciLCJhc3NpZ24iLCJ1cmxRdWVyeVRvU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiYXNQYXRoIiwic2Nyb2xsIiwiZmluYWxseSIsIl9fZXNNb2R1bGUiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/page-bootstrap.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/page-loader.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/page-loader.js ***! \******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return PageLoader;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"./node_modules/next/dist/client/add-base-path.js\");\nconst _interpolateas = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"./node_modules/next/dist/client/add-locale.js\");\nconst _isdynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _parserelativeurl = __webpack_require__(/*! ../shared/lib/router/utils/parse-relative-url */ \"./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _routeloader = __webpack_require__(/*! ./route-loader */ \"./node_modules/next/dist/client/route-loader.js\");\nconst _constants = __webpack_require__(/*! ../shared/lib/constants */ \"./node_modules/next/dist/shared/lib/constants.js\");\nclass PageLoader {\n getPageList() {\n if (false) {} else {\n if (window.__DEV_PAGES_MANIFEST) {\n return window.__DEV_PAGES_MANIFEST.pages;\n } else {\n this.promisedDevPagesManifest || (this.promisedDevPagesManifest = fetch(this.assetPrefix + \"/_next/static/development/\" + _constants.DEV_CLIENT_PAGES_MANIFEST).then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n return manifest.pages;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest:\", err);\n throw new Error(\"Failed to fetch _devPagesManifest.json. Is something blocking that network request?\\n\" + \"Read more: https://nextjs.org/docs/messages/failed-to-fetch-devpagesmanifest\");\n }));\n return this.promisedDevPagesManifest;\n }\n }\n }\n getMiddleware() {\n if (false) {} else {\n if (window.__DEV_MIDDLEWARE_MATCHERS) {\n return window.__DEV_MIDDLEWARE_MATCHERS;\n } else {\n if (!this.promisedMiddlewareMatchers) {\n // TODO: Decide what should happen when fetching fails instead of asserting\n // @ts-ignore\n this.promisedMiddlewareMatchers = fetch(this.assetPrefix + \"/_next/static/\" + this.buildId + \"/\" + _constants.DEV_MIDDLEWARE_MANIFEST).then((res)=>res.json()).then((matchers)=>{\n window.__DEV_MIDDLEWARE_MATCHERS = matchers;\n return matchers;\n }).catch((err)=>{\n console.log(\"Failed to fetch _devMiddlewareManifest\", err);\n });\n }\n // TODO Remove this assertion as this could be undefined\n return this.promisedMiddlewareMatchers;\n }\n }\n }\n getDataHref(params) {\n const { asPath, href, locale } = params;\n const { pathname: hrefPathname, query, search } = (0, _parserelativeurl.parseRelativeUrl)(href);\n const { pathname: asPathname } = (0, _parserelativeurl.parseRelativeUrl)(asPath);\n const route = (0, _removetrailingslash.removeTrailingSlash)(hrefPathname);\n if (route[0] !== \"/\") {\n throw new Error('Route name should start with a \"/\", got \"' + route + '\"');\n }\n const getHrefForSlug = (path)=>{\n const dataRoute = (0, _getassetpathfromroute.default)((0, _removetrailingslash.removeTrailingSlash)((0, _addlocale.addLocale)(path, locale)), \".json\");\n return (0, _addbasepath.addBasePath)(\"/_next/data/\" + this.buildId + dataRoute + search, true);\n };\n return getHrefForSlug(params.skipInterpolation ? asPathname : (0, _isdynamic.isDynamicRoute)(route) ? (0, _interpolateas.interpolateAs)(hrefPathname, asPathname, query).result : route);\n }\n _isSsg(/** the route (file-system path) */ route) {\n return this.promisedSsgManifest.then((manifest)=>manifest.has(route));\n }\n loadPage(route) {\n return this.routeLoader.loadRoute(route).then((res)=>{\n if (\"component\" in res) {\n return {\n page: res.component,\n mod: res.exports,\n styleSheets: res.styles.map((o)=>({\n href: o.href,\n text: o.content\n }))\n };\n }\n throw res.error;\n });\n }\n prefetch(route) {\n return this.routeLoader.prefetch(route);\n }\n constructor(buildId, assetPrefix){\n this.routeLoader = (0, _routeloader.createRouteLoader)(assetPrefix);\n this.buildId = buildId;\n this.assetPrefix = assetPrefix;\n this.promisedSsgManifest = new Promise((resolve)=>{\n if (window.__SSG_MANIFEST) {\n resolve(window.__SSG_MANIFEST);\n } else {\n window.__SSG_MANIFEST_CB = ()=>{\n resolve(window.__SSG_MANIFEST);\n };\n }\n });\n }\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=page-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsZUFBZUQsbUJBQU9BLENBQUMseUVBQWlCO0FBQzlDLE1BQU1FLGlCQUFpQkYsbUJBQU9BLENBQUMscUhBQTJDO0FBQzFFLE1BQU1HLHlCQUF5QixXQUFXLEdBQUdKLHlCQUF5QkssQ0FBQyxDQUFDSixtQkFBT0EsQ0FBQywySUFBc0Q7QUFDdEksTUFBTUssYUFBYUwsbUJBQU9BLENBQUMsbUVBQWM7QUFDekMsTUFBTU0sYUFBYU4sbUJBQU9BLENBQUMsNkdBQXVDO0FBQ2xFLE1BQU1PLG9CQUFvQlAsbUJBQU9BLENBQUMsNkhBQStDO0FBQ2pGLE1BQU1RLHVCQUF1QlIsbUJBQU9BLENBQUMsbUlBQWtEO0FBQ3ZGLE1BQU1TLGVBQWVULG1CQUFPQSxDQUFDLHVFQUFnQjtBQUM3QyxNQUFNVSxhQUFhVixtQkFBT0EsQ0FBQyxpRkFBeUI7QUFDcEQsTUFBTUY7SUFDRmEsY0FBYztRQUNWLElBQUlDLEtBQXFDLEVBQUUsRUFFMUMsTUFBTTtZQUNILElBQUlLLE9BQU9DLG9CQUFvQixFQUFFO2dCQUM3QixPQUFPRCxPQUFPQyxvQkFBb0IsQ0FBQ0MsS0FBSztZQUM1QyxPQUFPO2dCQUNILElBQUksQ0FBQ0Msd0JBQXdCLElBQUssS0FBSSxDQUFDQSx3QkFBd0IsR0FBR0MsTUFBTSxJQUFJLENBQUNDLFdBQVcsR0FBRywrQkFBK0JaLFdBQVdhLHlCQUF5QixFQUFFVCxJQUFJLENBQUMsQ0FBQ1UsTUFBTUEsSUFBSUMsSUFBSSxJQUFJWCxJQUFJLENBQUMsQ0FBQ0M7b0JBQzFM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dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcz9lODdhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUGFnZUxvYWRlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfYWRkYmFzZXBhdGggPSByZXF1aXJlKFwiLi9hZGQtYmFzZS1wYXRoXCIpO1xuY29uc3QgX2ludGVycG9sYXRlYXMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJwb2xhdGUtYXNcIik7XG5jb25zdCBfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG5jb25zdCBfYWRkbG9jYWxlID0gcmVxdWlyZShcIi4vYWRkLWxvY2FsZVwiKTtcbmNvbnN0IF9pc2R5bmFtaWMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pY1wiKTtcbmNvbnN0IF9wYXJzZXJlbGF0aXZldXJsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbmNvbnN0IF9yZW1vdmV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9yb3V0ZWxvYWRlciA9IHJlcXVpcmUoXCIuL3JvdXRlLWxvYWRlclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9jb25zdGFudHNcIik7XG5jbGFzcyBQYWdlTG9hZGVyIHtcbiAgICBnZXRQYWdlTGlzdCgpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfcm91dGVsb2FkZXIuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCkoKS50aGVuKChtYW5pZmVzdCk9Pm1hbmlmZXN0LnNvcnRlZFBhZ2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuX19ERVZfUEFHRVNfTUFOSUZFU1QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93Ll9fREVWX1BBR0VTX01BTklGRVNULnBhZ2VzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb21pc2VkRGV2UGFnZXNNYW5pZmVzdCB8fCAodGhpcy5wcm9taXNlZERldlBhZ2VzTWFuaWZlc3QgPSBmZXRjaCh0aGlzLmFzc2V0UHJlZml4ICsgXCIvX25leHQvc3RhdGljL2RldmVsb3BtZW50L1wiICsgX2NvbnN0YW50cy5ERVZfQ0xJRU5UX1BBR0VTX01BTklGRVNUKS50aGVuKChyZXMpPT5yZXMuanNvbigpKS50aGVuKChtYW5pZmVzdCk9PntcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9fREVWX1BBR0VTX01BTklGRVNUID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYW5pZmVzdC5wYWdlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZhaWxlZCB0byBmZXRjaCBkZXZQYWdlc01hbmlmZXN0OlwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggX2RldlBhZ2VzTWFuaWZlc3QuanNvbi4gSXMgc29tZXRoaW5nIGJsb2NraW5nIHRoYXQgbmV0d29yayByZXF1ZXN0P1xcblwiICsgXCJSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ZhaWxlZC10by1mZXRjaC1kZXZwYWdlc21hbmlmZXN0XCIpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZERldlBhZ2VzTWFuaWZlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0TWlkZGxld2FyZSgpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc3QgbWlkZGxld2FyZU1hdGNoZXJzID0gcHJvY2Vzcy5lbnYuX19ORVhUX01JRERMRVdBUkVfTUFUQ0hFUlM7XG4gICAgICAgICAgICB3aW5kb3cuX19NSURETEVXQVJFX01BVENIRVJTID0gbWlkZGxld2FyZU1hdGNoZXJzID8gbWlkZGxld2FyZU1hdGNoZXJzIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5fX01JRERMRVdBUkVfTUFUQ0hFUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93Ll9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycykge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBEZWNpZGUgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gZmV0Y2hpbmcgZmFpbHMgaW5zdGVhZCBvZiBhc3NlcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb21pc2VkTWlkZGxld2FyZU1hdGNoZXJzID0gZmV0Y2godGhpcy5hc3NldFByZWZpeCArIFwiL19uZXh0L3N0YXRpYy9cIiArIHRoaXMuYnVpbGRJZCArIFwiL1wiICsgX2NvbnN0YW50cy5ERVZfTUlERExFV0FSRV9NQU5JRkVTVCkudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWF0Y2hlcnMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX19ERVZfTUlERExFV0FSRV9NQVRDSEVSUyA9IG1hdGNoZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXJzO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gZmV0Y2ggX2Rldk1pZGRsZXdhcmVNYW5pZmVzdFwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgdGhpcyBhc3NlcnRpb24gYXMgdGhpcyBjb3VsZCBiZSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREYXRhSHJlZihwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBhc1BhdGgsIGhyZWYsIGxvY2FsZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lOiBocmVmUGF0aG5hbWUsIHF1ZXJ5LCBzZWFyY2ggfSA9ICgwLCBfcGFyc2VyZWxhdGl2ZXVybC5wYXJzZVJlbGF0aXZlVXJsKShocmVmKTtcbiAgICAgICAgY29uc3QgeyBwYXRobmFtZTogYXNQYXRobmFtZSB9ID0gKDAsIF9wYXJzZXJlbGF0aXZldXJsLnBhcnNlUmVsYXRpdmVVcmwpKGFzUGF0aCk7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKGhyZWZQYXRobmFtZSk7XG4gICAgICAgIGlmIChyb3V0ZVswXSAhPT0gXCIvXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUm91dGUgbmFtZSBzaG91bGQgc3RhcnQgd2l0aCBhIFwiL1wiLCBnb3QgXCInICsgcm91dGUgKyAnXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBnZXRIcmVmRm9yU2x1ZyA9IChwYXRoKT0+e1xuICAgICAgICAgICAgY29uc3QgZGF0YVJvdXRlID0gKDAsIF9nZXRhc3NldHBhdGhmcm9tcm91dGUuZGVmYXVsdCkoKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKCgwLCBfYWRkbG9jYWxlLmFkZExvY2FsZSkocGF0aCwgbG9jYWxlKSksIFwiLmpzb25cIik7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9hZGRiYXNlcGF0aC5hZGRCYXNlUGF0aCkoXCIvX25leHQvZGF0YS9cIiArIHRoaXMuYnVpbGRJZCArIGRhdGFSb3V0ZSArIHNlYXJjaCwgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBnZXRIcmVmRm9yU2x1ZyhwYXJhbXMuc2tpcEludGVycG9sYXRpb24gPyBhc1BhdGhuYW1lIDogKDAsIF9pc2R5bmFtaWMuaXNEeW5hbWljUm91dGUpKHJvdXRlKSA/ICgwLCBfaW50ZXJwb2xhdGVhcy5pbnRlcnBvbGF0ZUFzKShocmVmUGF0aG5hbWUsIGFzUGF0aG5hbWUsIHF1ZXJ5KS5yZXN1bHQgOiByb3V0ZSk7XG4gICAgfVxuICAgIF9pc1NzZygvKiogdGhlIHJvdXRlIChmaWxlLXN5c3RlbSBwYXRoKSAqLyByb3V0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZFNzZ01hbmlmZXN0LnRoZW4oKG1hbmlmZXN0KT0+bWFuaWZlc3QuaGFzKHJvdXRlKSk7XG4gICAgfVxuICAgIGxvYWRQYWdlKHJvdXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlTG9hZGVyLmxvYWRSb3V0ZShyb3V0ZSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgaWYgKFwiY29tcG9uZW50XCIgaW4gcmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogcmVzLmNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgbW9kOiByZXMuZXhwb3J0cyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZXMubWFwKChvKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiBvLmhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogby5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgcmVzLmVycm9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJlZmV0Y2gocm91dGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVMb2FkZXIucHJlZmV0Y2gocm91dGUpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihidWlsZElkLCBhc3NldFByZWZpeCl7XG4gICAgICAgIHRoaXMucm91dGVMb2FkZXIgPSAoMCwgX3JvdXRlbG9hZGVyLmNyZWF0ZVJvdXRlTG9hZGVyKShhc3NldFByZWZpeCk7XG4gICAgICAgIHRoaXMuYnVpbGRJZCA9IGJ1aWxkSWQ7XG4gICAgICAgIHRoaXMuYXNzZXRQcmVmaXggPSBhc3NldFByZWZpeDtcbiAgICAgICAgdGhpcy5wcm9taXNlZFNzZ01hbmlmZXN0ID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fU1NHX01BTklGRVNUKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh3aW5kb3cuX19TU0dfTUFOSUZFU1QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuX19TU0dfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHdpbmRvdy5fX1NTR19NQU5JRkVTVCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYWdlLWxvYWRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiUGFnZUxvYWRlciIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfYWRkYmFzZXBhdGgiLCJfaW50ZXJwb2xhdGVhcyIsIl9nZXRhc3NldHBhdGhmcm9tcm91dGUiLCJfIiwiX2FkZGxvY2FsZSIsIl9pc2R5bmFtaWMiLCJfcGFyc2VyZWxhdGl2ZXVybCIsIl9yZW1vdmV0cmFpbGluZ3NsYXNoIiwiX3JvdXRlbG9hZGVyIiwiX2NvbnN0YW50cyIsImdldFBhZ2VMaXN0IiwicHJvY2VzcyIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJ0aGVuIiwibWFuaWZlc3QiLCJzb3J0ZWRQYWdlcyIsIndpbmRvdyIsIl9fREVWX1BBR0VTX01BTklGRVNUIiwicGFnZXMiLCJwcm9taXNlZERldlBhZ2VzTWFuaWZlc3QiLCJmZXRjaCIsImFzc2V0UHJlZml4IiwiREVWX0NMSUVOVF9QQUdFU19NQU5JRkVTVCIsInJlcyIsImpzb24iLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJFcnJvciIsImdldE1pZGRsZXdhcmUiLCJtaWRkbGV3YXJlTWF0Y2hlcnMiLCJlbnYiLCJfX05FWFRfTUlERExFV0FSRV9NQVRDSEVSUyIsIl9fTUlERExFV0FSRV9NQVRDSEVSUyIsInVuZGVmaW5lZCIsIl9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlMiLCJwcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycyIsImJ1aWxkSWQiLCJERVZfTUlERExFV0FSRV9NQU5JRkVTVCIsIm1hdGNoZXJzIiwiZ2V0RGF0YUhyZWYiLCJwYXJhbXMiLCJhc1BhdGgiLCJocmVmIiwibG9jYWxlIiwicGF0aG5hbWUiLCJocmVmUGF0aG5hbWUiLCJxdWVyeSIsInNlYXJjaCIsInBhcnNlUmVsYXRpdmVVcmwiLCJhc1BhdGhuYW1lIiwicm91dGUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZ2V0SHJlZkZvclNsdWciLCJwYXRoIiwiZGF0YVJvdXRlIiwiZGVmYXVsdCIsImFkZExvY2FsZSIsImFkZEJhc2VQYXRoIiwic2tpcEludGVycG9sYXRpb24iLCJpc0R5bmFtaWNSb3V0ZSIsImludGVycG9sYXRlQXMiLCJyZXN1bHQiLCJfaXNTc2ciLCJwcm9taXNlZFNzZ01hbmlmZXN0IiwiaGFzIiwibG9hZFBhZ2UiLCJyb3V0ZUxvYWRlciIsImxvYWRSb3V0ZSIsInBhZ2UiLCJjb21wb25lbnQiLCJtb2QiLCJzdHlsZVNoZWV0cyIsInN0eWxlcyIsIm1hcCIsIm8iLCJ0ZXh0IiwiY29udGVudCIsImVycm9yIiwicHJlZmV0Y2giLCJjb25zdHJ1Y3RvciIsImNyZWF0ZVJvdXRlTG9hZGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJfX1NTR19NQU5JRkVTVCIsIl9fU1NHX01BTklGRVNUX0NCIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/page-loader.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/performance-relayer.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/client/performance-relayer.js ***! \**************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* global location */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\n// copied to prevent pulling in un-necessary utils\nconst WEB_VITALS = [\n \"CLS\",\n \"FCP\",\n \"FID\",\n \"INP\",\n \"LCP\",\n \"TTFB\"\n];\nconst initialHref = location.href;\nlet isRegistered = false;\nlet userReportHandler;\nfunction onReport(metric) {\n if (userReportHandler) {\n userReportHandler(metric);\n }\n // This code is not shipped, executed, or present in the client-side\n // JavaScript bundle unless explicitly enabled in your application.\n //\n // When this feature is enabled, we'll make it very clear by printing a\n // message during the build (`next build`).\n if (false) { var _window___NEXT_DATA__; }\n}\nconst _default = (onPerfEntry)=>{\n // Update function if it changes:\n userReportHandler = onPerfEntry;\n // Only register listeners once:\n if (isRegistered) {\n return;\n }\n isRegistered = true;\n const attributions = undefined;\n for (const webVital of WEB_VITALS){\n try {\n let mod;\n if (false) {}\n if (!mod) {\n mod = __webpack_require__(/*! next/dist/compiled/web-vitals */ \"./node_modules/next/dist/compiled/web-vitals/web-vitals.js\");\n }\n mod[\"on\" + webVital](onReport);\n } catch (err) {\n // Do nothing if the module fails to load\n console.warn(\"Failed to track \" + webVital + \" web-vital\", err);\n }\n }\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=performance-relayer.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wZXJmb3JtYW5jZS1yZWxheWVyLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixHQUFnQjtBQUNuQ0EsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLGtEQUFrRDtBQUNsRCxNQUFNQyxhQUFhO0lBQ2Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0g7QUFDRCxNQUFNQyxjQUFjQyxTQUFTQyxJQUFJO0FBQ2pDLElBQUlDLGVBQWU7QUFDbkIsSUFBSUM7QUFDSixTQUFTQyxTQUFTQyxNQUFNO0lBQ3BCLElBQUlGLG1CQUFtQjtRQUNuQkEsa0JBQWtCRTtJQUN0QjtJQUNBLG9FQUFvRTtJQUNwRSxtRUFBbUU7SUFDbkUsRUFBRTtJQUNGLHVFQUF1RTtJQUN2RSwyQ0FBMkM7SUFDM0MsSUFBSUMsS0FDMkIsRUFBRSw4QkFtQ2hDO0FBQ0w7QUFDQSxNQUFNVCxXQUFXLENBQUN5QztJQUNkLGlDQUFpQztJQUNqQ25DLG9CQUFvQm1DO0lBQ3BCLGdDQUFnQztJQUNoQyxJQUFJcEMsY0FBYztRQUNkO0lBQ0o7SUFDQUEsZUFBZTtJQUNmLE1BQU1xQyxlQUFlakMsU0FBeUM7SUFDOUQsS0FBSyxNQUFNbUMsWUFBWTNDLFdBQVc7UUFDOUIsSUFBSTtZQUNBLElBQUk0QztZQUNKLElBQUlwQyxLQUE2QyxFQUFFLEVBSWxEO1lBQ0QsSUFBSSxDQUFDb0MsS0FBSztnQkFDTkEsTUFBTUcsbUJBQU9BLENBQUMsaUdBQStCO1lBQ2pEO1lBQ0FILEdBQUcsQ0FBQyxPQUFPRCxTQUFTLENBQUNyQztRQUN6QixFQUFFLE9BQU9pQyxLQUFLO1lBQ1YseUNBQXlDO1lBQ3pDRixRQUFRVyxJQUFJLENBQUMscUJBQXFCTCxXQUFXLGNBQWNKO1FBQy9EO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPNUMsUUFBUXNELE9BQU8sS0FBSyxjQUFlLE9BQU90RCxRQUFRc0QsT0FBTyxLQUFLLFlBQVl0RCxRQUFRc0QsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPdEQsUUFBUXNELE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt6RCxPQUFPQyxjQUFjLENBQUNDLFFBQVFzRCxPQUFPLEVBQUUsY0FBYztRQUFFckQsT0FBTztJQUFLO0lBQ25FSCxPQUFPMEQsTUFBTSxDQUFDeEQsUUFBUXNELE9BQU8sRUFBRXREO0lBQy9CeUQsT0FBT3pELE9BQU8sR0FBR0EsUUFBUXNELE9BQU87QUFDbEMsRUFFQSwrQ0FBK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcGVyZm9ybWFuY2UtcmVsYXllci5qcz9lZjcxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBsb2NhdGlvbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0O1xuICAgIH1cbn0pO1xuLy8gY29waWVkIHRvIHByZXZlbnQgcHVsbGluZyBpbiB1bi1uZWNlc3NhcnkgdXRpbHNcbmNvbnN0IFdFQl9WSVRBTFMgPSBbXG4gICAgXCJDTFNcIixcbiAgICBcIkZDUFwiLFxuICAgIFwiRklEXCIsXG4gICAgXCJJTlBcIixcbiAgICBcIkxDUFwiLFxuICAgIFwiVFRGQlwiXG5dO1xuY29uc3QgaW5pdGlhbEhyZWYgPSBsb2NhdGlvbi5ocmVmO1xubGV0IGlzUmVnaXN0ZXJlZCA9IGZhbHNlO1xubGV0IHVzZXJSZXBvcnRIYW5kbGVyO1xuZnVuY3Rpb24gb25SZXBvcnQobWV0cmljKSB7XG4gICAgaWYgKHVzZXJSZXBvcnRIYW5kbGVyKSB7XG4gICAgICAgIHVzZXJSZXBvcnRIYW5kbGVyKG1ldHJpYyk7XG4gICAgfVxuICAgIC8vIFRoaXMgY29kZSBpcyBub3Qgc2hpcHBlZCwgZXhlY3V0ZWQsIG9yIHByZXNlbnQgaW4gdGhlIGNsaWVudC1zaWRlXG4gICAgLy8gSmF2YVNjcmlwdCBidW5kbGUgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiB5b3VyIGFwcGxpY2F0aW9uLlxuICAgIC8vXG4gICAgLy8gV2hlbiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgd2UnbGwgbWFrZSBpdCB2ZXJ5IGNsZWFyIGJ5IHByaW50aW5nIGFcbiAgICAvLyBtZXNzYWdlIGR1cmluZyB0aGUgYnVpbGQgKGBuZXh0IGJ1aWxkYCkuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiAmJiAvLyBUaGlzIGZpZWxkIGlzIGVtcHR5IHVubGVzcyB5b3UgZXhwbGljaXRseSBjb25maWd1cmUgaXQ6XG4gICAgcHJvY2Vzcy5lbnYuX19ORVhUX0FOQUxZVElDU19JRCkge1xuICAgICAgICB2YXIgX3dpbmRvd19fX05FWFRfREFUQV9fO1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgZHNuOiBwcm9jZXNzLmVudi5fX05FWFRfQU5BTFlUSUNTX0lELFxuICAgICAgICAgICAgaWQ6IG1ldHJpYy5pZCxcbiAgICAgICAgICAgIHBhZ2U6IChfd2luZG93X19fTkVYVF9EQVRBX18gPSB3aW5kb3cuX19ORVhUX0RBVEFfXykgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW5kb3dfX19ORVhUX0RBVEFfXy5wYWdlLFxuICAgICAgICAgICAgaHJlZjogaW5pdGlhbEhyZWYsXG4gICAgICAgICAgICBldmVudF9uYW1lOiBtZXRyaWMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtZXRyaWMudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNwZWVkOiBcImNvbm5lY3Rpb25cIiBpbiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yW1wiY29ubmVjdGlvblwiXSAmJiBcImVmZmVjdGl2ZVR5cGVcIiBpbiBuYXZpZ2F0b3JbXCJjb25uZWN0aW9uXCJdID8gbmF2aWdhdG9yW1wiY29ubmVjdGlvblwiXVtcImVmZmVjdGl2ZVR5cGVcIl0gOiBcIlwiXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbXG4gICAgICAgICAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKGJvZHkpLnRvU3RyaW5nKClcbiAgICAgICAgXSwge1xuICAgICAgICAgICAgLy8gVGhpcyBjb250ZW50IHR5cGUgaXMgbmVjZXNzYXJ5IGZvciBgc2VuZEJlYWNvbmA6XG4gICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB2aXRhbHNVcmwgPSBcImh0dHBzOi8vdml0YWxzLnZlcmNlbC1pbnNpZ2h0cy5jb20vdjEvdml0YWxzXCI7XG4gICAgICAgIC8vIE5hdmlnYXRvciBoYXMgdG8gYmUgYm91bmQgdG8gZW5zdXJlIGl0IGRvZXMgbm90IGVycm9yIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gaHR0cHM6Ly94Z3dhbmcubWUvcG9zdHMveW91LW1heS1ub3Qta25vdy1iZWFjb24vI2l0LW1heS10aHJvdy1lcnJvciUyQy1iZS1zdXJlLXRvLWNhdGNoXG4gICAgICAgIGNvbnN0IHNlbmQgPSBuYXZpZ2F0b3Iuc2VuZEJlYWNvbiAmJiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbi5iaW5kKG5hdmlnYXRvcik7XG4gICAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrU2VuZCgpIHtcbiAgICAgICAgICAgIGZldGNoKHZpdGFsc1VybCwge1xuICAgICAgICAgICAgICAgIGJvZHk6IGJsb2IsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogXCJvbWl0XCIsXG4gICAgICAgICAgICAgICAga2VlcGFsaXZlOiB0cnVlXG4gICAgICAgICAgICB9KS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gSWYgc2VuZCBpcyB1bmRlZmluZWQgaXQnbGwgdGhyb3cgYXMgd2VsbC4gVGhpcyByZWR1Y2VzIG91dHB1dCBjb2RlIHNpemUuXG4gICAgICAgICAgICBzZW5kKHZpdGFsc1VybCwgYmxvYikgfHwgZmFsbGJhY2tTZW5kKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZmFsbGJhY2tTZW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zdCBfZGVmYXVsdCA9IChvblBlcmZFbnRyeSk9PntcbiAgICAvLyBVcGRhdGUgZnVuY3Rpb24gaWYgaXQgY2hhbmdlczpcbiAgICB1c2VyUmVwb3J0SGFuZGxlciA9IG9uUGVyZkVudHJ5O1xuICAgIC8vIE9ubHkgcmVnaXN0ZXIgbGlzdGVuZXJzIG9uY2U6XG4gICAgaWYgKGlzUmVnaXN0ZXJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzUmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgY29uc3QgYXR0cmlidXRpb25zID0gcHJvY2Vzcy5lbnYuX19ORVhUX1dFQl9WSVRBTFNfQVRUUklCVVRJT047XG4gICAgZm9yIChjb25zdCB3ZWJWaXRhbCBvZiBXRUJfVklUQUxTKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBtb2Q7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0hBU19XRUJfVklUQUxTX0FUVFJJQlVUSU9OKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogYXR0cmlidXRpb25zLmluY2x1ZGVzKHdlYlZpdGFsKSkge1xuICAgICAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHMtYXR0cmlidXRpb25cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtb2QpIHtcbiAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtb2RbXCJvblwiICsgd2ViVml0YWxdKG9uUmVwb3J0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nIGlmIHRoZSBtb2R1bGUgZmFpbHMgdG8gbG9hZFxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHRyYWNrIFwiICsgd2ViVml0YWwgKyBcIiB3ZWItdml0YWxcIiwgZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBlcmZvcm1hbmNlLXJlbGF5ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl9kZWZhdWx0IiwiV0VCX1ZJVEFMUyIsImluaXRpYWxIcmVmIiwibG9jYXRpb24iLCJocmVmIiwiaXNSZWdpc3RlcmVkIiwidXNlclJlcG9ydEhhbmRsZXIiLCJvblJlcG9ydCIsIm1ldHJpYyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQU5BTFlUSUNTX0lEIiwiX3dpbmRvd19fX05FWFRfREFUQV9fIiwiYm9keSIsImRzbiIsImlkIiwicGFnZSIsIndpbmRvdyIsIl9fTkVYVF9EQVRBX18iLCJldmVudF9uYW1lIiwibmFtZSIsInRvU3RyaW5nIiwic3BlZWQiLCJuYXZpZ2F0b3IiLCJibG9iIiwiQmxvYiIsIlVSTFNlYXJjaFBhcmFtcyIsInR5cGUiLCJ2aXRhbHNVcmwiLCJzZW5kIiwic2VuZEJlYWNvbiIsImJpbmQiLCJmYWxsYmFja1NlbmQiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwia2VlcGFsaXZlIiwiY2F0Y2giLCJjb25zb2xlIiwiZXJyb3IiLCJlcnIiLCJvblBlcmZFbnRyeSIsImF0dHJpYnV0aW9ucyIsIl9fTkVYVF9XRUJfVklUQUxTX0FUVFJJQlVUSU9OIiwid2ViVml0YWwiLCJtb2QiLCJfX05FWFRfSEFTX1dFQl9WSVRBTFNfQVRUUklCVVRJT04iLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJ3YXJuIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/performance-relayer.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/portal/index.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/portal/index.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Portal\", ({\n enumerable: true,\n get: function() {\n return Portal;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nconst _reactdom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\nconst Portal = (param)=>{\n let { children, type } = param;\n const [portalNode, setPortalNode] = (0, _react.useState)(null);\n (0, _react.useEffect)(()=>{\n const element = document.createElement(type);\n document.body.appendChild(element);\n setPortalNode(element);\n return ()=>{\n document.body.removeChild(element);\n };\n }, [\n type\n ]);\n return portalNode ? /*#__PURE__*/ (0, _reactdom.createPortal)(children, portalNode) : null;\n};\n_c = Portal;\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=index.js.map\nvar _c;\n$RefreshReg$(_c, \"Portal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wb3J0YWwvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDBDQUF5QztJQUNyQ0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLFNBQVNDLG1CQUFPQSxDQUFDLDRDQUFPO0FBQzlCLE1BQU1DLFlBQVlELG1CQUFPQSxDQUFDLG9EQUFXO0FBQ3JDLE1BQU1GLFNBQVMsQ0FBQ0k7SUFDWixJQUFJLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFLEdBQUdGO0lBQ3pCLE1BQU0sQ0FBQ0csWUFBWUMsY0FBYyxHQUFHLENBQUMsR0FBR1AsT0FBT1EsUUFBUSxFQUFFO0lBQ3hELElBQUdSLE9BQU9TLFNBQVMsRUFBRTtRQUNsQixNQUFNQyxVQUFVQyxTQUFTQyxhQUFhLENBQUNQO1FBQ3ZDTSxTQUFTRSxJQUFJLENBQUNDLFdBQVcsQ0FBQ0o7UUFDMUJILGNBQWNHO1FBQ2QsT0FBTztZQUNIQyxTQUFTRSxJQUFJLENBQUNFLFdBQVcsQ0FBQ0w7UUFDOUI7SUFDSixHQUFHO1FBQ0NMO0tBQ0g7SUFDRCxPQUFPQyxhQUEyQixXQUFILEdBQUksSUFBR0osVUFBVWMsWUFBWSxFQUFFWixVQUFVRSxjQUFjO0FBQzFGO0tBZE1QO0FBZ0JOLElBQUksQ0FBQyxPQUFPSixRQUFRc0IsT0FBTyxLQUFLLGNBQWUsT0FBT3RCLFFBQVFzQixPQUFPLEtBQUssWUFBWXRCLFFBQVFzQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU90QixRQUFRc0IsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3pCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXNCLE9BQU8sRUFBRSxjQUFjO1FBQUVyQixPQUFPO0lBQUs7SUFDbkVILE9BQU8wQixNQUFNLENBQUN4QixRQUFRc0IsT0FBTyxFQUFFdEI7SUFDL0J5QixPQUFPekIsT0FBTyxHQUFHQSxRQUFRc0IsT0FBTztBQUNsQyxFQUVBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wb3J0YWwvaW5kZXguanM/MzFhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvcnRhbFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUG9ydGFsO1xuICAgIH1cbn0pO1xuY29uc3QgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuY29uc3QgX3JlYWN0ZG9tID0gcmVxdWlyZShcInJlYWN0LWRvbVwiKTtcbmNvbnN0IFBvcnRhbCA9IChwYXJhbSk9PntcbiAgICBsZXQgeyBjaGlsZHJlbiwgdHlwZSB9ID0gcGFyYW07XG4gICAgY29uc3QgW3BvcnRhbE5vZGUsIHNldFBvcnRhbE5vZGVdID0gKDAsIF9yZWFjdC51c2VTdGF0ZSkobnVsbCk7XG4gICAgKDAsIF9yZWFjdC51c2VFZmZlY3QpKCgpPT57XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBzZXRQb3J0YWxOb2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICB0eXBlXG4gICAgXSk7XG4gICAgcmV0dXJuIHBvcnRhbE5vZGUgPyAvKiNfX1BVUkVfXyovICgwLCBfcmVhY3Rkb20uY3JlYXRlUG9ydGFsKShjaGlsZHJlbiwgcG9ydGFsTm9kZSkgOiBudWxsO1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIlBvcnRhbCIsIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVhY3Rkb20iLCJwYXJhbSIsImNoaWxkcmVuIiwidHlwZSIsInBvcnRhbE5vZGUiLCJzZXRQb3J0YWxOb2RlIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJjcmVhdGVQb3J0YWwiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/portal/index.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/remove-base-path.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/client/remove-base-path.js ***! \***********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeBasePath\", ({\n enumerable: true,\n get: function() {\n return removeBasePath;\n }\n}));\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst basePath = false || \"\";\nfunction removeBasePath(path) {\n if (false) {}\n // Can't trim the basePath if it has zero length!\n if (basePath.length === 0) return path;\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = \"/\" + path;\n return path;\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=remove-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCxrREFBaUQ7SUFDN0NJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxlQUFlQyxtQkFBT0EsQ0FBQyx5RUFBaUI7QUFDOUMsTUFBTUMsV0FBV0MsTUFBa0MsSUFBSTtBQUN2RCxTQUFTSixlQUFlTyxJQUFJO0lBQ3hCLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFDRCxpREFBaUQ7SUFDakQsSUFBSUQsU0FBU08sTUFBTSxLQUFLLEdBQUcsT0FBT0g7SUFDbENBLE9BQU9BLEtBQUtJLEtBQUssQ0FBQ1IsU0FBU08sTUFBTTtJQUNqQyxJQUFJLENBQUNILEtBQUtLLFVBQVUsQ0FBQyxNQUFNTCxPQUFPLE1BQU1BO0lBQ3hDLE9BQU9BO0FBQ1g7QUFFQSxJQUFJLENBQUMsT0FBT1gsUUFBUWlCLE9BQU8sS0FBSyxjQUFlLE9BQU9qQixRQUFRaUIsT0FBTyxLQUFLLFlBQVlqQixRQUFRaUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPakIsUUFBUWlCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktwQixPQUFPQyxjQUFjLENBQUNDLFFBQVFpQixPQUFPLEVBQUUsY0FBYztRQUFFaEIsT0FBTztJQUFLO0lBQ25FSCxPQUFPcUIsTUFBTSxDQUFDbkIsUUFBUWlCLE9BQU8sRUFBRWpCO0lBQy9Cb0IsT0FBT3BCLE9BQU8sR0FBR0EsUUFBUWlCLE9BQU87QUFDbEMsRUFFQSw0Q0FBNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC5qcz9iNGYxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicmVtb3ZlQmFzZVBhdGhcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZUJhc2VQYXRoO1xuICAgIH1cbn0pO1xuY29uc3QgX2hhc2Jhc2VwYXRoID0gcmVxdWlyZShcIi4vaGFzLWJhc2UtcGF0aFwiKTtcbmNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCBcIlwiO1xuZnVuY3Rpb24gcmVtb3ZlQmFzZVBhdGgocGF0aCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgpIHtcbiAgICAgICAgaWYgKCEoMCwgX2hhc2Jhc2VwYXRoLmhhc0Jhc2VQYXRoKShwYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2FuJ3QgdHJpbSB0aGUgYmFzZVBhdGggaWYgaXQgaGFzIHplcm8gbGVuZ3RoIVxuICAgIGlmIChiYXNlUGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoO1xuICAgIHBhdGggPSBwYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSBwYXRoID0gXCIvXCIgKyBwYXRoO1xuICAgIHJldHVybiBwYXRoO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUtYmFzZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJyZW1vdmVCYXNlUGF0aCIsIl9oYXNiYXNlcGF0aCIsInJlcXVpcmUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsIl9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCIsImhhc0Jhc2VQYXRoIiwibGVuZ3RoIiwic2xpY2UiLCJzdGFydHNXaXRoIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-base-path.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/remove-locale.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/remove-locale.js ***! \********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeLocale\", ({\n enumerable: true,\n get: function() {\n return removeLocale;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction removeLocale(path, locale) {\n if (false) {}\n return path;\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=remove-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCxnREFBK0M7SUFDM0NJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxhQUFhQyxtQkFBT0EsQ0FBQyw2R0FBdUM7QUFDbEUsU0FBU0YsYUFBYUcsSUFBSSxFQUFFQyxNQUFNO0lBQzlCLElBQUlDLEtBQStCLEVBQUUsRUFLcEM7SUFDRCxPQUFPRjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9QLFFBQVFvQixPQUFPLEtBQUssY0FBZSxPQUFPcEIsUUFBUW9CLE9BQU8sS0FBSyxZQUFZcEIsUUFBUW9CLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3BCLFFBQVFvQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdkIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRb0IsT0FBTyxFQUFFLGNBQWM7UUFBRW5CLE9BQU87SUFBSztJQUNuRUgsT0FBT3dCLE1BQU0sQ0FBQ3RCLFFBQVFvQixPQUFPLEVBQUVwQjtJQUMvQnVCLE9BQU92QixPQUFPLEdBQUdBLFFBQVFvQixPQUFPO0FBQ2xDLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlbW92ZS1sb2NhbGUuanM/NDc1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlbW92ZUxvY2FsZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVtb3ZlTG9jYWxlO1xuICAgIH1cbn0pO1xuY29uc3QgX3BhcnNlcGF0aCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1wYXRoXCIpO1xuZnVuY3Rpb24gcmVtb3ZlTG9jYWxlKHBhdGgsIGxvY2FsZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9ICgwLCBfcGFyc2VwYXRoLnBhcnNlUGF0aCkocGF0aCk7XG4gICAgICAgIGNvbnN0IHBhdGhMb3dlciA9IHBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGxvY2FsZUxvd2VyID0gbG9jYWxlID09IG51bGwgPyB2b2lkIDAgOiBsb2NhbGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZSAmJiAocGF0aExvd2VyLnN0YXJ0c1dpdGgoXCIvXCIgKyBsb2NhbGVMb3dlciArIFwiL1wiKSB8fCBwYXRoTG93ZXIgPT09IFwiL1wiICsgbG9jYWxlTG93ZXIpID8gXCJcIiArIChwYXRobmFtZS5sZW5ndGggPT09IGxvY2FsZS5sZW5ndGggKyAxID8gXCIvXCIgOiBcIlwiKSArIHBhdGguc2xpY2UobG9jYWxlLmxlbmd0aCArIDEpIDogcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlbW92ZS1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsInJlbW92ZUxvY2FsZSIsIl9wYXJzZXBhdGgiLCJyZXF1aXJlIiwicGF0aCIsImxvY2FsZSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwicGF0aG5hbWUiLCJwYXJzZVBhdGgiLCJwYXRoTG93ZXIiLCJ0b0xvd2VyQ2FzZSIsImxvY2FsZUxvd2VyIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsInNsaWNlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-locale.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/request-idle-callback.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/request-idle-callback.js ***! \****************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n requestIdleCallback: function() {\n return requestIdleCallback;\n },\n cancelIdleCallback: function() {\n return cancelIdleCallback;\n }\n});\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\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=request-idle-callback.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FHTjtBQUNBLFNBQVNHLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlULE9BQU9DLGNBQWMsQ0FBQ08sUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTCxTQUFTO0lBQ2JHLHFCQUFxQjtRQUNqQixPQUFPQTtJQUNYO0lBQ0FDLG9CQUFvQjtRQUNoQixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNRCxzQkFBc0IsT0FBT1EsU0FBUyxlQUFlQSxLQUFLUixtQkFBbUIsSUFBSVEsS0FBS1IsbUJBQW1CLENBQUNTLElBQUksQ0FBQ0MsV0FBVyxTQUFTQyxFQUFFO0lBQ3ZJLElBQUlDLFFBQVFDLEtBQUtDLEdBQUc7SUFDcEIsT0FBT04sS0FBS08sVUFBVSxDQUFDO1FBQ25CSixHQUFHO1lBQ0NLLFlBQVk7WUFDWkMsZUFBZTtnQkFDWCxPQUFPQyxLQUFLQyxHQUFHLENBQUMsR0FBRyxLQUFNTixDQUFBQSxLQUFLQyxHQUFHLEtBQUtGLEtBQUk7WUFDOUM7UUFDSjtJQUNKLEdBQUc7QUFDUDtBQUNBLE1BQU1YLHFCQUFxQixPQUFPTyxTQUFTLGVBQWVBLEtBQUtQLGtCQUFrQixJQUFJTyxLQUFLUCxrQkFBa0IsQ0FBQ1EsSUFBSSxDQUFDQyxXQUFXLFNBQVNVLEVBQUU7SUFDcEksT0FBT0MsYUFBYUQ7QUFDeEI7QUFFQSxJQUFJLENBQUMsT0FBT3ZCLFFBQVF5QixPQUFPLEtBQUssY0FBZSxPQUFPekIsUUFBUXlCLE9BQU8sS0FBSyxZQUFZekIsUUFBUXlCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3pCLFFBQVF5QixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLNUIsT0FBT0MsY0FBYyxDQUFDQyxRQUFReUIsT0FBTyxFQUFFLGNBQWM7UUFBRXhCLE9BQU87SUFBSztJQUNuRUgsT0FBTzZCLE1BQU0sQ0FBQzNCLFFBQVF5QixPQUFPLEVBQUV6QjtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFReUIsT0FBTztBQUNsQyxFQUVBLGlEQUFpRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanM/MWUyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s6IG51bGwsXG4gICAgY2FuY2VsSWRsZUNhbGxiYWNrOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVxdWVzdElkbGVDYWxsYmFjaztcbiAgICB9LFxuICAgIGNhbmNlbElkbGVDYWxsYmFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYW5jZWxJZGxlQ2FsbGJhY2s7XG4gICAgfVxufSk7XG5jb25zdCByZXF1ZXN0SWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oY2IpIHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBzZWxmLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNiKHtcbiAgICAgICAgICAgIGRpZFRpbWVvdXQ6IGZhbHNlLFxuICAgICAgICAgICAgdGltZVJlbWFpbmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIDUwIC0gKERhdGUubm93KCkgLSBzdGFydCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCAxKTtcbn07XG5jb25zdCBjYW5jZWxJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtaWRsZS1jYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/request-idle-callback.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/resolve-href.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/resolve-href.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"resolveHref\", ({\n enumerable: true,\n get: function() {\n return resolveHref;\n }\n}));\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _formaturl = __webpack_require__(/*! ../shared/lib/router/utils/format-url */ \"./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _omit = __webpack_require__(/*! ../shared/lib/router/utils/omit */ \"./node_modules/next/dist/shared/lib/router/utils/omit.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"./node_modules/next/dist/shared/lib/utils.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst _islocalurl = __webpack_require__(/*! ../shared/lib/router/utils/is-local-url */ \"./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _utils1 = __webpack_require__(/*! ../shared/lib/router/utils */ \"./node_modules/next/dist/shared/lib/router/utils/index.js\");\nconst _interpolateas = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n let base;\n let urlAsString = typeof href === \"string\" ? href : (0, _formaturl.formatWithValidation)(href);\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n const urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n const urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n const urlParts = urlAsStringNoProto.split(\"?\", 1);\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href '\" + urlAsString + \"' passed to next/router in page: '\" + router.pathname + \"'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.\");\n const normalizedUrl = (0, _utils.normalizeRepeatedSlashes)(urlAsStringNoProto);\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : \"\") + normalizedUrl;\n }\n // Return because it cannot be routed by the Next.js router\n if (!(0, _islocalurl.isLocalURL)(urlAsString)) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n try {\n base = new URL(urlAsString.startsWith(\"#\") ? router.asPath : router.pathname, \"http://n\");\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL(\"/\", \"http://n\");\n }\n try {\n const finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizetrailingslash.normalizePathTrailingSlash)(finalUrl.pathname);\n let interpolatedAs = \"\";\n if ((0, _utils1.isDynamicRoute)(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n const query = (0, _querystring.searchParamsToUrlQuery)(finalUrl.searchParams);\n const { result, params } = (0, _interpolateas.interpolateAs)(finalUrl.pathname, finalUrl.pathname, query);\n if (result) {\n interpolatedAs = (0, _formaturl.formatWithValidation)({\n pathname: result,\n hash: finalUrl.hash,\n query: (0, _omit.omit)(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n const resolvedHref = finalUrl.origin === base.origin ? finalUrl.href.slice(finalUrl.origin.length) : finalUrl.href;\n return resolveAs ? [\n resolvedHref,\n interpolatedAs || resolvedHref\n ] : resolvedHref;\n } catch (_) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\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=resolve-href.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXNvbHZlLWhyZWYuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILCtDQUE4QztJQUMxQ0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLGVBQWVDLG1CQUFPQSxDQUFDLCtHQUF3QztBQUNyRSxNQUFNQyxhQUFhRCxtQkFBT0EsQ0FBQyw2R0FBdUM7QUFDbEUsTUFBTUUsUUFBUUYsbUJBQU9BLENBQUMsaUdBQWlDO0FBQ3ZELE1BQU1HLFNBQVNILG1CQUFPQSxDQUFDLHlFQUFxQjtBQUM1QyxNQUFNSSwwQkFBMEJKLG1CQUFPQSxDQUFDLCtGQUE0QjtBQUNwRSxNQUFNSyxjQUFjTCxtQkFBT0EsQ0FBQyxpSEFBeUM7QUFDckUsTUFBTU0sVUFBVU4sbUJBQU9BLENBQUMsNkZBQTRCO0FBQ3BELE1BQU1PLGlCQUFpQlAsbUJBQU9BLENBQUMscUhBQTJDO0FBQzFFLFNBQVNGLFlBQVlVLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxTQUFTO0lBQ3hDLDRDQUE0QztJQUM1QyxJQUFJQztJQUNKLElBQUlDLGNBQWMsT0FBT0gsU0FBUyxXQUFXQSxPQUFPLENBQUMsR0FBR1IsV0FBV1ksb0JBQW9CLEVBQUVKO0lBQ3pGLDZEQUE2RDtJQUM3RCxtREFBbUQ7SUFDbkQsTUFBTUssZ0JBQWdCRixZQUFZRyxLQUFLLENBQUM7SUFDeEMsTUFBTUMscUJBQXFCRixnQkFBZ0JGLFlBQVlLLEtBQUssQ0FBQ0gsYUFBYSxDQUFDLEVBQUUsQ0FBQ0ksTUFBTSxJQUFJTjtJQUN4RixNQUFNTyxXQUFXSCxtQkFBbUJJLEtBQUssQ0FBQyxLQUFLO0lBQy9DLElBQUksQ0FBQ0QsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFDLEVBQUdKLEtBQUssQ0FBQyxjQUFjO1FBQ3hDTSxRQUFRQyxLQUFLLENBQUMsbUJBQW1CVixjQUFjLHVDQUF1Q0osT0FBT2UsUUFBUSxHQUFHO1FBQ3hHLE1BQU1DLGdCQUFnQixDQUFDLEdBQUdyQixPQUFPc0Isd0JBQXdCLEVBQUVUO1FBQzNESixjQUFjLENBQUNFLGdCQUFnQkEsYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFDLElBQUtVO0lBQzVEO0lBQ0EsMkRBQTJEO0lBQzNELElBQUksQ0FBQyxDQUFDLEdBQUduQixZQUFZcUIsVUFBVSxFQUFFZCxjQUFjO1FBQzNDLE9BQU9GLFlBQVk7WUFDZkU7U0FDSCxHQUFHQTtJQUNSO0lBQ0EsSUFBSTtRQUNBRCxPQUFPLElBQUlnQixJQUFJZixZQUFZZ0IsVUFBVSxDQUFDLE9BQU9wQixPQUFPcUIsTUFBTSxHQUFHckIsT0FBT2UsUUFBUSxFQUFFO0lBQ2xGLEVBQUUsT0FBT08sR0FBRztRQUNSLGtEQUFrRDtRQUNsRG5CLE9BQU8sSUFBSWdCLElBQUksS0FBSztJQUN4QjtJQUNBLElBQUk7UUFDQSxNQUFNSSxXQUFXLElBQUlKLElBQUlmLGFBQWFEO1FBQ3RDb0IsU0FBU1IsUUFBUSxHQUFHLENBQUMsR0FBR25CLHdCQUF3QjRCLDBCQUEwQixFQUFFRCxTQUFTUixRQUFRO1FBQzdGLElBQUlVLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsR0FBRzNCLFFBQVE0QixjQUFjLEVBQUVILFNBQVNSLFFBQVEsS0FBS1EsU0FBU0ksWUFBWSxJQUFJekIsV0FBVztZQUN0RixNQUFNMEIsUUFBUSxDQUFDLEdBQUdyQyxhQUFhc0Msc0JBQXNCLEVBQUVOLFNBQVNJLFlBQVk7WUFDNUUsTUFBTSxFQUFFRyxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBR2hDLGVBQWVpQyxhQUFhLEVBQUVULFNBQVNSLFFBQVEsRUFBRVEsU0FBU1IsUUFBUSxFQUFFYTtZQUNuRyxJQUFJRSxRQUFRO2dCQUNSTCxpQkFBaUIsQ0FBQyxHQUFHaEMsV0FBV1ksb0JBQW9CLEVBQUU7b0JBQ2xEVSxVQUFVZTtvQkFDVkcsTUFBTVYsU0FBU1UsSUFBSTtvQkFDbkJMLE9BQU8sQ0FBQyxHQUFHbEMsTUFBTXdDLElBQUksRUFBRU4sT0FBT0c7Z0JBQ2xDO1lBQ0o7UUFDSjtRQUNBLG9FQUFvRTtRQUNwRSxNQUFNSSxlQUFlWixTQUFTYSxNQUFNLEtBQUtqQyxLQUFLaUMsTUFBTSxHQUFHYixTQUFTdEIsSUFBSSxDQUFDUSxLQUFLLENBQUNjLFNBQVNhLE1BQU0sQ0FBQzFCLE1BQU0sSUFBSWEsU0FBU3RCLElBQUk7UUFDbEgsT0FBT0MsWUFBWTtZQUNmaUM7WUFDQVYsa0JBQWtCVTtTQUNyQixHQUFHQTtJQUNSLEVBQUUsT0FBT2IsR0FBRztRQUNSLE9BQU9wQixZQUFZO1lBQ2ZFO1NBQ0gsR0FBR0E7SUFDUjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU9sQixRQUFRbUQsT0FBTyxLQUFLLGNBQWUsT0FBT25ELFFBQVFtRCxPQUFPLEtBQUssWUFBWW5ELFFBQVFtRCxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9uRCxRQUFRbUQsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3RELE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUW1ELE9BQU8sRUFBRSxjQUFjO1FBQUVsRCxPQUFPO0lBQUs7SUFDbkVILE9BQU91RCxNQUFNLENBQUNyRCxRQUFRbUQsT0FBTyxFQUFFbkQ7SUFDL0JzRCxPQUFPdEQsT0FBTyxHQUFHQSxRQUFRbUQsT0FBTztBQUNsQyxFQUVBLHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXNvbHZlLWhyZWYuanM/MmY5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlc29sdmVIcmVmXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlSHJlZjtcbiAgICB9XG59KTtcbmNvbnN0IF9xdWVyeXN0cmluZyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9xdWVyeXN0cmluZ1wiKTtcbmNvbnN0IF9mb3JtYXR1cmwgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybFwiKTtcbmNvbnN0IF9vbWl0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL29taXRcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbmNvbnN0IF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgX2lzbG9jYWx1cmwgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtbG9jYWwtdXJsXCIpO1xuY29uc3QgX3V0aWxzMSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlsc1wiKTtcbmNvbnN0IF9pbnRlcnBvbGF0ZWFzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2ludGVycG9sYXRlLWFzXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZUhyZWYocm91dGVyLCBocmVmLCByZXNvbHZlQXMpIHtcbiAgICAvLyB3ZSB1c2UgYSBkdW1teSBiYXNlIHVybCBmb3IgcmVsYXRpdmUgdXJsc1xuICAgIGxldCBiYXNlO1xuICAgIGxldCB1cmxBc1N0cmluZyA9IHR5cGVvZiBocmVmID09PSBcInN0cmluZ1wiID8gaHJlZiA6ICgwLCBfZm9ybWF0dXJsLmZvcm1hdFdpdGhWYWxpZGF0aW9uKShocmVmKTtcbiAgICAvLyByZXBlYXRlZCBzbGFzaGVzIGFuZCBiYWNrc2xhc2hlcyBpbiB0aGUgVVJMIGFyZSBjb25zaWRlcmVkXG4gICAgLy8gaW52YWxpZCBhbmQgd2lsbCBuZXZlciBtYXRjaCBhIE5leHQuanMgcGFnZS9maWxlXG4gICAgY29uc3QgdXJsUHJvdG9NYXRjaCA9IHVybEFzU3RyaW5nLm1hdGNoKC9eW2EtekEtWl17MSx9OlxcL1xcLy8pO1xuICAgIGNvbnN0IHVybEFzU3RyaW5nTm9Qcm90byA9IHVybFByb3RvTWF0Y2ggPyB1cmxBc1N0cmluZy5zbGljZSh1cmxQcm90b01hdGNoWzBdLmxlbmd0aCkgOiB1cmxBc1N0cmluZztcbiAgICBjb25zdCB1cmxQYXJ0cyA9IHVybEFzU3RyaW5nTm9Qcm90by5zcGxpdChcIj9cIiwgMSk7XG4gICAgaWYgKCh1cmxQYXJ0c1swXSB8fCBcIlwiKS5tYXRjaCgvKFxcL1xcL3xcXFxcKS8pKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGhyZWYgJ1wiICsgdXJsQXNTdHJpbmcgKyBcIicgcGFzc2VkIHRvIG5leHQvcm91dGVyIGluIHBhZ2U6ICdcIiArIHJvdXRlci5wYXRobmFtZSArIFwiJy4gUmVwZWF0ZWQgZm9yd2FyZC1zbGFzaGVzICgvLykgb3IgYmFja3NsYXNoZXMgXFxcXCBhcmUgbm90IHZhbGlkIGluIHRoZSBocmVmLlwiKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFVybCA9ICgwLCBfdXRpbHMubm9ybWFsaXplUmVwZWF0ZWRTbGFzaGVzKSh1cmxBc1N0cmluZ05vUHJvdG8pO1xuICAgICAgICB1cmxBc1N0cmluZyA9ICh1cmxQcm90b01hdGNoID8gdXJsUHJvdG9NYXRjaFswXSA6IFwiXCIpICsgbm9ybWFsaXplZFVybDtcbiAgICB9XG4gICAgLy8gUmV0dXJuIGJlY2F1c2UgaXQgY2Fubm90IGJlIHJvdXRlZCBieSB0aGUgTmV4dC5qcyByb3V0ZXJcbiAgICBpZiAoISgwLCBfaXNsb2NhbHVybC5pc0xvY2FsVVJMKSh1cmxBc1N0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYmFzZSA9IG5ldyBVUkwodXJsQXNTdHJpbmcuc3RhcnRzV2l0aChcIiNcIikgPyByb3V0ZXIuYXNQYXRoIDogcm91dGVyLnBhdGhuYW1lLCBcImh0dHA6Ly9uXCIpO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gLyBmb3IgaW52YWxpZCBhc1BhdGggdmFsdWVzIGUuZy4gLy9cbiAgICAgICAgYmFzZSA9IG5ldyBVUkwoXCIvXCIsIFwiaHR0cDovL25cIik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbmFsVXJsID0gbmV3IFVSTCh1cmxBc1N0cmluZywgYmFzZSk7XG4gICAgICAgIGZpbmFsVXJsLnBhdGhuYW1lID0gKDAsIF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoLm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKShmaW5hbFVybC5wYXRobmFtZSk7XG4gICAgICAgIGxldCBpbnRlcnBvbGF0ZWRBcyA9IFwiXCI7XG4gICAgICAgIGlmICgoMCwgX3V0aWxzMS5pc0R5bmFtaWNSb3V0ZSkoZmluYWxVcmwucGF0aG5hbWUpICYmIGZpbmFsVXJsLnNlYXJjaFBhcmFtcyAmJiByZXNvbHZlQXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gKDAsIF9xdWVyeXN0cmluZy5zZWFyY2hQYXJhbXNUb1VybFF1ZXJ5KShmaW5hbFVybC5zZWFyY2hQYXJhbXMpO1xuICAgICAgICAgICAgY29uc3QgeyByZXN1bHQsIHBhcmFtcyB9ID0gKDAsIF9pbnRlcnBvbGF0ZWFzLmludGVycG9sYXRlQXMpKGZpbmFsVXJsLnBhdGhuYW1lLCBmaW5hbFVybC5wYXRobmFtZSwgcXVlcnkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGludGVycG9sYXRlZEFzID0gKDAsIF9mb3JtYXR1cmwuZm9ybWF0V2l0aFZhbGlkYXRpb24pKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgaGFzaDogZmluYWxVcmwuaGFzaCxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6ICgwLCBfb21pdC5vbWl0KShxdWVyeSwgcGFyYW1zKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRoZSBvcmlnaW4gZGlkbid0IGNoYW5nZSwgaXQgbWVhbnMgd2UgcmVjZWl2ZWQgYSByZWxhdGl2ZSBocmVmXG4gICAgICAgIGNvbnN0IHJlc29sdmVkSHJlZiA9IGZpbmFsVXJsLm9yaWdpbiA9PT0gYmFzZS5vcmlnaW4gPyBmaW5hbFVybC5ocmVmLnNsaWNlKGZpbmFsVXJsLm9yaWdpbi5sZW5ndGgpIDogZmluYWxVcmwuaHJlZjtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHJlc29sdmVkSHJlZixcbiAgICAgICAgICAgIGludGVycG9sYXRlZEFzIHx8IHJlc29sdmVkSHJlZlxuICAgICAgICBdIDogcmVzb2x2ZWRIcmVmO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBcyA/IFtcbiAgICAgICAgICAgIHVybEFzU3RyaW5nXG4gICAgICAgIF0gOiB1cmxBc1N0cmluZztcbiAgICB9XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlc29sdmUtaHJlZi5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwicmVzb2x2ZUhyZWYiLCJfcXVlcnlzdHJpbmciLCJyZXF1aXJlIiwiX2Zvcm1hdHVybCIsIl9vbWl0IiwiX3V0aWxzIiwiX25vcm1hbGl6ZXRyYWlsaW5nc2xhc2giLCJfaXNsb2NhbHVybCIsIl91dGlsczEiLCJfaW50ZXJwb2xhdGVhcyIsInJvdXRlciIsImhyZWYiLCJyZXNvbHZlQXMiLCJiYXNlIiwidXJsQXNTdHJpbmciLCJmb3JtYXRXaXRoVmFsaWRhdGlvbiIsInVybFByb3RvTWF0Y2giLCJtYXRjaCIsInVybEFzU3RyaW5nTm9Qcm90byIsInNsaWNlIiwibGVuZ3RoIiwidXJsUGFydHMiLCJzcGxpdCIsImNvbnNvbGUiLCJlcnJvciIsInBhdGhuYW1lIiwibm9ybWFsaXplZFVybCIsIm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcyIsImlzTG9jYWxVUkwiLCJVUkwiLCJzdGFydHNXaXRoIiwiYXNQYXRoIiwiXyIsImZpbmFsVXJsIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJpbnRlcnBvbGF0ZWRBcyIsImlzRHluYW1pY1JvdXRlIiwic2VhcmNoUGFyYW1zIiwicXVlcnkiLCJzZWFyY2hQYXJhbXNUb1VybFF1ZXJ5IiwicmVzdWx0IiwicGFyYW1zIiwiaW50ZXJwb2xhdGVBcyIsImhhc2giLCJvbWl0IiwicmVzb2x2ZWRIcmVmIiwib3JpZ2luIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/resolve-href.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/route-announcer.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/client/route-announcer.js ***! \**********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RouteAnnouncer: function() {\n return RouteAnnouncer;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nconst nextjsRouteAnnouncerStyles = {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n width: \"1px\",\n // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\nconst RouteAnnouncer = ()=>{\n _s();\n const { asPath } = (0, _router.useRouter)();\n const [routeAnnouncement, setRouteAnnouncement] = _react.default.useState(\"\");\n // Only announce the path change, but not for the first load because screen\n // reader will do that automatically.\n const previouslyLoadedPath = _react.default.useRef(asPath);\n // Every time the path changes, announce the new page’s title following this\n // priority: first the document title (from head), otherwise the first h1, or\n // if none of these exist, then the pathname from the URL. This methodology is\n // inspired by Marcy Sutton’s accessible client routing user testing. More\n // information can be found here:\n // https://www.gatsbyjs.com/blog/2019-07-11-user-testing-accessible-client-routing/\n _react.default.useEffect(()=>{\n // If the path hasn't change, we do nothing.\n if (previouslyLoadedPath.current === asPath) return;\n previouslyLoadedPath.current = asPath;\n if (document.title) {\n setRouteAnnouncement(document.title);\n } else {\n const pageHeader = document.querySelector(\"h1\");\n var _pageHeader_innerText;\n const content = (_pageHeader_innerText = pageHeader == null ? void 0 : pageHeader.innerText) != null ? _pageHeader_innerText : pageHeader == null ? void 0 : pageHeader.textContent;\n setRouteAnnouncement(content || asPath);\n }\n }, [\n asPath\n ]);\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"p\", {\n \"aria-live\": \"assertive\" // Make the announcement immediately.\n ,\n id: \"__next-route-announcer__\",\n role: \"alert\",\n style: nextjsRouteAnnouncerStyles,\n children: routeAnnouncement\n });\n};\n_s(RouteAnnouncer, \"YC5SCNeVaenA6x7RBk3t0O2D/M8=\");\n_c = RouteAnnouncer;\nconst _default = RouteAnnouncer;\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=route-announcer.js.map\nvar _c;\n$RefreshReg$(_c, \"RouteAnnouncer\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1hbm5vdW5jZXIuanMiLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQUdOO0FBQ0EsU0FBU0csUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSVQsT0FBT0MsY0FBYyxDQUFDTyxRQUFRRSxNQUFNO1FBQ3BEQyxZQUFZO1FBQ1pDLEtBQUtILEdBQUcsQ0FBQ0MsS0FBSztJQUNsQjtBQUNKO0FBQ0FILFFBQVFMLFNBQVM7SUFDYkcsZ0JBQWdCO1FBQ1osT0FBT0E7SUFDWDtJQUNBQyxTQUFTO1FBQ0wsT0FBT087SUFDWDtBQUNKO0FBQ0EsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsY0FBY0QsbUJBQU9BLENBQUMsOERBQW1CO0FBQy9DLE1BQU1FLFNBQVMsV0FBVyxHQUFHSCx5QkFBeUJJLENBQUMsQ0FBQ0gsbUJBQU9BLENBQUMsNENBQU87QUFDdkUsTUFBTUksVUFBVUosbUJBQU9BLENBQUMsMkRBQVU7QUFDbEMsTUFBTUssNkJBQTZCO0lBQy9CQyxRQUFRO0lBQ1JDLE1BQU07SUFDTkMsUUFBUTtJQUNSQyxRQUFRO0lBQ1JDLFVBQVU7SUFDVkMsU0FBUztJQUNUQyxVQUFVO0lBQ1ZDLEtBQUs7SUFDTEMsT0FBTztJQUNQLHdGQUF3RjtJQUN4RkMsWUFBWTtJQUNaQyxVQUFVO0FBQ2Q7QUFDQSxNQUFNMUIsaUJBQWlCOztJQUNuQixNQUFNLEVBQUUyQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUdiLFFBQVFjLFNBQVM7SUFDeEMsTUFBTSxDQUFDQyxtQkFBbUJDLHFCQUFxQixHQUFHbEIsT0FBT1gsT0FBTyxDQUFDOEIsUUFBUSxDQUFDO0lBQzFFLDJFQUEyRTtJQUMzRSxxQ0FBcUM7SUFDckMsTUFBTUMsdUJBQXVCcEIsT0FBT1gsT0FBTyxDQUFDZ0MsTUFBTSxDQUFDTjtJQUNuRCw0RUFBNEU7SUFDNUUsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSwwRUFBMEU7SUFDMUUsaUNBQWlDO0lBQ2pDLG1GQUFtRjtJQUNuRmYsT0FBT1gsT0FBTyxDQUFDaUMsU0FBUyxDQUFDO1FBQ3JCLDRDQUE0QztRQUM1QyxJQUFJRixxQkFBcUJHLE9BQU8sS0FBS1IsUUFBUTtRQUM3Q0sscUJBQXFCRyxPQUFPLEdBQUdSO1FBQy9CLElBQUlTLFNBQVNDLEtBQUssRUFBRTtZQUNoQlAscUJBQXFCTSxTQUFTQyxLQUFLO1FBQ3ZDLE9BQU87WUFDSCxNQUFNQyxhQUFhRixTQUFTRyxhQUFhLENBQUM7WUFDMUMsSUFBSUM7WUFDSixNQUFNQyxVQUFVLENBQUNELHdCQUF3QkYsY0FBYyxPQUFPLEtBQUssSUFBSUEsV0FBV0ksU0FBUyxLQUFLLE9BQU9GLHdCQUF3QkYsY0FBYyxPQUFPLEtBQUssSUFBSUEsV0FBV0ssV0FBVztZQUNuTGIscUJBQXFCVyxXQUFXZDtRQUNwQztJQUNKLEdBQ0E7UUFDSUE7S0FDSDtJQUNELE9BQXFCLFdBQUgsR0FBSSxJQUFHaEIsWUFBWWlDLEdBQUcsRUFBRSxLQUFLO1FBQzNDLGFBQWEsWUFBWSxxQ0FBcUM7O1FBRTlEQyxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsT0FBT2hDO1FBQ1BpQyxVQUFVbkI7SUFDZDtBQUNKO0dBcENNN0I7S0FBQUE7QUFxQ04sTUFBTVEsV0FBV1I7QUFFakIsSUFBSSxDQUFDLE9BQU9ILFFBQVFJLE9BQU8sS0FBSyxjQUFlLE9BQU9KLFFBQVFJLE9BQU8sS0FBSyxZQUFZSixRQUFRSSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9KLFFBQVFJLE9BQU8sQ0FBQ2dELFVBQVUsS0FBSyxhQUFhO0lBQ3JLdEQsT0FBT0MsY0FBYyxDQUFDQyxRQUFRSSxPQUFPLEVBQUUsY0FBYztRQUFFSCxPQUFPO0lBQUs7SUFDbkVILE9BQU91RCxNQUFNLENBQUNyRCxRQUFRSSxPQUFPLEVBQUVKO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVFJLE9BQU87QUFDbEMsRUFFQSwyQ0FBMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtYW5ub3VuY2VyLmpzPzU4MjciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBSb3V0ZUFubm91bmNlcjogbnVsbCxcbiAgICBkZWZhdWx0OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIFJvdXRlQW5ub3VuY2VyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlQW5ub3VuY2VyO1xuICAgIH0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfanN4cnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9yb3V0ZXIgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG5jb25zdCBuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlcyA9IHtcbiAgICBib3JkZXI6IDAsXG4gICAgY2xpcDogXCJyZWN0KDAgMCAwIDApXCIsXG4gICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgIG1hcmdpbjogXCItMXB4XCIsXG4gICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgcGFkZGluZzogMCxcbiAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgIHRvcDogMCxcbiAgICB3aWR0aDogXCIxcHhcIixcbiAgICAvLyBodHRwczovL21lZGl1bS5jb20vQGplc3NlYmVhY2gvYmV3YXJlLXNtdXNoZWQtb2ZmLXNjcmVlbi1hY2Nlc3NpYmxlLXRleHQtNTk1MmE0YzJjYmZlXG4gICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcbiAgICB3b3JkV3JhcDogXCJub3JtYWxcIlxufTtcbmNvbnN0IFJvdXRlQW5ub3VuY2VyID0gKCk9PntcbiAgICBjb25zdCB7IGFzUGF0aCB9ID0gKDAsIF9yb3V0ZXIudXNlUm91dGVyKSgpO1xuICAgIGNvbnN0IFtyb3V0ZUFubm91bmNlbWVudCwgc2V0Um91dGVBbm5vdW5jZW1lbnRdID0gX3JlYWN0LmRlZmF1bHQudXNlU3RhdGUoXCJcIik7XG4gICAgLy8gT25seSBhbm5vdW5jZSB0aGUgcGF0aCBjaGFuZ2UsIGJ1dCBub3QgZm9yIHRoZSBmaXJzdCBsb2FkIGJlY2F1c2Ugc2NyZWVuXG4gICAgLy8gcmVhZGVyIHdpbGwgZG8gdGhhdCBhdXRvbWF0aWNhbGx5LlxuICAgIGNvbnN0IHByZXZpb3VzbHlMb2FkZWRQYXRoID0gX3JlYWN0LmRlZmF1bHQudXNlUmVmKGFzUGF0aCk7XG4gICAgLy8gRXZlcnkgdGltZSB0aGUgcGF0aCBjaGFuZ2VzLCBhbm5vdW5jZSB0aGUgbmV3IHBhZ2XigJlzIHRpdGxlIGZvbGxvd2luZyB0aGlzXG4gICAgLy8gcHJpb3JpdHk6IGZpcnN0IHRoZSBkb2N1bWVudCB0aXRsZSAoZnJvbSBoZWFkKSwgb3RoZXJ3aXNlIHRoZSBmaXJzdCBoMSwgb3JcbiAgICAvLyBpZiBub25lIG9mIHRoZXNlIGV4aXN0LCB0aGVuIHRoZSBwYXRobmFtZSBmcm9tIHRoZSBVUkwuIFRoaXMgbWV0aG9kb2xvZ3kgaXNcbiAgICAvLyBpbnNwaXJlZCBieSBNYXJjeSBTdXR0b27igJlzIGFjY2Vzc2libGUgY2xpZW50IHJvdXRpbmcgdXNlciB0ZXN0aW5nLiBNb3JlXG4gICAgLy8gaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6XG4gICAgLy8gaHR0cHM6Ly93d3cuZ2F0c2J5anMuY29tL2Jsb2cvMjAxOS0wNy0xMS11c2VyLXRlc3RpbmctYWNjZXNzaWJsZS1jbGllbnQtcm91dGluZy9cbiAgICBfcmVhY3QuZGVmYXVsdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgLy8gSWYgdGhlIHBhdGggaGFzbid0IGNoYW5nZSwgd2UgZG8gbm90aGluZy5cbiAgICAgICAgaWYgKHByZXZpb3VzbHlMb2FkZWRQYXRoLmN1cnJlbnQgPT09IGFzUGF0aCkgcmV0dXJuO1xuICAgICAgICBwcmV2aW91c2x5TG9hZGVkUGF0aC5jdXJyZW50ID0gYXNQYXRoO1xuICAgICAgICBpZiAoZG9jdW1lbnQudGl0bGUpIHtcbiAgICAgICAgICAgIHNldFJvdXRlQW5ub3VuY2VtZW50KGRvY3VtZW50LnRpdGxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2VIZWFkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaDFcIik7XG4gICAgICAgICAgICB2YXIgX3BhZ2VIZWFkZXJfaW5uZXJUZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IChfcGFnZUhlYWRlcl9pbm5lclRleHQgPSBwYWdlSGVhZGVyID09IG51bGwgPyB2b2lkIDAgOiBwYWdlSGVhZGVyLmlubmVyVGV4dCkgIT0gbnVsbCA/IF9wYWdlSGVhZGVyX2lubmVyVGV4dCA6IHBhZ2VIZWFkZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHBhZ2VIZWFkZXIudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICBzZXRSb3V0ZUFubm91bmNlbWVudChjb250ZW50IHx8IGFzUGF0aCk7XG4gICAgICAgIH1cbiAgICB9LCAvLyBUT0RPOiBzd2l0Y2ggdG8gcGF0aG5hbWUgKyBxdWVyeSBvYmplY3Qgb2YgZHluYW1pYyByb3V0ZSByZXF1aXJlbWVudHNcbiAgICBbXG4gICAgICAgIGFzUGF0aFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCBfanN4cnVudGltZS5qc3gpKFwicFwiLCB7XG4gICAgICAgIFwiYXJpYS1saXZlXCI6IFwiYXNzZXJ0aXZlXCIgLy8gTWFrZSB0aGUgYW5ub3VuY2VtZW50IGltbWVkaWF0ZWx5LlxuICAgICAgICAsXG4gICAgICAgIGlkOiBcIl9fbmV4dC1yb3V0ZS1hbm5vdW5jZXJfX1wiLFxuICAgICAgICByb2xlOiBcImFsZXJ0XCIsXG4gICAgICAgIHN0eWxlOiBuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlcyxcbiAgICAgICAgY2hpbGRyZW46IHJvdXRlQW5ub3VuY2VtZW50XG4gICAgfSk7XG59O1xuY29uc3QgX2RlZmF1bHQgPSBSb3V0ZUFubm91bmNlcjtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGUtYW5ub3VuY2VyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIm1vZHVsZSIsIlJvdXRlQW5ub3VuY2VyIiwiZGVmYXVsdCIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsIl9kZWZhdWx0IiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9qc3hydW50aW1lIiwiX3JlYWN0IiwiXyIsIl9yb3V0ZXIiLCJuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlcyIsImJvcmRlciIsImNsaXAiLCJoZWlnaHQiLCJtYXJnaW4iLCJvdmVyZmxvdyIsInBhZGRpbmciLCJwb3NpdGlvbiIsInRvcCIsIndpZHRoIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiYXNQYXRoIiwidXNlUm91dGVyIiwicm91dGVBbm5vdW5jZW1lbnQiLCJzZXRSb3V0ZUFubm91bmNlbWVudCIsInVzZVN0YXRlIiwicHJldmlvdXNseUxvYWRlZFBhdGgiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJ0aXRsZSIsInBhZ2VIZWFkZXIiLCJxdWVyeVNlbGVjdG9yIiwiX3BhZ2VIZWFkZXJfaW5uZXJUZXh0IiwiY29udGVudCIsImlubmVyVGV4dCIsInRleHRDb250ZW50IiwianN4IiwiaWQiLCJyb2xlIiwic3R5bGUiLCJjaGlsZHJlbiIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-announcer.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/route-loader.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/route-loader.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n markAssetError: function() {\n return markAssetError;\n },\n isAssetError: function() {\n return isAssetError;\n },\n getClientBuildManifest: function() {\n return getClientBuildManifest;\n },\n createRouteLoader: function() {\n return createRouteLoader;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _trustedtypes = __webpack_require__(/*! ./trusted-types */ \"./node_modules/next/dist/client/trusted-types.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst _deploymentid = __webpack_require__(/*! ../build/deployment-id */ \"./node_modules/next/dist/build/deployment-id.js\");\n// 3.8s was arbitrarily chosen as it's what https://web.dev/interactive\n// considers as \"Good\" time-to-interactive. We must assume something went\n// wrong beyond this point, and then fall-back to a full page transition to\n// show the user something of value.\nconst MS_MAX_IDLE_DELAY = 3800;\nfunction withFuture(key, map, generator) {\n let entry = map.get(key);\n if (entry) {\n if (\"future\" in entry) {\n return entry.future;\n }\n return Promise.resolve(entry);\n }\n let resolver;\n const prom = new Promise((resolve)=>{\n resolver = resolve;\n });\n map.set(key, entry = {\n resolve: resolver,\n future: prom\n });\n return generator ? generator() // eslint-disable-next-line no-sequences\n .then((value)=>(resolver(value), value)).catch((err)=>{\n map.delete(key);\n throw err;\n }) : prom;\n}\nconst ASSET_LOAD_ERROR = Symbol(\"ASSET_LOAD_ERROR\");\nfunction markAssetError(err) {\n return Object.defineProperty(err, ASSET_LOAD_ERROR, {});\n}\nfunction isAssetError(err) {\n return err && ASSET_LOAD_ERROR in err;\n}\nfunction hasPrefetch(link) {\n try {\n link = document.createElement(\"link\");\n return(// with relList.support\n !!window.MSInputMethodContext && !!document.documentMode || link.relList.supports(\"prefetch\"));\n } catch (e) {\n return false;\n }\n}\nconst canPrefetch = hasPrefetch();\nconst getAssetQueryString = ()=>{\n return (0, _deploymentid.getDeploymentIdQueryOrEmptyString)();\n};\nfunction prefetchViaDom(href, as, link) {\n return new Promise((resolve, reject)=>{\n const selector = '\\n link[rel=\"prefetch\"][href^=\"' + href + '\"],\\n link[rel=\"preload\"][href^=\"' + href + '\"],\\n script[src^=\"' + href + '\"]';\n if (document.querySelector(selector)) {\n return resolve();\n }\n link = document.createElement(\"link\");\n // The order of property assignment here is intentional:\n if (as) link.as = as;\n link.rel = \"prefetch\";\n link.crossOrigin = undefined;\n link.onload = resolve;\n link.onerror = ()=>reject(markAssetError(new Error(\"Failed to prefetch: \" + href)));\n // `href` should always be last:\n link.href = href;\n document.head.appendChild(link);\n });\n}\nfunction appendScript(src, script) {\n return new Promise((resolve, reject)=>{\n script = document.createElement(\"script\");\n // The order of property assignment here is intentional.\n // 1. Setup success/failure hooks in case the browser synchronously\n // executes when `src` is set.\n script.onload = resolve;\n script.onerror = ()=>reject(markAssetError(new Error(\"Failed to load script: \" + src)));\n // 2. Configure the cross-origin attribute before setting `src` in case the\n // browser begins to fetch.\n script.crossOrigin = undefined;\n // 3. Finally, set the source and inject into the DOM in case the child\n // must be appended for fetching to start.\n script.src = src;\n document.body.appendChild(script);\n });\n}\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise;\n// Resolve a promise that times out after given amount of milliseconds.\nfunction resolvePromiseWithTimeout(p, ms, err) {\n return new Promise((resolve, reject)=>{\n let cancelled = false;\n p.then((r)=>{\n // Resolved, cancel the timeout\n cancelled = true;\n resolve(r);\n }).catch(reject);\n // We wrap these checks separately for better dead-code elimination in\n // production bundles.\n if (true) {\n (devBuildPromise || Promise.resolve()).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>setTimeout(()=>{\n if (!cancelled) {\n reject(err);\n }\n }, ms));\n });\n }\n if (false) {}\n });\n}\nfunction getClientBuildManifest() {\n if (self.__BUILD_MANIFEST) {\n return Promise.resolve(self.__BUILD_MANIFEST);\n }\n const onBuildManifest = new Promise((resolve)=>{\n // Mandatory because this is not concurrent safe:\n const cb = self.__BUILD_MANIFEST_CB;\n self.__BUILD_MANIFEST_CB = ()=>{\n resolve(self.__BUILD_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onBuildManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client build manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n const scriptUrl = assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getassetpathfromroute.default)(route, \".js\")) + getAssetQueryString();\n return Promise.resolve({\n scripts: [\n (0, _trustedtypes.__unsafeCreateTrustedScriptURL)(scriptUrl)\n ],\n // Styles are handled by `style-loader` in development:\n css: []\n });\n }\n return getClientBuildManifest().then((manifest)=>{\n if (!(route in manifest)) {\n throw markAssetError(new Error(\"Failed to lookup route: \" + route));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry));\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")).map((v)=>(0, _trustedtypes.__unsafeCreateTrustedScriptURL)(v) + getAssetQueryString()),\n css: allFiles.filter((v)=>v.endsWith(\".css\")).map((v)=>v + getAssetQueryString())\n };\n });\n}\nfunction createRouteLoader(assetPrefix) {\n const entrypoints = new Map();\n const loadedScripts = new Map();\n const styleSheets = new Map();\n const routes = new Map();\n function maybeExecuteScript(src) {\n // With HMR we might need to \"reload\" scripts when they are\n // disposed and readded. Executing scripts twice has no functional\n // differences\n if (false) {} else {\n return appendScript(src);\n }\n }\n function fetchStyleSheet(href) {\n let prom = styleSheets.get(href);\n if (prom) {\n return prom;\n }\n styleSheets.set(href, prom = fetch(href).then((res)=>{\n if (!res.ok) {\n throw new Error(\"Failed to load stylesheet: \" + href);\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n }));\n }).catch((err)=>{\n throw markAssetError(err);\n }));\n return prom;\n }\n return {\n whenEntrypoint (route) {\n return withFuture(route, entrypoints);\n },\n onEntrypoint (route, execute) {\n (execute ? Promise.resolve().then(()=>execute()).then((exports1)=>({\n component: exports1 && exports1.default || exports1,\n exports: exports1\n }), (err)=>({\n error: err\n })) : Promise.resolve(undefined)).then((input)=>{\n const old = entrypoints.get(route);\n if (old && \"resolve\" in old) {\n if (input) {\n entrypoints.set(route, input);\n old.resolve(input);\n }\n } else {\n if (input) {\n entrypoints.set(route, input);\n } else {\n entrypoints.delete(route);\n }\n // when this entrypoint has been resolved before\n // the route is outdated and we want to invalidate\n // this cache entry\n routes.delete(route);\n }\n });\n },\n loadRoute (route, prefetch) {\n return withFuture(route, routes, ()=>{\n let devBuildPromiseResolve;\n if (true) {\n devBuildPromise = new Promise((resolve)=>{\n devBuildPromiseResolve = resolve;\n });\n }\n return resolvePromiseWithTimeout(getFilesForRoute(assetPrefix, route).then((param)=>{\n let { scripts, css } = param;\n return Promise.all([\n entrypoints.has(route) ? [] : Promise.all(scripts.map(maybeExecuteScript)),\n Promise.all(css.map(fetchStyleSheet))\n ]);\n }).then((res)=>{\n return this.whenEntrypoint(route).then((entrypoint)=>({\n entrypoint,\n styles: res[1]\n }));\n }), MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Route did not complete loading: \" + route))).then((param)=>{\n let { entrypoint, styles } = param;\n const res = Object.assign({\n styles: styles\n }, entrypoint);\n return \"error\" in entrypoint ? entrypoint : res;\n }).catch((err)=>{\n if (prefetch) {\n // we don't want to cache errors during prefetch\n throw err;\n }\n return {\n error: err\n };\n }).finally(()=>devBuildPromiseResolve == null ? void 0 : devBuildPromiseResolve());\n });\n },\n prefetch (route) {\n // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n // License: Apache 2.0\n let cn;\n if (cn = navigator.connection) {\n // Don't prefetch if using 2G or if Save-Data is enabled.\n if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve();\n }\n return getFilesForRoute(assetPrefix, route).then((output)=>Promise.all(canPrefetch ? output.scripts.map((script)=>prefetchViaDom(script.toString(), \"script\")) : [])).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>this.loadRoute(route, true).catch(()=>{}));\n }).catch(()=>{});\n }\n };\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=route-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FLTjtBQUNBLFNBQVNLLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlYLE9BQU9DLGNBQWMsQ0FBQ1MsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRUCxTQUFTO0lBQ2JHLGdCQUFnQjtRQUNaLE9BQU9BO0lBQ1g7SUFDQUMsY0FBYztRQUNWLE9BQU9BO0lBQ1g7SUFDQUMsd0JBQXdCO1FBQ3BCLE9BQU9BO0lBQ1g7SUFDQUMsbUJBQW1CO1FBQ2YsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTU8sMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMseUJBQXlCLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDJJQUFzRDtBQUN0SSxNQUFNRyxnQkFBZ0JILG1CQUFPQSxDQUFDLHlFQUFpQjtBQUMvQyxNQUFNSSx1QkFBdUJKLG1CQUFPQSxDQUFDLHlGQUF5QjtBQUM5RCxNQUFNSyxnQkFBZ0JMLG1CQUFPQSxDQUFDLCtFQUF3QjtBQUN0RCx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLDJFQUEyRTtBQUMzRSxvQ0FBb0M7QUFDcEMsTUFBTU0sb0JBQW9CO0FBQzFCLFNBQVNDLFdBQVdDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxTQUFTO0lBQ25DLElBQUlDLFFBQVFGLElBQUlYLEdBQUcsQ0FBQ1U7SUFDcEIsSUFBSUcsT0FBTztRQUNQLElBQUksWUFBWUEsT0FBTztZQUNuQixPQUFPQSxNQUFNQyxNQUFNO1FBQ3ZCO1FBQ0EsT0FBT0MsUUFBUUMsT0FBTyxDQUFDSDtJQUMz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O1FBQ0FELFVBQVVuQyxLQUFLO1lBQ1gsc0hBQXNIO1lBQ3RILHNCQUFzQjtZQUN0QixJQUFJMkM7WUFDSixJQUFJQSxLQUFLQyxVQUFVQyxVQUFVLEVBQUU7Z0JBQzNCLHlEQUF5RDtnQkFDekQsSUFBSUYsR0FBR0csUUFBUSxJQUFJLEtBQUtDLElBQUksQ0FBQ0osR0FBR0ssYUFBYSxHQUFHLE9BQU8zRyxRQUFRQyxPQUFPO1lBQzFFO1lBQ0EsT0FBT3dELGlCQUFpQkMsYUFBYUMsT0FBT3RELElBQUksQ0FBQyxDQUFDdUcsU0FBUzVHLFFBQVFsQixHQUFHLENBQUN1QyxjQUFjdUYsT0FBTzdDLE9BQU8sQ0FBQ25FLEdBQUcsQ0FBQyxDQUFDOEMsU0FBU2xCLGVBQWVrQixPQUFPbUMsUUFBUSxJQUFJLGFBQWEsRUFBRSxHQUFHeEUsSUFBSSxDQUFDO2dCQUN0SyxJQUFHZCxxQkFBcUIyRCxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQzJDLFNBQVMsQ0FBQ2xDLE9BQU8sTUFBTXJELEtBQUssQ0FBQyxLQUFLO1lBQzdGLEdBQUdBLEtBQUssQ0FDUixLQUFLO1FBQ1Q7SUFDSjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU9qQyxRQUFReUYsT0FBTyxLQUFLLGNBQWUsT0FBT3pGLFFBQVF5RixPQUFPLEtBQUssWUFBWXpGLFFBQVF5RixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU96RixRQUFReUYsT0FBTyxDQUFDK0MsVUFBVSxLQUFLLGFBQWE7SUFDcksxSSxPQUFPQyxjQUFjLENBQUNDLFFBQVF5RixPQUFPLEVBQUUsY0FBYztRQUFFeEYsT0FBTztJQUFLO0lBQ25FSCxPQUFPaUksTUFBTSxDQUFDL0gsUUFBUXlGLE9BQU8sRUFBRXpGO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVF5RixPQUFPO0FBQ2xDLEVBRUEsd0NBQXdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JvdXRlLWxvYWRlci5qcz9lYTM0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgbWFya0Fzc2V0RXJyb3I6IG51bGwsXG4gICAgaXNBc3NldEVycm9yOiBudWxsLFxuICAgIGdldENsaWVudEJ1aWxkTWFuaWZlc3Q6IG51bGwsXG4gICAgY3JlYXRlUm91dGVMb2FkZXI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgbWFya0Fzc2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbWFya0Fzc2V0RXJyb3I7XG4gICAgfSxcbiAgICBpc0Fzc2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNBc3NldEVycm9yO1xuICAgIH0sXG4gICAgZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRDbGllbnRCdWlsZE1hbmlmZXN0O1xuICAgIH0sXG4gICAgY3JlYXRlUm91dGVMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUm91dGVMb2FkZXI7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX2dldGFzc2V0cGF0aGZyb21yb3V0ZSA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1hc3NldC1wYXRoLWZyb20tcm91dGVcIikpO1xuY29uc3QgX3RydXN0ZWR0eXBlcyA9IHJlcXVpcmUoXCIuL3RydXN0ZWQtdHlwZXNcIik7XG5jb25zdCBfcmVxdWVzdGlkbGVjYWxsYmFjayA9IHJlcXVpcmUoXCIuL3JlcXVlc3QtaWRsZS1jYWxsYmFja1wiKTtcbmNvbnN0IF9kZXBsb3ltZW50aWQgPSByZXF1aXJlKFwiLi4vYnVpbGQvZGVwbG95bWVudC1pZFwiKTtcbi8vIDMuOHMgd2FzIGFyYml0cmFyaWx5IGNob3NlbiBhcyBpdCdzIHdoYXQgaHR0cHM6Ly93ZWIuZGV2L2ludGVyYWN0aXZlXG4vLyBjb25zaWRlcnMgYXMgXCJHb29kXCIgdGltZS10by1pbnRlcmFjdGl2ZS4gV2UgbXVzdCBhc3N1bWUgc29tZXRoaW5nIHdlbnRcbi8vIHdyb25nIGJleW9uZCB0aGlzIHBvaW50LCBhbmQgdGhlbiBmYWxsLWJhY2sgdG8gYSBmdWxsIHBhZ2UgdHJhbnNpdGlvbiB0b1xuLy8gc2hvdyB0aGUgdXNlciBzb21ldGhpbmcgb2YgdmFsdWUuXG5jb25zdCBNU19NQVhfSURMRV9ERUxBWSA9IDM4MDA7XG5mdW5jdGlvbiB3aXRoRnV0dXJlKGtleSwgbWFwLCBnZW5lcmF0b3IpIHtcbiAgICBsZXQgZW50cnkgPSBtYXAuZ2V0KGtleSk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChcImZ1dHVyZVwiIGluIGVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuZnV0dXJlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50cnkpO1xuICAgIH1cbiAgICBsZXQgcmVzb2x2ZXI7XG4gICAgY29uc3QgcHJvbSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICByZXNvbHZlciA9IHJlc29sdmU7XG4gICAgfSk7XG4gICAgbWFwLnNldChrZXksIGVudHJ5ID0ge1xuICAgICAgICByZXNvbHZlOiByZXNvbHZlcixcbiAgICAgICAgZnV0dXJlOiBwcm9tXG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvciA/IGdlbmVyYXRvcigpLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlcXVlbmNlc1xuICAgIC50aGVuKCh2YWx1ZSk9PihyZXNvbHZlcih2YWx1ZSksIHZhbHVlKSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgbWFwLmRlbGV0ZShrZXkpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfSkgOiBwcm9tO1xufVxuY29uc3QgQVNTRVRfTE9BRF9FUlJPUiA9IFN5bWJvbChcIkFTU0VUX0xPQURfRVJST1JcIik7XG5mdW5jdGlvbiBtYXJrQXNzZXRFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgQVNTRVRfTE9BRF9FUlJPUiwge30pO1xufVxuZnVuY3Rpb24gaXNBc3NldEVycm9yKGVycikge1xuICAgIHJldHVybiBlcnIgJiYgQVNTRVRfTE9BRF9FUlJPUiBpbiBlcnI7XG59XG5mdW5jdGlvbiBoYXNQcmVmZXRjaChsaW5rKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuICAgICAgICByZXR1cm4oLy8gZGV0ZWN0IElFMTEgc2luY2UgaXQgc3VwcG9ydHMgcHJlZmV0Y2ggYnV0IGlzbid0IGRldGVjdGVkXG4gICAgICAgIC8vIHdpdGggcmVsTGlzdC5zdXBwb3J0XG4gICAgICAgICEhd2luZG93Lk1TSW5wdXRNZXRob2RDb250ZXh0ICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGxpbmsucmVsTGlzdC5zdXBwb3J0cyhcInByZWZldGNoXCIpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5jb25zdCBjYW5QcmVmZXRjaCA9IGhhc1ByZWZldGNoKCk7XG5jb25zdCBnZXRBc3NldFF1ZXJ5U3RyaW5nID0gKCk9PntcbiAgICByZXR1cm4gKDAsIF9kZXBsb3ltZW50aWQuZ2V0RGVwbG95bWVudElkUXVlcnlPckVtcHR5U3RyaW5nKSgpO1xufTtcbmZ1bmN0aW9uIHByZWZldGNoVmlhRG9tKGhyZWYsIGFzLCBsaW5rKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gJ1xcbiAgICAgIGxpbmtbcmVsPVwicHJlZmV0Y2hcIl1baHJlZl49XCInICsgaHJlZiArICdcIl0sXFxuICAgICAgbGlua1tyZWw9XCJwcmVsb2FkXCJdW2hyZWZePVwiJyArIGhyZWYgKyAnXCJdLFxcbiAgICAgIHNjcmlwdFtzcmNePVwiJyArIGhyZWYgKyAnXCJdJztcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICAgICAgLy8gVGhlIG9yZGVyIG9mIHByb3BlcnR5IGFzc2lnbm1lbnQgaGVyZSBpcyBpbnRlbnRpb25hbDpcbiAgICAgICAgaWYgKGFzKSBsaW5rLmFzID0gYXM7XG4gICAgICAgIGxpbmsucmVsID0gXCJwcmVmZXRjaFwiO1xuICAgICAgICBsaW5rLmNyb3NzT3JpZ2luID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTjtcbiAgICAgICAgbGluay5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBsaW5rLm9uZXJyb3IgPSAoKT0+cmVqZWN0KG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIkZhaWxlZCB0byBwcmVmZXRjaDogXCIgKyBocmVmKSkpO1xuICAgICAgICAvLyBgaHJlZmAgc2hvdWxkIGFsd2F5cyBiZSBsYXN0OlxuICAgICAgICBsaW5rLmhyZWYgPSBocmVmO1xuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gYXBwZW5kU2NyaXB0KHNyYywgc2NyaXB0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICAgIC8vIFRoZSBvcmRlciBvZiBwcm9wZXJ0eSBhc3NpZ25tZW50IGhlcmUgaXMgaW50ZW50aW9uYWwuXG4gICAgICAgIC8vIDEuIFNldHVwIHN1Y2Nlc3MvZmFpbHVyZSBob29rcyBpbiBjYXNlIHRoZSBicm93c2VyIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gICAgZXhlY3V0ZXMgd2hlbiBgc3JjYCBpcyBzZXQuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpPT5yZWplY3QobWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiBcIiArIHNyYykpKTtcbiAgICAgICAgLy8gMi4gQ29uZmlndXJlIHRoZSBjcm9zcy1vcmlnaW4gYXR0cmlidXRlIGJlZm9yZSBzZXR0aW5nIGBzcmNgIGluIGNhc2UgdGhlXG4gICAgICAgIC8vICAgIGJyb3dzZXIgYmVnaW5zIHRvIGZldGNoLlxuICAgICAgICBzY3JpcHQuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICAvLyAzLiBGaW5hbGx5LCBzZXQgdGhlIHNvdXJjZSBhbmQgaW5qZWN0IGludG8gdGhlIERPTSBpbiBjYXNlIHRoZSBjaGlsZFxuICAgICAgICAvLyAgICBtdXN0IGJlIGFwcGVuZGVkIGZvciBmZXRjaGluZyB0byBzdGFydC5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xufVxuLy8gV2Ugd2FpdCBmb3IgcGFnZXMgdG8gYmUgYnVpbHQgaW4gZGV2IGJlZm9yZSB3ZSBzdGFydCB0aGUgcm91dGUgdHJhbnNpdGlvblxuLy8gdGltZW91dCB0byBwcmV2ZW50IGFuIHVuLW5lY2Vzc2FyeSBoYXJkIG5hdmlnYXRpb24gaW4gZGV2ZWxvcG1lbnQuXG5sZXQgZGV2QnVpbGRQcm9taXNlO1xuLy8gUmVzb2x2ZSBhIHByb21pc2UgdGhhdCB0aW1lcyBvdXQgYWZ0ZXIgZ2l2ZW4gYW1vdW50IG9mIG1pbGxpc2Vjb25kcy5cbmZ1bmN0aW9uIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQocCwgbXMsIGVycikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIHAudGhlbigocik9PntcbiAgICAgICAgICAgIC8vIFJlc29sdmVkLCBjYW5jZWwgdGhlIHRpbWVvdXRcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXNvbHZlKHIpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgICAvLyBXZSB3cmFwIHRoZXNlIGNoZWNrcyBzZXBhcmF0ZWx5IGZvciBiZXR0ZXIgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIGluXG4gICAgICAgIC8vIHByb2R1Y3Rpb24gYnVuZGxlcy5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgIChkZXZCdWlsZFByb21pc2UgfHwgUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAoMCwgX3JlcXVlc3RpZGxlY2FsbGJhY2sucmVxdWVzdElkbGVDYWxsYmFjaykoKCk9PnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0aWRsZWNhbGxiYWNrLnJlcXVlc3RJZGxlQ2FsbGJhY2spKCgpPT5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSB7XG4gICAgaWYgKHNlbGYuX19CVUlMRF9NQU5JRkVTVCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNlbGYuX19CVUlMRF9NQU5JRkVTVCk7XG4gICAgfVxuICAgIGNvbnN0IG9uQnVpbGRNYW5pZmVzdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAvLyBNYW5kYXRvcnkgYmVjYXVzZSB0aGlzIGlzIG5vdCBjb25jdXJyZW50IHNhZmU6XG4gICAgICAgIGNvbnN0IGNiID0gc2VsZi5fX0JVSUxEX01BTklGRVNUX0NCO1xuICAgICAgICBzZWxmLl9fQlVJTERfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZShzZWxmLl9fQlVJTERfTUFOSUZFU1QpO1xuICAgICAgICAgICAgY2IgJiYgY2IoKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChvbkJ1aWxkTWFuaWZlc3QsIE1TX01BWF9JRExFX0RFTEFZLCBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBjbGllbnQgYnVpbGQgbWFuaWZlc3RcIikpKTtcbn1cbmZ1bmN0aW9uIGdldEZpbGVzRm9yUm91dGUoYXNzZXRQcmVmaXgsIHJvdXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0VXJsID0gYXNzZXRQcmVmaXggKyBcIi9fbmV4dC9zdGF0aWMvY2h1bmtzL3BhZ2VzXCIgKyBlbmNvZGVVUkkoKDAsIF9nZXRhc3NldHBhdGhmcm9tcm91dGUuZGVmYXVsdCkocm91dGUsIFwiLmpzXCIpKSArIGdldEFzc2V0UXVlcnlTdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBzY3JpcHRzOiBbXG4gICAgICAgICAgICAgICAgKDAsIF90cnVzdGVkdHlwZXMuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMKShzY3JpcHRVcmwpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU3R5bGVzIGFyZSBoYW5kbGVkIGJ5IGBzdHlsZS1sb2FkZXJgIGluIGRldmVsb3BtZW50OlxuICAgICAgICAgICAgY3NzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKS50aGVuKChtYW5pZmVzdCk9PntcbiAgICAgICAgaWYgKCEocm91dGUgaW4gbWFuaWZlc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9va3VwIHJvdXRlOiBcIiArIHJvdXRlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsRmlsZXMgPSBtYW5pZmVzdFtyb3V0ZV0ubWFwKChlbnRyeSk9PmFzc2V0UHJlZml4ICsgXCIvX25leHQvXCIgKyBlbmNvZGVVUkkoZW50cnkpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdHM6IGFsbEZpbGVzLmZpbHRlcigodik9PnYuZW5kc1dpdGgoXCIuanNcIikpLm1hcCgodik9PigwLCBfdHJ1c3RlZHR5cGVzLl9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCkodikgKyBnZXRBc3NldFF1ZXJ5U3RyaW5nKCkpLFxuICAgICAgICAgICAgY3NzOiBhbGxGaWxlcy5maWx0ZXIoKHYpPT52LmVuZHNXaXRoKFwiLmNzc1wiKSkubWFwKCh2KT0+diArIGdldEFzc2V0UXVlcnlTdHJpbmcoKSlcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlTG9hZGVyKGFzc2V0UHJlZml4KSB7XG4gICAgY29uc3QgZW50cnlwb2ludHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbG9hZGVkU2NyaXB0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBzdHlsZVNoZWV0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCByb3V0ZXMgPSBuZXcgTWFwKCk7XG4gICAgZnVuY3Rpb24gbWF5YmVFeGVjdXRlU2NyaXB0KHNyYykge1xuICAgICAgICAvLyBXaXRoIEhNUiB3ZSBtaWdodCBuZWVkIHRvIFwicmVsb2FkXCIgc2NyaXB0cyB3aGVuIHRoZXkgYXJlXG4gICAgICAgIC8vIGRpc3Bvc2VkIGFuZCByZWFkZGVkLiBFeGVjdXRpbmcgc2NyaXB0cyB0d2ljZSBoYXMgbm8gZnVuY3Rpb25hbFxuICAgICAgICAvLyBkaWZmZXJlbmNlc1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgbGV0IHByb20gPSBsb2FkZWRTY3JpcHRzLmdldChzcmMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBpZiAocHJvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBleGVjdXRpbmcgc2NyaXB0IGlmIGl0J3MgYWxyZWFkeSBpbiB0aGUgRE9NOlxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmNePVwiJyArIHNyYyArICdcIl0nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlZFNjcmlwdHMuc2V0KHNyYy50b1N0cmluZygpLCBwcm9tID0gYXBwZW5kU2NyaXB0KHNyYykpO1xuICAgICAgICAgICAgcmV0dXJuIHByb207XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwZW5kU2NyaXB0KHNyYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmV0Y2hTdHlsZVNoZWV0KGhyZWYpIHtcbiAgICAgICAgbGV0IHByb20gPSBzdHlsZVNoZWV0cy5nZXQoaHJlZik7XG4gICAgICAgIGlmIChwcm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgfVxuICAgICAgICBzdHlsZVNoZWV0cy5zZXQoaHJlZiwgcHJvbSA9IGZldGNoKGhyZWYpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgc3R5bGVzaGVldDogXCIgKyBocmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMudGV4dCgpLnRoZW4oKHRleHQpPT4oe1xuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgdGhyb3cgbWFya0Fzc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gcHJvbTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2hlbkVudHJ5cG9pbnQgKHJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aEZ1dHVyZShyb3V0ZSwgZW50cnlwb2ludHMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkVudHJ5cG9pbnQgKHJvdXRlLCBleGVjdXRlKSB7XG4gICAgICAgICAgICAoZXhlY3V0ZSA/IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmV4ZWN1dGUoKSkudGhlbigoZXhwb3J0czEpPT4oe1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGV4cG9ydHMxICYmIGV4cG9ydHMxLmRlZmF1bHQgfHwgZXhwb3J0czEsXG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IGV4cG9ydHMxXG4gICAgICAgICAgICAgICAgfSksIChlcnIpPT4oe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfSkpIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkpLnRoZW4oKGlucHV0KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZCA9IGVudHJ5cG9pbnRzLmdldChyb3V0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZCAmJiBcInJlc29sdmVcIiBpbiBvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5zZXQocm91dGUsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5yZXNvbHZlKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuc2V0KHJvdXRlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5kZWxldGUocm91dGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhpcyBlbnRyeXBvaW50IGhhcyBiZWVuIHJlc29sdmVkIGJlZm9yZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcm91dGUgaXMgb3V0ZGF0ZWQgYW5kIHdlIHdhbnQgdG8gaW52YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGNhY2hlIGVudHJ5XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcy5kZWxldGUocm91dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBsb2FkUm91dGUgKHJvdXRlLCBwcmVmZXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhGdXR1cmUocm91dGUsIHJvdXRlcywgKCk9PntcbiAgICAgICAgICAgICAgICBsZXQgZGV2QnVpbGRQcm9taXNlUmVzb2x2ZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgICAgICAgICBkZXZCdWlsZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQoZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpLnRoZW4oKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyBzY3JpcHRzLCBjc3MgfSA9IHBhcmFtO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuaGFzKHJvdXRlKSA/IFtdIDogUHJvbWlzZS5hbGwoc2NyaXB0cy5tYXAobWF5YmVFeGVjdXRlU2NyaXB0KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlLmFsbChjc3MubWFwKGZldGNoU3R5bGVTaGVldCkpXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2hlbkVudHJ5cG9pbnQocm91dGUpLnRoZW4oKGVudHJ5cG9pbnQpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiByZXNbMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KSwgTVNfTUFYX0lETEVfREVMQVksIG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIlJvdXRlIGRpZCBub3QgY29tcGxldGUgbG9hZGluZzogXCIgKyByb3V0ZSkpKS50aGVuKChwYXJhbSk9PntcbiAgICAgICAgICAgICAgICAgICAgbGV0IHsgZW50cnlwb2ludCwgc3R5bGVzIH0gPSBwYXJhbTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHN0eWxlc1xuICAgICAgICAgICAgICAgICAgICB9LCBlbnRyeXBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZXJyb3JcIiBpbiBlbnRyeXBvaW50ID8gZW50cnlwb2ludCA6IHJlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmV0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgZXJyb3JzIGR1cmluZyBwcmVmZXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSkuZmluYWxseSgoKT0+ZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9PSBudWxsID8gdm9pZCAwIDogZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwcmVmZXRjaCAocm91dGUpIHtcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3F1aWNrbGluay9ibG9iLzQ1M2E2NjFmYTFmYTk0MGUyZDJlMDQ0NDUyMzk4ZTM4YzY3YTk4ZmIvc3JjL2luZGV4Lm1qcyNMMTE1LUwxMThcbiAgICAgICAgICAgIC8vIExpY2Vuc2U6IEFwYWNoZSAyLjBcbiAgICAgICAgICAgIGxldCBjbjtcbiAgICAgICAgICAgIGlmIChjbiA9IG5hdmlnYXRvci5jb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJlZmV0Y2ggaWYgdXNpbmcgMkcgb3IgaWYgU2F2ZS1EYXRhIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgaWYgKGNuLnNhdmVEYXRhIHx8IC8yZy8udGVzdChjbi5lZmZlY3RpdmVUeXBlKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdldEZpbGVzRm9yUm91dGUoYXNzZXRQcmVmaXgsIHJvdXRlKS50aGVuKChvdXRwdXQpPT5Qcm9taXNlLmFsbChjYW5QcmVmZXRjaCA/IG91dHB1dC5zY3JpcHRzLm1hcCgoc2NyaXB0KT0+cHJlZmV0Y2hWaWFEb20oc2NyaXB0LnRvU3RyaW5nKCksIFwic2NyaXB0XCIpKSA6IFtdKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICgwLCBfcmVxdWVzdGlkbGVjYWxsYmFjay5yZXF1ZXN0SWRsZUNhbGxiYWNrKSgoKT0+dGhpcy5sb2FkUm91dGUocm91dGUsIHRydWUpLmNhdGNoKCgpPT57fSkpO1xuICAgICAgICAgICAgfSkuY2F0Y2goLy8gc3dhbGxvdyBwcmVmZXRjaCBlcnJvcnNcbiAgICAgICAgICAgICgpPT57fSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1sb2FkZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwibWFya0Fzc2V0RXJyb3IiLCJpc0Fzc2V0RXJyb3IiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiY3JlYXRlUm91dGVMb2FkZXIiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2dldGFzc2V0cGF0aGZyb21yb3V0ZSIsIl8iLCJfdHJ1c3RlZHR5cGVzIiwiX3JlcXVlc3RpZGxlY2FsbGJhY2siLCJfZGVwbG95bWVudGlkIiwiTVNfTUFYX0lETEVfREVMQVkiLCJ3aXRoRnV0dXJlIiwia2V5IiwibWFwIiwiZ2VuZXJhdG9yIiwiZW50cnkiLCJmdXR1cmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc29sdmVyIiwicHJvbSIsInNldCIsInRoZW4iLCJjYXRjaCIsImVyciIsImRlbGV0ZSIsIkFTU0VUX0xPQURfRVJST1IiLCJTeW1ib2wiLCJoYXNQcmVmZXRjaCIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ3aW5kb3ciLCJNU0lucHV0TWV0aG9kQ29udGV4dCIsImRvY3VtZW50TW9kZSIsInJlbExpc3QiLCJzdXBwb3J0cyIsImUiLCJjYW5QcmVmZXRjaCIsImdldEFzc2V0UXVlcnlTdHJpbmciLCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmciLCJwcmVmZXRjaFZpYURvbSIsImhyZWYiLCJhcyIsInJlamVjdCIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsInJlbCIsImNyb3NzT3JpZ2luIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DUk9TU19PUklHSU4iLCJvbmxvYWQiLCJvbmVycm9yIiwiRXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJhcHBlbmRTY3JpcHQiLCJzcmMiLCJzY3JpcHQiLCJib2R5IiwiZGV2QnVpbGRQcm9taXNlIiwicmVzb2x2ZVByb21pc2VXaXRoVGltZW91dCIsInAiLCJtcyIsImNhbmNlbGxlZCIsInIiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2V0VGltZW91dCIsInNlbGYiLCJfX0JVSUxEX01BTklGRVNUIiwib25CdWlsZE1hbmlmZXN0IiwiY2IiLCJfX0JVSUxEX01BTklGRVNUX0NCIiwiZ2V0RmlsZXNGb3JSb3V0ZSIsImFzc2V0UHJlZml4Iiwicm91dGUiLCJzY3JpcHRVcmwiLCJlbmNvZGVVUkkiLCJkZWZhdWx0Iiwic2NyaXB0cyIsIl9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCIsImNzcyIsIm1hbmlmZXN0IiwiYWxsRmlsZXMiLCJmaWx0ZXIiLCJ2IiwiZW5kc1dpdGgiLCJlbnRyeXBvaW50cyIsIk1hcCIsImxvYWRlZFNjcmlwdHMiLCJzdHlsZVNoZWV0cyIsInJvdXRlcyIsIm1heWJlRXhlY3V0ZVNjcmlwdCIsInRvU3RyaW5nIiwiZmV0Y2hTdHlsZVNoZWV0IiwiZmV0Y2giLCJyZXMiLCJvayIsInRleHQiLCJjb250ZW50Iiwid2hlbkVudHJ5cG9pbnQiLCJvbkVudHJ5cG9pbnQiLCJleGVjdXRlIiwiZXhwb3J0czEiLCJjb21wb25lbnQiLCJlcnJvciIsInVuZGVmaW5lZCIsImlucHV0Iiwib2xkIiwibG9hZFJvdXRlIiwicHJlZmV0Y2giLCJkZXZCdWlsZFByb21pc2VSZXNvbHZlIiwicGFyYW0iLCJoYXMiLCJlbnRyeXBvaW50Iiwic3R5bGVzIiwiYXNzaWduIiwiZmluYWxseSIsImNuIiwibmF2aWdhdG9yIiwiY29ubmVjdGlvbiIsInNhdmVEYXRhIiwidGVzdCIsImVmZmVjdGl2ZVR5cGUiLCJvdXRwdXQiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-loader.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/router.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/client/router.js ***! \*************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* global window */ \nvar _s = $RefreshSig$();\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Router: function() {\n return _router.default;\n },\n // Export the singletonRouter and this is the public API.\n default: function() {\n return _default;\n },\n withRouter: function() {\n return _withrouter.default;\n },\n useRouter: function() {\n return useRouter;\n },\n createRouter: function() {\n return createRouter;\n },\n makePublicRouterInstance: function() {\n return makePublicRouterInstance;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\"));\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nconst _withrouter = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./with-router */ \"./node_modules/next/dist/client/with-router.js\"));\nconst singletonRouter = {\n router: null,\n readyCallbacks: [],\n ready (callback) {\n if (this.router) return callback();\n if (true) {\n this.readyCallbacks.push(callback);\n }\n }\n};\n// Create public properties and methods of the router in the singletonRouter\nconst urlPropertyFields = [\n \"pathname\",\n \"route\",\n \"query\",\n \"asPath\",\n \"components\",\n \"isFallback\",\n \"basePath\",\n \"locale\",\n \"locales\",\n \"defaultLocale\",\n \"isReady\",\n \"isPreview\",\n \"isLocaleDomain\",\n \"domainLocales\"\n];\nconst routerEvents = [\n \"routeChangeStart\",\n \"beforeHistoryChange\",\n \"routeChangeComplete\",\n \"routeChangeError\",\n \"hashChangeStart\",\n \"hashChangeComplete\"\n];\nconst coreMethodFields = [\n \"push\",\n \"replace\",\n \"reload\",\n \"back\",\n \"prefetch\",\n \"beforePopState\"\n];\n// Events is a static property on the router, the router doesn't have to be initialized to use it\nObject.defineProperty(singletonRouter, \"events\", {\n get () {\n return _router.default.events;\n }\n});\nfunction getRouter() {\n if (!singletonRouter.router) {\n const message = \"No router instance found.\\n\" + 'You should only use \"next/router\" on the client side of your app.\\n';\n throw new Error(message);\n }\n return singletonRouter.router;\n}\nurlPropertyFields.forEach((field)=>{\n // Here we need to use Object.defineProperty because we need to return\n // the property assigned to the actual router\n // The value might get changed as we change routes and this is the\n // proper way to access it\n Object.defineProperty(singletonRouter, field, {\n get () {\n const router = getRouter();\n return router[field];\n }\n });\n});\ncoreMethodFields.forEach((field)=>{\n singletonRouter[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const router = getRouter();\n return router[field](...args);\n };\n});\nrouterEvents.forEach((event)=>{\n singletonRouter.ready(()=>{\n _router.default.events.on(event, function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const eventField = \"on\" + event.charAt(0).toUpperCase() + event.substring(1);\n const _singletonRouter = singletonRouter;\n if (_singletonRouter[eventField]) {\n try {\n _singletonRouter[eventField](...args);\n } catch (err) {\n console.error(\"Error when running the Router event: \" + eventField);\n console.error((0, _iserror.default)(err) ? err.message + \"\\n\" + err.stack : err + \"\");\n }\n }\n });\n });\n});\nconst _default = singletonRouter;\nfunction useRouter() {\n _s();\n const router = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n if (!router) {\n throw new Error(\"NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted\");\n }\n return router;\n}\n_s(useRouter, \"rbAhEc3dLGnVlsHWaSDsgP4MZS0=\");\nfunction createRouter() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n singletonRouter.router = new _router.default(...args);\n singletonRouter.readyCallbacks.forEach((cb)=>cb());\n singletonRouter.readyCallbacks = [];\n return singletonRouter.router;\n}\nfunction makePublicRouterInstance(router) {\n const scopedRouter = router;\n const instance = {};\n for (const property of urlPropertyFields){\n if (typeof scopedRouter[property] === \"object\") {\n instance[property] = Object.assign(Array.isArray(scopedRouter[property]) ? [] : {}, scopedRouter[property]) // makes sure query is not stateful\n ;\n continue;\n }\n instance[property] = scopedRouter[property];\n }\n // Events is a static property on the router, the router doesn't have to be initialized to use it\n instance.events = _router.default.events;\n coreMethodFields.forEach((field)=>{\n instance[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return scopedRouter[field](...args);\n };\n });\n return instance;\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=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLEdBQWdCOztBQUFiO0FBQ3BCQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQU9OO0FBQ0EsU0FBU08sUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSWIsT0FBT0MsY0FBYyxDQUFDVyxRQUFRRSxNQUFNO1FBQ3BEQyxZQUFZO1FBQ1pDLEtBQUtILEdBQUcsQ0FBQ0MsS0FBSztJQUNsQjtBQUNKO0FBQ0FILFFBQVFULFNBQVM7SUFDYkcsUUFBUTtRQUNKLE9BQU9ZLFFBQVFYLE9BQU87SUFDMUI7SUFDQSx5REFBeUQ7SUFDekRBLFNBQVM7UUFDTCxPQUFPWTtJQUNYO0lBQ0FYLFlBQVk7UUFDUixPQUFPWSxZQUFZYixPQUFPO0lBQzlCO0lBQ0FFLFdBQVc7UUFDUCxPQUFPQTtJQUNYO0lBQ0FDLGNBQWM7UUFDVixPQUFPQTtJQUNYO0lBQ0FDLDBCQUEwQjtRQUN0QixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNVSwyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxTQUFTLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDRDQUFPO0FBQ3ZFLE1BQU1KLFVBQVUsV0FBVyxHQUFHRyx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMseUZBQTZCO0FBQzlGLE1BQU1HLDhCQUE4QkgsbUJBQU9BLENBQUMseUhBQTZDO0FBQ3pGLE1BQU1JLFdBQVcsV0FBVyxHQUFHTCx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsaUVBQWlCO0FBQ25GLE1BQU1GLGNBQWMsV0FBVyxHQUFHQyx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMscUVBQWU7QUFDcEYsTUFBTUssa0JBQWtCO0lBQ3BCQyxRQUFRO0lB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Q0FBQ0UsS0FBSyxHQUFHSixTQUFTLENBQUNJLEtBQUs7WUFDaEM7WUFDQSxPQUFPZSxZQUFZLENBQUNyQixNQUFNLElBQUlJO1FBQ2xDO0lBQ0o7SUFDQSxPQUFPa0I7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPNUQsUUFBUUksT0FBTyxLQUFLLGNBQWUsT0FBT0osUUFBUUksT0FBTyxLQUFLLFlBQVlKLFFBQVFJLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0osUUFBUUksT0FBTyxDQUFDNEQsVUFBVSxLQUFLLGFBQWE7SUFDcktsRSxPQUFPQyxjQUFjLENBQUNDLFFBQVFJLE9BQU8sRUFBRSxjQUFjO1FBQUVILE9BQU87SUFBSztJQUNuRUgsT0FBT2dFLE1BQU0sQ0FBQzlELFFBQVFJLE9BQU8sRUFBRUo7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUUksT0FBTztBQUNsQyxFQUVBLGtDQUFrQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanM/MzFmYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgd2luZG93ICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgUm91dGVyOiBudWxsLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgd2l0aFJvdXRlcjogbnVsbCxcbiAgICB1c2VSb3V0ZXI6IG51bGwsXG4gICAgY3JlYXRlUm91dGVyOiBudWxsLFxuICAgIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3JvdXRlci5kZWZhdWx0O1xuICAgIH0sXG4gICAgLy8gRXhwb3J0IHRoZSBzaW5nbGV0b25Sb3V0ZXIgYW5kIHRoaXMgaXMgdGhlIHB1YmxpYyBBUEkuXG4gICAgZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9LFxuICAgIHdpdGhSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3dpdGhyb3V0ZXIuZGVmYXVsdDtcbiAgICB9LFxuICAgIHVzZVJvdXRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB1c2VSb3V0ZXI7XG4gICAgfSxcbiAgICBjcmVhdGVSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUm91dGVyO1xuICAgIH0sXG4gICAgbWFrZVB1YmxpY1JvdXRlckluc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZTtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5jb25zdCBfcm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyXCIpKTtcbmNvbnN0IF9yb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCIpO1xuY29uc3QgX2lzZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi9saWIvaXMtZXJyb3JcIikpO1xuY29uc3QgX3dpdGhyb3V0ZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL3dpdGgtcm91dGVyXCIpKTtcbmNvbnN0IHNpbmdsZXRvblJvdXRlciA9IHtcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgcmVhZHlDYWxsYmFja3M6IFtdLFxuICAgIHJlYWR5IChjYWxsYmFjaykge1xuICAgICAgICBpZiAodGhpcy5yb3V0ZXIpIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdGhpcy5yZWFkeUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4vLyBDcmVhdGUgcHVibGljIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb2YgdGhlIHJvdXRlciBpbiB0aGUgc2luZ2xldG9uUm91dGVyXG5jb25zdCB1cmxQcm9wZXJ0eUZpZWxkcyA9IFtcbiAgICBcInBhdGhuYW1lXCIsXG4gICAgXCJyb3V0ZVwiLFxuICAgIFwicXVlcnlcIixcbiAgICBcImFzUGF0aFwiLFxuICAgIFwiY29tcG9uZW50c1wiLFxuICAgIFwiaXNGYWxsYmFja1wiLFxuICAgIFwiYmFzZVBhdGhcIixcbiAgICBcImxvY2FsZVwiLFxuICAgIFwibG9jYWxlc1wiLFxuICAgIFwiZGVmYXVsdExvY2FsZVwiLFxuICAgIFwiaXNSZWFkeVwiLFxuICAgIFwiaXNQcmV2aWV3XCIsXG4gICAgXCJpc0xvY2FsZURvbWFpblwiLFxuICAgIFwiZG9tYWluTG9jYWxlc1wiXG5dO1xuY29uc3Qgcm91dGVyRXZlbnRzID0gW1xuICAgIFwicm91dGVDaGFuZ2VTdGFydFwiLFxuICAgIFwiYmVmb3JlSGlzdG9yeUNoYW5nZVwiLFxuICAgIFwicm91dGVDaGFuZ2VDb21wbGV0ZVwiLFxuICAgIFwicm91dGVDaGFuZ2VFcnJvclwiLFxuICAgIFwiaGFzaENoYW5nZVN0YXJ0XCIsXG4gICAgXCJoYXNoQ2hhbmdlQ29tcGxldGVcIlxuXTtcbmNvbnN0IGNvcmVNZXRob2RGaWVsZHMgPSBbXG4gICAgXCJwdXNoXCIsXG4gICAgXCJyZXBsYWNlXCIsXG4gICAgXCJyZWxvYWRcIixcbiAgICBcImJhY2tcIixcbiAgICBcInByZWZldGNoXCIsXG4gICAgXCJiZWZvcmVQb3BTdGF0ZVwiXG5dO1xuLy8gRXZlbnRzIGlzIGEgc3RhdGljIHByb3BlcnR5IG9uIHRoZSByb3V0ZXIsIHRoZSByb3V0ZXIgZG9lc24ndCBoYXZlIHRvIGJlIGluaXRpYWxpemVkIHRvIHVzZSBpdFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHNpbmdsZXRvblJvdXRlciwgXCJldmVudHNcIiwge1xuICAgIGdldCAoKSB7XG4gICAgICAgIHJldHVybiBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gZ2V0Um91dGVyKCkge1xuICAgIGlmICghc2luZ2xldG9uUm91dGVyLnJvdXRlcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gXCJObyByb3V0ZXIgaW5zdGFuY2UgZm91bmQuXFxuXCIgKyAnWW91IHNob3VsZCBvbmx5IHVzZSBcIm5leHQvcm91dGVyXCIgb24gdGhlIGNsaWVudCBzaWRlIG9mIHlvdXIgYXBwLlxcbic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZXRvblJvdXRlci5yb3V0ZXI7XG59XG51cmxQcm9wZXJ0eUZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICAvLyBIZXJlIHdlIG5lZWQgdG8gdXNlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBiZWNhdXNlIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgLy8gdGhlIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBhY3R1YWwgcm91dGVyXG4gICAgLy8gVGhlIHZhbHVlIG1pZ2h0IGdldCBjaGFuZ2VkIGFzIHdlIGNoYW5nZSByb3V0ZXMgYW5kIHRoaXMgaXMgdGhlXG4gICAgLy8gcHJvcGVyIHdheSB0byBhY2Nlc3MgaXRcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2luZ2xldG9uUm91dGVyLCBmaWVsZCwge1xuICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gZ2V0Um91dGVyKCk7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVyW2ZpZWxkXTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5jb3JlTWV0aG9kRmllbGRzLmZvckVhY2goKGZpZWxkKT0+e1xuICAgIHNpbmdsZXRvblJvdXRlcltmaWVsZF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3V0ZXIgPSBnZXRSb3V0ZXIoKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlcltmaWVsZF0oLi4uYXJncyk7XG4gICAgfTtcbn0pO1xucm91dGVyRXZlbnRzLmZvckVhY2goKGV2ZW50KT0+e1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeSgoKT0+e1xuICAgICAgICBfcm91dGVyLmRlZmF1bHQuZXZlbnRzLm9uKGV2ZW50LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXZlbnRGaWVsZCA9IFwib25cIiArIGV2ZW50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZXZlbnQuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgY29uc3QgX3NpbmdsZXRvblJvdXRlciA9IHNpbmdsZXRvblJvdXRlcjtcbiAgICAgICAgICAgIGlmIChfc2luZ2xldG9uUm91dGVyW2V2ZW50RmllbGRdKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgX3NpbmdsZXRvblJvdXRlcltldmVudEZpZWxkXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoZW4gcnVubmluZyB0aGUgUm91dGVyIGV2ZW50OiBcIiArIGV2ZW50RmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCgwLCBfaXNlcnJvci5kZWZhdWx0KShlcnIpID8gZXJyLm1lc3NhZ2UgKyBcIlxcblwiICsgZXJyLnN0YWNrIDogZXJyICsgXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuY29uc3QgX2RlZmF1bHQgPSBzaW5nbGV0b25Sb3V0ZXI7XG5mdW5jdGlvbiB1c2VSb3V0ZXIoKSB7XG4gICAgY29uc3Qgcm91dGVyID0gX3JlYWN0LmRlZmF1bHQudXNlQ29udGV4dChfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUuUm91dGVyQ29udGV4dCk7XG4gICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTmV4dFJvdXRlciB3YXMgbm90IG1vdW50ZWQuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcm91dGVyLW5vdC1tb3VudGVkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGVyO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVyKCkge1xuICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgc2luZ2xldG9uUm91dGVyLnJvdXRlciA9IG5ldyBfcm91dGVyLmRlZmF1bHQoLi4uYXJncyk7XG4gICAgc2luZ2xldG9uUm91dGVyLnJlYWR5Q2FsbGJhY2tzLmZvckVhY2goKGNiKT0+Y2IoKSk7XG4gICAgc2luZ2xldG9uUm91dGVyLnJlYWR5Q2FsbGJhY2tzID0gW107XG4gICAgcmV0dXJuIHNpbmdsZXRvblJvdXRlci5yb3V0ZXI7XG59XG5mdW5jdGlvbiBtYWtlUHVibGljUm91dGVySW5zdGFuY2Uocm91dGVyKSB7XG4gICAgY29uc3Qgc2NvcGVkUm91dGVyID0gcm91dGVyO1xuICAgIGNvbnN0IGluc3RhbmNlID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB1cmxQcm9wZXJ0eUZpZWxkcyl7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NvcGVkUm91dGVyW3Byb3BlcnR5XSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldID0gT2JqZWN0LmFzc2lnbihBcnJheS5pc0FycmF5KHNjb3BlZFJvdXRlcltwcm9wZXJ0eV0pID8gW10gOiB7fSwgc2NvcGVkUm91dGVyW3Byb3BlcnR5XSkgLy8gbWFrZXMgc3VyZSBxdWVyeSBpcyBub3Qgc3RhdGVmdWxcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IHNjb3BlZFJvdXRlcltwcm9wZXJ0eV07XG4gICAgfVxuICAgIC8vIEV2ZW50cyBpcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiB0aGUgcm91dGVyLCB0aGUgcm91dGVyIGRvZXNuJ3QgaGF2ZSB0byBiZSBpbml0aWFsaXplZCB0byB1c2UgaXRcbiAgICBpbnN0YW5jZS5ldmVudHMgPSBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIGNvcmVNZXRob2RGaWVsZHMuZm9yRWFjaCgoZmllbGQpPT57XG4gICAgICAgIGluc3RhbmNlW2ZpZWxkXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2NvcGVkUm91dGVyW2ZpZWxkXSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJSb3V0ZXIiLCJkZWZhdWx0Iiwid2l0aFJvdXRlciIsInVzZVJvdXRlciIsImNyZWF0ZVJvdXRlciIsIm1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZSIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsIl9yb3V0ZXIiLCJfZGVmYXVsdCIsIl93aXRocm91dGVyIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl8iLCJfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUiLCJfaXNlcnJvciIsInNpbmdsZXRvblJvdXRlciIsInJvdXRlciIsInJlYWR5Q2FsbGJhY2tzIiwicmVhZHkiLCJjYWxsYmFjayIsInB1c2giLCJ1cmxQcm9wZXJ0eUZpZWxkcyIsInJvdXRlckV2ZW50cyIsImNvcmVNZXRob2RGaWVsZHMiLCJldmVudHMiLCJnZXRSb3V0ZXIiLCJtZXNzYWdlIiwiRXJyb3IiLCJmb3JFYWNoIiwiZmllbGQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImV2ZW50Iiwib24iLCJldmVudEZpZWxkIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHJpbmciLCJfc2luZ2xldG9uUm91dGVyIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RhY2siLCJ1c2VDb250ZXh0IiwiUm91dGVyQ29udGV4dCIsImNiIiwic2NvcGVkUm91dGVyIiwiaW5zdGFuY2UiLCJwcm9wZXJ0eSIsImFzc2lnbiIsImlzQXJyYXkiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/router.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/script.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/client/script.js ***! \*************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleClientScriptLoad: function() {\n return handleClientScriptLoad;\n },\n initScriptLoader: function() {\n return initScriptLoader;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js\");\nconst _headmanager = __webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"onReady\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\",\n \"stylesheets\"\n];\nconst insertStylesheets = (stylesheets)=>{\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (_reactdom.default.preinit) {\n stylesheets.forEach((stylesheet)=>{\n _reactdom.default.preinit(stylesheet, {\n as: \"style\"\n });\n });\n return;\n }\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (true) {\n let head = document.head;\n stylesheets.forEach((stylesheet)=>{\n let link = document.createElement(\"link\");\n link.type = \"text/css\";\n link.rel = \"stylesheet\";\n link.href = stylesheet;\n head.appendChild(link);\n });\n }\n};\nconst loadScript = (props)=>{\n const { src, id, onLoad = ()=>{}, onReady = null, dangerouslySetInnerHTML, children = \"\", strategy = \"afterInteractive\", onError, stylesheets } = 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 // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n /** Execute after the script first loaded */ const afterLoad = ()=>{\n // Run onReady for the first time after load event\n if (onReady) {\n onReady();\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey);\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 afterLoad();\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 (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n afterLoad();\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n afterLoad();\n } else if (src) {\n el.src = src;\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n ScriptCache.set(src, loadPromise);\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 // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets);\n }\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 { id, src = \"\", onLoad = ()=>{}, onReady = null, strategy = \"afterInteractive\", onError, stylesheets, ...restProps } = props;\n // Context is available only during SSR\n const { updateScripts, scripts, getIsSsr, appDir, nonce } = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */ const hasOnReadyEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n const cacheKey = id || src;\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady();\n }\n hasOnReadyEffectCalled.current = true;\n }\n }, [\n onReady,\n id,\n src\n ]);\n const hasLoadScriptEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n hasLoadScriptEffectCalled.current = true;\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps\n }\n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc)=>{\n _reactdom.default.preinit(styleSrc, {\n as: \"style\"\n });\n });\n }\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native